From 029f72b1a93430b24b88eb3a72c6114d9f149737 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:09:20 +0200 Subject: Adding upstream version 2:9.1.0016. Signed-off-by: Daniel Baumann --- runtime/doc/Make_all.mak | 338 + runtime/doc/Make_mvc.mak | 490 + runtime/doc/Makefile | 232 + runtime/doc/arabic.txt | 328 + runtime/doc/autocmd.txt | 1924 ++ runtime/doc/builtin.txt | 11226 ++++++++++ runtime/doc/change.txt | 1983 ++ runtime/doc/channel.txt | 1562 ++ runtime/doc/cmdline.txt | 1324 ++ runtime/doc/debug.txt | 170 + runtime/doc/debugger.txt | 134 + runtime/doc/develop.txt | 597 + runtime/doc/diff.txt | 479 + runtime/doc/digraph.txt | 1499 ++ runtime/doc/doctags.c | 94 + runtime/doc/doctags.vim | 13 + runtime/doc/editing.txt | 1849 ++ runtime/doc/eval.txt | 4841 +++++ runtime/doc/evim-fr.1 | 57 + runtime/doc/evim-fr.UTF-8.1 | 57 + runtime/doc/evim-it.1 | 49 + runtime/doc/evim-it.UTF-8.1 | 49 + runtime/doc/evim-ja.UTF-8.1 | 48 + runtime/doc/evim-pl.1 | 53 + runtime/doc/evim-pl.UTF-8.1 | 53 + runtime/doc/evim-ru.1 | 59 + runtime/doc/evim-ru.UTF-8.1 | 59 + runtime/doc/evim-tr.1 | 48 + runtime/doc/evim-tr.UTF-8.1 | 48 + runtime/doc/evim.1 | 49 + runtime/doc/evim.man | 52 + runtime/doc/farsi.txt | 19 + runtime/doc/filetype.txt | 844 + runtime/doc/fold.txt | 629 + runtime/doc/ft_ada.txt | 515 + runtime/doc/ft_context.txt | 158 + runtime/doc/ft_mp.txt | 151 + runtime/doc/ft_ps1.txt | 64 + runtime/doc/ft_raku.txt | 126 + runtime/doc/ft_rust.txt | 486 + runtime/doc/ft_sql.txt | 780 + runtime/doc/gui.txt | 1256 ++ runtime/doc/gui_w32.txt | 457 + runtime/doc/gui_x11.txt | 731 + runtime/doc/hangulin.txt | 17 + runtime/doc/hebrew.txt | 139 + runtime/doc/help.txt | 253 + runtime/doc/help.txt.info | Bin 0 -> 582 bytes runtime/doc/helphelp.txt | 418 + runtime/doc/howto.txt | 96 + runtime/doc/if_cscop.txt | 486 + runtime/doc/if_lua.txt | 550 + runtime/doc/if_mzsch.txt | 318 + runtime/doc/if_ole.txt | 199 + runtime/doc/if_perl.txt | 307 + runtime/doc/if_pyth.txt | 1002 + runtime/doc/if_ruby.txt | 254 + runtime/doc/if_sniff.txt | 11 + runtime/doc/if_tcl.txt | 546 + runtime/doc/indent.txt | 1259 ++ runtime/doc/index.txt | 1785 ++ runtime/doc/insert.txt | 2142 ++ runtime/doc/intro.txt | 913 + runtime/doc/makehtml.awk | 787 + runtime/doc/maketags.awk | 42 + runtime/doc/map.txt | 1934 ++ runtime/doc/mbyte.txt | 1452 ++ runtime/doc/message.txt | 889 + runtime/doc/mlang.txt | 222 + runtime/doc/motion.txt | 1407 ++ runtime/doc/netbeans.txt | 1027 + runtime/doc/options.txt | 9638 +++++++++ runtime/doc/os_390.txt | 134 + runtime/doc/os_amiga.txt | 147 + runtime/doc/os_beos.txt | 13 + runtime/doc/os_dos.txt | 383 + runtime/doc/os_haiku.txt | 235 + runtime/doc/os_mac.txt | 182 + runtime/doc/os_mint.txt | 15 + runtime/doc/os_msdos.txt | 15 + runtime/doc/os_os2.txt | 13 + runtime/doc/os_qnx.txt | 138 + runtime/doc/os_risc.txt | 12 + runtime/doc/os_unix.txt | 61 + runtime/doc/os_vms.txt | 987 + runtime/doc/os_win32.txt | 341 + runtime/doc/pattern.txt | 1504 ++ runtime/doc/pi_getscript.txt | 482 + runtime/doc/pi_gzip.txt | 49 + runtime/doc/pi_logipat.txt | 122 + runtime/doc/pi_netrw.txt | 4419 ++++ runtime/doc/pi_paren.txt | 60 + runtime/doc/pi_spec.txt | 111 + runtime/doc/pi_tar.txt | 170 + runtime/doc/pi_vimball.txt | 276 + runtime/doc/pi_zip.txt | 168 + runtime/doc/popup.txt | 1104 + runtime/doc/print.txt | 758 + runtime/doc/quickfix.txt | 2062 ++ runtime/doc/quickref.txt | 1476 ++ runtime/doc/quotes.txt | 275 + runtime/doc/recover.txt | 238 + runtime/doc/remote.txt | 209 + runtime/doc/repeat.txt | 1178 ++ runtime/doc/rileft.txt | 124 + runtime/doc/russian.txt | 73 + runtime/doc/scroll.txt | 339 + runtime/doc/sign.txt | 776 + runtime/doc/spell.txt | 1681 ++ runtime/doc/sponsor.txt | 202 + runtime/doc/starting.txt | 1709 ++ runtime/doc/syntax.txt | 6006 ++++++ runtime/doc/tabpage.txt | 483 + runtime/doc/tags | 11437 +++++++++++ runtime/doc/tagsrch.txt | 960 + runtime/doc/term.txt | 1196 ++ runtime/doc/terminal.txt | 1631 ++ runtime/doc/test_urls.vim | 89 + runtime/doc/testing.txt | 633 + runtime/doc/textprop.txt | 515 + runtime/doc/tips.txt | 571 + runtime/doc/todo.txt | 6345 ++++++ runtime/doc/uganda.txt | 259 + runtime/doc/undo.txt | 429 + runtime/doc/userfunc.txt | 554 + runtime/doc/usr_01.txt | 192 + runtime/doc/usr_02.txt | 702 + runtime/doc/usr_03.txt | 663 + runtime/doc/usr_04.txt | 516 + runtime/doc/usr_05.txt | 800 + runtime/doc/usr_06.txt | 302 + runtime/doc/usr_07.txt | 479 + runtime/doc/usr_08.txt | 601 + runtime/doc/usr_09.txt | 290 + runtime/doc/usr_10.txt | 825 + runtime/doc/usr_11.txt | 318 + runtime/doc/usr_12.txt | 358 + runtime/doc/usr_20.txt | 384 + runtime/doc/usr_21.txt | 502 + runtime/doc/usr_22.txt | 414 + runtime/doc/usr_23.txt | 345 + runtime/doc/usr_24.txt | 606 + runtime/doc/usr_25.txt | 583 + runtime/doc/usr_26.txt | 221 + runtime/doc/usr_27.txt | 563 + runtime/doc/usr_28.txt | 426 + runtime/doc/usr_29.txt | 614 + runtime/doc/usr_30.txt | 643 + runtime/doc/usr_31.txt | 272 + runtime/doc/usr_32.txt | 180 + runtime/doc/usr_40.txt | 668 + runtime/doc/usr_41.txt | 1910 ++ runtime/doc/usr_42.txt | 366 + runtime/doc/usr_43.txt | 179 + runtime/doc/usr_44.txt | 708 + runtime/doc/usr_45.txt | 413 + runtime/doc/usr_50.txt | 131 + runtime/doc/usr_51.txt | 694 + runtime/doc/usr_52.txt | 343 + runtime/doc/usr_90.txt | 478 + runtime/doc/usr_toc.txt | 378 + runtime/doc/various.txt | 801 + runtime/doc/version4.txt | 355 + runtime/doc/version5.txt | 7813 +++++++ runtime/doc/version6.txt | 14530 +++++++++++++ runtime/doc/version7.txt | 18312 +++++++++++++++++ runtime/doc/version8.txt | 41150 +++++++++++++++++++++++++++++++++++++ runtime/doc/version9.txt | 41538 ++++++++++++++++++++++++++++++++++++++ runtime/doc/vi_diff.txt | 1365 ++ runtime/doc/vim-da.1 | 555 + runtime/doc/vim-da.UTF-8.1 | 555 + runtime/doc/vim-de.1 | 478 + runtime/doc/vim-de.UTF-8.1 | 478 + runtime/doc/vim-fr.1 | 589 + runtime/doc/vim-fr.UTF-8.1 | 589 + runtime/doc/vim-it.1 | 558 + runtime/doc/vim-it.UTF-8.1 | 558 + runtime/doc/vim-ja.UTF-8.1 | 492 + runtime/doc/vim-pl.1 | 558 + runtime/doc/vim-pl.UTF-8.1 | 558 + runtime/doc/vim-ru.1 | 489 + runtime/doc/vim-ru.UTF-8.1 | 489 + runtime/doc/vim-tr.1 | 544 + runtime/doc/vim-tr.UTF-8.1 | 544 + runtime/doc/vim.1 | 558 + runtime/doc/vim.man | 435 + runtime/doc/vim.man.info | Bin 0 -> 582 bytes runtime/doc/vim2html.pl | 238 + runtime/doc/vim9.txt | 2427 +++ runtime/doc/vim9class.txt | 1170 ++ runtime/doc/vimdiff-da.1 | 50 + runtime/doc/vimdiff-da.UTF-8.1 | 50 + runtime/doc/vimdiff-fr.1 | 54 + runtime/doc/vimdiff-fr.UTF-8.1 | 54 + runtime/doc/vimdiff-it.1 | 46 + runtime/doc/vimdiff-it.UTF-8.1 | 46 + runtime/doc/vimdiff-ja.UTF-8.1 | 39 + runtime/doc/vimdiff-pl.1 | 46 + runtime/doc/vimdiff-pl.UTF-8.1 | 46 + runtime/doc/vimdiff-ru.1 | 50 + runtime/doc/vimdiff-ru.UTF-8.1 | 50 + runtime/doc/vimdiff-tr.1 | 45 + runtime/doc/vimdiff-tr.UTF-8.1 | 45 + runtime/doc/vimdiff.1 | 46 + runtime/doc/vimdiff.man | 47 + runtime/doc/vimtutor-da.1 | 53 + runtime/doc/vimtutor-da.UTF-8.1 | 53 + runtime/doc/vimtutor-fr.1 | 60 + runtime/doc/vimtutor-fr.UTF-8.1 | 60 + runtime/doc/vimtutor-it.1 | 57 + runtime/doc/vimtutor-it.UTF-8.1 | 57 + runtime/doc/vimtutor-ja.UTF-8.1 | 44 + runtime/doc/vimtutor-pl.1 | 51 + runtime/doc/vimtutor-pl.UTF-8.1 | 51 + runtime/doc/vimtutor-ru.1 | 51 + runtime/doc/vimtutor-ru.UTF-8.1 | 51 + runtime/doc/vimtutor-tr.1 | 50 + runtime/doc/vimtutor-tr.UTF-8.1 | 50 + runtime/doc/vimtutor.1 | 57 + runtime/doc/vimtutor.man | 50 + runtime/doc/visual.txt | 561 + runtime/doc/windows.txt | 1440 ++ runtime/doc/workshop.txt | 14 + runtime/doc/xxd-fr.1 | 396 + runtime/doc/xxd-fr.UTF-8.1 | 396 + runtime/doc/xxd-it.1 | 407 + runtime/doc/xxd-it.UTF-8.1 | 407 + runtime/doc/xxd-ja.UTF-8.1 | 395 + runtime/doc/xxd-pl.1 | 389 + runtime/doc/xxd-pl.UTF-8.1 | 389 + runtime/doc/xxd-ru.1 | 408 + runtime/doc/xxd-ru.UTF-8.1 | 408 + runtime/doc/xxd.1 | 407 + runtime/doc/xxd.man | 283 + 234 files changed, 282024 insertions(+) create mode 100644 runtime/doc/Make_all.mak create mode 100644 runtime/doc/Make_mvc.mak create mode 100644 runtime/doc/Makefile create mode 100644 runtime/doc/arabic.txt create mode 100644 runtime/doc/autocmd.txt create mode 100644 runtime/doc/builtin.txt create mode 100644 runtime/doc/change.txt create mode 100644 runtime/doc/channel.txt create mode 100644 runtime/doc/cmdline.txt create mode 100644 runtime/doc/debug.txt create mode 100644 runtime/doc/debugger.txt create mode 100644 runtime/doc/develop.txt create mode 100644 runtime/doc/diff.txt create mode 100644 runtime/doc/digraph.txt create mode 100644 runtime/doc/doctags.c create mode 100644 runtime/doc/doctags.vim create mode 100644 runtime/doc/editing.txt create mode 100644 runtime/doc/eval.txt create mode 100644 runtime/doc/evim-fr.1 create mode 100644 runtime/doc/evim-fr.UTF-8.1 create mode 100644 runtime/doc/evim-it.1 create mode 100644 runtime/doc/evim-it.UTF-8.1 create mode 100644 runtime/doc/evim-ja.UTF-8.1 create mode 100644 runtime/doc/evim-pl.1 create mode 100644 runtime/doc/evim-pl.UTF-8.1 create mode 100644 runtime/doc/evim-ru.1 create mode 100644 runtime/doc/evim-ru.UTF-8.1 create mode 100644 runtime/doc/evim-tr.1 create mode 100644 runtime/doc/evim-tr.UTF-8.1 create mode 100644 runtime/doc/evim.1 create mode 100644 runtime/doc/evim.man create mode 100644 runtime/doc/farsi.txt create mode 100644 runtime/doc/filetype.txt create mode 100644 runtime/doc/fold.txt create mode 100644 runtime/doc/ft_ada.txt create mode 100644 runtime/doc/ft_context.txt create mode 100644 runtime/doc/ft_mp.txt create mode 100644 runtime/doc/ft_ps1.txt create mode 100644 runtime/doc/ft_raku.txt create mode 100644 runtime/doc/ft_rust.txt create mode 100644 runtime/doc/ft_sql.txt create mode 100644 runtime/doc/gui.txt create mode 100644 runtime/doc/gui_w32.txt create mode 100644 runtime/doc/gui_x11.txt create mode 100644 runtime/doc/hangulin.txt create mode 100644 runtime/doc/hebrew.txt create mode 100644 runtime/doc/help.txt create mode 100755 runtime/doc/help.txt.info create mode 100644 runtime/doc/helphelp.txt create mode 100644 runtime/doc/howto.txt create mode 100644 runtime/doc/if_cscop.txt create mode 100644 runtime/doc/if_lua.txt create mode 100644 runtime/doc/if_mzsch.txt create mode 100644 runtime/doc/if_ole.txt create mode 100644 runtime/doc/if_perl.txt create mode 100644 runtime/doc/if_pyth.txt create mode 100644 runtime/doc/if_ruby.txt create mode 100644 runtime/doc/if_sniff.txt create mode 100644 runtime/doc/if_tcl.txt create mode 100644 runtime/doc/indent.txt create mode 100644 runtime/doc/index.txt create mode 100644 runtime/doc/insert.txt create mode 100644 runtime/doc/intro.txt create mode 100644 runtime/doc/makehtml.awk create mode 100644 runtime/doc/maketags.awk create mode 100644 runtime/doc/map.txt create mode 100644 runtime/doc/mbyte.txt create mode 100644 runtime/doc/message.txt create mode 100644 runtime/doc/mlang.txt create mode 100644 runtime/doc/motion.txt create mode 100644 runtime/doc/netbeans.txt create mode 100644 runtime/doc/options.txt create mode 100644 runtime/doc/os_390.txt create mode 100644 runtime/doc/os_amiga.txt create mode 100644 runtime/doc/os_beos.txt create mode 100644 runtime/doc/os_dos.txt create mode 100644 runtime/doc/os_haiku.txt create mode 100644 runtime/doc/os_mac.txt create mode 100644 runtime/doc/os_mint.txt create mode 100644 runtime/doc/os_msdos.txt create mode 100644 runtime/doc/os_os2.txt create mode 100644 runtime/doc/os_qnx.txt create mode 100644 runtime/doc/os_risc.txt create mode 100644 runtime/doc/os_unix.txt create mode 100644 runtime/doc/os_vms.txt create mode 100644 runtime/doc/os_win32.txt create mode 100644 runtime/doc/pattern.txt create mode 100644 runtime/doc/pi_getscript.txt create mode 100644 runtime/doc/pi_gzip.txt create mode 100644 runtime/doc/pi_logipat.txt create mode 100644 runtime/doc/pi_netrw.txt create mode 100644 runtime/doc/pi_paren.txt create mode 100644 runtime/doc/pi_spec.txt create mode 100644 runtime/doc/pi_tar.txt create mode 100644 runtime/doc/pi_vimball.txt create mode 100644 runtime/doc/pi_zip.txt create mode 100644 runtime/doc/popup.txt create mode 100644 runtime/doc/print.txt create mode 100644 runtime/doc/quickfix.txt create mode 100644 runtime/doc/quickref.txt create mode 100644 runtime/doc/quotes.txt create mode 100644 runtime/doc/recover.txt create mode 100644 runtime/doc/remote.txt create mode 100644 runtime/doc/repeat.txt create mode 100644 runtime/doc/rileft.txt create mode 100644 runtime/doc/russian.txt create mode 100644 runtime/doc/scroll.txt create mode 100644 runtime/doc/sign.txt create mode 100644 runtime/doc/spell.txt create mode 100644 runtime/doc/sponsor.txt create mode 100644 runtime/doc/starting.txt create mode 100644 runtime/doc/syntax.txt create mode 100644 runtime/doc/tabpage.txt create mode 100644 runtime/doc/tags create mode 100644 runtime/doc/tagsrch.txt create mode 100644 runtime/doc/term.txt create mode 100644 runtime/doc/terminal.txt create mode 100644 runtime/doc/test_urls.vim create mode 100644 runtime/doc/testing.txt create mode 100644 runtime/doc/textprop.txt create mode 100644 runtime/doc/tips.txt create mode 100644 runtime/doc/todo.txt create mode 100644 runtime/doc/uganda.txt create mode 100644 runtime/doc/undo.txt create mode 100644 runtime/doc/userfunc.txt create mode 100644 runtime/doc/usr_01.txt create mode 100644 runtime/doc/usr_02.txt create mode 100644 runtime/doc/usr_03.txt create mode 100644 runtime/doc/usr_04.txt create mode 100644 runtime/doc/usr_05.txt create mode 100644 runtime/doc/usr_06.txt create mode 100644 runtime/doc/usr_07.txt create mode 100644 runtime/doc/usr_08.txt create mode 100644 runtime/doc/usr_09.txt create mode 100644 runtime/doc/usr_10.txt create mode 100644 runtime/doc/usr_11.txt create mode 100644 runtime/doc/usr_12.txt create mode 100644 runtime/doc/usr_20.txt create mode 100644 runtime/doc/usr_21.txt create mode 100644 runtime/doc/usr_22.txt create mode 100644 runtime/doc/usr_23.txt create mode 100644 runtime/doc/usr_24.txt create mode 100644 runtime/doc/usr_25.txt create mode 100644 runtime/doc/usr_26.txt create mode 100644 runtime/doc/usr_27.txt create mode 100644 runtime/doc/usr_28.txt create mode 100644 runtime/doc/usr_29.txt create mode 100644 runtime/doc/usr_30.txt create mode 100644 runtime/doc/usr_31.txt create mode 100644 runtime/doc/usr_32.txt create mode 100644 runtime/doc/usr_40.txt create mode 100644 runtime/doc/usr_41.txt create mode 100644 runtime/doc/usr_42.txt create mode 100644 runtime/doc/usr_43.txt create mode 100644 runtime/doc/usr_44.txt create mode 100644 runtime/doc/usr_45.txt create mode 100644 runtime/doc/usr_50.txt create mode 100644 runtime/doc/usr_51.txt create mode 100644 runtime/doc/usr_52.txt create mode 100644 runtime/doc/usr_90.txt create mode 100644 runtime/doc/usr_toc.txt create mode 100644 runtime/doc/various.txt create mode 100644 runtime/doc/version4.txt create mode 100644 runtime/doc/version5.txt create mode 100644 runtime/doc/version6.txt create mode 100644 runtime/doc/version7.txt create mode 100644 runtime/doc/version8.txt create mode 100644 runtime/doc/version9.txt create mode 100644 runtime/doc/vi_diff.txt create mode 100644 runtime/doc/vim-da.1 create mode 100644 runtime/doc/vim-da.UTF-8.1 create mode 100644 runtime/doc/vim-de.1 create mode 100644 runtime/doc/vim-de.UTF-8.1 create mode 100644 runtime/doc/vim-fr.1 create mode 100644 runtime/doc/vim-fr.UTF-8.1 create mode 100644 runtime/doc/vim-it.1 create mode 100644 runtime/doc/vim-it.UTF-8.1 create mode 100644 runtime/doc/vim-ja.UTF-8.1 create mode 100644 runtime/doc/vim-pl.1 create mode 100644 runtime/doc/vim-pl.UTF-8.1 create mode 100644 runtime/doc/vim-ru.1 create mode 100644 runtime/doc/vim-ru.UTF-8.1 create mode 100644 runtime/doc/vim-tr.1 create mode 100644 runtime/doc/vim-tr.UTF-8.1 create mode 100644 runtime/doc/vim.1 create mode 100644 runtime/doc/vim.man create mode 100755 runtime/doc/vim.man.info create mode 100644 runtime/doc/vim2html.pl create mode 100644 runtime/doc/vim9.txt create mode 100644 runtime/doc/vim9class.txt create mode 100644 runtime/doc/vimdiff-da.1 create mode 100644 runtime/doc/vimdiff-da.UTF-8.1 create mode 100644 runtime/doc/vimdiff-fr.1 create mode 100644 runtime/doc/vimdiff-fr.UTF-8.1 create mode 100644 runtime/doc/vimdiff-it.1 create mode 100644 runtime/doc/vimdiff-it.UTF-8.1 create mode 100644 runtime/doc/vimdiff-ja.UTF-8.1 create mode 100644 runtime/doc/vimdiff-pl.1 create mode 100644 runtime/doc/vimdiff-pl.UTF-8.1 create mode 100644 runtime/doc/vimdiff-ru.1 create mode 100644 runtime/doc/vimdiff-ru.UTF-8.1 create mode 100644 runtime/doc/vimdiff-tr.1 create mode 100644 runtime/doc/vimdiff-tr.UTF-8.1 create mode 100644 runtime/doc/vimdiff.1 create mode 100644 runtime/doc/vimdiff.man create mode 100644 runtime/doc/vimtutor-da.1 create mode 100644 runtime/doc/vimtutor-da.UTF-8.1 create mode 100644 runtime/doc/vimtutor-fr.1 create mode 100644 runtime/doc/vimtutor-fr.UTF-8.1 create mode 100644 runtime/doc/vimtutor-it.1 create mode 100644 runtime/doc/vimtutor-it.UTF-8.1 create mode 100644 runtime/doc/vimtutor-ja.UTF-8.1 create mode 100644 runtime/doc/vimtutor-pl.1 create mode 100644 runtime/doc/vimtutor-pl.UTF-8.1 create mode 100644 runtime/doc/vimtutor-ru.1 create mode 100644 runtime/doc/vimtutor-ru.UTF-8.1 create mode 100644 runtime/doc/vimtutor-tr.1 create mode 100644 runtime/doc/vimtutor-tr.UTF-8.1 create mode 100644 runtime/doc/vimtutor.1 create mode 100644 runtime/doc/vimtutor.man create mode 100644 runtime/doc/visual.txt create mode 100644 runtime/doc/windows.txt create mode 100644 runtime/doc/workshop.txt create mode 100644 runtime/doc/xxd-fr.1 create mode 100644 runtime/doc/xxd-fr.UTF-8.1 create mode 100644 runtime/doc/xxd-it.1 create mode 100644 runtime/doc/xxd-it.UTF-8.1 create mode 100644 runtime/doc/xxd-ja.UTF-8.1 create mode 100644 runtime/doc/xxd-pl.1 create mode 100644 runtime/doc/xxd-pl.UTF-8.1 create mode 100644 runtime/doc/xxd-ru.1 create mode 100644 runtime/doc/xxd-ru.UTF-8.1 create mode 100644 runtime/doc/xxd.1 create mode 100644 runtime/doc/xxd.man (limited to 'runtime/doc') diff --git a/runtime/doc/Make_all.mak b/runtime/doc/Make_all.mak new file mode 100644 index 0000000..ed41d7d --- /dev/null +++ b/runtime/doc/Make_all.mak @@ -0,0 +1,338 @@ +# Makefile with common components + +DOCS = \ + arabic.txt \ + autocmd.txt \ + builtin.txt \ + change.txt \ + channel.txt \ + cmdline.txt \ + debug.txt \ + debugger.txt \ + develop.txt \ + diff.txt \ + digraph.txt \ + editing.txt \ + eval.txt \ + farsi.txt \ + filetype.txt \ + fold.txt \ + ft_ada.txt \ + ft_context.txt \ + ft_mp.txt \ + ft_ps1.txt \ + ft_raku.txt \ + ft_rust.txt \ + ft_sql.txt \ + gui.txt \ + gui_w32.txt \ + gui_x11.txt \ + hangulin.txt \ + hebrew.txt \ + help.txt \ + helphelp.txt \ + howto.txt \ + if_cscop.txt \ + if_lua.txt \ + if_mzsch.txt \ + if_ole.txt \ + if_perl.txt \ + if_pyth.txt \ + if_ruby.txt \ + if_sniff.txt \ + if_tcl.txt \ + indent.txt \ + index.txt \ + insert.txt \ + intro.txt \ + map.txt \ + mbyte.txt \ + message.txt \ + mlang.txt \ + motion.txt \ + netbeans.txt \ + options.txt \ + os_390.txt \ + os_amiga.txt \ + os_beos.txt \ + os_dos.txt \ + os_haiku.txt \ + os_mac.txt \ + os_mint.txt \ + os_msdos.txt \ + os_os2.txt \ + os_qnx.txt \ + os_risc.txt \ + os_unix.txt \ + os_vms.txt \ + os_win32.txt \ + pattern.txt \ + pi_getscript.txt \ + pi_gzip.txt \ + pi_logipat.txt \ + pi_netrw.txt \ + pi_paren.txt \ + pi_spec.txt \ + pi_tar.txt \ + pi_vimball.txt \ + pi_zip.txt \ + popup.txt \ + print.txt \ + quickfix.txt \ + quickref.txt \ + quotes.txt \ + recover.txt \ + remote.txt \ + repeat.txt \ + rileft.txt \ + russian.txt \ + scroll.txt \ + sign.txt \ + spell.txt \ + sponsor.txt \ + starting.txt \ + syntax.txt \ + tabpage.txt \ + tagsrch.txt \ + term.txt \ + terminal.txt \ + testing.txt \ + textprop.txt \ + tips.txt \ + todo.txt \ + uganda.txt \ + undo.txt \ + userfunc.txt \ + usr_01.txt \ + usr_02.txt \ + usr_03.txt \ + usr_04.txt \ + usr_05.txt \ + usr_06.txt \ + usr_07.txt \ + usr_08.txt \ + usr_09.txt \ + usr_10.txt \ + usr_11.txt \ + usr_12.txt \ + usr_20.txt \ + usr_21.txt \ + usr_22.txt \ + usr_23.txt \ + usr_24.txt \ + usr_25.txt \ + usr_26.txt \ + usr_27.txt \ + usr_28.txt \ + usr_29.txt \ + usr_30.txt \ + usr_31.txt \ + usr_32.txt \ + usr_40.txt \ + usr_41.txt \ + usr_42.txt \ + usr_43.txt \ + usr_44.txt \ + usr_45.txt \ + usr_50.txt \ + usr_51.txt \ + usr_52.txt \ + usr_90.txt \ + usr_toc.txt \ + various.txt \ + version4.txt \ + version5.txt \ + version6.txt \ + version7.txt \ + version8.txt \ + version9.txt \ + vi_diff.txt \ + vim9.txt \ + vim9class.txt \ + visual.txt \ + windows.txt \ + workshop.txt + +HTMLS = \ + arabic.html \ + autocmd.html \ + builtin.html \ + change.html \ + channel.html \ + cmdline.html \ + debug.html \ + debugger.html \ + develop.html \ + diff.html \ + digraph.html \ + editing.html \ + eval.html \ + farsi.html \ + filetype.html \ + fold.html \ + ft_ada.html \ + ft_context.html \ + ft_mp.html \ + ft_ps1.html \ + ft_raku.html \ + ft_rust.html \ + ft_sql.html \ + gui.html \ + gui_w32.html \ + gui_x11.html \ + hangulin.html \ + hebrew.html \ + helphelp.html \ + howto.html \ + if_cscop.html \ + if_lua.html \ + if_mzsch.html \ + if_ole.html \ + if_perl.html \ + if_pyth.html \ + if_ruby.html \ + if_sniff.html \ + if_tcl.html \ + indent.html \ + index.html \ + insert.html \ + intro.html \ + map.html \ + mbyte.html \ + message.html \ + mlang.html \ + motion.html \ + netbeans.html \ + options.html \ + os_390.html \ + os_amiga.html \ + os_beos.html \ + os_dos.html \ + os_haiku.html \ + os_mac.html \ + os_mint.html \ + os_msdos.html \ + os_os2.html \ + os_qnx.html \ + os_risc.html \ + os_unix.html \ + os_vms.html \ + os_win32.html \ + pattern.html \ + pi_getscript.html \ + pi_gzip.html \ + pi_logipat.html \ + pi_netrw.html \ + pi_paren.html \ + pi_spec.html \ + pi_tar.html \ + pi_vimball.html \ + pi_zip.html \ + popup.html \ + print.html \ + quickfix.html \ + quickref.html \ + quotes.html \ + recover.html \ + remote.html \ + repeat.html \ + rileft.html \ + russian.html \ + scroll.html \ + sign.html \ + spell.html \ + sponsor.html \ + starting.html \ + syntax.html \ + tabpage.html \ + tagsrch.html \ + term.html \ + terminal.html \ + testing.html \ + textprop.html \ + tips.html \ + todo.html \ + uganda.html \ + undo.html \ + userfunc.html \ + usr_01.html \ + usr_02.html \ + usr_03.html \ + usr_04.html \ + usr_05.html \ + usr_06.html \ + usr_07.html \ + usr_08.html \ + usr_09.html \ + usr_10.html \ + usr_11.html \ + usr_12.html \ + usr_20.html \ + usr_21.html \ + usr_22.html \ + usr_23.html \ + usr_24.html \ + usr_25.html \ + usr_26.html \ + usr_27.html \ + usr_28.html \ + usr_29.html \ + usr_30.html \ + usr_31.html \ + usr_32.html \ + usr_40.html \ + usr_41.html \ + usr_42.html \ + usr_43.html \ + usr_44.html \ + usr_45.html \ + usr_50.html \ + usr_51.html \ + usr_52.html \ + usr_90.html \ + usr_toc.html \ + various.html \ + version4.html \ + version5.html \ + version6.html \ + version7.html \ + version8.html \ + version9.html \ + vi_diff.html \ + vimindex.html \ + vim9.html \ + vim9class.html \ + visual.html \ + windows.html \ + workshop.html + +CONVERTED = \ + vim-da.UTF-8.1 \ + vimdiff-da.UTF-8.1 \ + vimtutor-da.UTF-8.1 \ + vim-de.UTF-8.1 \ + vim-fr.UTF-8.1 \ + evim-fr.UTF-8.1 \ + vimdiff-fr.UTF-8.1 \ + vimtutor-fr.UTF-8.1 \ + xxd-fr.UTF-8.1 \ + vim-it.UTF-8.1 \ + evim-it.UTF-8.1 \ + vimdiff-it.UTF-8.1 \ + vimtutor-it.UTF-8.1 \ + xxd-it.UTF-8.1 \ + vim-pl.UTF-8.1 \ + evim-pl.UTF-8.1 \ + vimdiff-pl.UTF-8.1 \ + vimtutor-pl.UTF-8.1 \ + xxd-pl.UTF-8.1 \ + vim-ru.UTF-8.1 \ + evim-ru.UTF-8.1 \ + vimdiff-ru.UTF-8.1 \ + vimtutor-ru.UTF-8.1 \ + xxd-ru.UTF-8.1 \ + vim-tr.UTF-8.1 \ + evim-tr.UTF-8.1 \ + vimdiff-tr.UTF-8.1 \ + vimtutor-tr.UTF-8.1 + diff --git a/runtime/doc/Make_mvc.mak b/runtime/doc/Make_mvc.mak new file mode 100644 index 0000000..656cf75 --- /dev/null +++ b/runtime/doc/Make_mvc.mak @@ -0,0 +1,490 @@ +# +# Makefile for the Vim documentation on Windows +# +# 17.11.23, Restorer, + +# Common components +!INCLUDE Make_all.mak + + +# TODO: to think about what to use instead of awk. PowerShell? +#AWK = + +# Correct the following line for the where executeable file vim is installed. +# Please do not put the path in quotes. +VIMEXE = D:\Programs\Vim\vim90\vim.exe + +# Correct the following line for the directory where iconv installed. +# Please do not put the path in quotes. +ICONV_PATH = D:\Programs\GetText\bin + +# In case some package like GnuWin32, UnixUtils +# or something similar is installed on the system. +# If the "touch" program is installed on the system, but it is not registered +# in the %PATH% environment variable, then specify the full path to this file. +!IF EXIST ("touch.exe") +TOUCH = "touch.exe" %1 +!ELSE +TOUCH = if exist %1 ( copy /b %1+,, ) else ( type nul >%1 ) +!ENDIF + +# In case some package like GnuWin32, UnixUtils, gettext +# or something similar is installed on the system. +# If the "iconv" program is installed on the system, but it is not registered +# in the %PATH% environment variable, then specify the full path to this file. +!IF EXIST ("iconv.exe") +ICONV = "iconv.exe" +!ELSEIF EXIST ("$(ICONV_PATH)\iconv.exe") +ICONV = "$(ICONV_PATH)\iconv.exe" +!ENDIF + +RM = del /q + +.SUFFIXES : +.SUFFIXES : .c .o .txt .html + + +all : tags perlhtml $(CONVERTED) + +# Use "doctags" to generate the tags file. Only works for English! +tags : doctags $(DOCS) + doctags.exe $(DOCS) | sort /L C /O tags + powershell -nologo -noprofile -Command \ + "(Get-Content -Raw tags | Get-Unique | % {$$_ -replace \"`r\", \"\"}) \ + | New-Item -Force -Path . -ItemType file -Name tags" + +doctags : doctags.c + $(CC) doctags.c + + +# Use Vim to generate the tags file. Can only be used when Vim has been +# compiled and installed. Supports multiple languages. +vimtags : $(DOCS) + @"$(VIMEXE)" --clean -esX -V1 -u doctags.vim + + +uganda.nsis.txt : uganda.??? + !@powershell -nologo -noprofile -Command \ + $$ext=(Get-Item $?).Extension; (Get-Content $? ^| \ + % {$$_ -replace '\s*\*[-a-zA-Z0-9.]*\*', '' -replace 'vim:tw=78:.*', ''}) \ + ^| Set-Content $*$$ext + !@powershell -nologo -noprofile -Command \ + $$ext=(Get-Item $?).Extension; \ + (Get-Content -Raw $(@B)$$ext).Trim() -replace '(\r\n){3,}', '$$1$$1' \ + ^| Set-Content $(@B)$$ext + + +# TODO: +#html: noerrors tags $(HTMLS) +# if exist errors.log (more errors.log) + +# TODO: +#noerrors: +# $(RM) errors.log + +# TODO: +#.txt.html: + + +# TODO: +#index.html: help.txt + + +# TODO: +#vimindex.html: index.txt + + +# TODO: +#tags.ref tags.html: tags + +# Perl version of .txt to .html conversion. +# There can't be two rules to produce a .html from a .txt file. +# Just run over all .txt files each time one changes. It's fast anyway. +perlhtml : tags $(DOCS) + vim2html.pl tags $(DOCS) + +# Check URLs in the help with "curl" or "powershell". +test_urls : + "$(VIMEXE)" -S test_urls.vim + +clean : + $(RM) doctags.exe doctags.obj + $(RM) *.html vim-stylesheet.css + + +arabic.txt : + <$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-da.UTF-8.1 : vimdiff-da.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-da.UTF-8.1 : vimtutor-da.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-de.UTF-8.1 : vim-de.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +evim-fr.UTF-8.1 : evim-fr.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-fr.UTF-8.1 : vim-fr.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-fr.UTF-8.1 : vimdiff-fr.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-fr.UTF-8.1 : vimtutor-fr.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +xxd-fr.UTF-8.1 : xxd-fr.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +evim-it.UTF-8.1 : evim-it.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-it.UTF-8.1 : vim-it.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-it.UTF-8.1 : vimdiff-it.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-it.UTF-8.1 : vimtutor-it.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +xxd-it.UTF-8.1 : xxd-it.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 + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28591)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +evim-pl.UTF-8.1 : evim-pl.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-pl.UTF-8.1 : vim-pl.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-pl.UTF-8.1 : vimdiff-pl.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-pl.UTF-8.1 : vimtutor-pl.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +xxd-pl.UTF-8.1 : xxd-pl.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-2 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28592)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +evim-ru.UTF-8.1 : evim-ru.1 +!IF DEFINED (ICONV) + $(ICONV) -f KOI8-R -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-ru.UTF-8.1 : vim-ru.1 +!IF DEFINED (ICONV) + $(ICONV) -f KOI8-R -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-ru.UTF-8.1 : vimdiff-ru.1 +!IF DEFINED (ICONV) + $(ICONV) -f KOI8-R -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-ru.UTF-8.1 : vimtutor-ru.1 +!IF DEFINED (ICONV) + $(ICONV) -f KOI8-R -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +xxd-ru.UTF-8.1 : xxd-ru.1 +!IF DEFINED (ICONV) + $(ICONV) -f KOI8-R -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(20866)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +evim-tr.UTF-8.1 : evim-tr.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vim-tr.UTF-8.1 : vim-tr.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimdiff-tr.UTF-8.1 : vimdiff-tr.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +vimtutor-tr.UTF-8.1 : vimtutor-tr.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + powershell -nologo -noprofile -Command \ + [IO.File]::ReadAllText(\"$?\", [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Force -Path . -ItemType file -Name $@ +!ENDIF + +# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0 ft=make: diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile new file mode 100644 index 0000000..fc04287 --- /dev/null +++ b/runtime/doc/Makefile @@ -0,0 +1,232 @@ +# +# Makefile for the Vim documentation on Unix +# +# If you get "don't know how to make scratch", first run make in the source +# directory. Or remove the include below. + +AWK = awk + +# Set to $(VIMTARGET) when executed from src/Makefile. +VIMEXE = vim + +# include the config.mk from the source directory. It's only needed to set +# AWK, used for "make html". Comment this out if the include gives problems. +include ../../src/auto/config.mk + +# Common components +include Make_all.mak + +.SUFFIXES: +.SUFFIXES: .c .o .txt .html + +all: tags vim.man evim.man vimdiff.man vimtutor.man xxd.man $(CONVERTED) + +# Use Vim to generate the tags file. Can only be used when Vim has been +# compiled and installed. Supports multiple languages. +vimtags: $(DOCS) + @$(VIMEXE) --clean -esX -V1 -u doctags.vim + +# Use "doctags" to generate the tags file. Only works for English! +tags: doctags $(DOCS) + ./doctags $(DOCS) | LANG=C LC_ALL=C sort >tags + uniq -d -2 tags + +doctags: doctags.c + $(CC) doctags.c -o doctags + +vim.man: vim.1 + nroff -man vim.1 | sed -e s/.//g > vim.man + +evim.man: evim.1 + nroff -man evim.1 | sed -e s/.//g > evim.man + +vimdiff.man: vimdiff.1 + nroff -man vimdiff.1 | sed -e s/.//g > vimdiff.man + +vimtutor.man: vimtutor.1 + nroff -man vimtutor.1 | sed -e s/.//g > vimtutor.man + +xxd.man: xxd.1 + nroff -man xxd.1 | sed -e s/.//g > xxd.man + +uganda.nsis.txt: uganda.txt + sed -e 's/[ ]*\*[-a-zA-Z0-9.]*\*//g' -e 's/vim:tw=78:.*//' \ + uganda.txt | uniq >uganda.nsis.txt + +# Awk version of .txt to .html conversion. +html: noerrors tags $(HTMLS) + @if test -f errors.log; then more errors.log; fi + +noerrors: + -rm -f errors.log + +$(HTMLS): tags.ref + +.txt.html: + $(AWK) -f makehtml.awk $< >$@ + +# index.html is the starting point for HTML, but for the help files it is +# help.txt. Therefore use vimindex.html for index.txt. +index.html: help.txt + $(AWK) -f makehtml.awk help.txt >index.html + +vimindex.html: index.txt + $(AWK) -f makehtml.awk index.txt >vimindex.html + +tags.ref tags.html: tags + $(AWK) -f maketags.awk tags >tags.html + +# Perl version of .txt to .html conversion. +# There can't be two rules to produce a .html from a .txt file. +# Just run over all .txt files each time one changes. It's fast anyway. +perlhtml: tags $(DOCS) + ./vim2html.pl tags $(DOCS) + +# Check URLs in the help with "curl". +test_urls: + vim -S test_urls.vim + +clean: + -rm -f doctags *.html tags.ref + +# These files are in the extra archive, skip if not present + +arabic.txt: + touch arabic.txt + +farsi.txt: + touch farsi.txt + +hebrew.txt: + touch hebrew.txt + +russian.txt: + touch russian.txt + +gui_w32.txt: + touch gui_w32.txt + +if_ole.txt: + touch if_ole.txt + +os_390.txt: + touch os_390.txt + +os_amiga.txt: + touch os_amiga.txt + +os_beos.txt: + touch os_beos.txt + +os_dos.txt: + touch os_dos.txt + +os_haiku.txt: + touch os_haiku.txt + +os_mac.txt: + touch os_mac.txt + +os_mint.txt: + touch os_mint.txt + +os_msdos.txt: + touch os_msdos.txt + +os_os2.txt: + touch os_os2.txt + +os_qnx.txt: + touch os_qnx.txt + +os_risc.txt: + touch os_risc.txt + +os_win32.txt: + touch os_win32.txt + +# Note that $< works with GNU make while $> works for BSD make. +# Is there a solution that works for both?? +vim-da.UTF-8.1: vim-da.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimdiff-da.UTF-8.1: vimdiff-da.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimtutor-da.UTF-8.1: vimtutor-da.1 + iconv -f latin1 -t utf-8 $< >$@ + +vim-de.UTF-8.1: vim-de.1 + iconv -f latin1 -t utf-8 $< >$@ + +vim-fr.UTF-8.1: vim-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +evim-fr.UTF-8.1: evim-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimdiff-fr.UTF-8.1: vimdiff-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimtutor-fr.UTF-8.1: vimtutor-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +xxd-fr.UTF-8.1: xxd-fr.1 + iconv -f latin1 -t utf-8 $< >$@ + +vim-it.UTF-8.1: vim-it.1 + iconv -f latin1 -t utf-8 $< >$@ + +evim-it.UTF-8.1: evim-it.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimdiff-it.UTF-8.1: vimdiff-it.1 + iconv -f latin1 -t utf-8 $< >$@ + +vimtutor-it.UTF-8.1: vimtutor-it.1 + iconv -f latin1 -t utf-8 $< >$@ + +xxd-it.UTF-8.1: xxd-it.1 + iconv -f latin1 -t utf-8 $< >$@ + +vim-pl.UTF-8.1: vim-pl.1 + iconv -f latin2 -t utf-8 $< >$@ + +evim-pl.UTF-8.1: evim-pl.1 + iconv -f latin2 -t utf-8 $< >$@ + +vimdiff-pl.UTF-8.1: vimdiff-pl.1 + iconv -f latin2 -t utf-8 $< >$@ + +vimtutor-pl.UTF-8.1: vimtutor-pl.1 + iconv -f latin2 -t utf-8 $< >$@ + +xxd-pl.UTF-8.1: xxd-pl.1 + iconv -f latin2 -t utf-8 $< >$@ + +vim-ru.UTF-8.1: vim-ru.1 + iconv -f KOI8-R -t utf-8 $< >$@ + +evim-ru.UTF-8.1: evim-ru.1 + iconv -f KOI8-R -t utf-8 $< >$@ + +vimdiff-ru.UTF-8.1: vimdiff-ru.1 + iconv -f KOI8-R -t utf-8 $< >$@ + +vimtutor-ru.UTF-8.1: vimtutor-ru.1 + iconv -f KOI8-R -t utf-8 $< >$@ + +xxd-ru.UTF-8.1: xxd-ru.1 + iconv -f KOI8-R -t utf-8 $< >$@ + +vim-tr.UTF-8.1: vim-tr.1 + iconv -f latin5 -t utf-8 $< >$@ + +evim-tr.UTF-8.1: evim-tr.1 + iconv -f latin5 -t utf-8 $< >$@ + +vimdiff-tr.UTF-8.1: vimdiff-tr.1 + iconv -f latin5 -t utf-8 $< >$@ + +vimtutor-tr.UTF-8.1: vimtutor-tr.1 + iconv -f latin5 -t utf-8 $< >$@ diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt new file mode 100644 index 0000000..b8fccf2 --- /dev/null +++ b/runtime/doc/arabic.txt @@ -0,0 +1,328 @@ +*arabic.txt* For Vim version 9.1. Last change: 2021 Jun 22 + + + VIM REFERENCE MANUAL by Nadim Shaikli + + +Arabic Language support (options & mappings) for Vim *Arabic* + + + *E800* +In order to use right-to-left and Arabic mapping support, it is +necessary to compile Vim with the |+arabic| feature. + +These functions have been created by Nadim Shaikli + +It is best to view this file with these settings within Vim's GUI: > + + :set encoding=utf-8 + :set arabicshape + + +Introduction +------------ +Arabic is a rather demanding language in which a number of special +features are required. Characters are right-to-left oriented and +ought to appear as such on the screen (i.e. from right to left). +Arabic also requires shaping of its characters, meaning the same +character has a different visual form based on its relative location +within a word (initial, medial, final or stand-alone). Arabic also +requires two different forms of combining and the ability, in +certain instances, to either superimpose up to two characters on top +of another (composing) or the actual substitution of two characters +into one (combining). Lastly, to display Arabic properly one will +require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also +require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are +subsets within a so-called ISO-10646-1 font. + +The commands, prompts and help files are not in Arabic, therefore +the user interface remains the standard Vi interface. + + +Highlights +---------- +o Editing left-to-right files as in the original Vim hasn't changed. + +o Viewing and editing files in right-to-left windows. File + orientation is per window, so it is possible to view the same + file in right-to-left and left-to-right modes, simultaneously. + +o No special terminal with right-to-left capabilities is required. + The right-to-left changes are completely hardware independent. + Only Arabic fonts are necessary. + +o Compatible with the original Vim. Almost all features work in + right-to-left mode (there are liable to be bugs). + +o Changing keyboard mapping and reverse insert modes using a single + command. + +o Toggling complete Arabic support via a single command. + +o While in Arabic mode, numbers are entered from left to right. Upon + entering a none number character, that character will be inserted + just into the left of the last number. + +o Arabic keymapping on the command line in reverse insert mode. + +o Proper Bidirectional functionality is possible given Vim is + started within a Bidi capable terminal emulator. + + +Arabic Fonts *arabicfonts* +------------ + +Vim requires monospaced fonts of which there are many out there. +Arabic requires ISO-8859-6 as well as Presentation Form-B fonts +(without Form-B, Arabic will _NOT_ be usable). It is highly +recommended that users search for so-called 'ISO-10646-1' fonts. +Do an Internet search or check www.arabeyes.org for further +info on where to obtain the necessary Arabic fonts. + + +Font Installation +----------------- + +o Installation of fonts for X Window systems (Unix/Linux) + + Depending on your system, copy your_ARABIC_FONT file into a + directory of your choice. Change to the directory containing + the Arabic fonts and execute the following commands: + + % mkfontdir + % xset +fp path_name_of_arabic_fonts_directory + + +Usage +----- +Prior to the actual usage of Arabic within Vim, a number of settings +need to be accounted for and invoked. + +o Setting the Arabic fonts + + + For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done + by entering the following command in the Vim window. +> + :set guifont=your_ARABIC_FONT +< + NOTE: the string 'your_ARABIC_FONT' is used to denote a complete + font name akin to that used in Linux/Unix systems. + (e.g. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1) + + You can append the 'guifont' set command to your .vimrc file + in order to get the same above noted results. In other words, + you can include ':set guifont=your_ARABIC_FONT' to your .vimrc + file. + + + Under the X Window environment, you can also start Vim with + '-fn your_ARABIC_FONT' option. + +o Setting the appropriate character Encoding + To enable the correct Arabic encoding the following command needs + to be appended, +> + :set encoding=utf-8 +< + to your .vimrc file (entering the command manually into your Vim + window is highly discouraged). In short, include ':set + encoding=utf-8' to your .vimrc file. + + Attempts to use Arabic without UTF-8 will result the following + warning message, + + *W17* > + Arabic requires UTF-8, do ':set encoding=utf-8' + +o Enable Arabic settings [short-cut] + + In order to simplify and streamline things, you can either invoke + Vim with the command-line option, + + % vim -A my_utf8_arabic_file ... + + or enable 'arabic' via the following command within Vim +> + :set arabic +< + The two above noted possible invocations are the preferred manner + in which users are instructed to proceed. Barring an enabled 'termbidi' + setting, both command options: + + 1. set the appropriate keymap + 2. enable the deletion of a single combined pair character + 3. enable rightleft mode + 4. enable rightleftcmd mode (affecting the command-line) + 5. enable arabicshape mode (do visual character alterations) + + You may also append the command to your .vimrc file and simply + include ':set arabic' to it. + + You are also capable of disabling Arabic support via +> + :set noarabic +< + which resets everything that the command had enabled without touching + the global settings as they could affect other possible open buffers. + In short the 'noarabic' command, + + 1. resets to the alternate keymap + 2. disables the deletion of a single combined pair character + 3. disables rightleft mode + + NOTE: the 'arabic' command takes into consideration 'termbidi' for + possible external bi-directional (bidi) support from the + terminal ("mlterm" for instance offers such support). + 'termbidi', if available, is superior to rightleft support + and its support is preferred due to its level of offerings. + 'arabic' when 'termbidi' is enabled only sets the keymap. + + For vertical window isolation while setting 'termbidi' an LTR + vertical separator like "l" or "饾枿" may be used. It may also be + hidden by changing its color to the foreground color: > + :set fillchars=vert:l + :hi VertSplit ctermbg=White +< Note that this is a workaround, not a proper solution. + + If, on the other hand, you'd like to be verbose and explicit and + are opting not to use the 'arabic' short-cut command, here's what + is needed (i.e. if you use ':set arabic' you can skip this section) - + + + Arabic Keymapping Activation + + To activate the Arabic keymap (i.e. to remap your English/Latin + keyboard to look-n-feel like a standard Arabic one), set the + 'keymap' command to "arabic". This is done by entering +> + :set keymap=arabic +< + in your Vim window. You can also append the 'keymap' set command to + your .vimrc file. In other words, you can include ':set keymap=arabic' + to your .vimrc file. + + To turn toggle (or switch) your keymapping between Arabic and the + default mapping (English), it is advised that users use the 'CTRL-^' + key press while in insert (or add/replace) mode. The command-line + will display your current mapping by displaying an "Arabic" string + next to your insertion mode (e.g. -- INSERT Arabic --) indicating + your current keymap. + + + Arabic deletion of a combined pair character + + By default Vim has the 'delcombine' option disabled. This option + allows the deletion of ALEF in a LAM_ALEF (LAA) combined character + and still retain the LAM (i.e. it reverts to treating the combined + character as its natural two characters form -- this also pertains + to harakat and their combined forms). You can enable this option + by entering +> + :set delcombine +< + in our Vim window. You can also append the 'delcombine' set command + to your .vimrc file. In other words, you can include ':set delcombine' + to your .vimrc file. + + + Arabic right-to-left Mode + + By default Vim starts in Left-to-right mode. 'rightleft' is the + command that allows one to alter a window's orientation - that can + be accomplished via, + + - Toggling between left-to-right and right-to-left modes is + accomplished through ':set rightleft' and ':set norightleft'. + + - While in Left-to-right mode, enter ':set rl' in the command line + ('rl' is the abbreviation for rightleft). + + - Put the ':set rl' line in your '.vimrc' file to start Vim in + right-to-left mode permanently. + + + Arabic right-to-left command-line Mode + + For certain commands the editing can be done in right-to-left mode. + Currently this is only applicable to search commands. + + This is controlled with the 'rightleftcmd' option. The default is + "search", which means that windows in which 'rightleft' is set will + edit search commands in right-left mode. To disable this behavior, +> + :set rightleftcmd= +< + To enable right-left editing of search commands again, +> + :set rightleftcmd& +< + + Arabic Shaping Mode + + To activate the required visual characters alterations (shaping, + composing, combining) which the Arabic language requires, enable + the 'arabicshape' command. This is done by entering +> + :set arabicshape +< + in our Vim window. You can also append the 'arabicshape' set + command to your .vimrc file. In other words, you can include + ':set arabicshape' to your .vimrc file. + + +Keymap/Keyboard *arabickeymap* +--------------- + +The character/letter encoding used in Vim is the standard UTF-8. +It is widely discouraged that any other encoding be used or even +attempted. + +Note: UTF-8 is an all encompassing encoding and as such is + the only supported (and encouraged) encoding with + regard to Arabic (all other proprietary encodings + should be discouraged and frowned upon). + +o Keyboard + + + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode + + + Keyboard mapping is based on the Microsoft's Arabic keymap (the + de facto standard in the Arab world): + + +---------------------------------------------------------------------+ + |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ 賾 | + |1 佟 |2 佗 |3 伲 |4 伽 |5 佶 |6 佴 |7 侑 |8 侉 |9 侃 |0 贍 |- |= |\ |` 匕 | + +---------------------------------------------------------------------+ + |Q 賻 |W 賸 |E 購 |R 賹 |T 賱廿 |Y 廿 |U ` |I 梅 |O x |P 貨 |{ < |} > | + |q 囟 |w 氐 |e 孬 |r 賯 |t 賮 |y 睾 |u 毓 |i 賴 |o 禺 |p 丨 |[ 噩 |] 丿 | + +-----------------------------------------------------------+ + |A 賽 |S 賺 |D [ |F ] |G 賱兀 |H 兀 |J 賭 |K 貙 |L / |: |" | + |a 卮 |s 爻 |d 賷 |f 亘 |g 賱 |h 丕 |j 鬲 |k 賳 |l 賲 |; 賰 |' 胤 | + +------------------------------------------------------+ + |Z ~ |X 賿 |C { |V } |B 賱丌 |N 丌 |M ' |< , |> . |? 責 | + |z 卅 |x 亍 |c 丐 |v 乇 |b 賱丕 |n 賶 |m 丞 |, 賵 |. 夭 |/ 馗 | + +-------------------------------------------------+ + +Restrictions +------------ + +o Vim in its GUI form does not currently support Bi-directionality + (i.e. the ability to see both Arabic and Latin intermixed within + the same line). + + +Known Bugs +---------- + +There is one known minor bug, + + 1. If you insert a haraka (e.g. Fatha (U+064E)) after a LAM (U+0644) + and then insert an ALEF (U+0627), the appropriate combining will + not happen due to the sandwiched haraka resulting in something + that will NOT be displayed correctly. + + WORK-AROUND: Don't include harakats between LAM and ALEF combos. + In general, don't anticipate to see correct visual + representation with regard to harakats and LAM+ALEF + combined characters (even those entered after both + characters). The problem noted is strictly a visual + one, meaning saving such a file will contain all the + appropriate info/encodings - nothing is lost. + +No other bugs are known to exist. + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt new file mode 100644 index 0000000..2ac0247 --- /dev/null +++ b/runtime/doc/autocmd.txt @@ -0,0 +1,1924 @@ +*autocmd.txt* For Vim version 9.1. Last change: 2023 May 20 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Automatic commands *autocommand* *autocommands* + +For a basic explanation, see section |40.3| in the user manual. + +1. Introduction |autocmd-intro| +2. Defining autocommands |autocmd-define| +3. Removing autocommands |autocmd-remove| +4. Listing autocommands |autocmd-list| +5. Events |autocmd-events| +6. Patterns |autocmd-patterns| +7. Buffer-local autocommands |autocmd-buflocal| +8. Groups |autocmd-groups| +9. Executing autocommands |autocmd-execute| +10. Using autocommands |autocmd-use| +11. Disabling autocommands |autocmd-disable| + + +============================================================================== +1. Introduction *autocmd-intro* + +You can specify commands to be executed automatically when reading or writing +a file, when entering or leaving a buffer or window, and when exiting Vim. +For example, you can create an autocommand to set the 'cindent' option for +files matching *.c. You can also use autocommands to implement advanced +features, such as editing compressed files (see |gzip-example|). The usual +place to put autocommands is in your .vimrc or .exrc file. + + *E203* *E204* *E143* *E855* *E937* *E952* +WARNING: Using autocommands is very powerful, and may lead to unexpected side +effects. Be careful not to destroy your text. +- It's a good idea to do some testing on an expendable copy of a file first. + For example: If you use autocommands to decompress a file when starting to + edit it, make sure that the autocommands for compressing when writing work + correctly. +- Be prepared for an error halfway through (e.g., disk full). Vim will mostly + be able to undo the changes to the buffer, but you may have to clean up the + changes to other files by hand (e.g., compress a file that has been + decompressed). +- If the BufRead* events allow you to edit a compressed file, the FileRead* + events should do the same (this makes recovery possible in some rare cases). + It's a good idea to use the same autocommands for the File* and Buf* events + when possible. + +Recommended use: +- Always use a group, so that it's easy to delete the autocommand. +- Keep the command itself short, call a function to do more work. +- Make it so that the script it is defined in can be sourced several times + without the autocommand being repeated. + +Example in Vim9 script: > + autocmd_add({replace: true, + group: 'DemoGroup', + event: 'BufEnter', + pattern: '*.txt', + cmd: 'call DemoBufEnter()' + }) + +In legacy script: > + call autocmd_add(#{replace: v:true, + \ group: 'DemoGroup', + \ event: 'BufEnter', + \ pattern: '*.txt', + \ cmd: 'call DemoBufEnter()' + \ }) + +============================================================================== +2. Defining autocommands *autocmd-define* + + *:au* *:autocmd* +:au[tocmd] [group] {event} {aupat} [++once] [++nested] {cmd} + Add {cmd} to the list of commands that Vim will + execute automatically on {event} for a file matching + {aupat} |autocmd-patterns|. + Here {event} cannot be "*". *E1155* + Note: A quote character is seen as argument to the + :autocmd and won't start a comment. + Vim always adds the {cmd} after existing autocommands, + so that the autocommands execute in the order in which + they were given. + See |autocmd-nested| for [++nested]. "nested" + (without the ++) can also be used, for backwards + compatibility, but not in |Vim9| script. *E1078* + *autocmd-once* + If [++once] is supplied the command is executed once, + then removed ("one shot"). + +The special pattern or defines a buffer-local autocommand. +See |autocmd-buflocal|. + +If the `:autocmd` is in Vim9 script (a script that starts with `:vim9script` +and in a `:def` function) then {cmd} will be executed as in Vim9 +script. Thus this depends on where the autocmd is defined, not where it is +triggered. + *:autocmd-block* +{cmd} can be a block, like with `:command`, see |:command-repl|. Example: > + au BufReadPost *.xml { + setlocal matchpairs+=<:> + / + :augroup mine | au! BufRead | augroup END +But this sees "augroup" as part of the defined command: > + :augroup mine | au! BufRead * | augroup END + :augroup mine | au BufRead * set tw=70 | augroup END +Instead you can put the group name into the command: > + :au! mine BufRead * + :au mine BufRead * set tw=70 +Or use `:execute`: > + :augroup mine | exe "au! BufRead *" | augroup END + :augroup mine | exe "au BufRead * set tw=70" | augroup END + +< *autocmd-expand* +Note that special characters (e.g., "%", "") in the ":autocmd" +arguments are not expanded when the autocommand is defined. These will be +expanded when the Event is recognized, and the {cmd} is executed. The only +exception is that "" is expanded when the autocmd is defined. Example: +> + :au BufNewFile,BufRead *.html so :h/html.vim + +Here Vim expands to the name of the file containing this line. + +`:autocmd` adds to the list of autocommands regardless of whether they are +already present. When your .vimrc file is sourced twice, the autocommands +will appear twice. To avoid this, define your autocommands in a group, so +that you can easily clear them: > + + augroup vimrc + " Remove all vimrc autocommands + autocmd! + au BufNewFile,BufRead *.html so :h/html.vim + augroup END + +If you don't want to remove all autocommands, you can instead use a variable +to ensure that Vim includes the autocommands only once: > + + :if !exists("autocommands_loaded") + : let autocommands_loaded = 1 + : au ... + :endif + +When the [group] argument is not given, Vim uses the current group (as defined +with ":augroup"); otherwise, Vim uses the group defined with [group]. Note +that [group] must have been defined before. You cannot define a new group +with ":au group ..."; use ":augroup" for that. + +While testing autocommands, you might find the 'verbose' option to be useful: > + :set verbose=9 +This setting makes Vim echo the autocommands as it executes them. + +When defining an autocommand in a script, it will be able to call functions +local to the script and use mappings local to the script. When the event is +triggered and the command executed, it will run in the context of the script +it was defined in. This matters if || is used in a command. + +When executing the commands, the message from one command overwrites a +previous message. This is different from when executing the commands +manually. Mostly the screen will not scroll up, thus there is no hit-enter +prompt. When one command outputs two messages this can happen anyway. + +============================================================================== +3. Removing autocommands *autocmd-remove* + +In addition to the below described commands, the |autocmd_delete()| function can +be used to remove a list of autocmds and autocmd groups from a Vim script. + +:au[tocmd]! [group] {event} {aupat} [++once] [++nested] {cmd} + Remove all autocommands associated with {event} and + {aupat}, and add the command {cmd}. + See |autocmd-once| for [++once]. + See |autocmd-nested| for [++nested]. + +:au[tocmd]! [group] {event} {aupat} + Remove all autocommands associated with {event} and + {aupat}. + +:au[tocmd]! [group] * {aupat} + Remove all autocommands associated with {aupat} for + all events. + +:au[tocmd]! [group] {event} + Remove ALL autocommands for {event}. + Warning: You should not do this without a group for + |BufRead| and other common events, it can break + plugins, syntax highlighting, etc. + +:au[tocmd]! [group] Remove ALL autocommands. + Note: a quote will be seen as argument to the :autocmd + and won't start a comment. + Warning: You should normally not do this without a + group, it breaks plugins, syntax highlighting, etc. + +When the [group] argument is not given, Vim uses the current group (as defined +with ":augroup"); otherwise, Vim uses the group defined with [group]. + +============================================================================== +4. Listing autocommands *autocmd-list* + +:au[tocmd] [group] {event} {aupat} + Show the autocommands associated with {event} and + {aupat}. + +:au[tocmd] [group] * {aupat} + Show the autocommands associated with {aupat} for all + events. + +:au[tocmd] [group] {event} + Show all autocommands for {event}. + +:au[tocmd] [group] Show all autocommands. + +If you provide the [group] argument, Vim lists only the autocommands for +[group]; otherwise, Vim lists the autocommands for ALL groups. Note that this +argument behavior differs from that for defining and removing autocommands. + +In order to list buffer-local autocommands, use a pattern in the form +or . See |autocmd-buflocal|. + +The |autocmd_get()| function can be used from a Vim script to get a list of +autocmds. + + *:autocmd-verbose* +When 'verbose' is non-zero, listing an autocommand will also display where it +was last defined. Example: > + + :verbose autocmd BufEnter + FileExplorer BufEnter + * call s:LocalBrowse(expand("")) + Last set from /usr/share/vim/vim-7.0/plugin/NetrwPlugin.vim +< +See |:verbose-cmd| for more information. + +============================================================================== +5. Events *autocmd-events* *E215* *E216* + +You can specify a comma-separated list of event names. No white space can be +used in this list. The command applies to all the events in the list. + +For READING FILES there are four kinds of events possible: + BufNewFile starting to edit a non-existent file + BufReadPre BufReadPost starting to edit an existing file + FilterReadPre FilterReadPost read the temp file with filter output + FileReadPre FileReadPost any other file read +Vim uses only one of these four kinds when reading a file. The "Pre" and +"Post" events are both triggered, before and after reading the file. + +Note that the autocommands for the *ReadPre events and all the Filter events +are not allowed to change the current buffer (you will get an error message if +this happens). This is to prevent the file to be read into the wrong buffer. + +Note that the 'modified' flag is reset AFTER executing the BufReadPost +and BufNewFile autocommands. But when the 'modified' option was set by the +autocommands, this doesn't happen. + +You can use the 'eventignore' option to ignore a number of events or all +events. + *autocommand-events* *{event}* +Vim recognizes the following events. Vim ignores the case of event names +(e.g., you can use "BUFread" or "bufread" instead of "BufRead"). + +First an overview by function with a short explanation. Then the list +alphabetically with full explanations |autocmd-events-abc|. + +Name triggered by ~ + + Reading +|BufNewFile| starting to edit a file that doesn't exist +|BufReadPre| starting to edit a new buffer, before reading the file +|BufRead| starting to edit a new buffer, after reading the file +|BufReadPost| starting to edit a new buffer, after reading the file +|BufReadCmd| before starting to edit a new buffer |Cmd-event| + +|FileReadPre| before reading a file with a ":read" command +|FileReadPost| after reading a file with a ":read" command +|FileReadCmd| before reading a file with a ":read" command |Cmd-event| + +|FilterReadPre| before reading a file from a filter command +|FilterReadPost| after reading a file from a filter command + +|StdinReadPre| before reading from stdin into the buffer +|StdinReadPost| After reading from the stdin into the buffer + + Writing +|BufWrite| starting to write the whole buffer to a file +|BufWritePre| starting to write the whole buffer to a file +|BufWritePost| after writing the whole buffer to a file +|BufWriteCmd| before writing the whole buffer to a file |Cmd-event| + +|FileWritePre| starting to write part of a buffer to a file +|FileWritePost| after writing part of a buffer to a file +|FileWriteCmd| before writing part of a buffer to a file |Cmd-event| + +|FileAppendPre| starting to append to a file +|FileAppendPost| after appending to a file +|FileAppendCmd| before appending to a file |Cmd-event| + +|FilterWritePre| starting to write a file for a filter command or diff +|FilterWritePost| after writing a file for a filter command or diff + + Buffers +|BufAdd| just after adding a buffer to the buffer list +|BufCreate| just after adding a buffer to the buffer list +|BufDelete| before deleting a buffer from the buffer list +|BufWipeout| before completely deleting a buffer + +|BufFilePre| before changing the name of the current buffer +|BufFilePost| after changing the name of the current buffer + +|BufEnter| after entering a buffer +|BufLeave| before leaving to another buffer +|BufWinEnter| after a buffer is displayed in a window +|BufWinLeave| before a buffer is removed from a window + +|BufUnload| before unloading a buffer +|BufHidden| just before a buffer becomes hidden +|BufNew| just after creating a new buffer + +|SwapExists| detected an existing swap file + + Options +|FileType| when the 'filetype' option has been set +|Syntax| when the 'syntax' option has been set +|EncodingChanged| after the 'encoding' option has been changed +|TermChanged| after the value of 'term' has changed +|OptionSet| after setting any option + + Startup and exit +|VimEnter| after doing all the startup stuff +|GUIEnter| after starting the GUI successfully +|GUIFailed| after starting the GUI failed +|TermResponse| after the terminal response to |t_RV| is received + +|QuitPre| when using `:quit`, before deciding whether to exit +|ExitPre| when using a command that may make Vim exit +|VimLeavePre| before exiting Vim, before writing the viminfo file +|VimLeave| before exiting Vim, after writing the viminfo file + +|VimSuspend| when suspending Vim +|VimResume| when Vim is resumed after being suspended + + Terminal +|TerminalOpen| after a terminal buffer was created +|TerminalWinOpen| after a terminal buffer was created in a new window + + Various +|FileChangedShell| Vim notices that a file changed since editing started +|FileChangedShellPost| After handling a file changed since editing started +|FileChangedRO| before making the first change to a read-only file + +|DiffUpdated| after diffs have been updated +|DirChangedPre| before the working directory will change +|DirChanged| after the working directory has changed + +|ShellCmdPost| after executing a shell command +|ShellFilterPost| after filtering with a shell command + +|CmdUndefined| a user command is used but it isn't defined +|FuncUndefined| a user function is used but it isn't defined +|SpellFileMissing| a spell file is used but it can't be found +|SourcePre| before sourcing a Vim script +|SourcePost| after sourcing a Vim script +|SourceCmd| before sourcing a Vim script |Cmd-event| + +|VimResized| after the Vim window size changed +|FocusGained| Vim got input focus +|FocusLost| Vim lost input focus +|CursorHold| the user doesn't press a key for a while +|CursorHoldI| the user doesn't press a key for a while in Insert mode +|CursorMoved| the cursor was moved in Normal mode +|CursorMovedI| the cursor was moved in Insert mode + +|WinNew| after creating a new window +|TabNew| after creating a new tab page +|WinClosed| after closing a window +|TabClosed| after closing a tab page +|WinEnter| after entering another window +|WinLeave| before leaving a window +|TabEnter| after entering another tab page +|TabLeave| before leaving a tab page +|CmdwinEnter| after entering the command-line window +|CmdwinLeave| before leaving the command-line window + +|CmdlineChanged| after a change was made to the command-line text +|CmdlineEnter| after the cursor moves to the command line +|CmdlineLeave| before the cursor leaves the command line + +|InsertEnter| starting Insert mode +|InsertChange| when typing while in Insert or Replace mode +|InsertLeave| when leaving Insert mode +|InsertLeavePre| just before leaving Insert mode +|InsertCharPre| when a character was typed in Insert mode, before + inserting it + +|ModeChanged| after changing the mode + +|TextChanged| after a change was made to the text in Normal mode +|TextChangedI| after a change was made to the text in Insert mode + when popup menu is not visible +|TextChangedP| after a change was made to the text in Insert mode + when popup menu visible +|TextChangedT| after a change was made to the text in Terminal mode +|TextYankPost| after text has been yanked or deleted + +|SafeState| nothing pending, going to wait for the user to type a + character +|SafeStateAgain| repeated SafeState + +|ColorSchemePre| before loading a color scheme +|ColorScheme| after loading a color scheme + +|RemoteReply| a reply from a server Vim was received + +|QuickFixCmdPre| before a quickfix command is run +|QuickFixCmdPost| after a quickfix command is run + +|SessionLoadPost| after loading a session file + +|MenuPopup| just before showing the popup menu +|CompleteChanged| after Insert mode completion menu changed +|CompleteDonePre| after Insert mode completion is done, before clearing + info +|CompleteDone| after Insert mode completion is done, after clearing + info + +|User| to be used in combination with ":doautocmd" +|SigUSR1| after the SIGUSR1 signal has been detected + +|WinScrolled| after scrolling or resizing a window + + +The alphabetical list of autocommand events: *autocmd-events-abc* + + *BufCreate* *BufAdd* +BufAdd or BufCreate Just after creating a new buffer which is + added to the buffer list, or adding a buffer + to the buffer list. + Also used just after a buffer in the buffer + list has been renamed. + Not triggered for the initial buffers created + during startup. + The BufCreate event is for historic reasons. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "". + *BufDelete* +BufDelete Before deleting a buffer from the buffer list. + The BufUnload may be called first (if the + buffer was loaded). + Also used just before a buffer in the buffer + list is renamed. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "" and "". + Don't change to another buffer, it will cause + problems. + *BufEnter* +BufEnter After entering a buffer. Useful for setting + options for a file type. Also executed when + starting to edit a buffer, after the + BufReadPost autocommands. + *BufFilePost* +BufFilePost After changing the name of the current buffer + with the ":file" or ":saveas" command. + *BufFilePre* +BufFilePre Before changing the name of the current buffer + with the ":file" or ":saveas" command. + *BufHidden* +BufHidden Just before a buffer becomes hidden. That is, + when there are no longer windows that show + the buffer, but the buffer is not unloaded or + deleted. Not used for ":qa" or ":q" when + exiting Vim. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + *BufLeave* +BufLeave Before leaving to another buffer. Also when + leaving or closing the current window and the + new current window is not for the same buffer. + Not used for ":qa" or ":q" when exiting Vim. + *BufNew* +BufNew Just after creating a new buffer. Also used + just after a buffer has been renamed. When + the buffer is added to the buffer list BufAdd + will be triggered too. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being created "". + *BufNewFile* +BufNewFile When starting to edit a file that doesn't + exist. Can be used to read in a skeleton + file. + *BufRead* *BufReadPost* +BufRead or BufReadPost When starting to edit a new buffer, after + reading the file into the buffer, before + executing the modelines. See |BufWinEnter| + for when you need to do something after + processing the modelines. + Also triggered: + - when writing an unnamed buffer in a way that + the buffer gets a name + - after successfully recovering a file + - for the filetypedetect group when executing + ":filetype detect" + Not triggered: + - for the `:read file` command + - when the file doesn't exist + *BufReadCmd* +BufReadCmd Before starting to edit a new buffer. Should + read the file into the buffer. |Cmd-event| + *BufReadPre* *E200* *E201* +BufReadPre When starting to edit a new buffer, before + reading the file into the buffer. Not used + if the file doesn't exist. + *BufUnload* +BufUnload Before unloading a buffer. This is when the + text in the buffer is going to be freed. This + may be after a BufWritePost and before a + BufDelete. Also used for all buffers that are + loaded when Vim is going to exit. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + Don't change to another buffer or window, it + will cause problems! + When exiting and v:dying is 2 or more this + event is not triggered. + *BufWinEnter* +BufWinEnter After a buffer is displayed in a window. This + can be when the buffer is loaded (after + processing the modelines) or when a hidden + buffer is displayed in a window (and is no + longer hidden). + Does not happen for |:split| without + arguments, since you keep editing the same + buffer, or ":split" with a file that's already + open in a window, because it re-uses an + existing buffer. But it does happen for a + ":split" with the name of the current buffer, + since it reloads that buffer. + Does not happen for a terminal window, because + it starts in Terminal-Job mode and Normal mode + commands won't work. Use |TerminalOpen| instead. + *BufWinLeave* +BufWinLeave Before a buffer is removed from a window. + Not when it's still visible in another window. + Also triggered when exiting. It's triggered + before BufUnload or BufHidden. + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being unloaded "". + When exiting and v:dying is 2 or more this + event is not triggered. + *BufWipeout* +BufWipeout Before completely deleting a buffer. The + BufUnload and BufDelete events may be called + first (if the buffer was loaded and was in the + buffer list). Also used just before a buffer + is renamed (also when it's not in the buffer + list). + NOTE: When this autocommand is executed, the + current buffer "%" may be different from the + buffer being deleted "". + Don't change to another buffer, it will cause + problems. + *BufWrite* *BufWritePre* +BufWrite or BufWritePre Before writing the whole buffer to a file. + *BufWriteCmd* +BufWriteCmd Before writing the whole buffer to a file. + Should do the writing of the file and reset + 'modified' if successful, unless '+' is in + 'cpo' and writing to another file |cpo-+|. + The buffer contents should not be changed. + When the command resets 'modified' the undo + information is adjusted to mark older undo + states as 'modified', like |:write| does. + |Cmd-event| + *BufWritePost* +BufWritePost After writing the whole buffer to a file + (should undo the commands for BufWritePre). + *CmdUndefined* +CmdUndefined When a user command is used but it isn't + defined. Useful for defining a command only + when it's used. The pattern is matched + against the command name. Both and + are set to the name of the command. + NOTE: Autocompletion won't work until the + command is defined. An alternative is to + always define the user command and have it + invoke an autoloaded function. See |autoload|. + *CmdlineChanged* +CmdlineChanged After a change was made to the text in the + command line. Be careful not to mess up + the command line, it may cause Vim to lock up. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *CmdlineEnter* +CmdlineEnter After moving the cursor to the command line, + where the user can type a command or search + string; including non-interactive use of ":" + in a mapping, but not when using ||. + The pattern is matched against the character + representing the type of command-line. + |cmdwin-char| + is set to a single character, + indicating the type of command-line. + *CmdlineLeave* +CmdlineLeave Before leaving the command line; including + non-interactive use of ":" in a mapping, but + not when using ||. + Also when abandoning the command line, after + typing CTRL-C or . + When the commands result in an error the + command line is still executed. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *CmdwinEnter* +CmdwinEnter After entering the command-line window. + Useful for setting options specifically for + this special type of window. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *CmdwinLeave* +CmdwinLeave Before leaving the command-line window. + Useful to clean up any global setting done + with CmdwinEnter. + is set to a single character, + indicating the type of command-line. + |cmdwin-char| + *ColorScheme* +ColorScheme After loading a color scheme. |:colorscheme| + Not triggered if the color scheme is not + found. + The pattern is matched against the + colorscheme name. can be used for the + name of the actual file where this option was + set, and for the new colorscheme + name. + + *ColorSchemePre* +ColorSchemePre Before loading a color scheme. |:colorscheme| + Useful to setup removing things added by a + color scheme, before another one is loaded. +CompleteChanged *CompleteChanged* + After each time the Insert mode completion + menu changed. Not fired on popup menu hide, + use |CompleteDonePre| or |CompleteDone| for + that. Never triggered recursively. + + Sets these |v:event| keys: + completed_item See |complete-items|. + height nr of items visible + width screen cells + row top screen row + col leftmost screen column + size total nr of items + scrollbar TRUE if visible + + It is not allowed to change the text |textlock|. + + The size and position of the popup are also + available by calling |pum_getpos()|. + + *CompleteDonePre* +CompleteDonePre After Insert mode completion is done. Either + when something was completed or abandoning + completion. |ins-completion| + |complete_info()| can be used, the info is + cleared after triggering CompleteDonePre. + The |v:completed_item| variable contains + information about the completed item. + + *CompleteDone* +CompleteDone After Insert mode completion is done. Either + when something was completed or abandoning + completion. |ins-completion| + |complete_info()| cannot be used, the info is + cleared before triggering CompleteDone. Use + CompleteDonePre if you need it. + The |v:completed_item| variable contains + information about the completed item. + + *CursorHold* +CursorHold When the user doesn't press a key for the time + specified with 'updatetime'. Not triggered + until the user has pressed a key (i.e. doesn't + fire every 'updatetime' ms if you leave Vim to + make some coffee. :) See |CursorHold-example| + for previewing tags. + This event is only triggered in Normal mode. + It is not triggered when waiting for a command + argument to be typed, or a movement after an + operator. + While recording the CursorHold event is not + triggered. |q| + ** + Internally the autocommand is triggered by the + key. In an expression mapping + |getchar()| may see this character. + + Note: Interactive commands cannot be used for + this event. There is no hit-enter prompt, + the screen is updated directly (when needed). + Note: In the future there will probably be + another option to set the time. + Hint: to force an update of the status lines + use: > + :let &ro = &ro +< {only on Amiga, Unix, Win32 and all GUI + versions} + *CursorHoldI* +CursorHoldI Just like CursorHold, but in Insert mode. + Not triggered when waiting for another key, + e.g. after CTRL-V, and not when in CTRL-X mode + |insert_expand|. + + *CursorMoved* +CursorMoved After the cursor was moved in Normal or Visual + mode. Also when the text of the cursor line + has been changed, e.g., with "x", "rx" or "p". + Not always triggered when there is typeahead, + while executing commands in a script file, + when an operator is pending or when moving to + another window while remaining at the same + cursor position. + For an example see |match-parens|. + Note: This can not be skipped with + `:noautocmd`. + Careful: This is triggered very often, don't + do anything that the user does not expect or + that is slow. + *CursorMovedI* +CursorMovedI After the cursor was moved in Insert mode. + Not triggered when the popup menu is visible. + Otherwise the same as CursorMoved. + *DiffUpdated* +DiffUpdated After diffs have been updated. Depending on + what kind of diff is being used (internal or + external) this can be triggered on every + change or when doing |:diffupdate|. + *DirChangedPre* +DirChangedPre The working directory is going to be changed, + as with |DirChanged|. The pattern is like + with |DirChanged|. The new directory can be + found in v:event.directory. + *DirChanged* +DirChanged The working directory has changed in response + to the |:cd| or |:tcd| or |:lcd| commands, or + as a result of the 'autochdir' option. + The pattern can be: + "window" to trigger on `:lcd` + "tabpage" to trigger on `:tcd` + "global" to trigger on `:cd` + "auto" to trigger on 'autochdir'. + "drop" to trigger on editing a file + is set to the new directory name. + *EncodingChanged* +EncodingChanged Fires off after the 'encoding' option has been + changed. Useful to set up fonts, for example. + *ExitPre* +ExitPre When using `:quit`, `:wq` in a way it makes + Vim exit, or using `:qall`, just after + |QuitPre|. Can be used to close any + non-essential window. Exiting may still be + cancelled if there is a modified buffer that + isn't automatically saved, use |VimLeavePre| + for really exiting. + *FileAppendCmd* +FileAppendCmd Before appending to a file. Should do the + appending to the file. Use the '[ and '] + marks for the range of lines. |Cmd-event| + *FileAppendPost* +FileAppendPost After appending to a file. + *FileAppendPre* +FileAppendPre Before appending to a file. Use the '[ and '] + marks for the range of lines. + *FileChangedRO* +FileChangedRO Before making the first change to a read-only + file. Can be used to check-out the file from + a source control system. Not triggered when + the change was caused by an autocommand. + This event is triggered when making the first + change in a buffer or the first change after + 'readonly' was set, just before the change is + applied to the text. + WARNING: If the autocommand moves the cursor + the effect of the change is undefined. + *E788* + It is not allowed to change to another buffer + here. You can reload the buffer but not edit + another one. + *E881* + If the number of lines changes saving for undo + may fail and the change will be aborted. + *FileChangedShell* +FileChangedShell When Vim notices that the modification time of + a file has changed since editing started. + Also when the file attributes of the file + change or when the size of the file changes. + |timestamp| + Mostly triggered after executing a shell + command, but also with a |:checktime| command + or when gvim regains input focus. + This autocommand is triggered for each changed + file. It is not used when 'autoread' is set + and the buffer was not changed. If a + FileChangedShell autocommand is present the + warning message and prompt is not given. + The |v:fcs_reason| variable is set to indicate + what happened and |v:fcs_choice| can be used + 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 "". + NOTE: The commands must not change the current + buffer, jump to another buffer or delete a + buffer. *E246* *E811* + NOTE: This event never nests, to avoid an + endless loop. This means that while executing + commands for the FileChangedShell event no + other FileChangedShell event will be + triggered. + *FileChangedShellPost* +FileChangedShellPost After handling a file that was changed outside + of Vim. Can be used to update the statusline. + *FileEncoding* +FileEncoding Obsolete. It still works and is equivalent + to |EncodingChanged|. + *FileReadCmd* +FileReadCmd Before reading a file with a ":read" command. + Should do the reading of the file. |Cmd-event| + *FileReadPost* +FileReadPost After reading a file with a ":read" command. + Note that Vim sets the '[ and '] marks to the + first and last line of the read. This can be + used to operate on the lines just read. + *FileReadPre* +FileReadPre Before reading a file with a ":read" command. + *FileType* +FileType When the 'filetype' option has been set. The + pattern is matched against the filetype. + can be used for the name of the file + where this option was set, and for + the new value of 'filetype'. Navigating to + another window or buffer is not allowed. + See |filetypes|. + *FileWriteCmd* +FileWriteCmd Before writing to a file, when not writing the + whole buffer. Should do the writing to the + file. Should not change the buffer. Use the + '[ and '] marks for the range of lines. + |Cmd-event| + *FileWritePost* +FileWritePost After writing to a file, when not writing the + whole buffer. + *FileWritePre* +FileWritePre Before writing to a file, when not writing the + whole buffer. Use the '[ and '] marks for the + range of lines. + *FilterReadPost* +FilterReadPost After reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer as with FilterReadPre. + Not triggered when 'shelltemp' is off. + *FilterReadPre* *E135* +FilterReadPre Before reading a file from a filter command. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + Not triggered when 'shelltemp' is off. + *FilterWritePost* +FilterWritePost After writing a file for a filter command or + making a diff with an external diff (see + |DiffUpdated| for internal diff). + Vim checks the pattern against the name of + the current buffer as with FilterWritePre. + Not triggered when 'shelltemp' is off. + *FilterWritePre* +FilterWritePre Before writing a file for a filter command or + making a diff with an external diff. + Vim checks the pattern against the name of + the current buffer, not the name of the + temporary file that is the output of the + filter command. + Not triggered when 'shelltemp' is off. + *FocusGained* +FocusGained When Vim got input focus. Only for the GUI + version and a few console versions where this + can be detected. + *FocusLost* +FocusLost When Vim lost input focus. Only for the GUI + version and a few console versions where this + can be detected. May also happen when a + dialog pops up. + *FuncUndefined* +FuncUndefined When a user function is used but it isn't + defined. Useful for defining a function only + when it's used. The pattern is matched + against the function name. Both and + are set to the name of the function. + Not triggered when compiling a |Vim9| + function. + NOTE: When writing Vim scripts a better + alternative is to use an autoloaded function. + See |autoload-functions|. + *GUIEnter* +GUIEnter After starting the GUI successfully, and after + opening the window. It is triggered before + VimEnter when using gvim. Can be used to + position the window from a .gvimrc file: > + :autocmd GUIEnter * winpos 100 50 +< *GUIFailed* +GUIFailed After starting the GUI failed. Vim may + continue to run in the terminal, if possible + (only on Unix and alikes, when connecting the + X server fails). You may want to quit Vim: > + :autocmd GUIFailed * qall +< *InsertChange* +InsertChange When typing while in Insert or + Replace mode. The |v:insertmode| variable + indicates the new mode. + Be careful not to move the cursor or do + anything else that the user does not expect. + *InsertCharPre* +InsertCharPre When a character is typed in Insert mode, + before inserting the char. + The |v:char| variable indicates the char typed + and can be changed during the event to insert + a different character. When |v:char| is set + to more than one character this text is + inserted literally. + It is not allowed to change the text |textlock|. + The event is not triggered when 'paste' is + set. {only with the +eval feature} + *InsertEnter* +InsertEnter Just before starting Insert mode. Also for + Replace mode and Virtual Replace mode. The + |v:insertmode| variable indicates the mode. + Be careful not to do anything else that the + user does not expect. + The cursor is restored afterwards. If you do + not want that set |v:char| to a non-empty + string. + *InsertLeavePre* +InsertLeavePre Just before leaving Insert mode. Also when + using CTRL-O |i_CTRL-O|. Be careful not to + change mode or use `:normal`, it will likely + cause trouble. + *InsertLeave* +InsertLeave Just after leaving Insert mode. Also when + using CTRL-O |i_CTRL-O|. But not for |i_CTRL-C|. + *MenuPopup* +MenuPopup Just before showing the popup menu (under the + right mouse button). Useful for adjusting the + menu for what is under the cursor or mouse + pointer. + The pattern is matched against one or two + characters representing the mode: + n Normal + v Visual + o Operator-pending + i Insert + c Command line + tl Terminal + *ModeChanged* +ModeChanged After changing the mode. The pattern is + matched against `'old_mode:new_mode'`, for + example match against `*:c*` to simulate + |CmdlineEnter|. + The following values of |v:event| are set: + old_mode The mode before it changed. + new_mode The new mode as also returned + by |mode()| called with a + non-zero argument. + When ModeChanged is triggered, old_mode will + have the value of new_mode when the event was + last triggered. + This will be triggered on every minor mode + change. + Usage example to use relative line numbers + when entering Visual mode: > + :au ModeChanged [vV\x16]*:* let &l:rnu = mode() =~# '^[vV\x16]' + :au ModeChanged *:[vV\x16]* let &l:rnu = mode() =~# '^[vV\x16]' + :au WinEnter,WinLeave * let &l:rnu = mode() =~# '^[vV\x16]' +< *OptionSet* +OptionSet After setting an option. The pattern is + matched against the long option name. + || indicates what option has been set. + + |v:option_type| indicates whether it's global + or local scoped. + |v:option_command| indicates what type of + set/let command was used (follow the tag to + see the table). + |v:option_new| indicates the newly set value. + |v:option_oldlocal| has the old local value. + |v:option_oldglobal| has the old global value. + |v:option_old| indicates the old option value. + + |v:option_oldlocal| is only set when |:set| + or |:setlocal| or a |modeline| was used to set + the option. Similarly |v:option_oldglobal| is + only set when |:set| or |:setglobal| was used. + + This does not set ||, you could use + |bufnr()|. + + Note that when setting a |global-local| string + option with |:set|, then |v:option_old| is the + old global value. However, for all other kinds + of options (local string options, global-local + number options, ...) it is the old local + value. + + OptionSet is not triggered on startup and for + the 'key' option for obvious reasons. + + Usage example: Check for the existence of the + directory in the 'backupdir' and 'undodir' + options, create the directory if it doesn't + exist yet. + + Note: It's a bad idea to reset an option + during this autocommand, this may break a + plugin. You can always use `:noa` to prevent + triggering this autocommand. + + When using |:set| in the autocommand the event + is not triggered again. + *QuickFixCmdPre* +QuickFixCmdPre Before a quickfix command is run (|:make|, + |:lmake|, |:grep|, |:lgrep|, |:grepadd|, + |:lgrepadd|, |:vimgrep|, |:lvimgrep|, + |:vimgrepadd|, |:lvimgrepadd|, |:cscope|, + |:cfile|, |:cgetfile|, |:caddfile|, |:lfile|, + |:lgetfile|, |:laddfile|, |:helpgrep|, + |:lhelpgrep|, |:cexpr|, |:cgetexpr|, + |:caddexpr|, |:cbuffer|, |:cgetbuffer|, + |:caddbuffer|). + The pattern is matched against the command + being run. When |:grep| is used but 'grepprg' + is set to "internal" it still matches "grep". + This command cannot be used to set the + 'makeprg' and 'grepprg' variables. + If this command causes an error, the quickfix + command is not executed. + *QuickFixCmdPost* +QuickFixCmdPost Like QuickFixCmdPre, but after a quickfix + command is run, before jumping to the first + location. For |:cfile| and |:lfile| commands + it is run after the error file is read and + before moving to the first error. + See |QuickFixCmdPost-example|. + *QuitPre* +QuitPre When using `:quit`, `:wq` or `:qall`, before + deciding whether it closes the current window + or quits Vim. For `:wq` the buffer is written + before QuitPre is triggered. Can be used to + close any non-essential window if the current + window is the last ordinary window. + Also see |ExitPre|. + *RemoteReply* +RemoteReply When a reply from a Vim that functions as + server was received |server2client()|. The + pattern is matched against the {serverid}. + is equal to the {serverid} from which + the reply was sent, and is the actual + reply string. + Note that even if an autocommand is defined, + the reply should be read with |remote_read()| + to consume it. + *SafeState* +SafeState When nothing is pending, going to wait for the + user to type a character. + This will not be triggered when: + - an operator is pending + - a register was entered with "r + - halfway executing a command + - executing a mapping + - there is typeahead + - Insert mode completion is active + - Command line completion is active + You can use `mode()` to find out what state + Vim is in. That may be: + - VIsual mode + - Normal mode + - Insert mode + - Command-line mode + Depending on what you want to do, you may also + check more with `state()`, e.g. whether the + screen was scrolled for messages. + *SafeStateAgain* +SafeStateAgain Like SafeState but after processing any + messages and invoking callbacks. This may be + triggered often, don't do something that takes + time. + + *SessionLoadPost* +SessionLoadPost After loading the session file created using + the |:mksession| command. + *ShellCmdPost* +ShellCmdPost After executing a shell command with |:!cmd|, + |:shell|, |:make| and |:grep|. Can be used to + check for any changed files. + *ShellFilterPost* +ShellFilterPost After executing a shell command with + ":{range}!cmd", ":w !cmd" or ":r !cmd". + Can be used to check for any changed files. + *SourcePre* +SourcePre Before sourcing a Vim script. |:source| + is the name of the file being sourced. + *SourcePost* +SourcePost After sourcing a Vim script. |:source| + is the name of the file being sourced. + Not triggered when sourcing was interrupted. + Also triggered after a SourceCmd autocommand + was triggered. + *SourceCmd* +SourceCmd When sourcing a Vim script. |:source| + is the name of the file being sourced. + The autocommand must source this file. + |Cmd-event| + *SpellFileMissing* +SpellFileMissing When trying to load a spell checking file and + it can't be found. The pattern is matched + against the language. is the + language, 'encoding' also matters. See + |spell-SpellFileMissing|. + *StdinReadPost* +StdinReadPost After reading from the stdin into the buffer, + before executing the modelines. Only used + when the "-" argument was used when Vim was + started |--|. + *StdinReadPre* +StdinReadPre Before reading from stdin into the buffer. + Only used when the "-" argument was used when + Vim was started |--|. + *SwapExists* +SwapExists Detected an existing swap file when starting + to edit a file. Only when it is possible to + select a way to handle the situation, when Vim + would ask the user what to do. + The |v:swapname| variable holds the name of + the swap file found, the file being + edited. |v:swapcommand| may contain a command + to be executed in the opened file. + The commands should set the |v:swapchoice| + variable to a string with one character to + tell Vim what should be done next: + 'o' open read-only + 'e' edit the file anyway + 'r' recover + 'd' delete the swap file + 'q' quit, don't edit the file + 'a' abort, like hitting CTRL-C + When set to an empty string the user will be + asked, as if there was no SwapExists autocmd. + *E812* + It is not allowed to change to another buffer, + change a buffer name or change directory + here. + {only available with the +eval feature} + *Syntax* +Syntax When the 'syntax' option has been set. The + pattern is matched against the syntax name. + can be used for the name of the file + where this option was set, and for + the new value of 'syntax'. + See |:syn-on|. + *TabClosed* +TabClosed After closing a tab page. + *TabEnter* +TabEnter Just after entering a tab page. |tab-page| + After triggering the WinEnter and before + triggering the BufEnter event. + *TabLeave* +TabLeave Just before leaving a tab page. |tab-page| + A WinLeave event will have been triggered + first. + *TabNew* +TabNew When a tab page was created. |tab-page| + A WinEnter event will have been triggered + first, TabEnter follows. + *TermChanged* +TermChanged After the value of 'term' has changed. Useful + for re-loading the syntax file to update the + colors, fonts and other terminal-dependent + settings. Executed for all loaded buffers. + *TerminalOpen* +TerminalOpen Just after a terminal buffer was created, with + `:terminal` or |term_start()|. This event is + triggered even if the buffer is created + without a window, with the ++hidden option. + *TerminalWinOpen* +TerminalWinOpen Just after a terminal buffer was created, with + `:terminal` or |term_start()|. This event is + triggered only if the buffer is created + with a window. Can be used to set window + local options for the terminal window. + *TermResponse* +TermResponse After the response to |t_RV| is received from + the terminal. The value of |v:termresponse| + can be used to do things depending on the + terminal version. 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. + *TextChanged* +TextChanged After a change was made to the text in the + current buffer in Normal mode. That is after + |b:changedtick| has changed (also when that + happened before the TextChanged autocommand + was defined). + Not triggered when there is typeahead or when + an operator is pending. + Note: This can not be skipped with + `:noautocmd`. + Careful: This is triggered very often, don't + do anything that the user does not expect or + that is slow. + *TextChangedI* +TextChangedI After a change was made to the text in the + current buffer in Insert mode. + Not triggered when the popup menu is visible. + Otherwise the same as TextChanged. + *TextChangedP* +TextChangedP After a change was made to the text in the + current buffer in Insert mode, only when the + popup menu is visible. Otherwise the same as + TextChanged. + *TextChangedT* +TextChangedT After a change was made to the text in the + current buffer in Terminal mode. + Otherwise the same as TextChanged. + *TextYankPost* +TextYankPost After text has been yanked or deleted in the + current buffer. The following values of + |v:event| can be used to determine the operation + that triggered this autocmd: + inclusive TRUE if the motion is + |inclusive| else the motion is + |exclusive|. + operator The operation performed. + regcontents Text that was stored in the + register, as a list of lines, + like with: > + getreg(r, 1, 1) +< regname Name of the register or empty + string for the unnamed + register, see |registers|. + regtype Type of the register, see + |getregtype()|. + visual True if the operation is + performed on a |Visual| area. + Not triggered when |quote_| is used nor when + called recursively. + It is not allowed to change the buffer text, + see |textlock|. *E1064* + {only when compiled with the +eval feature} + + *User* +User Never executed automatically. To be used for + autocommands that are only executed with + ":doautocmd". + Note that when `:doautocmd User MyEvent` is + used while there are no matching autocommands, + you will get an error. If you don't want + that, either check whether an autocommand is + defined using `exists('#User#MyEvent')` or + define a dummy autocommand yourself. + Example: > + if exists('#User#MyEvent') + doautocmd User MyEvent + endif +< + *SigUSR1* +SigUSR1 After the SIGUSR1 signal has been detected. + Could be used if other ways of notifying Vim + are not feasible. E.g. to check for the + result of a build that takes a long time, or + when a motion sensor is triggered. + {only on Unix} + + *UserGettingBored* +UserGettingBored When the user presses the same key 42 times. + Just kidding! :-) + *VimEnter* +VimEnter After doing all the startup stuff, including + loading .vimrc files, executing the "-c cmd" + arguments, creating all windows and loading + the buffers in them. + Just before this event is triggered the + |v:vim_did_enter| variable is set, so that you + can do: > + if v:vim_did_enter + call s:init() + else + au VimEnter * call s:init() + endif +< *VimLeave* +VimLeave Before exiting Vim, just after writing the + .viminfo file. Executed only once, like + VimLeavePre. + To detect an abnormal exit use |v:dying|. + When v:dying is 2 or more this event is not + triggered. + To get the exit code use |v:exiting|. + *VimLeavePre* +VimLeavePre Before exiting Vim, just before writing the + .viminfo file. This is executed only once, + if there is a match with the name of what + happens to be the current buffer when exiting. + Mostly useful with a "*" pattern. > + :autocmd VimLeavePre * call CleanupStuff() +< To detect an abnormal exit use |v:dying|. + When v:dying is 2 or more this event is not + triggered. + To get the exit code use |v:exiting|. + *VimResized* +VimResized After the Vim window was resized, thus 'lines' + and/or 'columns' changed. Not when starting + up though. + *VimResume* +VimResume When the Vim instance is resumed after being + suspended and |VimSuspend| was triggered. + Useful for triggering |:checktime| and ensure + the buffers content did not change while Vim + was suspended: > + :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. + *WinClosed* +WinClosed When closing a window, just before it is + removed from the window layout. The pattern + is matched against the |window-ID|. Both + and are set to the + |window-ID|. Non-recursive (event cannot + trigger itself). + *WinEnter* +WinEnter After entering another window. Not done for + the first window, when Vim has just started. + Useful for setting the window height. + If the window is for another buffer, Vim + executes the BufEnter autocommands after the + WinEnter autocommands. + Note: For split and tabpage commands the + WinEnter event is triggered after the split + or tab command but before the file is loaded. + + *WinLeave* +WinLeave Before leaving a window. If the window to be + entered next is for a different buffer, Vim + executes the BufLeave autocommands before the + WinLeave autocommands (but not for ":new"). + Not used for ":qa" or ":q" when exiting Vim. + + *WinNew* +WinNew When a new window was created. Not done for + the first window, when Vim has just started. + Before a WinEnter event. + + *WinScrolled* +WinScrolled After any window in the current tab page + scrolled the text (horizontally or vertically) + or changed width or height. See + |win-scrolled-resized|. + + The pattern is matched against the |window-ID| + of the first window that scrolled or resized. + Both and are set to the + |window-ID|. + + |v:event| is set with information about size + and scroll changes. |WinScrolled-event| + + Only starts triggering after startup finished + and the first screen redraw was done. + Does not trigger when defining the first + WinScrolled or WinResized event, but may + trigger when adding more. + + Non-recursive: the event will not trigger + while executing commands for the WinScrolled + event. However, if the command causes a + window to scroll or change size, then another + WinScrolled event will be triggered later. + + + *WinResized* +WinResized After a window in the current tab page changed + width or height. + See |win-scrolled-resized|. + + |v:event| is set with information about size + changes. |WinResized-event| + + Same behavior as |WinScrolled| for the + pattern, triggering and recursiveness. + +============================================================================== +6. Patterns *autocmd-patterns* *{aupat}* + +The {aupat} argument of `:autocmd` can be a comma-separated list. This works as +if the command was given with each pattern separately. Thus this command: > + :autocmd BufRead *.txt,*.info set et +Is equivalent to: > + :autocmd BufRead *.txt set et + :autocmd BufRead *.info set et + +The file pattern {aupat} is tested for a match against the file name in one of +two ways: +1. When there is no '/' in the pattern, Vim checks for a match against only + the tail part of the file name (without its leading directory path). +2. When there is a '/' in the pattern, Vim checks for a match against both the + short file name (as you typed it) and the full file name (after expanding + it to a full path and resolving symbolic links). + +The special pattern or is used for buffer-local +autocommands |autocmd-buflocal|. This pattern is not matched against the name +of a buffer. + +Examples: > + :autocmd BufRead *.txt set et +Set the 'et' option for all text files. > + + :autocmd BufRead /vim/src/*.c set cindent +Set the 'cindent' option for C files in the /vim/src directory. > + + :autocmd BufRead /tmp/*.c set ts=5 +If you have a link from "/tmp/test.c" to "/home/nobody/vim/src/test.c", and +you start editing "/tmp/test.c", this autocommand will match. + +Note: To match part of a path, but not from the root directory, use a '*' as +the first character. Example: > + :autocmd BufRead */doc/*.txt set tw=78 +This autocommand will for example be executed for "/tmp/doc/xx.txt" and +"/usr/home/piet/doc/yy.txt". The number of directories does not matter here. + + +The file name that the pattern is matched against is after expanding +wildcards. Thus if you issue this command: > + :e $ROOTDIR/main.$EXT +The argument is first expanded to: > + /usr/root/main.py +Before it's matched with the pattern of the autocommand. Careful with this +when using events like FileReadCmd, the value of may not be what you +expect. + + +Environment variables can be used in a pattern: > + :autocmd BufRead $VIMRUNTIME/doc/*.txt set expandtab +And ~ can be used for the home directory (if $HOME is defined): > + :autocmd BufWritePost ~/.vimrc so ~/.vimrc + :autocmd BufRead ~archive/* set readonly +The environment variable is expanded when the autocommand is defined, not when +the autocommand is executed. This is different from the command! + + *file-pattern* +The pattern is interpreted like mostly used in file names: + * matches any sequence of characters; Unusual: includes path + separators + ? matches any single character + \? matches a '?' + . matches a '.' + ~ matches a '~' + , separates patterns + \, matches a ',' + { } like \( \) in a |pattern| + , inside { }: like \| in a |pattern| + \} literal } + \{ literal { + \\\{n,m\} like \{n,m} in a |pattern| + \ special meaning like in a |pattern| + [ch] matches 'c' or 'h' + [^ch] match any character but 'c' and 'h' + +Note that for all systems the '/' character is used for path separator (even +for MS-Windows). This was done because the backslash is difficult to use in a +pattern and to make the autocommands portable across different systems. + +It is possible to use |pattern| items, but they may not work as expected, +because of the translation done for the above. + + *autocmd-changes* +Matching with the pattern is done when an event is triggered. Changing the +buffer name in one of the autocommands, or even deleting the buffer, does not +change which autocommands will be executed. Example: > + + au BufEnter *.foo bdel + au BufEnter *.foo set modified + +This will delete the current buffer and then set 'modified' in what has become +the current buffer instead. Vim doesn't take into account that "*.foo" +doesn't match with that buffer name. It matches "*.foo" with the name of the +buffer at the moment the event was triggered. + +However, buffer-local autocommands will not be executed for a buffer that has +been wiped out with |:bwipe|. After deleting the buffer with |:bdel| the +buffer actually still exists (it becomes unlisted), thus the autocommands are +still executed. + +============================================================================== +7. Buffer-local autocommands *autocmd-buflocal* *autocmd-buffer-local* + ** ** *E680* + +Buffer-local autocommands are attached to a specific buffer. They are useful +if the buffer does not have a name and when the name does not match a specific +pattern. But it also means they must be explicitly added to each buffer. + +Instead of a pattern buffer-local autocommands use one of these forms: + current buffer + buffer number 99 + using (only when executing autocommands) + || + +Examples: > + :au CursorHold echo 'hold' + :au CursorHold echo 'hold' + :au BufNewFile * au CursorHold echo 'hold' + +All the commands for autocommands also work with buffer-local autocommands, +simply use the special string instead of the pattern. Examples: > + :au! * " remove buffer-local autocommands for + " current buffer + :au! * " remove buffer-local autocommands for + " buffer #33 + :bufdo :au! CursorHold " remove autocmd for given event for all + " buffers + :au * " list buffer-local autocommands for + " current buffer + +Note that when an autocommand is defined for the current buffer, it is stored +with the buffer number. Thus it uses the form "", where 12 is the +number of the current buffer. You will see this when listing autocommands, +for example. + +To test for presence of buffer-local autocommands use the |exists()| function +as follows: > + :if exists("#CursorHold#") | ... | endif + :if exists("#CursorHold#") | ... | endif " for current buffer + +When a buffer is wiped out its buffer-local autocommands are also gone, of +course. Note that when deleting a buffer, e.g., with ":bdel", it is only +unlisted, the autocommands are still present. In order to see the removal of +buffer-local autocommands: > + :set verbose=6 + +It is not possible to define buffer-local autocommands for a non-existent +buffer. + +============================================================================== +8. Groups *autocmd-groups* + +Autocommands can be put together in a group. This is useful for removing or +executing a group of autocommands. For example, all the autocommands for +syntax highlighting are put in the "highlight" group, to be able to execute +":doautoall highlight BufRead" when the GUI starts. + +When no specific group is selected, Vim uses the default group. The default +group does not have a name. You cannot execute the autocommands from the +default group separately; you can execute them only by executing autocommands +for all groups. + +Normally, when executing autocommands automatically, Vim uses the autocommands +for all groups. The group only matters when executing autocommands with +":doautocmd" or ":doautoall", or when defining or deleting autocommands. + +The group name can contain any characters except white space. The group name +"end" is reserved (also in uppercase). + +The group name is case sensitive. Note that this is different from the event +name! + + *:aug* *:augroup* +:aug[roup] {name} Define the autocmd group name for the + following ":autocmd" commands. The name "end" + or "END" selects the default group. + To avoid confusion, the name should be + different from existing {event} names, as this + most likely will not do what you intended. + + *:augroup-delete* *E367* *W19* *E936* +:aug[roup]! {name} Delete the autocmd group {name}. Don't use + this if there is still an autocommand using + this group! You will get a warning if doing + it anyway. When the group is the current + group you will get error E936. + +To enter autocommands for a specific group, use this method: +1. Select the group with ":augroup {name}". +2. Delete any old autocommands with ":au!". +3. Define the autocommands. +4. Go back to the default group with "augroup END". + +Example: > + :augroup uncompress + : au! + : au BufEnter *.gz %!gunzip + :augroup END + +This prevents having the autocommands defined twice (e.g., after sourcing the +.vimrc file again). + + *FileExplorer* +There is one group that is recognized by Vim: FileExplorer. If this group +exists Vim assumes that editing a directory is possible and will trigger a +plugin that lists the files in that directory. This is used by the |netrw| +plugin. This allows you to do: > + browse edit + +============================================================================== +9. Executing autocommands *autocmd-execute* + +Vim can also execute Autocommands non-automatically. This is useful if you +have changed autocommands, or when Vim has executed the wrong autocommands +(e.g., the file pattern match was wrong). + +Note that the 'eventignore' option applies here too. Events listed in this +option will not cause any commands to be executed. + + *:do* *:doau* *:doaut* *:doautocmd* *E217* +:do[autocmd] [] [group] {event} [fname] + Apply the autocommands matching [fname] (default: + current file name) for {event} to the current buffer. + You can use this when the current file name does not + match the right pattern, after changing settings, or + to execute autocommands for a certain event. + It's possible to use this inside an autocommand too, + so you can base the autocommands for one extension on + another extension. Example: > + :au BufEnter *.cpp so ~/.vimrc_cpp + :au BufEnter *.cpp doau BufEnter x.c +< Be careful to avoid endless loops. See + |autocmd-nested|. + + When the [group] argument is not given, Vim executes + the autocommands for all groups. When the [group] + argument is included, Vim executes only the matching + autocommands for that group. Note: if you use an + undefined group name, Vim gives you an error message. + ** + After applying the autocommands the modelines are + processed, so that their settings overrule the + settings from autocommands, like what happens when + editing a file. This is skipped when the + argument is present. You probably want to use + for events that are not used when loading + a buffer, such as |User|. + Processing modelines is also skipped when no + matching autocommands were executed. + + *:doautoa* *:doautoall* +:doautoa[ll] [] [group] {event} [fname] + Like ":doautocmd", but apply the autocommands to each + loaded buffer. The current buffer is done last. + + Note that [fname] is used to select the autocommands, + not the buffers to which they are applied. Example: > + augroup mine + autocmd! + autocmd FileType * echo expand('') + augroup END + doautoall mine FileType Loaded-Buffer +< Sourcing this script, you'll see as many + "Loaded-Buffer" echoed as there are loaded buffers. + + Careful: Don't use this for autocommands that delete a + buffer, change to another buffer or change the + contents of a buffer; the result is unpredictable. + This command is intended for autocommands that set + options, change highlighting, and things like that. + +============================================================================== +10. Using autocommands *autocmd-use* + +For WRITING FILES there are four possible sets of events. Vim uses only one +of these sets for a write command: + +BufWriteCmd BufWritePre BufWritePost writing the whole buffer + FilterWritePre FilterWritePost writing to filter temp file +FileAppendCmd FileAppendPre FileAppendPost appending to a file +FileWriteCmd FileWritePre FileWritePost any other file write + +When there is a matching "*Cmd" autocommand, it is assumed it will do the +writing. No further writing is done and the other events are not triggered. +|Cmd-event| + +Note that the *WritePost commands should undo any changes to the buffer that +were caused by the *WritePre commands; otherwise, writing the file will have +the side effect of changing the buffer. + +Before executing the autocommands, the buffer from which the lines are to be +written temporarily becomes the current buffer. Unless the autocommands +change the current buffer or delete the previously current buffer, the +previously current buffer is made the current buffer again. + +The *WritePre and *AppendPre autocommands must not delete the buffer from +which the lines are to be written. + +The '[ and '] marks have a special position: +- Before the *ReadPre event the '[ mark is set to the line just above where + the new lines will be inserted. +- Before the *ReadPost event the '[ mark is set to the first line that was + just read, the '] mark to the last line. +- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[ + mark is set to the first line that will be written, the '] mark to the last + line. +Careful: '[ and '] change when using commands that change the buffer. + +In commands which expect a file name, you can use "" for the file name +that is being read |:| (you can also use "%" for the current file +name). "" can be used for the buffer number of the currently effective +buffer. This also works for buffers that don't have a name. But it doesn't +work for files without a buffer (e.g., with ":r file"). + + *gzip-example* +Examples for reading and writing compressed files: > + :augroup gzip + : autocmd! + : autocmd BufReadPre,FileReadPre *.gz set bin + : autocmd BufReadPost,FileReadPost *.gz '[,']!gunzip + : autocmd BufReadPost,FileReadPost *.gz set nobin + : autocmd BufReadPost,FileReadPost *.gz execute ":doautocmd BufReadPost " .. expand("%:r") + : autocmd BufWritePost,FileWritePost *.gz !mv :r + : autocmd BufWritePost,FileWritePost *.gz !gzip :r + + : autocmd FileAppendPre *.gz !gunzip + : autocmd FileAppendPre *.gz !mv :r + : autocmd FileAppendPost *.gz !mv :r + : autocmd FileAppendPost *.gz !gzip :r + :augroup END + +The "gzip" group is used to be able to delete any existing autocommands with +":autocmd!", for when the file is sourced twice. + +(":r" is the file name without the extension, see |:_%:|) + +The commands executed for the BufNewFile, BufRead/BufReadPost, BufWritePost, +FileAppendPost and VimLeave events do not set or reset the changed flag of the +buffer. When you decompress the buffer with the BufReadPost autocommands, you +can still exit with ":q". When you use ":undo" in BufWritePost to undo the +changes made by BufWritePre commands, you can still do ":q" (this also makes +"ZZ" work). If you do want the buffer to be marked as modified, set the +'modified' option. + +To execute Normal mode commands from an autocommand, use the ":normal" +command. Use with care! If the Normal mode command is not finished, the user +needs to type characters (e.g., after ":normal m" you need to type a mark +name). + +If you want the buffer to be unmodified after changing it, reset the +'modified' option. This makes it possible to exit the buffer with ":q" +instead of ":q!". + + *autocmd-nested* *E218* +By default, autocommands do not nest. For example, if you use ":e" or ":w" in +an autocommand, Vim does not execute the BufRead and BufWrite autocommands for +those commands. If you do want this, use the "nested" flag for those commands +in which you want nesting. For example: > + :autocmd FileChangedShell *.c ++nested e! +The nesting is limited to 10 levels to get out of recursive loops. + +It's possible to use the ":au" command in an autocommand. This can be a +self-modifying command! This can be useful for an autocommand that should +execute only once. + +If you want to skip autocommands for one command, use the |:noautocmd| command +modifier or the 'eventignore' option. + +Note: When reading a file (with ":read file" or with a filter command) and the +last line in the file does not have an , Vim remembers this. At the next +write (with ":write file" or with a filter command), if the same line is +written again as the last line in a file AND 'binary' is set, Vim does not +supply an . This makes a filter command on the just read lines write the +same file as was read, and makes a write command on just filtered lines write +the same file as was read from the filter. For example, another way to write +a compressed file: > + + :autocmd FileWritePre *.gz set bin|'[,']!gzip + :autocmd FileWritePost *.gz undo|set nobin +< + *autocommand-pattern* +You can specify multiple patterns, separated by commas. Here are some +examples: > + + :autocmd BufRead * set tw=79 nocin ic infercase fo=2croq + :autocmd BufRead .letter set tw=72 fo=2tcrq + :autocmd BufEnter .letter set dict=/usr/lib/dict/words + :autocmd BufLeave .letter set dict= + :autocmd BufRead,BufNewFile *.c,*.h set tw=0 cin noic + :autocmd BufEnter *.c,*.h abbr FOR for (i = 0; i < 3; ++i){}O + :autocmd BufLeave *.c,*.h unabbr FOR + +For makefiles (makefile, Makefile, imakefile, makefile.unix, etc.): > + + :autocmd BufEnter ?akefile* set include=^s\=include + :autocmd BufLeave ?akefile* set include& + +To always start editing C files at the first function: > + + :autocmd BufRead *.c,*.h 1;/^{ + +Without the "1;" above, the search would start from wherever the file was +entered, rather than from the start of the file. + + *skeleton* *template* +To read a skeleton (template) file when opening a new file: > + + :autocmd BufNewFile *.c 0r ~/vim/skeleton.c + :autocmd BufNewFile *.h 0r ~/vim/skeleton.h + :autocmd BufNewFile *.java 0r ~/vim/skeleton.java + +To insert the current date and time in a *.html file when writing it: > + + :autocmd BufWritePre,FileWritePre *.html ks|call LastMod()|'s + :fun LastMod() + : if line("$") > 20 + : let l = 20 + : else + : let l = line("$") + : endif + : exe "1," .. l .. "g/Last modified: /s/Last modified: .*/Last modified: " .. + : \ strftime("%Y %b %d") + :endfun + +You need to have a line "Last modified: " in the first 20 lines +of the file for this to work. Vim replaces (and anything in the +same line after it) with the current date and time. Explanation: + ks mark current position with mark 's' + call LastMod() call the LastMod() function to do the work + 's return the cursor to the old position +The LastMod() function checks if the file is shorter than 20 lines, and then +uses the ":g" command to find lines that contain "Last modified: ". For those +lines the ":s" command is executed to replace the existing date with the +current one. The ":execute" command is used to be able to use an expression +for the ":g" and ":s" commands. The date is obtained with the strftime() +function. You can change its argument to get another date string. + +When entering :autocmd on the command-line, completion of events and command +names may be done (with , CTRL-D, etc.) where appropriate. + +Vim executes all matching autocommands in the order that you specify them. +It is recommended that your first autocommand be used for all files by using +"*" as the file pattern. This means that you can define defaults you like +here for any settings, and if there is another matching autocommand it will +override these. But if there is no other matching autocommand, then at least +your default settings are recovered (if entering this file from another for +which autocommands did match). Note that "*" will also match files starting +with ".", unlike Unix shells. + + *autocmd-searchpat* +Autocommands do not change the current search patterns. Vim saves the current +search patterns before executing autocommands then restores them after the +autocommands finish. This means that autocommands do not affect the strings +highlighted with the 'hlsearch' option. Within autocommands, you can still +use search patterns normally, e.g., with the "n" command. +If you want an autocommand to set the search pattern, such that it is used +after the autocommand finishes, use the ":let @/ =" command. +The search-highlighting cannot be switched off with ":nohlsearch" in an +autocommand. Use the 'h' flag in the 'viminfo' option to disable search- +highlighting when starting Vim. + + *Cmd-event* +When using one of the "*Cmd" events, the matching autocommands are expected to +do the file reading, writing or sourcing. This can be used when working with +a special kind of file, for example on a remote system. +CAREFUL: If you use these events in a wrong way, it may have the effect of +making it impossible to read or write the matching files! Make sure you test +your autocommands properly. Best is to use a pattern that will never match a +normal file name, for example "ftp://*". + +When defining a BufReadCmd it will be difficult for Vim to recover a crashed +editing session. When recovering from the original file, Vim reads only those +parts of a file that are not found in the swap file. Since that is not +possible with a BufReadCmd, use the |:preserve| command to make sure the +original file isn't needed for recovery. You might want to do this only when +you expect the file to be modified. + +For file read and write commands the |v:cmdarg| variable holds the "++enc=" +and "++ff=" argument that are effective. These should be used for the command +that reads/writes the file. The |v:cmdbang| variable is one when "!" was +used, zero otherwise. + +See the $VIMRUNTIME/plugin/netrwPlugin.vim for examples. + +============================================================================== +11. Disabling autocommands *autocmd-disable* + +To disable autocommands for some time use the 'eventignore' option. Note that +this may cause unexpected behavior, make sure you restore 'eventignore' +afterwards, using a |:try| block with |:finally|. + + *:noautocmd* *:noa* +To disable autocommands for just one command use the ":noautocmd" command +modifier. This will set 'eventignore' to "all" for the duration of the +following command. Example: > + + :noautocmd w fname.gz + +This will write the file without triggering the autocommands defined by the +gzip plugin. + +Note that some autocommands are not triggered right away, but only later. +This specifically applies to |CursorMoved| and |TextChanged|. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt new file mode 100644 index 0000000..9ac79c6 --- /dev/null +++ b/runtime/doc/builtin.txt @@ -0,0 +1,11226 @@ +*builtin.txt* For Vim version 9.1. Last change: 2024 Jan 05 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Builtin functions *builtin-functions* + +Note: Expression evaluation can be disabled at compile time, the builtin +functions are not available then. See |+eval| and |no-eval-feature|. + +For functions grouped by what they are used for see |function-list|. + +1. Overview |builtin-function-list| +2. Details |builtin-function-details| +3. Feature list |feature-list| +4. Matching a pattern in a String |string-match| + +============================================================================== +1. Overview *builtin-function-list* + +Use CTRL-] on the function name to jump to the full explanation. + +USAGE RESULT DESCRIPTION ~ + +abs({expr}) Float or Number absolute value of {expr} +acos({expr}) Float arc cosine of {expr} +add({object}, {item}) List/Blob append {item} to {object} +and({expr}, {expr}) Number bitwise AND +append({lnum}, {text}) Number append {text} below line {lnum} +appendbufline({expr}, {lnum}, {text}) + Number append {text} below line {lnum} + in buffer {expr} +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 +argv({nr} [, {winid}]) String {nr} entry of the argument list +argv([-1, {winid}]) List the argument list +asin({expr}) Float arc sine of {expr} +assert_beeps({cmd}) Number assert {cmd} causes a beep +assert_equal({exp}, {act} [, {msg}]) + Number assert {exp} is equal to {act} +assert_equalfile({fname-one}, {fname-two} [, {msg}]) + Number assert file contents are equal +assert_exception({error} [, {msg}]) + Number assert {error} is in v:exception +assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) + Number assert {cmd} fails +assert_false({actual} [, {msg}]) + Number assert {actual} is false +assert_inrange({lower}, {upper}, {actual} [, {msg}]) + Number assert {actual} is inside the range +assert_match({pat}, {text} [, {msg}]) + Number assert {pat} matches {text} +assert_nobeep({cmd}) Number assert {cmd} does not cause a beep +assert_notequal({exp}, {act} [, {msg}]) + Number assert {exp} is not equal {act} +assert_notmatch({pat}, {text} [, {msg}]) + Number assert {pat} not matches {text} +assert_report({msg}) Number report a test failure +assert_true({actual} [, {msg}]) Number assert {actual} is true +atan({expr}) Float arc tangent of {expr} +atan2({expr1}, {expr2}) Float arc tangent of {expr1} / {expr2} +autocmd_add({acmds}) Bool add a list of autocmds and groups +autocmd_delete({acmds}) Bool delete a list of autocmds and groups +autocmd_get([{opts}]) List return a list of autocmds +balloon_gettext() String current text in the balloon +balloon_show({expr}) none show {expr} inside the balloon +balloon_split({msg}) List split {msg} as used for a balloon +blob2list({blob}) List convert {blob} into a list of numbers +browse({save}, {title}, {initdir}, {default}) + String put up a file requester +browsedir({title}, {initdir}) String put up a directory requester +bufadd({name}) Number add a buffer to the buffer list +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} +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} +byteidx({expr}, {nr} [, {utf16}]) + Number byte index of {nr}'th char in {expr} +byteidxcomp({expr}, {nr} [, {utf16}]) + Number byte index of {nr}'th char in {expr} +call({func}, {arglist} [, {dict}]) + any call {func} with arguments {arglist} +ceil({expr}) Float round {expr} up +ch_canread({handle}) Number check if there is something to read +ch_close({handle}) none close {handle} +ch_close_in({handle}) none close in part of {handle} +ch_evalexpr({handle}, {expr} [, {options}]) + any evaluate {expr} on JSON {handle} +ch_evalraw({handle}, {string} [, {options}]) + any evaluate {string} on raw {handle} +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_log({msg} [, {handle}]) none write {msg} in the channel log file +ch_logfile({fname} [, {mode}]) none start logging channel activity +ch_open({address} [, {options}]) + Channel open a channel to {address} +ch_read({handle} [, {options}]) String read from {handle} +ch_readblob({handle} [, {options}]) + Blob read Blob from {handle} +ch_readraw({handle} [, {options}]) + String read raw from {handle} +ch_sendexpr({handle}, {expr} [, {options}]) + any send {expr} over JSON {handle} +ch_sendraw({handle}, {expr} [, {options}]) + any send {expr} over raw {handle} +ch_setoptions({handle}, {options}) + none set options for {handle} +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} +charclass({string}) Number character class of {string} +charcol({expr} [, {winid}]) Number column number of cursor or mark +charidx({string}, {idx} [, {countcc} [, {utf16}]]) + Number char index of byte {idx} in {string} +chdir({dir}) String change current working directory +cindent({lnum}) Number C indent for line {lnum} +clearmatches([{win}]) none clear all matches +col({expr} [, {winid}]) Number column byte index of cursor or mark +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 +confirm({msg} [, {choices} [, {default} [, {type}]]]) + Number number of choice picked by user +copy({expr}) any make a shallow copy of {expr} +cos({expr}) Float cosine of {expr} +cosh({expr}) Float hyperbolic cosine of {expr} +count({comp}, {expr} [, {ic} [, {start}]]) + Number count how many {expr} are in {comp} +cscope_connection([{num}, {dbpath} [, {prepend}]]) + Number checks existence of cscope connection +cursor({lnum}, {col} [, {off}]) + Number move cursor to {lnum}, {col}, {off} +cursor({list}) Number move cursor to position in {list} +debugbreak({pid}) Number interrupt process being debugged +deepcopy({expr} [, {noref}]) any make a full copy of {expr} +delete({fname} [, {flags}]) Number delete the file or directory {fname} +deletebufline({buf}, {first} [, {last}]) + Number delete lines from buffer {buf} +did_filetype() Number |TRUE| if FileType autocmd event used +diff_filler({lnum}) Number diff filler lines about {lnum} +diff_hlID({lnum}, {col}) Number diff highlighting at {lnum}/{col} +digraph_get({chars}) String get the |digraph| of {chars} +digraph_getlist([{listall}]) List get all |digraph|s +digraph_set({chars}, {digraph}) Boolean register |digraph| +digraph_setlist({digraphlist}) Boolean register multiple |digraph|s +echoraw({expr}) none output {expr} as-is +empty({expr}) Number |TRUE| if {expr} is empty +environ() Dict return environment variables +err_teapot([{expr}]) none give E418, or E503 if {expr} is |TRUE| +escape({string}, {chars}) String escape {chars} in {string} with '\' +eval({string}) any evaluate {string} into its value +eventhandler() Number |TRUE| if inside an event handler +executable({expr}) Number 1 if executable {expr} exists +execute({command}) String execute {command} and get the output +exepath({expr}) String full path of the command {expr} +exists({expr}) Number |TRUE| if {expr} exists +exists_compiled({expr}) Number |TRUE| if {expr} exists at compile time +exp({expr}) Float exponential of {expr} +expand({expr} [, {nosuf} [, {list}]]) + any expand special keywords in {expr} +expandcmd({string} [, {options}]) + String expand {string} like with `:edit` +extend({expr1}, {expr2} [, {expr3}]) + List/Dict insert items of {expr2} into {expr1} +extendnew({expr1}, {expr2} [, {expr3}]) + List/Dict like |extend()| but creates a new + List or Dictionary +feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer +filereadable({file}) Number |TRUE| if {file} is a readable file +filewritable({file}) Number |TRUE| if {file} is a writable file +filter({expr1}, {expr2}) List/Dict/Blob/String + remove items from {expr1} where + {expr2} is 0 +finddir({name} [, {path} [, {count}]]) + String find directory {name} in {path} +findfile({name} [, {path} [, {count}]]) + String find file {name} in {path} +flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels +flattennew({list} [, {maxdepth}]) + List flatten a copy of {list} +float2nr({expr}) Number convert Float {expr} to a Number +floor({expr}) Float round {expr} down +fmod({expr1}, {expr2}) Float remainder of {expr1} / {expr2} +fnameescape({fname}) String escape special characters in {fname} +fnamemodify({fname}, {mods}) String modify file name +foldclosed({lnum}) Number first line of fold at {lnum} if closed +foldclosedend({lnum}) Number last line of fold at {lnum} if closed +foldlevel({lnum}) Number fold level at {lnum} +foldtext() String line displayed for closed fold +foldtextresult({lnum}) String text for closed fold at {lnum} +foreground() Number bring the Vim window to the foreground +fullcommand({name} [, {vim9}]) String get full command from {name} +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 +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} +getbufinfo([{buf}]) List information about buffers +getbufline({buf}, {lnum} [, {end}]) + List lines {lnum} to {end} of buffer {buf} +getbufoneline({buf}, {lnum}) String line {lnum} of buffer {buf} +getbufvar({buf}, {varname} [, {def}]) + any variable {varname} in buffer {buf} +getcellwidths() List get character cell width overrides +getchangelist([{buf}]) List list of change list items +getchar([expr]) Number or String + get one character from the user +getcharmod() Number modifiers for the last typed character +getcharpos({expr}) List position of cursor, mark, etc. +getcharsearch() Dict last character search +getcharstr([expr]) String get one character from the user +getcmdcompltype() String return the type of the current + command-line completion +getcmdline() String return the current command-line +getcmdpos() Number return cursor position in command-line +getcmdscreenpos() Number return cursor screen position in + command-line +getcmdtype() String return current command-line type +getcmdwintype() String return current command-line window type +getcompletion({pat}, {type} [, {filtered}]) + List list of cmdline completion matches +getcurpos([{winnr}]) List position of the cursor +getcursorcharpos([{winnr}]) List character position of the cursor +getcwd([{winnr} [, {tabnr}]]) String get the current working directory +getenv({name}) String return environment variable +getfontname([{name}]) String name of font being used +getfperm({fname}) String file permissions of file {fname} +getfsize({fname}) Number size in bytes of file {fname} +getftime({fname}) Number last modification time of file +getftype({fname}) String description of type of file {fname} +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 +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 +getmatches([{win}]) List list of current matches +getmousepos() Dict last known mouse position +getmouseshape() String current mouse shape name +getpid() Number process ID of Vim +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 +getreginfo([{regname}]) Dict information about a register +getregtype([{regname}]) String type of a register +getscriptinfo([{opts}]) List list of sourced scripts +gettabinfo([{expr}]) List list of tab pages +gettabvar({nr}, {varname} [, {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} +gettext({text}) String lookup translation of {text} +getwininfo([{winid}]) List list of info about each window +getwinpos([{timeout}]) List X and Y coord in pixels of Vim window +getwinposx() Number X coord in pixels of the Vim window +getwinposy() Number Y coord in pixels of the Vim window +getwinvar({nr}, {varname} [, {def}]) + any variable {varname} in window {nr} +glob({expr} [, {nosuf} [, {list} [, {alllinks}]]]) + any expand file wildcards in {expr} +glob2regpat({expr}) String convert a glob pat into a search pat +globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) + String do glob({expr}) for all dirs in {path} +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| +hasmapto({what} [, {mode} [, {abbr}]]) + Number |TRUE| if mapping to {what} exists +histadd({history}, {item}) Number add an item to a history +histdel({history} [, {item}]) Number remove an item from a history +histget({history} [, {index}]) String get the item {index} from a history +histnr({history}) Number highest index of a history +hlID({name}) Number syntax ID of highlight group {name} +hlexists({name}) Number |TRUE| if highlight group {name} exists +hlget([{name} [, {resolve}]]) List get highlight group attributes +hlset({list}) Number set highlight group attributes +hostname() String name of the machine Vim is running on +iconv({expr}, {from}, {to}) String convert encoding of {expr} +indent({lnum}) Number indent of line {lnum} +index({object}, {expr} [, {start} [, {ic}]]) + Number index in {object} where {expr} appears +indexof({object}, {expr} [, {opts}]]) + Number index in {object} where {expr} is true +input({prompt} [, {text} [, {completion}]]) + String get input from the user +inputdialog({prompt} [, {text} [, {cancelreturn}]]) + String like input() but in a GUI dialog +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} +interrupt() none interrupt script execution +invert({expr}) Number bitwise invert +isabsolutepath({path}) Number |TRUE| if {path} is an absolute path +isdirectory({directory}) Number |TRUE| if {directory} is a directory +isinf({expr}) Number determine if {expr} is infinity value + (positive or negative) +islocked({expr}) Number |TRUE| if {expr} is locked +isnan({expr}) Number |TRUE| if {expr} is NaN +items({dict}) List key-value pairs in {dict} +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_start({command} [, {options}]) + Job start a job +job_status({job}) String get the status of {job} +job_stop({job} [, {how}]) Number stop {job} +join({list} [, {sep}]) String join {list} items into one String +js_decode({string}) any decode JS style JSON +js_encode({expr}) String encode JS style JSON +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| +len({expr}) Number the length of {expr} +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} +lispindent({lnum}) Number Lisp indent for line {lnum} +list2blob({list}) Blob turn {list} of numbers into a Blob +list2str({list} [, {utf8}]) String turn {list} of numbers into a String +listener_add({callback} [, {buf}]) + Number add a callback to listen to changes +listener_flush([{buf}]) none invoke listener callbacks +listener_remove({id}) none remove a listener callback +localtime() Number current time +log({expr}) Float natural logarithm (base e) of {expr} +log10({expr}) Float logarithm of Float {expr} to base 10 +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 + rhs of mapping {name} in mode {mode} +mapcheck({name} [, {mode} [, {abbr}]]) + String check for mappings matching {name} +maplist([{abbr}]) List list of all mappings, a dict for each +mapnew({expr1}, {expr2}) List/Dict/Blob/String + like |map()| but creates a new List or + Dictionary +mapset({mode}, {abbr}, {dict}) none restore mapping from |maparg()| result +match({expr}, {pat} [, {start} [, {count}]]) + Number position where {pat} matches in {expr} +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| +matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}) + List all the {pat} matches in buffer {buf} +matchdelete({id} [, {win}]) Number delete match identified by {id} +matchend({expr}, {pat} [, {start} [, {count}]]) + Number position where {pat} ends in {expr} +matchfuzzy({list}, {str} [, {dict}]) + List fuzzy match {str} in {list} +matchfuzzypos({list}, {str} [, {dict}]) + List fuzzy match {str} in {list} +matchlist({expr}, {pat} [, {start} [, {count}]]) + 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}) + List all the {pat} matches in {list} +matchstrpos({expr}, {pat} [, {start} [, {count}]]) + List {count}'th match of {pat} in {expr} +max({expr}) Number maximum value of items in {expr} +menu_info({name} [, {mode}]) Dict get menu item information +min({expr}) Number minimum value of items in {expr} +mkdir({name} [, {flags} [, {prot}]]) + Number create directory {name} +mode([expr]) String current editing mode +mzeval({expr}) any evaluate |MzScheme| expression +nextnonblank({lnum}) Number line nr of non-blank line >= {lnum} +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_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} +popup_create({what}, {options}) Number create a popup window +popup_dialog({what}, {options}) Number create a popup window used as a dialog +popup_filter_menu({id}, {key}) Number filter for a menu popup window +popup_filter_yesno({id}, {key}) Number filter for a dialog popup window +popup_findecho() Number get window ID of popup for `:echowin` +popup_findinfo() Number get window ID of info popup window +popup_findpreview() Number get window ID of preview popup window +popup_getoptions({id}) Dict get options of popup window {id} +popup_getpos({id}) Dict get position of popup window {id} +popup_hide({id}) none hide popup menu {id} +popup_list() List get a list of window IDs of all popups +popup_locate({row}, {col}) Number get window ID of popup at position +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_setoptions({id}, {options}) + none set options for popup window {id} +popup_settext({id}, {text}) none set the text of popup window {id} +popup_show({id}) none unhide popup window {id} +pow({x}, {y}) Float {x} to the power of {y} +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_setprompt({buf}, {text}) none set prompt text +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}]]) + none remove all text properties +prop_find({props} [, {direction}]) + Dict search for a text property +prop_list({lnum} [, {props}]) List text properties in {lnum} +prop_remove({props} [, {lnum} [, {lnum-end}]]) + Number remove a text property +prop_type_add({name}, {props}) none define a new property type +prop_type_change({name}, {props}) + none change an existing property type +prop_type_delete({name} [, {props}]) + none delete a property type +prop_type_get({name} [, {props}]) + Dict get property type values +prop_type_list([{props}]) List get list of property types +pum_getpos() Dict position and size of pum if visible +pumvisible() Number whether popup menu is visible +py3eval({expr}) any evaluate |python3| expression +pyeval({expr}) any evaluate |Python| expression +pyxeval({expr}) any evaluate |python_x| expression +rand([{expr}]) Number get pseudo-random number +range({expr} [, {max} [, {stride}]]) + List items from {expr} to {max} +readblob({fname} [, {offset} [, {size}]]) + Blob read a |Blob| from {fname} +readdir({dir} [, {expr} [, {dict}]]) + List file names in {dir} selected by {expr} +readdirex({dir} [, {expr} [, {dict}]]) + List file info in {dir} selected by {expr} +readfile({fname} [, {type} [, {max}]]) + List get list of lines from file {fname} +reduce({object}, {func} [, {initial}]) + any reduce {object} using {func} +reg_executing() String get the executing register name +reg_recording() String get the recording register name +reltime([{start} [, {end}]]) List get time value +reltimefloat({time}) Float turn the time value into a Float +reltimestr({time}) String turn time value into a String +remote_expr({server}, {string} [, {idvar} [, {timeout}]]) + String send expression +remote_foreground({server}) Number bring Vim server to the foreground +remote_peek({serverid} [, {retvar}]) + Number check for reply string +remote_read({serverid} [, {timeout}]) + String read reply string +remote_send({server}, {string} [, {idvar}]) + String send key sequence +remote_startserver({name}) none become server {name} +remove({list}, {idx} [, {end}]) any/List + remove items {idx}-{end} from {list} +remove({blob}, {idx} [, {end}]) Number/Blob + remove bytes {idx}-{end} from {blob} +remove({dict}, {key}) any remove entry {key} from {dict} +rename({from}, {to}) Number rename (move) file from {from} to {to} +repeat({expr}, {count}) List/Blob/String + repeat {expr} {count} times +resolve({filename}) String get filename a shortcut points to +reverse({obj}) List/Blob/String + reverse {obj} +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 +screencol() Number current cursor column +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}]]]]) + Number search for {pattern} +searchcount([{options}]) Dict get or update search stats +searchdecl({name} [, {global} [, {thisblock}]]) + Number search for variable declaration +searchpair({start}, {middle}, {end} [, {flags} [, {skip} [...]]]) + Number search for other end of start/end pair +searchpairpos({start}, {middle}, {end} [, {flags} [, {skip} [...]]]) + List search for other end of start/end pair +searchpos({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) + List search for {pattern} +server2client({clientid}, {string}) + Number send reply string +serverlist() String get a list of available servers +setbufline({expr}, {lnum}, {text}) + Number set line {lnum} to {text} in buffer + {expr} +setbufvar({buf}, {varname}, {val}) + none set {varname} in buffer {buf} to {val} +setcellwidths({list}) none set character cell width overrides +setcharpos({expr}, {list}) Number set the {expr} position to {list} +setcharsearch({dict}) Dict set character search from {dict} +setcmdline({str} [, {pos}]) Number set command-line +setcmdpos({pos}) Number set cursor position in command-line +setcursorcharpos({list}) Number move cursor to position in {list} +setenv({name}, {val}) none set environment variable +setfperm({fname}, {mode}) Number set {fname} file permissions to {mode} +setline({lnum}, {line}) Number set line {lnum} to {line} +setloclist({nr}, {list} [, {action}]) + Number modify location list using {list} +setloclist({nr}, {list}, {action}, {what}) + Number modify specific location list props +setmatches({list} [, {win}]) Number restore a list of matches +setpos({expr}, {list}) Number set the {expr} position to {list} +setqflist({list} [, {action}]) 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} +settabwinvar({tabnr}, {winnr}, {varname}, {val}) + none set {varname} in window {winnr} in tab + page {tabnr} to {val} +settagstack({nr}, {dict} [, {action}]) + Number modify tag stack using {dict} +setwinvar({nr}, {varname}, {val}) none set {varname} in window {nr} to {val} +sha256({string}) String SHA256 checksum of {string} +shellescape({string} [, {special}]) + String escape {string} for use as shell + command argument +shiftwidth([{col}]) Number effective value of 'shiftwidth' +sign_define({name} [, {dict}]) Number define or update a sign +sign_define({list}) List define or update a list of signs +sign_getdefined([{name}]) List get a list of defined signs +sign_getplaced([{buf} [, {dict}]]) + List get a list of placed signs +sign_jump({id}, {group}, {buf}) + Number jump to a sign +sign_place({id}, {group}, {name}, {buf} [, {dict}]) + Number place a sign +sign_placelist({list}) List place a list of signs +sign_undefine([{name}]) Number undefine a sign +sign_undefine({list}) List undefine a list of signs +sign_unplace({group} [, {dict}]) + Number unplace a sign +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 of a String, List or Blob +sort({list} [, {how} [, {dict}]]) + List sort {list}, compare with {how} +sound_clear() none stop playing all sounds +sound_playevent({name} [, {callback}]) + Number play an event sound +sound_playfile({path} [, {callback}]) + Number play sound file {path} +sound_stop({id}) none stop playing sound {id} +soundfold({word}) String sound-fold {word} +spellbadword() String badly spelled word at cursor +spellsuggest({word} [, {max} [, {capital}]]) + List spelling suggestions +split({expr} [, {pat} [, {keepempty}]]) + List make |List| from {pat} separated {expr} +sqrt({expr}) Float square root of {expr} +srand([{expr}]) List get seed for |rand()| +state([{what}]) String current state of Vim +str2float({expr} [, {quoted}]) Float convert String to Float +str2list({expr} [, {utf8}]) List convert each character of {expr} to + ASCII/UTF-8 value +str2nr({expr} [, {base} [, {quoted}]]) + Number convert String to Number +strcharlen({expr}) Number character length of the String {expr} +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} +strftime({format} [, {time}]) String format time with a specified format +strgetchar({str}, {index}) Number get char {index} from {str} +stridx({haystack}, {needle} [, {start}]) + Number index of {needle} in {haystack} +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} +strptime({format}, {timestring}) + 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() +substitute({expr}, {pat}, {sub}, {flags}) + 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} +synID({lnum}, {col}, {trans}) Number syntax ID at {lnum} and {col} +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} +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 +tagfiles() List tags files used +taglist({expr} [, {filename}]) List list of tags matching {expr} +tan({expr}) Float tangent of {expr} +tanh({expr}) Float hyperbolic tangent of {expr} +tempname() String name for a temporary file +term_dumpdiff({filename}, {filename} [, {options}]) + Number display difference between two dumps +term_dumpload({filename} [, {options}]) + Number displaying a screen dump +term_dumpwrite({buf}, {filename} [, {options}]) + none dump terminal window contents +term_getaltscreen({buf}) Number get the alternate screen flag +term_getansicolors({buf}) List get ANSI palette in GUI color mode +term_getattr({attr}, {what}) Number get the value of attribute {what} +term_getcursor({buf}) List get the cursor position of a terminal +term_getjob({buf}) Job get the job associated with a terminal +term_getline({buf}, {row}) String get a line of text from a terminal +term_getscrolled({buf}) Number get the scroll count of a terminal +term_getsize({buf}) List get the size of a terminal +term_getstatus({buf}) String get the status of a terminal +term_gettitle({buf}) String get the title of a terminal +term_gettty({buf}, [{input}]) String get the tty name of a terminal +term_list() List get the list of terminal buffers +term_scrape({buf}, {row}) List get row of a terminal screen +term_sendkeys({buf}, {keys}) none send keystrokes to a terminal +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_setsize({buf}, {rows}, {cols}) + none set the size of a terminal +term_start({cmd} [, {options}]) Number open a terminal window and run a job +term_wait({buf} [, {time}]) Number wait for screen to be updated +terminalprops() Dict properties of the terminal +test_alloc_fail({id}, {countdown}, {repeat}) + none make memory allocation fail +test_autochdir() none enable 'autochdir' during startup +test_feedinput({string}) none add key sequence to input buffer +test_garbagecollect_now() none free memory right now for testing +test_garbagecollect_soon() none free memory soon for testing +test_getvalue({string}) any get value of an internal variable +test_gui_event({event}, {args}) bool generate a GUI event for testing +test_ignore_error({expr}) none ignore a specific error +test_mswin_event({event}, {args}) + bool generate MS-Windows event for testing +test_null_blob() Blob null value for testing +test_null_channel() Channel null value for testing +test_null_dict() Dict null value for testing +test_null_function() Funcref null value for testing +test_null_job() Job null value for testing +test_null_list() List null value for testing +test_null_partial() Funcref null value for testing +test_null_string() String null value for testing +test_option_not_set({name}) none reset flag indicating option was set +test_override({expr}, {val}) none test with Vim internal overrides +test_refcount({expr}) Number get the reference count of {expr} +test_setmouse({row}, {col}) none set the mouse position for testing +test_settime({expr}) none set current time for testing +test_srand_seed([seed]) none set seed for testing srand() +test_unknown() any unknown value for testing +test_void() any void value for testing +timer_info([{id}]) List information about timers +timer_pause({id}, {pause}) none pause or unpause a timer +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 +tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} + to chars in {tostr} +trim({text} [, {mask} [, {dir}]]) + String trim characters in {mask} from {text} +trunc({expr}) Float truncate Float {expr} +type({expr}) Number type of value {expr} +typename({expr}) String representation of the type of {expr} +undofile({name}) String undo file name for {name} +undotree([{buf}]) List undo file tree for buffer {buf} +uniq({list} [, {func} [, {dict}]]) + List remove adjacent duplicates from a list +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 + screen column of cursor or mark +virtcol2col({winid}, {lnum}, {col}) + Number byte index of a character on screen +visualmode([expr]) String last visual mode used +wildmenumode() Number whether 'wildmenu' mode is active +win_execute({id}, {command} [, {silent}]) + String execute {command} in window {id} +win_findbuf({bufnr}) List find windows containing {bufnr} +win_getid([{win} [, {tab}]]) Number get window ID for {win} in {tab} +win_gettype([{nr}]) String type of window {nr} +win_gotoid({expr}) Number go to window with ID {expr} +win_id2tabwin({expr}) List get tab and window nr from window ID +win_id2win({expr}) Number get window nr from window ID +win_move_separator({nr}) Number move window vertical separator +win_move_statusline({nr}) Number move window status line +win_screenpos({nr}) List get screen position of window {nr} +win_splitmove({nr}, {target} [, {options}]) + Number move window {nr} to split of {target} +winbufnr({nr}) Number buffer number of window {nr} +wincol() Number window column of the cursor +windowsversion() String MS-Windows OS version +winheight({nr}) Number height of window {nr} +winlayout([{tabnr}]) List layout of windows in tab {tabnr} +winline() Number window line of the cursor +winnr([{expr}]) Number number of current window +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} +wordcount() Dict get byte/char/word statistics +writefile({object}, {fname} [, {flags}]) + Number write |Blob| or |List| of lines to file +xor({expr}, {expr}) Number bitwise XOR + +============================================================================== +2. Details *builtin-function-details* + +Not all functions are here, some have been moved to a help file covering the +specific functionality. + +abs({expr}) *abs()* + Return the absolute value of {expr}. When {expr} evaluates to + a |Float| abs() returns a |Float|. When {expr} can be + converted to a |Number| abs() returns a |Number|. Otherwise + abs() gives an error message and returns -1. + Examples: > + echo abs(1.456) +< 1.456 > + echo abs(-5.456) +< 5.456 > + echo abs(-4) +< 4 + + Can also be used as a |method|: > + Compute()->abs() + + +acos({expr}) *acos()* + Return the arc cosine of {expr} measured in radians, as a + |Float| in the range of [0, pi]. + {expr} must evaluate to a |Float| or a |Number| in the range + [-1, 1]. Otherwise acos() returns "nan". + Examples: > + :echo acos(0) +< 1.570796 > + :echo acos(-0.5) +< 2.094395 + + Can also be used as a |method|: > + Compute()->acos() + + +add({object}, {expr}) *add()* + Append the item {expr} to |List| or |Blob| {object}. Returns + the resulting |List| or |Blob|. Examples: > + :let alist = add([1, 2, 3], item) + :call add(mylist, "woodstock") +< Note that when {expr} is a |List| it is appended as a single + item. Use |extend()| to concatenate |Lists|. + When {object} is a |Blob| then {expr} must be a number. + Use |insert()| to add an item at another position. + Returns 1 if {object} is not a |List| or a |Blob|. + + Can also be used as a |method|: > + mylist->add(val1)->add(val2) + + +and({expr}, {expr}) *and()* + Bitwise AND on the two arguments. The arguments are converted + to a number. A List, Dict or Float argument causes an error. + Also see `or()` and `xor()`. + Example: > + :let flag = and(bits, 0x80) +< Can also be used as a |method|: > + :let flag = bits->and(0x80) + + +append({lnum}, {text}) *append()* + When {text} is a |List|: Append each item of the |List| as a + text line below line {lnum} in the current buffer. + Otherwise append {text} as one text line below line {lnum} in + the current buffer. + Any type of item is accepted and converted to a String. + {lnum} can be zero to insert a line before the first one. + {lnum} is used like with |getline()|. + Returns 1 for failure ({lnum} out of range or out of memory), + 0 for success. When {text} is an empty list zero is returned, + no matter the value of {lnum}. + In |Vim9| script an invalid argument or negative number + results in an error. Example: > + :let failed = append(line('$'), "# THE END") + :let failed = append(0, ["Chapter 1", "the beginning"]) + +< Can also be used as a |method| after a List, the base is + passed as the second argument: > + mylist->append(lnum) + + +appendbufline({buf}, {lnum}, {text}) *appendbufline()* + Like |append()| but append the text in buffer {buf}. + + This function works only for loaded buffers. First call + |bufload()| if needed. + + For the use of {buf}, see |bufname()|. + + {lnum} is the line number to append below. Note that using + |line()| would use the current buffer, not the one appending + to. Use "$" to append at the end of the buffer. Other string + values are not supported. + + On success 0 is returned, on failure 1 is returned. + In |Vim9| script an error is given for an invalid {lnum}. + + If {buf} is not a valid buffer or {lnum} is not valid, an + error message is given. Example: > + :let failed = appendbufline(13, 0, "# THE START") +< However, when {text} is an empty list then no error is given + 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: > + mylist->appendbufline(buf, lnum) + + +argc([{winid}]) *argc()* + The result is the number of files in the argument list. See + |arglist|. + If {winid} is not supplied, the argument list of the current + window is used. + If {winid} is -1, the global argument list is used. + Otherwise {winid} specifies the window of which the argument + list is used: either the window number or the window ID. + Returns -1 if the {winid} argument is invalid. + + *argidx()* +argidx() The result is the current index in the argument list. 0 is + the first file. argc() - 1 is the last one. See |arglist|. + + *arglistid()* +arglistid([{winnr} [, {tabnr}]]) + Return the argument list ID. This is a number which + identifies the argument list being used. Zero is used for the + global argument list. See |arglist|. + Returns -1 if the arguments are invalid. + + Without arguments use the current window. + With {winnr} only use this window in the current tab page. + With {winnr} and {tabnr} use the window in the specified tab + page. + {winnr} can be the window number or the |window-ID|. + + *argv()* +argv([{nr} [, {winid}]]) + The result is the {nr}th file in the argument list. See + |arglist|. "argv(0)" is the first one. Example: > + :let i = 0 + :while i < argc() + : let f = escape(fnameescape(argv(i)), '.') + : exe 'amenu Arg.' .. f .. ' :e ' .. f .. '' + : let i = i + 1 + :endwhile +< Without the {nr} argument, or when {nr} is -1, a |List| with + the whole |arglist| is returned. + + The {winid} argument specifies the window ID, see |argc()|. + For the Vim command line arguments see |v:argv|. + + Returns an empty string if {nr}th argument is not present in + the argument list. Returns an empty List if the {winid} + argument is invalid. + +asin({expr}) *asin()* + Return the arc sine of {expr} measured in radians, as a |Float| + in the range of [-pi/2, pi/2]. + {expr} must evaluate to a |Float| or a |Number| in the range + [-1, 1]. + Returns "nan" if {expr} is outside the range [-1, 1]. Returns + 0.0 if {expr} is not a |Float| or a |Number|. + Examples: > + :echo asin(0.8) +< 0.927295 > + :echo asin(-0.5) +< -0.523599 + + Can also be used as a |method|: > + Compute()->asin() + + +assert_ functions are documented here: |assert-functions-details| + + + +atan({expr}) *atan()* + Return the principal value of the arc tangent of {expr}, in + the range [-pi/2, +pi/2] radians, as a |Float|. + {expr} must evaluate to a |Float| or a |Number|. + Returns 0.0 if {expr} is not a |Float| or a |Number|. + Examples: > + :echo atan(100) +< 1.560797 > + :echo atan(-4.01) +< -1.326405 + + Can also be used as a |method|: > + Compute()->atan() + + +atan2({expr1}, {expr2}) *atan2()* + Return the arc tangent of {expr1} / {expr2}, measured in + radians, as a |Float| in the range [-pi, pi]. + {expr1} and {expr2} must evaluate to a |Float| or a |Number|. + Returns 0.0 if {expr1} or {expr2} is not a |Float| or a + |Number|. + Examples: > + :echo atan2(-1, 1) +< -0.785398 > + :echo atan2(1, -1) +< 2.356194 + + Can also be used as a |method|: > + Compute()->atan2(1) + + +autocmd_add({acmds}) *autocmd_add()* + Adds a List of autocmds and autocmd groups. + + The {acmds} argument is a List where each item is a Dict with + the following optional items: + bufnr buffer number to add a buffer-local autocmd. + If this item is specified, then the "pattern" + item is ignored. + cmd Ex command to execute for this autocmd event + event autocmd event name. Refer to |autocmd-events|. + This can be either a String with a single + event name or a List of event names. + group autocmd group name. Refer to |autocmd-groups|. + If this group doesn't exist then it is + created. If not specified or empty, then the + default group is used. + nested boolean flag, set to v:true to add a nested + autocmd. Refer to |autocmd-nested|. + once boolean flag, set to v:true to add an autocmd + which executes only once. Refer to + |autocmd-once|. + pattern autocmd pattern string. Refer to + |autocmd-patterns|. If "bufnr" item is + present, then this item is ignored. This can + be a String with a single pattern or a List of + patterns. + replace boolean flag, set to v:true to remove all the + commands associated with the specified autocmd + event and group and add the {cmd}. This is + useful to avoid adding the same command + multiple times for an autocmd event in a group. + + Returns v:true on success and v:false on failure. + Examples: > + " Create a buffer-local autocmd for buffer 5 + let acmd = {} + let acmd.group = 'MyGroup' + let acmd.event = 'BufEnter' + let acmd.bufnr = 5 + let acmd.cmd = 'call BufEnterFunc()' + call autocmd_add([acmd]) +< + Can also be used as a |method|: > + GetAutocmdList()->autocmd_add() +< +autocmd_delete({acmds}) *autocmd_delete()* + Deletes a List of autocmds and autocmd groups. + + The {acmds} argument is a List where each item is a Dict with + the following optional items: + bufnr buffer number to delete a buffer-local autocmd. + If this item is specified, then the "pattern" + item is ignored. + cmd Ex command for this autocmd event + event autocmd event name. Refer to |autocmd-events|. + If '*' then all the autocmd events in this + group are deleted. + group autocmd group name. Refer to |autocmd-groups|. + If not specified or empty, then the default + group is used. + nested set to v:true for a nested autocmd. + Refer to |autocmd-nested|. + once set to v:true for an autocmd which executes + only once. Refer to |autocmd-once|. + pattern autocmd pattern string. Refer to + |autocmd-patterns|. If "bufnr" item is + present, then this item is ignored. + + If only {group} is specified in a {acmds} entry and {event}, + {pattern} and {cmd} are not specified, then that autocmd group + is deleted. + + Returns |v:true| on success and |v:false| on failure. + Examples: > + " :autocmd! BufLeave *.vim + let acmd = #{event: 'BufLeave', pattern: '*.vim'} + call autocmd_delete([acmd]}) + " :autocmd! MyGroup1 BufLeave + let acmd = #{group: 'MyGroup1', event: 'BufLeave'} + call autocmd_delete([acmd]) + " :autocmd! MyGroup2 BufEnter *.c + let acmd = #{group: 'MyGroup2', event: 'BufEnter', + \ pattern: '*.c'} + " :autocmd! MyGroup2 * *.c + let acmd = #{group: 'MyGroup2', event: '*', + \ pattern: '*.c'} + call autocmd_delete([acmd]) + " :autocmd! MyGroup3 + let acmd = #{group: 'MyGroup3'} + call autocmd_delete([acmd]) +< + Can also be used as a |method|: > + GetAutocmdList()->autocmd_delete() + +autocmd_get([{opts}]) *autocmd_get()* + Returns a |List| of autocmds. If {opts} is not supplied, then + returns the autocmds for all the events in all the groups. + + The optional {opts} Dict argument supports the following + items: + group Autocmd group name. If specified, returns only + the autocmds defined in this group. If the + specified group doesn't exist, results in an + error message. If set to an empty string, + then the default autocmd group is used. + event Autocmd event name. If specified, returns only + the autocmds defined for this event. If set + to "*", then returns autocmds for all the + events. If the specified event doesn't exist, + results in an error message. + pattern Autocmd pattern. If specified, returns only + the autocmds defined for this pattern. + A combination of the above three times can be supplied in + {opts}. + + Each Dict in the returned List contains the following items: + bufnr For buffer-local autocmds, buffer number where + the autocmd is defined. + cmd Command executed for this autocmd. + event Autocmd event name. + group Autocmd group name. + nested Boolean flag, set to v:true for a nested + autocmd. See |autocmd-nested|. + once Boolean flag, set to v:true, if the autocmd + will be executed only once. See |autocmd-once|. + pattern Autocmd pattern. For a buffer-local + autocmd, this will be of the form "". + If there are multiple commands for an autocmd event in a + group, then separate items are returned for each command. + + Returns an empty List if an autocmd with the specified group + or event or pattern is not found. + + Examples: > + " :autocmd MyGroup + echo autocmd_get(#{group: 'Mygroup'}) + " :autocmd G BufUnload + echo autocmd_get(#{group: 'G', event: 'BufUnload'}) + " :autocmd G * *.ts + let acmd = #{group: 'G', event: '*', pattern: '*.ts'} + echo autocmd_get(acmd) + " :autocmd Syntax + echo autocmd_get(#{event: 'Syntax'}) + " :autocmd G BufEnter *.ts + let acmd = #{group: 'G', event: 'BufEnter', + \ pattern: '*.ts'} + echo autocmd_get(acmd) +< + Can also be used as a |method|: > + Getopts()->autocmd_get() +< +balloon_gettext() *balloon_gettext()* + Return the current text in the balloon. Only for the string, + not used for the List. Returns an empty string if balloon + is not present. + +balloon_show({expr}) *balloon_show()* + Show {expr} inside the balloon. For the GUI {expr} is used as + a string. For a terminal {expr} can be a list, which contains + the lines of the balloon. If {expr} is not a list it will be + split with |balloon_split()|. + If {expr} is an empty string any existing balloon is removed. + + Example: > + func GetBalloonContent() + " ... initiate getting the content + return '' + endfunc + set balloonexpr=GetBalloonContent() + + func BalloonCallback(result) + call balloon_show(a:result) + endfunc +< Can also be used as a |method|: > + GetText()->balloon_show() +< + The intended use is that fetching the content of the balloon + is initiated from 'balloonexpr'. It will invoke an + asynchronous method, in which a callback invokes + balloon_show(). The 'balloonexpr' itself can return an + empty string or a placeholder, e.g. "loading...". + + When showing a balloon is not possible then nothing happens, + no error message is given. + {only available when compiled with the |+balloon_eval| or + |+balloon_eval_term| feature} + +balloon_split({msg}) *balloon_split()* + Split String {msg} into lines to be displayed in a balloon. + The splits are made for the current window size and optimize + to show debugger output. + Returns a |List| with the split lines. Returns an empty List + on error. + Can also be used as a |method|: > + GetText()->balloon_split()->balloon_show() + +< {only available when compiled with the |+balloon_eval_term| + feature} + +blob2list({blob}) *blob2list()* + Return a List containing the number value of each byte in Blob + {blob}. Examples: > + blob2list(0z0102.0304) returns [1, 2, 3, 4] + blob2list(0z) returns [] +< Returns an empty List on error. |list2blob()| does the + opposite. + + Can also be used as a |method|: > + GetBlob()->blob2list() +< + *browse()* +browse({save}, {title}, {initdir}, {default}) + Put up a file requester. This only works when "has("browse")" + returns |TRUE| (only in some GUI versions). + The input fields are: + {save} when |TRUE|, select file to write + {title} title for the requester + {initdir} directory to start browsing in + {default} default file name + An empty string is returned when the "Cancel" button is hit, + something went wrong, or browsing is not possible. + + *browsedir()* +browsedir({title}, {initdir}) + Put up a directory requester. This only works when + "has("browse")" returns |TRUE| (only in some GUI versions). + On systems where a directory browser is not supported a file + browser is used. In that case: select a file in the directory + to be used. + The input fields are: + {title} title for the requester + {initdir} directory to start browsing in + When the "Cancel" button is hit, something went wrong, or + browsing is not possible, an empty string is returned. + +bufadd({name}) *bufadd()* + Add a buffer to the buffer list with name {name} (must be a + String). + If a buffer for file {name} already exists, return that buffer + number. Otherwise return the buffer number of the newly + created buffer. When {name} is an empty string then a new + buffer is always created. + The buffer will not have 'buflisted' set and not be loaded + yet. To add some text to the buffer use this: > + let bufnr = bufadd('someName') + call bufload(bufnr) + call setbufline(bufnr, 1, ['some', 'text']) +< Returns 0 on error. + Can also be used as a |method|: > + let bufnr = 'somename'->bufadd() + +bufexists({buf}) *bufexists()* + The result is a Number, which is |TRUE| if a buffer called + {buf} exists. + If the {buf} argument is a number, buffer numbers are used. + Number zero is the alternate buffer for the current window. + + If the {buf} argument is a string it must match a buffer name + exactly. The name can be: + - Relative to the current directory. + - A full path. + - The name of a buffer with 'buftype' set to "nofile". + - A URL name. + Unlisted buffers will be found. + Note that help files are listed by their short name in the + output of |:buffers|, but bufexists() requires using their + long name to be able to find them. + bufexists() may report a buffer exists, but to use the name + with a |:buffer| command you may need to use |expand()|. Esp + for MS-Windows 8.3 names in the form "c:\DOCUME~1" + Use "bufexists(0)" to test for the existence of an alternate + file name. + + Can also be used as a |method|: > + let exists = 'somename'->bufexists() +< + Obsolete name: buffer_exists(). *buffer_exists()* + +buflisted({buf}) *buflisted()* + The result is a Number, which is |TRUE| if a buffer called + {buf} exists and is listed (has the 'buflisted' option set). + The {buf} argument is used like with |bufexists()|. + + Can also be used as a |method|: > + let listed = 'somename'->buflisted() + +bufload({buf}) *bufload()* + Ensure the buffer {buf} is loaded. When the buffer name + refers to an existing file then the file is read. Otherwise + the buffer will be empty. If the buffer was already loaded + then there is no change. If the buffer is not related to a + file then no file is read (e.g., when 'buftype' is "nofile"). + If there is an existing swap file for the file of the buffer, + there will be no dialog, the buffer will be loaded anyway. + The {buf} argument is used like with |bufexists()|. + + Can also be used as a |method|: > + eval 'somename'->bufload() + +bufloaded({buf}) *bufloaded()* + The result is a Number, which is |TRUE| if a buffer called + {buf} exists and is loaded (shown in a window or hidden). + The {buf} argument is used like with |bufexists()|. + + Can also be used as a |method|: > + let loaded = 'somename'->bufloaded() + +bufname([{buf}]) *bufname()* + The result is the name of a buffer. Mostly as it is displayed + by the `:ls` command, but not using special names such as + "[No Name]". + If {buf} is omitted the current buffer is used. + If {buf} is a Number, that buffer number's name is given. + Number zero is the alternate buffer for the current window. + If {buf} is a String, it is used as a |file-pattern| to match + with the buffer names. This is always done like 'magic' is + set and 'cpoptions' is empty. When there is more than one + match an empty string is returned. + "" or "%" can be used for the current buffer, "#" for the + alternate buffer. + A full match is preferred, otherwise a match at the start, end + or middle of the buffer name is accepted. If you only want a + full match then put "^" at the start and "$" at the end of the + pattern. + Listed buffers are found first. If there is a single match + with a listed buffer, that one is returned. Next unlisted + buffers are searched for. + If the {buf} is a String, but you want to use it as a buffer + number, force it to be a Number by adding zero to it: > + :echo bufname("3" + 0) +< Can also be used as a |method|: > + echo bufnr->bufname() + +< If the buffer doesn't exist, or doesn't have a name, an empty + string is returned. > + bufname("#") alternate buffer name + bufname(3) name of buffer 3 + bufname("%") name of current buffer + bufname("file2") name of buffer where "file2" matches. +< *buffer_name()* + Obsolete name: buffer_name(). + + *bufnr()* +bufnr([{buf} [, {create}]]) + The result is the number of a buffer, as it is displayed by + the `:ls` command. For the use of {buf}, see |bufname()| + above. + + If the buffer doesn't exist, -1 is returned. Or, if the + {create} argument is present and TRUE, a new, unlisted, + buffer is created and its number is returned. Example: > + let newbuf = bufnr('Scratch001', 1) +< Using an empty name uses the current buffer. To create a new + buffer with an empty name use |bufadd()|. + + bufnr("$") is the last buffer: > + :let last_buffer = bufnr("$") +< The result is a Number, which is the highest buffer number + of existing buffers. Note that not all buffers with a smaller + number necessarily exist, because ":bwipeout" may have removed + them. Use bufexists() to test for the existence of a buffer. + + Can also be used as a |method|: > + echo bufref->bufnr() +< + Obsolete name: buffer_number(). *buffer_number()* + *last_buffer_nr()* + Obsolete name for bufnr("$"): last_buffer_nr(). + +bufwinid({buf}) *bufwinid()* + The result is a Number, which is the |window-ID| of the first + window associated with buffer {buf}. For the use of {buf}, + see |bufname()| above. If buffer {buf} doesn't exist or + there is no such window, -1 is returned. Example: > + + echo "A window containing buffer 1 is " .. (bufwinid(1)) +< + Only deals with the current tab page. See |win_findbuf()| for + finding more. + + Can also be used as a |method|: > + FindBuffer()->bufwinid() + +bufwinnr({buf}) *bufwinnr()* + Like |bufwinid()| but return the window number instead of the + |window-ID|. + If buffer {buf} doesn't exist or there is no such window, -1 + is returned. Example: > + + echo "A window containing buffer 1 is " .. (bufwinnr(1)) + +< The number can be used with |CTRL-W_w| and ":wincmd w" + |:wincmd|. + + Can also be used as a |method|: > + FindBuffer()->bufwinnr() + +byte2line({byte}) *byte2line()* + Return the line number that contains the character at byte + count {byte} in the current buffer. This includes the + end-of-line character, depending on the 'fileformat' option + for the current buffer. The first character has byte count + one. + Also see |line2byte()|, |go| and |:goto|. + + Returns -1 if the {byte} value is invalid. + + Can also be used as a |method|: > + GetOffset()->byte2line() + +< {not available when compiled without the |+byte_offset| + feature} + +byteidx({expr}, {nr} [, {utf16}]) *byteidx()* + Return byte index of the {nr}'th character in the String + {expr}. Use zero for the first character, it then returns + zero. + If there are no multibyte characters the returned value is + equal to {nr}. + Composing characters are not counted separately, their byte + length is added to the preceding base character. See + |byteidxcomp()| below for counting composing characters + separately. + When {utf16} is present and TRUE, {nr} is used as the UTF-16 + index in the String {expr} instead of as the character index. + The UTF-16 index is the index in the string when it is encoded + with 16-bit words. If the specified UTF-16 index is in the + middle of a character (e.g. in a 4-byte character), then the + byte index of the first byte in the character is returned. + Refer to |string-offset-encoding| for more information. + Example : > + echo matchstr(str, ".", byteidx(str, 3)) +< will display the fourth character. Another way to do the + same: > + let s = strpart(str, byteidx(str, 3)) + echo strpart(s, 0, byteidx(s, 1)) +< Also see |strgetchar()| and |strcharpart()|. + + If there are less than {nr} characters -1 is returned. + If there are exactly {nr} characters the length of the string + in bytes is returned. + See |charidx()| and |utf16idx()| for getting the character and + UTF-16 index respectively from the byte index. + Examples: > + echo byteidx('a馃槉馃槉', 2) returns 5 + echo byteidx('a馃槉馃槉', 2, 1) returns 1 + echo byteidx('a馃槉馃槉', 3, 1) returns 5 +< + Can also be used as a |method|: > + GetName()->byteidx(idx) + +byteidxcomp({expr}, {nr} [, {utf16}]) *byteidxcomp()* + Like byteidx(), except that a composing character is counted + as a separate character. Example: > + let s = 'e' .. nr2char(0x301) + echo byteidx(s, 1) + echo byteidxcomp(s, 1) + echo byteidxcomp(s, 2) +< The first and third echo result in 3 ('e' plus composing + character is 3 bytes), the second echo results in 1 ('e' is + one byte). + Only works differently from byteidx() when 'encoding' is set + to a Unicode encoding. + + Can also be used as a |method|: > + GetName()->byteidxcomp(idx) + +call({func}, {arglist} [, {dict}]) *call()* *E699* + Call function {func} with the items in |List| {arglist} as + arguments. + {func} can either be a |Funcref| or the name of a function. + a:firstline and a:lastline are set to the cursor line. + Returns the return value of the called function. + {dict} is for functions with the "dict" attribute. It will be + used to set the local variable "self". |Dictionary-function| + + Can also be used as a |method|: > + GetFunc()->call([arg, arg], dict) + +ceil({expr}) *ceil()* + Return the smallest integral value greater than or equal to + {expr} as a |Float| (round up). + {expr} must evaluate to a |Float| or a |Number|. + Examples: > + echo ceil(1.456) +< 2.0 > + echo ceil(-5.456) +< -5.0 > + echo ceil(4.0) +< 4.0 + + Returns 0.0 if {expr} is not a |Float| or a |Number|. + + Can also be used as a |method|: > + Compute()->ceil() + + +ch_ functions are documented here: |channel-functions-details| + + +changenr() *changenr()* + Return the number of the most recent change. This is the same + number as what is displayed with |:undolist| and can be used + with the |:undo| command. + When a change was made it is the number of that change. After + redo it is the number of the redone change. After undo it is + one less than the number of the undone change. + Returns 0 if the undo list is empty. + +char2nr({string} [, {utf8}]) *char2nr()* + Return Number value of the first char in {string}. + Examples: > + char2nr(" ") returns 32 + char2nr("ABC") returns 65 +< When {utf8} is omitted or zero, the current 'encoding' is used. + Example for "utf-8": > + char2nr("谩") returns 225 + char2nr("谩"[0]) returns 195 +< When {utf8} is TRUE, always treat as UTF-8 characters. + A combining character is a separate character. + |nr2char()| does the opposite. + To turn a string into a list of character numbers: > + let str = "ABC" + let list = map(split(str, '\zs'), {_, val -> char2nr(val)}) +< Result: [65, 66, 67] + + Returns 0 if {string} is not a |String|. + + Can also be used as a |method|: > + GetChar()->char2nr() + +charclass({string}) *charclass()* + Return the character class of the first character in {string}. + The character class is one of: + 0 blank + 1 punctuation + 2 word character + 3 emoji + other specific Unicode class + The class is used in patterns and word motions. + Returns 0 if {string} is not a |String|. + + +charcol({expr} [, {winid}]) *charcol()* + Same as |col()| but returns the character index of the column + position given with {expr} instead of the byte position. + + Example: + With the cursor on '靹' in line 5 with text "鞐炒靹胳殧": > + charcol('.') returns 3 + col('.') returns 7 + +< Can also be used as a |method|: > + GetPos()->col() +< + *charidx()* +charidx({string}, {idx} [, {countcc} [, {utf16}]]) + Return the character index of the byte at {idx} in {string}. + The index of the first character is zero. + If there are no multibyte characters the returned value is + equal to {idx}. + + When {countcc} is omitted or |FALSE|, then composing characters + are not counted separately, their byte length is added to the + preceding base character. + When {countcc} is |TRUE|, then composing characters are + counted as separate characters. + + When {utf16} is present and TRUE, {idx} is used as the UTF-16 + index in the String {expr} instead of as the byte index. + + Returns -1 if the arguments are invalid or if there are less + than {idx} bytes. If there are exactly {idx} bytes the length + of the string in characters is returned. + + An error is given and -1 is returned if the first argument is + not a string, the second argument is not a number or when the + third argument is present and is not zero or one. + + See |byteidx()| and |byteidxcomp()| for getting the byte index + from the character index and |utf16idx()| for getting the + UTF-16 index from the character index. + Refer to |string-offset-encoding| for more information. + Examples: > + echo charidx('a虂b虂c虂', 3) returns 1 + echo charidx('a虂b虂c虂', 6, 1) returns 4 + echo charidx('a虂b虂c虂', 16) returns -1 + echo charidx('a馃槉馃槉', 4, 0, 1) returns 2 +< + Can also be used as a |method|: > + GetName()->charidx(idx) + +chdir({dir}) *chdir()* + Change the current working directory to {dir}. The scope of + the directory change depends on the directory of the current + window: + - If the current window has a window-local directory + (|:lcd|), then changes the window local directory. + - Otherwise, if the current tabpage has a local + directory (|:tcd|) then changes the tabpage local + directory. + - Otherwise, changes the global directory. + {dir} must be a String. + If successful, returns the previous working directory. Pass + this to another chdir() to restore the directory. + On failure, returns an empty string. + + Example: > + let save_dir = chdir(newdir) + if save_dir != "" + " ... do some work + call chdir(save_dir) + endif + +< Can also be used as a |method|: > + GetDir()->chdir() +< +cindent({lnum}) *cindent()* + Get the amount of indent for line {lnum} according the C + indenting rules, as with 'cindent'. + The indent is counted in spaces, the value of 'tabstop' is + relevant. {lnum} is used just like in |getline()|. + When {lnum} is invalid -1 is returned. + See |C-indenting|. + + Can also be used as a |method|: > + GetLnum()->cindent() + +clearmatches([{win}]) *clearmatches()* + Clears all matches previously defined for the current window + by |matchadd()| and the |:match| commands. + If {win} is specified, use the window with this number or + window ID instead of the current window. + + Can also be used as a |method|: > + GetWin()->clearmatches() +< +col({expr} [, {winid}]) *col()* + The result is a Number, which is the byte index of the column + position given with {expr}. The accepted positions are: + . the cursor position + $ the end of the cursor line (the result is the + number of bytes in the cursor line plus one) + 'x position of mark x (if the mark is not set, 0 is + returned) + v In Visual mode: the start of the Visual area (the + cursor is the end). When not in Visual mode + returns the cursor position. Differs from |'<| in + that it's updated right away. + Additionally {expr} can be [lnum, col]: a |List| with the line + and column number. Most useful when the column is "$", to get + the last column of a specific line. When "lnum" or "col" is + out of range then col() returns zero. + With the optional {winid} argument the values are obtained for + that window instead of the current window. + To get the line number use |line()|. To get both use + |getpos()|. + For the screen column position use |virtcol()|. For the + character position use |charcol()|. + Note that only marks in the current file can be used. + Examples: > + col(".") column of cursor + col("$") length of cursor line plus one + col("'t") column of mark t + col("'" .. markname) column of mark markname +< The first column is 1. Returns 0 if {expr} is invalid or when + the window with ID {winid} is not found. + For an uppercase mark the column may actually be in another + buffer. + For the cursor position, when 'virtualedit' is active, the + column is one higher if the cursor is after the end of the + line. Also, when using a mapping the cursor isn't + moved, this can be used to obtain the column in Insert mode: > + :imap echowin col(".") + +< Can also be used as a |method|: > + GetPos()->col() +< + +complete({startcol}, {matches}) *complete()* *E785* + Set the matches for Insert mode completion. + Can only be used in Insert mode. You need to use a mapping + with CTRL-R = (see |i_CTRL-R|). It does not work after CTRL-O + or with an expression mapping. + {startcol} is the byte offset in the line where the completed + text start. The text up to the cursor is the original text + that will be replaced by the matches. Use col('.') for an + empty string. "col('.') - 1" will replace one character by a + match. + {matches} must be a |List|. Each |List| item is one match. + See |complete-items| for the kind of items that are possible. + "longest" in 'completeopt' is ignored. + Note that the after calling this function you need to avoid + inserting anything that would cause completion to stop. + The match can be selected with CTRL-N and CTRL-P as usual with + Insert mode completion. The popup menu will appear if + specified, see |ins-completion-menu|. + Example: > + inoremap =ListMonths() + + func ListMonths() + call complete(col('.'), ['January', 'February', 'March', + \ 'April', 'May', 'June', 'July', 'August', 'September', + \ 'October', 'November', 'December']) + return '' + endfunc +< This isn't very useful, but it shows how it works. Note that + an empty string is returned to avoid a zero being inserted. + + Can also be used as a |method|, the base is passed as the + second argument: > + GetMatches()->complete(col('.')) + +complete_add({expr}) *complete_add()* + Add {expr} to the list of matches. Only to be used by the + function specified with the 'completefunc' option. + Returns 0 for failure (empty string or out of memory), + 1 when the match was added, 2 when the match was already in + the list. + See |complete-functions| for an explanation of {expr}. It is + the same as one item in the list that 'omnifunc' would return. + + Can also be used as a |method|: > + GetMoreMatches()->complete_add() + +complete_check() *complete_check()* + Check for a key typed while looking for completion matches. + This is to be used when looking for matches takes some time. + Returns |TRUE| when searching for matches is to be aborted, + zero otherwise. + Only to be used by the function specified with the + 'completefunc' option. + + +complete_info([{what}]) *complete_info()* + Returns a |Dictionary| with information about Insert mode + completion. See |ins-completion|. + The items are: + mode Current completion mode name string. + See |complete_info_mode| for the values. + pum_visible |TRUE| if popup menu is visible. + See |pumvisible()|. + items List of completion matches. Each item is a + dictionary containing the entries "word", + "abbr", "menu", "kind", "info" and "user_data". + See |complete-items|. + selected Selected item index. First index is zero. + Index is -1 if no item is selected (showing + typed text only, or the last completion after + no item is selected when using the or + keys) + inserted Inserted string. [NOT IMPLEMENTED YET] + + *complete_info_mode* + mode values are: + "" Not in completion mode + "keyword" Keyword completion |i_CTRL-X_CTRL-N| + "ctrl_x" Just pressed CTRL-X |i_CTRL-X| + "scroll" Scrolling with |i_CTRL-X_CTRL-E| or + |i_CTRL-X_CTRL-Y| + "whole_line" Whole lines |i_CTRL-X_CTRL-L| + "files" File names |i_CTRL-X_CTRL-F| + "tags" Tags |i_CTRL-X_CTRL-]| + "path_defines" Definition completion |i_CTRL-X_CTRL-D| + "path_patterns" Include completion |i_CTRL-X_CTRL-I| + "dictionary" Dictionary |i_CTRL-X_CTRL-K| + "thesaurus" Thesaurus |i_CTRL-X_CTRL-T| + "cmdline" Vim Command line |i_CTRL-X_CTRL-V| + "function" User defined completion |i_CTRL-X_CTRL-U| + "omni" Omni completion |i_CTRL-X_CTRL-O| + "spell" Spelling suggestions |i_CTRL-X_s| + "eval" |complete()| completion + "unknown" Other internal modes + + If the optional {what} list argument is supplied, then only + the items listed in {what} are returned. Unsupported items in + {what} are silently ignored. + + To get the position and size of the popup menu, see + |pum_getpos()|. It's also available in |v:event| during the + |CompleteChanged| event. + + Returns an empty |Dictionary| on error. + + Examples: > + " Get all items + call complete_info() + " Get only 'mode' + call complete_info(['mode']) + " Get only 'mode' and 'pum_visible' + call complete_info(['mode', 'pum_visible']) + +< Can also be used as a |method|: > + GetItems()->complete_info() +< + *confirm()* +confirm({msg} [, {choices} [, {default} [, {type}]]]) + confirm() offers the user a dialog, from which a choice can be + made. It returns the number of the choice. For the first + choice this is 1. + Note: confirm() is only supported when compiled with dialog + support, see |+dialog_con| and |+dialog_gui|. + + {msg} is displayed in a |dialog| with {choices} as the + alternatives. When {choices} is missing or empty, "&OK" is + used (and translated). + {msg} is a String, use '\n' to include a newline. Only on + some systems the string is wrapped when it doesn't fit. + + {choices} is a String, with the individual choices separated + by '\n', e.g. > + confirm("Save changes?", "&Yes\n&No\n&Cancel") +< The letter after the '&' is the shortcut key for that choice. + Thus you can type 'c' to select "Cancel". The shortcut does + not need to be the first letter: > + confirm("file has been modified", "&Save\nSave &All") +< For the console, the first letter of each choice is used as + the default shortcut key. Case is ignored. + + The optional {default} argument is the number of the choice + that is made if the user hits . Use 1 to make the first + choice the default one. Use 0 to not set a default. If + {default} is omitted, 1 is used. + + The optional {type} String argument gives the type of dialog. + This is only used for the icon of the GTK, Mac, Motif and + Win32 GUI. It can be one of these values: "Error", + "Question", "Info", "Warning" or "Generic". Only the first + character is relevant. When {type} is omitted, "Generic" is + used. + + If the user aborts the dialog by pressing , CTRL-C, + or another valid interrupt key, confirm() returns 0. + + An example: > + let choice = confirm("What do you want?", + \ "&Apples\n&Oranges\n&Bananas", 2) + if choice == 0 + echo "make up your mind!" + elseif choice == 3 + echo "tasteful" + else + echo "I prefer bananas myself." + endif +< In a GUI dialog, buttons are used. The layout of the buttons + depends on the 'v' flag in 'guioptions'. If it is included, + the buttons are always put vertically. Otherwise, confirm() + tries to put the buttons in one horizontal line. If they + don't fit, a vertical layout is used anyway. For some systems + the horizontal layout is always used. + + Can also be used as a |method|in: > + BuildMessage()->confirm("&Yes\n&No") +< + *copy()* +copy({expr}) Make a copy of {expr}. For Numbers and Strings this isn't + different from using {expr} directly. + When {expr} is a |List| a shallow copy is created. This means + that the original |List| can be changed without changing the + copy, and vice versa. But the items are identical, thus + changing an item changes the contents of both |Lists|. + A |Dictionary| is copied in a similar way as a |List|. + Also see |deepcopy()|. + Can also be used as a |method|: > + mylist->copy() + +cos({expr}) *cos()* + Return the cosine of {expr}, measured in radians, as a |Float|. + {expr} must evaluate to a |Float| or a |Number|. + Returns 0.0 if {expr} is not a |Float| or a |Number|. + Examples: > + :echo cos(100) +< 0.862319 > + :echo cos(-4.01) +< -0.646043 + + Can also be used as a |method|: > + Compute()->cos() + + +cosh({expr}) *cosh()* + Return the hyperbolic cosine of {expr} as a |Float| in the range + [1, inf]. + {expr} must evaluate to a |Float| or a |Number|. + Returns 0.0 if {expr} is not a |Float| or a |Number|. + Examples: > + :echo cosh(0.5) +< 1.127626 > + :echo cosh(-0.5) +< -1.127626 + + Can also be used as a |method|: > + Compute()->cosh() + + +count({comp}, {expr} [, {ic} [, {start}]]) *count()* *E706* + Return the number of times an item with value {expr} appears + in |String|, |List| or |Dictionary| {comp}. + + If {start} is given then start with the item with this index. + {start} can only be used with a |List|. + + When {ic} is given and it's |TRUE| then case is ignored. + + When {comp} is a string then the number of not overlapping + occurrences of {expr} is returned. Zero is returned when + {expr} is an empty string. + + Can also be used as a |method|: > + mylist->count(val) +< + *cscope_connection()* +cscope_connection([{num} , {dbpath} [, {prepend}]]) + Checks for the existence of a |cscope| connection. If no + parameters are specified, then the function returns: + 0, if cscope was not available (not compiled in), or + if there are no cscope connections; + 1, if there is at least one cscope connection. + + If parameters are specified, then the value of {num} + determines how existence of a cscope connection is checked: + + {num} Description of existence check + ----- ------------------------------ + 0 Same as no parameters (e.g., "cscope_connection()"). + 1 Ignore {prepend}, and use partial string matches for + {dbpath}. + 2 Ignore {prepend}, and use exact string matches for + {dbpath}. + 3 Use {prepend}, use partial string matches for both + {dbpath} and {prepend}. + 4 Use {prepend}, use exact string matches for both + {dbpath} and {prepend}. + + Note: All string comparisons are case sensitive! + + Examples. Suppose we had the following (from ":cs show"): > + + # pid database name prepend path + 0 27664 cscope.out /usr/local +< + Invocation Return Val ~ + ---------- ---------- > + cscope_connection() 1 + cscope_connection(1, "out") 1 + cscope_connection(2, "out") 0 + cscope_connection(3, "out") 0 + cscope_connection(3, "out", "local") 1 + cscope_connection(4, "out") 0 + cscope_connection(4, "out", "local") 0 + cscope_connection(4, "cscope.out", "/usr/local") 1 +< +cursor({lnum}, {col} [, {off}]) *cursor()* +cursor({list}) + Positions the cursor at the column (byte count) {col} in the + line {lnum}. The first column is one. + + When there is one argument {list} this is used as a |List| + with two, three or four item: + [{lnum}, {col}] + [{lnum}, {col}, {off}] + [{lnum}, {col}, {off}, {curswant}] + This is like the return value of |getpos()| or |getcurpos()|, + but without the first item. + + To position the cursor using {col} as the character count, use + |setcursorcharpos()|. + + Does not change the jumplist. + {lnum} is used like with |getline()|, except that if {lnum} is + zero, the cursor will stay in the current line. + If {lnum} is greater than the number of lines in the buffer, + the cursor will be positioned at the last line in the buffer. + If {col} is greater than the number of bytes in the line, + the cursor will be positioned at the last character in the + line. + If {col} is zero, the cursor will stay in the current column. + If {curswant} is given it is used to set the preferred column + for vertical movement. Otherwise {col} is used. + + When 'virtualedit' is used {off} specifies the offset in + screen columns from the start of the character. E.g., a + position within a or after the last character. + Returns 0 when the position could be set, -1 otherwise. + + Can also be used as a |method|: > + GetCursorPos()->cursor() + +debugbreak({pid}) *debugbreak()* + Specifically used to interrupt a program being debugged. It + will cause process {pid} to get a SIGTRAP. Behavior for other + processes is undefined. See |terminal-debugger|. + {only available on MS-Windows} + + Returns |TRUE| if successfully interrupted the program. + Otherwise returns |FALSE|. + + Can also be used as a |method|: > + GetPid()->debugbreak() + +deepcopy({expr} [, {noref}]) *deepcopy()* *E698* + Make a copy of {expr}. For Numbers and Strings this isn't + different from using {expr} directly. + When {expr} is a |List| a full copy is created. This means + that the original |List| can be changed without changing the + copy, and vice versa. When an item is a |List| or + |Dictionary|, a copy for it is made, recursively. Thus + changing an item in the copy does not change the contents of + the original |List|. + A |Dictionary| is copied in a similar way as a |List|. + + When {noref} is omitted or zero a contained |List| or + |Dictionary| is only copied once. All references point to + this single copy. With {noref} set to 1 every occurrence of a + |List| or |Dictionary| results in a new copy. This also means + that a cyclic reference causes deepcopy() to fail. + *E724* + Nesting is possible up to 100 levels. When there is an item + that refers back to a higher level making a deep copy with + {noref} set to 1 will fail. + Also see |copy()|. + + Can also be used as a |method|: > + GetObject()->deepcopy() + +delete({fname} [, {flags}]) *delete()* + Without {flags} or with {flags} empty: Deletes the file by the + name {fname}. + + This also works when {fname} is a symbolic link. The symbolic + link itself is deleted, not what it points to. + + When {flags} is "d": Deletes the directory by the name + {fname}. This fails when directory {fname} is not empty. + + When {flags} is "rf": Deletes the directory by the name + {fname} and everything in it, recursively. BE CAREFUL! + Note: on MS-Windows it is not possible to delete a directory + that is being used. + + The result is a Number, which is 0/false if the delete + operation was successful and -1/true when the deletion failed + or partly failed. + + Use |remove()| to delete an item from a |List|. + To delete a line from the buffer use |:delete| or + |deletebufline()|. + + Can also be used as a |method|: > + GetName()->delete() + +deletebufline({buf}, {first} [, {last}]) *deletebufline()* + Delete lines {first} to {last} (inclusive) from buffer {buf}. + If {last} is omitted then delete line {first} only. + On success 0 is returned, on failure 1 is returned. + + This function works only for loaded buffers. First call + |bufload()| if needed. + + For the use of {buf}, see |bufname()| above. + + {first} and {last} are used like with |getline()|. Note that + when using |line()| this refers to the current buffer. Use "$" + to refer to the last line in buffer {buf}. + + Can also be used as a |method|: > + GetBuffer()->deletebufline(1) +< + *did_filetype()* +did_filetype() Returns |TRUE| when autocommands are being executed and the + FileType event has been triggered at least once. Can be used + to avoid triggering the FileType event again in the scripts + that detect the file type. |FileType| + Returns |FALSE| when `:setf FALLBACK` was used. + When editing another file, the counter is reset, thus this + really checks if the FileType event has been triggered for the + current buffer. This allows an autocommand that starts + editing another buffer to set 'filetype' and load a syntax + file. + +diff_filler({lnum}) *diff_filler()* + Returns the number of filler lines above line {lnum}. + These are the lines that were inserted at this point in + another diff'ed window. These filler lines are shown in the + display but don't exist in the buffer. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. + Returns 0 if the current window is not in diff mode. + + Can also be used as a |method|: > + GetLnum()->diff_filler() + +diff_hlID({lnum}, {col}) *diff_hlID()* + Returns the highlight ID for diff mode at line {lnum} column + {col} (byte index). When the current line does not have a + diff change zero is returned. + {lnum} is used like with |getline()|. Thus "." is the current + line, "'m" mark m, etc. + {col} is 1 for the leftmost column, {lnum} is 1 for the first + line. + The highlight ID can be used with |synIDattr()| to obtain + syntax information about the highlighting. + + Can also be used as a |method|: > + GetLnum()->diff_hlID(col) +< + +digraph_get({chars}) *digraph_get()* *E1214* + Return the digraph of {chars}. This should be a string with + exactly two characters. If {chars} are not just two + characters, or the digraph of {chars} does not exist, an error + is given and an empty string is returned. + + The character will be converted from Unicode to 'encoding' + when needed. This does require the conversion to be + available, it might fail. + + Also see |digraph_getlist()|. + + Examples: > + " Get a built-in digraph + :echo digraph_get('00') " Returns '鈭' + + " Get a user-defined digraph + :call digraph_set('aa', '銇') + :echo digraph_get('aa') " Returns '銇' +< + Can also be used as a |method|: > + GetChars()->digraph_get() +< + This function works only when compiled with the |+digraphs| + feature. If this feature is disabled, this function will + display an error message. + + +digraph_getlist([{listall}]) *digraph_getlist()* + Return a list of digraphs. If the {listall} argument is given + and it is TRUE, return all digraphs, including the default + digraphs. Otherwise, return only user-defined digraphs. + + The characters will be converted from Unicode to 'encoding' + when needed. This does require the conservation to be + available, it might fail. + + Also see |digraph_get()|. + + Examples: > + " Get user-defined digraphs + :echo digraph_getlist() + + " Get all the digraphs, including default digraphs + :echo digraph_getlist(1) +< + Can also be used as a |method|: > + GetNumber()->digraph_getlist() +< + This function works only when compiled with the |+digraphs| + feature. If this feature is disabled, this function will + display an error message. + + +digraph_set({chars}, {digraph}) *digraph_set()* + Add digraph {chars} to the list. {chars} must be a string + with two characters. {digraph} is a string with one UTF-8 + encoded character. *E1215* + Be careful, composing characters are NOT ignored. This + function is similar to |:digraphs| command, but useful to add + digraphs start with a white space. + + The function result is v:true if |digraph| is registered. If + this fails an error message is given and v:false is returned. + + If you want to define multiple digraphs at once, you can use + |digraph_setlist()|. + + Example: > + call digraph_set(' ', '銇') +< + Can be used as a |method|: > + GetString()->digraph_set('銇') +< + This function works only when compiled with the |+digraphs| + feature. If this feature is disabled, this function will + display an error message. + + +digraph_setlist({digraphlist}) *digraph_setlist()* + Similar to |digraph_set()| but this function can add multiple + digraphs at once. {digraphlist} is a list composed of lists, + where each list contains two strings with {chars} and + {digraph} as in |digraph_set()|. *E1216* + Example: > + call digraph_setlist([['aa', '銇'], ['ii', '銇']]) +< + It is similar to the following: > + for [chars, digraph] in [['aa', '銇'], ['ii', '銇']] + call digraph_set(chars, digraph) + endfor +< Except that the function returns after the first error, + following digraphs will not be added. + + Can be used as a |method|: > + GetList()->digraph_setlist() +< + This function works only when compiled with the |+digraphs| + feature. If this feature is disabled, this function will + display an error message. + + +echoraw({string}) *echoraw()* + Output {string} as-is, including unprintable characters. + This can be used to output a terminal code. For example, to + disable modifyOtherKeys: > + call echoraw(&t_TE) +< and to enable it again: > + call echoraw(&t_TI) +< Use with care, you can mess up the terminal this way. + + +empty({expr}) *empty()* + Return the Number 1 if {expr} is empty, zero otherwise. + - A |List| or |Dictionary| is empty when it does not have any + items. + - A |String| is empty when its length is zero. + - A |Number| and |Float| are empty when their value is zero. + - |v:false|, |v:none| and |v:null| are empty, |v:true| is not. + - A |Job| is empty when it failed to start. + - A |Channel| is empty when it is closed. + - A |Blob| is empty when its length is zero. + + For a long |List| this is much faster than comparing the + length with zero. + + Can also be used as a |method|: > + mylist->empty() + +environ() *environ()* + Return all of environment variables as dictionary. You can + check if an environment variable exists like this: > + :echo has_key(environ(), 'HOME') +< Note that the variable name may be CamelCase; to ignore case + use this: > + :echo index(keys(environ()), 'HOME', 0, 1) != -1 + + +err_teapot([{expr}]) *err_teapot()* + Produce an error with number 418, needed for implementation of + RFC 2324. + If {expr} is present and it is TRUE error 503 is given, + indicating that coffee is temporarily not available. + If {expr} is present it must be a String. + + +escape({string}, {chars}) *escape()* + Escape the characters in {chars} that occur in {string} with a + backslash. Example: > + :echo escape('c:\program files\vim', ' \') +< results in: > + c:\\program\ files\\vim +< Also see |shellescape()| and |fnameescape()|. + + Can also be used as a |method|: > + GetText()->escape(' \') +< + *eval()* +eval({string}) Evaluate {string} and return the result. Especially useful to + turn the result of |string()| back into the original value. + This works for Numbers, Floats, Strings, Blobs and composites + of them. Also works for |Funcref|s that refer to existing + functions. + + Can also be used as a |method|: > + argv->join()->eval() + +eventhandler() *eventhandler()* + Returns 1 when inside an event handler. That is that Vim got + interrupted while waiting for the user to type a character, + e.g., when dropping a file on Vim. This means interactive + commands cannot be used. Otherwise zero is returned. + +executable({expr}) *executable()* + This function checks if an executable with the name {expr} + exists. {expr} must be the name of the program without any + arguments. + executable() uses the value of $PATH and/or the normal + searchpath for programs. *PATHEXT* + On MS-Windows the ".exe", ".bat", etc. can optionally be + included. Then the extensions in $PATHEXT are tried. Thus if + "foo.exe" does not exist, "foo.exe.bat" can be found. If + $PATHEXT is not set then ".com;.exe;.bat;.cmd" is used. A dot + by itself can be used in $PATHEXT to try using the name + without an extension. When 'shell' looks like a Unix shell, + then the name is also tried without adding an extension. + On MS-Windows it only checks if the file exists and is not a + directory, not if it's really executable. + On MS-Windows an executable in the same directory as Vim is + normally found. Since this directory is added to $PATH it + should also work to execute it |win32-PATH|. This can be + disabled by setting the $NoDefaultCurrentDirectoryInExePath + environment variable. *NoDefaultCurrentDirectoryInExePath* + The result is a Number: + 1 exists + 0 does not exist + -1 not implemented on this system + |exepath()| can be used to get the full path of an executable. + + Can also be used as a |method|: > + GetCommand()->executable() + +execute({command} [, {silent}]) *execute()* + Execute an Ex command or commands and return the output as a + string. + {command} can be a string or a List. In case of a List the + lines are executed one by one. + This is more or less equivalent to: > + redir => var + {command} + redir END +< Except that line continuation in {command} is not recognized. + + The optional {silent} argument can have these values: + "" no `:silent` used + "silent" `:silent` used + "silent!" `:silent!` used + The default is "silent". Note that with "silent!", unlike + `:redir`, error messages are dropped. When using an external + command the screen may be messed up, use `system()` instead. + *E930* + It is not possible to use `:redir` anywhere in {command}. + + To get a list of lines use `split()` on the result: > + execute('args')->split("\n") + +< To execute a command in another window than the current one + use `win_execute()`. + + When used recursively the output of the recursive call is not + included in the output of the higher level call. + + Can also be used as a |method|: > + GetCommand()->execute() + +exepath({expr}) *exepath()* + If {expr} is an executable and is either an absolute path, a + relative path or found in $PATH, return the full path. + Note that the current directory is used when {expr} starts + with "./", which may be a problem for Vim: > + echo exepath(v:progpath) +< If {expr} cannot be found in $PATH or is not executable then + an empty string is returned. + + Can also be used as a |method|: > + GetCommand()->exepath() +< + *exists()* +exists({expr}) The result is a Number, which is |TRUE| if {expr} is defined, + zero otherwise. + + Note: In a compiled |:def| function the evaluation is done at + runtime. Use `exists_compiled()` to evaluate the expression + at compile time. + + For checking for a supported feature use |has()|. + For checking if a file exists use |filereadable()|. + + The {expr} argument is a string, which contains one of these: + varname internal variable (see + dict.key |internal-variables|). Also works + list[i] for |curly-braces-names|, |Dictionary| + import.Func entries, |List| items, imported + items, etc. + Does not work for local variables in a + compiled `:def` function. + Also works for a function in |Vim9| + script, since it can be used as a + function reference. + Beware that evaluating an index may + cause an error message for an invalid + expression. E.g.: > + :let l = [1, 2, 3] + :echo exists("l[5]") +< 0 > + :echo exists("l[xx]") +< E121: Undefined variable: xx + 0 + &option-name Vim option (only checks if it exists, + not if it really works) + +option-name Vim option that works. + $ENVNAME environment variable (could also be + done by comparing with an empty + string) + *funcname built-in function (see |functions|) + or user defined function (see + |user-functions|) that is implemented. + Also works for a variable that is a + Funcref. + ?funcname built-in function that could be + implemented; to be used to check if + "funcname" is valid + :cmdname Ex command: built-in command, user + command or command modifier |:command|. + Returns: + 1 for match with start of a command + 2 full match with a command + 3 matches several user commands + To check for a supported command + always check the return value to be 2. + :2match The |:2match| command. + :3match The |:3match| command (but you + probably should not use it, it is + reserved for internal usage) + #event autocommand defined for this event + #event#pattern autocommand defined for this event and + pattern (the pattern is taken + literally and compared to the + autocommand patterns character by + character) + #group autocommand group exists + #group#event autocommand defined for this group and + event. + #group#event#pattern + autocommand defined for this group, + event and pattern. + ##event autocommand for this event is + supported. + + Examples: > + exists("&shortname") + exists("$HOSTNAME") + exists("*strftime") + exists("*s:MyFunc") " only for legacy script + exists("*MyFunc") + exists("bufcount") + exists(":Make") + exists("#CursorHold") + exists("#BufReadPre#*.gz") + exists("#filetypeindent") + exists("#filetypeindent#FileType") + exists("#filetypeindent#FileType#*") + exists("##ColorScheme") +< There must be no space between the symbol (&/$/*/#) and the + name. + There must be no extra characters after the name, although in + a few cases this is ignored. That may become stricter in the + future, thus don't count on it! + Working example: > + exists(":make") +< NOT working example: > + exists(":make install") + +< Note that the argument must be a string, not the name of the + variable itself. For example: > + exists(bufcount) +< This doesn't check for existence of the "bufcount" variable, + but gets the value of "bufcount", and checks if that exists. + + Can also be used as a |method|: > + Varname()->exists() +< + +exists_compiled({expr}) *exists_compiled()* + Like `exists()` but evaluated at compile time. This is useful + to skip a block where a function is used that would otherwise + give an error: > + if exists_compiled('*ThatFunction') + ThatFunction('works') + endif +< If `exists()` were used then a compilation error would be + given if ThatFunction() is not defined. + + {expr} must be a literal string. *E1232* + Can only be used in a |:def| function. *E1233* + This does not work to check for arguments or local variables. + + +exp({expr}) *exp()* + Return the exponential of {expr} as a |Float| in the range + [0, inf]. + {expr} must evaluate to a |Float| or a |Number|. + Returns 0.0 if {expr} is not a |Float| or a |Number|. + Examples: > + :echo exp(2) +< 7.389056 > + :echo exp(-1) +< 0.367879 + + Can also be used as a |method|: > + Compute()->exp() + + +expand({string} [, {nosuf} [, {list}]]) *expand()* + Expand wildcards and the following special keywords in + {string}. 'wildignorecase' applies. + + If {list} is given and it is |TRUE|, a List will be returned. + Otherwise the result is a String and when there are several + matches, they are separated by characters. [Note: in + version 5.0 a space was used, which caused problems when a + file name contains a space] + + If the expansion fails, the result is an empty string. A name + for a non-existing file is not included, unless {string} does + not start with '%', '#' or '<', see below. + + When {string} starts with '%', '#' or '<', the expansion is + done like for the |cmdline-special| variables with their + associated modifiers. Here is a short overview: + + % current file name + # alternate file name + #n alternate file name n + file name under the cursor + autocmd file name + autocmd buffer number (as a String!) + autocmd matched name + C expression under the cursor + sourced script file or function name + sourced script line number or function + line number + script file line number, also when in + a function + "123_" where "123" is the + current script ID || + + +See |mysyntaxfile-add| for installing script languages permanently. + + +APACHE *apache.vim* *ft-apache-syntax* + +The apache syntax file provides syntax highlighting for Apache HTTP server +version 2.2.3. + + + *asm.vim* *asmh8300.vim* *nasm.vim* *masm.vim* *asm68k* +ASSEMBLY *ft-asm-syntax* *ft-asmh8300-syntax* *ft-nasm-syntax* + *ft-masm-syntax* *ft-asm68k-syntax* *fasm.vim* + +Files matching "*.i" could be Progress or Assembly. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_i = "asm" +Replace "asm" with the type of assembly you use. + +There are many types of assembly languages that all use the same file name +extensions. Therefore you will have to select the type yourself, or add a +line in the assembly file that Vim will recognize. Currently these syntax +files are included: + asm GNU assembly (the default) + asm68k Motorola 680x0 assembly + asmh8300 Hitachi H-8300 version of GNU assembly + ia64 Intel Itanium 64 + fasm Flat assembly (http://flatassembler.net) + masm Microsoft assembly (probably works for any 80x86) + nasm Netwide assembly + tasm Turbo Assembly (with opcodes 80x86 up to Pentium, and + MMX) + pic PIC assembly (currently for PIC16F84) + +The most flexible is to add a line in your assembly file containing: > + asmsyntax=nasm +Replace "nasm" with the name of the real assembly syntax. This line must be +one of the first five lines in the file. No non-white text must be +immediately before or after this text. Note that specifying asmsyntax=foo is +equivalent to setting ft=foo in a |modeline|, and that in case of a conflict +between the two settings the one from the modeline will take precedence (in +particular, if you have ft=asm in the modeline, you will get the GNU syntax +highlighting regardless of what is specified as asmsyntax). + +The syntax type can always be overruled for a specific buffer by setting the +b:asmsyntax variable: > + :let b:asmsyntax = "nasm" + +If b:asmsyntax is not set, either automatically or by hand, then the value of +the global variable asmsyntax is used. This can be seen as a default assembly +language: > + :let asmsyntax = "nasm" + +As a last resort, if nothing is defined, the "asm" syntax is used. + + +Netwide assembler (nasm.vim) optional highlighting ~ + +To enable a feature: > + :let {variable}=1|set syntax=nasm +To disable a feature: > + :unlet {variable} |set syntax=nasm + +Variable Highlight ~ +nasm_loose_syntax unofficial parser allowed syntax not as Error + (parser dependent; not recommended) +nasm_ctx_outside_macro contexts outside macro not as Error +nasm_no_warn potentially risky syntax not as ToDo + + +ASPPERL and ASPVBS *ft-aspperl-syntax* *ft-aspvbs-syntax* + +*.asp and *.asa files could be either Perl or Visual Basic script. Since it's +hard to detect this you can set two global variables to tell Vim what you are +using. For Perl script use: > + :let g:filetype_asa = "aspperl" + :let g:filetype_asp = "aspperl" +For Visual Basic use: > + :let g:filetype_asa = "aspvbs" + :let g:filetype_asp = "aspvbs" + + +BAAN *baan.vim* *baan-syntax* + +The baan.vim gives syntax support for BaanC of release BaanIV up to SSA ERP LN +for both 3 GL and 4 GL programming. Large number of standard defines/constants +are supported. + +Some special violation of coding standards will be signalled when one specify +in ones |.vimrc|: > + let baan_code_stds=1 + +*baan-folding* + +Syntax folding can be enabled at various levels through the variables +mentioned below (Set those in your |.vimrc|). The more complex folding on +source blocks and SQL can be CPU intensive. + +To allow any folding and enable folding at function level use: > + let baan_fold=1 +Folding can be enabled at source block level as if, while, for ,... The +indentation preceding the begin/end keywords has to match (spaces are not +considered equal to a tab). > + let baan_fold_block=1 +Folding can be enabled for embedded SQL blocks as SELECT, SELECTDO, +SELECTEMPTY, ... The indentation preceding the begin/end keywords has to +match (spaces are not considered equal to a tab). > + let baan_fold_sql=1 +Note: Block folding can result in many small folds. It is suggested to |:set| +the options 'foldminlines' and 'foldnestmax' in |.vimrc| or use |:setlocal| in +.../after/syntax/baan.vim (see |after-directory|). Eg: > + set foldminlines=5 + set foldnestmax=6 + + +BASIC *basic.vim* *vb.vim* *ft-basic-syntax* *ft-vb-syntax* + +Both Visual Basic and "normal" BASIC use the extension ".bas". To detect +which one should be used, Vim checks for the string "VB_Name" in the first +five lines of the file. If it is not found, filetype will be "basic", +otherwise "vb". Files with the ".frm" extension will always be seen as Visual +Basic. + +If the automatic detection doesn't work for you or you only edit, for +example, FreeBASIC files, use this in your startup vimrc: > + :let filetype_bas = "freebasic" + + +C *c.vim* *ft-c-syntax* + +A few things in C highlighting are optional. To enable them assign any value +(including zero) to the respective variable. Example: > + :let c_comment_strings = 1 + :let c_no_bracket_error = 0 +To disable them use `:unlet`. Example: > + :unlet c_comment_strings +Setting the value to zero doesn't work! + +An alternative is to switch to the C++ highlighting: > + :set filetype=cpp + +Variable Highlight ~ +*c_gnu* GNU gcc specific items +*c_comment_strings* strings and numbers inside a comment +*c_space_errors* trailing white space and spaces before a +*c_no_trail_space_error* ... but no trailing spaces +*c_no_tab_space_error* ... but no spaces before a +*c_no_bracket_error* don't highlight {}; inside [] as errors +*c_no_curly_error* don't highlight {}; inside [] and () as errors; + ...except { and } in first column + Default is to highlight them, otherwise you + can't spot a missing ")". +*c_curly_error* highlight a missing } by finding all pairs; this + forces syncing from the start of the file, can be slow +*c_no_ansi* don't do standard ANSI types and constants +*c_ansi_typedefs* ... but do standard ANSI types +*c_ansi_constants* ... but do standard ANSI constants +*c_no_utf* don't highlight \u and \U in strings +*c_syntax_for_h* for *.h files use C syntax instead of C++ and use objc + syntax instead of objcpp +*c_no_if0* don't highlight "#if 0" blocks as comments +*c_no_cformat* don't highlight %-formats in strings +*c_no_c99* don't highlight C99 standard items +*c_no_c11* don't highlight C11 standard items +*c_no_bsd* don't highlight BSD specific types + +When 'foldmethod' is set to "syntax" then /* */ comments and { } blocks will +become a fold. If you don't want comments to become a fold use: > + :let c_no_comment_fold = 1 +"#if 0" blocks are also folded, unless: > + :let c_no_if0_fold = 1 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "c_minlines" internal variable +to a larger number: > + :let c_minlines = 100 +This will make the syntax synchronization start 100 lines before the first +displayed line. The default value is 50 (15 when c_no_if0 is set). The +disadvantage of using a larger number is that redrawing can become slow. + +When using the "#if 0" / "#endif" comment highlighting, notice that this only +works when the "#if 0" is within "c_minlines" from the top of the window. If +you have a long "#if 0" construct it will not be highlighted correctly. + +To match extra items in comments, use the cCommentGroup cluster. +Example: > + :au Syntax c call MyCadd() + :function MyCadd() + : syn keyword cMyItem contained Ni + : syn cluster cCommentGroup add=cMyItem + : hi link cMyItem Title + :endfun + +ANSI constants will be highlighted with the "cConstant" group. This includes +"NULL", "SIG_IGN" and others. But not "TRUE", for example, because this is +not in the ANSI standard. If you find this confusing, remove the cConstant +highlighting: > + :hi link cConstant NONE + +If you see '{' and '}' highlighted as an error where they are OK, reset the +highlighting for cErrInParen and cErrInBracket. + +If you want to use folding in your C files, you can add these lines in a file +in the "after" directory in 'runtimepath'. For Unix this would be +~/.vim/after/syntax/c.vim. > + syn sync fromstart + set foldmethod=syntax + +CH *ch.vim* *ft-ch-syntax* + +C/C++ interpreter. Ch has similar syntax highlighting to C and builds upon +the C syntax file. See |c.vim| for all the settings that are available for C. + +By setting a variable you can tell Vim to use Ch syntax for *.h files, instead +of C or C++: > + :let ch_syntax_for_h = 1 + + +CHILL *chill.vim* *ft-chill-syntax* + +Chill syntax highlighting is similar to C. See |c.vim| for all the settings +that are available. Additionally there is: + +chill_space_errors like c_space_errors +chill_comment_string like c_comment_strings +chill_minlines like c_minlines + + +CHANGELOG *changelog.vim* *ft-changelog-syntax* + +ChangeLog supports highlighting spaces at the start of a line. +If you do not like this, add following line to your .vimrc: > + let g:changelog_spacing_errors = 0 +This works the next time you edit a changelog file. You can also use +"b:changelog_spacing_errors" to set this per buffer (before loading the syntax +file). + +You can change the highlighting used, e.g., to flag the spaces as an error: > + :hi link ChangelogError Error +Or to avoid the highlighting: > + :hi link ChangelogError NONE +This works immediately. + + +CLOJURE *ft-clojure-syntax* + + *g:clojure_syntax_keywords* + +Syntax highlighting of public vars in "clojure.core" is provided by default, +but additional symbols can be highlighted by adding them to the +|g:clojure_syntax_keywords| variable. The value should be a |Dictionary| of +syntax group names, each containing a |List| of identifiers. +> + let g:clojure_syntax_keywords = { + \ 'clojureMacro': ["defproject", "defcustom"], + \ 'clojureFunc': ["string/join", "string/replace"] + \ } +< +Refer to the Clojure syntax script for valid syntax group names. + +There is also *b:clojure_syntax_keywords* which is a buffer-local variant of +this variable intended for use by plugin authors to highlight symbols +dynamically. + +By setting the *b:clojure_syntax_without_core_keywords* variable, vars from +"clojure.core" will not be highlighted by default. This is useful for +namespaces that have set `(:refer-clojure :only [])` + + + *g:clojure_fold* + +Setting |g:clojure_fold| to `1` will enable the folding of Clojure code. Any +list, vector or map that extends over more than one line can be folded using +the standard Vim |fold-commands|. + + + *g:clojure_discard_macro* + +Set this variable to `1` to enable basic highlighting of Clojure's "discard +reader macro". +> + #_(defn foo [x] + (println x)) +< +Note that this option will not correctly highlight stacked discard macros +(e.g. `#_#_`). + + +COBOL *cobol.vim* *ft-cobol-syntax* + +COBOL highlighting has different needs for legacy code than it does for fresh +development. This is due to differences in what is being done (maintenance +versus development) and other factors. To enable legacy code highlighting, +add this line to your .vimrc: > + :let cobol_legacy_code = 1 +To disable it again, use this: > + :unlet cobol_legacy_code + + +COLD FUSION *coldfusion.vim* *ft-coldfusion-syntax* + +The ColdFusion has its own version of HTML comments. To turn on ColdFusion +comment highlighting, add the following line to your startup file: > + + :let html_wrong_comments = 1 + +The ColdFusion syntax file is based on the HTML syntax file. + + +CPP *cpp.vim* *ft-cpp-syntax* + +Most things are the same as |ft-c-syntax|. + +Variable Highlight ~ +cpp_no_cpp11 don't highlight C++11 standard items +cpp_no_cpp14 don't highlight C++14 standard items +cpp_no_cpp17 don't highlight C++17 standard items +cpp_no_cpp20 don't highlight C++20 standard items + + +CSH *csh.vim* *ft-csh-syntax* + +This covers the shell named "csh". Note that on some systems tcsh is actually +used. + +Detecting whether a file is csh or tcsh is notoriously hard. Some systems +symlink /bin/csh to /bin/tcsh, making it almost impossible to distinguish +between csh and tcsh. In case VIM guesses wrong you can set the +"filetype_csh" variable. For using csh: *g:filetype_csh* +> + :let g:filetype_csh = "csh" + +For using tcsh: > + + :let g:filetype_csh = "tcsh" + +Any script with a tcsh extension or a standard tcsh filename (.tcshrc, +tcsh.tcshrc, tcsh.login) will have filetype tcsh. All other tcsh/csh scripts +will be classified as tcsh, UNLESS the "filetype_csh" variable exists. If the +"filetype_csh" variable exists, the filetype will be set to the value of the +variable. + + +CYNLIB *cynlib.vim* *ft-cynlib-syntax* + +Cynlib files are C++ files that use the Cynlib class library to enable +hardware modelling and simulation using C++. Typically Cynlib files have a .cc +or a .cpp extension, which makes it very difficult to distinguish them from a +normal C++ file. Thus, to enable Cynlib highlighting for .cc files, add this +line to your .vimrc file: > + + :let cynlib_cyntax_for_cc=1 + +Similarly for cpp files (this extension is only usually used in Windows) > + + :let cynlib_cyntax_for_cpp=1 + +To disable these again, use this: > + + :unlet cynlib_cyntax_for_cc + :unlet cynlib_cyntax_for_cpp +< + +CWEB *cweb.vim* *ft-cweb-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit Progress at all, use this in your +startup vimrc: > + :let filetype_w = "cweb" + + +DART *dart.vim* *ft-dart-syntax* + +Dart is an object-oriented, typed, class defined, garbage collected language +used for developing mobile, desktop, web, and back-end applications. Dart uses +a C-like syntax derived from C, Java, and JavaScript, with features adopted +from Smalltalk, Python, Ruby, and others. + +More information about the language and its development environment at the +official Dart language website at https://dart.dev + +dart.vim syntax detects and highlights Dart statements, reserved words, +type declarations, storage classes, conditionals, loops, interpolated values, +and comments. There is no support idioms from Flutter or any other Dart +framework. + +Changes, fixes? Submit an issue or pull request via: + +https://github.com/pr3d4t0r/dart-vim-syntax/ + + +DESKTOP *desktop.vim* *ft-desktop-syntax* + +Primary goal of this syntax file is to highlight .desktop and .directory files +according to freedesktop.org standard: +https://specifications.freedesktop.org/desktop-entry-spec/latest/ +To highlight nonstandard extensions that does not begin with X-, set > + let g:desktop_enable_nonstd = 1 +Note that this may cause wrong highlight. +To highlight KDE-reserved features, set > + let g:desktop_enable_kde = 1 +g:desktop_enable_kde follows g:desktop_enable_nonstd if not supplied + + +DIFF *diff.vim* + +The diff highlighting normally finds translated headers. This can be slow if +there are very long lines in the file. To disable translations: > + + :let diff_translations = 0 + +Also see |diff-slow|. + +DIRCOLORS *dircolors.vim* *ft-dircolors-syntax* + +The dircolors utility highlighting definition has one option. It exists to +provide compatibility with the Slackware GNU/Linux distributions version of +the command. It adds a few keywords that are generally ignored by most +versions. On Slackware systems, however, the utility accepts the keywords and +uses them for processing. To enable the Slackware keywords add the following +line to your startup file: > + let dircolors_is_slackware = 1 + + +DOCBOOK *docbk.vim* *ft-docbk-syntax* *docbook* +DOCBOOK XML *docbkxml.vim* *ft-docbkxml-syntax* +DOCBOOK SGML *docbksgml.vim* *ft-docbksgml-syntax* + +There are two types of DocBook files: SGML and XML. To specify what type you +are using the "b:docbk_type" variable should be set. Vim does this for you +automatically if it can recognize the type. When Vim can't guess it the type +defaults to XML. +You can set the type manually: > + :let docbk_type = "sgml" +or: > + :let docbk_type = "xml" +You need to do this before loading the syntax file, which is complicated. +Simpler is setting the filetype to "docbkxml" or "docbksgml": > + :set filetype=docbksgml +or: > + :set filetype=docbkxml + +You can specify the DocBook version: > + :let docbk_ver = 3 +When not set 4 is used. + + +DOSBATCH *dosbatch.vim* *ft-dosbatch-syntax* + +Select the set of Windows Command interpreter extensions that should be +supported with the variable dosbatch_cmdextversion. For versions of Windows +NT (before Windows 2000) this should have the value of 1. For Windows 2000 +and later it should be 2. +Select the version you want with the following line: > + + :let dosbatch_cmdextversion = 1 + +If this variable is not defined it defaults to a value of 2 to support +Windows 2000 and later. + +The original MS-DOS supports an idiom of using a double colon (::) as an +alternative way to enter a comment line. This idiom can be used with the +current Windows Command Interpreter, but it can lead to problems when used +inside ( ... ) command blocks. You can find a discussion about this on +Stack Overflow - + +https://stackoverflow.com/questions/12407800/which-comment-style-should-i-use-in-batch-files + +To allow the use of the :: idiom for comments in the Windows Command +Interpreter or working with MS-DOS bat files, set the +dosbatch_colons_comment variable to anything: > + + :let dosbatch_colons_comment = 1 + +There is an option that covers whether *.btm files should be detected as type +"dosbatch" (MS-DOS batch files) or type "btm" (4DOS batch files). The latter +is used by default. You may select the former with the following line: > + + :let g:dosbatch_syntax_for_btm = 1 + +If this variable is undefined or zero, btm syntax is selected. + + +DOXYGEN *doxygen.vim* *doxygen-syntax* + +Doxygen generates code documentation using a special documentation format +(similar to Javadoc). This syntax script adds doxygen highlighting to c, cpp, +idl and php files, and should also work with java. + +There are a few of ways to turn on doxygen formatting. It can be done +explicitly or in a modeline by appending '.doxygen' to the syntax of the file. +Example: > + :set syntax=c.doxygen +or > + // vim:syntax=c.doxygen + +It can also be done automatically for C, C++, C#, IDL and PHP files by setting +the global or buffer-local variable load_doxygen_syntax. This is done by +adding the following to your .vimrc. > + :let g:load_doxygen_syntax=1 + +There are a couple of variables that have an effect on syntax highlighting, +and are to do with non-standard highlighting options. + +Variable Default Effect ~ +g:doxygen_enhanced_color +g:doxygen_enhanced_colour 0 Use non-standard highlighting for + doxygen comments. + +doxygen_my_rendering 0 Disable rendering of HTML bold, italic + and html_my_rendering underline. + +doxygen_javadoc_autobrief 1 Set to 0 to disable javadoc autobrief + colour highlighting. + +doxygen_end_punctuation '[.]' Set to regexp match for the ending + punctuation of brief + +There are also some highlight groups worth mentioning as they can be useful in +configuration. + +Highlight Effect ~ +doxygenErrorComment The colour of an end-comment when missing + punctuation in a code, verbatim or dot section +doxygenLinkError The colour of an end-comment when missing the + \endlink from a \link section. + + +DTD *dtd.vim* *ft-dtd-syntax* + +The DTD syntax highlighting is case sensitive by default. To disable +case-sensitive highlighting, add the following line to your startup file: > + + :let dtd_ignore_case=1 + +The DTD syntax file will highlight unknown tags as errors. If +this is annoying, it can be turned off by setting: > + + :let dtd_no_tag_errors=1 + +before sourcing the dtd.vim syntax file. +Parameter entity names are highlighted in the definition using the +'Type' highlighting group and 'Comment' for punctuation and '%'. +Parameter entity instances are highlighted using the 'Constant' +highlighting group and the 'Type' highlighting group for the +delimiters % and ;. This can be turned off by setting: > + + :let dtd_no_param_entities=1 + +The DTD syntax file is also included by xml.vim to highlight included dtd's. + + +EIFFEL *eiffel.vim* *ft-eiffel-syntax* + +While Eiffel is not case-sensitive, its style guidelines are, and the +syntax highlighting file encourages their use. This also allows to +highlight class names differently. If you want to disable case-sensitive +highlighting, add the following line to your startup file: > + + :let eiffel_ignore_case=1 + +Case still matters for class names and TODO marks in comments. + +Conversely, for even stricter checks, add one of the following lines: > + + :let eiffel_strict=1 + :let eiffel_pedantic=1 + +Setting eiffel_strict will only catch improper capitalization for the +five predefined words "Current", "Void", "Result", "Precursor", and +"NONE", to warn against their accidental use as feature or class names. + +Setting eiffel_pedantic will enforce adherence to the Eiffel style +guidelines fairly rigorously (like arbitrary mixes of upper- and +lowercase letters as well as outdated ways to capitalize keywords). + +If you want to use the lower-case version of "Current", "Void", +"Result", and "Precursor", you can use > + + :let eiffel_lower_case_predef=1 + +instead of completely turning case-sensitive highlighting off. + +Support for ISE's proposed new creation syntax that is already +experimentally handled by some compilers can be enabled by: > + + :let eiffel_ise=1 + +Finally, some vendors support hexadecimal constants. To handle them, add > + + :let eiffel_hex_constants=1 + +to your startup file. + + +EUPHORIA *euphoria3.vim* *euphoria4.vim* *ft-euphoria-syntax* + +Two syntax highlighting files exist for Euphoria. One for Euphoria +version 3.1.1, which is the default syntax highlighting file, and one for +Euphoria version 4.0.5 or later. + +Euphoria version 3.1.1 (http://www.rapideuphoria.com/) is still necessary +for developing applications for the DOS platform, which Euphoria version 4 +(http://www.openeuphoria.org/) does not support. + +The following file extensions are auto-detected as Euphoria file type: + + *.e, *.eu, *.ew, *.ex, *.exu, *.exw + *.E, *.EU, *.EW, *.EX, *.EXU, *.EXW + +To select syntax highlighting file for Euphoria, as well as for +auto-detecting the *.e and *.E file extensions as Euphoria file type, +add the following line to your startup file: > + + :let g:filetype_euphoria = "euphoria3" + +< or > + + :let g:filetype_euphoria = "euphoria4" + +Elixir and Euphoria share the *.ex file extension. If the filetype is +specifically set as Euphoria with the g:filetype_euphoria variable, or the +file is determined to be Euphoria based on keywords in the file, then the +filetype will be set as Euphoria. Otherwise, the filetype will default to +Elixir. + + +ERLANG *erlang.vim* *ft-erlang-syntax* + +Erlang is a functional programming language developed by Ericsson. Files with +the following extensions are recognized as Erlang files: erl, hrl, yaws. + +The BIFs (built-in functions) are highlighted by default. To disable this, +put the following line in your vimrc: > + + :let g:erlang_highlight_bifs = 0 + +To enable highlighting some special atoms, put this in your vimrc: > + + :let g:erlang_highlight_special_atoms = 1 + + +ELIXIR *elixir.vim* *ft-elixir-syntax* + +Elixir is a dynamic, functional language for building scalable and +maintainable applications. + +The following file extensions are auto-detected as Elixir file types: + + *.ex, *.exs, *.eex, *.leex, *.lock + +Elixir and Euphoria share the *.ex file extension. If the filetype is +specifically set as Euphoria with the g:filetype_euphoria variable, or the +file is determined to be Euphoria based on keywords in the file, then the +filetype will be set as Euphoria. Otherwise, the filetype will default to +Elixir. + + +FLEXWIKI *flexwiki.vim* *ft-flexwiki-syntax* + +FlexWiki is an ASP.NET-based wiki package available at http://www.flexwiki.com +NOTE: This site currently doesn't work, on Wikipedia is mentioned that +development stopped in 2009. + +Syntax highlighting is available for the most common elements of FlexWiki +syntax. The associated ftplugin script sets some buffer-local options to make +editing FlexWiki pages more convenient. FlexWiki considers a newline as the +start of a new paragraph, so the ftplugin sets 'tw'=0 (unlimited line length), +'wrap' (wrap long lines instead of using horizontal scrolling), 'linebreak' +(to wrap at a character in 'breakat' instead of at the last char on screen), +and so on. It also includes some keymaps that are disabled by default. + +If you want to enable the keymaps that make "j" and "k" and the cursor keys +move up and down by display lines, add this to your .vimrc: > + :let flexwiki_maps = 1 + + +FORM *form.vim* *ft-form-syntax* + +The coloring scheme for syntax elements in the FORM file uses the default +modes Conditional, Number, Statement, Comment, PreProc, Type, and String, +following the language specifications in 'Symbolic Manipulation with FORM' by +J.A.M. Vermaseren, CAN, Netherlands, 1991. + +If you want to include your own changes to the default colors, you have to +redefine the following syntax groups: + + - formConditional + - formNumber + - formStatement + - formHeaderStatement + - formComment + - formPreProc + - formDirective + - formType + - formString + +Note that the form.vim syntax file implements FORM preprocessor commands and +directives per default in the same syntax group. + +A predefined enhanced color mode for FORM is available to distinguish between +header statements and statements in the body of a FORM program. To activate +this mode define the following variable in your vimrc file > + + :let form_enhanced_color=1 + +The enhanced mode also takes advantage of additional color features for a dark +gvim display. Here, statements are colored LightYellow instead of Yellow, and +conditionals are LightBlue for better distinction. + +Both Visual Basic and FORM use the extension ".frm". To detect which one +should be used, Vim checks for the string "VB_Name" in the first five lines of +the file. If it is found, filetype will be "vb", otherwise "form". + +If the automatic detection doesn't work for you or you only edit, for +example, FORM files, use this in your startup vimrc: > + :let filetype_frm = "form" + + +FORTH *forth.vim* *ft-forth-syntax* + +Files matching "*.f" could be Fortran or Forth and those matching "*.fs" could +be F# or Forth. If the automatic detection doesn't work for you, or you don't +edit F# or Fortran at all, use this in your startup vimrc: > + :let filetype_f = "forth" + :let filetype_fs = "forth" + + +FORTRAN *fortran.vim* *ft-fortran-syntax* + +Default highlighting and dialect ~ +Vim highlights according to Fortran 2023 (the most recent standard) by +default. This choice should be appropriate for most users most of the time +because Fortran 2023 is almost a superset of previous versions (Fortran 2018, +2008, 2003, 95, 90, and 77). A small number of features new to Fortran 2018 +and Fortran 2023 may have been omitted at present; the transition to Fortran +2023 will be completed in the near future. A few legacy constructs deleted or +declared obsolescent in recent Fortran standards are highlighted as todo +items. + +The syntax script no longer supports Fortran dialects. The variable +fortran_dialect is now silently ignored. Since computers are much faster now, +the variable fortran_more_precise is no longer needed and is silently ignored. + +Fortran source code form ~ +Fortran code can be in either fixed or free source form. Note that the +syntax highlighting will not be correct if the form is incorrectly set. + +When you create a new Fortran file, the syntax script assumes fixed source +form. If you always use free source form, then > + :let fortran_free_source=1 +in your .vimrc prior to the :syntax on command. If you always use fixed +source form, then > + :let fortran_fixed_source=1 +in your .vimrc prior to the :syntax on command. + +If the form of the source code depends, in a non-standard way, upon the file +extension, then it is most convenient to set fortran_free_source in a ftplugin +file. For more information on ftplugin files, see |ftplugin|. Note that this +will work only if the "filetype plugin indent on" command precedes the "syntax +on" command in your .vimrc file. + +When you edit an existing Fortran file, the syntax script will assume free +source form if the fortran_free_source variable has been set, and assumes +fixed source form if the fortran_fixed_source variable has been set. Suppose +neither of these variables have been set. In that case, the syntax script attempts to +determine which source form has been used by examining the file extension +using conventions common to the ifort, gfortran, Cray, NAG, and PathScale +compilers (.f, .for, .f77 for fixed-source, .f90, .f95, .f03, .f08 for +free-source). No default is used for the .fpp and .ftn file extensions because +different compilers treat them differently. If none of this works, then the +script examines the first five columns of the first 500 lines of your file. If +no signs of free source form are detected, then the file is assumed to be in +fixed source form. The algorithm should work in the vast majority of cases. +In some cases, such as a file that begins with 500 or more full-line comments, +the script may incorrectly decide that the code is in fixed form. If that +happens, just add a non-comment statement beginning anywhere in the first five +columns of the first twenty-five lines, save (:w), and then reload (:e!) the +file. + +Vendor extensions ~ +Fixed-form Fortran requires a maximum line length of 72 characters but the +script allows a maximum line length of 80 characters as do all compilers +created in the last three decades. An even longer line length of 132 +characters is allowed if you set the variable fortran_extended_line_length +with a command such as > + :let fortran_extended_line_length=1 +placed prior to the :syntax on command. + +If you want additional highlighting of the CUDA Fortran extensions, you should +set the variable fortran_CUDA with a command such as > + :let fortran_CUDA=1 +placed prior to the :syntax on command. + +To activate recognition of some common, non-standard, vendor-supplied +intrinsics, you should set the variable fortran_vendor_intrinsics with a +command such as > + :let fortran_vendor_intrinsics=1 +placed prior to the :syntax on command. + +Tabs in Fortran files ~ +Tabs are not recognized by the Fortran standards. Tabs are not a good idea in +fixed format Fortran source code which requires fixed column boundaries. +Therefore, tabs are marked as errors. Nevertheless, some programmers like +using tabs. If your Fortran files contain tabs, then you should set the +variable fortran_have_tabs in your .vimrc with a command such as > + :let fortran_have_tabs=1 +placed prior to the :syntax on command. Unfortunately, the use of tabs will +mean that the syntax file will not be able to detect incorrect margins. + +Syntax folding of Fortran files ~ +Vim will fold your file using foldmethod=syntax, if you set the variable +fortran_fold in your .vimrc with a command such as > + :let fortran_fold=1 +to instruct the syntax script to define fold regions for program units, that +is main programs starting with a program statement, subroutines, function +subprograms, modules, submodules, blocks of comment lines, and block data +units. Block, interface, associate, critical, type definition, and change team +constructs will also be folded. If you also set the variable +fortran_fold_conditionals with a command such as > + :let fortran_fold_conditionals=1 +then fold regions will also be defined for do loops, if blocks, select case, +select type, and select rank constructs. Note that defining fold regions can +be slow for large files. + +The syntax/fortran.vim script contains embedded comments that tell you how to +comment and/or uncomment some lines to (a) activate recognition of some +non-standard, vendor-supplied intrinsics and (b) to prevent features deleted +or declared obsolescent in the 2008 standard from being highlighted as todo +items. + +Limitations ~ +Parenthesis checking does not catch too few closing parentheses. Hollerith +strings are not recognized. Some keywords may be highlighted incorrectly +because Fortran90 has no reserved words. + +For further information related to Fortran, see |ft-fortran-indent| and +|ft-fortran-plugin|. + +FREEBASIC *freebasic.vim* *ft-freebasic-syntax* + +FreeBASIC files will be highlighted differently for each of the four available +dialects, "fb", "qb", "fblite" and "deprecated". See |ft-freebasic-plugin| +for how to select the correct dialect. + +Highlighting is further configurable via the following variables. + +Variable Highlight ~ +*freebasic_no_comment_fold* disable multiline comment folding +*freebasic_operators* non-alpha operators +*freebasic_space_errors* trailing white space and spaces before a +*freebasic_type_suffixes* QuickBASIC style type suffixes + + + +FVWM CONFIGURATION FILES *fvwm.vim* *ft-fvwm-syntax* + +In order for Vim to recognize Fvwm configuration files that do not match +the patterns *fvwmrc* or *fvwm2rc* , you must put additional patterns +appropriate to your system in your myfiletypes.vim file. For these +patterns, you must set the variable "b:fvwm_version" to the major version +number of Fvwm, and the 'filetype' option to fvwm. + +For example, to make Vim identify all files in /etc/X11/fvwm2/ +as Fvwm2 configuration files, add the following: > + + :au! BufNewFile,BufRead /etc/X11/fvwm2/* let b:fvwm_version = 2 | + \ set filetype=fvwm + +GSP *gsp.vim* *ft-gsp-syntax* + +The default coloring style for GSP pages is defined by |html.vim|, and +the coloring for java code (within java tags or inline between backticks) +is defined by |java.vim|. The following HTML groups defined in |html.vim| +are redefined to incorporate and highlight inline java code: + + htmlString + htmlValue + htmlEndTag + htmlTag + htmlTagN + +Highlighting should look fine most of the places where you'd see inline +java code, but in some special cases it may not. To add another HTML +group where you will have inline java code where it does not highlight +correctly, just copy the line you want from |html.vim| and add gspJava +to the contains clause. + +The backticks for inline java are highlighted according to the htmlError +group to make them easier to see. + + +GROFF *groff.vim* *ft-groff-syntax* + +The groff syntax file is a wrapper for |nroff.vim|, see the notes +under that heading for examples of use and configuration. The purpose +of this wrapper is to set up groff syntax extensions by setting the +filetype from a |modeline| or in a personal filetype definitions file +(see |filetype.txt|). + + +HASKELL *haskell.vim* *lhaskell.vim* *ft-haskell-syntax* + +The Haskell syntax files support plain Haskell code as well as literate +Haskell code, the latter in both Bird style and TeX style. The Haskell +syntax highlighting will also highlight C preprocessor directives. + +If you want to highlight delimiter characters (useful if you have a +light-coloured background), add to your .vimrc: > + :let hs_highlight_delimiters = 1 +To treat True and False as keywords as opposed to ordinary identifiers, +add: > + :let hs_highlight_boolean = 1 +To also treat the names of primitive types as keywords: > + :let hs_highlight_types = 1 +And to treat the names of even more relatively common types as keywords: > + :let hs_highlight_more_types = 1 +If you want to highlight the names of debugging functions, put in +your .vimrc: > + :let hs_highlight_debug = 1 + +The Haskell syntax highlighting also highlights C preprocessor +directives, and flags lines that start with # but are not valid +directives as erroneous. This interferes with Haskell's syntax for +operators, as they may start with #. If you want to highlight those +as operators as opposed to errors, put in your .vimrc: > + :let hs_allow_hash_operator = 1 + +The syntax highlighting for literate Haskell code will try to +automatically guess whether your literate Haskell code contains +TeX markup or not, and correspondingly highlight TeX constructs +or nothing at all. You can override this globally by putting +in your .vimrc > + :let lhs_markup = none +for no highlighting at all, or > + :let lhs_markup = tex +to force the highlighting to always try to highlight TeX markup. +For more flexibility, you may also use buffer local versions of +this variable, so e.g. > + :let b:lhs_markup = tex +will force TeX highlighting for a particular buffer. It has to be +set before turning syntax highlighting on for the buffer or +loading a file. + + +HTML *html.vim* *ft-html-syntax* + +The coloring scheme for tags in the HTML file works as follows. + +The <> of opening tags are colored differently than the of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Identifier' color is used (See syntax.vim to check how those +are defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are colored with the same color as the <> or respectively which +makes it easy to spot errors + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some HTML tags are used to change the rendering of text. The following tags +are recognized by the html.vim syntax coloring file and change the way normal +text is shown: ( is used as an alias for , +while as an alias for ),

-

, , and <A>, but +only if used as a link (that is, it must include a href as in +<A href="somefile.html">). + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - htmlBold + - htmlBoldUnderline + - htmlBoldUnderlineItalic + - htmlUnderline + - htmlUnderlineItalic + - htmlItalic + - htmlTitle for titles + - htmlH1 - htmlH6 for headings + +To make this redefinition work you must redefine them all with the exception +of the last two (htmlTitle and htmlH[1-6], which are optional) and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + :let html_my_rendering=1 + +If you'd like to see an example download mysyntax.vim at +http://www.fleiner.com/vim/download.html + +You can also disable this rendering by adding the following line to your +vimrc file: > + :let html_no_rendering=1 + +HTML comments are rather special (see an HTML reference document for the +details), and the syntax coloring scheme will highlight all errors. +However, if you prefer to use the wrong style (starts with <!-- and +ends with -->) you can define > + :let html_wrong_comments=1 + +JavaScript and Visual Basic embedded inside HTML documents are highlighted as +'Special' with statements, comments, strings and so on colored as in standard +programming languages. Note that only JavaScript and Visual Basic are +currently supported, no other scripting language has been added yet. + +Embedded and inlined cascading style sheets (CSS) are highlighted too. + +There are several html preprocessor languages out there. html.vim has been +written such that it should be trivial to include it. To do so add the +following two lines to the syntax coloring file for that language +(the example comes from the asp.vim file): +> + runtime! syntax/html.vim + syn cluster htmlPreproc add=asp + +Now you just need to make sure that you add all regions that contain +the preprocessor language to the cluster htmlPreproc. + + *html-folding* +The HTML syntax file provides syntax |folding| (see |:syn-fold|) between start +and end tags. This can be turned on by > + + :let g:html_syntax_folding = 1 + :set foldmethod=syntax + +Note: Syntax folding might slow down syntax highlighting significantly, +especially for large files. + + +HTML/OS (by Aestiva) *htmlos.vim* *ft-htmlos-syntax* + +The coloring scheme for HTML/OS works as follows: + +Functions and variable names are the same color by default, because VIM +doesn't specify different colors for Functions and Identifiers. To change +this (which is recommended if you want function names to be recognizable in a +different color) you need to add the following line to either your ~/.vimrc: > + :hi Function term=underline cterm=bold ctermfg=LightGray + +Of course, the ctermfg can be a different color if you choose. + +Another issues that HTML/OS runs into is that there is no special filetype to +signify that it is a file with HTML/OS coding. You can change this by opening +a file and turning on HTML/OS syntax by doing the following: > + :set syntax=htmlos + +Lastly, it should be noted that the opening and closing characters to begin a +block of HTML/OS code can either be << or [[ and >> or ]], respectively. + + +IA64 *ia64.vim* *intel-itanium* *ft-ia64-syntax* + +Highlighting for the Intel Itanium 64 assembly language. See |asm.vim| for +how to recognize this filetype. + +To have *.inc files be recognized as IA64, add this to your .vimrc file: > + :let g:filetype_inc = "ia64" + + +INFORM *inform.vim* *ft-inform-syntax* + +Inform highlighting includes symbols provided by the Inform Library, as +most programs make extensive use of it. If do not wish Library symbols +to be highlighted add this to your vim startup: > + :let inform_highlight_simple=1 + +By default it is assumed that Inform programs are Z-machine targeted, +and highlights Z-machine assembly language symbols appropriately. If +you intend your program to be targeted to a Glulx/Glk environment you +need to add this to your startup sequence: > + :let inform_highlight_glulx=1 + +This will highlight Glulx opcodes instead, and also adds glk() to the +set of highlighted system functions. + +The Inform compiler will flag certain obsolete keywords as errors when +it encounters them. These keywords are normally highlighted as errors +by Vim. To prevent such error highlighting, you must add this to your +startup sequence: > + :let inform_suppress_obsolete=1 + +By default, the language features highlighted conform to Compiler +version 6.30 and Library version 6.11. If you are using an older +Inform development environment, you may with to add this to your +startup sequence: > + :let inform_highlight_old=1 + +IDL *idl.vim* *idl-syntax* + +IDL (Interface Definition Language) files are used to define RPC calls. In +Microsoft land, this is also used for defining COM interfaces and calls. + +IDL's structure is simple enough to permit a full grammar based approach to +rather than using a few heuristics. The result is large and somewhat +repetitive but seems to work. + +There are some Microsoft extensions to idl files that are here. Some of them +are disabled by defining idl_no_ms_extensions. + +The more complex of the extensions are disabled by defining idl_no_extensions. + +Variable Effect ~ + +idl_no_ms_extensions Disable some of the Microsoft specific + extensions +idl_no_extensions Disable complex extensions +idlsyntax_showerror Show IDL errors (can be rather intrusive, but + quite helpful) +idlsyntax_showerror_soft Use softer colours by default for errors + + +JAVA *java.vim* *ft-java-syntax* + +The java.vim syntax highlighting file offers several options: + +In Java 1.0.2 it was never possible to have braces inside parens, so this was +flagged as an error. Since Java 1.1 this is possible (with anonymous +classes), and therefore is no longer marked as an error. If you prefer the +old way, put the following line into your vim startup file: > + :let java_mark_braces_in_parens_as_errors=1 + +All identifiers in java.lang.* are always visible in all classes. To +highlight them use: > + :let java_highlight_java_lang_ids=1 + +You can also highlight identifiers of most standard Java packages if you +download the javaid.vim script at http://www.fleiner.com/vim/download.html. +If you prefer to only highlight identifiers of a certain package, say java.io +use the following: > + :let java_highlight_java_io=1 +Check the javaid.vim file for a list of all the packages that are supported. + +Function names are not highlighted, as the way to find functions depends on +how you write Java code. The syntax file knows two possible ways to highlight +functions: + +If you write function declarations that are always indented by either +a tab, 8 spaces or 2 spaces you may want to set > + :let java_highlight_functions="indent" +However, if you follow the Java guidelines about how functions and classes are +supposed to be named (with respect to upper and lowercase), use > + :let java_highlight_functions="style" +If both options do not work for you, but you would still want function +declarations to be highlighted create your own definitions by changing the +definitions in java.vim or by creating your own java.vim which includes the +original one and then adds the code to highlight functions. + +In Java 1.1 the functions System.out.println() and System.err.println() should +only be used for debugging. Therefore it is possible to highlight debugging +statements differently. To do this you must add the following definition in +your startup file: > + :let java_highlight_debug=1 +The result will be that those statements are highlighted as 'Special' +characters. If you prefer to have them highlighted differently you must define +new highlightings for the following groups.: + Debug, DebugSpecial, DebugString, DebugBoolean, DebugType +which are used for the statement itself, special characters used in debug +strings, strings, boolean constants and types (this, super) respectively. I +have opted to choose another background for those statements. + +Javadoc is a program that takes special comments out of Java program files and +creates HTML pages. The standard configuration will highlight this HTML code +similarly to HTML files (see |html.vim|). You can even add Javascript +and CSS inside this code (see below). There are four differences however: + 1. The title (all characters up to the first '.' which is followed by + some white space or up to the first '@') is colored differently (to change + the color change the group CommentTitle). + 2. The text is colored as 'Comment'. + 3. HTML comments are colored as 'Special' + 4. The special Javadoc tags (@see, @param, ...) are highlighted as specials + and the argument (for @see, @param, @exception) as Function. +To turn this feature off add the following line to your startup file: > + :let java_ignore_javadoc=1 + +If you use the special Javadoc comment highlighting described above you +can also turn on special highlighting for Javascript, visual basic +scripts and embedded CSS (stylesheets). This makes only sense if you +actually have Javadoc comments that include either Javascript or embedded +CSS. The options to use are > + :let java_javascript=1 + :let java_css=1 + :let java_vb=1 + +In order to highlight nested parens with different colors define colors +for javaParen, javaParen1 and javaParen2, for example with > + :hi link javaParen Comment +or > + :hi javaParen ctermfg=blue guifg=#0000ff + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "java_minlines" internal variable +to a larger number: > + :let java_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + + +JSON *json.vim* *ft-json-syntax* + +The json syntax file provides syntax highlighting with conceal support by +default. To disable concealment: > + let g:vim_json_conceal = 0 + +To disable syntax highlighting of errors: > + let g:vim_json_warnings = 0 + + +LACE *lace.vim* *ft-lace-syntax* + +Lace (Language for Assembly of Classes in Eiffel) is case insensitive, but the +style guide lines are not. If you prefer case insensitive highlighting, just +define the vim variable 'lace_case_insensitive' in your startup file: > + :let lace_case_insensitive=1 + + +LEX *lex.vim* *ft-lex-syntax* + +Lex uses brute-force synchronizing as the "^%%$" section delimiter +gives no clue as to what section follows. Consequently, the value for > + :syn sync minlines=300 +may be changed by the user if s/he is experiencing synchronization +difficulties (such as may happen with large lex files). + + +LIFELINES *lifelines.vim* *ft-lifelines-syntax* + +To highlight deprecated functions as errors, add in your .vimrc: > + + :let g:lifelines_deprecated = 1 +< + +LISP *lisp.vim* *ft-lisp-syntax* + +The lisp syntax highlighting provides two options: > + + g:lisp_instring : If it exists, then "(...)" strings are highlighted + as if the contents of the string were lisp. + Useful for AutoLisp. + g:lisp_rainbow : If it exists and is nonzero, then differing levels + of parenthesization will receive different + highlighting. +< +The g:lisp_rainbow option provides 10 levels of individual colorization for +the parentheses and backquoted parentheses. Because of the quantity of +colorization levels, unlike non-rainbow highlighting, the rainbow mode +specifies its highlighting using ctermfg and guifg, thereby bypassing the +usual color scheme control using standard highlighting groups. The actual +highlighting used depends on the dark/bright setting (see |'bg'|). + + +LITE *lite.vim* *ft-lite-syntax* + +There are two options for the lite syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let lite_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "lite_minlines" to the value you desire. Example: > + + :let lite_minlines = 200 + + +LPC *lpc.vim* *ft-lpc-syntax* + +LPC stands for a simple, memory-efficient language: Lars Pensj枚 C. The +file name of LPC is usually *.c. Recognizing these files as LPC would bother +users writing only C programs. If you want to use LPC syntax in Vim, you +should set a variable in your .vimrc file: > + + :let lpc_syntax_for_c = 1 + +If it doesn't work properly for some particular C or LPC files, use a +modeline. For a LPC file: > + + // vim:set ft=lpc: + +For a C file that is recognized as LPC: > + + // vim:set ft=c: + +If you don't want to set the variable, use the modeline in EVERY LPC file. + +There are several implementations for LPC, we intend to support most widely +used ones. Here the default LPC syntax is for MudOS series, for MudOS v22 +and before, you should turn off the sensible modifiers, and this will also +assert the new efuns after v22 to be invalid, don't set this variable when +you are using the latest version of MudOS: > + + :let lpc_pre_v22 = 1 + +For LpMud 3.2 series of LPC: > + + :let lpc_compat_32 = 1 + +For LPC4 series of LPC: > + + :let lpc_use_lpc4_syntax = 1 + +For uLPC series of LPC: +uLPC has been developed to Pike, so you should use Pike syntax +instead, and the name of your source file should be *.pike + + +LUA *lua.vim* *ft-lua-syntax* + +The Lua syntax file can be used for versions 4.0, 5.0, 5.1 and 5.2 (5.2 is +the default). You can select one of these versions using the global variables +lua_version and lua_subversion. For example, to activate Lua +5.1 syntax highlighting, set the variables like this: > + + :let lua_version = 5 + :let lua_subversion = 1 + + +MAIL *mail.vim* *ft-mail.vim* + +Vim highlights all the standard elements of an email (headers, signatures, +quoted text and URLs / email addresses). In keeping with standard conventions, +signatures begin in a line containing only "--" followed optionally by +whitespaces and end with a newline. + +Vim treats lines beginning with ']', '}', '|', '>' or a word followed by '>' +as quoted text. However Vim highlights headers and signatures in quoted text +only if the text is quoted with '>' (optionally followed by one space). + +By default mail.vim synchronises syntax to 100 lines before the first +displayed line. If you have a slow machine, and generally deal with emails +with short headers, you can change this to a smaller value: > + + :let mail_minlines = 30 + + +MAKE *make.vim* *ft-make-syntax* + +In makefiles, commands are usually highlighted to make it easy for you to spot +errors. However, this may be too much coloring for you. You can turn this +feature off by using: > + + :let make_no_commands = 1 + + +MAPLE *maple.vim* *ft-maple-syntax* + +Maple V, by Waterloo Maple Inc, supports symbolic algebra. The language +supports many packages of functions which are selectively loaded by the user. +The standard set of packages' functions as supplied in Maple V release 4 may be +highlighted at the user's discretion. Users may place in their .vimrc file: > + + :let mvpkg_all= 1 + +to get all package functions highlighted, or users may select any subset by +choosing a variable/package from the table below and setting that variable to +1, also in their .vimrc file (prior to sourcing +$VIMRUNTIME/syntax/syntax.vim). + + Table of Maple V Package Function Selectors > + mv_DEtools mv_genfunc mv_networks mv_process + mv_Galois mv_geometry mv_numapprox mv_simplex + mv_GaussInt mv_grobner mv_numtheory mv_stats + mv_LREtools mv_group mv_orthopoly mv_student + mv_combinat mv_inttrans mv_padic mv_sumtools + mv_combstruct mv_liesymm mv_plots mv_tensor + mv_difforms mv_linalg mv_plottools mv_totorder + mv_finance mv_logic mv_powseries + + +MARKDOWN *ft-markdown-syntax* + +If you have long regions there might be wrong highlighting. At the cost of +slowing down displaying, you can have the engine look further back to sync on +the start of a region, for example 500 lines: > + + :let g:markdown_minlines = 500 + + +MATHEMATICA *mma.vim* *ft-mma-syntax* *ft-mathematica-syntax* + +Empty *.m files will automatically be presumed to be Matlab files unless you +have the following in your .vimrc: > + + let filetype_m = "mma" + + +MODULA2 *modula2.vim* *ft-modula2-syntax* + +Vim will recognise comments with dialect tags to automatically select a given +dialect. + +The syntax for a dialect tag comment is: > + + taggedComment := + '(*!' dialectTag '*)' + ; + + dialectTag := + m2pim | m2iso | m2r10 + ; + + reserved words + m2pim = 'm2pim', m2iso = 'm2iso', m2r10 = 'm2r10' + +A dialect tag comment is recognised by Vim if it occurs within the first 200 +lines of the source file. Only the very first such comment is recognised, any +additional dialect tag comments are ignored. + +Example: > + + DEFINITION MODULE FooLib; (*!m2pim*) + ... + +Variable g:modula2_default_dialect sets the default Modula-2 dialect when the +dialect cannot be determined from the contents of the Modula-2 file: if +defined and set to 'm2pim', the default dialect is PIM. + +Example: > + + let g:modula2_default_dialect = 'm2pim' + + +Highlighting is further configurable for each dialect via the following +variables. + +Variable Highlight ~ +*modula2_iso_allow_lowline* allow low line in identifiers +*modula2_iso_disallow_octals* disallow octal integer literals +*modula2_iso_disallow_synonyms* disallow "@", "&" and "~" synonyms + +*modula2_pim_allow_lowline* allow low line in identifiers +*modula2_pim_disallow_octals* disallow octal integer literals +*modula2_pim_disallow_synonyms* disallow "&" and "~" synonyms + +*modula2_r10_allow_lowline* allow low line in identifiers + +MOO *moo.vim* *ft-moo-syntax* + +If you use C-style comments inside expressions and find it mangles your +highlighting, you may want to use extended (slow!) matches for C-style +comments: > + + :let moo_extended_cstyle_comments = 1 + +To disable highlighting of pronoun substitution patterns inside strings: > + + :let moo_no_pronoun_sub = 1 + +To disable highlighting of the regular expression operator '%|', and matching +'%(' and '%)' inside strings: > + + :let moo_no_regexp = 1 + +Unmatched double quotes can be recognized and highlighted as errors: > + + :let moo_unmatched_quotes = 1 + +To highlight builtin properties (.name, .location, .programmer etc.): > + + :let moo_builtin_properties = 1 + +Unknown builtin functions can be recognized and highlighted as errors. If you +use this option, add your own extensions to the mooKnownBuiltinFunction group. +To enable this option: > + + :let moo_unknown_builtin_functions = 1 + +An example of adding sprintf() to the list of known builtin functions: > + + :syn keyword mooKnownBuiltinFunction sprintf contained + + +MSQL *msql.vim* *ft-msql-syntax* + +There are two options for the msql syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let msql_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "msql_minlines" to the value you desire. Example: > + + :let msql_minlines = 200 + + +N1QL *n1ql.vim* *ft-n1ql-syntax* + +N1QL is a SQL-like declarative language for manipulating JSON documents in +Couchbase Server databases. + +Vim syntax highlights N1QL statements, keywords, operators, types, comments, +and special values. Vim ignores syntactical elements specific to SQL or its +many dialects, like COLUMN or CHAR, that don't exist in N1QL. + + +NCF *ncf.vim* *ft-ncf-syntax* + +There is one option for NCF syntax highlighting. + +If you want to have unrecognized (by ncf.vim) statements highlighted as +errors, use this: > + + :let ncf_highlight_unknowns = 1 + +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 +|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. + +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. + +2. Leave one space and one space only after an end-of-sentence period, + exclamation mark, etc. + +3. For reasons stated below, it is best to follow all period marks with a + carriage return. + +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. + +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. + +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 +spaces and two or more spaces after a punctuation as an error, use: > + + :let nroff_space_errors = 1 + +Another technique to detect extra spacing and other errors that will interfere +with the correct typesetting of your file, is to define an eye-catching +highlighting definition for the syntax groups "nroffDefinition" and +"nroffDefSpecial" in your configuration files. For example: > + + hi def nroffDefinition term=italic cterm=italic gui=reverse + hi def nroffDefSpecial term=italic,bold cterm=italic,bold + \ gui=reverse,bold + +If you want to navigate preprocessor entries in your source file as easily as +with section markers, you can activate the following option in your .vimrc +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. + +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. + + +OCAML *ocaml.vim* *ft-ocaml-syntax* + +The OCaml syntax file handles files having the following prefixes: .ml, +.mli, .mll and .mly. By setting the following variable > + + :let ocaml_revised = 1 + +you can switch from standard OCaml-syntax to revised syntax as supported +by the camlp4 preprocessor. Setting the variable > + + :let ocaml_noend_error = 1 + +prevents highlighting of "end" as error, which is useful when sources +contain very long structures that Vim does not synchronize anymore. + + +PAPP *papp.vim* *ft-papp-syntax* + +The PApp syntax file handles .papp files and, to a lesser extent, .pxml +and .pxsl files which are all a mixture of perl/xml/html/other using xml +as the top-level file format. By default everything inside phtml or pxml +sections is treated as a string with embedded preprocessor commands. If +you set the variable: > + + :let papp_include_html=1 + +in your startup file it will try to syntax-highlight html code inside phtml +sections, but this is relatively slow and much too colourful to be able to +edit sensibly. ;) + +The newest version of the papp.vim syntax file can usually be found at +http://papp.plan9.de. + + +PASCAL *pascal.vim* *ft-pascal-syntax* + +Files matching "*.p" could be Progress or Pascal and those matching "*.pp" +could be Puppet or Pascal. If the automatic detection doesn't work for you, +or you only edit Pascal files, use this in your startup vimrc: > + + :let filetype_p = "pascal" + :let filetype_pp = "pascal" + +The Pascal syntax file has been extended to take into account some extensions +provided by Turbo Pascal, Free Pascal Compiler and GNU Pascal Compiler. +Delphi keywords are also supported. By default, Turbo Pascal 7.0 features are +enabled. If you prefer to stick with the standard Pascal keywords, add the +following line to your startup file: > + + :let pascal_traditional=1 + +To switch on Delphi specific constructions (such as one-line comments, +keywords, etc): > + + :let pascal_delphi=1 + + +The option pascal_symbol_operator controls whether symbol operators such as +, +*, .., etc. are displayed using the Operator color or not. To colorize symbol +operators, add the following line to your startup file: > + + :let pascal_symbol_operator=1 + +Some functions are highlighted by default. To switch it off: > + + :let pascal_no_functions=1 + +Furthermore, there are specific variables for some compilers. Besides +pascal_delphi, there are pascal_gpc and pascal_fpc. Default extensions try to +match Turbo Pascal. > + + :let pascal_gpc=1 + +or > + + :let pascal_fpc=1 + +To ensure that strings are defined on a single line, you can define the +pascal_one_line_string variable. > + + :let pascal_one_line_string=1 + +If you dislike <Tab> chars, you can set the pascal_no_tabs variable. Tabs +will be highlighted as Error. > + + :let pascal_no_tabs=1 + + + +PERL *perl.vim* *ft-perl-syntax* + +There are a number of possible options to the perl syntax highlighting. + +Inline POD highlighting is now turned on by default. If you don't wish +to have the added complexity of highlighting POD embedded within Perl +files, you may set the 'perl_include_pod' option to 0: > + + :let perl_include_pod = 0 + +To reduce the complexity of parsing (and increase performance) you can switch +off two elements in the parsing of variable names and contents. > + +To handle package references in variable and function names not differently +from the rest of the name (like 'PkgName::' in '$PkgName::VarName'): > + + :let perl_no_scope_in_variables = 1 + +(In Vim 6.x it was the other way around: "perl_want_scope_in_variables" +enabled it.) + +If you do not want complex things like '@{${"foo"}}' to be parsed: > + + :let perl_no_extended_vars = 1 + +(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.) + +The coloring strings can be changed. By default strings and qq friends will +be highlighted like the first line. If you set the variable +perl_string_as_statement, it will be highlighted as in the second line. + + "hello world!"; qq|hello world|; + ^^^^^^^^^^^^^^NN^^^^^^^^^^^^^^^N (unlet perl_string_as_statement) + S^^^^^^^^^^^^SNNSSS^^^^^^^^^^^SN (let perl_string_as_statement) + +(^ = perlString, S = perlStatement, N = None at all) + +The syncing has 3 options. The first two switch off some triggering of +synchronization and should only be needed in case it fails to work properly. +If while scrolling all of a sudden the whole screen changes color completely +then you should try and switch off one of those. Let me know if you can +figure out the line that causes the mistake. + +One triggers on "^\s*sub\s*" and the other on "^[$@%]" more or less. > + + :let perl_no_sync_on_sub + :let perl_no_sync_on_global_var + +Below you can set the maximum distance VIM should look for starting points for +its attempts in syntax highlighting. > + + :let perl_sync_dist = 100 + +If you want to use folding with perl, set perl_fold: > + + :let perl_fold = 1 + +If you want to fold blocks in if statements, etc. as well set the following: > + + :let perl_fold_blocks = 1 + +Subroutines are folded by default if 'perl_fold' is set. If you do not want +this, you can set 'perl_nofold_subs': > + + :let perl_nofold_subs = 1 + +Anonymous subroutines are not folded by default; you may enable their folding +via 'perl_fold_anonymous_subs': > + + :let perl_fold_anonymous_subs = 1 + +Packages are also folded by default if 'perl_fold' is set. To disable this +behavior, set 'perl_nofold_packages': > + + :let perl_nofold_packages = 1 + +PHP3 and PHP4 *php.vim* *php3.vim* *ft-php-syntax* *ft-php3-syntax* + +[Note: Previously this was called "php3", but since it now also supports php4 +it has been renamed to "php"] + +There are the following options for the php syntax highlighting. + +If you like SQL syntax highlighting inside Strings: > + + let php_sql_query = 1 + +For highlighting the Baselib methods: > + + let php_baselib = 1 + +Enable HTML syntax highlighting inside strings: > + + let php_htmlInStrings = 1 + +Using the old colorstyle: > + + let php_oldStyle = 1 + +Enable highlighting ASP-style short tags: > + + let php_asp_tags = 1 + +Disable short tags: > + + let php_noShortTags = 1 + +For highlighting parent error ] or ): > + + let php_parent_error_close = 1 + +For skipping a php end tag, if there exists an open ( or [ without a closing +one: > + + let php_parent_error_open = 1 + +Enable folding for classes and functions: > + + let php_folding = 1 + +Selecting syncing method: > + + let php_sync_method = x + +x = -1 to sync by search (default), +x > 0 to sync at least x lines backwards, +x = 0 to sync from start. + + +PLAINTEX *plaintex.vim* *ft-plaintex-syntax* + +TeX is a typesetting language, and plaintex is the file type for the "plain" +variant of TeX. If you never want your *.tex files recognized as plain TeX, +see |ft-tex-plugin|. + +This syntax file has the option > + + let g:plaintex_delimiters = 1 + +if you want to highlight brackets "[]" and braces "{}". + + +PPWIZARD *ppwiz.vim* *ft-ppwiz-syntax* + +PPWizard is a preprocessor for HTML and OS/2 INF files + +This syntax file has the options: + +- ppwiz_highlight_defs : Determines highlighting mode for PPWizard's + definitions. Possible values are + + ppwiz_highlight_defs = 1 : PPWizard #define statements retain the + colors of their contents (e.g. PPWizard macros and variables). + + ppwiz_highlight_defs = 2 : Preprocessor #define and #evaluate + statements are shown in a single color with the exception of line + continuation symbols. + + The default setting for ppwiz_highlight_defs is 1. + +- ppwiz_with_html : If the value is 1 (the default), highlight literal + HTML code; if 0, treat HTML code like ordinary text. + + +PHTML *phtml.vim* *ft-phtml-syntax* + +There are two options for the phtml syntax highlighting. + +If you like SQL syntax highlighting inside Strings, use this: > + + :let phtml_sql_query = 1 + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "phtml_minlines" to the value you desire. Example: > + + :let phtml_minlines = 200 + + +POSTSCRIPT *postscr.vim* *ft-postscr-syntax* + +There are several options when it comes to highlighting PostScript. + +First which version of the PostScript language to highlight. There are +currently three defined language versions, or levels. Level 1 is the original +and base version, and includes all extensions prior to the release of level 2. +Level 2 is the most common version around, and includes its own set of +extensions prior to the release of level 3. Level 3 is currently the highest +level supported. You select which level of the PostScript language you want +highlighted by defining the postscr_level variable as follows: > + + :let postscr_level=2 + +If this variable is not defined it defaults to 2 (level 2) since this is +the most prevalent version currently. + +Note: Not all PS interpreters will support all language features for a +particular language level. In particular the %!PS-Adobe-3.0 at the start of +PS files does NOT mean the PostScript present is level 3 PostScript! + +If you are working with Display PostScript, you can include highlighting of +Display PS language features by defining the postscr_display variable as +follows: > + + :let postscr_display=1 + +If you are working with Ghostscript, you can include highlighting of +Ghostscript specific language features by defining the variable +postscr_ghostscript as follows: > + + :let postscr_ghostscript=1 + +PostScript is a large language, with many predefined elements. While it +useful to have all these elements highlighted, on slower machines this can +cause Vim to slow down. In an attempt to be machine friendly font names and +character encodings are not highlighted by default. Unless you are working +explicitly with either of these this should be ok. If you want them to be +highlighted you should set one or both of the following variables: > + + :let postscr_fonts=1 + :let postscr_encodings=1 + +There is a stylistic option to the highlighting of and, or, and not. In +PostScript the function of these operators depends on the types of their +operands - if the operands are booleans then they are the logical operators, +if they are integers then they are binary operators. As binary and logical +operators can be highlighted differently they have to be highlighted one way +or the other. By default they are treated as logical operators. They can be +highlighted as binary operators by defining the variable +postscr_andornot_binary as follows: > + + :let postscr_andornot_binary=1 +< + + *ptcap.vim* *ft-printcap-syntax* +PRINTCAP + TERMCAP *ft-ptcap-syntax* *ft-termcap-syntax* + +This syntax file applies to the printcap and termcap databases. + +In order for Vim to recognize printcap/termcap files that do not match +the patterns *printcap*, or *termcap*, you must put additional patterns +appropriate to your system in your |myfiletypefile| file. For these +patterns, you must set the variable "b:ptcap_type" to either "print" or +"term", and then the 'filetype' option to ptcap. + +For example, to make Vim identify all files in /etc/termcaps/ as termcap +files, add the following: > + + :au BufNewFile,BufRead /etc/termcaps/* let b:ptcap_type = "term" | + \ set filetype=ptcap + +If you notice highlighting errors while scrolling backwards, which +are fixed when redrawing with CTRL-L, try setting the "ptcap_minlines" +internal variable to a larger number: > + + :let ptcap_minlines = 50 + +(The default is 20 lines.) + + +PROGRESS *progress.vim* *ft-progress-syntax* + +Files matching "*.w" could be Progress or cweb. If the automatic detection +doesn't work for you, or you don't edit cweb at all, use this in your +startup vimrc: > + :let filetype_w = "progress" +The same happens for "*.i", which could be assembly, and "*.p", which could be +Pascal. Use this if you don't use assembly and Pascal: > + :let filetype_i = "progress" + :let filetype_p = "progress" + + +PYTHON *python.vim* *ft-python-syntax* + +There are six options to control Python syntax highlighting. + +For highlighted numbers: > + :let python_no_number_highlight = 1 + +For highlighted builtin functions: > + :let python_no_builtin_highlight = 1 + +For highlighted standard exceptions: > + :let python_no_exception_highlight = 1 + +For highlighted doctests and code inside: > + :let python_no_doctest_highlight = 1 +or > + :let python_no_doctest_code_highlight = 1 +The first option implies the second one. + +For highlighted trailing whitespace and mix of spaces and tabs: > + :let python_space_error_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. + +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 +Python 2 and up to Python 3.5. > + :let python_use_python2_syntax = 1 +This option will exclude all modern Python 3.6 or higher features. + +Note: Only existence of these options matters, not their value. + You can replace 1 above with anything. + + +QUAKE *quake.vim* *ft-quake-syntax* + +The Quake syntax definition should work for most FPS (First Person Shooter) +based on one of the Quake engines. However, the command names vary a bit +between the three games (Quake, Quake 2, and Quake 3 Arena) so the syntax +definition checks for the existence of three global variables to allow users +to specify what commands are legal in their files. The three variables can +be set for the following effects: + +set to highlight commands only available in Quake: > + :let quake_is_quake1 = 1 + +set to highlight commands only available in Quake 2: > + :let quake_is_quake2 = 1 + +set to highlight commands only available in Quake 3 Arena: > + :let quake_is_quake3 = 1 + +Any combination of these three variables is legal, but might highlight more +commands than are actually available to you by the game. + + +R *r.vim* *ft-r-syntax* + +The parsing of R code for syntax highlight starts 40 lines backwards, but you +can set a different value in your |vimrc|. Example: > + let r_syntax_minlines = 60 + +You can also turn off syntax highlighting of ROxygen: > + let r_syntax_hl_roxygen = 0 + +enable folding of code delimited by parentheses, square brackets and curly +braces: > + let r_syntax_folding = 1 + +and highlight as functions all keywords followed by an opening parenthesis: > + let r_syntax_fun_pattern = 1 + + +R MARKDOWN *rmd.vim* *ft-rmd-syntax* + +To disable syntax highlight of YAML header, add to your |vimrc|: > + let rmd_syn_hl_yaml = 0 + +To disable syntax highlighting of citation keys: > + let rmd_syn_hl_citations = 0 + +To highlight R code in knitr chunk headers: > + let rmd_syn_hl_chunk = 1 + +By default, chunks of R code will be highlighted following the rules of R +language. Moreover, whenever the buffer is saved, Vim scans the buffer and +highlights other languages if they are present in new chunks. LaTeX code also +is automatically recognized and highlighted when the buffer is saved. This +behavior can be controlled with the variables `rmd_dynamic_fenced_languages`, +and `rmd_include_latex` whose valid values are: > + let rmd_dynamic_fenced_languages = 0 " No autodetection of languages + let rmd_dynamic_fenced_languages = 1 " Autodetection of languages + let rmd_include_latex = 0 " Don't highlight LaTeX code + let rmd_include_latex = 1 " Autodetect LaTeX code + let rmd_include_latex = 2 " Always include LaTeX highlighting + +If the value of `rmd_dynamic_fenced_languages` is 0, you still can set the +list of languages whose chunks of code should be properly highlighted, as in +the example: > + let rmd_fenced_languages = ['r', 'python'] + + +R RESTRUCTURED TEXT *rrst.vim* *ft-rrst-syntax* + +To highlight R code in knitr chunk headers, add to your |vimrc|: > + let rrst_syn_hl_chunk = 1 + + +READLINE *readline.vim* *ft-readline-syntax* + +The readline library is primarily used by the BASH shell, which adds quite a +few commands and options to the ones already available. To highlight these +items as well you can add the following to your |vimrc| or just type it in the +command line before loading a file with the readline syntax: > + let readline_has_bash = 1 + +This will add highlighting for the commands that BASH (version 2.05a and +later, and part earlier) adds. + + +REGO *rego.vim* *ft-rego-syntax* + +Rego is a query language developed by Styra. It is mostly used as a policy +language for kubernetes, but can be applied to almost anything. Files with +the following extensions are recognized as rego files: .rego. + + +RESTRUCTURED TEXT *rst.vim* *ft-rst-syntax* + +Syntax highlighting is enabled for code blocks within the document for a +select number of file types. See $VIMRUNTIME/syntax/rst.vim for the default +syntax list. + +To set a user-defined list of code block syntax highlighting: > + let rst_syntax_code_list = ['vim', 'lisp', ...] + +To assign multiple code block types to a single syntax, define +`rst_syntax_code_list` as a mapping: > + let rst_syntax_code_list = { + \ 'cpp': ['cpp', 'c++'], + \ 'bash': ['bash', 'sh'], + ... + \ } + +To use color highlighting for emphasis text: > + let rst_use_emphasis_colors = 1 + +To enable folding of sections: > + let rst_fold_enabled = 1 + +Note that folding can cause performance issues on some platforms. + + +REXX *rexx.vim* *ft-rexx-syntax* + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "rexx_minlines" internal variable +to a larger number: > + :let rexx_minlines = 50 +This will make the syntax synchronization start 50 lines before the first +displayed line. The default value is 10. The disadvantage of using a larger +number is that redrawing can become slow. + +Vim tries to guess what type a ".r" file is. If it can't be detected (from +comment lines), the default is "r". To make the default rexx add this line to +your .vimrc: *g:filetype_r* +> + :let g:filetype_r = "r" + + +RUBY *ruby.vim* *ft-ruby-syntax* + + Ruby: Operator highlighting |ruby_operators| + Ruby: Whitespace errors |ruby_space_errors| + Ruby: Folding |ruby_fold| |ruby_foldable_groups| + Ruby: Reducing expensive operations |ruby_no_expensive| |ruby_minlines| + Ruby: Spellchecking strings |ruby_spellcheck_strings| + + *ruby_operators* + Ruby: Operator highlighting ~ + +Operators can be highlighted by defining "ruby_operators": > + + :let ruby_operators = 1 +< + *ruby_space_errors* + Ruby: Whitespace errors ~ + +Whitespace errors can be highlighted by defining "ruby_space_errors": > + + :let ruby_space_errors = 1 +< +This will highlight trailing whitespace and tabs preceded by a space character +as errors. This can be refined by defining "ruby_no_trail_space_error" and +"ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after +spaces respectively. + + *ruby_fold* *ruby_foldable_groups* + Ruby: Folding ~ + +Folding can be enabled by defining "ruby_fold": > + + :let ruby_fold = 1 +< +This will set the value of 'foldmethod' to "syntax" locally to the current +buffer or window, which will enable syntax-based folding when editing Ruby +filetypes. + +Default folding is rather detailed, i.e., small syntax units like "if", "do", +"%w[]" may create corresponding fold levels. + +You can set "ruby_foldable_groups" to restrict which groups are foldable: > + + :let ruby_foldable_groups = 'if case %' +< +The value is a space-separated list of keywords: + + keyword meaning ~ + -------- ------------------------------------- ~ + ALL Most block syntax (default) + NONE Nothing + if "if" or "unless" block + def "def" block + class "class" block + module "module" block + do "do" block + begin "begin" block + case "case" block + for "for", "while", "until" loops + { Curly bracket block or hash literal + [ Array literal + % Literal with "%" notation, e.g.: %w(STRING), %!STRING! + / Regexp + string String and shell command output (surrounded by ', ", `) + : Symbol + # Multiline comment + << Here documents + __END__ Source code after "__END__" directive + + *ruby_no_expensive* + Ruby: Reducing expensive operations ~ + +By default, the "end" keyword is colorized according to the opening statement +of the block it closes. While useful, this feature can be expensive; if you +experience slow redrawing (or you are on a terminal with poor color support) +you may want to turn it off by defining the "ruby_no_expensive" variable: > + + :let ruby_no_expensive = 1 +< +In this case the same color will be used for all control keywords. + + *ruby_minlines* + +If you do want this feature enabled, but notice highlighting errors while +scrolling backwards, which are fixed when redrawing with CTRL-L, try setting +the "ruby_minlines" variable to a value larger than 50: > + + :let ruby_minlines = 100 +< +Ideally, this value should be a number of lines large enough to embrace your +largest class or module. + + *ruby_spellcheck_strings* + Ruby: Spellchecking strings ~ + +Ruby syntax will perform spellchecking of strings if you define +"ruby_spellcheck_strings": > + + :let ruby_spellcheck_strings = 1 +< + +SCHEME *scheme.vim* *ft-scheme-syntax* + +By default only R7RS keywords are highlighted and properly indented. + +scheme.vim also supports extensions of the CHICKEN Scheme->C compiler. +Define b:is_chicken or g:is_chicken, if you need them. + + +SDL *sdl.vim* *ft-sdl-syntax* + +The SDL highlighting probably misses a few keywords, but SDL has so many +of them it's almost impossibly to cope. + +The new standard, SDL-2000, specifies that all identifiers are +case-sensitive (which was not so before), and that all keywords can be +used either completely lowercase or completely uppercase. To have the +highlighting reflect this, you can set the following variable: > + :let sdl_2000=1 + +This also sets many new keywords. If you want to disable the old +keywords, which is probably a good idea, use: > + :let SDL_no_96=1 + + +The indentation is probably also incomplete, but right now I am very +satisfied with it for my own projects. + + +SED *sed.vim* *ft-sed-syntax* + +To make tabs stand out from regular blanks (accomplished by using Todo +highlighting on the tabs), define "g:sed_highlight_tabs" by putting > + + :let g:sed_highlight_tabs = 1 +< +in the vimrc file. (This special highlighting only applies for tabs +inside search patterns, replacement texts, addresses or text included +by an Append/Change/Insert command.) If you enable this option, it is +also a good idea to set the tab width to one character; by doing that, +you can easily count the number of tabs in a string. + +GNU sed allows comments after text on the same line. BSD sed only allows +comments where "#" is the first character of the line. To enforce BSD-style +comments, i.e. mark end-of-line comments as errors, use: > + + :let g:sed_dialect = "bsd" +< +Note that there are other differences between GNU sed and BSD sed which are +not (yet) affected by this setting. + +Bugs: + + The transform command (y) is treated exactly like the substitute + command. This means that, as far as this syntax file is concerned, + transform accepts the same flags as substitute, which is wrong. + (Transform accepts no flags.) I tolerate this bug because the + involved commands need very complex treatment (95 patterns, one for + each plausible pattern delimiter). + + +SGML *sgml.vim* *ft-sgml-syntax* + +The coloring scheme for tags in the SGML file works as follows. + +The <> of opening tags are colored differently than the </> of a closing tag. +This is on purpose! For opening tags the 'Function' color is used, while for +closing tags the 'Type' color is used (See syntax.vim to check how those are +defined for you) + +Known tag names are colored the same way as statements in C. Unknown tag +names are not colored which makes it easy to spot errors. + +Note that the same is true for argument (or attribute) names. Known attribute +names are colored differently than unknown ones. + +Some SGML tags are used to change the rendering of text. The following tags +are recognized by the sgml.vim syntax coloring file and change the way normal +text is shown: <varname> <emphasis> <command> <function> <literal> +<replaceable> <ulink> and <link>. + +If you want to change how such text is rendered, you must redefine the +following syntax groups: + + - sgmlBold + - sgmlBoldItalic + - sgmlUnderline + - sgmlItalic + - sgmlLink for links + +To make this redefinition work you must redefine them all and define the +following variable in your vimrc (this is due to the order in which the files +are read during initialization) > + let sgml_my_rendering=1 + +You can also disable this rendering by adding the following line to your +vimrc file: > + let sgml_no_rendering=1 + +(Adapted from the html.vim help text by Claudio Fleiner <claudio@fleiner.com>) + + + *ft-posix-syntax* *ft-dash-syntax* +SH *sh.vim* *ft-sh-syntax* *ft-bash-syntax* *ft-ksh-syntax* + +This covers syntax highlighting for the older Unix (Bourne) sh, and newer +shells such as bash, dash, posix, and the Korn shells. + +Vim attempts to determine which shell type is in use by specifying that +various filenames are of specific types, e.g.: > + + ksh : .kshrc* *.ksh + bash: .bashrc* bashrc bash.bashrc .bash_profile* *.bash +< +See $VIMRUNTIME/filetype.vim for the full list of patterns. If none of these +cases pertain, then the first line of the file is examined (ex. looking for +/bin/sh /bin/ksh /bin/bash). If the first line specifies a shelltype, then +that shelltype is used. However some files (ex. .profile) are known to be +shell files but the type is not apparent. Furthermore, on many systems sh is +symbolically linked to "bash" (Linux, Windows+cygwin) or "ksh" (Posix). + +One may specify a global default by instantiating one of the following +variables in your <.vimrc>: + + ksh: > + let g:is_kornshell = 1 +< posix: (using this is nearly the same as setting g:is_kornshell to 1) > + let g:is_posix = 1 +< bash: > + let g:is_bash = 1 +< sh: (default) Bourne shell > + let g:is_sh = 1 + +< (dash users should use posix) + +If there's no "#! ..." line, and the user hasn't availed himself/herself of a +default sh.vim syntax setting as just shown, then syntax/sh.vim will assume +the Bourne shell syntax. No need to quote RFCs or market penetration +statistics in error reports, please -- just select the default version of the +sh your system uses and install the associated "let..." in your <.vimrc>. + +The syntax/sh.vim file provides several levels of syntax-based folding: > + + let g:sh_fold_enabled= 0 (default, no syntax folding) + let g:sh_fold_enabled= 1 (enable function folding) + let g:sh_fold_enabled= 2 (enable heredoc folding) + let g:sh_fold_enabled= 4 (enable if/do/for folding) +> +then various syntax items (ie. HereDocuments and function bodies) become +syntax-foldable (see |:syn-fold|). You also may add these together +to get multiple types of folding: > + + let g:sh_fold_enabled= 3 (enables function and heredoc folding) + +If you notice highlighting errors while scrolling backwards which are fixed +when one redraws with CTRL-L, try setting the "sh_minlines" internal variable +to a larger number. Example: > + + let sh_minlines = 500 + +This will make syntax synchronization start 500 lines before the first +displayed line. The default value is 200. The disadvantage of using a larger +number is that redrawing can become slow. + +If you don't have much to synchronize on, displaying can be very slow. To +reduce this, the "sh_maxlines" internal variable can be set. Example: > + + let sh_maxlines = 100 +< +The default is to use the twice sh_minlines. Set it to a smaller number to +speed up displaying. The disadvantage is that highlight errors may appear. + +syntax/sh.vim tries to flag certain problems as errors; usually things like +unmatched "]", "done", "fi", etc. If you find the error handling problematic +for your purposes, you may suppress such error highlighting by putting +the following line in your .vimrc: > + + let g:sh_no_error= 1 +< + + *sh-embed* *sh-awk* + Sh: EMBEDDING LANGUAGES~ + +You may wish to embed languages into sh. I'll give an example courtesy of +Lorance Stinson on how to do this with awk as an example. Put the following +file into $HOME/.vim/after/syntax/sh/awkembed.vim: > + + " AWK Embedding: + " ============== + " Shamelessly ripped from aspperl.vim by Aaron Hope. + if exists("b:current_syntax") + unlet b:current_syntax + endif + syn include @AWKScript syntax/awk.vim + syn region AWKScriptCode matchgroup=AWKCommand start=+[=\\]\@<!'+ skip=+\\'+ end=+'+ contains=@AWKScript contained + syn region AWKScriptEmbedded matchgroup=AWKCommand start=+\<awk\>+ skip=+\\$+ end=+[=\\]\@<!'+me=e-1 contains=@shIdList,@shExprList2 nextgroup=AWKScriptCode + syn cluster shCommandSubList add=AWKScriptEmbedded + hi def link AWKCommand Type +< +This code will then let the awk code in the single quotes: > + awk '...awk code here...' +be highlighted using the awk highlighting syntax. Clearly this may be +extended to other languages. + + +SPEEDUP *spup.vim* *ft-spup-syntax* +(AspenTech plant simulator) + +The Speedup syntax file has some options: + +- strict_subsections : If this variable is defined, only keywords for + sections and subsections will be highlighted as statements but not + other keywords (like WITHIN in the OPERATION section). + +- highlight_types : Definition of this variable causes stream types + like temperature or pressure to be highlighted as Type, not as a + plain Identifier. Included are the types that are usually found in + the DECLARE section; if you defined own types, you have to include + them in the syntax file. + +- oneline_comments : This value ranges from 1 to 3 and determines the + highlighting of # style comments. + + oneline_comments = 1 : Allow normal Speedup code after an even + number of #s. + + oneline_comments = 2 : Show code starting with the second # as + error. This is the default setting. + + oneline_comments = 3 : Show the whole line as error if it contains + more than one #. + +Since especially OPERATION sections tend to become very large due to +PRESETting variables, syncing may be critical. If your computer is +fast enough, you can increase minlines and/or maxlines near the end of +the syntax file. + + +SQL *sql.vim* *ft-sql-syntax* + *sqlinformix.vim* *ft-sqlinformix-syntax* + *sqlanywhere.vim* *ft-sqlanywhere-syntax* + +While there is an ANSI standard for SQL, most database engines add their own +custom extensions. Vim currently supports the Oracle and Informix dialects of +SQL. Vim assumes "*.sql" files are Oracle SQL by default. + +Vim currently has SQL support for a variety of different vendors via syntax +scripts. You can change Vim's default from Oracle to any of the current SQL +supported types. You can also easily alter the SQL dialect being used on a +buffer by buffer basis. + +For more detailed instructions see |ft_sql.txt|. + + +SQUIRREL *squirrel.vim* *ft-squirrel-syntax* + +Squirrel is a high level imperative, object-oriented programming language, +designed to be a light-weight scripting language that fits in the size, memory +bandwidth, and real-time requirements of applications like video games. Files +with the following extensions are recognized as squirrel files: .nut. + + +TCSH *tcsh.vim* *ft-tcsh-syntax* + +This covers the shell named "tcsh". It is a superset of csh. See |csh.vim| +for how the filetype is detected. + +Tcsh does not allow \" in strings unless the "backslash_quote" shell variable +is set. If you want VIM to assume that no backslash quote constructs exist +add this line to your .vimrc: > + + :let tcsh_backslash_quote = 0 + +If you notice highlighting errors while scrolling backwards, which are fixed +when redrawing with CTRL-L, try setting the "tcsh_minlines" internal variable +to a larger number: > + + :let tcsh_minlines = 1000 + +This will make the syntax synchronization start 1000 lines before the first +displayed line. If you set "tcsh_minlines" to "fromstart", then +synchronization is done from the start of the file. The default value for +tcsh_minlines is 100. The disadvantage of using a larger number is that +redrawing can become slow. + + +TEX *tex.vim* *ft-tex-syntax* *latex-syntax* + *syntax-tex* *syntax-latex* + + Tex Contents~ + Tex: Want Syntax Folding? |tex-folding| + Tex: No Spell Checking Wanted |g:tex_nospell| + Tex: Don't Want Spell Checking In Comments? |tex-nospell| + Tex: Want Spell Checking in Verbatim Zones? |tex-verb| + Tex: Run-on Comments or MathZones |tex-runon| + Tex: Slow Syntax Highlighting? |tex-slow| + Tex: Want To Highlight More Commands? |tex-morecommands| + Tex: Excessive Error Highlighting? |tex-error| + Tex: Need a new Math Group? |tex-math| + Tex: Starting a New Style? |tex-style| + Tex: Taking Advantage of Conceal Mode |tex-conceal| + Tex: Selective Conceal Mode |g:tex_conceal| + Tex: Controlling iskeyword |g:tex_isk| + Tex: Fine Subscript and Superscript Control |tex-supersub| + Tex: Match Check Control |tex-matchcheck| + + *tex-folding* *g:tex_fold_enabled* + Tex: Want Syntax Folding? ~ + +As of version 28 of <syntax/tex.vim>, syntax-based folding of parts, chapters, +sections, subsections, etc are supported. Put > + let g:tex_fold_enabled=1 +in your <.vimrc>, and :set fdm=syntax. I suggest doing the latter via a +modeline at the end of your LaTeX file: > + % vim: fdm=syntax +If your system becomes too slow, then you might wish to look into > + https://vimhelp.org/vim_faq.txt.html#faq-29.7 +< + *g:tex_nospell* + Tex: No Spell Checking Wanted~ + +If you don't want spell checking anywhere in your LaTeX document, put > + let g:tex_nospell=1 +into your .vimrc. If you merely wish to suppress spell checking inside +comments only, see |g:tex_comment_nospell|. + + *tex-nospell* *g:tex_comment_nospell* + Tex: Don't Want Spell Checking In Comments? ~ + +Some folks like to include things like source code in comments and so would +prefer that spell checking be disabled in comments in LaTeX files. To do +this, put the following in your <.vimrc>: > + let g:tex_comment_nospell= 1 +If you want to suppress spell checking everywhere inside your LaTeX document, +see |g:tex_nospell|. + + *tex-verb* *g:tex_verbspell* + Tex: Want Spell Checking in Verbatim Zones?~ + +Often verbatim regions are used for things like source code; seldom does +one want source code spell-checked. However, for those of you who do +want your verbatim zones spell-checked, put the following in your <.vimrc>: > + let g:tex_verbspell= 1 +< + *tex-runon* *tex-stopzone* + Tex: Run-on Comments or MathZones ~ + +The <syntax/tex.vim> highlighting supports TeX, LaTeX, and some AmsTeX. The +highlighting supports three primary zones/regions: normal, texZone, and +texMathZone. Although considerable effort has been made to have these zones +terminate properly, zones delineated by $..$ and $$..$$ cannot be synchronized +as there's no difference between start and end patterns. Consequently, a +special "TeX comment" has been provided > + %stopzone +which will forcibly terminate the highlighting of either a texZone or a +texMathZone. + + *tex-slow* *tex-sync* + Tex: Slow Syntax Highlighting? ~ + +If you have a slow computer, you may wish to reduce the values for > + :syn sync maxlines=200 + :syn sync minlines=50 +(especially the latter). If your computer is fast, you may wish to +increase them. This primarily affects synchronizing (i.e. just what group, +if any, is the text at the top of the screen supposed to be in?). + +Another cause of slow highlighting is due to syntax-driven folding; see +|tex-folding| for a way around this. + + *g:tex_fast* + +Finally, if syntax highlighting is still too slow, you may set > + + :let g:tex_fast= "" + +in your .vimrc. Used this way, the g:tex_fast variable causes the syntax +highlighting script to avoid defining any regions and associated +synchronization. The result will be much faster syntax highlighting; the +price: you will no longer have as much highlighting or any syntax-based +folding, and you will be missing syntax-based error checking. + +You may decide that some syntax is acceptable; you may use the following table +selectively to enable just some syntax highlighting: > + + b : allow bold and italic syntax + c : allow texComment syntax + m : allow texMatcher syntax (ie. {...} and [...]) + M : allow texMath syntax + p : allow parts, chapter, section, etc syntax + r : allow texRefZone syntax (nocite, bibliography, label, pageref, eqref) + s : allow superscript/subscript regions + S : allow texStyle syntax + v : allow verbatim syntax + V : allow texNewEnv and texNewCmd syntax +< +As an example, let g:tex_fast= "M" will allow math-associated highlighting +but suppress all the other region-based syntax highlighting. +(also see: |g:tex_conceal| and |tex-supersub|) + + *tex-morecommands* *tex-package* + Tex: Want To Highlight More Commands? ~ + +LaTeX is a programmable language, and so there are thousands of packages full +of specialized LaTeX commands, syntax, and fonts. If you're using such a +package you'll often wish that the distributed syntax/tex.vim would support +it. However, clearly this is impractical. So please consider using the +techniques in |mysyntaxfile-add| to extend or modify the highlighting provided +by syntax/tex.vim. Please consider uploading any extensions that you write, +which typically would go in $HOME/after/syntax/tex/[pkgname].vim, to +http://vim.sf.net/. + +I've included some support for various popular packages on my website: > + + http://www.drchip.org/astronaut/vim/index.html#LATEXPKGS +< +The syntax files there go into your .../after/syntax/tex/ directory. + + *tex-error* *g:tex_no_error* + Tex: Excessive Error Highlighting? ~ + +The <tex.vim> supports lexical error checking of various sorts. Thus, +although the error checking is ofttimes very useful, it can indicate +errors where none actually are. If this proves to be a problem for you, +you may put in your <.vimrc> the following statement: > + let g:tex_no_error=1 +and all error checking by <syntax/tex.vim> will be suppressed. + + *tex-math* + Tex: Need a new Math Group? ~ + +If you want to include a new math group in your LaTeX, the following +code shows you an example as to how you might do so: > + call TexNewMathZone(sfx,mathzone,starform) +You'll want to provide the new math group with a unique suffix +(currently, A-L and V-Z are taken by <syntax/tex.vim> itself). +As an example, consider how eqnarray is set up by <syntax/tex.vim>: > + call TexNewMathZone("D","eqnarray",1) +You'll need to change "mathzone" to the name of your new math group, +and then to the call to it in .vim/after/syntax/tex.vim. +The "starform" variable, if true, implies that your new math group +has a starred form (ie. eqnarray*). + + *tex-style* *b:tex_stylish* + Tex: Starting a New Style? ~ + +One may use "\makeatletter" in *.tex files, thereby making the use of "@" in +commands available. However, since the *.tex file doesn't have one of the +following suffices: sty cls clo dtx ltx, the syntax highlighting will flag +such use of @ as an error. To solve this: > + + :let b:tex_stylish = 1 + :set ft=tex + +Putting "let g:tex_stylish=1" into your <.vimrc> will make <syntax/tex.vim> +always accept such use of @. + + *tex-cchar* *tex-cole* *tex-conceal* + Tex: Taking Advantage of Conceal Mode~ + +If you have |'conceallevel'| set to 2 and if your encoding is utf-8, then a +number of character sequences can be translated into appropriate utf-8 glyphs, +including various accented characters, Greek characters in MathZones, and +superscripts and subscripts in MathZones. Not all characters can be made into +superscripts or subscripts; the constraint is due to what utf-8 supports. +In fact, only a few characters are supported as subscripts. + +One way to use this is to have vertically split windows (see |CTRL-W_v|); one +with |'conceallevel'| at 0 and the other at 2; and both using |'scrollbind'|. + + *g:tex_conceal* + Tex: Selective Conceal Mode~ + +You may selectively use conceal mode by setting g:tex_conceal in your +<.vimrc>. By default, g:tex_conceal is set to "admgs" to enable concealment +for the following sets of characters: > + + a = accents/ligatures + b = bold and italic + d = delimiters + m = math symbols + g = Greek + s = superscripts/subscripts +< +By leaving one or more of these out, the associated conceal-character +substitution will not be made. + + *g:tex_isk* *g:tex_stylish* + Tex: Controlling iskeyword~ + +Normally, LaTeX keywords support 0-9, a-z, A-z, and 192-255 only. Latex +keywords don't support the underscore - except when in *.sty files. The +syntax highlighting script handles this with the following logic: + + * If g:tex_stylish exists and is 1 + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (regardless of g:tex_isk) + * Else if the file's suffix is sty, cls, clo, dtx, or ltx, + then the file will be treated as a "sty" file, so the "_" + will be allowed as part of keywords + (regardless of g:tex_isk) + + * If g:tex_isk exists, then it will be used for the local 'iskeyword' + * Else the local 'iskeyword' will be set to 48-57,a-z,A-Z,192-255 + + *tex-supersub* *g:tex_superscripts* *g:tex_subscripts* + Tex: Fine Subscript and Superscript Control~ + + See |tex-conceal| for how to enable concealed character replacement. + + See |g:tex_conceal| for selectively concealing accents, bold/italic, + math, Greek, and superscripts/subscripts. + + One may exert fine control over which superscripts and subscripts one + wants syntax-based concealment for (see |:syn-cchar|). Since not all + fonts support all characters, one may override the + concealed-replacement lists; by default these lists are given by: > + + let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]" + let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]" +< + For example, I use Luxi Mono Bold; it doesn't support subscript + characters for "hklmnpst", so I put > + let g:tex_subscripts= "[0-9aeijoruvx,+-/().]" +< in ~/.vim/ftplugin/tex/tex.vim in order to avoid having inscrutable + utf-8 glyphs appear. + + *tex-matchcheck* *g:tex_matchcheck* + Tex: Match Check Control~ + + Sometimes one actually wants mismatched parentheses, square braces, + and or curly braces; for example, \text{(1,10]} is a range from but + not including 1 to and including 10. This wish, of course, conflicts + with the desire to provide delimiter mismatch detection. To + accommodate these conflicting goals, syntax/tex.vim provides > + g:tex_matchcheck = '[({[]' +< which is shown along with its default setting. So, if one doesn't + want [] and () to be checked for mismatches, try using > + let g:tex_matchcheck= '[{}]' +< If you don't want matching to occur inside bold and italicized + regions, > + let g:tex_excludematcher= 1 +< will prevent the texMatcher group from being included in those regions. + +TF *tf.vim* *ft-tf-syntax* + +There is one option for the tf syntax highlighting. + +For syncing, minlines defaults to 100. If you prefer another value, you can +set "tf_minlines" to the value you desire. Example: > + + :let tf_minlines = your choice +< +VIM *vim.vim* *ft-vim-syntax* + *g:vimsyn_minlines* *g:vimsyn_maxlines* +There is a trade-off between more accurate syntax highlighting versus screen +updating speed. To improve accuracy, you may wish to increase the +g:vimsyn_minlines variable. The g:vimsyn_maxlines variable may be used to +improve screen updating rates (see |:syn-sync| for more on this). > + + g:vimsyn_minlines : used to set synchronization minlines + g:vimsyn_maxlines : used to set synchronization maxlines +< + (g:vim_minlines and g:vim_maxlines are deprecated variants of + these two options) + + *g:vimsyn_embed* +The g:vimsyn_embed option allows users to select what, if any, types of +embedded script highlighting they wish to have. > + + g:vimsyn_embed == 0 : don't support any embedded scripts + g:vimsyn_embed =~ 'l' : support embedded lua + g:vimsyn_embed =~ 'm' : support embedded mzscheme + g:vimsyn_embed =~ 'p' : support embedded perl + g:vimsyn_embed =~ 'P' : support embedded python + g:vimsyn_embed =~ 'r' : support embedded ruby + g:vimsyn_embed =~ 't' : support embedded tcl +< +By default, g:vimsyn_embed is a string supporting interpreters that your vim +itself supports. Concatenate multiple characters to support multiple types +of embedded interpreters; ie. g:vimsyn_embed= "mp" supports embedded mzscheme +and embedded perl. + *g:vimsyn_folding* + +Some folding is now supported with syntax/vim.vim: > + + g:vimsyn_folding == 0 or doesn't exist: no syntax-based folding + g:vimsyn_folding =~ 'a' : augroups + g:vimsyn_folding =~ 'f' : fold functions + g:vimsyn_folding =~ 'l' : fold lua script + g:vimsyn_folding =~ 'm' : fold mzscheme script + g:vimsyn_folding =~ 'p' : fold perl script + g:vimsyn_folding =~ 'P' : fold python script + g:vimsyn_folding =~ 'r' : fold ruby script + g:vimsyn_folding =~ 't' : fold tcl script +< + *g:vimsyn_noerror* +Not all error highlighting that syntax/vim.vim does may be correct; Vim script +is a difficult language to highlight correctly. A way to suppress error +highlighting is to put the following line in your |vimrc|: > + + let g:vimsyn_noerror = 1 +< + + +WDL *wdl.vim* *wdl-syntax* + +The Workflow Description Language is a way to specify data processing workflows +with a human-readable and writeable syntax. This is used a lot in +bioinformatics. More info on the spec can be found here: +https://github.com/openwdl/wdl + + +XF86CONFIG *xf86conf.vim* *ft-xf86conf-syntax* + +The syntax of XF86Config file differs in XFree86 v3.x and v4.x. Both +variants are supported. Automatic detection is used, but is far from perfect. +You may need to specify the version manually. Set the variable +xf86conf_xfree86_version to 3 or 4 according to your XFree86 version in +your .vimrc. Example: > + :let xf86conf_xfree86_version=3 +When using a mix of versions, set the b:xf86conf_xfree86_version variable. + +Note that spaces and underscores in option names are not supported. Use +"SyncOnGreen" instead of "__s yn con gr_e_e_n" if you want the option name +highlighted. + + +XML *xml.vim* *ft-xml-syntax* + +Xml namespaces are highlighted by default. This can be inhibited by +setting a global variable: > + + :let g:xml_namespace_transparent=1 +< + *xml-folding* +The xml syntax file provides syntax |folding| (see |:syn-fold|) between +start and end tags. This can be turned on by > + + :let g:xml_syntax_folding = 1 + :set foldmethod=syntax + +Note: Syntax folding might slow down syntax highlighting significantly, +especially for large files. + + +X Pixmaps (XPM) *xpm.vim* *ft-xpm-syntax* + +xpm.vim creates its syntax items dynamically based upon the contents of the +XPM file. Thus if you make changes e.g. in the color specification strings, +you have to source it again e.g. with ":set syn=xpm". + +To copy a pixel with one of the colors, yank a "pixel" with "yl" and insert it +somewhere else with "P". + +Do you want to draw with the mouse? Try the following: > + :function! GetPixel() + : let c = getline(".")[col(".") - 1] + : echo c + : exe "noremap <LeftMouse> <LeftMouse>r" .. c + : exe "noremap <LeftDrag> <LeftMouse>r" .. c + :endfunction + :noremap <RightMouse> <LeftMouse>:call GetPixel()<CR> + :set guicursor=n:hor20 " to see the color beneath the cursor +This turns the right button into a pipette and the left button into a pen. +It will work with XPM files that have one character per pixel only and you +must not click outside of the pixel strings, but feel free to improve it. + +It will look much better with a font in a quadratic cell size, e.g. for X: > + :set guifont=-*-clean-medium-r-*-*-8-*-*-*-*-80-* + + +YAML *yaml.vim* *ft-yaml-syntax* + + *g:yaml_schema* *b:yaml_schema* +A YAML schema is a combination of a set of tags and a mechanism for resolving +non-specific tags. For user this means that YAML parser may, depending on +plain scalar contents, treat plain scalar (which can actually be only string +and nothing else) as a value of the other type: null, boolean, floating-point, +integer. `g:yaml_schema` option determines according to which schema values +will be highlighted specially. Supported schemas are + +Schema Description ~ +failsafe No additional highlighting. +json Supports JSON-style numbers, booleans and null. +core Supports more number, boolean and null styles. +pyyaml In addition to core schema supports highlighting timestamps, + but there are some differences in what is recognized as + numbers and many additional boolean values not present in core + schema. + +Default schema is `core`. + +Note that schemas are not actually limited to plain scalars, but this is the +only difference between schemas defined in YAML specification and the only +difference defined in the syntax file. + + +ZSH *zsh.vim* *ft-zsh-syntax* + +The syntax script for zsh allows for syntax-based folding: > + + :let g:zsh_fold_enable = 1 + +============================================================================== +6. Defining a syntax *:syn-define* *E410* + +Vim understands three types of syntax items: + +1. Keyword + It can only contain keyword characters, according to the characters + specified with |:syn-iskeyword| or the 'iskeyword' option. It cannot + contain other syntax items. It will only match with a complete word (there + are no keyword characters before or after the match). The keyword "if" + would match in "if(a=b)", but not in "ifdef x", because "(" is not a + keyword character and "d" is. + +2. Match + This is a match with a single regexp pattern. + +3. Region + This starts at a match of the "start" regexp pattern and ends with a match + with the "end" regexp pattern. Any other text can appear in between. A + "skip" regexp pattern can be used to avoid matching the "end" pattern. + +Several syntax ITEMs can be put into one syntax GROUP. For a syntax group +you can give highlighting attributes. For example, you could have an item +to define a "/* .. */" comment and another one that defines a "// .." comment, +and put them both in the "Comment" group. You can then specify that a +"Comment" will be in bold font and have a blue color. You are free to make +one highlight group for one syntax item, or put all items into one group. +This depends on how you want to specify your highlighting attributes. Putting +each item in its own group results in having to specify the highlighting +for a lot of groups. + +Note that a syntax group and a highlight group are similar. For a highlight +group you will have given highlight attributes. These attributes will be used +for the syntax group with the same name. + +In case more than one item matches at the same position, the one that was +defined LAST wins. Thus you can override previously defined syntax items by +using an item that matches the same text. But a keyword always goes before a +match or region. And a keyword with matching case always goes before a +keyword with ignoring case. + + +PRIORITY *:syn-priority* + +When several syntax items may match, these rules are used: + +1. When multiple Match or Region items start in the same position, the item + defined last has priority. +2. A Keyword has priority over Match and Region items. +3. An item that starts in an earlier position has priority over items that + start in later positions. + + +DEFINING CASE *:syn-case* *E390* + +:sy[ntax] case [match | ignore] + This defines if the following ":syntax" commands will work with + matching case, when using "match", or with ignoring case, when using + "ignore". Note that any items before this are not affected, and all + items until the next ":syntax case" command are affected. + +:sy[ntax] case + Show either "syntax case match" or "syntax case ignore". + + +DEFINING FOLDLEVEL *:syn-foldlevel* + +:sy[ntax] foldlevel start +:sy[ntax] foldlevel minimum + This defines how the foldlevel of a line is computed when using + foldmethod=syntax (see |fold-syntax| and |:syn-fold|): + + start: Use level of item containing start of line. + minimum: Use lowest local-minimum level of items on line. + + The default is "start". Use "minimum" to search a line horizontally + for the lowest level contained on the line that is followed by a + higher level. This produces more natural folds when syntax items + may close and open horizontally within a line. + +:sy[ntax] foldlevel + Show the current foldlevel method, either "syntax foldlevel start" or + "syntax foldlevel minimum". + + {not meaningful when Vim was compiled without |+folding| feature} + +SPELL CHECKING *:syn-spell* + +:sy[ntax] spell toplevel +:sy[ntax] spell notoplevel +:sy[ntax] spell default + This defines where spell checking is to be done for text that is not + in a syntax item: + + toplevel: Text is spell checked. + notoplevel: Text is not spell checked. + default: When there is a @Spell cluster no spell checking. + + For text in syntax items use the @Spell and @NoSpell clusters + |spell-syntax|. When there is no @Spell and no @NoSpell cluster then + spell checking is done for "default" and "toplevel". + + To activate spell checking the 'spell' option must be set. + +:sy[ntax] spell + Show the current syntax spell checking method, either "syntax spell + toplevel", "syntax spell notoplevel" or "syntax spell default". + + +SYNTAX ISKEYWORD SETTING *:syn-iskeyword* + +:sy[ntax] iskeyword [clear | {option}] + This defines the keyword characters. It's like the 'iskeyword' option + for but only applies to syntax highlighting. + + clear: Syntax specific iskeyword setting is disabled and the + buffer-local 'iskeyword' setting is used. + {option} Set the syntax 'iskeyword' option to a new value. + + Example: > + :syntax iskeyword @,48-57,192-255,$,_ +< + This would set the syntax specific iskeyword option to include all + alphabetic characters, plus the numeric characters, all accented + characters and also includes the "_" and the "$". + + If no argument is given, the current value will be output. + + Setting this option influences what |/\k| matches in syntax patterns + and also determines where |:syn-keyword| will be checked for a new + match. + + It is recommended when writing syntax files, to use this command to + set the correct value for the specific syntax language and not change + the 'iskeyword' option. + +DEFINING KEYWORDS *:syn-keyword* + +:sy[ntax] keyword {group-name} [{options}] {keyword} .. [{options}] + + This defines a number of keywords. + + {group-name} Is a syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + {keyword} .. Is a list of keywords which are part of this group. + + Example: > + :syntax keyword Type int long char +< + The {options} can be given anywhere in the line. They will apply to + all keywords given, also for options that come after a keyword. + These examples do exactly the same: > + :syntax keyword Type contained int long char + :syntax keyword Type int long contained char + :syntax keyword Type int long char contained +< *E789* *E890* + When you have a keyword with an optional tail, like Ex commands in + Vim, you can put the optional characters inside [], to define all the + variations at once: > + :syntax keyword vimCommand ab[breviate] n[ext] +< + Don't forget that a keyword can only be recognized if all the + characters are included in the 'iskeyword' option. If one character + isn't, the keyword will never be recognized. + Multi-byte characters can also be used. These do not have to be in + 'iskeyword'. + See |:syn-iskeyword| for defining syntax specific iskeyword settings. + + A keyword always has higher priority than a match or region, the + keyword is used if more than one item matches. Keywords do not nest + and a keyword can't contain anything else. + + Note that when you have a keyword that is the same as an option (even + one that isn't allowed here), you can not use it. Use a match + instead. + + The maximum length of a keyword is 80 characters. + + The same keyword can be defined multiple times, when its containment + differs. For example, you can define the keyword once not contained + and use one highlight group, and once contained, and use a different + highlight group. Example: > + :syn keyword vimCommand tag + :syn keyword vimSetting contained tag +< When finding "tag" outside of any syntax item, the "vimCommand" + highlight group is used. When finding "tag" in a syntax item that + contains "vimSetting", the "vimSetting" group is used. + + +DEFINING MATCHES *:syn-match* + +:sy[ntax] match {group-name} [{options}] + [excludenl] + [keepend] + {pattern} + [{options}] + + This defines one match. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [excludenl] Don't make a pattern with the end-of-line "$" + extend a containing match or region. Must be + given before the pattern. |:syn-excludenl| + keepend Don't allow contained matches to go past a + match with the end pattern. See + |:syn-keepend|. + {pattern} The search pattern that defines the match. + See |:syn-pattern| below. + Note that the pattern may match more than one + line, which makes the match depend on where + Vim starts searching for the pattern. You + need to make sure syncing takes care of this. + + Example (match a character constant): > + :syntax match Character /'.'/hs=s+1,he=e-1 +< + +DEFINING REGIONS *:syn-region* *:syn-start* *:syn-skip* *:syn-end* + *E398* *E399* +:sy[ntax] region {group-name} [{options}] + [matchgroup={group-name}] + [keepend] + [extend] + [excludenl] + start={start-pattern} .. + [skip={skip-pattern}] + end={end-pattern} .. + [{options}] + + This defines one region. It may span several lines. + + {group-name} A syntax group name such as "Comment". + [{options}] See |:syn-arguments| below. + [matchgroup={group-name}] The syntax group to use for the following + start or end pattern matches only. Not used + for the text in between the matched start and + end patterns. Use NONE to reset to not using + a different group for the start or end match. + See |:syn-matchgroup|. + keepend Don't allow contained matches to go past a + match with the end pattern. See + |:syn-keepend|. + extend Override a "keepend" for an item this region + is contained in. See |:syn-extend|. + excludenl Don't make a pattern with the end-of-line "$" + extend a containing match or item. Only + useful for end patterns. Must be given before + the patterns it applies to. |:syn-excludenl| + start={start-pattern} The search pattern that defines the start of + the region. See |:syn-pattern| below. + skip={skip-pattern} The search pattern that defines text inside + the region where not to look for the end + pattern. See |:syn-pattern| below. + end={end-pattern} The search pattern that defines the end of + the region. See |:syn-pattern| below. + + Example: > + :syntax region String start=+"+ skip=+\\"+ end=+"+ +< + The start/skip/end patterns and the options can be given in any order. + There can be zero or one skip pattern. There must be one or more + start and end patterns. This means that you can omit the skip + pattern, but you must give at least one start and one end pattern. It + is allowed to have white space before and after the equal sign + (although it mostly looks better without white space). + + When more than one start pattern is given, a match with one of these + is sufficient. This means there is an OR relation between the start + patterns. The last one that matches is used. The same is true for + the end patterns. + + The search for the end pattern starts right after the start pattern. + Offsets are not used for this. This implies that the match for the + end pattern will never overlap with the start pattern. + + The skip and end pattern can match across line breaks, but since the + search for the pattern can start in any line it often does not do what + you want. The skip pattern doesn't avoid a match of an end pattern in + the next line. Use single-line patterns to avoid trouble. + + Note: The decision to start a region is only based on a matching start + pattern. There is no check for a matching end pattern. This does NOT + work: > + :syn region First start="(" end=":" + :syn region Second start="(" end=";" +< The Second always matches before the First (last defined pattern has + higher priority). The Second region then continues until the next + ';', no matter if there is a ':' before it. Using a match does work: > + :syn match First "(\_.\{-}:" + :syn match Second "(\_.\{-};" +< This pattern matches any character or line break with "\_." and + repeats that with "\{-}" (repeat as few as possible). + + *:syn-keepend* + By default, a contained match can obscure a match for the end pattern. + This is useful for nesting. For example, a region that starts with + "{" and ends with "}", can contain another region. An encountered "}" + will then end the contained region, but not the outer region: + { starts outer "{}" region + { starts contained "{}" region + } ends contained "{}" region + } ends outer "{} region + If you don't want this, the "keepend" argument will make the matching + of an end pattern of the outer region also end any contained item. + This makes it impossible to nest the same region, but allows for + contained items to highlight parts of the end pattern, without causing + that to skip the match with the end pattern. Example: > + :syn match vimComment +"[^"]\+$+ + :syn region vimCommand start="set" end="$" contains=vimComment keepend +< The "keepend" makes the vimCommand always end at the end of the line, + even though the contained vimComment includes a match with the <EOL>. + + When "keepend" is not used, a match with an end pattern is retried + after each contained match. When "keepend" is included, the first + encountered match with an end pattern is used, truncating any + contained matches. + *:syn-extend* + The "keepend" behavior can be changed by using the "extend" argument. + When an item with "extend" is contained in an item that uses + "keepend", the "keepend" is ignored and the containing region will be + extended. + This can be used to have some contained items extend a region while + others don't. Example: > + + :syn region htmlRef start=+<a>+ end=+</a>+ keepend contains=htmlItem,htmlScript + :syn match htmlItem +<[^>]*>+ contained + :syn region htmlScript start=+<script+ end=+</script[^>]*>+ contained extend + +< Here the htmlItem item does not make the htmlRef item continue + further, it is only used to highlight the <> items. The htmlScript + item does extend the htmlRef item. + + Another example: > + :syn region xmlFold start="<a>" end="</a>" fold transparent keepend extend +< This defines a region with "keepend", so that its end cannot be + changed by contained items, like when the "</a>" is matched to + highlight it differently. But when the xmlFold region is nested (it + includes itself), the "extend" applies, so that the "</a>" of a nested + region only ends that region, and not the one it is contained in. + + *:syn-excludenl* + When a pattern for a match or end pattern of a region includes a '$' + to match the end-of-line, it will make a region item that it is + contained in continue on the next line. For example, a match with + "\\$" (backslash at the end of the line) can make a region continue + that would normally stop at the end of the line. This is the default + behavior. If this is not wanted, there are two ways to avoid it: + 1. Use "keepend" for the containing item. This will keep all + contained matches from extending the match or region. It can be + used when all contained items must not extend the containing item. + 2. Use "excludenl" in the contained item. This will keep that match + from extending the containing match or region. It can be used if + only some contained items must not extend the containing item. + "excludenl" must be given before the pattern it applies to. + + *:syn-matchgroup* + "matchgroup" can be used to highlight the start and/or end pattern + differently than the body of the region. Example: > + :syntax region String matchgroup=Quote start=+"+ skip=+\\"+ end=+"+ +< This will highlight the quotes with the "Quote" group, and the text in + between with the "String" group. + The "matchgroup" is used for all start and end patterns that follow, + until the next "matchgroup". Use "matchgroup=NONE" to go back to not + using a matchgroup. + + In a start or end pattern that is highlighted with "matchgroup" the + contained items of the region are not used. This can be used to avoid + that a contained item matches in the start or end pattern match. When + using "transparent", this does not apply to a start or end pattern + match that is highlighted with "matchgroup". + + Here is an example, which highlights three levels of parentheses in + different colors: > + :sy region par1 matchgroup=par1 start=/(/ end=/)/ contains=par2 + :sy region par2 matchgroup=par2 start=/(/ end=/)/ contains=par3 contained + :sy region par3 matchgroup=par3 start=/(/ end=/)/ contains=par1 contained + :hi par1 ctermfg=red guifg=red + :hi par2 ctermfg=blue guifg=blue + :hi par3 ctermfg=darkgreen guifg=darkgreen +< + *E849* +The maximum number of syntax groups is 19999. + +============================================================================== +7. :syntax arguments *:syn-arguments* + +The :syntax commands that define syntax items take a number of arguments. +The common ones are explained here. The arguments may be given in any order +and may be mixed with patterns. + +Not all commands accept all arguments. This table shows which arguments +can not be used for all commands: + *E395* + contains oneline fold display extend concealends~ +:syntax keyword - - - - - - +:syntax match yes - yes yes yes - +:syntax region yes yes yes yes yes yes + +These arguments can be used for all three commands: + conceal + cchar + contained + containedin + nextgroup + transparent + skipwhite + skipnl + skipempty + +conceal *conceal* *:syn-conceal* + +When the "conceal" argument is given, the item is marked as concealable. +Whether or not it is actually concealed depends on the value of the +'conceallevel' option. The 'concealcursor' option is used to decide whether +concealable items in the current line are displayed unconcealed to be able to +edit the line. +Another way to conceal text is with |matchadd()|. + +concealends *:syn-concealends* + +When the "concealends" argument is given, the start and end matches of +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" + +cchar *:syn-cchar* + *E844* +The "cchar" argument defines the character shown in place of the item +when it is concealed (setting "cchar" only makes sense when the conceal +argument is given.) If "cchar" is not set then the default conceal +character defined in the 'listchars' option is used. The character cannot be +a control character such as Tab. Example: > + :syntax match Entity "&" conceal cchar=& +See |hl-Conceal| for highlighting. + +contained *:syn-contained* + +When the "contained" argument is given, this item will not be recognized at +the top level, but only when it is mentioned in the "contains" field of +another match. Example: > + :syntax keyword Todo TODO contained + :syntax match Comment "//.*" contains=Todo + + +display *:syn-display* + +If the "display" argument is given, this item will be skipped when the +detected highlighting will not be displayed. This will speed up highlighting, +by skipping this item when only finding the syntax state for the text that is +to be displayed. + +Generally, you can use "display" for match and region items that meet these +conditions: +- The item does not continue past the end of a line. Example for C: A region + for a "/*" comment can't contain "display", because it continues on the next + line. +- The item does not contain items that continue past the end of the line or + make it continue on the next line. +- The item does not change the size of any item it is contained in. Example + for C: A match with "\\$" in a preprocessor match can't have "display", + because it may make that preprocessor match shorter. +- The item does not allow other items to match that didn't match otherwise, + and that item may extend the match too far. Example for C: A match for a + "//" comment can't use "display", because a "/*" inside that comment would + match then and start a comment which extends past the end of the line. + +Examples, for the C language, where "display" can be used: +- match with a number +- match with a label + + +transparent *:syn-transparent* + +If the "transparent" argument is given, this item will not be highlighted +itself, but will take the highlighting of the item it is contained in. This +is useful for syntax items that don't need any highlighting but are used +only to skip over a part of the text. + +The "contains=" argument is also inherited from the item it is contained in, +unless a "contains" argument is given for the transparent item itself. To +avoid that unwanted items are contained, use "contains=NONE". Example, which +highlights words in strings, but makes an exception for "vim": > + :syn match myString /'[^']*'/ contains=myWord,myVim + :syn match myWord /\<[a-z]*\>/ contained + :syn match myVim /\<vim\>/ transparent contained contains=NONE + :hi link myString String + :hi link myWord Comment +Since the "myVim" match comes after "myWord" it is the preferred match (last +match in the same position overrules an earlier one). The "transparent" +argument makes the "myVim" match use the same highlighting as "myString". But +it does not contain anything. If the "contains=NONE" argument would be left +out, then "myVim" would use the contains argument from myString and allow +"myWord" to be contained, which will be highlighted as a Comment. This +happens because a contained match doesn't match inside itself in the same +position, thus the "myVim" match doesn't overrule the "myWord" match here. + +When you look at the colored text, it is like looking at layers of contained +items. The contained item is on top of the item it is contained in, thus you +see the contained item. When a contained item is transparent, you can look +through, thus you see the item it is contained in. In a picture: + + look from here + + | | | | | | + V V V V V V + + xxxx yyy more contained items + .................... contained item (transparent) + ============================= first item + +The 'x', 'y' and '=' represent a highlighted syntax item. The '.' represent a +transparent group. + +What you see is: + + =======xxxx=======yyy======== + +Thus you look through the transparent "....". + + +oneline *:syn-oneline* + +The "oneline" argument indicates that the region does not cross a line +boundary. It must match completely in the current line. However, when the +region has a contained item that does cross a line boundary, it continues on +the next line anyway. A contained item can be used to recognize a line +continuation pattern. But the "end" pattern must still match in the first +line, otherwise the region doesn't even start. + +When the start pattern includes a "\n" to match an end-of-line, the end +pattern must be found in the same line as where the start pattern ends. The +end pattern may also include an end-of-line. Thus the "oneline" argument +means that the end of the start pattern and the start of the end pattern must +be within one line. This can't be changed by a skip pattern that matches a +line break. + + +fold *:syn-fold* + +The "fold" argument makes the fold level increase by one for this item. +Example: > + :syn region myFold start="{" end="}" transparent fold + :syn sync fromstart + :set foldmethod=syntax +This will make each {} block form one fold. + +The fold will start on the line where the item starts, and end where the item +ends. If the start and end are within the same line, there is no fold. +The 'foldnestmax' option limits the nesting of syntax folds. +See |:syn-foldlevel| to control how the foldlevel of a line is computed +from its syntax items. +{not available when Vim was compiled without |+folding| feature} + + + *:syn-contains* *E405* *E406* *E407* *E408* *E409* +contains={group-name},.. + +The "contains" argument is followed by a list of syntax group names. These +groups will be allowed to begin inside the item (they may extend past the +containing group's end). This allows for recursive nesting of matches and +regions. If there is no "contains" argument, no groups will be contained in +this item. The group names do not need to be defined before they can be used +here. + +contains=ALL + If the only item in the contains list is "ALL", then all + groups will be accepted inside the item. + +contains=ALLBUT,{group-name},.. + If the first item in the contains list is "ALLBUT", then all + groups will be accepted inside the item, except the ones that + are listed. Example: > + :syntax region Block start="{" end="}" ... contains=ALLBUT,Function + +contains=TOP + If the first item in the contains list is "TOP", then all + groups will be accepted that don't have the "contained" + argument. +contains=TOP,{group-name},.. + Like "TOP", but excluding the groups that are listed. + +contains=CONTAINED + If the first item in the contains list is "CONTAINED", then + all groups will be accepted that have the "contained" + argument. +contains=CONTAINED,{group-name},.. + Like "CONTAINED", but excluding the groups that are + listed. + + +The {group-name} in the "contains" list can be a pattern. All group names +that match the pattern will be included (or excluded, if "ALLBUT" is used). +The pattern cannot contain white space or a ','. Example: > + ... contains=Comment.*,Keyw[0-3] +The matching will be done at moment the syntax command is executed. Groups +that are defined later will not be matched. Also, if the current syntax +command defines a new group, it is not matched. Be careful: When putting +syntax commands in a file you can't rely on groups NOT being defined, because +the file may have been sourced before, and ":syn clear" doesn't remove the +group names. + +The contained groups will also match in the start and end patterns of a +region. If this is not wanted, the "matchgroup" argument can be used +|:syn-matchgroup|. The "ms=" and "me=" offsets can be used to change the +region where contained items do match. Note that this may also limit the +area that is highlighted + + +containedin={group-name}... *:syn-containedin* + +The "containedin" argument is followed by a list of syntax group names. The +item will be allowed to begin inside these groups. This works as if the +containing item has a "contains=" argument that includes this item. + +The {group-name}... can be used just like for "contains", as explained above. + +This is useful when adding a syntax item afterwards. An item can be told to +be included inside an already existing item, without changing the definition +of that item. For example, to highlight a word in a C comment after loading +the C syntax: > + :syn keyword myword HELP containedin=cComment contained +Note that "contained" is also used, to avoid that the item matches at the top +level. + +Matches for "containedin" are added to the other places where the item can +appear. A "contains" argument may also be added as usual. Don't forget that +keywords never contain another item, thus adding them to "containedin" won't +work. + + +nextgroup={group-name},.. *:syn-nextgroup* + +The "nextgroup" argument is followed by a list of syntax group names, +separated by commas (just like with "contains", so you can also use patterns). + +If the "nextgroup" argument is given, the mentioned syntax groups will be +tried for a match, after the match or region ends. If none of the groups have +a match, highlighting continues normally. If there is a match, this group +will be used, even when it is not mentioned in the "contains" field of the +current group. This is like giving the mentioned group priority over all +other groups. Example: > + :syntax match ccFoobar "Foo.\{-}Bar" contains=ccFoo + :syntax match ccFoo "Foo" contained nextgroup=ccFiller + :syntax region ccFiller start="." matchgroup=ccBar end="Bar" contained + +This will highlight "Foo" and "Bar" differently, and only when there is a +"Bar" after "Foo". In the text line below, "f" shows where ccFoo is used for +highlighting, and "bbb" where ccBar is used. > + + Foo asdfasd Bar asdf Foo asdf Bar asdf + fff bbb fff bbb + +Note the use of ".\{-}" to skip as little as possible until the next Bar. +when ".*" would be used, the "asdf" in between "Bar" and "Foo" would be +highlighted according to the "ccFoobar" group, because the ccFooBar match +would include the first "Foo" and the last "Bar" in the line (see |pattern|). + + +skipwhite *:syn-skipwhite* +skipnl *:syn-skipnl* +skipempty *:syn-skipempty* + +These arguments are only used in combination with "nextgroup". They can be +used to allow the next group to match after skipping some text: + skipwhite skip over space and tab characters + skipnl skip over the end of a line + skipempty skip over empty lines (implies a "skipnl") + +When "skipwhite" is present, the white space is only skipped if there is no +next group that matches the white space. + +When "skipnl" is present, the match with nextgroup may be found in the next +line. This only happens when the current item ends at the end of the current +line! When "skipnl" is not present, the nextgroup will only be found after +the current item in the same line. + +When skipping text while looking for a next group, the matches for other +groups are ignored. Only when no next group matches, other items are tried +for a match again. This means that matching a next group and skipping white +space and <EOL>s has a higher priority than other items. + +Example: > + :syn match ifstart "\<if.*" nextgroup=ifline skipwhite skipempty + :syn match ifline "[^ \t].*" nextgroup=ifline skipwhite skipempty contained + :syn match ifline "endif" contained +Note that the "[^ \t].*" match matches all non-white text. Thus it would also +match "endif". Therefore the "endif" match is put last, so that it takes +precedence. +Note that this example doesn't work for nested "if"s. You need to add +"contains" arguments to make that work (omitted for simplicity of the +example). + +IMPLICIT CONCEAL *:syn-conceal-implicit* + +:sy[ntax] conceal [on|off] + This defines if the following ":syntax" commands will define keywords, + matches or regions with the "conceal" flag set. After ":syn conceal + on", all subsequent ":syn keyword", ":syn match" or ":syn region" + defined will have the "conceal" flag set implicitly. ":syn conceal + off" returns to the normal state where the "conceal" flag must be + given explicitly. + +:sy[ntax] conceal + Show either "syntax conceal on" or "syntax conceal off". + +============================================================================== +8. Syntax patterns *:syn-pattern* *E401* *E402* + +In the syntax commands, a pattern must be surrounded by two identical +characters. This is like it works for the ":s" command. The most common to +use is the double quote. But if the pattern contains a double quote, you can +use another character that is not used in the pattern. Examples: > + :syntax region Comment start="/\*" end="\*/" + :syntax region String start=+"+ end=+"+ skip=+\\"+ + +See |pattern| for the explanation of what a pattern is. Syntax patterns are +always interpreted like the 'magic' option is set, no matter what the actual +value of 'magic' is. And the patterns are interpreted like the 'l' flag is +not included in 'cpoptions'. This was done to make syntax files portable and +independent of 'compatible' and 'magic' settings. + +Try to avoid patterns that can match an empty string, such as "[a-z]*". +This slows down the highlighting a lot, because it matches everywhere. + + *:syn-pattern-offset* +The pattern can be followed by a character offset. This can be used to +change the highlighted part, and to change the text area included in the +match or region (which only matters when trying to match other items). Both +are relative to the matched pattern. The character offset for a skip +pattern can be used to tell where to continue looking for an end pattern. + +The offset takes the form of "{what}={offset}" +The {what} can be one of seven strings: + +ms Match Start offset for the start of the matched text +me Match End offset for the end of the matched text +hs Highlight Start offset for where the highlighting starts +he Highlight End offset for where the highlighting ends +rs Region Start offset for where the body of a region starts +re Region End offset for where the body of a region ends +lc Leading Context offset past "leading context" of pattern + +The {offset} can be: + +s start of the matched pattern +s+{nr} start of the matched pattern plus {nr} chars to the right +s-{nr} start of the matched pattern plus {nr} chars to the left +e end of the matched pattern +e+{nr} end of the matched pattern plus {nr} chars to the right +e-{nr} end of the matched pattern plus {nr} chars to the left +{nr} (for "lc" only): start matching {nr} chars right of the start + +Examples: "ms=s+1", "hs=e-2", "lc=3". + +Although all offsets are accepted after any pattern, they are not always +meaningful. This table shows which offsets are actually used: + + ms me hs he rs re lc ~ +match item yes yes yes yes - - yes +region item start yes - yes - yes - yes +region item skip - yes - - - - yes +region item end - yes - yes - yes yes + +Offsets can be concatenated, with a ',' in between. Example: > + :syn match String /"[^"]*"/hs=s+1,he=e-1 +< + some "string" text + ^^^^^^ highlighted + +Notes: +- There must be no white space between the pattern and the character + offset(s). +- The highlighted area will never be outside of the matched text. +- A negative offset for an end pattern may not always work, because the end + pattern may be detected when the highlighting should already have stopped. +- Before Vim 7.2 the offsets were counted in bytes instead of characters. + This didn't work well for multibyte characters, so it was changed with the + Vim 7.2 release. +- The start of a match cannot be in a line other than where the pattern + matched. This doesn't work: "a\nb"ms=e. You can make the highlighting + start in another line, this does work: "a\nb"hs=e. + +Example (match a comment but don't highlight the /* and */): > + :syntax region Comment start="/\*"hs=e+1 end="\*/"he=s-1 +< + /* this is a comment */ + ^^^^^^^^^^^^^^^^^^^ highlighted + +A more complicated Example: > + :syn region Exa matchgroup=Foo start="foo"hs=s+2,rs=e+2 matchgroup=Bar end="bar"me=e-1,he=e-1,re=s-1 +< + abcfoostringbarabc + mmmmmmmmmmm match + sssrrreee highlight start/region/end ("Foo", "Exa" and "Bar") + +Leading context *:syn-lc* *:syn-leading* *:syn-context* + +Note: This is an obsolete feature, only included for backwards compatibility +with previous Vim versions. It's now recommended to use the |/\@<=| construct +in the pattern. You can also often use |/\zs|. + +The "lc" offset specifies leading context -- a part of the pattern that must +be present, but is not considered part of the match. An offset of "lc=n" will +cause Vim to step back n columns before attempting the pattern match, allowing +characters which have already been matched in previous patterns to also be +used as leading context for this match. This can be used, for instance, to +specify that an "escaping" character must not precede the match: > + + :syn match ZNoBackslash "[^\\]z"ms=s+1 + :syn match WNoBackslash "[^\\]w"lc=1 + :syn match Underline "_\+" +< + ___zzzz ___wwww + ^^^ ^^^ matches Underline + ^ ^ matches ZNoBackslash + ^^^^ matches WNoBackslash + +The "ms" offset is automatically set to the same value as the "lc" offset, +unless you set "ms" explicitly. + + +Multi-line patterns *:syn-multi-line* + +The patterns can include "\n" to match an end-of-line. Mostly this works as +expected, but there are a few exceptions. + +When using a start pattern with an offset, the start of the match is not +allowed to start in a following line. The highlighting can start in a +following line though. Using the "\zs" item also requires that the start of +the match doesn't move to another line. + +The skip pattern can include the "\n", but the search for an end pattern will +continue in the first character of the next line, also when that character is +matched by the skip pattern. This is because redrawing may start in any line +halfway a region and there is no check if the skip pattern started in a +previous line. For example, if the skip pattern is "a\nb" and an end pattern +is "b", the end pattern does match in the second line of this: > + x x a + b x x +Generally this means that the skip pattern should not match any characters +after the "\n". + + +External matches *:syn-ext-match* + +These extra regular expression items are available in region patterns: + + */\z(* */\z(\)* *E50* *E52* *E879* + \z(\) Marks the sub-expression as "external", meaning that it can be + accessed from another pattern match. Currently only usable in + defining a syntax region start pattern. + + */\z1* */\z2* */\z3* */\z4* */\z5* + \z1 ... \z9 */\z6* */\z7* */\z8* */\z9* *E66* *E67* + Matches the same string that was matched by the corresponding + sub-expression in a previous start pattern match. + +Sometimes the start and end patterns of a region need to share a common +sub-expression. A common example is the "here" document in Perl and many Unix +shells. This effect can be achieved with the "\z" special regular expression +items, which marks a sub-expression as "external", in the sense that it can be +referenced from outside the pattern in which it is defined. The here-document +example, for instance, can be done like this: > + :syn region hereDoc start="<<\z(\I\i*\)" end="^\z1$" + +As can be seen here, the \z actually does double duty. In the start pattern, +it marks the "\(\I\i*\)" sub-expression as external; in the end pattern, it +changes the \z1 back-reference into an external reference referring to the +first external sub-expression in the start pattern. External references can +also be used in skip patterns: > + :syn region foo start="start \z(\I\i*\)" skip="not end \z1" end="end \z1" + +Note that normal and external sub-expressions are completely orthogonal and +indexed separately; for instance, if the pattern "\z(..\)\(..\)" is applied +to the string "aabb", then \1 will refer to "bb" and \z1 will refer to "aa". +Note also that external sub-expressions cannot be accessed as back-references +within the same pattern like normal sub-expressions. If you want to use one +sub-expression as both a normal and an external sub-expression, you can nest +the two, as in "\(\z(...\)\)". + +Note that only matches within a single line can be used. Multi-line matches +cannot be referred to. + +============================================================================== +9. Syntax clusters *:syn-cluster* *E400* + +:sy[ntax] cluster {cluster-name} [contains={group-name}..] + [add={group-name}..] + [remove={group-name}..] + +This command allows you to cluster a list of syntax groups together under a +single name. + + contains={group-name}.. + The cluster is set to the specified list of groups. + add={group-name}.. + The specified groups are added to the cluster. + remove={group-name}.. + The specified groups are removed from the cluster. + +A cluster so defined may be referred to in a contains=.., containedin=.., +nextgroup=.., add=.. or remove=.. list with a "@" prefix. You can also use +this notation to implicitly declare a cluster before specifying its contents. + +Example: > + :syntax match Thing "# [^#]\+ #" contains=@ThingMembers + :syntax cluster ThingMembers contains=ThingMember1,ThingMember2 + +As the previous example suggests, modifications to a cluster are effectively +retroactive; the membership of the cluster is checked at the last minute, so +to speak: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster AandB contains=A + :syntax match Stuff "( aaa bbb )" contains=@AandB + :syntax cluster AandB add=B " now both keywords are matched in Stuff + +This also has implications for nested clusters: > + :syntax keyword A aaa + :syntax keyword B bbb + :syntax cluster SmallGroup contains=B + :syntax cluster BigGroup contains=A,@SmallGroup + :syntax match Stuff "( aaa bbb )" contains=@BigGroup + :syntax cluster BigGroup remove=B " no effect, since B isn't in BigGroup + :syntax cluster SmallGroup remove=B " now bbb isn't matched within Stuff +< + *E848* +The maximum number of clusters is 9767. + +============================================================================== +10. Including syntax files *:syn-include* *E397* + +It is often useful for one language's syntax file to include a syntax file for +a related language. Depending on the exact relationship, this can be done in +two different ways: + + - If top-level syntax items in the included syntax file are to be + allowed at the top level in the including syntax, you can simply use + the |:runtime| command: > + + " In cpp.vim: + :runtime! syntax/c.vim + :unlet b:current_syntax + +< - If top-level syntax items in the included syntax file are to be + contained within a region in the including syntax, you can use the + ":syntax include" command: + +:sy[ntax] include [@{grouplist-name}] {file-name} + + All syntax items declared in the included file will have the + "contained" flag added. In addition, if a group list is specified, + all top-level syntax items in the included file will be added to + that list. > + + " In perl.vim: + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start="^=head" end="^=cut" contains=@Pod +< + When {file-name} is an absolute path (starts with "/", "c:", "$VAR" + or "<sfile>") that file is sourced. When it is a relative path + (e.g., "syntax/pod.vim") the file is searched for in 'runtimepath'. + All matching files are loaded. Using a relative path is + recommended, because it allows a user to replace the included file + with their own version, without replacing the file that does the + ":syn include". + + *E847* +The maximum number of includes is 999. + +============================================================================== +11. Synchronizing *:syn-sync* *E403* *E404* + +Vim wants to be able to start redrawing in any position in the document. To +make this possible it needs to know the syntax state at the position where +redrawing starts. + +:sy[ntax] sync [ccomment [group-name] | minlines={N} | ...] + +There are four ways to synchronize: +1. Always parse from the start of the file. + |:syn-sync-first| +2. Based on C-style comments. Vim understands how C-comments work and can + figure out if the current line starts inside or outside a comment. + |:syn-sync-second| +3. Jumping back a certain number of lines and start parsing there. + |:syn-sync-third| +4. Searching backwards in the text for a pattern to sync on. + |:syn-sync-fourth| + + *:syn-sync-maxlines* *:syn-sync-minlines* +For the last three methods, the line range where the parsing can start is +limited by "minlines" and "maxlines". + +If the "minlines={N}" argument is given, the parsing always starts at least +that many lines backwards. This can be used if the parsing may take a few +lines before it's correct, or when it's not possible to use syncing. + +If the "maxlines={N}" argument is given, the number of lines that are searched +for a comment or syncing pattern is restricted to N lines backwards (after +adding "minlines"). This is useful if you have few things to sync on and a +slow machine. Example: > + :syntax sync maxlines=500 ccomment +< + *:syn-sync-linebreaks* +When using a pattern that matches multiple lines, a change in one line may +cause a pattern to no longer match in a previous line. This means has to +start above where the change was made. How many lines can be specified with +the "linebreaks" argument. For example, when a pattern may include one line +break use this: > + :syntax sync linebreaks=1 +The result is that redrawing always starts at least one line before where a +change was made. The default value for "linebreaks" is zero. Usually the +value for "minlines" is bigger than "linebreaks". + + +First syncing method: *:syn-sync-first* +> + :syntax sync fromstart + +The file will be parsed from the start. This makes syntax highlighting +accurate, but can be slow for long files. Vim caches previously parsed text, +so that it's only slow when parsing the text for the first time. However, +when making changes some part of the text needs to be parsed again (worst +case: to the end of the file). + +Using "fromstart" is equivalent to using "minlines" with a very large number. + + +Second syncing method: *:syn-sync-second* *:syn-sync-ccomment* + +For the second method, only the "ccomment" argument needs to be given. +Example: > + :syntax sync ccomment + +When Vim finds that the line where displaying starts is inside a C-style +comment, the last region syntax item with the group-name "Comment" will be +used. This requires that there is a region with the group-name "Comment"! +An alternate group name can be specified, for example: > + :syntax sync ccomment javaComment +This means that the last item specified with "syn region javaComment" will be +used for the detected C comment region. This only works properly if that +region does have a start pattern "\/*" and an end pattern "*\/". + +The "maxlines" argument can be used to restrict the search to a number of +lines. The "minlines" argument can be used to at least start a number of +lines back (e.g., for when there is some construct that only takes a few +lines, but it hard to sync on). + +Note: Syncing on a C comment doesn't work properly when strings are used +that cross a line and contain a "*/". Since letting strings cross a line +is a bad programming habit (many compilers give a warning message), and the +chance of a "*/" appearing inside a comment is very small, this restriction +is hardly ever noticed. + + +Third syncing method: *:syn-sync-third* + +For the third method, only the "minlines={N}" argument needs to be given. +Vim will subtract {N} from the line number and start parsing there. This +means {N} extra lines need to be parsed, which makes this method a bit slower. +Example: > + :syntax sync minlines=50 + +"lines" is equivalent to "minlines" (used by older versions). + + +Fourth syncing method: *:syn-sync-fourth* + +The idea is to synchronize on the end of a few specific regions, called a +sync pattern. Only regions can cross lines, so when we find the end of some +region, we might be able to know in which syntax item we are. The search +starts in the line just above the one where redrawing starts. From there +the search continues backwards in the file. + +This works just like the non-syncing syntax items. You can use contained +matches, nextgroup, etc. But there are a few differences: +- Keywords cannot be used. +- The syntax items with the "sync" keyword form a completely separated group + of syntax items. You can't mix syncing groups and non-syncing groups. +- The matching works backwards in the buffer (line by line), instead of + forwards. +- A line continuation pattern can be given. It is used to decide which group + of lines need to be searched like they were one line. This means that the + search for a match with the specified items starts in the first of the + consecutive lines that contain the continuation pattern. +- When using "nextgroup" or "contains", this only works within one line (or + group of continued lines). +- When using a region, it must start and end in the same line (or group of + continued lines). Otherwise the end is assumed to be at the end of the + line (or group of continued lines). +- When a match with a sync pattern is found, the rest of the line (or group of + continued lines) is searched for another match. The last match is used. + This is used when a line can contain both the start end the end of a region + (e.g., in a C-comment like /* this */, the last "*/" is used). + +There are two ways how a match with a sync pattern can be used: +1. Parsing for highlighting starts where redrawing starts (and where the + search for the sync pattern started). The syntax group that is expected + to be valid there must be specified. This works well when the regions + that cross lines cannot contain other regions. +2. Parsing for highlighting continues just after the match. The syntax group + that is expected to be present just after the match must be specified. + This can be used when the previous method doesn't work well. It's much + slower, because more text needs to be parsed. +Both types of sync patterns can be used at the same time. + +Besides the sync patterns, other matches and regions can be specified, to +avoid finding unwanted matches. + +[The reason that the sync patterns are given separately, is that mostly the +search for the sync point can be much simpler than figuring out the +highlighting. The reduced number of patterns means it will go (much) +faster.] + + *syn-sync-grouphere* *E393* *E394* + :syntax sync match {sync-group-name} grouphere {group-name} "pattern" .. + + Define a match that is used for syncing. {group-name} is the + name of a syntax group that follows just after the match. Parsing + of the text for highlighting starts just after the match. A region + must exist for this {group-name}. The first one defined will be used. + "NONE" can be used for when there is no syntax group after the match. + + *syn-sync-groupthere* + :syntax sync match {sync-group-name} groupthere {group-name} "pattern" .. + + Like "grouphere", but {group-name} is the name of a syntax group that + is to be used at the start of the line where searching for the sync + point started. The text between the match and the start of the sync + pattern searching is assumed not to change the syntax highlighting. + For example, in C you could search backwards for "/*" and "*/". If + "/*" is found first, you know that you are inside a comment, so the + "groupthere" is "cComment". If "*/" is found first, you know that you + are not in a comment, so the "groupthere" is "NONE". (in practice + it's a bit more complicated, because the "/*" and "*/" could appear + inside a string. That's left as an exercise to the reader...). + + :syntax sync match .. + :syntax sync region .. + + Without a "groupthere" argument. Define a region or match that is + skipped while searching for a sync point. + + *syn-sync-linecont* + :syntax sync linecont {pattern} + + When {pattern} matches in a line, it is considered to continue in + the next line. This means that the search for a sync point will + consider the lines to be concatenated. + +If the "maxlines={N}" argument is given too, the number of lines that are +searched for a match is restricted to N. This is useful if you have very +few things to sync on and a slow machine. Example: > + :syntax sync maxlines=100 + +You can clear all sync settings with: > + :syntax sync clear + +You can clear specific sync patterns with: > + :syntax sync clear {sync-group-name} .. + +============================================================================== +12. Listing syntax items *:syntax* *:sy* *:syn* *:syn-list* + +This command lists all the syntax items: > + + :sy[ntax] [list] + +To show the syntax items for one syntax group: > + + :sy[ntax] list {group-name} + +To list the syntax groups in one cluster: *E392* > + + :sy[ntax] list @{cluster-name} + +See above for other arguments for the ":syntax" command. + +Note that the ":syntax" command can be abbreviated to ":sy", although ":syn" +is mostly used, because it looks better. + +============================================================================== +13. Colorschemes *color-schemes* + +In the next section you can find information about individual highlight groups +and how to specify colors for them. Most likely you want to just select a set +of colors by using the `:colorscheme` command, for example: > + + colorscheme pablo +< + *:colo* *:colorscheme* *E185* +:colo[rscheme] Output the name of the currently active color scheme. + This is basically the same as > + :echo g:colors_name +< In case g:colors_name has not been defined :colo will + output "default". When compiled without the |+eval| + feature it will output "unknown". + +:colo[rscheme] {name} Load color scheme {name}. This searches 'runtimepath' + for the file "colors/{name}.vim". The first one that + is found is loaded. + Also searches all plugins in 'packpath', first below + "start" and then under "opt". + + Doesn't work recursively, thus you can't use + ":colorscheme" in a color scheme script. + +You have two options for customizing a color scheme. For changing the +appearance of specific colors, you can redefine a color name before loading +the scheme. The desert scheme uses the khaki color for the cursor. To use a +darker variation of the same color: > + + let v:colornames['khaki'] = '#bdb76b' + colorscheme desert +< +For further customization, such as changing |:highlight-link| associations, +use another name, e.g. "~/.vim/colors/mine.vim", and use `:runtime` to load +the original color scheme: > + runtime colors/evening.vim + hi Statement ctermfg=Blue guifg=Blue + +Before the color scheme will be loaded all default color list scripts +(`colors/lists/default.vim`) will be executed and then the |ColorSchemePre| +autocommand event is triggered. After the color scheme has been loaded the +|ColorScheme| autocommand event is triggered. + + *colorscheme-override* +If a color scheme is almost right, you can add modifications on top of it by +using the |ColorScheme| autocommand. For example, to remove the background +color (can make it transparent in some terminals): > + augroup my_colorschemes + au! + au Colorscheme pablo hi Normal ctermbg=NONE + augroup END + +Change a couple more colors: > + augroup my_colorschemes + au! + au Colorscheme pablo hi Normal ctermbg=NONE + \ | highlight Special ctermfg=63 + \ | highlight Identifier ctermfg=44 + augroup END + +If you make a lot of changes it might be better to copy the distributed +colorscheme to your home directory and change it: > + :!cp $VIMRUNTIME/colors/pablo.vim ~/.vim/colors + :edit ~/.vim/colors/pablo.vim + +With Vim 9.0 the collection of color schemes was updated and made work in many +different terminals. One change was to often define the Normal highlight +group to make sure the colors work well. In case you prefer the old version, +you can find them here: +https://github.com/vim/colorschemes/blob/master/legacy_colors/ + +For info about writing a color scheme file: > + :edit $VIMRUNTIME/colors/README.txt + + +============================================================================== +14. Highlight command *:highlight* *:hi* *E28* *E411* *E415* + +There are three types of highlight groups: +- The ones used for specific languages. For these the name starts with the + name of the language. Many of these don't have any attributes, but are + linked to a group of the second type. +- The ones used for all syntax languages. +- The ones used for the 'highlight' option. + *hitest.vim* +You can see all the groups currently active with this command: > + :so $VIMRUNTIME/syntax/hitest.vim +This will open a new window containing all highlight group names, displayed +in their own color. + +:hi[ghlight] List all the current highlight groups that have + attributes set. + +:hi[ghlight] {group-name} + List one highlight group. + + *highlight-clear* *:hi-clear* +:hi[ghlight] clear Reset all highlighting to the defaults. Removes all + highlighting for groups added by the user. + Uses the current value of 'background' to decide which + default colors to use. + If there was a default link, restore it. |:hi-link| + +:hi[ghlight] clear {group-name} +:hi[ghlight] {group-name} NONE + Disable the highlighting for one highlight group. It + is _not_ set back to the default colors. + +:hi[ghlight] [default] {group-name} {key}={arg} .. + Add a highlight group, or change the highlighting for + an existing group. If a given color name is not + recognized, each `colors/lists/default.vim` found on + |'runtimepath'| will be loaded. + See |highlight-args| for the {key}={arg} arguments. + See |:highlight-default| for the optional [default] + argument. + +Normally a highlight group is added once when starting up. This sets the +default values for the highlighting. After that, you can use additional +highlight commands to change the arguments that you want to set to non-default +values. The value "NONE" can be used to switch the value off or go back to +the default value. + +A simple way to change colors is with the |:colorscheme| command. This loads +a file with ":highlight" commands such as this: > + + :hi Comment gui=bold + +Note that all settings that are not included remain the same, only the +specified field is used, and settings are merged with previous ones. So, the +result is like this single command has been used: > + :hi Comment term=bold ctermfg=Cyan guifg=#80a0ff gui=bold +< + *:highlight-verbose* +When listing a highlight group and 'verbose' is non-zero, the listing will +also tell where it was last set. Example: > + :verbose hi Comment +< Comment xxx term=bold ctermfg=4 guifg=Blue ~ + Last set from /home/mool/vim/vim7/runtime/syntax/syncolor.vim ~ + +When ":hi clear" is used then the script where this command is used will be +mentioned for the default values. See |:verbose-cmd| for more information. + + *highlight-args* *E416* *E417* *E423* +There are three types of terminals for highlighting: +term a normal terminal (vt100, xterm) +cterm a color terminal (MS-Windows console, color-xterm, these have the "Co" + termcap entry) +gui the GUI + +For each type the highlighting can be given. This makes it possible to use +the same syntax file on all terminals, and use the optimal highlighting. + +1. highlight arguments for normal terminals + + *bold* *underline* *undercurl* + *underdouble* *underdotted* + *underdashed* *inverse* *italic* + *standout* *nocombine* *strikethrough* +term={attr-list} *attr-list* *highlight-term* *E418* + attr-list is a comma-separated list (without spaces) of the + following items (in any order): + bold + underline + undercurl not always available + underdouble not always available + underdotted not always available + underdashed not always available + strikethrough not always available + reverse + inverse same as reverse + italic + standout + nocombine override attributes instead of combining them + NONE no attributes used (used to reset it) + + Note that "bold" can be used here and by using a bold font. They + have the same effect. + *underline-codes* + "undercurl" is a curly underline. When "undercurl" is not possible + then "underline" is used. In general "undercurl" and "strikethrough" + are only available in the GUI and some terminals. The color is set + with |highlight-guisp| or |highlight-ctermul|. You can try these + termcap entries to make undercurl work in a terminal: > + let &t_Cs = "\e[4:3m" + let &t_Ce = "\e[4:0m" + +< "underdouble" is a double underline, "underdotted" is a dotted + underline and "underdashed" is a dashed underline. These are only + supported by some terminals. If your terminal supports them you may + have to specify the codes like this: > + let &t_Us = "\e[4:2m" + let &t_ds = "\e[4:4m" + let &t_Ds = "\e[4:5m" +< They are reset with |t_Ce|, the same as curly underline (undercurl). + When t_Us, t_ds or t_Ds is not set then underline will be used as a + fallback. + + +start={term-list} *highlight-start* *E422* +stop={term-list} *term-list* *highlight-stop* + These lists of terminal codes can be used to get + non-standard attributes on a terminal. + + The escape sequence specified with the "start" argument + is written before the characters in the highlighted + area. It can be anything that you want to send to the + terminal to highlight this area. The escape sequence + specified with the "stop" argument is written after the + highlighted area. This should undo the "start" argument. + Otherwise the screen will look messed up. + + The {term-list} can have two forms: + + 1. A string with escape sequences. + This is any string of characters, except that it can't start with + "t_" and blanks are not allowed. The <> notation is recognized + here, so you can use things like "<Esc>" and "<Space>". Example: + start=<Esc>[27h;<Esc>[<Space>r; + + 2. A list of terminal codes. + Each terminal code has the form "t_xx", where "xx" is the name of + the termcap entry. The codes have to be separated with commas. + White space is not allowed. Example: + start=t_C1,t_BL + The terminal codes must exist for this to work. + + +2. highlight arguments for color terminals + +cterm={attr-list} *highlight-cterm* + See above for the description of {attr-list} |attr-list|. + The "cterm" argument is likely to be different from "term", when + colors are used. For example, in a normal terminal comments could + be underlined, in a color terminal they can be made Blue. + Note: Some terminals (e.g., DOS console) can't mix these attributes + with coloring. To be portable, use only one of "cterm=" OR "ctermfg=" + OR "ctermbg=". + +ctermfg={color-nr} *highlight-ctermfg* *E421* +ctermbg={color-nr} *highlight-ctermbg* +ctermul={color-nr} *highlight-ctermul* + These give the foreground (ctermfg), background (ctermbg) and + underline (ctermul) color to use in the terminal. + + The {color-nr} argument is a color number. Its range is zero to + (not including) the number given by the termcap entry "Co". + The actual color with this number depends on the type of terminal + and its settings. Sometimes the color also depends on the settings of + "cterm". For example, on some systems "cterm=bold ctermfg=3" gives + another color, on others you just get color 3. + + For an xterm this depends on your resources, and is a bit + unpredictable. See your xterm documentation for the defaults. The + colors for a color-xterm can be changed from the .Xdefaults file. + Unfortunately this means that it's not possible to get the same colors + for each user. See |xterm-color| for info about color xterms. + *tmux* + When using tmux you may want to use this in the tmux config: > + # tmux colors + set -s default-terminal "tmux-256color" + set -as terminal-overrides ",*-256color:Tc" +< More info at: + https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-a-256-colour-terminal + https://github.com/tmux/tmux/wiki/FAQ#how-do-i-use-rgb-colour + + The MS-Windows standard colors are fixed (in a console window), so + these have been used for the names. But the meaning of color names in + X11 are fixed, so these color settings have been used, to make the + highlighting settings portable (complicated, isn't it?). The + following names are recognized, with the color number used: + + *cterm-colors* + NR-16 NR-8 COLOR NAME ~ + 0 0 Black + 1 4 DarkBlue + 2 2 DarkGreen + 3 6 DarkCyan + 4 1 DarkRed + 5 5 DarkMagenta + 6 3 Brown, DarkYellow + 7 7 LightGray, LightGrey, Gray, Grey + 8 0* DarkGray, DarkGrey + 9 4* Blue, LightBlue + 10 2* Green, LightGreen + 11 6* Cyan, LightCyan + 12 1* Red, LightRed + 13 5* Magenta, LightMagenta + 14 3* Yellow, LightYellow + 15 7* White + + The number under "NR-16" is used for 16-color terminals ('t_Co' + greater than or equal to 16). The number under "NR-8" is used for + 8-color terminals ('t_Co' less than 16). The '*' indicates that the + bold attribute is set for ctermfg. In many 8-color terminals (e.g., + "linux"), this causes the bright colors to appear. This doesn't work + for background colors! Without the '*' the bold attribute is removed. + If you want to set the bold attribute in a different way, put a + "cterm=" argument AFTER the "ctermfg=" or "ctermbg=" argument. Or use + a number instead of a color name. + + The case of the color names is ignored. + Note that for 16 color ansi style terminals (including xterms), the + numbers in the NR-8 column is used. Here '*' means 'add 8' so that + Blue is 12, DarkGray is 8 etc. + + Note that for some color terminals these names may result in the wrong + colors! + + You can also use "NONE" to remove the color. + + *:hi-normal-cterm* + When setting the "ctermfg" or "ctermbg" colors for the Normal group, + these will become the colors used for the non-highlighted text. + Example: > + :highlight Normal ctermfg=grey ctermbg=darkblue +< When setting the "ctermbg" color for the Normal group, the + 'background' option will be adjusted automatically, under the + condition that the color is recognized and 'background' was not set + explicitly. This causes the highlight groups that depend on + 'background' to change! This means you should set the colors for + Normal first, before setting other colors. + When a color scheme is being used, changing 'background' causes it to + be reloaded, which may reset all colors (including Normal). First + delete the "g:colors_name" variable when you don't want this. + + When you have set "ctermfg" or "ctermbg" for the Normal group, Vim + needs to reset the color when exiting. This is done with the "op" + termcap entry |t_op|. If this doesn't work correctly, try setting the + 't_op' option in your .vimrc. + *E419* *E420* *E453* + When Vim knows the normal foreground, background and underline colors, + "fg", "bg" and "ul" can be used as color names. This only works after + setting the colors for the Normal group and for the MS-Windows + console. Example, for reverse video: > + :highlight Visual ctermfg=bg ctermbg=fg +< Note that the colors are used that are valid at the moment this + command is given. If the Normal group colors are changed later, the + "fg" and "bg" colors will not be adjusted. + + +3. highlight arguments for the GUI + +gui={attr-list} *highlight-gui* + These give the attributes to use in the GUI mode. + See |attr-list| for a description. + Note that "bold" can be used here and by using a bold font. They + have the same effect. + Note that the attributes are ignored for the "Normal" group. + +font={font-name} *highlight-font* + font-name is the name of a font, as it is used on the system Vim + runs on. For X11 this is a complicated name, for example: > + font=-misc-fixed-bold-r-normal--14-130-75-75-c-70-iso8859-1 +< + The font-name "NONE" can be used to revert to the default font. + When setting the font for the "Normal" group, this becomes the default + font (until the 'guifont' option is changed; the last one set is + used). + The following only works with Motif, not with other GUIs: + When setting the font for the "Menu" group, the menus will be changed. + When setting the font for the "Tooltip" group, the tooltips will be + changed. + All fonts used, except for Menu and Tooltip, should be of the same + character size as the default font! Otherwise redrawing problems will + occur. + To use a font name with an embedded space or other special character, + put it in single quotes. The single quote cannot be used then. + Example: > + :hi comment font='Monospace 10' + +guifg={color-name} *highlight-guifg* +guibg={color-name} *highlight-guibg* +guisp={color-name} *highlight-guisp* + These give the foreground (guifg), background (guibg) and special + (guisp) color to use in the GUI. "guisp" is used for undercurl and + strikethrough. + There are a few special names: + NONE no color (transparent) *E1361* + bg use normal background color + background use normal background color + fg use normal foreground color + foreground use normal foreground color + To use a color name with an embedded space or other special character, + put it in single quotes. The single quote cannot be used then. + Example: > + :hi comment guifg='salmon pink' +< + *gui-colors* + Suggested color names (these are available on most systems): + Red LightRed DarkRed + Green LightGreen DarkGreen SeaGreen + Blue LightBlue DarkBlue SlateBlue + Cyan LightCyan DarkCyan + Magenta LightMagenta DarkMagenta + Yellow LightYellow Brown DarkYellow + Gray LightGray DarkGray + Black White + Orange Purple Violet + + In the Win32 GUI version, additional system colors are available. See + |win32-colors|. + + You can also specify a color by its Red, Green and Blue values. + The format is "#rrggbb", where + "rr" is the Red value + "gg" is the Green value + "bb" is the Blue value + All values are hexadecimal, range from "00" to "ff". Examples: > + :highlight Comment guifg=#11f0c3 guibg=#ff00ff +< + If you are authoring a color scheme and use the same hexadecimal value + repeatedly, you can define a name for it in |v:colornames|. For + example: > + + # provide a default value for this color but allow the user to + # override it. + :call extend(v:colornames, {'alt_turquoise': '#11f0c3'}, 'keep') + :highlight Comment guifg=alt_turquoise guibg=magenta +< + If you are using a color scheme that relies on named colors and you + would like to adjust the precise appearance of those colors, you can + do so by overriding the values in |v:colornames| prior to loading the + scheme: > + + let v:colornames['alt_turquoise'] = '#22f0d3' + colorscheme alt +< + If you want to develop a color list that can be relied on by others, + it is best to prefix your color names. By convention these color lists + are placed in the colors/lists directory. You can see an example in + '$VIMRUNTIME/colors/lists/csscolors.vim'. This list would be sourced + by a color scheme using: > + + :runtime colors/lists/csscolors.vim + :highlight Comment guifg=css_turquoise +< + + *highlight-groups* *highlight-default* +These are the default highlighting groups. These groups are used by the +'highlight' option default. Note that the highlighting depends on the value +of 'background'. You can see the current settings with the ":highlight" +command. +When possible the name is highlighted in the used colors. If this makes it +unreadable use Visual selection. + + *hl-ColorColumn* +ColorColumn Used for the columns set with 'colorcolumn'. + *hl-Conceal* +Conceal Placeholder characters substituted for concealed + text (see 'conceallevel'). + *hl-Cursor* *hl-lCursor* +Cursor Character under the cursor. +lCursor Character under the cursor when |language-mapping| + is used (see 'guicursor'). + *hl-CursorIM* +CursorIM Like Cursor, but used when in IME mode. |CursorIM| + *hl-CursorColumn* +CursorColumn Screen column that the cursor is in when 'cursorcolumn' is set. + *hl-CursorLine* +CursorLine Screen line that the cursor is in when 'cursorline' is set. + *hl-Directory* +Directory Directory names (and other special names in listings). + *hl-DiffAdd* +DiffAdd Diff mode: Added line. |diff.txt| + *hl-DiffChange* +DiffChange Diff mode: Changed line. |diff.txt| + *hl-DiffDelete* +DiffDelete Diff mode: Deleted line. |diff.txt| + *hl-DiffText* +DiffText Diff mode: Changed text within a changed line. |diff.txt| + *hl-EndOfBuffer* +EndOfBuffer Filler lines (~) after the last line in the buffer. + By default, this is highlighted like |hl-NonText|. + *hl-ErrorMsg* +ErrorMsg Error messages on the command line. + *hl-VertSplit* +VertSplit Column separating vertically split windows. + *hl-Folded* +Folded Line used for closed folds. + *hl-FoldColumn* +FoldColumn 'foldcolumn' + *hl-SignColumn* +SignColumn Column where |signs| are displayed. + *hl-IncSearch* +IncSearch 'incsearch' highlighting; also used for the text replaced with + ":s///c". + *hl-LineNr* +LineNr Line number for ":number" and ":#" commands, and when 'number' + or 'relativenumber' option is set. + *hl-LineNrAbove* +LineNrAbove Line number for when the 'relativenumber' + option is set, above the cursor line. + *hl-LineNrBelow* +LineNrBelow Line number for when the 'relativenumber' + option is set, below the cursor line. + *hl-CursorLineNr* +CursorLineNr Like LineNr when 'cursorline' is set and 'cursorlineopt' + contains "number" or is "both", for the cursor line. + *hl-CursorLineFold* +CursorLineFold Like FoldColumn when 'cursorline' is set for the cursor line. + *hl-CursorLineSign* +CursorLineSign Like SignColumn when 'cursorline' is set for the cursor line. + *hl-MatchParen* +MatchParen Character under the cursor or just before it, if it + is a paired bracket, and its match. |pi_paren.txt| + *hl-MessageWindow* +MessageWindow Messages popup window used by `:echowindow`. If not defined + |hl-WarningMsg| is used. + *hl-ModeMsg* +ModeMsg 'showmode' message (e.g., "-- INSERT --"). + *hl-MoreMsg* +MoreMsg |more-prompt| + *hl-NonText* +NonText '@' at the end of the window, "<<<" at the start of the window + for 'smoothscroll', characters from 'showbreak' and other + characters that do not really exist in the text, such as the + ">" displayed when a double-wide character doesn't fit at the + end of the line. + *hl-Normal* +Normal Normal text. + *hl-Pmenu* +Pmenu Popup menu: Normal item. + *hl-PmenuSel* +PmenuSel Popup menu: Selected item. + *hl-PmenuKind* +PmenuKind Popup menu: Normal item "kind". + *hl-PmenuKindSel* +PmenuKindSel Popup menu: Selected item "kind". + *hl-PmenuExtra* +PmenuExtra Popup menu: Normal item "extra text". + *hl-PmenuExtraSel* +PmenuExtraSel Popup menu: Selected item "extra text". + *hl-PmenuSbar* +PmenuSbar Popup menu: Scrollbar. + *hl-PmenuThumb* +PmenuThumb Popup menu: Thumb of the scrollbar. + *hl-PopupNotification* +PopupNotification + Popup window created with |popup_notification()|. If not + defined |hl-WarningMsg| is used. + *hl-Question* +Question |hit-enter| prompt and yes/no questions. + *hl-QuickFixLine* +QuickFixLine Current |quickfix| item in the quickfix window. + *hl-Search* +Search Last search pattern highlighting (see 'hlsearch'). + Also used for similar items that need to stand out. + *hl-CurSearch* +CurSearch Current match for the last search pattern (see 'hlsearch'). + Note: This is correct after a search, but may get outdated if + changes are made or the screen is redrawn. + *hl-SpecialKey* +SpecialKey Meta and special keys listed with ":map", also for text used + to show unprintable characters in the text, 'listchars'. + Generally: Text that is displayed differently from what it + really is. + *hl-SpellBad* +SpellBad Word that is not recognized by the spellchecker. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellCap* +SpellCap Word that should start with a capital. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellLocal* +SpellLocal Word that is recognized by the spellchecker as one that is + used in another region. |spell| + This will be combined with the highlighting used otherwise. + *hl-SpellRare* +SpellRare Word that is recognized by the spellchecker as one that is + hardly ever used. |spell| + This will be combined with the highlighting used otherwise. + *hl-StatusLine* +StatusLine Status line of current window. + *hl-StatusLineNC* +StatusLineNC status lines of not-current windows + Note: If this is equal to "StatusLine", Vim will use "^^^" in + the status line of the current window. + *hl-StatusLineTerm* +StatusLineTerm Status line of current window, if it is a |terminal| window. + *hl-StatusLineTermNC* +StatusLineTermNC Status lines of not-current windows that is a + |terminal| window. + *hl-TabLine* +TabLine Tab pages line, not active tab page label. + *hl-TabLineFill* +TabLineFill Tab pages line, where there are no labels. + *hl-TabLineSel* +TabLineSel Tab pages line, active tab page label. + *hl-Terminal* +Terminal |terminal| window (see |terminal-size-color|). + *hl-Title* +Title Titles for output from ":set all", ":autocmd" etc. + *hl-Visual* +Visual Visual mode selection. + *hl-VisualNOS* +VisualNOS Visual mode selection when vim is "Not Owning the Selection". + Only X11 Gui's |gui-x11| and |xterm-clipboard| supports this. + *hl-WarningMsg* +WarningMsg Warning messages. + *hl-WildMenu* +WildMenu Current match in 'wildmenu' completion. + + *hl-User1* *hl-User1..9* *hl-User9* +The 'statusline' syntax allows the use of 9 different highlights in the +statusline and ruler (via 'rulerformat'). The names are User1 to User9. + +For the GUI you can use the following groups to set the colors for the menu, +scrollbars and tooltips. They don't have defaults. This doesn't work for the +Win32 GUI. Only three highlight arguments have any effect here: font, guibg, +and guifg. + + *hl-Menu* +Menu Current font, background and foreground colors of the menus. + Also used for the toolbar. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + + *hl-Scrollbar* +Scrollbar Current background and foreground of the main window's + scrollbars. + Applicable highlight arguments: guibg, guifg. + + *hl-Tooltip* +Tooltip Current font, background and foreground of the tooltips. + Applicable highlight arguments: font, guibg, guifg. + + NOTE: For Motif the font argument actually + specifies a fontset at all times, no matter if 'guifontset' is + empty, and as such it is tied to the current |:language| when + set. + +============================================================================== +15. Linking groups *:hi-link* *:highlight-link* *E412* *E413* + +When you want to use the same highlighting for several syntax groups, you +can do this more easily by linking the groups into one common highlight +group, and give the color attributes only for that group. + +To set a link: + + :hi[ghlight][!] [default] link {from-group} {to-group} + +To remove a link: + + :hi[ghlight][!] [default] link {from-group} NONE + +Notes: *E414* +- If the {from-group} and/or {to-group} doesn't exist, it is created. You + don't get an error message for a non-existing group. +- As soon as you use a ":highlight" command for a linked group, the link is + removed. +- If there are already highlight settings for the {from-group}, the link is + not made, unless the '!' is given. For a ":highlight link" command in a + sourced file, you don't get an error message. This can be used to skip + links for groups that already have settings. + + *:hi-default* *:highlight-default* +The [default] argument is used for setting the default highlighting for a +group. If highlighting has already been specified for the group the command +will be ignored. Also when there is an existing link. + +Using [default] is especially useful to overrule the highlighting of a +specific syntax file. For example, the C syntax file contains: > + :highlight default link cComment Comment +If you like Question highlighting for C comments, put this in your vimrc file: > + :highlight link cComment Question +Without the "default" in the C syntax file, the highlighting would be +overruled when the syntax file is loaded. + +To have a link survive `:highlight clear`, which is useful if you have +highlighting for a specific filetype and you want to keep it when selecting +another color scheme, put a command like this in the +"after/syntax/{filetype}.vim" file: > + highlight! default link cComment Question + +============================================================================== +16. Cleaning up *:syn-clear* *E391* + +If you want to clear the syntax stuff for the current buffer, you can use this +command: > + :syntax clear + +This command should be used when you want to switch off syntax highlighting, +or when you want to switch to using another syntax. It's normally not needed +in a syntax file itself, because syntax is cleared by the autocommands that +load the syntax file. +The command also deletes the "b:current_syntax" variable, since no syntax is +loaded after this command. + +To clean up specific syntax groups for the current buffer: > + :syntax clear {group-name} .. +This removes all patterns and keywords for {group-name}. + +To clean up specific syntax group lists for the current buffer: > + :syntax clear @{grouplist-name} .. +This sets {grouplist-name}'s contents to an empty list. + + *:syntax-off* *:syn-off* +If you want to disable syntax highlighting for all buffers, you need to remove +the autocommands that load the syntax files: > + :syntax off + +What this command actually does, is executing the command > + :source $VIMRUNTIME/syntax/nosyntax.vim +See the "nosyntax.vim" file for details. Note that for this to work +$VIMRUNTIME must be valid. See |$VIMRUNTIME|. + + *:syntax-reset* *:syn-reset* +If you have changed the colors and messed them up, use this command to get the +defaults back: > + + :syntax reset + +It is a bit of a wrong name, since it does not reset any syntax items, it only +affects the highlighting. + +This doesn't change the colors for the 'highlight' option. + +Note that the syntax colors that you set in your vimrc file will also be reset +back to their Vim default. +Note that if you are using a color scheme, the colors defined by the color +scheme for syntax highlighting will be lost. + +What this actually does is: > + + let g:syntax_cmd = "reset" + runtime! syntax/syncolor.vim + +Note that this uses the 'runtimepath' option. + + *syncolor* +If you want to use different colors for syntax highlighting, you can add a Vim +script file to set these colors. Put this file in a directory in +'runtimepath' which comes after $VIMRUNTIME, so that your settings overrule +the default colors. This way these colors will be used after the ":syntax +reset" command. + +For Unix you can use the file ~/.vim/after/syntax/syncolor.vim. Example: > + + if &background == "light" + highlight comment ctermfg=darkgreen guifg=darkgreen + else + highlight comment ctermfg=green guifg=green + endif +< + *E679* +Do make sure this syncolor.vim script does not use a "syntax on", set the +'background' option or uses a "colorscheme" command, because it results in an +endless loop. + +Note that when a color scheme is used, there might be some confusion whether +your defined colors are to be used or the colors from the scheme. This +depends on the color scheme file. See |:colorscheme|. + + *syntax_cmd* +The "syntax_cmd" variable is set to one of these values when the +syntax/syncolor.vim files are loaded: + "on" `:syntax on` command. Highlight colors are overruled but + links are kept + "enable" `:syntax enable` command. Only define colors for groups that + don't have highlighting yet. Use `:highlight default` . + "reset" `:syntax reset` command or loading a color scheme. Define all + the colors. + "skip" Don't define colors. Used to skip the default settings when a + syncolor.vim file earlier in 'runtimepath' has already set + them. + +============================================================================== +17. Highlighting tags *tag-highlight* + +If you want to highlight all the tags in your file, you can use the following +mappings. + + <F11> -- Generate tags.vim file, and highlight tags. + <F12> -- Just highlight tags based on existing tags.vim file. +> + :map <F11> :sp tags<CR>:%s/^\([^ :]*:\)\=\([^ ]*\).*/syntax keyword Tag \2/<CR>:wq! tags.vim<CR>/^<CR><F12> + :map <F12> :so tags.vim<CR> + +WARNING: The longer the tags file, the slower this will be, and the more +memory Vim will consume. + +Only highlighting typedefs, unions and structs can be done too. For this you +must use Universal Ctags (found at https://ctags.io) or Exuberant ctags (found +at http://ctags.sf.net). + +Put these lines in your Makefile: + +# Make a highlight file for types. Requires Universal/Exuberant ctags and awk +types: types.vim +types.vim: *.[ch] + ctags --c-kinds=gstu -o- *.[ch] |\ + awk 'BEGIN{printf("syntax keyword Type\t")}\ + {printf("%s ", $$1)}END{print ""}' > $@ + +And put these lines in your .vimrc: > + + " load the types.vim highlighting file, if it exists + autocmd BufRead,BufNewFile *.[ch] let fname = expand('<afile>:p:h') .. '/types.vim' + autocmd BufRead,BufNewFile *.[ch] if filereadable(fname) + autocmd BufRead,BufNewFile *.[ch] exe 'so ' .. fname + autocmd BufRead,BufNewFile *.[ch] endif + +============================================================================== +18. Window-local syntax *:ownsyntax* + +Normally all windows on a buffer share the same syntax settings. It is +possible, however, to set a particular window on a file to have its own +private syntax setting. A possible example would be to edit LaTeX source +with conventional highlighting in one window, while seeing the same source +highlighted differently (so as to hide control sequences and indicate bold, +italic etc regions) in another. The 'scrollbind' option is useful here. + +To set the current window to have the syntax "foo", separately from all other +windows on the buffer: > + :ownsyntax foo +< *w:current_syntax* +This will set the "w:current_syntax" variable to "foo". The value of +"b:current_syntax" does not change. This is implemented by saving and +restoring "b:current_syntax", since the syntax files do set +"b:current_syntax". The value set by the syntax file is assigned to +"w:current_syntax". +Note: This resets the 'spell', 'spellcapcheck' and 'spellfile' options. + +Once a window has its own syntax, syntax commands executed from other windows +on the same buffer (including :syntax clear) have no effect. Conversely, +syntax commands executed from that window do not affect other windows on the +same buffer. + +A window with its own syntax reverts to normal behavior when another buffer +is loaded into that window or the file is reloaded. +When splitting the window, the new window will use the original syntax. + +============================================================================== +19. Color xterms *xterm-color* *color-xterm* + +Most color xterms have only eight colors. If you don't get colors with the +default setup, it should work with these lines in your .vimrc: > + :if &term =~ "xterm" + : if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[3%p1%dm + : set t_Sb=<Esc>[4%p1%dm + : else + : set t_Co=8 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + : endif + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +You might want to change the first "if" to match the name of your terminal, +e.g. "dtterm" instead of "xterm". + +Note: Do these settings BEFORE doing ":syntax on". Otherwise the colors may +be wrong. + *xiterm* *rxvt* +The above settings have been mentioned to work for xiterm and rxvt too. +But for using 16 colors in an rxvt these should work with terminfo: > + :set t_AB=<Esc>[%?%p1%{8}%<%t25;%p1%{40}%+%e5;%p1%{32}%+%;%dm + :set t_AF=<Esc>[%?%p1%{8}%<%t22;%p1%{30}%+%e1;%p1%{22}%+%;%dm +< + *colortest.vim* +To test your color setup, a file has been included in the Vim distribution. +To use it, execute this command: > + :runtime syntax/colortest.vim + +Some versions of xterm (and other terminals, like the Linux console) can +output lighter foreground colors, even though the number of colors is defined +at 8. Therefore Vim sets the "cterm=bold" attribute for light foreground +colors, when 't_Co' is 8. + + *xfree-xterm* +To get 16 colors or more, get the newest xterm version (which should be +included with XFree86 3.3 and later). You can also find the latest version +at: > + http://invisible-island.net/xterm/xterm.html +Here is a good way to configure it. This uses 88 colors and enables the +termcap-query feature, which allows Vim to ask the xterm how many colors it +supports. > + ./configure --disable-bold-color --enable-88-color --enable-tcap-query +If you only get 8 colors, check the xterm compilation settings. +(Also see |UTF8-xterm| for using this xterm with UTF-8 character encoding). + +This xterm should work with these lines in your .vimrc (for 16 colors): > + :if has("terminfo") + : set t_Co=16 + : set t_AB=<Esc>[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm + : set t_AF=<Esc>[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm + :else + : set t_Co=16 + : set t_Sf=<Esc>[3%dm + : set t_Sb=<Esc>[4%dm + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + +Without |+terminfo|, Vim will recognize these settings, and automatically +translate cterm colors of 8 and above to "<Esc>[9%dm" and "<Esc>[10%dm". +Colors above 16 are also translated automatically. + +For 256 colors this has been reported to work: > + + :set t_AB=<Esc>[48;5;%dm + :set t_AF=<Esc>[38;5;%dm + +Or just set the TERM environment variable to "xterm-color" or "xterm-16color" +and try if that works. + +You probably want to use these X resources (in your ~/.Xdefaults file): + XTerm*color0: #000000 + XTerm*color1: #c00000 + XTerm*color2: #008000 + XTerm*color3: #808000 + XTerm*color4: #0000c0 + XTerm*color5: #c000c0 + XTerm*color6: #008080 + XTerm*color7: #c0c0c0 + XTerm*color8: #808080 + XTerm*color9: #ff6060 + XTerm*color10: #00ff00 + XTerm*color11: #ffff00 + XTerm*color12: #8080ff + XTerm*color13: #ff40ff + XTerm*color14: #00ffff + XTerm*color15: #ffffff + Xterm*cursorColor: Black + +[Note: The cursorColor is required to work around a bug, which changes the +cursor color to the color of the last drawn text. This has been fixed by a +newer version of xterm, but not everybody is using it yet.] + +To get these right away, reload the .Xdefaults file to the X Option database +Manager (you only need to do this when you just changed the .Xdefaults file): > + xrdb -merge ~/.Xdefaults +< + *xterm-blink* *xterm-blinking-cursor* +To make the cursor blink in an xterm, see tools/blink.c. Or use Thomas +Dickey's xterm above patchlevel 107 (see above for where to get it), with +these resources: + XTerm*cursorBlink: on + XTerm*cursorOnTime: 400 + XTerm*cursorOffTime: 250 + XTerm*cursorColor: White + + *hpterm-color* +These settings work (more or less) for an hpterm, which only supports 8 +foreground colors: > + :if has("terminfo") + : set t_Co=8 + : set t_Sf=<Esc>[&v%p1%dS + : set t_Sb=<Esc>[&v7S + :else + : set t_Co=8 + : set t_Sf=<Esc>[&v%dS + : set t_Sb=<Esc>[&v7S + :endif +< [<Esc> is a real escape, type CTRL-V <Esc>] + + *Eterm* *enlightened-terminal* +These settings have been reported to work for the Enlightened terminal +emulator, or Eterm. They might work for all xterm-like terminals that use the +bold attribute to get bright colors. Add an ":if" like above when needed. > + :set t_Co=16 + :set t_AF=^[[%?%p1%{8}%<%t3%p1%d%e%p1%{22}%+%d;1%;m + :set t_AB=^[[%?%p1%{8}%<%t4%p1%d%e%p1%{32}%+%d;1%;m +< + *TTpro-telnet* +These settings should work for TTpro telnet. Tera Term Pro is a freeware / +open-source program for MS-Windows. > + set t_Co=16 + set t_AB=^[[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{32}%+5;%;%dm + set t_AF=^[[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{22}%+1;%;%dm +Also make sure TTpro's Setup / Window / Full Color is enabled, and make sure +that Setup / Font / Enable Bold is NOT enabled. +(info provided by John Love-Jensen <eljay@Adobe.COM>) + + +============================================================================== +20. When syntax is slow *:syntime* + +This is aimed at authors of a syntax file. + +If your syntax causes redrawing to be slow, here are a few hints on making it +faster. To see slowness switch on some features that usually interfere, such +as 'relativenumber' and |folding|. + +Note: This is only available when compiled with the |+profile| feature. +You many need to build Vim with "huge" features. + +To find out what patterns are consuming most time, get an overview with this +sequence: > + :syntime on + [ redraw the text at least once with CTRL-L ] + :syntime report + +This will display a list of syntax patterns that were used, sorted by the time +it took to match them against the text. + +:syntime on Start measuring syntax times. This will add some + overhead to compute the time spent on syntax pattern + matching. + +:syntime off Stop measuring syntax times. + +:syntime clear Set all the counters to zero, restart measuring. + +:syntime report Show the syntax items used since ":syntime on" in the + current window. Use a wider display to see more of + the output. + + The list is sorted by total time. The columns are: + TOTAL Total time in seconds spent on + matching this pattern. + COUNT Number of times the pattern was used. + MATCH Number of times the pattern actually + matched + SLOWEST The longest time for one try. + AVERAGE The average time for one try. + NAME Name of the syntax item. Note that + this is not unique. + PATTERN The pattern being used. + +Pattern matching gets slow when it has to try many alternatives. Try to +include as much literal text as possible to reduce the number of ways a +pattern does NOT match. + +When using the "\@<=" and "\@<!" items, add a maximum size to avoid trying at +all positions in the current and previous line. For example, if the item is +literal text specify the size of that text (in bytes): + +"<\@<=span" Matches "span" in "<span". This tries matching with "<" in + many places. +"<\@1<=span" Matches the same, but only tries one byte before "span". + + + vim:tw=78:sw=4:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt new file mode 100644 index 0000000..a98fe95 --- /dev/null +++ b/runtime/doc/tabpage.txt @@ -0,0 +1,483 @@ +*tabpage.txt* For Vim version 9.1. Last change: 2022 Feb 02 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with windows in multiple tab pages. *tab-page* *tabpage* + +The commands which have been added to use multiple tab pages are explained +here. Additionally, there are explanations for commands that work differently +when used in combination with more than one tab page. + +1. Introduction |tab-page-intro| +2. Commands |tab-page-commands| +3. Other items |tab-page-other| +4. Setting 'tabline' |setting-tabline| +5. Setting 'guitablabel' |setting-guitablabel| + +{not able to use multiple tab pages when the |+windows| feature was disabled +at compile time} + +============================================================================== +1. Introduction *tab-page-intro* + +A tab page holds one or more windows. You can easily switch between tab +pages, so that you have several collections of windows to work on different +things. + +Usually you will see a list of labels at the top of the Vim window, one for +each tab page. With the mouse you can click on the label to jump to that tab +page. There are other ways to move between tab pages, see below. + +Most commands work only in the current tab page. That includes the |CTRL-W| +commands, |:windo|, |:all| and |:ball| (when not using the |:tab| modifier). +The commands that are aware of other tab pages than the current one are +mentioned below. + +Tabs are also a nice way to edit a buffer temporarily without changing the +current window layout. Open a new tab page, do whatever you want to do and +close the tab page. + +============================================================================== +2. Commands *tab-page-commands* + +OPENING A NEW TAB PAGE: + +When starting Vim "vim -p filename ..." opens each file argument in a separate +tab page (up to 'tabpagemax'). See |-p| + +A double click with the mouse in the non-GUI tab pages line opens a new, empty +tab page. It is placed left of the position of the click. The first click +may select another tab page first, causing an extra screen update. + +This also works in a few GUI versions, esp. Win32 and Motif. But only when +clicking right of the labels. + +In the GUI tab pages line you can use the right mouse button to open menu. +|tabline-menu|. + +For the related autocommands see |tabnew-autocmd|. + +:[count]tabe[dit] *:tabe* *:tabedit* *:tabnew* +:[count]tabnew + Open a new tab page with an empty window, after the current + tab page. If [count] is given the new tab page appears after + the tab page [count] otherwise the new tab page will appear + after the current one. > + :tabnew " opens tabpage after the current one + :.tabnew " as above + :+tabnew " opens tabpage after the next tab page + " note: it is one further than :tabnew + :-tabnew " opens tabpage before the current one + :0tabnew " opens tabpage before the first one + :$tabnew " opens tabpage after the last one + +:[count]tabe[dit] [++opt] [+cmd] {file} +:[count]tabnew [++opt] [+cmd] {file} + Open a new tab page and edit {file}, like with |:edit|. + For [count] see |:tabnew| above. + +:[count]tabf[ind] [++opt] [+cmd] {file} *:tabf* *:tabfind* + Open a new tab page and edit {file} in 'path', like with + |:find|. For [count] see |:tabnew| above. + +:[count]tab {cmd} *:tab* + Execute {cmd} and when it opens a new window open a new tab + page instead. Doesn't work for |:diffsplit|, |:diffpatch|, + |:execute| and |:normal|. + If [count] is given the new tab page appears after the tab + page [count] otherwise the new tab page will appear after the + current one. + Examples: > + :tab split " opens current buffer in new tab page + :tab help gt " opens tab page with help for "gt" + :.tab help gt " as above + :+tab help " opens tab page with help after the next + " tab page + :-tab help " opens tab page with help before the + " current one + :0tab help " opens tab page with help before the + " first one + :$tab help " opens tab page with help after the last + " one + +CTRL-W gf Open a new tab page and edit the file name under the cursor. + See |CTRL-W_gf|. + +CTRL-W gF Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. + See |CTRL-W_gF|. + +CLOSING A TAB PAGE: + +Closing the last window of a tab page closes the tab page too, unless there is +only one tab page. + +Using the mouse: If the tab page line is displayed you can click in the "X" at +the top right to close the current tab page. A custom |'tabline'| may show +something else. + + *:tabc* *:tabclose* +:tabc[lose][!] Close current tab page. + This command fails when: + - There is only one tab page on the screen. *E784* + - When 'hidden' is not set, [!] is not used, a buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. > + :tabclose " close the current tab page + +:{count}tabc[lose][!] +:tabc[lose][!] {count} + Close tab page {count}. Fails in the same way as `:tabclose` + above. > + :-tabclose " close the previous tab page + :+tabclose " close the next tab page + :1tabclose " close the first tab page + :$tabclose " close the last tab page + :tabclose -2 " close the 2nd previous tab page + :tabclose + " close the next tab page + :tabclose 3 " close the third tab page + :tabclose $ " close the last tab page + :tabclose # " close the last accessed tab page + +When a tab is closed the next tab page will become the current one. + + *:tabo* *:tabonly* +:tabo[nly][!] Close all other tab pages. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. > + :tabonly " close all tab pages except the current + " one + +:{count}tabo[nly][!] +:tabo[nly][!] {count} + Close all tab pages except {count} one. > + :.tabonly " as above + :-tabonly " close all tab pages except the previous + " one + :+tabonly " close all tab pages except the next one + :1tabonly " close all tab pages except the first one + :$tabonly " close all tab pages except the last one + :tabonly - " close all tab pages except the previous + " one + :tabonly +2 " close all tab pages except the two next + " one + :tabonly 1 " close all tab pages except the first one + :tabonly $ " close all tab pages except the last one + :tabonly # " close all tab pages except the last + " accessed one + + +SWITCHING TO ANOTHER TAB PAGE: + +Using the mouse: If the tab page line is displayed you can click in a tab page +label to switch to that tab page. Click where there is no label to go to the +next tab page. |'tabline'| + +:tabn[ext] *:tabn* *:tabnext* *gt* +<C-PageDown> *CTRL-<PageDown>* *<C-PageDown>* +gt *i_CTRL-<PageDown>* *i_<C-PageDown>* + Go to the next tab page. Wraps around from the last to the + first one. + +:{count}tabn[ext] +:tabn[ext] {count} + Go to tab page {count}. The first tab page has number one. > + :-tabnext " go to the previous tab page + :+tabnext " go to the next tab page + :+2tabnext " go to the two next tab page + :1tabnext " go to the first tab page + :$tabnext " go to the last tab page + :tabnext $ " as above + :tabnext # " go to the last accessed tab page + :tabnext - " go to the previous tab page + :tabnext -1 " as above + :tabnext + " go to the next tab page + :tabnext +1 " as above + +{count}<C-PageDown> +{count}gt Go to tab page {count}. The first tab page has number one. + + +:tabp[revious] *:tabp* *:tabprevious* *gT* *:tabN* +:tabN[ext] *:tabNext* *CTRL-<PageUp>* +<C-PageUp> *<C-PageUp>* *i_CTRL-<PageUp>* *i_<C-PageUp>* +gT Go to the previous tab page. Wraps around from the first one + to the last one. + +:tabp[revious] {count} +:tabN[ext] {count} +{count}<C-PageUp> +{count}gT Go {count} tab pages back. Wraps around from the first one + to the last one. Note that the use of {count} is different + from |:tabnext|, where it is used as the tab page number. + +:tabr[ewind] *:tabfir* *:tabfirst* *:tabr* *:tabrewind* +:tabfir[st] Go to the first tab page. + + *:tabl* *:tablast* +:tabl[ast] Go to the last tab page. + + *g<Tab>* *CTRL-W_g<Tab>* *<C-Tab>* +g<Tab> Go to the last accessed tab page. + +Other commands: + *:tabs* +:tabs List the tab pages and the windows they contain. + Shows a ">" for the current window. + Shows a "+" for modified buffers. + For example: + Tab page 1 ~ + + tabpage.txt ~ + ex_docmd.c ~ + Tab page 2 ~ + > main.c ~ + + +REORDERING TAB PAGES: + +:tabm[ove] [N] *:tabm* *:tabmove* +:[N]tabm[ove] + Move the current tab page to after tab page N. Use zero to + make the current tab page the first one. N is counted before + the move, thus if the second tab is the current one, + `:tabmove 1` and `:tabmove 2` have no effect. + Without N the tab page is made the last one. > + :.tabmove " do nothing + :-tabmove " move the tab page to the left + :+tabmove " move the tab page to the right + :0tabmove " move the tab page to the beginning of the tab + " list + :tabmove 0 " as above + :tabmove " move the tab page to the last + :$tabmove " as above + :tabmove $ " as above + :tabmove # " move the tab page after the last accessed + " tab page + +:tabm[ove] +[N] +:tabm[ove] -[N] + Move the current tab page N places to the right (with +) or to + the left (with -). > + :tabmove - " move the tab page to the left + :tabmove -1 " as above + :tabmove + " move the tab page to the right + :tabmove +1 " as above + + +Note that although it is possible to move a tab behind the N-th one by using +:Ntabmove. And move it by N places by using :+Ntabmove. For clarification what ++N means in this context see |[range]|. + + +LOOPING OVER TAB PAGES: + + *:tabd* *:tabdo* +:[range]tabd[o] {cmd} + Execute {cmd} in each tab page or if [range] is given only in + tab pages which tab page number is in the [range]. It works + like doing this: > + :tabfirst + :{cmd} + :tabnext + :{cmd} + etc. +< This only operates in the current window of each tab page. + When an error is detected on one tab page, further tab pages + will not be visited. + The last tab page (or where an error occurred) becomes the + current tab page. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close tab pages or reorder them. + Also see |:windo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, |:cfdo| + and |:lfdo| + +============================================================================== +3. Other items *tab-page-other* + + *tabline-menu* +The GUI tab pages line has a popup menu. It is accessed with a right click. +The entries are: + Close Close the tab page under the mouse pointer. The + current one if there is no label under the mouse + pointer. + New Tab Open a tab page, editing an empty buffer. It appears + to the left of the mouse pointer. + Open Tab... Like "New Tab" and additionally use a file selector to + select a file to edit. + +Diff mode works per tab page. You can see the diffs between several files +within one tab page. Other tab pages can show differences between other +files. + +Variables local to a tab page start with "t:". |tabpage-variable| + +Currently there is only one option local to a tab page: 'cmdheight'. + + *tabnew-autocmd* +The TabLeave and TabEnter autocommand events can be used to do something when +switching from one tab page to another. The exact order depends on what you +are doing. When creating a new tab page this works as if you create a new +window on the same buffer and then edit another buffer. Thus ":tabnew" +triggers: + WinLeave leave current window + TabLeave leave current tab page + WinEnter enter window in new tab page + TabEnter enter new tab page + BufLeave leave current buffer + BufEnter enter new empty buffer + +When switching to another tab page the order is: + BufLeave + WinLeave + TabLeave + TabEnter + WinEnter + BufEnter + +============================================================================== +4. Setting 'tabline' *setting-tabline* + +The 'tabline' option specifies what the line with tab pages labels looks like. +It is only used when there is no GUI tab line. + +You can use the 'showtabline' option to specify when you want the line with +tab page labels to appear: never, when there is more than one tab page or +always. + +The highlighting of the tab pages line is set with the groups TabLine +TabLineSel and TabLineFill. |hl-TabLine| |hl-TabLineSel| |hl-TabLineFill| + +A "+" will be shown for a tab page that has a modified window. The number of +windows in a tabpage is also shown. Thus "3+" means three windows and one of +them has a modified buffer. + +The 'tabline' option allows you to define your preferred way to tab pages +labels. This isn't easy, thus an example will be given here. + +For basics see the 'statusline' option. The same items can be used in the +'tabline' option. Additionally, the |tabpagebuflist()|, |tabpagenr()| and +|tabpagewinnr()| functions are useful. + +Since the number of tab labels will vary, you need to use an expression for +the whole option. Something like: > + :set tabline=%!MyTabLine() + +Then define the MyTabLine() function to list all the tab pages labels. A +convenient method is to split it in two parts: First go over all the tab +pages and define labels for them. Then get the label for each tab page. > + + function MyTabLine() + let s = '' + for i in range(tabpagenr('$')) + " select the highlighting + if i + 1 == tabpagenr() + let s ..= '%#TabLineSel#' + else + let s ..= '%#TabLine#' + endif + + " set the tab page number (for mouse clicks) + let s ..= '%' .. (i + 1) .. 'T' + + " the label is made by MyTabLabel() + let s ..= ' %{MyTabLabel(' .. (i + 1) .. ')} ' + endfor + + " after the last tab fill with TabLineFill and reset tab page nr + let s ..= '%#TabLineFill#%T' + + " right-align the label to close the current tab page + if tabpagenr('$') > 1 + let s ..= '%=%#TabLine#%999Xclose' + endif + + return s + endfunction + +Now the MyTabLabel() function is called for each tab page to get its label. > + + function MyTabLabel(n) + let buflist = tabpagebuflist(a:n) + let winnr = tabpagewinnr(a:n) + return bufname(buflist[winnr - 1]) + endfunction + +This is just a simplistic example that results in a tab pages line that +resembles the default, but without adding a + for a modified buffer or +truncating the names. You will want to reduce the width of labels in a +clever way when there is not enough room. Check the 'columns' option for the +space available. + +============================================================================== +5. Setting 'guitablabel' *setting-guitablabel* + +When the GUI tab pages line is displayed, 'guitablabel' can be used to +specify the label to display for each tab page. Unlike 'tabline', which +specifies the whole tab pages line at once, 'guitablabel' is used for each +label separately. + +'guitabtooltip' is very similar and is used for the tooltip of the same label. +This only appears when the mouse pointer hovers over the label, thus it +usually is longer. Only supported on some systems though. + +See the 'statusline' option for the format of the value. + +The "%N" item can be used for the current tab page number. The |v:lnum| +variable is also set to this number when the option is evaluated. +The items that use a file name refer to the current window of the tab page. + +Note that syntax highlighting is not used for the option. The %T and %X +items are also ignored. + +A simple example that puts the tab page number and the buffer name in the +label: > + :set guitablabel=%N\ %f + +An example that resembles the default 'guitablabel': Show the number of +windows in the tab page and a '+' if there is a modified buffer: > + + function GuiTabLabel() + let label = '' + let bufnrlist = tabpagebuflist(v:lnum) + + " Add '+' if one of the buffers in the tab page is modified + for bufnr in bufnrlist + if getbufvar(bufnr, "&modified") + let label = '+' + break + endif + endfor + + " Append the number of windows in the tab page if more than one + let wincount = tabpagewinnr(v:lnum, '$') + if wincount > 1 + let label ..= wincount + endif + if label != '' + let label ..= ' ' + endif + + " Append the buffer name + return label .. bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) + endfunction + + set guitablabel=%{GuiTabLabel()} + +Note that the function must be defined before setting the option, otherwise +you get an error message for the function not being known. + +If you want to fall back to the default label, return an empty string. + +If you want to show something specific for a tab page, you might want to use a +tab page local variable. |t:var| + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/tags b/runtime/doc/tags new file mode 100644 index 0000000..1b55fa1 --- /dev/null +++ b/runtime/doc/tags @@ -0,0 +1,11437 @@ +! change.txt /*!* +!! change.txt /*!!* +# pattern.txt /*#* +#{} eval.txt /*#{}* +$ motion.txt /*$* +$HOME options.txt /*$HOME* +$HOME-use version5.txt /*$HOME-use* +$HOME-windows options.txt /*$HOME-windows* +$MYGVIMRC gui.txt /*$MYGVIMRC* +$MYVIMRC starting.txt /*$MYVIMRC* +$VIM starting.txt /*$VIM* +$VIM-use version5.txt /*$VIM-use* +$VIMRUNTIME starting.txt /*$VIMRUNTIME* +$VIM_POSIX vi_diff.txt /*$VIM_POSIX* +$quote eval.txt /*$quote* +% motion.txt /*%* +%:. cmdline.txt /*%:.* +%:8 cmdline.txt /*%:8* +%:S cmdline.txt /*%:S* +%:e cmdline.txt /*%:e* +%:gs cmdline.txt /*%:gs* +%:h cmdline.txt /*%:h* +%:p cmdline.txt /*%:p* +%:r cmdline.txt /*%:r* +%:s cmdline.txt /*%:s* +%:t cmdline.txt /*%:t* +%:~ cmdline.txt /*%:~* +& change.txt /*&* +' motion.txt /*'* +'' motion.txt /*''* +'( motion.txt /*'(* +') motion.txt /*')* +'. motion.txt /*'.* +'0 motion.txt /*'0* +'< motion.txt /*'<* +'> motion.txt /*'>* +'A motion.txt /*'A* +'[ motion.txt /*'[* +'] motion.txt /*']* +'^ motion.txt /*'^* +'a motion.txt /*'a* +'acd' options.txt /*'acd'* +'ai' options.txt /*'ai'* +'akm' options.txt /*'akm'* +'al' options.txt /*'al'* +'aleph' options.txt /*'aleph'* +'allowrevins' options.txt /*'allowrevins'* +'altkeymap' options.txt /*'altkeymap'* +'ambiwidth' options.txt /*'ambiwidth'* +'ambw' options.txt /*'ambw'* +'anti' options.txt /*'anti'* +'antialias' options.txt /*'antialias'* +'ap' vi_diff.txt /*'ap'* +'ar' options.txt /*'ar'* +'arab' options.txt /*'arab'* +'arabic' options.txt /*'arabic'* +'arabicshape' options.txt /*'arabicshape'* +'ari' options.txt /*'ari'* +'arshape' options.txt /*'arshape'* +'as' todo.txt /*'as'* +'asd' options.txt /*'asd'* +'autochdir' options.txt /*'autochdir'* +'autoindent' options.txt /*'autoindent'* +'autoprint' vi_diff.txt /*'autoprint'* +'autoread' options.txt /*'autoread'* +'autosave' todo.txt /*'autosave'* +'autoshelldir' options.txt /*'autoshelldir'* +'autowrite' options.txt /*'autowrite'* +'autowriteall' options.txt /*'autowriteall'* +'aw' options.txt /*'aw'* +'awa' options.txt /*'awa'* +'b:context_ignore_makefile' ft_context.txt /*'b:context_ignore_makefile'* +'b:context_include' ft_context.txt /*'b:context_include'* +'b:mp_metafun' ft_mp.txt /*'b:mp_metafun'* +'background' options.txt /*'background'* +'backspace' options.txt /*'backspace'* +'backup' options.txt /*'backup'* +'backupcopy' options.txt /*'backupcopy'* +'backupdir' options.txt /*'backupdir'* +'backupext' options.txt /*'backupext'* +'backupskip' options.txt /*'backupskip'* +'balloondelay' options.txt /*'balloondelay'* +'ballooneval' options.txt /*'ballooneval'* +'balloonevalterm' options.txt /*'balloonevalterm'* +'balloonexpr' options.txt /*'balloonexpr'* +'bdir' options.txt /*'bdir'* +'bdlay' options.txt /*'bdlay'* +'beautify' vi_diff.txt /*'beautify'* +'belloff' options.txt /*'belloff'* +'beval' options.txt /*'beval'* +'bevalterm' options.txt /*'bevalterm'* +'bex' options.txt /*'bex'* +'bexpr' options.txt /*'bexpr'* +'bf' vi_diff.txt /*'bf'* +'bg' options.txt /*'bg'* +'bh' options.txt /*'bh'* +'bin' options.txt /*'bin'* +'binary' options.txt /*'binary'* +'biosk' options.txt /*'biosk'* +'bioskey' options.txt /*'bioskey'* +'bk' options.txt /*'bk'* +'bkc' options.txt /*'bkc'* +'bl' options.txt /*'bl'* +'bo' options.txt /*'bo'* +'bomb' options.txt /*'bomb'* +'breakat' options.txt /*'breakat'* +'breakindent' options.txt /*'breakindent'* +'breakindentopt' options.txt /*'breakindentopt'* +'bri' options.txt /*'bri'* +'briopt' options.txt /*'briopt'* +'brk' options.txt /*'brk'* +'browsedir' options.txt /*'browsedir'* +'bs' options.txt /*'bs'* +'bsdir' options.txt /*'bsdir'* +'bsk' options.txt /*'bsk'* +'bt' options.txt /*'bt'* +'bufhidden' options.txt /*'bufhidden'* +'buflisted' options.txt /*'buflisted'* +'buftype' options.txt /*'buftype'* +'casemap' options.txt /*'casemap'* +'cb' options.txt /*'cb'* +'cc' options.txt /*'cc'* +'ccv' options.txt /*'ccv'* +'cd' options.txt /*'cd'* +'cdh' options.txt /*'cdh'* +'cdhome' options.txt /*'cdhome'* +'cdpath' options.txt /*'cdpath'* +'cedit' options.txt /*'cedit'* +'cf' options.txt /*'cf'* +'cfu' options.txt /*'cfu'* +'ch' options.txt /*'ch'* +'character' intro.txt /*'character'* +'charconvert' options.txt /*'charconvert'* +'ci' options.txt /*'ci'* +'cin' options.txt /*'cin'* +'cindent' options.txt /*'cindent'* +'cink' options.txt /*'cink'* +'cinkeys' options.txt /*'cinkeys'* +'cino' options.txt /*'cino'* +'cinoptions' options.txt /*'cinoptions'* +'cinscopedecls' options.txt /*'cinscopedecls'* +'cinsd' options.txt /*'cinsd'* +'cinw' options.txt /*'cinw'* +'cinwords' options.txt /*'cinwords'* +'clipboard' options.txt /*'clipboard'* +'cm' options.txt /*'cm'* +'cmdheight' options.txt /*'cmdheight'* +'cmdwinheight' options.txt /*'cmdwinheight'* +'cmp' options.txt /*'cmp'* +'cms' options.txt /*'cms'* +'co' options.txt /*'co'* +'cocu' options.txt /*'cocu'* +'cole' options.txt /*'cole'* +'colorcolumn' options.txt /*'colorcolumn'* +'columns' options.txt /*'columns'* +'com' options.txt /*'com'* +'comments' options.txt /*'comments'* +'commentstring' options.txt /*'commentstring'* +'compatible' options.txt /*'compatible'* +'complete' options.txt /*'complete'* +'completefunc' options.txt /*'completefunc'* +'completeopt' options.txt /*'completeopt'* +'completepopup' options.txt /*'completepopup'* +'completeslash' options.txt /*'completeslash'* +'concealcursor' options.txt /*'concealcursor'* +'conceallevel' options.txt /*'conceallevel'* +'confirm' options.txt /*'confirm'* +'consk' options.txt /*'consk'* +'conskey' options.txt /*'conskey'* +'copyindent' options.txt /*'copyindent'* +'cot' options.txt /*'cot'* +'cp' options.txt /*'cp'* +'cpo' options.txt /*'cpo'* +'cpoptions' options.txt /*'cpoptions'* +'cpp' options.txt /*'cpp'* +'cpt' options.txt /*'cpt'* +'crb' options.txt /*'crb'* +'cryptmethod' options.txt /*'cryptmethod'* +'cscopepathcomp' options.txt /*'cscopepathcomp'* +'cscopeprg' options.txt /*'cscopeprg'* +'cscopequickfix' options.txt /*'cscopequickfix'* +'cscoperelative' options.txt /*'cscoperelative'* +'cscopetag' options.txt /*'cscopetag'* +'cscopetagorder' options.txt /*'cscopetagorder'* +'cscopeverbose' options.txt /*'cscopeverbose'* +'csl' options.txt /*'csl'* +'cspc' options.txt /*'cspc'* +'csprg' options.txt /*'csprg'* +'csqf' options.txt /*'csqf'* +'csre' options.txt /*'csre'* +'cst' options.txt /*'cst'* +'csto' options.txt /*'csto'* +'csverb' options.txt /*'csverb'* +'cuc' options.txt /*'cuc'* +'cul' options.txt /*'cul'* +'culopt' options.txt /*'culopt'* +'cursorbind' options.txt /*'cursorbind'* +'cursorcolumn' options.txt /*'cursorcolumn'* +'cursorline' options.txt /*'cursorline'* +'cursorlineopt' options.txt /*'cursorlineopt'* +'cwh' options.txt /*'cwh'* +'debug' options.txt /*'debug'* +'deco' options.txt /*'deco'* +'def' options.txt /*'def'* +'define' options.txt /*'define'* +'delcombine' options.txt /*'delcombine'* +'dex' options.txt /*'dex'* +'dg' options.txt /*'dg'* +'dict' options.txt /*'dict'* +'dictionary' options.txt /*'dictionary'* +'diff' options.txt /*'diff'* +'diffexpr' options.txt /*'diffexpr'* +'diffopt' options.txt /*'diffopt'* +'digraph' options.txt /*'digraph'* +'dip' options.txt /*'dip'* +'dir' options.txt /*'dir'* +'directory' options.txt /*'directory'* +'display' options.txt /*'display'* +'dy' options.txt /*'dy'* +'ea' options.txt /*'ea'* +'ead' options.txt /*'ead'* +'eadirection' options.txt /*'eadirection'* +'eb' options.txt /*'eb'* +'ed' options.txt /*'ed'* +'edcompatible' options.txt /*'edcompatible'* +'ef' options.txt /*'ef'* +'efm' options.txt /*'efm'* +'ei' options.txt /*'ei'* +'ek' options.txt /*'ek'* +'emo' options.txt /*'emo'* +'emoji' options.txt /*'emoji'* +'enc' options.txt /*'enc'* +'encoding' options.txt /*'encoding'* +'endoffile' options.txt /*'endoffile'* +'endofline' options.txt /*'endofline'* +'eof' options.txt /*'eof'* +'eol' options.txt /*'eol'* +'ep' options.txt /*'ep'* +'equalalways' options.txt /*'equalalways'* +'equalprg' options.txt /*'equalprg'* +'errorbells' options.txt /*'errorbells'* +'errorfile' options.txt /*'errorfile'* +'errorformat' options.txt /*'errorformat'* +'esckeys' options.txt /*'esckeys'* +'et' options.txt /*'et'* +'eventignore' options.txt /*'eventignore'* +'ex' options.txt /*'ex'* +'expandtab' options.txt /*'expandtab'* +'exrc' options.txt /*'exrc'* +'fcl' options.txt /*'fcl'* +'fcs' options.txt /*'fcs'* +'fdc' options.txt /*'fdc'* +'fde' options.txt /*'fde'* +'fdi' options.txt /*'fdi'* +'fdl' options.txt /*'fdl'* +'fdls' options.txt /*'fdls'* +'fdm' options.txt /*'fdm'* +'fdn' options.txt /*'fdn'* +'fdo' options.txt /*'fdo'* +'fdt' options.txt /*'fdt'* +'fe' options.txt /*'fe'* +'fen' options.txt /*'fen'* +'fenc' options.txt /*'fenc'* +'fencs' options.txt /*'fencs'* +'fex' options.txt /*'fex'* +'ff' options.txt /*'ff'* +'ffs' options.txt /*'ffs'* +'fic' options.txt /*'fic'* +'fileencoding' options.txt /*'fileencoding'* +'fileencodings' options.txt /*'fileencodings'* +'fileformat' options.txt /*'fileformat'* +'fileformats' options.txt /*'fileformats'* +'fileignorecase' options.txt /*'fileignorecase'* +'filetype' options.txt /*'filetype'* +'fillchars' options.txt /*'fillchars'* +'fixendofline' options.txt /*'fixendofline'* +'fixeol' options.txt /*'fixeol'* +'fk' options.txt /*'fk'* +'fkmap' options.txt /*'fkmap'* +'fl' vi_diff.txt /*'fl'* +'flash' vi_diff.txt /*'flash'* +'flp' options.txt /*'flp'* +'fml' options.txt /*'fml'* +'fmr' options.txt /*'fmr'* +'fo' options.txt /*'fo'* +'foldclose' options.txt /*'foldclose'* +'foldcolumn' options.txt /*'foldcolumn'* +'foldenable' options.txt /*'foldenable'* +'foldexpr' options.txt /*'foldexpr'* +'foldignore' options.txt /*'foldignore'* +'foldlevel' options.txt /*'foldlevel'* +'foldlevelstart' options.txt /*'foldlevelstart'* +'foldmarker' options.txt /*'foldmarker'* +'foldmethod' options.txt /*'foldmethod'* +'foldminlines' options.txt /*'foldminlines'* +'foldnestmax' options.txt /*'foldnestmax'* +'foldopen' options.txt /*'foldopen'* +'foldtext' options.txt /*'foldtext'* +'formatexpr' options.txt /*'formatexpr'* +'formatlistpat' options.txt /*'formatlistpat'* +'formatoptions' options.txt /*'formatoptions'* +'formatprg' options.txt /*'formatprg'* +'fp' options.txt /*'fp'* +'fs' options.txt /*'fs'* +'fsync' options.txt /*'fsync'* +'ft' options.txt /*'ft'* +'g:context_extra_options' ft_context.txt /*'g:context_extra_options'* +'g:context_ignore_makefile' ft_context.txt /*'g:context_ignore_makefile'* +'g:context_include' ft_context.txt /*'g:context_include'* +'g:mf_other_macros' ft_mp.txt /*'g:mf_other_macros'* +'g:mf_plain_macros' ft_mp.txt /*'g:mf_plain_macros'* +'g:mf_plain_modes' ft_mp.txt /*'g:mf_plain_modes'* +'g:mp_close_tag' ft_mp.txt /*'g:mp_close_tag'* +'g:mp_metafun' ft_mp.txt /*'g:mp_metafun'* +'g:mp_mfplain_macros' ft_mp.txt /*'g:mp_mfplain_macros'* +'g:mp_open_tag' ft_mp.txt /*'g:mp_open_tag'* +'g:mp_other_macros' ft_mp.txt /*'g:mp_other_macros'* +'g:mp_plain_macros' ft_mp.txt /*'g:mp_plain_macros'* +'g:no_context_maps' ft_context.txt /*'g:no_context_maps'* +'g:no_mf_maps' ft_mp.txt /*'g:no_mf_maps'* +'g:no_mp_maps' ft_mp.txt /*'g:no_mp_maps'* +'gcr' options.txt /*'gcr'* +'gd' options.txt /*'gd'* +'gdefault' options.txt /*'gdefault'* +'gfm' options.txt /*'gfm'* +'gfn' options.txt /*'gfn'* +'gfs' options.txt /*'gfs'* +'gfw' options.txt /*'gfw'* +'ghr' options.txt /*'ghr'* +'gli' options.txt /*'gli'* +'go' options.txt /*'go'* +'go-!' options.txt /*'go-!'* +'go-A' options.txt /*'go-A'* +'go-F' options.txt /*'go-F'* +'go-L' options.txt /*'go-L'* +'go-M' options.txt /*'go-M'* +'go-P' options.txt /*'go-P'* +'go-R' options.txt /*'go-R'* +'go-T' options.txt /*'go-T'* +'go-a' options.txt /*'go-a'* +'go-b' options.txt /*'go-b'* +'go-c' options.txt /*'go-c'* +'go-d' options.txt /*'go-d'* +'go-e' options.txt /*'go-e'* +'go-f' options.txt /*'go-f'* +'go-g' options.txt /*'go-g'* +'go-h' options.txt /*'go-h'* +'go-i' options.txt /*'go-i'* +'go-k' options.txt /*'go-k'* +'go-l' options.txt /*'go-l'* +'go-m' options.txt /*'go-m'* +'go-p' options.txt /*'go-p'* +'go-r' options.txt /*'go-r'* +'go-t' options.txt /*'go-t'* +'go-v' options.txt /*'go-v'* +'gp' options.txt /*'gp'* +'gr' vi_diff.txt /*'gr'* +'graphic' vi_diff.txt /*'graphic'* +'grepformat' options.txt /*'grepformat'* +'grepprg' options.txt /*'grepprg'* +'gtl' options.txt /*'gtl'* +'gtt' options.txt /*'gtt'* +'guicursor' options.txt /*'guicursor'* +'guifont' options.txt /*'guifont'* +'guifontset' options.txt /*'guifontset'* +'guifontwide' options.txt /*'guifontwide'* +'guiheadroom' options.txt /*'guiheadroom'* +'guiligatures' options.txt /*'guiligatures'* +'guioptions' options.txt /*'guioptions'* +'guipty' options.txt /*'guipty'* +'guitablabel' options.txt /*'guitablabel'* +'guitabtooltip' options.txt /*'guitabtooltip'* +'hardtabs' vi_diff.txt /*'hardtabs'* +'helpfile' options.txt /*'helpfile'* +'helpheight' options.txt /*'helpheight'* +'helplang' options.txt /*'helplang'* +'hf' options.txt /*'hf'* +'hh' options.txt /*'hh'* +'hi' options.txt /*'hi'* +'hid' options.txt /*'hid'* +'hidden' options.txt /*'hidden'* +'highlight' options.txt /*'highlight'* +'history' options.txt /*'history'* +'hk' options.txt /*'hk'* +'hkmap' options.txt /*'hkmap'* +'hkmapp' options.txt /*'hkmapp'* +'hkp' options.txt /*'hkp'* +'hl' options.txt /*'hl'* +'hlg' options.txt /*'hlg'* +'hls' options.txt /*'hls'* +'hlsearch' options.txt /*'hlsearch'* +'ht' vi_diff.txt /*'ht'* +'ic' options.txt /*'ic'* +'icon' options.txt /*'icon'* +'iconstring' options.txt /*'iconstring'* +'ignorecase' options.txt /*'ignorecase'* +'im' options.txt /*'im'* +'imactivatefunc' options.txt /*'imactivatefunc'* +'imactivatekey' options.txt /*'imactivatekey'* +'imaf' options.txt /*'imaf'* +'imak' options.txt /*'imak'* +'imc' options.txt /*'imc'* +'imcmdline' options.txt /*'imcmdline'* +'imd' options.txt /*'imd'* +'imdisable' options.txt /*'imdisable'* +'imi' options.txt /*'imi'* +'iminsert' options.txt /*'iminsert'* +'ims' options.txt /*'ims'* +'imsearch' options.txt /*'imsearch'* +'imsf' options.txt /*'imsf'* +'imst' options.txt /*'imst'* +'imstatusfunc' options.txt /*'imstatusfunc'* +'imstyle' options.txt /*'imstyle'* +'inc' options.txt /*'inc'* +'include' options.txt /*'include'* +'includeexpr' options.txt /*'includeexpr'* +'incsearch' options.txt /*'incsearch'* +'inde' options.txt /*'inde'* +'indentexpr' options.txt /*'indentexpr'* +'indentkeys' options.txt /*'indentkeys'* +'indk' options.txt /*'indk'* +'inex' options.txt /*'inex'* +'inf' options.txt /*'inf'* +'infercase' options.txt /*'infercase'* +'insertmode' options.txt /*'insertmode'* +'is' options.txt /*'is'* +'isf' options.txt /*'isf'* +'isfname' options.txt /*'isfname'* +'isi' options.txt /*'isi'* +'isident' options.txt /*'isident'* +'isk' options.txt /*'isk'* +'iskeyword' options.txt /*'iskeyword'* +'isp' options.txt /*'isp'* +'isprint' options.txt /*'isprint'* +'joinspaces' options.txt /*'joinspaces'* +'jop' options.txt /*'jop'* +'js' options.txt /*'js'* +'jumpoptions' options.txt /*'jumpoptions'* +'key' options.txt /*'key'* +'keymap' options.txt /*'keymap'* +'keymodel' options.txt /*'keymodel'* +'keyprotocol' options.txt /*'keyprotocol'* +'keywordprg' options.txt /*'keywordprg'* +'km' options.txt /*'km'* +'kmp' options.txt /*'kmp'* +'kp' options.txt /*'kp'* +'kpc' options.txt /*'kpc'* +'langmap' options.txt /*'langmap'* +'langmenu' options.txt /*'langmenu'* +'langnoremap' options.txt /*'langnoremap'* +'langremap' options.txt /*'langremap'* +'laststatus' options.txt /*'laststatus'* +'lazyredraw' options.txt /*'lazyredraw'* +'lbr' options.txt /*'lbr'* +'lcs' options.txt /*'lcs'* +'linebreak' options.txt /*'linebreak'* +'lines' options.txt /*'lines'* +'linespace' options.txt /*'linespace'* +'lisp' options.txt /*'lisp'* +'lispoptions' options.txt /*'lispoptions'* +'lispwords' options.txt /*'lispwords'* +'list' options.txt /*'list'* +'listchars' options.txt /*'listchars'* +'lm' options.txt /*'lm'* +'lmap' options.txt /*'lmap'* +'lnr' options.txt /*'lnr'* +'loadplugins' options.txt /*'loadplugins'* +'lop' options.txt /*'lop'* +'lpl' options.txt /*'lpl'* +'lrm' options.txt /*'lrm'* +'ls' options.txt /*'ls'* +'lsp' options.txt /*'lsp'* +'luadll' options.txt /*'luadll'* +'lw' options.txt /*'lw'* +'lz' options.txt /*'lz'* +'ma' options.txt /*'ma'* +'macatsui' options.txt /*'macatsui'* +'magic' options.txt /*'magic'* +'makeef' options.txt /*'makeef'* +'makeencoding' options.txt /*'makeencoding'* +'makeprg' options.txt /*'makeprg'* +'mat' options.txt /*'mat'* +'matchpairs' options.txt /*'matchpairs'* +'matchtime' options.txt /*'matchtime'* +'maxcombine' options.txt /*'maxcombine'* +'maxfuncdepth' options.txt /*'maxfuncdepth'* +'maxmapdepth' options.txt /*'maxmapdepth'* +'maxmem' options.txt /*'maxmem'* +'maxmempattern' options.txt /*'maxmempattern'* +'maxmemtot' options.txt /*'maxmemtot'* +'mco' options.txt /*'mco'* +'mef' options.txt /*'mef'* +'menc' options.txt /*'menc'* +'menuitems' options.txt /*'menuitems'* +'mesg' vi_diff.txt /*'mesg'* +'mfd' options.txt /*'mfd'* +'mh' options.txt /*'mh'* +'mis' options.txt /*'mis'* +'mkspellmem' options.txt /*'mkspellmem'* +'ml' options.txt /*'ml'* +'mle' options.txt /*'mle'* +'mls' options.txt /*'mls'* +'mm' options.txt /*'mm'* +'mmd' options.txt /*'mmd'* +'mmp' options.txt /*'mmp'* +'mmt' options.txt /*'mmt'* +'mod' options.txt /*'mod'* +'modeline' options.txt /*'modeline'* +'modelineexpr' options.txt /*'modelineexpr'* +'modelines' options.txt /*'modelines'* +'modifiable' options.txt /*'modifiable'* +'modified' options.txt /*'modified'* +'more' options.txt /*'more'* +'mouse' options.txt /*'mouse'* +'mousef' options.txt /*'mousef'* +'mousefocus' options.txt /*'mousefocus'* +'mousehide' options.txt /*'mousehide'* +'mousem' options.txt /*'mousem'* +'mousemev' options.txt /*'mousemev'* +'mousemodel' options.txt /*'mousemodel'* +'mousemoveevent' options.txt /*'mousemoveevent'* +'mouses' options.txt /*'mouses'* +'mouseshape' options.txt /*'mouseshape'* +'mouset' options.txt /*'mouset'* +'mousetime' options.txt /*'mousetime'* +'mp' options.txt /*'mp'* +'mps' options.txt /*'mps'* +'msm' options.txt /*'msm'* +'mzq' options.txt /*'mzq'* +'mzquantum' options.txt /*'mzquantum'* +'mzschemedll' options.txt /*'mzschemedll'* +'mzschemegcdll' options.txt /*'mzschemegcdll'* +'nf' options.txt /*'nf'* +'noacd' options.txt /*'noacd'* +'noai' options.txt /*'noai'* +'noakm' options.txt /*'noakm'* +'noallowrevins' options.txt /*'noallowrevins'* +'noaltkeymap' options.txt /*'noaltkeymap'* +'noanti' options.txt /*'noanti'* +'noantialias' options.txt /*'noantialias'* +'noar' options.txt /*'noar'* +'noarab' options.txt /*'noarab'* +'noarabic' options.txt /*'noarabic'* +'noarabicshape' options.txt /*'noarabicshape'* +'noari' options.txt /*'noari'* +'noarshape' options.txt /*'noarshape'* +'noas' todo.txt /*'noas'* +'noasd' options.txt /*'noasd'* +'noautochdir' options.txt /*'noautochdir'* +'noautoindent' options.txt /*'noautoindent'* +'noautoread' options.txt /*'noautoread'* +'noautosave' todo.txt /*'noautosave'* +'noautoshelldir' options.txt /*'noautoshelldir'* +'noautowrite' options.txt /*'noautowrite'* +'noautowriteall' options.txt /*'noautowriteall'* +'noaw' options.txt /*'noaw'* +'noawa' options.txt /*'noawa'* +'nobackup' options.txt /*'nobackup'* +'noballooneval' options.txt /*'noballooneval'* +'noballoonevalterm' options.txt /*'noballoonevalterm'* +'nobeval' options.txt /*'nobeval'* +'nobevalterm' options.txt /*'nobevalterm'* +'nobin' options.txt /*'nobin'* +'nobinary' options.txt /*'nobinary'* +'nobiosk' options.txt /*'nobiosk'* +'nobioskey' options.txt /*'nobioskey'* +'nobk' options.txt /*'nobk'* +'nobl' options.txt /*'nobl'* +'nobomb' options.txt /*'nobomb'* +'nobreakindent' options.txt /*'nobreakindent'* +'nobri' options.txt /*'nobri'* +'nobuflisted' options.txt /*'nobuflisted'* +'nocdh' options.txt /*'nocdh'* +'nocdhome' options.txt /*'nocdhome'* +'nocf' options.txt /*'nocf'* +'noci' options.txt /*'noci'* +'nocin' options.txt /*'nocin'* +'nocindent' options.txt /*'nocindent'* +'nocompatible' options.txt /*'nocompatible'* +'noconfirm' options.txt /*'noconfirm'* +'noconsk' options.txt /*'noconsk'* +'noconskey' options.txt /*'noconskey'* +'nocopyindent' options.txt /*'nocopyindent'* +'nocp' options.txt /*'nocp'* +'nocrb' options.txt /*'nocrb'* +'nocscoperelative' options.txt /*'nocscoperelative'* +'nocscopetag' options.txt /*'nocscopetag'* +'nocscopeverbose' options.txt /*'nocscopeverbose'* +'nocsre' options.txt /*'nocsre'* +'nocst' options.txt /*'nocst'* +'nocsverb' options.txt /*'nocsverb'* +'nocuc' options.txt /*'nocuc'* +'nocul' options.txt /*'nocul'* +'nocursorbind' options.txt /*'nocursorbind'* +'nocursorcolumn' options.txt /*'nocursorcolumn'* +'nocursorline' options.txt /*'nocursorline'* +'nodeco' options.txt /*'nodeco'* +'nodelcombine' options.txt /*'nodelcombine'* +'nodg' options.txt /*'nodg'* +'nodiff' options.txt /*'nodiff'* +'nodigraph' options.txt /*'nodigraph'* +'noea' options.txt /*'noea'* +'noeb' options.txt /*'noeb'* +'noed' options.txt /*'noed'* +'noedcompatible' options.txt /*'noedcompatible'* +'noek' options.txt /*'noek'* +'noemo' options.txt /*'noemo'* +'noemoji' options.txt /*'noemoji'* +'noendoffile' options.txt /*'noendoffile'* +'noendofline' options.txt /*'noendofline'* +'noeof' options.txt /*'noeof'* +'noeol' options.txt /*'noeol'* +'noequalalways' options.txt /*'noequalalways'* +'noerrorbells' options.txt /*'noerrorbells'* +'noesckeys' options.txt /*'noesckeys'* +'noet' options.txt /*'noet'* +'noex' options.txt /*'noex'* +'noexpandtab' options.txt /*'noexpandtab'* +'noexrc' options.txt /*'noexrc'* +'nofen' options.txt /*'nofen'* +'nofic' options.txt /*'nofic'* +'nofileignorecase' options.txt /*'nofileignorecase'* +'nofixendofline' options.txt /*'nofixendofline'* +'nofixeol' options.txt /*'nofixeol'* +'nofk' options.txt /*'nofk'* +'nofkmap' options.txt /*'nofkmap'* +'nofoldenable' options.txt /*'nofoldenable'* +'nofs' options.txt /*'nofs'* +'nofsync' options.txt /*'nofsync'* +'nogd' options.txt /*'nogd'* +'nogdefault' options.txt /*'nogdefault'* +'noguipty' options.txt /*'noguipty'* +'nohid' options.txt /*'nohid'* +'nohidden' options.txt /*'nohidden'* +'nohk' options.txt /*'nohk'* +'nohkmap' options.txt /*'nohkmap'* +'nohkmapp' options.txt /*'nohkmapp'* +'nohkp' options.txt /*'nohkp'* +'nohls' options.txt /*'nohls'* +'nohlsearch' options.txt /*'nohlsearch'* +'noic' options.txt /*'noic'* +'noicon' options.txt /*'noicon'* +'noignorecase' options.txt /*'noignorecase'* +'noim' options.txt /*'noim'* +'noimc' options.txt /*'noimc'* +'noimcmdline' options.txt /*'noimcmdline'* +'noimd' options.txt /*'noimd'* +'noimdisable' options.txt /*'noimdisable'* +'noincsearch' options.txt /*'noincsearch'* +'noinf' options.txt /*'noinf'* +'noinfercase' options.txt /*'noinfercase'* +'noinsertmode' options.txt /*'noinsertmode'* +'nois' options.txt /*'nois'* +'nojoinspaces' options.txt /*'nojoinspaces'* +'nojs' options.txt /*'nojs'* +'nolangnoremap' options.txt /*'nolangnoremap'* +'nolangremap' options.txt /*'nolangremap'* +'nolazyredraw' options.txt /*'nolazyredraw'* +'nolbr' options.txt /*'nolbr'* +'nolinebreak' options.txt /*'nolinebreak'* +'nolisp' options.txt /*'nolisp'* +'nolist' options.txt /*'nolist'* +'nolnr' options.txt /*'nolnr'* +'noloadplugins' options.txt /*'noloadplugins'* +'nolpl' options.txt /*'nolpl'* +'nolrm' options.txt /*'nolrm'* +'nolz' options.txt /*'nolz'* +'noma' options.txt /*'noma'* +'nomacatsui' options.txt /*'nomacatsui'* +'nomagic' options.txt /*'nomagic'* +'nomh' options.txt /*'nomh'* +'noml' options.txt /*'noml'* +'nomle' options.txt /*'nomle'* +'nomod' options.txt /*'nomod'* +'nomodeline' options.txt /*'nomodeline'* +'nomodelineexpr' options.txt /*'nomodelineexpr'* +'nomodifiable' options.txt /*'nomodifiable'* +'nomodified' options.txt /*'nomodified'* +'nomore' options.txt /*'nomore'* +'nomousef' options.txt /*'nomousef'* +'nomousefocus' options.txt /*'nomousefocus'* +'nomousehide' options.txt /*'nomousehide'* +'nomousemev' options.txt /*'nomousemev'* +'nomousemoveevent' options.txt /*'nomousemoveevent'* +'nonu' options.txt /*'nonu'* +'nonumber' options.txt /*'nonumber'* +'noodev' options.txt /*'noodev'* +'noopendevice' options.txt /*'noopendevice'* +'nopaste' options.txt /*'nopaste'* +'nopi' options.txt /*'nopi'* +'nopreserveindent' options.txt /*'nopreserveindent'* +'nopreviewwindow' options.txt /*'nopreviewwindow'* +'noprompt' options.txt /*'noprompt'* +'nopvw' options.txt /*'nopvw'* +'noreadonly' options.txt /*'noreadonly'* +'norelativenumber' options.txt /*'norelativenumber'* +'noremap' options.txt /*'noremap'* +'norestorescreen' options.txt /*'norestorescreen'* +'norevins' options.txt /*'norevins'* +'nori' options.txt /*'nori'* +'norightleft' options.txt /*'norightleft'* +'norl' options.txt /*'norl'* +'nornu' options.txt /*'nornu'* +'noro' options.txt /*'noro'* +'nors' options.txt /*'nors'* +'noru' options.txt /*'noru'* +'noruler' options.txt /*'noruler'* +'nosb' options.txt /*'nosb'* +'nosc' options.txt /*'nosc'* +'noscb' options.txt /*'noscb'* +'noscf' options.txt /*'noscf'* +'noscrollbind' options.txt /*'noscrollbind'* +'noscrollfocus' options.txt /*'noscrollfocus'* +'noscs' options.txt /*'noscs'* +'nosecure' options.txt /*'nosecure'* +'nosft' options.txt /*'nosft'* +'noshellslash' options.txt /*'noshellslash'* +'noshelltemp' options.txt /*'noshelltemp'* +'noshiftround' options.txt /*'noshiftround'* +'noshortname' options.txt /*'noshortname'* +'noshowcmd' options.txt /*'noshowcmd'* +'noshowfulltag' options.txt /*'noshowfulltag'* +'noshowmatch' options.txt /*'noshowmatch'* +'noshowmode' options.txt /*'noshowmode'* +'nosi' options.txt /*'nosi'* +'nosm' options.txt /*'nosm'* +'nosmartcase' options.txt /*'nosmartcase'* +'nosmartindent' options.txt /*'nosmartindent'* +'nosmarttab' options.txt /*'nosmarttab'* +'nosmd' options.txt /*'nosmd'* +'nosmoothscroll' options.txt /*'nosmoothscroll'* +'nosms' options.txt /*'nosms'* +'nosn' options.txt /*'nosn'* +'nosol' options.txt /*'nosol'* +'nospell' options.txt /*'nospell'* +'nosplitbelow' options.txt /*'nosplitbelow'* +'nosplitright' options.txt /*'nosplitright'* +'nospr' options.txt /*'nospr'* +'nosr' options.txt /*'nosr'* +'nossl' options.txt /*'nossl'* +'nosta' options.txt /*'nosta'* +'nostartofline' options.txt /*'nostartofline'* +'nostmp' options.txt /*'nostmp'* +'noswapfile' options.txt /*'noswapfile'* +'noswf' options.txt /*'noswf'* +'nota' options.txt /*'nota'* +'notagbsearch' options.txt /*'notagbsearch'* +'notagrelative' options.txt /*'notagrelative'* +'notagstack' options.txt /*'notagstack'* +'notbi' options.txt /*'notbi'* +'notbidi' options.txt /*'notbidi'* +'notbs' options.txt /*'notbs'* +'notermbidi' options.txt /*'notermbidi'* +'notermguicolors' options.txt /*'notermguicolors'* +'noterse' options.txt /*'noterse'* +'notextauto' options.txt /*'notextauto'* +'notextmode' options.txt /*'notextmode'* +'notf' options.txt /*'notf'* +'notgc' options.txt /*'notgc'* +'notgst' options.txt /*'notgst'* +'notildeop' options.txt /*'notildeop'* +'notimeout' options.txt /*'notimeout'* +'notitle' options.txt /*'notitle'* +'noto' options.txt /*'noto'* +'notop' options.txt /*'notop'* +'notr' options.txt /*'notr'* +'nottimeout' options.txt /*'nottimeout'* +'nottybuiltin' options.txt /*'nottybuiltin'* +'nottyfast' options.txt /*'nottyfast'* +'notx' options.txt /*'notx'* +'noudf' options.txt /*'noudf'* +'noundofile' options.txt /*'noundofile'* +'novb' options.txt /*'novb'* +'novice' vi_diff.txt /*'novice'* +'novisualbell' options.txt /*'novisualbell'* +'nowa' options.txt /*'nowa'* +'nowarn' options.txt /*'nowarn'* +'nowb' options.txt /*'nowb'* +'noweirdinvert' options.txt /*'noweirdinvert'* +'nowfh' options.txt /*'nowfh'* +'nowfw' options.txt /*'nowfw'* +'nowic' options.txt /*'nowic'* +'nowildignorecase' options.txt /*'nowildignorecase'* +'nowildmenu' options.txt /*'nowildmenu'* +'nowinfixheight' options.txt /*'nowinfixheight'* +'nowinfixwidth' options.txt /*'nowinfixwidth'* +'nowiv' options.txt /*'nowiv'* +'nowmnu' options.txt /*'nowmnu'* +'nowrap' options.txt /*'nowrap'* +'nowrapscan' options.txt /*'nowrapscan'* +'nowrite' options.txt /*'nowrite'* +'nowriteany' options.txt /*'nowriteany'* +'nowritebackup' options.txt /*'nowritebackup'* +'nows' options.txt /*'nows'* +'noxtermcodes' options.txt /*'noxtermcodes'* +'nrformats' options.txt /*'nrformats'* +'nu' options.txt /*'nu'* +'number' options.txt /*'number'* +'numberwidth' options.txt /*'numberwidth'* +'nuw' options.txt /*'nuw'* +'odev' options.txt /*'odev'* +'oft' options.txt /*'oft'* +'ofu' options.txt /*'ofu'* +'omnifunc' options.txt /*'omnifunc'* +'op' vi_diff.txt /*'op'* +'open' vi_diff.txt /*'open'* +'opendevice' options.txt /*'opendevice'* +'operatorfunc' options.txt /*'operatorfunc'* +'opfunc' options.txt /*'opfunc'* +'optimize' vi_diff.txt /*'optimize'* +'option' intro.txt /*'option'* +'osfiletype' options.txt /*'osfiletype'* +'pa' options.txt /*'pa'* +'packpath' options.txt /*'packpath'* +'para' options.txt /*'para'* +'paragraphs' options.txt /*'paragraphs'* +'paste' options.txt /*'paste'* +'pastetoggle' options.txt /*'pastetoggle'* +'patchexpr' options.txt /*'patchexpr'* +'patchmode' options.txt /*'patchmode'* +'path' options.txt /*'path'* +'pdev' options.txt /*'pdev'* +'penc' options.txt /*'penc'* +'perldll' options.txt /*'perldll'* +'pex' options.txt /*'pex'* +'pexpr' options.txt /*'pexpr'* +'pfn' options.txt /*'pfn'* +'ph' options.txt /*'ph'* +'pheader' options.txt /*'pheader'* +'pi' options.txt /*'pi'* +'pm' options.txt /*'pm'* +'pmbcs' options.txt /*'pmbcs'* +'pmbfn' options.txt /*'pmbfn'* +'popt' options.txt /*'popt'* +'pp' options.txt /*'pp'* +'preserveindent' options.txt /*'preserveindent'* +'previewheight' options.txt /*'previewheight'* +'previewpopup' options.txt /*'previewpopup'* +'previewwindow' options.txt /*'previewwindow'* +'printdevice' options.txt /*'printdevice'* +'printencoding' options.txt /*'printencoding'* +'printexpr' options.txt /*'printexpr'* +'printfont' options.txt /*'printfont'* +'printheader' options.txt /*'printheader'* +'printmbcharset' options.txt /*'printmbcharset'* +'printmbfont' options.txt /*'printmbfont'* +'printoptions' options.txt /*'printoptions'* +'prompt' options.txt /*'prompt'* +'pt' options.txt /*'pt'* +'pumheight' options.txt /*'pumheight'* +'pumwidth' options.txt /*'pumwidth'* +'pvh' options.txt /*'pvh'* +'pvp' options.txt /*'pvp'* +'pvw' options.txt /*'pvw'* +'pw' options.txt /*'pw'* +'pythondll' options.txt /*'pythondll'* +'pythonhome' options.txt /*'pythonhome'* +'pythonthreedll' options.txt /*'pythonthreedll'* +'pythonthreehome' options.txt /*'pythonthreehome'* +'pyx' options.txt /*'pyx'* +'pyxversion' options.txt /*'pyxversion'* +'qe' options.txt /*'qe'* +'qftf' options.txt /*'qftf'* +'quickfixtextfunc' options.txt /*'quickfixtextfunc'* +'quote motion.txt /*'quote* +'quoteescape' options.txt /*'quoteescape'* +'rdt' options.txt /*'rdt'* +'re' options.txt /*'re'* +'readonly' options.txt /*'readonly'* +'redraw' vi_diff.txt /*'redraw'* +'redrawtime' options.txt /*'redrawtime'* +'regexpengine' options.txt /*'regexpengine'* +'relativenumber' options.txt /*'relativenumber'* +'remap' options.txt /*'remap'* +'renderoptions' options.txt /*'renderoptions'* +'report' options.txt /*'report'* +'restorescreen' options.txt /*'restorescreen'* +'revins' options.txt /*'revins'* +'ri' options.txt /*'ri'* +'rightleft' options.txt /*'rightleft'* +'rightleftcmd' options.txt /*'rightleftcmd'* +'rl' options.txt /*'rl'* +'rlc' options.txt /*'rlc'* +'rnu' options.txt /*'rnu'* +'ro' options.txt /*'ro'* +'rop' options.txt /*'rop'* +'rs' options.txt /*'rs'* +'rtp' options.txt /*'rtp'* +'ru' options.txt /*'ru'* +'rubydll' options.txt /*'rubydll'* +'ruf' options.txt /*'ruf'* +'ruler' options.txt /*'ruler'* +'rulerformat' options.txt /*'rulerformat'* +'runtimepath' options.txt /*'runtimepath'* +'sb' options.txt /*'sb'* +'sbo' options.txt /*'sbo'* +'sbr' options.txt /*'sbr'* +'sc' options.txt /*'sc'* +'scb' options.txt /*'scb'* +'scf' options.txt /*'scf'* +'scl' options.txt /*'scl'* +'scr' options.txt /*'scr'* +'scroll' options.txt /*'scroll'* +'scrollbind' options.txt /*'scrollbind'* +'scrollfocus' options.txt /*'scrollfocus'* +'scrolljump' options.txt /*'scrolljump'* +'scrolloff' options.txt /*'scrolloff'* +'scrollopt' options.txt /*'scrollopt'* +'scs' options.txt /*'scs'* +'sect' options.txt /*'sect'* +'sections' options.txt /*'sections'* +'secure' options.txt /*'secure'* +'sel' options.txt /*'sel'* +'selection' options.txt /*'selection'* +'selectmode' options.txt /*'selectmode'* +'sessionoptions' options.txt /*'sessionoptions'* +'sft' options.txt /*'sft'* +'sh' options.txt /*'sh'* +'shcf' options.txt /*'shcf'* +'shell' options.txt /*'shell'* +'shellcmdflag' options.txt /*'shellcmdflag'* +'shellpipe' options.txt /*'shellpipe'* +'shellquote' options.txt /*'shellquote'* +'shellredir' options.txt /*'shellredir'* +'shellslash' options.txt /*'shellslash'* +'shelltemp' options.txt /*'shelltemp'* +'shelltype' options.txt /*'shelltype'* +'shellxescape' options.txt /*'shellxescape'* +'shellxquote' options.txt /*'shellxquote'* +'shiftround' options.txt /*'shiftround'* +'shiftwidth' options.txt /*'shiftwidth'* +'shm' options.txt /*'shm'* +'shortmess' options.txt /*'shortmess'* +'shortname' options.txt /*'shortname'* +'showbreak' options.txt /*'showbreak'* +'showcmd' options.txt /*'showcmd'* +'showcmdloc' options.txt /*'showcmdloc'* +'showfulltag' options.txt /*'showfulltag'* +'showmatch' options.txt /*'showmatch'* +'showmode' options.txt /*'showmode'* +'showtabline' options.txt /*'showtabline'* +'shq' options.txt /*'shq'* +'si' options.txt /*'si'* +'sidescroll' options.txt /*'sidescroll'* +'sidescrolloff' options.txt /*'sidescrolloff'* +'signcolumn' options.txt /*'signcolumn'* +'siso' options.txt /*'siso'* +'sj' options.txt /*'sj'* +'slm' options.txt /*'slm'* +'sloc' options.txt /*'sloc'* +'slow' vi_diff.txt /*'slow'* +'slowopen' vi_diff.txt /*'slowopen'* +'sm' options.txt /*'sm'* +'smartcase' options.txt /*'smartcase'* +'smartindent' options.txt /*'smartindent'* +'smarttab' options.txt /*'smarttab'* +'smc' options.txt /*'smc'* +'smd' options.txt /*'smd'* +'smoothscroll' options.txt /*'smoothscroll'* +'sms' options.txt /*'sms'* +'sn' options.txt /*'sn'* +'so' options.txt /*'so'* +'softtabstop' options.txt /*'softtabstop'* +'sol' options.txt /*'sol'* +'sourceany' vi_diff.txt /*'sourceany'* +'sp' options.txt /*'sp'* +'spc' options.txt /*'spc'* +'spell' options.txt /*'spell'* +'spellcapcheck' options.txt /*'spellcapcheck'* +'spellfile' options.txt /*'spellfile'* +'spelllang' options.txt /*'spelllang'* +'spelloptions' options.txt /*'spelloptions'* +'spellsuggest' options.txt /*'spellsuggest'* +'spf' options.txt /*'spf'* +'spk' options.txt /*'spk'* +'spl' options.txt /*'spl'* +'splitbelow' options.txt /*'splitbelow'* +'splitkeep' options.txt /*'splitkeep'* +'splitright' options.txt /*'splitright'* +'spo' options.txt /*'spo'* +'spr' options.txt /*'spr'* +'sps' options.txt /*'sps'* +'sr' options.txt /*'sr'* +'srr' options.txt /*'srr'* +'ss' options.txt /*'ss'* +'ssl' options.txt /*'ssl'* +'ssop' options.txt /*'ssop'* +'st' options.txt /*'st'* +'sta' options.txt /*'sta'* +'stal' options.txt /*'stal'* +'startofline' options.txt /*'startofline'* +'statusline' options.txt /*'statusline'* +'stl' options.txt /*'stl'* +'stmp' options.txt /*'stmp'* +'sts' options.txt /*'sts'* +'su' options.txt /*'su'* +'sua' options.txt /*'sua'* +'suffixes' options.txt /*'suffixes'* +'suffixesadd' options.txt /*'suffixesadd'* +'sw' options.txt /*'sw'* +'swapfile' options.txt /*'swapfile'* +'swapsync' options.txt /*'swapsync'* +'swb' options.txt /*'swb'* +'swf' options.txt /*'swf'* +'switchbuf' options.txt /*'switchbuf'* +'sws' options.txt /*'sws'* +'sxe' options.txt /*'sxe'* +'sxq' options.txt /*'sxq'* +'syn' options.txt /*'syn'* +'synmaxcol' options.txt /*'synmaxcol'* +'syntax' options.txt /*'syntax'* +'t_#2' term.txt /*'t_#2'* +'t_#4' term.txt /*'t_#4'* +'t_%1' term.txt /*'t_%1'* +'t_%i' term.txt /*'t_%i'* +'t_&8' term.txt /*'t_&8'* +'t_8b' term.txt /*'t_8b'* +'t_8f' term.txt /*'t_8f'* +'t_8u' term.txt /*'t_8u'* +'t_@7' term.txt /*'t_@7'* +'t_AB' term.txt /*'t_AB'* +'t_AF' term.txt /*'t_AF'* +'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_CS' term.txt /*'t_CS'* +'t_CV' term.txt /*'t_CV'* +'t_Ce' term.txt /*'t_Ce'* +'t_Co' term.txt /*'t_Co'* +'t_Cs' term.txt /*'t_Cs'* +'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_F1' term.txt /*'t_F1'* +'t_F2' term.txt /*'t_F2'* +'t_F3' term.txt /*'t_F3'* +'t_F4' term.txt /*'t_F4'* +'t_F5' term.txt /*'t_F5'* +'t_F6' term.txt /*'t_F6'* +'t_F7' term.txt /*'t_F7'* +'t_F8' term.txt /*'t_F8'* +'t_F9' term.txt /*'t_F9'* +'t_GP' term.txt /*'t_GP'* +'t_IE' term.txt /*'t_IE'* +'t_IS' term.txt /*'t_IS'* +'t_K1' term.txt /*'t_K1'* +'t_K3' term.txt /*'t_K3'* +'t_K4' term.txt /*'t_K4'* +'t_K5' term.txt /*'t_K5'* +'t_K6' term.txt /*'t_K6'* +'t_K7' term.txt /*'t_K7'* +'t_K8' term.txt /*'t_K8'* +'t_K9' term.txt /*'t_K9'* +'t_KA' term.txt /*'t_KA'* +'t_KB' term.txt /*'t_KB'* +'t_KC' term.txt /*'t_KC'* +'t_KD' term.txt /*'t_KD'* +'t_KE' term.txt /*'t_KE'* +'t_KF' term.txt /*'t_KF'* +'t_KG' term.txt /*'t_KG'* +'t_KH' term.txt /*'t_KH'* +'t_KI' term.txt /*'t_KI'* +'t_KJ' term.txt /*'t_KJ'* +'t_KK' term.txt /*'t_KK'* +'t_KL' term.txt /*'t_KL'* +'t_PE' term.txt /*'t_PE'* +'t_PS' term.txt /*'t_PS'* +'t_RB' term.txt /*'t_RB'* +'t_RC' term.txt /*'t_RC'* +'t_RF' term.txt /*'t_RF'* +'t_RI' term.txt /*'t_RI'* +'t_RK' term.txt /*'t_RK'* +'t_RS' term.txt /*'t_RS'* +'t_RT' term.txt /*'t_RT'* +'t_RV' term.txt /*'t_RV'* +'t_Ri' term.txt /*'t_Ri'* +'t_SC' term.txt /*'t_SC'* +'t_SH' term.txt /*'t_SH'* +'t_SI' term.txt /*'t_SI'* +'t_SR' term.txt /*'t_SR'* +'t_ST' term.txt /*'t_ST'* +'t_Sb' term.txt /*'t_Sb'* +'t_Sf' term.txt /*'t_Sf'* +'t_Si' term.txt /*'t_Si'* +'t_TE' term.txt /*'t_TE'* +'t_TI' term.txt /*'t_TI'* +'t_Te' term.txt /*'t_Te'* +'t_Ts' term.txt /*'t_Ts'* +'t_Us' term.txt /*'t_Us'* +'t_VS' term.txt /*'t_VS'* +'t_WP' term.txt /*'t_WP'* +'t_WS' term.txt /*'t_WS'* +'t_XM' term.txt /*'t_XM'* +'t_ZH' term.txt /*'t_ZH'* +'t_ZR' term.txt /*'t_ZR'* +'t_al' term.txt /*'t_al'* +'t_bc' term.txt /*'t_bc'* +'t_cd' term.txt /*'t_cd'* +'t_ce' term.txt /*'t_ce'* +'t_cl' term.txt /*'t_cl'* +'t_cm' term.txt /*'t_cm'* +'t_cs' term.txt /*'t_cs'* +'t_da' term.txt /*'t_da'* +'t_db' term.txt /*'t_db'* +'t_dl' term.txt /*'t_dl'* +'t_ds' term.txt /*'t_ds'* +'t_fd' term.txt /*'t_fd'* +'t_fe' term.txt /*'t_fe'* +'t_fs' term.txt /*'t_fs'* +'t_k1' term.txt /*'t_k1'* +'t_k2' term.txt /*'t_k2'* +'t_k3' term.txt /*'t_k3'* +'t_k4' term.txt /*'t_k4'* +'t_k5' term.txt /*'t_k5'* +'t_k6' term.txt /*'t_k6'* +'t_k7' term.txt /*'t_k7'* +'t_k8' term.txt /*'t_k8'* +'t_k9' term.txt /*'t_k9'* +'t_k;' term.txt /*'t_k;'* +'t_kB' term.txt /*'t_kB'* +'t_kD' term.txt /*'t_kD'* +'t_kI' term.txt /*'t_kI'* +'t_kN' term.txt /*'t_kN'* +'t_kP' term.txt /*'t_kP'* +'t_kb' term.txt /*'t_kb'* +'t_kd' term.txt /*'t_kd'* +'t_ke' term.txt /*'t_ke'* +'t_kh' term.txt /*'t_kh'* +'t_kl' term.txt /*'t_kl'* +'t_kr' term.txt /*'t_kr'* +'t_ks' term.txt /*'t_ks'* +'t_ku' term.txt /*'t_ku'* +'t_le' term.txt /*'t_le'* +'t_mb' term.txt /*'t_mb'* +'t_md' term.txt /*'t_md'* +'t_me' term.txt /*'t_me'* +'t_mr' term.txt /*'t_mr'* +'t_ms' term.txt /*'t_ms'* +'t_nd' term.txt /*'t_nd'* +'t_op' term.txt /*'t_op'* +'t_se' term.txt /*'t_se'* +'t_so' term.txt /*'t_so'* +'t_sr' term.txt /*'t_sr'* +'t_star7' term.txt /*'t_star7'* +'t_te' term.txt /*'t_te'* +'t_ti' term.txt /*'t_ti'* +'t_ts' term.txt /*'t_ts'* +'t_u7' term.txt /*'t_u7'* +'t_ue' term.txt /*'t_ue'* +'t_us' term.txt /*'t_us'* +'t_ut' term.txt /*'t_ut'* +'t_vb' term.txt /*'t_vb'* +'t_ve' term.txt /*'t_ve'* +'t_vi' term.txt /*'t_vi'* +'t_vs' term.txt /*'t_vs'* +'t_xn' term.txt /*'t_xn'* +'t_xs' term.txt /*'t_xs'* +'ta' options.txt /*'ta'* +'tabline' options.txt /*'tabline'* +'tabpagemax' options.txt /*'tabpagemax'* +'tabstop' options.txt /*'tabstop'* +'tag' options.txt /*'tag'* +'tagbsearch' options.txt /*'tagbsearch'* +'tagcase' options.txt /*'tagcase'* +'tagfunc' options.txt /*'tagfunc'* +'taglength' options.txt /*'taglength'* +'tagrelative' options.txt /*'tagrelative'* +'tags' options.txt /*'tags'* +'tagstack' options.txt /*'tagstack'* +'tal' options.txt /*'tal'* +'tb' options.txt /*'tb'* +'tbi' options.txt /*'tbi'* +'tbidi' options.txt /*'tbidi'* +'tbis' options.txt /*'tbis'* +'tbs' options.txt /*'tbs'* +'tc' options.txt /*'tc'* +'tcldll' options.txt /*'tcldll'* +'tenc' options.txt /*'tenc'* +'term' options.txt /*'term'* +'termbidi' options.txt /*'termbidi'* +'termencoding' options.txt /*'termencoding'* +'termguicolors' options.txt /*'termguicolors'* +'termwinkey' options.txt /*'termwinkey'* +'termwinscroll' options.txt /*'termwinscroll'* +'termwinsize' options.txt /*'termwinsize'* +'termwintype' options.txt /*'termwintype'* +'terse' options.txt /*'terse'* +'textauto' options.txt /*'textauto'* +'textmode' options.txt /*'textmode'* +'textwidth' options.txt /*'textwidth'* +'tf' options.txt /*'tf'* +'tfu' options.txt /*'tfu'* +'tgc' options.txt /*'tgc'* +'tgst' options.txt /*'tgst'* +'thesaurus' options.txt /*'thesaurus'* +'thesaurusfunc' options.txt /*'thesaurusfunc'* +'tildeop' options.txt /*'tildeop'* +'timeout' options.txt /*'timeout'* +'timeoutlen' options.txt /*'timeoutlen'* +'title' options.txt /*'title'* +'titlelen' options.txt /*'titlelen'* +'titleold' options.txt /*'titleold'* +'titlestring' options.txt /*'titlestring'* +'tl' options.txt /*'tl'* +'tm' options.txt /*'tm'* +'to' options.txt /*'to'* +'toolbar' options.txt /*'toolbar'* +'toolbariconsize' options.txt /*'toolbariconsize'* +'top' options.txt /*'top'* +'tpm' options.txt /*'tpm'* +'tr' options.txt /*'tr'* +'ts' options.txt /*'ts'* +'tsl' options.txt /*'tsl'* +'tsr' options.txt /*'tsr'* +'tsrfu' options.txt /*'tsrfu'* +'ttimeout' options.txt /*'ttimeout'* +'ttimeoutlen' options.txt /*'ttimeoutlen'* +'ttm' options.txt /*'ttm'* +'tty' options.txt /*'tty'* +'ttybuiltin' options.txt /*'ttybuiltin'* +'ttyfast' options.txt /*'ttyfast'* +'ttym' options.txt /*'ttym'* +'ttymouse' options.txt /*'ttymouse'* +'ttyscroll' options.txt /*'ttyscroll'* +'ttytype' options.txt /*'ttytype'* +'tw' options.txt /*'tw'* +'twk' options.txt /*'twk'* +'tws' options.txt /*'tws'* +'twsl' options.txt /*'twsl'* +'twt' options.txt /*'twt'* +'tx' options.txt /*'tx'* +'uc' options.txt /*'uc'* +'udf' options.txt /*'udf'* +'udir' options.txt /*'udir'* +'ul' options.txt /*'ul'* +'undodir' options.txt /*'undodir'* +'undofile' options.txt /*'undofile'* +'undolevels' options.txt /*'undolevels'* +'undoreload' options.txt /*'undoreload'* +'updatecount' options.txt /*'updatecount'* +'updatetime' options.txt /*'updatetime'* +'ur' options.txt /*'ur'* +'ut' options.txt /*'ut'* +'varsofttabstop' options.txt /*'varsofttabstop'* +'vartabstop' options.txt /*'vartabstop'* +'vb' options.txt /*'vb'* +'vbs' options.txt /*'vbs'* +'vdir' options.txt /*'vdir'* +'ve' options.txt /*'ve'* +'verbose' options.txt /*'verbose'* +'verbosefile' options.txt /*'verbosefile'* +'vfile' options.txt /*'vfile'* +'vi' options.txt /*'vi'* +'viewdir' options.txt /*'viewdir'* +'viewoptions' options.txt /*'viewoptions'* +'vif' options.txt /*'vif'* +'viminfo' options.txt /*'viminfo'* +'viminfofile' options.txt /*'viminfofile'* +'virtualedit' options.txt /*'virtualedit'* +'visualbell' options.txt /*'visualbell'* +'vop' options.txt /*'vop'* +'vsts' options.txt /*'vsts'* +'vts' options.txt /*'vts'* +'w1200' vi_diff.txt /*'w1200'* +'w300' vi_diff.txt /*'w300'* +'w9600' vi_diff.txt /*'w9600'* +'wa' options.txt /*'wa'* +'wak' options.txt /*'wak'* +'warn' options.txt /*'warn'* +'wb' options.txt /*'wb'* +'wc' options.txt /*'wc'* +'wcm' options.txt /*'wcm'* +'wcr' options.txt /*'wcr'* +'wd' options.txt /*'wd'* +'weirdinvert' options.txt /*'weirdinvert'* +'wfh' options.txt /*'wfh'* +'wfw' options.txt /*'wfw'* +'wh' options.txt /*'wh'* +'whichwrap' options.txt /*'whichwrap'* +'wi' options.txt /*'wi'* +'wic' options.txt /*'wic'* +'wig' options.txt /*'wig'* +'wildchar' options.txt /*'wildchar'* +'wildcharm' options.txt /*'wildcharm'* +'wildignore' options.txt /*'wildignore'* +'wildignorecase' options.txt /*'wildignorecase'* +'wildmenu' options.txt /*'wildmenu'* +'wildmode' options.txt /*'wildmode'* +'wildoptions' options.txt /*'wildoptions'* +'wim' options.txt /*'wim'* +'winaltkeys' options.txt /*'winaltkeys'* +'wincolor' options.txt /*'wincolor'* +'window' options.txt /*'window'* +'winfixheight' options.txt /*'winfixheight'* +'winfixwidth' options.txt /*'winfixwidth'* +'winheight' options.txt /*'winheight'* +'winminheight' options.txt /*'winminheight'* +'winminwidth' options.txt /*'winminwidth'* +'winptydll' options.txt /*'winptydll'* +'winwidth' options.txt /*'winwidth'* +'wiv' options.txt /*'wiv'* +'wiw' options.txt /*'wiw'* +'wm' options.txt /*'wm'* +'wmh' options.txt /*'wmh'* +'wmnu' options.txt /*'wmnu'* +'wmw' options.txt /*'wmw'* +'wop' options.txt /*'wop'* +'wrap' options.txt /*'wrap'* +'wrapmargin' options.txt /*'wrapmargin'* +'wrapscan' options.txt /*'wrapscan'* +'write' options.txt /*'write'* +'writeany' options.txt /*'writeany'* +'writebackup' options.txt /*'writebackup'* +'writedelay' options.txt /*'writedelay'* +'ws' options.txt /*'ws'* +'ww' options.txt /*'ww'* +'xtermcodes' options.txt /*'xtermcodes'* +'{ motion.txt /*'{* +'} motion.txt /*'}* +( motion.txt /*(* +) motion.txt /*)* ++ motion.txt /*+* +++bad editing.txt /*++bad* +++bin editing.txt /*++bin* +++builtin_terms various.txt /*++builtin_terms* +++edit editing.txt /*++edit* +++enc editing.txt /*++enc* +++ff editing.txt /*++ff* +++nobin editing.txt /*++nobin* +++opt editing.txt /*++opt* ++ARP various.txt /*+ARP* ++GUI_Athena various.txt /*+GUI_Athena* ++GUI_GTK various.txt /*+GUI_GTK* ++GUI_Motif various.txt /*+GUI_Motif* ++GUI_Photon various.txt /*+GUI_Photon* ++GUI_neXtaw various.txt /*+GUI_neXtaw* ++X11 various.txt /*+X11* ++acl various.txt /*+acl* ++arabic various.txt /*+arabic* ++autochdir various.txt /*+autochdir* ++autocmd various.txt /*+autocmd* ++autoservername various.txt /*+autoservername* ++balloon_eval various.txt /*+balloon_eval* ++balloon_eval_term various.txt /*+balloon_eval_term* ++browse various.txt /*+browse* ++byte_offset various.txt /*+byte_offset* ++channel various.txt /*+channel* ++cindent various.txt /*+cindent* ++clientserver various.txt /*+clientserver* ++clipboard various.txt /*+clipboard* ++clipboard_working various.txt /*+clipboard_working* ++cmd editing.txt /*+cmd* ++cmdline_compl various.txt /*+cmdline_compl* ++cmdline_hist various.txt /*+cmdline_hist* ++cmdline_info various.txt /*+cmdline_info* ++cmdwin various.txt /*+cmdwin* ++comments various.txt /*+comments* ++conceal various.txt /*+conceal* ++cryptv various.txt /*+cryptv* ++cscope various.txt /*+cscope* ++cursorbind various.txt /*+cursorbind* ++cursorshape various.txt /*+cursorshape* ++debug various.txt /*+debug* ++dialog_con various.txt /*+dialog_con* ++dialog_con_gui various.txt /*+dialog_con_gui* ++dialog_gui various.txt /*+dialog_gui* ++diff various.txt /*+diff* ++digraphs various.txt /*+digraphs* ++directx various.txt /*+directx* ++dnd various.txt /*+dnd* ++emacs_tags various.txt /*+emacs_tags* ++eval various.txt /*+eval* ++ex_extra various.txt /*+ex_extra* ++extra_search various.txt /*+extra_search* ++farsi various.txt /*+farsi* ++feature-list various.txt /*+feature-list* ++file_in_path various.txt /*+file_in_path* ++find_in_path various.txt /*+find_in_path* ++float various.txt /*+float* ++folding various.txt /*+folding* ++footer various.txt /*+footer* ++fork various.txt /*+fork* ++gettext various.txt /*+gettext* ++hangul_input various.txt /*+hangul_input* ++iconv various.txt /*+iconv* ++iconv/dyn various.txt /*+iconv\/dyn* ++insert_expand various.txt /*+insert_expand* ++ipv6 various.txt /*+ipv6* ++job various.txt /*+job* ++jumplist various.txt /*+jumplist* ++keymap various.txt /*+keymap* ++lambda various.txt /*+lambda* ++langmap various.txt /*+langmap* ++libcall various.txt /*+libcall* ++linebreak various.txt /*+linebreak* ++lispindent various.txt /*+lispindent* ++listcmds various.txt /*+listcmds* ++localmap various.txt /*+localmap* ++lua various.txt /*+lua* ++lua/dyn various.txt /*+lua\/dyn* ++menu various.txt /*+menu* ++mksession various.txt /*+mksession* ++modify_fname various.txt /*+modify_fname* ++mouse various.txt /*+mouse* ++mouse_dec various.txt /*+mouse_dec* ++mouse_gpm various.txt /*+mouse_gpm* ++mouse_gpm/dyn various.txt /*+mouse_gpm\/dyn* ++mouse_jsbterm various.txt /*+mouse_jsbterm* ++mouse_netterm various.txt /*+mouse_netterm* ++mouse_pterm various.txt /*+mouse_pterm* ++mouse_sgr various.txt /*+mouse_sgr* ++mouse_sysmouse various.txt /*+mouse_sysmouse* ++mouse_urxvt various.txt /*+mouse_urxvt* ++mouse_xterm various.txt /*+mouse_xterm* ++mouseshape various.txt /*+mouseshape* ++multi_byte various.txt /*+multi_byte* ++multi_byte_ime various.txt /*+multi_byte_ime* ++multi_lang various.txt /*+multi_lang* ++mzscheme various.txt /*+mzscheme* ++mzscheme/dyn various.txt /*+mzscheme\/dyn* ++netbeans_intg various.txt /*+netbeans_intg* ++num64 various.txt /*+num64* ++ole various.txt /*+ole* ++packages various.txt /*+packages* ++path_extra various.txt /*+path_extra* ++perl various.txt /*+perl* ++perl/dyn various.txt /*+perl\/dyn* ++persistent_undo various.txt /*+persistent_undo* ++popupwin various.txt /*+popupwin* ++postscript various.txt /*+postscript* ++printer various.txt /*+printer* ++profile various.txt /*+profile* ++python various.txt /*+python* ++python/dyn various.txt /*+python\/dyn* ++python3 various.txt /*+python3* ++python3/dyn various.txt /*+python3\/dyn* ++python3/dyn-stable various.txt /*+python3\/dyn-stable* ++quickfix various.txt /*+quickfix* ++reltime various.txt /*+reltime* ++rightleft various.txt /*+rightleft* ++ruby various.txt /*+ruby* ++ruby/dyn various.txt /*+ruby\/dyn* ++scrollbind various.txt /*+scrollbind* ++signs various.txt /*+signs* ++smartindent various.txt /*+smartindent* ++sodium various.txt /*+sodium* ++sound various.txt /*+sound* ++spell various.txt /*+spell* ++startuptime various.txt /*+startuptime* ++statusline various.txt /*+statusline* ++sun_workshop various.txt /*+sun_workshop* ++syntax various.txt /*+syntax* ++system() various.txt /*+system()* ++tag_any_white various.txt /*+tag_any_white* ++tag_binary various.txt /*+tag_binary* ++tag_old_static various.txt /*+tag_old_static* ++tcl various.txt /*+tcl* ++tcl/dyn various.txt /*+tcl\/dyn* ++termguicolors various.txt /*+termguicolors* ++terminal various.txt /*+terminal* ++terminfo various.txt /*+terminfo* ++termresponse various.txt /*+termresponse* ++textobjects various.txt /*+textobjects* ++textprop various.txt /*+textprop* ++tgetent various.txt /*+tgetent* ++timers various.txt /*+timers* ++title various.txt /*+title* ++toolbar various.txt /*+toolbar* ++unix builtin.txt /*+unix* ++user_commands various.txt /*+user_commands* ++vartabs various.txt /*+vartabs* ++vertsplit various.txt /*+vertsplit* ++vim9script various.txt /*+vim9script* ++viminfo various.txt /*+viminfo* ++virtualedit various.txt /*+virtualedit* ++visual various.txt /*+visual* ++visualextra various.txt /*+visualextra* ++vreplace various.txt /*+vreplace* ++vtp various.txt /*+vtp* ++wildignore various.txt /*+wildignore* ++wildmenu various.txt /*+wildmenu* ++windows various.txt /*+windows* ++writebackup various.txt /*+writebackup* ++xattr various.txt /*+xattr* ++xfontset various.txt /*+xfontset* ++xim various.txt /*+xim* ++xpm various.txt /*+xpm* ++xpm_w32 various.txt /*+xpm_w32* ++xsmp various.txt /*+xsmp* ++xsmp_interact various.txt /*+xsmp_interact* ++xterm_clipboard various.txt /*+xterm_clipboard* ++xterm_save various.txt /*+xterm_save* +, motion.txt /*,* +- motion.txt /*-* +-+ starting.txt /*-+* +-+/ starting.txt /*-+\/* +-+c starting.txt /*-+c* +-+reverse gui_x11.txt /*-+reverse* +-+rv gui_x11.txt /*-+rv* +-- starting.txt /*--* +--- starting.txt /*---* +--clean starting.txt /*--clean* +--cmd starting.txt /*--cmd* +--echo-wid starting.txt /*--echo-wid* +--gui-dialog-file starting.txt /*--gui-dialog-file* +--help starting.txt /*--help* +--literal starting.txt /*--literal* +--log starting.txt /*--log* +--nofork starting.txt /*--nofork* +--noplugin starting.txt /*--noplugin* +--not-a-term starting.txt /*--not-a-term* +--remote remote.txt /*--remote* +--remote-expr remote.txt /*--remote-expr* +--remote-send remote.txt /*--remote-send* +--remote-silent remote.txt /*--remote-silent* +--remote-tab remote.txt /*--remote-tab* +--remote-tab-silent remote.txt /*--remote-tab-silent* +--remote-tab-wait remote.txt /*--remote-tab-wait* +--remote-tab-wait-silent remote.txt /*--remote-tab-wait-silent* +--remote-wait remote.txt /*--remote-wait* +--remote-wait-silent remote.txt /*--remote-wait-silent* +--role starting.txt /*--role* +--serverlist remote.txt /*--serverlist* +--servername remote.txt /*--servername* +--socketid starting.txt /*--socketid* +--startuptime starting.txt /*--startuptime* +--ttyfail starting.txt /*--ttyfail* +--version starting.txt /*--version* +--windowid starting.txt /*--windowid* +-> eval.txt /*->* +-? starting.txt /*-?* +-A starting.txt /*-A* +-C starting.txt /*-C* +-D starting.txt /*-D* +-E starting.txt /*-E* +-F starting.txt /*-F* +-H starting.txt /*-H* +-L starting.txt /*-L* +-M starting.txt /*-M* +-N starting.txt /*-N* +-O starting.txt /*-O* +-P starting.txt /*-P* +-R starting.txt /*-R* +-S starting.txt /*-S* +-T starting.txt /*-T* +-U starting.txt /*-U* +-V starting.txt /*-V* +-W starting.txt /*-W* +-X starting.txt /*-X* +-Z starting.txt /*-Z* +-b starting.txt /*-b* +-background gui_x11.txt /*-background* +-bg gui_x11.txt /*-bg* +-boldfont gui_x11.txt /*-boldfont* +-borderwidth gui_x11.txt /*-borderwidth* +-bw gui_x11.txt /*-bw* +-c starting.txt /*-c* +-d starting.txt /*-d* +-dev starting.txt /*-dev* +-display gui_x11.txt /*-display* +-e starting.txt /*-e* +-f starting.txt /*-f* +-fg gui_x11.txt /*-fg* +-file starting.txt /*-file* +-fn gui_x11.txt /*-fn* +-font gui_x11.txt /*-font* +-foreground gui_x11.txt /*-foreground* +-g starting.txt /*-g* +-geom gui_x11.txt /*-geom* +-geometry gui_x11.txt /*-geometry* +-geometry-example gui_x11.txt /*-geometry-example* +-gui gui_x11.txt /*-gui* +-h starting.txt /*-h* +-i starting.txt /*-i* +-iconic gui_x11.txt /*-iconic* +-italicfont gui_x11.txt /*-italicfont* +-l starting.txt /*-l* +-m starting.txt /*-m* +-menufont gui_x11.txt /*-menufont* +-menufontset gui_x11.txt /*-menufontset* +-menuheight gui_x11.txt /*-menuheight* +-mf gui_x11.txt /*-mf* +-mh gui_x11.txt /*-mh* +-n starting.txt /*-n* +-nb starting.txt /*-nb* +-o starting.txt /*-o* +-p starting.txt /*-p* +-q starting.txt /*-q* +-qf starting.txt /*-qf* +-r starting.txt /*-r* +-register if_ole.txt /*-register* +-reverse gui_x11.txt /*-reverse* +-rv gui_x11.txt /*-rv* +-s starting.txt /*-s* +-s-ex starting.txt /*-s-ex* +-scrollbarwidth gui_x11.txt /*-scrollbarwidth* +-silent if_ole.txt /*-silent* +-sw gui_x11.txt /*-sw* +-t starting.txt /*-t* +-tag starting.txt /*-tag* +-u starting.txt /*-u* +-ul gui_x11.txt /*-ul* +-unregister if_ole.txt /*-unregister* +-v starting.txt /*-v* +-vim starting.txt /*-vim* +-w starting.txt /*-w* +-w_nr starting.txt /*-w_nr* +-x starting.txt /*-x* +-xrm gui_x11.txt /*-xrm* +-y starting.txt /*-y* +. repeat.txt /*.* +... userfunc.txt /*...* +.Xdefaults gui_x11.txt /*.Xdefaults* +.aff spell.txt /*.aff* +.dic spell.txt /*.dic* +.exrc starting.txt /*.exrc* +.gvimrc gui.txt /*.gvimrc* +.netrwbook pi_netrw.txt /*.netrwbook* +.netrwhist pi_netrw.txt /*.netrwhist* +.vimrc starting.txt /*.vimrc* +/ pattern.txt /*\/* +/$ pattern.txt /*\/$* +/. pattern.txt /*\/.* +// version7.txt /*\/\/* +//; pattern.txt /*\/\/;* +/<CR> pattern.txt /*\/<CR>* +/[[. pattern.txt /*\/[[.* +/[[= pattern.txt /*\/[[=* +/[\n] pattern.txt /*\/[\\n]* +/[] pattern.txt /*\/[]* +/\ pattern.txt /*\/\\* +/\$ pattern.txt /*\/\\$* +/\%# pattern.txt /*\/\\%#* +/\%#= pattern.txt /*\/\\%#=* +/\%$ pattern.txt /*\/\\%$* +/\%'m pattern.txt /*\/\\%'m* +/\%( pattern.txt /*\/\\%(* +/\%(\) pattern.txt /*\/\\%(\\)* +/\%<'m pattern.txt /*\/\\%<'m* +/\%<c pattern.txt /*\/\\%<c* +/\%<l pattern.txt /*\/\\%<l* +/\%<v pattern.txt /*\/\\%<v* +/\%>'m pattern.txt /*\/\\%>'m* +/\%>c pattern.txt /*\/\\%>c* +/\%>l pattern.txt /*\/\\%>l* +/\%>v pattern.txt /*\/\\%>v* +/\%C pattern.txt /*\/\\%C* +/\%U pattern.txt /*\/\\%U* +/\%V pattern.txt /*\/\\%V* +/\%[] pattern.txt /*\/\\%[]* +/\%^ pattern.txt /*\/\\%^* +/\%c pattern.txt /*\/\\%c* +/\%d pattern.txt /*\/\\%d* +/\%l pattern.txt /*\/\\%l* +/\%o pattern.txt /*\/\\%o* +/\%u pattern.txt /*\/\\%u* +/\%v pattern.txt /*\/\\%v* +/\%x pattern.txt /*\/\\%x* +/\& pattern.txt /*\/\\&* +/\( pattern.txt /*\/\\(* +/\(\) pattern.txt /*\/\\(\\)* +/\) pattern.txt /*\/\\)* +/\+ pattern.txt /*\/\\+* +/\. pattern.txt /*\/\\.* +/\1 pattern.txt /*\/\\1* +/\2 pattern.txt /*\/\\2* +/\3 pattern.txt /*\/\\3* +/\9 pattern.txt /*\/\\9* +/\< pattern.txt /*\/\\<* +/\= pattern.txt /*\/\\=* +/\> pattern.txt /*\/\\>* +/\? pattern.txt /*\/\\?* +/\@! pattern.txt /*\/\\@!* +/\@<! pattern.txt /*\/\\@<!* +/\@<= pattern.txt /*\/\\@<=* +/\@= pattern.txt /*\/\\@=* +/\@> pattern.txt /*\/\\@>* +/\A pattern.txt /*\/\\A* +/\C pattern.txt /*\/\\C* +/\D pattern.txt /*\/\\D* +/\F pattern.txt /*\/\\F* +/\H pattern.txt /*\/\\H* +/\I pattern.txt /*\/\\I* +/\K pattern.txt /*\/\\K* +/\L pattern.txt /*\/\\L* +/\M pattern.txt /*\/\\M* +/\O pattern.txt /*\/\\O* +/\P pattern.txt /*\/\\P* +/\S pattern.txt /*\/\\S* +/\U pattern.txt /*\/\\U* +/\V pattern.txt /*\/\\V* +/\W pattern.txt /*\/\\W* +/\X pattern.txt /*\/\\X* +/\Z pattern.txt /*\/\\Z* +/\[] pattern.txt /*\/\\[]* +/\\ pattern.txt /*\/\\\\* +/\] pattern.txt /*\/\\]* +/\^ pattern.txt /*\/\\^* +/\_ pattern.txt /*\/\\_* +/\_$ pattern.txt /*\/\\_$* +/\_. pattern.txt /*\/\\_.* +/\_A pattern.txt /*\/\\_A* +/\_D pattern.txt /*\/\\_D* +/\_F pattern.txt /*\/\\_F* +/\_H pattern.txt /*\/\\_H* +/\_I pattern.txt /*\/\\_I* +/\_K pattern.txt /*\/\\_K* +/\_L pattern.txt /*\/\\_L* +/\_O pattern.txt /*\/\\_O* +/\_P pattern.txt /*\/\\_P* +/\_S pattern.txt /*\/\\_S* +/\_U pattern.txt /*\/\\_U* +/\_W pattern.txt /*\/\\_W* +/\_X pattern.txt /*\/\\_X* +/\_[] pattern.txt /*\/\\_[]* +/\_^ pattern.txt /*\/\\_^* +/\_a pattern.txt /*\/\\_a* +/\_d pattern.txt /*\/\\_d* +/\_f pattern.txt /*\/\\_f* +/\_h pattern.txt /*\/\\_h* +/\_i pattern.txt /*\/\\_i* +/\_k pattern.txt /*\/\\_k* +/\_l pattern.txt /*\/\\_l* +/\_o pattern.txt /*\/\\_o* +/\_p pattern.txt /*\/\\_p* +/\_s pattern.txt /*\/\\_s* +/\_u pattern.txt /*\/\\_u* +/\_w pattern.txt /*\/\\_w* +/\_x pattern.txt /*\/\\_x* +/\a pattern.txt /*\/\\a* +/\b pattern.txt /*\/\\b* +/\bar pattern.txt /*\/\\bar* +/\c pattern.txt /*\/\\c* +/\d pattern.txt /*\/\\d* +/\e pattern.txt /*\/\\e* +/\f pattern.txt /*\/\\f* +/\h pattern.txt /*\/\\h* +/\i pattern.txt /*\/\\i* +/\k pattern.txt /*\/\\k* +/\l pattern.txt /*\/\\l* +/\m pattern.txt /*\/\\m* +/\n pattern.txt /*\/\\n* +/\o pattern.txt /*\/\\o* +/\p pattern.txt /*\/\\p* +/\r pattern.txt /*\/\\r* +/\s pattern.txt /*\/\\s* +/\star pattern.txt /*\/\\star* +/\t pattern.txt /*\/\\t* +/\u pattern.txt /*\/\\u* +/\v pattern.txt /*\/\\v* +/\w pattern.txt /*\/\\w* +/\x pattern.txt /*\/\\x* +/\z( syntax.txt /*\/\\z(* +/\z(\) syntax.txt /*\/\\z(\\)* +/\z1 syntax.txt /*\/\\z1* +/\z2 syntax.txt /*\/\\z2* +/\z3 syntax.txt /*\/\\z3* +/\z4 syntax.txt /*\/\\z4* +/\z5 syntax.txt /*\/\\z5* +/\z6 syntax.txt /*\/\\z6* +/\z7 syntax.txt /*\/\\z7* +/\z8 syntax.txt /*\/\\z8* +/\z9 syntax.txt /*\/\\z9* +/\ze pattern.txt /*\/\\ze* +/\zs pattern.txt /*\/\\zs* +/\{ pattern.txt /*\/\\{* +/\{- pattern.txt /*\/\\{-* +/\~ pattern.txt /*\/\\~* +/^ pattern.txt /*\/^* +/_CTRL-G cmdline.txt /*\/_CTRL-G* +/_CTRL-L cmdline.txt /*\/_CTRL-L* +/_CTRL-T cmdline.txt /*\/_CTRL-T* +/atom pattern.txt /*\/atom* +/bar pattern.txt /*\/bar* +/branch pattern.txt /*\/branch* +/character-classes pattern.txt /*\/character-classes* +/collection pattern.txt /*\/collection* +/concat pattern.txt /*\/concat* +/dyn various.txt /*\/dyn* +/ignorecase pattern.txt /*\/ignorecase* +/magic pattern.txt /*\/magic* +/multi pattern.txt /*\/multi* +/ordinary-atom pattern.txt /*\/ordinary-atom* +/pattern pattern.txt /*\/pattern* +/piece pattern.txt /*\/piece* +/star pattern.txt /*\/star* +/zero-width pattern.txt /*\/zero-width* +/~ pattern.txt /*\/~* +0 motion.txt /*0* +01.1 usr_01.txt /*01.1* +01.2 usr_01.txt /*01.2* +01.3 usr_01.txt /*01.3* +01.4 usr_01.txt /*01.4* +02.1 usr_02.txt /*02.1* +02.2 usr_02.txt /*02.2* +02.3 usr_02.txt /*02.3* +02.4 usr_02.txt /*02.4* +02.5 usr_02.txt /*02.5* +02.6 usr_02.txt /*02.6* +02.7 usr_02.txt /*02.7* +02.8 usr_02.txt /*02.8* +03.1 usr_03.txt /*03.1* +03.10 usr_03.txt /*03.10* +03.2 usr_03.txt /*03.2* +03.3 usr_03.txt /*03.3* +03.4 usr_03.txt /*03.4* +03.5 usr_03.txt /*03.5* +03.6 usr_03.txt /*03.6* +03.7 usr_03.txt /*03.7* +03.8 usr_03.txt /*03.8* +03.9 usr_03.txt /*03.9* +04.1 usr_04.txt /*04.1* +04.10 usr_04.txt /*04.10* +04.2 usr_04.txt /*04.2* +04.3 usr_04.txt /*04.3* +04.4 usr_04.txt /*04.4* +04.5 usr_04.txt /*04.5* +04.6 usr_04.txt /*04.6* +04.7 usr_04.txt /*04.7* +04.8 usr_04.txt /*04.8* +04.9 usr_04.txt /*04.9* +05.1 usr_05.txt /*05.1* +05.2 usr_05.txt /*05.2* +05.3 usr_05.txt /*05.3* +05.4 usr_05.txt /*05.4* +05.5 usr_05.txt /*05.5* +05.6 usr_05.txt /*05.6* +05.7 usr_05.txt /*05.7* +05.8 usr_05.txt /*05.8* +05.9 usr_05.txt /*05.9* +06.1 usr_06.txt /*06.1* +06.2 usr_06.txt /*06.2* +06.3 usr_06.txt /*06.3* +06.4 usr_06.txt /*06.4* +06.5 usr_06.txt /*06.5* +06.6 usr_06.txt /*06.6* +07.1 usr_07.txt /*07.1* +07.2 usr_07.txt /*07.2* +07.3 usr_07.txt /*07.3* +07.4 usr_07.txt /*07.4* +07.5 usr_07.txt /*07.5* +07.6 usr_07.txt /*07.6* +07.7 usr_07.txt /*07.7* +08.1 usr_08.txt /*08.1* +08.2 usr_08.txt /*08.2* +08.3 usr_08.txt /*08.3* +08.4 usr_08.txt /*08.4* +08.5 usr_08.txt /*08.5* +08.6 usr_08.txt /*08.6* +08.7 usr_08.txt /*08.7* +08.8 usr_08.txt /*08.8* +08.9 usr_08.txt /*08.9* +09.1 usr_09.txt /*09.1* +09.2 usr_09.txt /*09.2* +09.3 usr_09.txt /*09.3* +09.4 usr_09.txt /*09.4* +0o eval.txt /*0o* +0x eval.txt /*0x* +10.1 usr_10.txt /*10.1* +10.2 usr_10.txt /*10.2* +10.3 usr_10.txt /*10.3* +10.4 usr_10.txt /*10.4* +10.5 usr_10.txt /*10.5* +10.6 usr_10.txt /*10.6* +10.7 usr_10.txt /*10.7* +10.8 usr_10.txt /*10.8* +10.9 usr_10.txt /*10.9* +11.1 usr_11.txt /*11.1* +11.2 usr_11.txt /*11.2* +11.3 usr_11.txt /*11.3* +11.4 usr_11.txt /*11.4* +12.1 usr_12.txt /*12.1* +12.2 usr_12.txt /*12.2* +12.3 usr_12.txt /*12.3* +12.4 usr_12.txt /*12.4* +12.5 usr_12.txt /*12.5* +12.6 usr_12.txt /*12.6* +12.7 usr_12.txt /*12.7* +12.8 usr_12.txt /*12.8* +1gD pattern.txt /*1gD* +1gd pattern.txt /*1gd* +20.1 usr_20.txt /*20.1* +20.2 usr_20.txt /*20.2* +20.3 usr_20.txt /*20.3* +20.4 usr_20.txt /*20.4* +20.5 usr_20.txt /*20.5* +21.1 usr_21.txt /*21.1* +21.2 usr_21.txt /*21.2* +21.3 usr_21.txt /*21.3* +21.4 usr_21.txt /*21.4* +21.5 usr_21.txt /*21.5* +21.6 usr_21.txt /*21.6* +22.1 usr_22.txt /*22.1* +22.2 usr_22.txt /*22.2* +22.3 usr_22.txt /*22.3* +22.4 usr_22.txt /*22.4* +23.1 usr_23.txt /*23.1* +23.2 usr_23.txt /*23.2* +23.3 usr_23.txt /*23.3* +23.4 usr_23.txt /*23.4* +23.5 usr_23.txt /*23.5* +24.1 usr_24.txt /*24.1* +24.10 usr_24.txt /*24.10* +24.2 usr_24.txt /*24.2* +24.3 usr_24.txt /*24.3* +24.4 usr_24.txt /*24.4* +24.5 usr_24.txt /*24.5* +24.6 usr_24.txt /*24.6* +24.7 usr_24.txt /*24.7* +24.8 usr_24.txt /*24.8* +24.9 usr_24.txt /*24.9* +25.1 usr_25.txt /*25.1* +25.2 usr_25.txt /*25.2* +25.3 usr_25.txt /*25.3* +25.4 usr_25.txt /*25.4* +25.5 usr_25.txt /*25.5* +26.1 usr_26.txt /*26.1* +26.2 usr_26.txt /*26.2* +26.3 usr_26.txt /*26.3* +26.4 usr_26.txt /*26.4* +27.1 usr_27.txt /*27.1* +27.2 usr_27.txt /*27.2* +27.3 usr_27.txt /*27.3* +27.4 usr_27.txt /*27.4* +27.5 usr_27.txt /*27.5* +27.6 usr_27.txt /*27.6* +27.7 usr_27.txt /*27.7* +27.8 usr_27.txt /*27.8* +27.9 usr_27.txt /*27.9* +28.1 usr_28.txt /*28.1* +28.10 usr_28.txt /*28.10* +28.2 usr_28.txt /*28.2* +28.3 usr_28.txt /*28.3* +28.4 usr_28.txt /*28.4* +28.5 usr_28.txt /*28.5* +28.6 usr_28.txt /*28.6* +28.7 usr_28.txt /*28.7* +28.8 usr_28.txt /*28.8* +28.9 usr_28.txt /*28.9* +29.1 usr_29.txt /*29.1* +29.2 usr_29.txt /*29.2* +29.3 usr_29.txt /*29.3* +29.4 usr_29.txt /*29.4* +29.5 usr_29.txt /*29.5* +2html.vim syntax.txt /*2html.vim* +30.1 usr_30.txt /*30.1* +30.2 usr_30.txt /*30.2* +30.3 usr_30.txt /*30.3* +30.4 usr_30.txt /*30.4* +30.5 usr_30.txt /*30.5* +30.6 usr_30.txt /*30.6* +31.1 usr_31.txt /*31.1* +31.2 usr_31.txt /*31.2* +31.3 usr_31.txt /*31.3* +31.4 usr_31.txt /*31.4* +31.5 usr_31.txt /*31.5* +32.1 usr_32.txt /*32.1* +32.2 usr_32.txt /*32.2* +32.3 usr_32.txt /*32.3* +32.4 usr_32.txt /*32.4* +40.1 usr_40.txt /*40.1* +40.2 usr_40.txt /*40.2* +40.3 usr_40.txt /*40.3* +41.1 usr_41.txt /*41.1* +41.10 usr_41.txt /*41.10* +41.11 usr_41.txt /*41.11* +41.12 usr_41.txt /*41.12* +41.2 usr_41.txt /*41.2* +41.3 usr_41.txt /*41.3* +41.4 usr_41.txt /*41.4* +41.5 usr_41.txt /*41.5* +41.6 usr_41.txt /*41.6* +41.7 usr_41.txt /*41.7* +41.8 usr_41.txt /*41.8* +41.9 usr_41.txt /*41.9* +42 usr_42.txt /*42* +42.1 usr_42.txt /*42.1* +42.2 usr_42.txt /*42.2* +42.3 usr_42.txt /*42.3* +42.4 usr_42.txt /*42.4* +43.1 usr_43.txt /*43.1* +43.2 usr_43.txt /*43.2* +44.1 usr_44.txt /*44.1* +44.10 usr_44.txt /*44.10* +44.11 usr_44.txt /*44.11* +44.12 usr_44.txt /*44.12* +44.2 usr_44.txt /*44.2* +44.3 usr_44.txt /*44.3* +44.4 usr_44.txt /*44.4* +44.5 usr_44.txt /*44.5* +44.6 usr_44.txt /*44.6* +44.7 usr_44.txt /*44.7* +44.8 usr_44.txt /*44.8* +44.9 usr_44.txt /*44.9* +45.1 usr_45.txt /*45.1* +45.2 usr_45.txt /*45.2* +45.3 usr_45.txt /*45.3* +45.4 usr_45.txt /*45.4* +45.5 usr_45.txt /*45.5* +50.1 usr_50.txt /*50.1* +50.2 usr_50.txt /*50.2* +50.3 usr_50.txt /*50.3* +51.1 usr_51.txt /*51.1* +51.2 usr_51.txt /*51.2* +51.3 usr_51.txt /*51.3* +51.4 usr_51.txt /*51.4* +52.1 usr_52.txt /*52.1* +52.2 usr_52.txt /*52.2* +52.3 usr_52.txt /*52.3* +52.4 usr_52.txt /*52.4* +52.5 usr_52.txt /*52.5* +8g8 various.txt /*8g8* +90.1 usr_90.txt /*90.1* +90.2 usr_90.txt /*90.2* +90.3 usr_90.txt /*90.3* +90.4 usr_90.txt /*90.4* +90.5 usr_90.txt /*90.5* +: cmdline.txt /*:* +:! various.txt /*:!* +:!! various.txt /*:!!* +:!cmd various.txt /*:!cmd* +:!start os_win32.txt /*:!start* +:# various.txt /*:#* +:#! various.txt /*:#!* +:$ cmdline.txt /*:$* +:% cmdline.txt /*:%* +:& change.txt /*:&* +:&& change.txt /*:&&* +:' cmdline.txt /*:'* +:++ vim9.txt /*:++* +:, cmdline.txt /*:,* +:-- vim9.txt /*:--* +:. cmdline.txt /*:.* +:/ cmdline.txt /*:\/* +:0file editing.txt /*:0file* +:2match pattern.txt /*:2match* +:3match pattern.txt /*:3match* +::. cmdline.txt /*::.* +::8 cmdline.txt /*::8* +::S cmdline.txt /*::S* +::e cmdline.txt /*::e* +::gs cmdline.txt /*::gs* +::h cmdline.txt /*::h* +::p cmdline.txt /*::p* +::r cmdline.txt /*::r* +::s cmdline.txt /*::s* +::t cmdline.txt /*::t* +::~ cmdline.txt /*::~* +:; cmdline.txt /*:;* +:< change.txt /*:<* +:<abuf> cmdline.txt /*:<abuf>* +:<afile> cmdline.txt /*:<afile>* +:<amatch> cmdline.txt /*:<amatch>* +:<cWORD> cmdline.txt /*:<cWORD>* +:<cexpr> cmdline.txt /*:<cexpr>* +:<cfile> cmdline.txt /*:<cfile>* +:<client> cmdline.txt /*:<client>* +:<cword> cmdline.txt /*:<cword>* +:<script> cmdline.txt /*:<script>* +:<sfile> cmdline.txt /*:<sfile>* +:<sflnum> cmdline.txt /*:<sflnum>* +:<slnum> cmdline.txt /*:<slnum>* +:<stack> cmdline.txt /*:<stack>* +:= various.txt /*:=* +:> change.txt /*:>* +:? cmdline.txt /*:?* +:@ repeat.txt /*:@* +:@: repeat.txt /*:@:* +:@@ repeat.txt /*:@@* +:AdaLines ft_ada.txt /*:AdaLines* +:AdaRainbow ft_ada.txt /*:AdaRainbow* +:AdaSpaces ft_ada.txt /*:AdaSpaces* +:AdaTagDir ft_ada.txt /*:AdaTagDir* +:AdaTagFile ft_ada.txt /*:AdaTagFile* +:AdaTypes ft_ada.txt /*:AdaTypes* +:Arguments terminal.txt /*:Arguments* +:Asm terminal.txt /*:Asm* +:Break terminal.txt /*:Break* +:Cargo ft_rust.txt /*:Cargo* +:Cbench ft_rust.txt /*:Cbench* +:Cbuild ft_rust.txt /*:Cbuild* +:Cclean ft_rust.txt /*:Cclean* +:Cdoc ft_rust.txt /*:Cdoc* +:Cfilter quickfix.txt /*:Cfilter* +:Cinit ft_rust.txt /*:Cinit* +:Cinstall ft_rust.txt /*:Cinstall* +:Clear terminal.txt /*:Clear* +:CompilerSet usr_51.txt /*:CompilerSet* +:ConTeXt ft_context.txt /*:ConTeXt* +:ConTeXtJobsStatus ft_context.txt /*:ConTeXtJobsStatus* +:ConTeXtLog ft_context.txt /*:ConTeXtLog* +:ConTeXtStopJobs ft_context.txt /*:ConTeXtStopJobs* +:Continue terminal.txt /*:Continue* +:Cpublish ft_rust.txt /*:Cpublish* +:Crun ft_rust.txt /*:Crun* +:Cruntarget ft_rust.txt /*:Cruntarget* +:Csearch ft_rust.txt /*:Csearch* +:Ctest ft_rust.txt /*:Ctest* +:Cupdate ft_rust.txt /*:Cupdate* +:DiffOrig diff.txt /*:DiffOrig* +:DoMatchParen pi_paren.txt /*:DoMatchParen* +:Down terminal.txt /*:Down* +:Evaluate terminal.txt /*:Evaluate* +:Explore pi_netrw.txt /*:Explore* +:Finish terminal.txt /*:Finish* +:FixBeginfigs ft_mp.txt /*:FixBeginfigs* +:Frame terminal.txt /*:Frame* +:GLVS pi_getscript.txt /*:GLVS* +:Gdb terminal.txt /*:Gdb* +:GetLatestVimScripts_dat pi_getscript.txt /*:GetLatestVimScripts_dat* +:GnatFind ft_ada.txt /*:GnatFind* +:GnatPretty ft_ada.txt /*:GnatPretty* +:GnatTags ft_ada.txt /*:GnatTags* +:Hexplore pi_netrw.txt /*:Hexplore* +:LP pi_logipat.txt /*:LP* +:LPE pi_logipat.txt /*:LPE* +:LPF pi_logipat.txt /*:LPF* +:Lexplore pi_netrw.txt /*:Lexplore* +:Lfilter quickfix.txt /*:Lfilter* +:LogiPat pi_logipat.txt /*:LogiPat* +:Man filetype.txt /*:Man* +:MkVimball pi_vimball.txt /*:MkVimball* +:N editing.txt /*:N* +:NetrwClean pi_netrw.txt /*:NetrwClean* +:Nexplore pi_netrw.txt /*:Nexplore* +:Next editing.txt /*:Next* +:NoMatchParen pi_paren.txt /*:NoMatchParen* +:Nr pi_netrw.txt /*:Nr* +:Nread pi_netrw.txt /*:Nread* +:Ns pi_netrw.txt /*:Ns* +:Nsource pi_netrw.txt /*:Nsource* +:Ntree pi_netrw.txt /*:Ntree* +:Nw pi_netrw.txt /*:Nw* +:Nwrite pi_netrw.txt /*:Nwrite* +:Over terminal.txt /*:Over* +:P various.txt /*:P* +:Pexplore pi_netrw.txt /*:Pexplore* +:Print various.txt /*:Print* +:Program terminal.txt /*:Program* +:Rexplore pi_netrw.txt /*:Rexplore* +:RmVimball pi_vimball.txt /*:RmVimball* +:Run terminal.txt /*:Run* +:RustEmitAsm ft_rust.txt /*:RustEmitAsm* +:RustEmitIr ft_rust.txt /*:RustEmitIr* +:RustExpand ft_rust.txt /*:RustExpand* +:RustFmt ft_rust.txt /*:RustFmt* +:RustFmtRange ft_rust.txt /*:RustFmtRange* +:RustInfo ft_rust.txt /*:RustInfo* +:RustInfoClipboard ft_rust.txt /*:RustInfoClipboard* +:RustInfoToFile ft_rust.txt /*:RustInfoToFile* +:RustPlay ft_rust.txt /*:RustPlay* +:RustRun ft_rust.txt /*:RustRun* +:RustTest ft_rust.txt /*:RustTest* +:Sexplore pi_netrw.txt /*:Sexplore* +:Source terminal.txt /*:Source* +:Step terminal.txt /*:Step* +:Stop terminal.txt /*:Stop* +:TOhtml syntax.txt /*:TOhtml* +:TarDiff pi_tar.txt /*:TarDiff* +:Tbreak terminal.txt /*:Tbreak* +:Termdebug terminal.txt /*:Termdebug* +:TermdebugCommand terminal.txt /*:TermdebugCommand* +:Texplore pi_netrw.txt /*:Texplore* +:Until terminal.txt /*:Until* +:Up terminal.txt /*:Up* +:UseVimball pi_vimball.txt /*:UseVimball* +:Var terminal.txt /*:Var* +:Vexplore pi_netrw.txt /*:Vexplore* +:VimballList pi_vimball.txt /*:VimballList* +:Vimuntar pi_tar.txt /*:Vimuntar* +:Winbar terminal.txt /*:Winbar* +:X editing.txt /*:X* +:XMLent insert.txt /*:XMLent* +:XMLns insert.txt /*:XMLns* +:[range] motion.txt /*:[range]* +:\bar cmdline.txt /*:\\bar* +:_! cmdline.txt /*:_!* +:_# cmdline.txt /*:_#* +:_## cmdline.txt /*:_##* +:_#0 cmdline.txt /*:_#0* +:_#< cmdline.txt /*:_#<* +:_#n cmdline.txt /*:_#n* +:_% cmdline.txt /*:_%* +:_%% cmdline.txt /*:_%%* +:_%%% cmdline.txt /*:_%%%* +:_%%0 cmdline.txt /*:_%%0* +:_%%< cmdline.txt /*:_%%<* +:_%%n cmdline.txt /*:_%%n* +:_%: cmdline.txt /*:_%:* +:_%< cmdline.txt /*:_%<* +:a insert.txt /*:a* +:ab map.txt /*:ab* +:abbreviate map.txt /*:abbreviate* +:abbreviate-<buffer> map.txt /*:abbreviate-<buffer>* +:abbreviate-local map.txt /*:abbreviate-local* +:abbreviate-verbose map.txt /*:abbreviate-verbose* +:abc map.txt /*:abc* +:abclear map.txt /*:abclear* +:abo windows.txt /*:abo* +:aboveleft windows.txt /*:aboveleft* +:abstract vim9class.txt /*:abstract* +:addd quickfix.txt /*:addd* +:al windows.txt /*:al* +:all windows.txt /*:all* +:am gui.txt /*:am* +:amenu gui.txt /*:amenu* +:an gui.txt /*:an* +:anoremenu gui.txt /*:anoremenu* +:append insert.txt /*:append* +:ar editing.txt /*:ar* +:arg editing.txt /*:arg* +:arga editing.txt /*:arga* +:argadd editing.txt /*:argadd* +:argd editing.txt /*:argd* +:argded editing.txt /*:argded* +:argdedupe editing.txt /*:argdedupe* +:argdelete editing.txt /*:argdelete* +:argdo editing.txt /*:argdo* +:arge editing.txt /*:arge* +:argedit editing.txt /*:argedit* +:argglobal editing.txt /*:argglobal* +:arglocal editing.txt /*:arglocal* +:args editing.txt /*:args* +:args_f editing.txt /*:args_f* +:args_f! editing.txt /*:args_f!* +:argu editing.txt /*:argu* +:argument editing.txt /*:argument* +:as various.txt /*:as* +:ascii various.txt /*:ascii* +:au autocmd.txt /*:au* +:aug autocmd.txt /*:aug* +:augroup autocmd.txt /*:augroup* +:augroup-delete autocmd.txt /*:augroup-delete* +:aun gui.txt /*:aun* +:aunmenu gui.txt /*:aunmenu* +:autocmd autocmd.txt /*:autocmd* +:autocmd-block autocmd.txt /*:autocmd-block* +:autocmd-verbose autocmd.txt /*:autocmd-verbose* +:b windows.txt /*:b* +:bN windows.txt /*:bN* +:bNext windows.txt /*:bNext* +:ba windows.txt /*:ba* +:bad windows.txt /*:bad* +:badd windows.txt /*:badd* +:ball windows.txt /*:ball* +:balt windows.txt /*:balt* +:bar cmdline.txt /*:bar* +:bd windows.txt /*:bd* +:bdel windows.txt /*:bdel* +:bdelete windows.txt /*:bdelete* +:be gui.txt /*:be* +:behave gui.txt /*:behave* +:bel windows.txt /*:bel* +:belowright windows.txt /*:belowright* +:bf windows.txt /*:bf* +:bfirst windows.txt /*:bfirst* +:bl windows.txt /*:bl* +:blast windows.txt /*:blast* +:bm windows.txt /*:bm* +:bmodified windows.txt /*:bmodified* +:bn windows.txt /*:bn* +:bnext windows.txt /*:bnext* +:bo windows.txt /*:bo* +:botright windows.txt /*:botright* +:bp windows.txt /*:bp* +:bprevious windows.txt /*:bprevious* +:br windows.txt /*:br* +:bre windows.txt /*:bre* +:brea eval.txt /*:brea* +:break eval.txt /*:break* +:breaka repeat.txt /*:breaka* +:breakadd repeat.txt /*:breakadd* +:breakd repeat.txt /*:breakd* +:breakdel repeat.txt /*:breakdel* +:breakl repeat.txt /*:breakl* +:breaklist repeat.txt /*:breaklist* +:brewind windows.txt /*:brewind* +:bro editing.txt /*:bro* +:browse editing.txt /*:browse* +:browse-set options.txt /*:browse-set* +:bu windows.txt /*:bu* +:buf windows.txt /*:buf* +:bufdo windows.txt /*:bufdo* +:buffer windows.txt /*:buffer* +:buffer-! windows.txt /*:buffer-!* +:buffers windows.txt /*:buffers* +:bun windows.txt /*:bun* +:bunload windows.txt /*:bunload* +:bw windows.txt /*:bw* +:bwipe windows.txt /*:bwipe* +:bwipeout windows.txt /*:bwipeout* +:c change.txt /*:c* +:cN quickfix.txt /*:cN* +:cNext quickfix.txt /*:cNext* +:cNf quickfix.txt /*:cNf* +:cNfile quickfix.txt /*:cNfile* +:ca map.txt /*:ca* +:cab map.txt /*:cab* +:cabbrev map.txt /*:cabbrev* +:cabc map.txt /*:cabc* +:cabclear map.txt /*:cabclear* +:cabo quickfix.txt /*:cabo* +:cabove quickfix.txt /*:cabove* +:cad quickfix.txt /*:cad* +:cadd quickfix.txt /*:cadd* +:caddbuffer quickfix.txt /*:caddbuffer* +:cadde quickfix.txt /*:cadde* +:caddexpr quickfix.txt /*:caddexpr* +:caddf quickfix.txt /*:caddf* +:caddfile quickfix.txt /*:caddfile* +:caf quickfix.txt /*:caf* +:cafter quickfix.txt /*:cafter* +:cal userfunc.txt /*:cal* +:call userfunc.txt /*:call* +:cat eval.txt /*:cat* +:catch eval.txt /*:catch* +:cb quickfix.txt /*:cb* +:cbe quickfix.txt /*:cbe* +:cbefore quickfix.txt /*:cbefore* +:cbel quickfix.txt /*:cbel* +:cbelow quickfix.txt /*:cbelow* +:cbo quickfix.txt /*:cbo* +:cbottom quickfix.txt /*:cbottom* +:cbuffer quickfix.txt /*:cbuffer* +:cc quickfix.txt /*:cc* +:ccl quickfix.txt /*:ccl* +:cclose quickfix.txt /*:cclose* +:cd editing.txt /*:cd* +:cd- editing.txt /*:cd-* +:cdo quickfix.txt /*:cdo* +:ce change.txt /*:ce* +:center change.txt /*:center* +:cex quickfix.txt /*:cex* +:cexpr quickfix.txt /*:cexpr* +:cf quickfix.txt /*:cf* +:cfdo quickfix.txt /*:cfdo* +:cfi quickfix.txt /*:cfi* +:cfile quickfix.txt /*:cfile* +:cfir quickfix.txt /*:cfir* +:cfirst quickfix.txt /*:cfirst* +:cg quickfix.txt /*:cg* +:cgetb quickfix.txt /*:cgetb* +:cgetbuffer quickfix.txt /*:cgetbuffer* +:cgete quickfix.txt /*:cgete* +:cgetexpr quickfix.txt /*:cgetexpr* +:cgetfile quickfix.txt /*:cgetfile* +:ch change.txt /*:ch* +:change change.txt /*:change* +:changes motion.txt /*:changes* +:chd editing.txt /*:chd* +:chdir editing.txt /*:chdir* +:che tagsrch.txt /*:che* +:chec tagsrch.txt /*:chec* +:check tagsrch.txt /*:check* +:checkpath tagsrch.txt /*:checkpath* +:checkt editing.txt /*:checkt* +:checktime editing.txt /*:checktime* +:chi quickfix.txt /*:chi* +:chistory quickfix.txt /*:chistory* +:cl quickfix.txt /*:cl* +:cla quickfix.txt /*:cla* +:class vim9class.txt /*:class* +:clast quickfix.txt /*:clast* +:cle motion.txt /*:cle* +:clearjumps motion.txt /*:clearjumps* +:clist quickfix.txt /*:clist* +:clo windows.txt /*:clo* +:close windows.txt /*:close* +:cm map.txt /*:cm* +:cmap map.txt /*:cmap* +:cmap_l map.txt /*:cmap_l* +:cmapc map.txt /*:cmapc* +:cmapclear map.txt /*:cmapclear* +:cme gui.txt /*:cme* +:cmenu gui.txt /*:cmenu* +:cn quickfix.txt /*:cn* +:cne quickfix.txt /*:cne* +:cnew quickfix.txt /*:cnew* +:cnewer quickfix.txt /*:cnewer* +:cnext quickfix.txt /*:cnext* +:cnf quickfix.txt /*:cnf* +:cnfile quickfix.txt /*:cnfile* +:cno map.txt /*:cno* +:cnor map.txt /*:cnor* +:cnorea map.txt /*:cnorea* +:cnoreabbrev map.txt /*:cnoreabbrev* +:cnoremap map.txt /*:cnoremap* +:cnoreme gui.txt /*:cnoreme* +:cnoremenu gui.txt /*:cnoremenu* +:co change.txt /*:co* +:col quickfix.txt /*:col* +:colder quickfix.txt /*:colder* +:colo syntax.txt /*:colo* +:colorscheme syntax.txt /*:colorscheme* +:com map.txt /*:com* +:comc map.txt /*:comc* +:comclear map.txt /*:comclear* +:command map.txt /*:command* +:command-addr map.txt /*:command-addr* +:command-bang map.txt /*:command-bang* +:command-bar map.txt /*:command-bar* +:command-buffer map.txt /*:command-buffer* +:command-complete map.txt /*:command-complete* +:command-completion map.txt /*:command-completion* +:command-completion-custom map.txt /*:command-completion-custom* +:command-completion-customlist map.txt /*:command-completion-customlist* +:command-count map.txt /*:command-count* +:command-keepscript map.txt /*:command-keepscript* +:command-modifiers map.txt /*:command-modifiers* +:command-nargs map.txt /*:command-nargs* +:command-range map.txt /*:command-range* +:command-register map.txt /*:command-register* +:command-repl map.txt /*:command-repl* +:command-verbose map.txt /*:command-verbose* +:comment cmdline.txt /*:comment* +:comp quickfix.txt /*:comp* +:compiler quickfix.txt /*:compiler* +:con eval.txt /*:con* +:conf editing.txt /*:conf* +:confirm editing.txt /*:confirm* +:cons eval.txt /*:cons* +:const eval.txt /*:const* +:continue eval.txt /*:continue* +:cope quickfix.txt /*:cope* +:copen quickfix.txt /*:copen* +:copy change.txt /*:copy* +:count_quit windows.txt /*:count_quit* +:cp quickfix.txt /*:cp* +:cpf quickfix.txt /*:cpf* +:cpfile quickfix.txt /*:cpfile* +:cprev quickfix.txt /*:cprev* +:cprevious quickfix.txt /*:cprevious* +:cq quickfix.txt /*:cq* +:cquit quickfix.txt /*:cquit* +:cr quickfix.txt /*:cr* +:crewind quickfix.txt /*:crewind* +:cs if_cscop.txt /*:cs* +:cscope if_cscop.txt /*:cscope* +:cstag if_cscop.txt /*:cstag* +:cu map.txt /*:cu* +:cun map.txt /*:cun* +:cuna map.txt /*:cuna* +:cunabbrev map.txt /*:cunabbrev* +:cunmap map.txt /*:cunmap* +:cunme gui.txt /*:cunme* +:cunmenu gui.txt /*:cunmenu* +:cw quickfix.txt /*:cw* +:cwindow quickfix.txt /*:cwindow* +:d change.txt /*:d* +:de change.txt /*:de* +:debug repeat.txt /*:debug* +:debug-name repeat.txt /*:debug-name* +:debugg repeat.txt /*:debugg* +:debuggreedy repeat.txt /*:debuggreedy* +:def vim9.txt /*:def* +:defc vim9.txt /*:defc* +:defcompile vim9.txt /*:defcompile* +:defer userfunc.txt /*:defer* +:del change.txt /*:del* +:delc map.txt /*:delc* +:delcommand map.txt /*:delcommand* +:delcr todo.txt /*:delcr* +:delete change.txt /*:delete* +:delf userfunc.txt /*:delf* +:delfunction userfunc.txt /*:delfunction* +:delm motion.txt /*:delm* +:delmarks motion.txt /*:delmarks* +:di change.txt /*:di* +:dif diff.txt /*:dif* +:diff diff.txt /*:diff* +:diffg diff.txt /*:diffg* +:diffget diff.txt /*:diffget* +:diffo diff.txt /*:diffo* +:diffoff diff.txt /*:diffoff* +:diffp diff.txt /*:diffp* +:diffpatch diff.txt /*:diffpatch* +:diffpu diff.txt /*:diffpu* +:diffput diff.txt /*:diffput* +:diffs diff.txt /*:diffs* +:diffsplit diff.txt /*:diffsplit* +:difft diff.txt /*:difft* +:diffthis diff.txt /*:diffthis* +:diffupdate diff.txt /*:diffupdate* +:dig digraph.txt /*:dig* +:digraphs digraph.txt /*:digraphs* +:dis change.txt /*:dis* +:disa vim9.txt /*:disa* +:disassemble vim9.txt /*:disassemble* +:display change.txt /*:display* +:dj tagsrch.txt /*:dj* +:djump tagsrch.txt /*:djump* +:dl change.txt /*:dl* +:dli tagsrch.txt /*:dli* +:dlist tagsrch.txt /*:dlist* +:do autocmd.txt /*:do* +:doau autocmd.txt /*:doau* +:doaut autocmd.txt /*:doaut* +:doautoa autocmd.txt /*:doautoa* +:doautoall autocmd.txt /*:doautoall* +:doautocmd autocmd.txt /*:doautocmd* +:dp change.txt /*:dp* +:dr windows.txt /*:dr* +:drop windows.txt /*:drop* +:ds tagsrch.txt /*:ds* +:dsearch tagsrch.txt /*:dsearch* +:dsp tagsrch.txt /*:dsp* +:dsplit tagsrch.txt /*:dsplit* +:e editing.txt /*:e* +:e# editing.txt /*:e#* +:ea undo.txt /*:ea* +:earlier undo.txt /*:earlier* +:ec eval.txt /*:ec* +:echo eval.txt /*:echo* +:echo-redraw eval.txt /*:echo-redraw* +:echoc eval.txt /*:echoc* +:echoconsole eval.txt /*:echoconsole* +:echoe eval.txt /*:echoe* +:echoerr eval.txt /*:echoerr* +:echoh eval.txt /*:echoh* +:echohl eval.txt /*:echohl* +:echom eval.txt /*:echom* +:echomsg eval.txt /*:echomsg* +:echon eval.txt /*:echon* +:echow eval.txt /*:echow* +:echowin eval.txt /*:echowin* +:echowindow eval.txt /*:echowindow* +:edit editing.txt /*:edit* +:edit! editing.txt /*:edit!* +:edit!_f editing.txt /*:edit!_f* +:edit_# editing.txt /*:edit_#* +:edit_f editing.txt /*:edit_f* +:el eval.txt /*:el* +:else eval.txt /*:else* +:elsei eval.txt /*:elsei* +:elseif eval.txt /*:elseif* +:em gui.txt /*:em* +:emenu gui.txt /*:emenu* +:en eval.txt /*:en* +:end eval.txt /*:end* +:endclass vim9class.txt /*:endclass* +:enddef vim9.txt /*:enddef* +:endenum vim9class.txt /*:endenum* +:endf userfunc.txt /*:endf* +:endfo eval.txt /*:endfo* +:endfor eval.txt /*:endfor* +:endfunction userfunc.txt /*:endfunction* +:endif eval.txt /*:endif* +:endinterface vim9class.txt /*:endinterface* +:endt eval.txt /*:endt* +:endtry eval.txt /*:endtry* +:endw eval.txt /*:endw* +:endwhile eval.txt /*:endwhile* +:ene editing.txt /*:ene* +:ene! editing.txt /*:ene!* +:enew editing.txt /*:enew* +:enew! editing.txt /*:enew!* +:enum vim9class.txt /*:enum* +:eval eval.txt /*:eval* +:ex editing.txt /*:ex* +:exe eval.txt /*:exe* +:exe-comment eval.txt /*:exe-comment* +:execute eval.txt /*:execute* +:exi editing.txt /*:exi* +:exit editing.txt /*:exit* +:exp vim9.txt /*:exp* +:export vim9.txt /*:export* +:exu helphelp.txt /*:exu* +:exusage helphelp.txt /*:exusage* +:f editing.txt /*:f* +:fi editing.txt /*:fi* +:file editing.txt /*:file* +:file_f editing.txt /*:file_f* +:filename editing.txt /*:filename* +:files windows.txt /*:files* +:filet filetype.txt /*:filet* +:filetype filetype.txt /*:filetype* +:filetype-indent-off filetype.txt /*:filetype-indent-off* +:filetype-indent-on filetype.txt /*:filetype-indent-on* +:filetype-off filetype.txt /*:filetype-off* +:filetype-overview filetype.txt /*:filetype-overview* +:filetype-plugin-off filetype.txt /*:filetype-plugin-off* +:filetype-plugin-on filetype.txt /*:filetype-plugin-on* +:filt various.txt /*:filt* +:filter various.txt /*:filter* +:fin editing.txt /*:fin* +:fina eval.txt /*:fina* +:final vim9.txt /*:final* +:finally eval.txt /*:finally* +:find editing.txt /*:find* +:fini repeat.txt /*:fini* +:finish repeat.txt /*:finish* +:fir editing.txt /*:fir* +:first editing.txt /*:first* +:fix options.txt /*:fix* +:fixdel options.txt /*:fixdel* +:fo fold.txt /*:fo* +:fold fold.txt /*:fold* +:foldc fold.txt /*:foldc* +:foldclose fold.txt /*:foldclose* +:foldd fold.txt /*:foldd* +:folddo fold.txt /*:folddo* +:folddoc fold.txt /*:folddoc* +:folddoclosed fold.txt /*:folddoclosed* +:folddoopen fold.txt /*:folddoopen* +:foldo fold.txt /*:foldo* +:foldopen fold.txt /*:foldopen* +:for eval.txt /*:for* +:fu userfunc.txt /*:fu* +:func-abort userfunc.txt /*:func-abort* +:func-closure userfunc.txt /*:func-closure* +:func-dict userfunc.txt /*:func-dict* +:func-range userfunc.txt /*:func-range* +:function userfunc.txt /*:function* +:function-verbose userfunc.txt /*:function-verbose* +:g repeat.txt /*:g* +:global repeat.txt /*:global* +:go motion.txt /*:go* +:goto motion.txt /*:goto* +:gr quickfix.txt /*:gr* +:grep quickfix.txt /*:grep* +:grepa quickfix.txt /*:grepa* +:grepadd quickfix.txt /*:grepadd* +:gu gui_x11.txt /*:gu* +:gui gui_x11.txt /*:gui* +:gv gui_x11.txt /*:gv* +:gvim gui_x11.txt /*:gvim* +:h helphelp.txt /*:h* +:ha print.txt /*:ha* +:hardcopy print.txt /*:hardcopy* +:help helphelp.txt /*:help* +:helpc helphelp.txt /*:helpc* +:helpclose helphelp.txt /*:helpclose* +:helpf helphelp.txt /*:helpf* +:helpfind helphelp.txt /*:helpfind* +:helpg helphelp.txt /*:helpg* +:helpgrep helphelp.txt /*:helpgrep* +:helpt helphelp.txt /*:helpt* +:helptags helphelp.txt /*:helptags* +:hi syntax.txt /*:hi* +:hi-clear syntax.txt /*:hi-clear* +:hi-default syntax.txt /*:hi-default* +:hi-link syntax.txt /*:hi-link* +:hi-normal syntax.txt /*:hi-normal* +:hi-normal-cterm syntax.txt /*:hi-normal-cterm* +:hide windows.txt /*:hide* +:highlight syntax.txt /*:highlight* +:highlight-default syntax.txt /*:highlight-default* +:highlight-link syntax.txt /*:highlight-link* +:highlight-normal syntax.txt /*:highlight-normal* +:highlight-verbose syntax.txt /*:highlight-verbose* +:his cmdline.txt /*:his* +:history cmdline.txt /*:history* +:history-indexing cmdline.txt /*:history-indexing* +:hor windows.txt /*:hor* +:horizontal windows.txt /*:horizontal* +:i insert.txt /*:i* +:ia map.txt /*:ia* +:iabbrev map.txt /*:iabbrev* +:iabc map.txt /*:iabc* +:iabclear map.txt /*:iabclear* +:if eval.txt /*:if* +:ij tagsrch.txt /*:ij* +:ijump tagsrch.txt /*:ijump* +:il tagsrch.txt /*:il* +:ilist tagsrch.txt /*:ilist* +:im map.txt /*:im* +:imap map.txt /*:imap* +:imap_l map.txt /*:imap_l* +:imapc map.txt /*:imapc* +:imapclear map.txt /*:imapclear* +:ime gui.txt /*:ime* +:imenu gui.txt /*:imenu* +:imp vim9.txt /*:imp* +:import vim9.txt /*:import* +:import-as vim9.txt /*:import-as* +:import-cycle vim9.txt /*:import-cycle* +:in insert.txt /*:in* +:index index.txt /*:index* +:ino map.txt /*:ino* +:inor map.txt /*:inor* +:inorea map.txt /*:inorea* +:inoreabbrev map.txt /*:inoreabbrev* +:inoremap map.txt /*:inoremap* +:inoreme gui.txt /*:inoreme* +:inoremenu gui.txt /*:inoremenu* +:insert insert.txt /*:insert* +:interface vim9class.txt /*:interface* +:intro starting.txt /*:intro* +:is tagsrch.txt /*:is* +:isearch tagsrch.txt /*:isearch* +:isp tagsrch.txt /*:isp* +:isplit tagsrch.txt /*:isplit* +:iu map.txt /*:iu* +:iuna map.txt /*:iuna* +:iunabbrev map.txt /*:iunabbrev* +:iunmap map.txt /*:iunmap* +:iunme gui.txt /*:iunme* +:iunmenu gui.txt /*:iunmenu* +:j change.txt /*:j* +:join change.txt /*:join* +:ju motion.txt /*:ju* +:jumps motion.txt /*:jumps* +:k motion.txt /*:k* +:kee motion.txt /*:kee* +:keep motion.txt /*:keep* +:keepa editing.txt /*:keepa* +:keepalt editing.txt /*:keepalt* +:keepj motion.txt /*:keepj* +:keepjumps motion.txt /*:keepjumps* +:keepmarks motion.txt /*:keepmarks* +:keepp cmdline.txt /*:keepp* +:keeppatterns cmdline.txt /*:keeppatterns* +:l various.txt /*:l* +:lN quickfix.txt /*:lN* +:lNext quickfix.txt /*:lNext* +:lNf quickfix.txt /*:lNf* +:lNfile quickfix.txt /*:lNfile* +:la editing.txt /*:la* +:lab quickfix.txt /*:lab* +:labove quickfix.txt /*:labove* +:lad quickfix.txt /*:lad* +:laddb quickfix.txt /*:laddb* +:laddbuffer quickfix.txt /*:laddbuffer* +:laddexpr quickfix.txt /*:laddexpr* +:laddf quickfix.txt /*:laddf* +:laddfile quickfix.txt /*:laddfile* +:laf quickfix.txt /*:laf* +:lafter quickfix.txt /*:lafter* +:lan mlang.txt /*:lan* +:lang mlang.txt /*:lang* +:language mlang.txt /*:language* +:last editing.txt /*:last* +:lat undo.txt /*:lat* +:later undo.txt /*:later* +:lb quickfix.txt /*:lb* +:lbe quickfix.txt /*:lbe* +:lbefore quickfix.txt /*:lbefore* +:lbel quickfix.txt /*:lbel* +:lbelow quickfix.txt /*:lbelow* +:lbo quickfix.txt /*:lbo* +:lbottom quickfix.txt /*:lbottom* +:lbuffer quickfix.txt /*:lbuffer* +:lc editing.txt /*:lc* +:lcd editing.txt /*:lcd* +:lcd- editing.txt /*:lcd-* +:lch editing.txt /*:lch* +:lchdir editing.txt /*:lchdir* +:lcl quickfix.txt /*:lcl* +:lclose quickfix.txt /*:lclose* +:lcs if_cscop.txt /*:lcs* +:lcscope if_cscop.txt /*:lcscope* +:ldo quickfix.txt /*:ldo* +:le change.txt /*:le* +:left change.txt /*:left* +:lefta windows.txt /*:lefta* +:leftabove windows.txt /*:leftabove* +:leg vim9.txt /*:leg* +:legacy vim9.txt /*:legacy* +:let eval.txt /*:let* +:let%= eval.txt /*:let%=* +:let+= eval.txt /*:let+=* +:let-$ eval.txt /*:let-$* +:let-& eval.txt /*:let-&* +:let-= eval.txt /*:let-=* +:let-@ eval.txt /*:let-@* +:let-environment eval.txt /*:let-environment* +:let-heredoc eval.txt /*:let-heredoc* +:let-option eval.txt /*:let-option* +:let-register eval.txt /*:let-register* +:let-unpack eval.txt /*:let-unpack* +:let..= eval.txt /*:let..=* +:let.= eval.txt /*:let.=* +:let/= eval.txt /*:let\/=* +:let=<< eval.txt /*:let=<<* +:letstar= eval.txt /*:letstar=* +:lex quickfix.txt /*:lex* +:lexpr quickfix.txt /*:lexpr* +:lf quickfix.txt /*:lf* +:lfdo quickfix.txt /*:lfdo* +:lfi quickfix.txt /*:lfi* +:lfile quickfix.txt /*:lfile* +:lfir quickfix.txt /*:lfir* +:lfirst quickfix.txt /*:lfirst* +:lg quickfix.txt /*:lg* +:lge quickfix.txt /*:lge* +:lgetb quickfix.txt /*:lgetb* +:lgetbuffer quickfix.txt /*:lgetbuffer* +:lgete quickfix.txt /*:lgete* +:lgetexpr quickfix.txt /*:lgetexpr* +:lgetfile quickfix.txt /*:lgetfile* +:lgr quickfix.txt /*:lgr* +:lgrep quickfix.txt /*:lgrep* +:lgrepa quickfix.txt /*:lgrepa* +:lgrepadd quickfix.txt /*:lgrepadd* +:lh helphelp.txt /*:lh* +:lhelpgrep helphelp.txt /*:lhelpgrep* +:lhi quickfix.txt /*:lhi* +:lhistory quickfix.txt /*:lhistory* +:list various.txt /*:list* +:ll quickfix.txt /*:ll* +:lla quickfix.txt /*:lla* +:llast quickfix.txt /*:llast* +:lli quickfix.txt /*:lli* +:llist quickfix.txt /*:llist* +:lm map.txt /*:lm* +:lma map.txt /*:lma* +:lmak quickfix.txt /*:lmak* +:lmake quickfix.txt /*:lmake* +:lmap map.txt /*:lmap* +:lmap_l map.txt /*:lmap_l* +:lmapc map.txt /*:lmapc* +:lmapclear map.txt /*:lmapclear* +:ln map.txt /*:ln* +:lne quickfix.txt /*:lne* +:lnew quickfix.txt /*:lnew* +:lnewer quickfix.txt /*:lnewer* +:lnext quickfix.txt /*:lnext* +:lnf quickfix.txt /*:lnf* +:lnfile quickfix.txt /*:lnfile* +:lnoremap map.txt /*:lnoremap* +:lo starting.txt /*:lo* +:loadk mbyte.txt /*:loadk* +:loadkeymap mbyte.txt /*:loadkeymap* +:loadview starting.txt /*:loadview* +:loc motion.txt /*:loc* +:lock motion.txt /*:lock* +:lockmarks motion.txt /*:lockmarks* +:lockv eval.txt /*:lockv* +:lockvar eval.txt /*:lockvar* +:lol quickfix.txt /*:lol* +:lolder quickfix.txt /*:lolder* +:lop quickfix.txt /*:lop* +:lopen quickfix.txt /*:lopen* +:lp quickfix.txt /*:lp* +:lpf quickfix.txt /*:lpf* +:lpfile quickfix.txt /*:lpfile* +:lprev quickfix.txt /*:lprev* +:lprevious quickfix.txt /*:lprevious* +:lr quickfix.txt /*:lr* +:lrewind quickfix.txt /*:lrewind* +:ls windows.txt /*:ls* +:lt tagsrch.txt /*:lt* +:ltag tagsrch.txt /*:ltag* +:lu map.txt /*:lu* +:lua if_lua.txt /*:lua* +:luado if_lua.txt /*:luado* +:luafile if_lua.txt /*:luafile* +:lunmap map.txt /*:lunmap* +:lv quickfix.txt /*:lv* +:lvimgrep quickfix.txt /*:lvimgrep* +:lvimgrepa quickfix.txt /*:lvimgrepa* +:lvimgrepadd quickfix.txt /*:lvimgrepadd* +:lw quickfix.txt /*:lw* +:lwindow quickfix.txt /*:lwindow* +:m change.txt /*:m* +:ma motion.txt /*:ma* +:mak quickfix.txt /*:mak* +:make quickfix.txt /*:make* +:make_makeprg quickfix.txt /*:make_makeprg* +:map map.txt /*:map* +:map! map.txt /*:map!* +:map-<buffer> map.txt /*:map-<buffer>* +:map-<expr> map.txt /*:map-<expr>* +:map-<nowait> map.txt /*:map-<nowait>* +:map-<script> map.txt /*:map-<script>* +:map-<silent> map.txt /*:map-<silent>* +:map-<special> map.txt /*:map-<special>* +:map-<unique> map.txt /*:map-<unique>* +:map-alt-keys map.txt /*:map-alt-keys* +:map-arguments map.txt /*:map-arguments* +:map-buffer map.txt /*:map-buffer* +:map-cmd map.txt /*:map-cmd* +:map-commands map.txt /*:map-commands* +:map-expression map.txt /*:map-expression* +:map-local map.txt /*:map-local* +:map-meta-keys map.txt /*:map-meta-keys* +:map-modes map.txt /*:map-modes* +:map-nowait map.txt /*:map-nowait* +:map-operator map.txt /*:map-operator* +:map-script map.txt /*:map-script* +:map-silent map.txt /*:map-silent* +:map-special map.txt /*:map-special* +:map-special-chars map.txt /*:map-special-chars* +:map-special-keys map.txt /*:map-special-keys* +:map-undo map.txt /*:map-undo* +:map-unique map.txt /*:map-unique* +:map-verbose map.txt /*:map-verbose* +:map_l map.txt /*:map_l* +:map_l! map.txt /*:map_l!* +:mapc map.txt /*:mapc* +:mapc! map.txt /*:mapc!* +:mapclear map.txt /*:mapclear* +:mapclear! map.txt /*:mapclear!* +:mark motion.txt /*:mark* +:marks motion.txt /*:marks* +:mat pattern.txt /*:mat* +:match pattern.txt /*:match* +:me gui.txt /*:me* +:menu gui.txt /*:menu* +:menu-<script> gui.txt /*:menu-<script>* +:menu-<silent> gui.txt /*:menu-<silent>* +:menu-<special> gui.txt /*:menu-<special>* +:menu-disable gui.txt /*:menu-disable* +:menu-enable gui.txt /*:menu-enable* +:menu-script gui.txt /*:menu-script* +:menu-silent gui.txt /*:menu-silent* +:menu-special gui.txt /*:menu-special* +:menut mlang.txt /*:menut* +:menutrans mlang.txt /*:menutrans* +:menutranslate mlang.txt /*:menutranslate* +:mes message.txt /*:mes* +:messages message.txt /*:messages* +:mk starting.txt /*:mk* +:mkexrc starting.txt /*:mkexrc* +:mks starting.txt /*:mks* +:mksession starting.txt /*:mksession* +:mksp spell.txt /*:mksp* +:mkspell spell.txt /*:mkspell* +:mkv starting.txt /*:mkv* +:mkvi starting.txt /*:mkvi* +:mkvie starting.txt /*:mkvie* +:mkview starting.txt /*:mkview* +:mkvimrc starting.txt /*:mkvimrc* +:mo change.txt /*:mo* +:mod term.txt /*:mod* +:mode term.txt /*:mode* +:move change.txt /*:move* +:mz if_mzsch.txt /*:mz* +:mzf if_mzsch.txt /*:mzf* +:mzfile if_mzsch.txt /*:mzfile* +:mzscheme if_mzsch.txt /*:mzscheme* +:n editing.txt /*:n* +:nbclose netbeans.txt /*:nbclose* +:nbkey netbeans.txt /*:nbkey* +:nbstart netbeans.txt /*:nbstart* +:ne editing.txt /*:ne* +:new windows.txt /*:new* +:next editing.txt /*:next* +:next_f editing.txt /*:next_f* +:nm map.txt /*:nm* +:nmap map.txt /*:nmap* +:nmap_l map.txt /*:nmap_l* +:nmapc map.txt /*:nmapc* +:nmapclear map.txt /*:nmapclear* +:nme gui.txt /*:nme* +:nmenu gui.txt /*:nmenu* +:nn map.txt /*:nn* +:nnoremap map.txt /*:nnoremap* +:nnoreme gui.txt /*:nnoreme* +:nnoremenu gui.txt /*:nnoremenu* +:no map.txt /*:no* +:no! map.txt /*:no!* +:noa autocmd.txt /*:noa* +:noautocmd autocmd.txt /*:noautocmd* +:noh pattern.txt /*:noh* +:nohlsearch pattern.txt /*:nohlsearch* +:nor map.txt /*:nor* +:nore map.txt /*:nore* +:norea map.txt /*:norea* +:noreabbrev map.txt /*:noreabbrev* +:norem map.txt /*:norem* +:noremap map.txt /*:noremap* +:noremap! map.txt /*:noremap!* +:noreme gui.txt /*:noreme* +:noremenu gui.txt /*:noremenu* +:norm various.txt /*:norm* +:normal various.txt /*:normal* +:normal-range various.txt /*:normal-range* +:nos recover.txt /*:nos* +:noswapfile recover.txt /*:noswapfile* +:nu various.txt /*:nu* +:number various.txt /*:number* +:nun map.txt /*:nun* +:nunmap map.txt /*:nunmap* +:nunme gui.txt /*:nunme* +:nunmenu gui.txt /*:nunmenu* +:o vi_diff.txt /*:o* +:ol starting.txt /*:ol* +:oldfiles starting.txt /*:oldfiles* +:om map.txt /*:om* +:omap map.txt /*:omap* +:omap_l map.txt /*:omap_l* +:omapc map.txt /*:omapc* +:omapclear map.txt /*:omapclear* +:ome gui.txt /*:ome* +:omenu gui.txt /*:omenu* +:on windows.txt /*:on* +:only windows.txt /*:only* +:ono map.txt /*:ono* +:onoremap map.txt /*:onoremap* +:onoreme gui.txt /*:onoreme* +:onoremenu gui.txt /*:onoremenu* +:op vi_diff.txt /*:op* +:open vi_diff.txt /*:open* +:opt options.txt /*:opt* +:options options.txt /*:options* +:ou map.txt /*:ou* +:ounmap map.txt /*:ounmap* +:ounme gui.txt /*:ounme* +:ounmenu gui.txt /*:ounmenu* +:ownsyntax syntax.txt /*:ownsyntax* +:p various.txt /*:p* +:pa repeat.txt /*:pa* +:packadd repeat.txt /*:packadd* +:packl repeat.txt /*:packl* +:packloadall repeat.txt /*:packloadall* +:pc windows.txt /*:pc* +:pclose windows.txt /*:pclose* +:pe if_perl.txt /*:pe* +:ped windows.txt /*:ped* +:pedit windows.txt /*:pedit* +:perl if_perl.txt /*:perl* +:perld if_perl.txt /*:perld* +:perldo if_perl.txt /*:perldo* +:po tagsrch.txt /*:po* +:pop tagsrch.txt /*:pop* +:popu gui.txt /*:popu* +:popup gui.txt /*:popup* +:pp windows.txt /*:pp* +:ppop windows.txt /*:ppop* +:pr various.txt /*:pr* +:pre recover.txt /*:pre* +:preserve recover.txt /*:preserve* +:prev editing.txt /*:prev* +:previous editing.txt /*:previous* +:print various.txt /*:print* +:pro change.txt /*:pro* +:prof repeat.txt /*:prof* +:profd repeat.txt /*:profd* +:profdel repeat.txt /*:profdel* +:profile repeat.txt /*:profile* +:promptfind change.txt /*:promptfind* +:promptr change.txt /*:promptr* +:promptrepl change.txt /*:promptrepl* +:ps windows.txt /*:ps* +:psearch windows.txt /*:psearch* +:ptN tagsrch.txt /*:ptN* +:ptNext tagsrch.txt /*:ptNext* +:pta windows.txt /*:pta* +:ptag windows.txt /*:ptag* +:ptf tagsrch.txt /*:ptf* +:ptfirst tagsrch.txt /*:ptfirst* +:ptj tagsrch.txt /*:ptj* +:ptjump tagsrch.txt /*:ptjump* +:ptl tagsrch.txt /*:ptl* +:ptlast tagsrch.txt /*:ptlast* +:ptn tagsrch.txt /*:ptn* +:ptnext tagsrch.txt /*:ptnext* +:ptp tagsrch.txt /*:ptp* +:ptprevious tagsrch.txt /*:ptprevious* +:ptr tagsrch.txt /*:ptr* +:ptrewind tagsrch.txt /*:ptrewind* +:pts tagsrch.txt /*:pts* +:ptselect tagsrch.txt /*:ptselect* +:pu change.txt /*:pu* +:public vim9class.txt /*:public* +:put change.txt /*:put* +:pw editing.txt /*:pw* +:pwd editing.txt /*:pwd* +:pwd-verbose editing.txt /*:pwd-verbose* +:py if_pyth.txt /*:py* +:py3 if_pyth.txt /*:py3* +:py3do if_pyth.txt /*:py3do* +:py3file if_pyth.txt /*:py3file* +:pydo if_pyth.txt /*:pydo* +:pyf if_pyth.txt /*:pyf* +:pyfile if_pyth.txt /*:pyfile* +:python if_pyth.txt /*:python* +:python3 if_pyth.txt /*:python3* +:pythonx if_pyth.txt /*:pythonx* +:pyx if_pyth.txt /*:pyx* +:pyxdo if_pyth.txt /*:pyxdo* +:pyxfile if_pyth.txt /*:pyxfile* +:q editing.txt /*:q* +:qa editing.txt /*:qa* +:qall editing.txt /*:qall* +:quit editing.txt /*:quit* +:quita editing.txt /*:quita* +:quitall editing.txt /*:quitall* +:quote cmdline.txt /*:quote* +:r insert.txt /*:r* +:r! insert.txt /*:r!* +:range cmdline.txt /*:range* +:range! change.txt /*:range!* +:range-closed-fold cmdline.txt /*:range-closed-fold* +:range-offset cmdline.txt /*:range-offset* +:range-pattern cmdline.txt /*:range-pattern* +:re insert.txt /*:re* +:read insert.txt /*:read* +:read! insert.txt /*:read!* +:rec recover.txt /*:rec* +:recover recover.txt /*:recover* +:recover-crypt recover.txt /*:recover-crypt* +:red undo.txt /*:red* +:redi various.txt /*:redi* +:redir various.txt /*:redir* +:redo undo.txt /*:redo* +:redr various.txt /*:redr* +:redraw various.txt /*:redraw* +:redraws various.txt /*:redraws* +:redrawstatus various.txt /*:redrawstatus* +:redrawt various.txt /*:redrawt* +:redrawtabline various.txt /*:redrawtabline* +:reg change.txt /*:reg* +:registers change.txt /*:registers* +:res windows.txt /*:res* +:resize windows.txt /*:resize* +:ret change.txt /*:ret* +:retab change.txt /*:retab* +:retab! change.txt /*:retab!* +:retu userfunc.txt /*:retu* +:return userfunc.txt /*:return* +:rew editing.txt /*:rew* +:rewind editing.txt /*:rewind* +:ri change.txt /*:ri* +:right change.txt /*:right* +:rightb windows.txt /*:rightb* +:rightbelow windows.txt /*:rightbelow* +:ru repeat.txt /*:ru* +:rub if_ruby.txt /*:rub* +:ruby if_ruby.txt /*:ruby* +:rubyd if_ruby.txt /*:rubyd* +:rubydo if_ruby.txt /*:rubydo* +:rubyf if_ruby.txt /*:rubyf* +:rubyfile if_ruby.txt /*:rubyfile* +:rundo undo.txt /*:rundo* +:runtime repeat.txt /*:runtime* +:rv starting.txt /*:rv* +:rviminfo starting.txt /*:rviminfo* +:s change.txt /*:s* +:s% change.txt /*:s%* +:sI change.txt /*:sI* +:sIc change.txt /*:sIc* +:sIe change.txt /*:sIe* +:sIg change.txt /*:sIg* +:sIl change.txt /*:sIl* +:sIn change.txt /*:sIn* +:sIp change.txt /*:sIp* +:sIr change.txt /*:sIr* +:sN windows.txt /*:sN* +:sNext windows.txt /*:sNext* +:s\= change.txt /*:s\\=* +:s_# change.txt /*:s_#* +:s_I change.txt /*:s_I* +:s_c change.txt /*:s_c* +:s_e change.txt /*:s_e* +:s_flags change.txt /*:s_flags* +:s_g change.txt /*:s_g* +:s_i change.txt /*:s_i* +:s_l change.txt /*:s_l* +:s_n change.txt /*:s_n* +:s_p change.txt /*:s_p* +:s_r change.txt /*:s_r* +:sa windows.txt /*:sa* +:sal windows.txt /*:sal* +:sall windows.txt /*:sall* +:san eval.txt /*:san* +:sandbox eval.txt /*:sandbox* +:sargument windows.txt /*:sargument* +:sav editing.txt /*:sav* +:saveas editing.txt /*:saveas* +:sb windows.txt /*:sb* +:sbN windows.txt /*:sbN* +:sbNext windows.txt /*:sbNext* +:sba windows.txt /*:sba* +:sball windows.txt /*:sball* +:sbf windows.txt /*:sbf* +:sbfirst windows.txt /*:sbfirst* +:sbl windows.txt /*:sbl* +:sblast windows.txt /*:sblast* +:sbm windows.txt /*:sbm* +:sbmodified windows.txt /*:sbmodified* +:sbn windows.txt /*:sbn* +:sbnext windows.txt /*:sbnext* +:sbp windows.txt /*:sbp* +:sbprevious windows.txt /*:sbprevious* +:sbr windows.txt /*:sbr* +:sbrewind windows.txt /*:sbrewind* +:sbuffer windows.txt /*:sbuffer* +:sc change.txt /*:sc* +:scI change.txt /*:scI* +:sce change.txt /*:sce* +:scg change.txt /*:scg* +:sci change.txt /*:sci* +:scl change.txt /*:scl* +:scp change.txt /*:scp* +:scr repeat.txt /*:scr* +:script repeat.txt /*:script* +:scripte repeat.txt /*:scripte* +:scriptencoding repeat.txt /*:scriptencoding* +:scriptnames repeat.txt /*:scriptnames* +:scriptv repeat.txt /*:scriptv* +:scriptversion repeat.txt /*:scriptversion* +:scs if_cscop.txt /*:scs* +:scscope if_cscop.txt /*:scscope* +:se options.txt /*:se* +:search-args tagsrch.txt /*:search-args* +:set options.txt /*:set* +:set+= options.txt /*:set+=* +:set-! options.txt /*:set-!* +:set-& options.txt /*:set-&* +:set-&vi options.txt /*:set-&vi* +:set-&vim options.txt /*:set-&vim* +:set-= options.txt /*:set-=* +:set-args options.txt /*:set-args* +:set-browse options.txt /*:set-browse* +:set-default options.txt /*:set-default* +:set-inv options.txt /*:set-inv* +:set-termcap options.txt /*:set-termcap* +:set-verbose options.txt /*:set-verbose* +:set= options.txt /*:set=* +:set^= options.txt /*:set^=* +:set_env options.txt /*:set_env* +:setf options.txt /*:setf* +:setfiletype options.txt /*:setfiletype* +:setg options.txt /*:setg* +:setglobal options.txt /*:setglobal* +:setl options.txt /*:setl* +:setlocal options.txt /*:setlocal* +:sf windows.txt /*:sf* +:sfi windows.txt /*:sfi* +:sfind windows.txt /*:sfind* +:sfir windows.txt /*:sfir* +:sfirst windows.txt /*:sfirst* +:sg change.txt /*:sg* +:sgI change.txt /*:sgI* +:sgc change.txt /*:sgc* +:sge change.txt /*:sge* +:sgi change.txt /*:sgi* +:sgl change.txt /*:sgl* +:sgn change.txt /*:sgn* +:sgp change.txt /*:sgp* +:sgr change.txt /*:sgr* +:sh various.txt /*:sh* +:shell various.txt /*:shell* +:si change.txt /*:si* +:sic change.txt /*:sic* +:sie change.txt /*:sie* +:sig sign.txt /*:sig* +:sign sign.txt /*:sign* +:sign-define sign.txt /*:sign-define* +:sign-fname sign.txt /*:sign-fname* +:sign-jump sign.txt /*:sign-jump* +:sign-list sign.txt /*:sign-list* +:sign-place sign.txt /*:sign-place* +:sign-place-list sign.txt /*:sign-place-list* +:sign-undefine sign.txt /*:sign-undefine* +:sign-unplace sign.txt /*:sign-unplace* +:sil various.txt /*:sil* +:silent various.txt /*:silent* +:silent! various.txt /*:silent!* +:sim gui_w32.txt /*:sim* +:simalt gui_w32.txt /*:simalt* +:sin change.txt /*:sin* +:sip change.txt /*:sip* +:sir change.txt /*:sir* +:sl various.txt /*:sl* +:sl! various.txt /*:sl!* +:sla windows.txt /*:sla* +:slast windows.txt /*:slast* +:sleep various.txt /*:sleep* +:sleep! various.txt /*:sleep!* +:sm change.txt /*:sm* +:smagic change.txt /*:smagic* +:smap map.txt /*:smap* +:smap_l map.txt /*:smap_l* +:smapc map.txt /*:smapc* +:smapclear map.txt /*:smapclear* +:sme gui.txt /*:sme* +:smenu gui.txt /*:smenu* +:smile index.txt /*:smile* +:sn windows.txt /*:sn* +:snext windows.txt /*:snext* +:sno change.txt /*:sno* +:snomagic change.txt /*:snomagic* +:snor map.txt /*:snor* +:snore map.txt /*:snore* +:snoremap map.txt /*:snoremap* +:snoreme gui.txt /*:snoreme* +:snoremenu gui.txt /*:snoremenu* +:so repeat.txt /*:so* +:sor change.txt /*:sor* +:sort change.txt /*:sort* +:source repeat.txt /*:source* +:source! repeat.txt /*:source!* +:source-range repeat.txt /*:source-range* +:source_crnl repeat.txt /*:source_crnl* +:sp windows.txt /*:sp* +:spe spell.txt /*:spe* +:spelld spell.txt /*:spelld* +:spelldump spell.txt /*:spelldump* +:spellgood spell.txt /*:spellgood* +:spelli spell.txt /*:spelli* +:spellinfo spell.txt /*:spellinfo* +:spellr spell.txt /*:spellr* +:spellra spell.txt /*:spellra* +:spellrare spell.txt /*:spellrare* +:spellrepall spell.txt /*:spellrepall* +:spellu spell.txt /*:spellu* +:spellundo spell.txt /*:spellundo* +:spellw spell.txt /*:spellw* +:spellwrong spell.txt /*:spellwrong* +:split windows.txt /*:split* +:split_f windows.txt /*:split_f* +:spr windows.txt /*:spr* +:sprevious windows.txt /*:sprevious* +:sr change.txt /*:sr* +:srI change.txt /*:srI* +:src change.txt /*:src* +:sre windows.txt /*:sre* +:srewind windows.txt /*:srewind* +:srg change.txt /*:srg* +:sri change.txt /*:sri* +:srl change.txt /*:srl* +:srn change.txt /*:srn* +:srp change.txt /*:srp* +:st starting.txt /*:st* +:sta windows.txt /*:sta* +:stag windows.txt /*:stag* +:star cmdline.txt /*:star* +:star-compatible repeat.txt /*:star-compatible* +:star-visual-range cmdline.txt /*:star-visual-range* +:start insert.txt /*:start* +:startgreplace insert.txt /*:startgreplace* +:startinsert insert.txt /*:startinsert* +:startreplace insert.txt /*:startreplace* +:static vim9class.txt /*:static* +:stj tagsrch.txt /*:stj* +:stjump tagsrch.txt /*:stjump* +:stop starting.txt /*:stop* +:stopi insert.txt /*:stopi* +:stopinsert insert.txt /*:stopinsert* +:sts tagsrch.txt /*:sts* +:stselect tagsrch.txt /*:stselect* +:su change.txt /*:su* +:substitute change.txt /*:substitute* +:substitute-repeat change.txt /*:substitute-repeat* +:sun windows.txt /*:sun* +:sunhide windows.txt /*:sunhide* +:sunm map.txt /*:sunm* +:sunmap map.txt /*:sunmap* +:sunme gui.txt /*:sunme* +:sunmenu gui.txt /*:sunmenu* +:sus starting.txt /*:sus* +:suspend starting.txt /*:suspend* +:sv windows.txt /*:sv* +:sview windows.txt /*:sview* +:sw recover.txt /*:sw* +:swapname recover.txt /*:swapname* +:sy syntax.txt /*:sy* +:syn syntax.txt /*:syn* +:syn-arguments syntax.txt /*:syn-arguments* +:syn-case syntax.txt /*:syn-case* +:syn-cchar syntax.txt /*:syn-cchar* +:syn-clear syntax.txt /*:syn-clear* +:syn-cluster syntax.txt /*:syn-cluster* +:syn-conceal syntax.txt /*:syn-conceal* +:syn-conceal-implicit syntax.txt /*:syn-conceal-implicit* +:syn-concealends syntax.txt /*:syn-concealends* +:syn-contained syntax.txt /*:syn-contained* +:syn-containedin syntax.txt /*:syn-containedin* +:syn-contains syntax.txt /*:syn-contains* +:syn-context syntax.txt /*:syn-context* +:syn-default-override usr_06.txt /*:syn-default-override* +:syn-define syntax.txt /*:syn-define* +:syn-display syntax.txt /*:syn-display* +:syn-enable syntax.txt /*:syn-enable* +:syn-end syntax.txt /*:syn-end* +:syn-excludenl syntax.txt /*:syn-excludenl* +:syn-ext-match syntax.txt /*:syn-ext-match* +:syn-extend syntax.txt /*:syn-extend* +:syn-file-remarks syntax.txt /*:syn-file-remarks* +:syn-files syntax.txt /*:syn-files* +:syn-fold syntax.txt /*:syn-fold* +:syn-foldlevel syntax.txt /*:syn-foldlevel* +:syn-include syntax.txt /*:syn-include* +:syn-iskeyword syntax.txt /*:syn-iskeyword* +:syn-keepend syntax.txt /*:syn-keepend* +:syn-keyword syntax.txt /*:syn-keyword* +:syn-lc syntax.txt /*:syn-lc* +:syn-leading syntax.txt /*:syn-leading* +:syn-list syntax.txt /*:syn-list* +:syn-manual usr_06.txt /*:syn-manual* +:syn-match syntax.txt /*:syn-match* +:syn-matchgroup syntax.txt /*:syn-matchgroup* +:syn-multi-line syntax.txt /*:syn-multi-line* +:syn-nextgroup syntax.txt /*:syn-nextgroup* +:syn-off syntax.txt /*:syn-off* +:syn-on syntax.txt /*:syn-on* +:syn-oneline syntax.txt /*:syn-oneline* +:syn-pattern syntax.txt /*:syn-pattern* +:syn-pattern-offset syntax.txt /*:syn-pattern-offset* +:syn-priority syntax.txt /*:syn-priority* +:syn-qstart syntax.txt /*:syn-qstart* +:syn-region syntax.txt /*:syn-region* +:syn-reset syntax.txt /*:syn-reset* +:syn-skip syntax.txt /*:syn-skip* +:syn-skipempty syntax.txt /*:syn-skipempty* +:syn-skipnl syntax.txt /*:syn-skipnl* +:syn-skipwhite syntax.txt /*:syn-skipwhite* +:syn-spell syntax.txt /*:syn-spell* +:syn-start syntax.txt /*:syn-start* +:syn-sync syntax.txt /*:syn-sync* +:syn-sync-ccomment syntax.txt /*:syn-sync-ccomment* +:syn-sync-first syntax.txt /*:syn-sync-first* +:syn-sync-fourth syntax.txt /*:syn-sync-fourth* +:syn-sync-linebreaks syntax.txt /*:syn-sync-linebreaks* +:syn-sync-maxlines syntax.txt /*:syn-sync-maxlines* +:syn-sync-minlines syntax.txt /*:syn-sync-minlines* +:syn-sync-second syntax.txt /*:syn-sync-second* +:syn-sync-third syntax.txt /*:syn-sync-third* +:syn-transparent syntax.txt /*:syn-transparent* +:sync scroll.txt /*:sync* +:syncbind scroll.txt /*:syncbind* +:syntax syntax.txt /*:syntax* +:syntax-enable syntax.txt /*:syntax-enable* +:syntax-off syntax.txt /*:syntax-off* +:syntax-on syntax.txt /*:syntax-on* +:syntax-reset syntax.txt /*:syntax-reset* +:syntime syntax.txt /*:syntime* +:t change.txt /*:t* +:tN tagsrch.txt /*:tN* +:tNext tagsrch.txt /*:tNext* +:ta tagsrch.txt /*:ta* +:tab tabpage.txt /*:tab* +:tabN tabpage.txt /*:tabN* +:tabNext tabpage.txt /*:tabNext* +:tabc tabpage.txt /*:tabc* +:tabclose tabpage.txt /*:tabclose* +:tabd tabpage.txt /*:tabd* +:tabdo tabpage.txt /*:tabdo* +:tabe tabpage.txt /*:tabe* +:tabedit tabpage.txt /*:tabedit* +:tabf tabpage.txt /*:tabf* +:tabfind tabpage.txt /*:tabfind* +:tabfir tabpage.txt /*:tabfir* +:tabfirst tabpage.txt /*:tabfirst* +:tabl tabpage.txt /*:tabl* +:tablast tabpage.txt /*:tablast* +:tabm tabpage.txt /*:tabm* +:tabmove tabpage.txt /*:tabmove* +:tabn tabpage.txt /*:tabn* +:tabnew tabpage.txt /*:tabnew* +:tabnext tabpage.txt /*:tabnext* +:tabo tabpage.txt /*:tabo* +:tabonly tabpage.txt /*:tabonly* +:tabp tabpage.txt /*:tabp* +:tabprevious tabpage.txt /*:tabprevious* +:tabr tabpage.txt /*:tabr* +:tabrewind tabpage.txt /*:tabrewind* +:tabs tabpage.txt /*:tabs* +:tag tagsrch.txt /*:tag* +:tags tagsrch.txt /*:tags* +:tc editing.txt /*:tc* +:tcd editing.txt /*:tcd* +:tcd- editing.txt /*:tcd-* +:tch editing.txt /*:tch* +:tchdir editing.txt /*:tchdir* +:tcl if_tcl.txt /*:tcl* +:tcld if_tcl.txt /*:tcld* +:tcldo if_tcl.txt /*:tcldo* +:tclf if_tcl.txt /*:tclf* +:tclfile if_tcl.txt /*:tclfile* +:te gui_w32.txt /*:te* +:tearoff gui_w32.txt /*:tearoff* +:ter terminal.txt /*:ter* +:terminal terminal.txt /*:terminal* +:tf tagsrch.txt /*:tf* +:tfirst tagsrch.txt /*:tfirst* +:th eval.txt /*:th* +:this vim9class.txt /*:this* +:throw eval.txt /*:throw* +:tj tagsrch.txt /*:tj* +:tjump tagsrch.txt /*:tjump* +:tl tagsrch.txt /*:tl* +:tlast tagsrch.txt /*:tlast* +:tlm gui.txt /*:tlm* +:tlmenu gui.txt /*:tlmenu* +:tln gui.txt /*:tln* +:tlnoremenu gui.txt /*:tlnoremenu* +:tlu gui.txt /*:tlu* +:tlunmenu gui.txt /*:tlunmenu* +:tm gui.txt /*:tm* +:tma map.txt /*:tma* +:tmap map.txt /*:tmap* +:tmap_l map.txt /*:tmap_l* +:tmapc map.txt /*:tmapc* +:tmapclear map.txt /*:tmapclear* +:tmenu gui.txt /*:tmenu* +:tn tagsrch.txt /*:tn* +:tnext tagsrch.txt /*:tnext* +:tno map.txt /*:tno* +:tnoremap map.txt /*:tnoremap* +:topleft windows.txt /*:topleft* +:tp tagsrch.txt /*:tp* +:tprevious tagsrch.txt /*:tprevious* +:tr tagsrch.txt /*:tr* +:trewind tagsrch.txt /*:trewind* +:try eval.txt /*:try* +:ts tagsrch.txt /*:ts* +:tselect tagsrch.txt /*:tselect* +:tu gui.txt /*:tu* +:tunma map.txt /*:tunma* +:tunmap map.txt /*:tunmap* +:tunmenu gui.txt /*:tunmenu* +:type vim9class.txt /*:type* +:u undo.txt /*:u* +:un undo.txt /*:un* +:una map.txt /*:una* +:unabbreviate map.txt /*:unabbreviate* +:undo undo.txt /*:undo* +:undoj undo.txt /*:undoj* +:undojoin undo.txt /*:undojoin* +:undol undo.txt /*:undol* +:undolist undo.txt /*:undolist* +:unh windows.txt /*:unh* +:unhide windows.txt /*:unhide* +:unl eval.txt /*:unl* +:unlet eval.txt /*:unlet* +:unlet-$ eval.txt /*:unlet-$* +:unlet-environment eval.txt /*:unlet-environment* +:unlo eval.txt /*:unlo* +:unlockvar eval.txt /*:unlockvar* +:unm map.txt /*:unm* +:unm! map.txt /*:unm!* +:unmap map.txt /*:unmap* +:unmap! map.txt /*:unmap!* +:unme gui.txt /*:unme* +:unmenu gui.txt /*:unmenu* +:unmenu-all gui.txt /*:unmenu-all* +:uns various.txt /*:uns* +:unsilent various.txt /*:unsilent* +:up editing.txt /*:up* +:update editing.txt /*:update* +:v repeat.txt /*:v* +:var vim9.txt /*:var* +:ve various.txt /*:ve* +:ver various.txt /*:ver* +:verb various.txt /*:verb* +:verbose various.txt /*:verbose* +:verbose-cmd various.txt /*:verbose-cmd* +:version various.txt /*:version* +:vert windows.txt /*:vert* +:vertical windows.txt /*:vertical* +:vertical-resize windows.txt /*:vertical-resize* +:vglobal repeat.txt /*:vglobal* +:vi editing.txt /*:vi* +:vie editing.txt /*:vie* +:view editing.txt /*:view* +:vim quickfix.txt /*:vim* +:vim9 vim9.txt /*:vim9* +:vim9cmd vim9.txt /*:vim9cmd* +:vim9s repeat.txt /*:vim9s* +:vim9script repeat.txt /*:vim9script* +:vimgrep quickfix.txt /*:vimgrep* +:vimgrepa quickfix.txt /*:vimgrepa* +:vimgrepadd quickfix.txt /*:vimgrepadd* +:visual editing.txt /*:visual* +:visual_example visual.txt /*:visual_example* +:viu helphelp.txt /*:viu* +:viusage helphelp.txt /*:viusage* +:vm map.txt /*:vm* +:vmap map.txt /*:vmap* +:vmap_l map.txt /*:vmap_l* +:vmapc map.txt /*:vmapc* +:vmapclear map.txt /*:vmapclear* +:vme gui.txt /*:vme* +:vmenu gui.txt /*:vmenu* +:vn map.txt /*:vn* +:vne windows.txt /*:vne* +:vnew windows.txt /*:vnew* +:vnoremap map.txt /*:vnoremap* +:vnoreme gui.txt /*:vnoreme* +:vnoremenu gui.txt /*:vnoremenu* +:vs windows.txt /*:vs* +:vsplit windows.txt /*:vsplit* +:vu map.txt /*:vu* +:vunmap map.txt /*:vunmap* +:vunme gui.txt /*:vunme* +:vunmenu gui.txt /*:vunmenu* +:w editing.txt /*:w* +:w! editing.txt /*:w!* +:wN editing.txt /*:wN* +:wNext editing.txt /*:wNext* +:w_a editing.txt /*:w_a* +:w_c editing.txt /*:w_c* +:w_f editing.txt /*:w_f* +:wa editing.txt /*:wa* +:wall editing.txt /*:wall* +:wh eval.txt /*:wh* +:while eval.txt /*:while* +:wi gui.txt /*:wi* +:win gui.txt /*:win* +:winc windows.txt /*:winc* +:wincmd windows.txt /*:wincmd* +:windo windows.txt /*:windo* +:winp gui.txt /*:winp* +:winpos gui.txt /*:winpos* +:winsize gui.txt /*:winsize* +:wn editing.txt /*:wn* +:wnext editing.txt /*:wnext* +:wp editing.txt /*:wp* +:wprevious editing.txt /*:wprevious* +:wq editing.txt /*:wq* +:wqa editing.txt /*:wqa* +:wqall editing.txt /*:wqall* +:write editing.txt /*:write* +:write_a editing.txt /*:write_a* +:write_c editing.txt /*:write_c* +:write_f editing.txt /*:write_f* +:wundo undo.txt /*:wundo* +:wv starting.txt /*:wv* +:wviminfo starting.txt /*:wviminfo* +:x editing.txt /*:x* +:xa editing.txt /*:xa* +:xall editing.txt /*:xall* +:xit editing.txt /*:xit* +:xm map.txt /*:xm* +:xmap map.txt /*:xmap* +:xmap_l map.txt /*:xmap_l* +:xmapc map.txt /*:xmapc* +:xmapclear map.txt /*:xmapclear* +:xme gui.txt /*:xme* +:xmenu gui.txt /*:xmenu* +:xn map.txt /*:xn* +:xnoremap map.txt /*:xnoremap* +:xnoreme gui.txt /*:xnoreme* +:xnoremenu gui.txt /*:xnoremenu* +:xr various.txt /*:xr* +:xrestore various.txt /*:xrestore* +:xu map.txt /*:xu* +:xunmap map.txt /*:xunmap* +:xunme gui.txt /*:xunme* +:xunmenu gui.txt /*:xunmenu* +:y change.txt /*:y* +:yank change.txt /*:yank* +:z various.txt /*:z* +:z! various.txt /*:z!* +:z# various.txt /*:z#* +:~ change.txt /*:~* +; motion.txt /*;* +< change.txt /*<* +<2-LeftMouse> term.txt /*<2-LeftMouse>* +<3-LeftMouse> term.txt /*<3-LeftMouse>* +<4-LeftMouse> term.txt /*<4-LeftMouse>* +<< change.txt /*<<* +<> intro.txt /*<>* +<A- intro.txt /*<A-* +<A-LeftMouse> term.txt /*<A-LeftMouse>* +<A-RightMouse> term.txt /*<A-RightMouse>* +<BS> motion.txt /*<BS>* +<Bar> intro.txt /*<Bar>* +<Bslash> intro.txt /*<Bslash>* +<C- intro.txt /*<C-* +<C-Del> os_dos.txt /*<C-Del>* +<C-End> motion.txt /*<C-End>* +<C-Home> motion.txt /*<C-Home>* +<C-Insert> os_dos.txt /*<C-Insert>* +<C-Left> motion.txt /*<C-Left>* +<C-LeftMouse> tagsrch.txt /*<C-LeftMouse>* +<C-PageDown> tabpage.txt /*<C-PageDown>* +<C-PageUp> tabpage.txt /*<C-PageUp>* +<C-Right> motion.txt /*<C-Right>* +<C-RightMouse> tagsrch.txt /*<C-RightMouse>* +<C-ScrollWheelDown> scroll.txt /*<C-ScrollWheelDown>* +<C-ScrollWheelLeft> scroll.txt /*<C-ScrollWheelLeft>* +<C-ScrollWheelRight> scroll.txt /*<C-ScrollWheelRight>* +<C-ScrollWheelUp> scroll.txt /*<C-ScrollWheelUp>* +<C-Tab> tabpage.txt /*<C-Tab>* +<CR> motion.txt /*<CR>* +<CSI> intro.txt /*<CSI>* +<Char-> map.txt /*<Char->* +<Char> map.txt /*<Char>* +<Cmd> map.txt /*<Cmd>* +<CursorHold> autocmd.txt /*<CursorHold>* +<D- intro.txt /*<D-* +<D-c> os_mac.txt /*<D-c>* +<D-v> os_mac.txt /*<D-v>* +<D-x> os_mac.txt /*<D-x>* +<Del> change.txt /*<Del>* +<Down> motion.txt /*<Down>* +<Drop> change.txt /*<Drop>* +<EOL> intro.txt /*<EOL>* +<End> motion.txt /*<End>* +<Enter> intro.txt /*<Enter>* +<Esc> intro.txt /*<Esc>* +<F10> term.txt /*<F10>* +<F11> term.txt /*<F11>* +<F12> term.txt /*<F12>* +<F13> term.txt /*<F13>* +<F14> term.txt /*<F14>* +<F15> term.txt /*<F15>* +<F16> term.txt /*<F16>* +<F17> term.txt /*<F17>* +<F18> term.txt /*<F18>* +<F19> term.txt /*<F19>* +<F1> helphelp.txt /*<F1>* +<F2> term.txt /*<F2>* +<F3> term.txt /*<F3>* +<F4> term.txt /*<F4>* +<F5> term.txt /*<F5>* +<F6> term.txt /*<F6>* +<F7> term.txt /*<F7>* +<F8> term.txt /*<F8>* +<F9> term.txt /*<F9>* +<Help> helphelp.txt /*<Help>* +<Home> motion.txt /*<Home>* +<Ignore> builtin.txt /*<Ignore>* +<Insert> insert.txt /*<Insert>* +<Leader> map.txt /*<Leader>* +<Left> motion.txt /*<Left>* +<LeftDrag> term.txt /*<LeftDrag>* +<LeftMouse> visual.txt /*<LeftMouse>* +<LeftRelease> visual.txt /*<LeftRelease>* +<LocalLeader> map.txt /*<LocalLeader>* +<M- intro.txt /*<M-* +<MiddleDrag> term.txt /*<MiddleDrag>* +<MiddleMouse> change.txt /*<MiddleMouse>* +<MiddleRelease> term.txt /*<MiddleRelease>* +<Mouse> term.txt /*<Mouse>* +<MouseDown> scroll.txt /*<MouseDown>* +<MouseMove> map.txt /*<MouseMove>* +<MouseUp> scroll.txt /*<MouseUp>* +<NL> motion.txt /*<NL>* +<Nop> map.txt /*<Nop>* +<Nul> intro.txt /*<Nul>* +<PageDown> scroll.txt /*<PageDown>* +<PageUp> scroll.txt /*<PageUp>* +<Plug> map.txt /*<Plug>* +<Return> intro.txt /*<Return>* +<Right> motion.txt /*<Right>* +<RightDrag> term.txt /*<RightDrag>* +<RightMouse> visual.txt /*<RightMouse>* +<RightRelease> term.txt /*<RightRelease>* +<S- intro.txt /*<S-* +<S-Del> os_dos.txt /*<S-Del>* +<S-Down> scroll.txt /*<S-Down>* +<S-End> term.txt /*<S-End>* +<S-F10> term.txt /*<S-F10>* +<S-F11> term.txt /*<S-F11>* +<S-F12> term.txt /*<S-F12>* +<S-F1> intro.txt /*<S-F1>* +<S-F2> term.txt /*<S-F2>* +<S-F3> term.txt /*<S-F3>* +<S-F4> term.txt /*<S-F4>* +<S-F5> term.txt /*<S-F5>* +<S-F6> term.txt /*<S-F6>* +<S-F7> term.txt /*<S-F7>* +<S-F8> term.txt /*<S-F8>* +<S-F9> term.txt /*<S-F9>* +<S-Home> term.txt /*<S-Home>* +<S-Insert> os_dos.txt /*<S-Insert>* +<S-Left> motion.txt /*<S-Left>* +<S-LeftMouse> term.txt /*<S-LeftMouse>* +<S-Right> motion.txt /*<S-Right>* +<S-RightMouse> term.txt /*<S-RightMouse>* +<S-ScrollWheelDown> scroll.txt /*<S-ScrollWheelDown>* +<S-ScrollWheelLeft> scroll.txt /*<S-ScrollWheelLeft>* +<S-ScrollWheelRight> scroll.txt /*<S-ScrollWheelRight>* +<S-ScrollWheelUp> scroll.txt /*<S-ScrollWheelUp>* +<S-Tab> term.txt /*<S-Tab>* +<S-Up> scroll.txt /*<S-Up>* +<S-xF1> term.txt /*<S-xF1>* +<S-xF2> term.txt /*<S-xF2>* +<S-xF3> term.txt /*<S-xF3>* +<S-xF4> term.txt /*<S-xF4>* +<SID> map.txt /*<SID>* +<SNR> map.txt /*<SNR>* +<ScriptCmd> map.txt /*<ScriptCmd>* +<ScrollWheelDown> scroll.txt /*<ScrollWheelDown>* +<ScrollWheelLeft> scroll.txt /*<ScrollWheelLeft>* +<ScrollWheelRight> scroll.txt /*<ScrollWheelRight>* +<ScrollWheelUp> scroll.txt /*<ScrollWheelUp>* +<Space> motion.txt /*<Space>* +<Tab> motion.txt /*<Tab>* +<Undo> undo.txt /*<Undo>* +<Up> motion.txt /*<Up>* +<abuf> cmdline.txt /*<abuf>* +<afile> cmdline.txt /*<afile>* +<amatch> cmdline.txt /*<amatch>* +<args> map.txt /*<args>* +<bang> map.txt /*<bang>* +<buffer=N> autocmd.txt /*<buffer=N>* +<buffer=abuf> autocmd.txt /*<buffer=abuf>* +<cWORD> cmdline.txt /*<cWORD>* +<cexpr> cmdline.txt /*<cexpr>* +<cfile> cmdline.txt /*<cfile>* +<character> intro.txt /*<character>* +<client> cmdline.txt /*<client>* +<count> map.txt /*<count>* +<cword> cmdline.txt /*<cword>* +<f-args> map.txt /*<f-args>* +<k0> term.txt /*<k0>* +<k1> term.txt /*<k1>* +<k2> term.txt /*<k2>* +<k3> term.txt /*<k3>* +<k4> term.txt /*<k4>* +<k5> term.txt /*<k5>* +<k6> term.txt /*<k6>* +<k7> term.txt /*<k7>* +<k8> term.txt /*<k8>* +<k9> term.txt /*<k9>* +<kDivide> term.txt /*<kDivide>* +<kEnd> motion.txt /*<kEnd>* +<kEnter> term.txt /*<kEnter>* +<kHome> motion.txt /*<kHome>* +<kMinus> term.txt /*<kMinus>* +<kMultiply> term.txt /*<kMultiply>* +<kPageDown> scroll.txt /*<kPageDown>* +<kPageUp> scroll.txt /*<kPageUp>* +<kPlus> term.txt /*<kPlus>* +<kPoint> term.txt /*<kPoint>* +<line1> map.txt /*<line1>* +<line2> map.txt /*<line2>* +<lt> intro.txt /*<lt>* +<mods> map.txt /*<mods>* +<nomodeline> autocmd.txt /*<nomodeline>* +<q-args> map.txt /*<q-args>* +<q-mods> map.txt /*<q-mods>* +<range> map.txt /*<range>* +<reg> map.txt /*<reg>* +<register> map.txt /*<register>* +<script> cmdline.txt /*<script>* +<sfile> cmdline.txt /*<sfile>* +<sflnum> cmdline.txt /*<sflnum>* +<slnum> cmdline.txt /*<slnum>* +<stack> cmdline.txt /*<stack>* +<xCSI> intro.txt /*<xCSI>* +<xDown> term.txt /*<xDown>* +<xEnd> term.txt /*<xEnd>* +<xEnd>-xterm term.txt /*<xEnd>-xterm* +<xF1> term.txt /*<xF1>* +<xF1>-xterm term.txt /*<xF1>-xterm* +<xF2> term.txt /*<xF2>* +<xF2>-xterm term.txt /*<xF2>-xterm* +<xF3> term.txt /*<xF3>* +<xF3>-xterm term.txt /*<xF3>-xterm* +<xF4> term.txt /*<xF4>* +<xF4>-xterm term.txt /*<xF4>-xterm* +<xHome> term.txt /*<xHome>* +<xHome>-xterm term.txt /*<xHome>-xterm* +<xLeft> term.txt /*<xLeft>* +<xRight> term.txt /*<xRight>* +<xUp> term.txt /*<xUp>* += change.txt /*=* +== change.txt /*==* +> change.txt /*>* +>> change.txt /*>>* +>backtrace repeat.txt /*>backtrace* +>bt repeat.txt /*>bt* +>cont repeat.txt /*>cont* +>down repeat.txt /*>down* +>finish repeat.txt /*>finish* +>frame repeat.txt /*>frame* +>interrupt repeat.txt /*>interrupt* +>next repeat.txt /*>next* +>quit repeat.txt /*>quit* +>step repeat.txt /*>step* +>up repeat.txt /*>up* +>where repeat.txt /*>where* +? pattern.txt /*?* +?<CR> pattern.txt /*?<CR>* +?? eval.txt /*??* +@ repeat.txt /*@* +@/ change.txt /*@\/* +@: repeat.txt /*@:* +@= change.txt /*@=* +@@ repeat.txt /*@@* +@r eval.txt /*@r* +A insert.txt /*A* +ACL editing.txt /*ACL* +ANSI-C develop.txt /*ANSI-C* +ATTENTION usr_11.txt /*ATTENTION* +Abbreviations map.txt /*Abbreviations* +Aleph options.txt /*Aleph* +Amiga os_amiga.txt /*Amiga* +Arabic arabic.txt /*Arabic* +Atari os_mint.txt /*Atari* +B motion.txt /*B* +BeBox os_beos.txt /*BeBox* +BeOS os_beos.txt /*BeOS* +Blob eval.txt /*Blob* +Blobs eval.txt /*Blobs* +Boolean eval.txt /*Boolean* +Bram version9.txt /*Bram* +Bram-Moolenaar version9.txt /*Bram-Moolenaar* +BufAdd autocmd.txt /*BufAdd* +BufCreate autocmd.txt /*BufCreate* +BufDelete autocmd.txt /*BufDelete* +BufEnter autocmd.txt /*BufEnter* +BufFilePost autocmd.txt /*BufFilePost* +BufFilePre autocmd.txt /*BufFilePre* +BufHidden autocmd.txt /*BufHidden* +BufLeave autocmd.txt /*BufLeave* +BufNew autocmd.txt /*BufNew* +BufNewFile autocmd.txt /*BufNewFile* +BufRead autocmd.txt /*BufRead* +BufReadCmd autocmd.txt /*BufReadCmd* +BufReadPost autocmd.txt /*BufReadPost* +BufReadPre autocmd.txt /*BufReadPre* +BufUnload autocmd.txt /*BufUnload* +BufWinEnter autocmd.txt /*BufWinEnter* +BufWinLeave autocmd.txt /*BufWinLeave* +BufWipeout autocmd.txt /*BufWipeout* +BufWrite autocmd.txt /*BufWrite* +BufWriteCmd autocmd.txt /*BufWriteCmd* +BufWritePost autocmd.txt /*BufWritePost* +BufWritePre autocmd.txt /*BufWritePre* +C change.txt /*C* +C-editing tips.txt /*C-editing* +C-indenting indent.txt /*C-indenting* +C89 develop.txt /*C89* +C99 develop.txt /*C99* +COMSPEC starting.txt /*COMSPEC* +CR-used-for-NL pattern.txt /*CR-used-for-NL* +CTRL-6 editing.txt /*CTRL-6* +CTRL-<PageDown> tabpage.txt /*CTRL-<PageDown>* +CTRL-<PageUp> tabpage.txt /*CTRL-<PageUp>* +CTRL-A change.txt /*CTRL-A* +CTRL-B scroll.txt /*CTRL-B* +CTRL-C pattern.txt /*CTRL-C* +CTRL-D scroll.txt /*CTRL-D* +CTRL-E scroll.txt /*CTRL-E* +CTRL-F scroll.txt /*CTRL-F* +CTRL-G editing.txt /*CTRL-G* +CTRL-H motion.txt /*CTRL-H* +CTRL-I motion.txt /*CTRL-I* +CTRL-J motion.txt /*CTRL-J* +CTRL-L various.txt /*CTRL-L* +CTRL-M motion.txt /*CTRL-M* +CTRL-N motion.txt /*CTRL-N* +CTRL-O motion.txt /*CTRL-O* +CTRL-P motion.txt /*CTRL-P* +CTRL-Q gui_w32.txt /*CTRL-Q* +CTRL-R undo.txt /*CTRL-R* +CTRL-T tagsrch.txt /*CTRL-T* +CTRL-U scroll.txt /*CTRL-U* +CTRL-U-changed version6.txt /*CTRL-U-changed* +CTRL-V visual.txt /*CTRL-V* +CTRL-V-alternative gui_w32.txt /*CTRL-V-alternative* +CTRL-W index.txt /*CTRL-W* +CTRL-W_+ windows.txt /*CTRL-W_+* +CTRL-W_- windows.txt /*CTRL-W_-* +CTRL-W_: windows.txt /*CTRL-W_:* +CTRL-W_< windows.txt /*CTRL-W_<* +CTRL-W_<BS> windows.txt /*CTRL-W_<BS>* +CTRL-W_<CR> quickfix.txt /*CTRL-W_<CR>* +CTRL-W_<Down> windows.txt /*CTRL-W_<Down>* +CTRL-W_<Enter> quickfix.txt /*CTRL-W_<Enter>* +CTRL-W_<Left> windows.txt /*CTRL-W_<Left>* +CTRL-W_<Right> windows.txt /*CTRL-W_<Right>* +CTRL-W_<Up> windows.txt /*CTRL-W_<Up>* +CTRL-W_= windows.txt /*CTRL-W_=* +CTRL-W_> windows.txt /*CTRL-W_>* +CTRL-W_CTRL-B windows.txt /*CTRL-W_CTRL-B* +CTRL-W_CTRL-C windows.txt /*CTRL-W_CTRL-C* +CTRL-W_CTRL-D tagsrch.txt /*CTRL-W_CTRL-D* +CTRL-W_CTRL-F windows.txt /*CTRL-W_CTRL-F* +CTRL-W_CTRL-H windows.txt /*CTRL-W_CTRL-H* +CTRL-W_CTRL-I tagsrch.txt /*CTRL-W_CTRL-I* +CTRL-W_CTRL-J windows.txt /*CTRL-W_CTRL-J* +CTRL-W_CTRL-K windows.txt /*CTRL-W_CTRL-K* +CTRL-W_CTRL-L windows.txt /*CTRL-W_CTRL-L* +CTRL-W_CTRL-N windows.txt /*CTRL-W_CTRL-N* +CTRL-W_CTRL-O windows.txt /*CTRL-W_CTRL-O* +CTRL-W_CTRL-P windows.txt /*CTRL-W_CTRL-P* +CTRL-W_CTRL-Q windows.txt /*CTRL-W_CTRL-Q* +CTRL-W_CTRL-R windows.txt /*CTRL-W_CTRL-R* +CTRL-W_CTRL-S windows.txt /*CTRL-W_CTRL-S* +CTRL-W_CTRL-T windows.txt /*CTRL-W_CTRL-T* +CTRL-W_CTRL-V windows.txt /*CTRL-W_CTRL-V* +CTRL-W_CTRL-W windows.txt /*CTRL-W_CTRL-W* +CTRL-W_CTRL-X windows.txt /*CTRL-W_CTRL-X* +CTRL-W_CTRL-Z windows.txt /*CTRL-W_CTRL-Z* +CTRL-W_CTRL-] windows.txt /*CTRL-W_CTRL-]* +CTRL-W_CTRL-^ windows.txt /*CTRL-W_CTRL-^* +CTRL-W_CTRL-_ windows.txt /*CTRL-W_CTRL-_* +CTRL-W_F windows.txt /*CTRL-W_F* +CTRL-W_H windows.txt /*CTRL-W_H* +CTRL-W_J windows.txt /*CTRL-W_J* +CTRL-W_K windows.txt /*CTRL-W_K* +CTRL-W_L windows.txt /*CTRL-W_L* +CTRL-W_P windows.txt /*CTRL-W_P* +CTRL-W_R windows.txt /*CTRL-W_R* +CTRL-W_S windows.txt /*CTRL-W_S* +CTRL-W_T windows.txt /*CTRL-W_T* +CTRL-W_W windows.txt /*CTRL-W_W* +CTRL-W_] windows.txt /*CTRL-W_]* +CTRL-W_^ windows.txt /*CTRL-W_^* +CTRL-W__ windows.txt /*CTRL-W__* +CTRL-W_b windows.txt /*CTRL-W_b* +CTRL-W_bar windows.txt /*CTRL-W_bar* +CTRL-W_c windows.txt /*CTRL-W_c* +CTRL-W_d tagsrch.txt /*CTRL-W_d* +CTRL-W_f windows.txt /*CTRL-W_f* +CTRL-W_g<Tab> tabpage.txt /*CTRL-W_g<Tab>* +CTRL-W_gF windows.txt /*CTRL-W_gF* +CTRL-W_gT windows.txt /*CTRL-W_gT* +CTRL-W_g] windows.txt /*CTRL-W_g]* +CTRL-W_g_CTRL-] windows.txt /*CTRL-W_g_CTRL-]* +CTRL-W_gf windows.txt /*CTRL-W_gf* +CTRL-W_gt windows.txt /*CTRL-W_gt* +CTRL-W_g} windows.txt /*CTRL-W_g}* +CTRL-W_h windows.txt /*CTRL-W_h* +CTRL-W_i tagsrch.txt /*CTRL-W_i* +CTRL-W_j windows.txt /*CTRL-W_j* +CTRL-W_k windows.txt /*CTRL-W_k* +CTRL-W_l windows.txt /*CTRL-W_l* +CTRL-W_n windows.txt /*CTRL-W_n* +CTRL-W_o windows.txt /*CTRL-W_o* +CTRL-W_p windows.txt /*CTRL-W_p* +CTRL-W_q windows.txt /*CTRL-W_q* +CTRL-W_r windows.txt /*CTRL-W_r* +CTRL-W_s windows.txt /*CTRL-W_s* +CTRL-W_t windows.txt /*CTRL-W_t* +CTRL-W_v windows.txt /*CTRL-W_v* +CTRL-W_w windows.txt /*CTRL-W_w* +CTRL-W_x windows.txt /*CTRL-W_x* +CTRL-W_z windows.txt /*CTRL-W_z* +CTRL-W_} windows.txt /*CTRL-W_}* +CTRL-X change.txt /*CTRL-X* +CTRL-Y scroll.txt /*CTRL-Y* +CTRL-Z starting.txt /*CTRL-Z* +CTRL-\_CTRL-G intro.txt /*CTRL-\\_CTRL-G* +CTRL-\_CTRL-N intro.txt /*CTRL-\\_CTRL-N* +CTRL-] tagsrch.txt /*CTRL-]* +CTRL-^ editing.txt /*CTRL-^* +CTRL-{char} intro.txt /*CTRL-{char}* +Channel eval.txt /*Channel* +Channels eval.txt /*Channels* +Chinese mbyte.txt /*Chinese* +Class vim9class.txt /*Class* +Cmd-event autocmd.txt /*Cmd-event* +CmdUndefined autocmd.txt /*CmdUndefined* +Cmdline cmdline.txt /*Cmdline* +Cmdline-mode cmdline.txt /*Cmdline-mode* +CmdlineChanged autocmd.txt /*CmdlineChanged* +CmdlineEnter autocmd.txt /*CmdlineEnter* +CmdlineLeave autocmd.txt /*CmdlineLeave* +CmdwinEnter autocmd.txt /*CmdwinEnter* +CmdwinLeave autocmd.txt /*CmdwinLeave* +ColorScheme autocmd.txt /*ColorScheme* +ColorSchemePre autocmd.txt /*ColorSchemePre* +Command-line cmdline.txt /*Command-line* +Command-line-mode cmdline.txt /*Command-line-mode* +CompleteChanged autocmd.txt /*CompleteChanged* +CompleteDone autocmd.txt /*CompleteDone* +CompleteDonePre autocmd.txt /*CompleteDonePre* +ConPTY terminal.txt /*ConPTY* +Contents quickref.txt /*Contents* +Cscope if_cscop.txt /*Cscope* +CursorHold autocmd.txt /*CursorHold* +CursorHold-example windows.txt /*CursorHold-example* +CursorHoldI autocmd.txt /*CursorHoldI* +CursorIM mbyte.txt /*CursorIM* +CursorMoved autocmd.txt /*CursorMoved* +CursorMovedI autocmd.txt /*CursorMovedI* +D change.txt /*D* +DOS os_dos.txt /*DOS* +DOS-format editing.txt /*DOS-format* +DOS-format-write editing.txt /*DOS-format-write* +Dict eval.txt /*Dict* +Dictionaries eval.txt /*Dictionaries* +Dictionary eval.txt /*Dictionary* +Dictionary-function eval.txt /*Dictionary-function* +DiffUpdated autocmd.txt /*DiffUpdated* +Digraphs digraph.txt /*Digraphs* +DirChanged autocmd.txt /*DirChanged* +DirChangedPre autocmd.txt /*DirChangedPre* +E motion.txt /*E* +E10 message.txt /*E10* +E100 diff.txt /*E100* +E1001 eval.txt /*E1001* +E1002 eval.txt /*E1002* +E1003 vim9.txt /*E1003* +E1004 vim9.txt /*E1004* +E1005 vim9.txt /*E1005* +E1006 vim9.txt /*E1006* +E1007 vim9.txt /*E1007* +E1008 vim9.txt /*E1008* +E1009 vim9.txt /*E1009* +E101 diff.txt /*E101* +E1010 vim9.txt /*E1010* +E1011 vim9.txt /*E1011* +E1012 vim9.txt /*E1012* +E1013 vim9.txt /*E1013* +E1014 vim9.txt /*E1014* +E1015 eval.txt /*E1015* +E1016 vim9.txt /*E1016* +E1017 vim9.txt /*E1017* +E1018 eval.txt /*E1018* +E1019 eval.txt /*E1019* +E102 diff.txt /*E102* +E1020 vim9.txt /*E1020* +E1021 vim9.txt /*E1021* +E1022 vim9.txt /*E1022* +E1023 vim9.txt /*E1023* +E1024 vim9.txt /*E1024* +E1025 vim9.txt /*E1025* +E1026 vim9.txt /*E1026* +E1027 vim9.txt /*E1027* +E1028 vim9.txt /*E1028* +E1029 vim9.txt /*E1029* +E103 diff.txt /*E103* +E1030 vim9.txt /*E1030* +E1031 vim9.txt /*E1031* +E1032 eval.txt /*E1032* +E1033 eval.txt /*E1033* +E1034 vim9.txt /*E1034* +E1035 eval.txt /*E1035* +E1036 eval.txt /*E1036* +E1037 eval.txt /*E1037* +E1038 repeat.txt /*E1038* +E1039 repeat.txt /*E1039* +E104 digraph.txt /*E104* +E1040 repeat.txt /*E1040* +E1041 vim9.txt /*E1041* +E1042 vim9.txt /*E1042* +E1043 vim9.txt /*E1043* +E1044 vim9.txt /*E1044* +E1047 vim9.txt /*E1047* +E1048 vim9.txt /*E1048* +E1049 vim9.txt /*E1049* +E105 mbyte.txt /*E105* +E1050 vim9.txt /*E1050* +E1051 eval.txt /*E1051* +E1052 vim9.txt /*E1052* +E1053 vim9.txt /*E1053* +E1054 vim9.txt /*E1054* +E1055 vim9.txt /*E1055* +E1056 vim9.txt /*E1056* +E1057 vim9.txt /*E1057* +E1058 vim9.txt /*E1058* +E1059 vim9.txt /*E1059* +E1060 vim9.txt /*E1060* +E1061 vim9.txt /*E1061* +E1062 eval.txt /*E1062* +E1063 eval.txt /*E1063* +E1064 autocmd.txt /*E1064* +E1065 vim9.txt /*E1065* +E1066 vim9.txt /*E1066* +E1067 eval.txt /*E1067* +E1068 vim9.txt /*E1068* +E1069 vim9.txt /*E1069* +E107 userfunc.txt /*E107* +E1071 vim9.txt /*E1071* +E1072 eval.txt /*E1072* +E1073 vim9.txt /*E1073* +E1074 vim9.txt /*E1074* +E1075 vim9.txt /*E1075* +E1077 vim9.txt /*E1077* +E1078 autocmd.txt /*E1078* +E1079 vim9.txt /*E1079* +E108 eval.txt /*E108* +E1080 vim9.txt /*E1080* +E1081 eval.txt /*E1081* +E1082 vim9.txt /*E1082* +E1083 editing.txt /*E1083* +E1084 userfunc.txt /*E1084* +E1085 eval.txt /*E1085* +E1087 vim9.txt /*E1087* +E1088 vim9.txt /*E1088* +E1089 eval.txt /*E1089* +E109 eval.txt /*E109* +E1090 userfunc.txt /*E1090* +E1091 vim9.txt /*E1091* +E1092 various.txt /*E1092* +E1093 eval.txt /*E1093* +E1094 vim9.txt /*E1094* +E1095 userfunc.txt /*E1095* +E1096 vim9.txt /*E1096* +E1097 vim9.txt /*E1097* +E1098 eval.txt /*E1098* +E1099 vim9.txt /*E1099* +E11 cmdline.txt /*E11* +E110 eval.txt /*E110* +E1100 vim9.txt /*E1100* +E1101 vim9.txt /*E1101* +E1102 vim9.txt /*E1102* +E1103 vim9.txt /*E1103* +E1104 vim9.txt /*E1104* +E1105 vim9.txt /*E1105* +E1106 vim9.txt /*E1106* +E1107 eval.txt /*E1107* +E1109 builtin.txt /*E1109* +E111 eval.txt /*E111* +E1110 builtin.txt /*E1110* +E1111 builtin.txt /*E1111* +E1112 builtin.txt /*E1112* +E1113 builtin.txt /*E1113* +E1114 builtin.txt /*E1114* +E1115 testing.txt /*E1115* +E1116 testing.txt /*E1116* +E1117 vim9.txt /*E1117* +E1118 eval.txt /*E1118* +E1119 eval.txt /*E1119* +E112 eval.txt /*E112* +E1120 eval.txt /*E1120* +E1121 eval.txt /*E1121* +E1122 eval.txt /*E1122* +E1123 vim9.txt /*E1123* +E1124 vim9.txt /*E1124* +E1125 vim9.txt /*E1125* +E1126 vim9.txt /*E1126* +E1127 vim9.txt /*E1127* +E1128 vim9.txt /*E1128* +E1129 eval.txt /*E1129* +E113 eval.txt /*E113* +E1130 vim9.txt /*E1130* +E1131 vim9.txt /*E1131* +E1132 builtin.txt /*E1132* +E1133 vim9.txt /*E1133* +E1134 vim9.txt /*E1134* +E1135 eval.txt /*E1135* +E1136 map.txt /*E1136* +E1138 eval.txt /*E1138* +E1139 vim9.txt /*E1139* +E114 eval.txt /*E114* +E1140 eval.txt /*E1140* +E1141 eval.txt /*E1141* +E1142 testing.txt /*E1142* +E1143 eval.txt /*E1143* +E1144 vim9.txt /*E1144* +E1145 eval.txt /*E1145* +E1146 vim9.txt /*E1146* +E1147 eval.txt /*E1147* +E1148 eval.txt /*E1148* +E1149 vim9.txt /*E1149* +E115 eval.txt /*E115* +E1150 vim9.txt /*E1150* +E1151 userfunc.txt /*E1151* +E1152 vim9.txt /*E1152* +E1153 eval.txt /*E1153* +E1154 eval.txt /*E1154* +E1155 autocmd.txt /*E1155* +E1156 editing.txt /*E1156* +E1157 vim9.txt /*E1157* +E1158 vim9.txt /*E1158* +E1159 windows.txt /*E1159* +E116 eval.txt /*E116* +E1160 vim9.txt /*E1160* +E1161 builtin.txt /*E1161* +E1162 builtin.txt /*E1162* +E1163 vim9.txt /*E1163* +E1164 vim9.txt /*E1164* +E1165 eval.txt /*E1165* +E1166 eval.txt /*E1166* +E1167 vim9.txt /*E1167* +E1168 vim9.txt /*E1168* +E1169 eval.txt /*E1169* +E117 userfunc.txt /*E117* +E1170 vim9.txt /*E1170* +E1171 vim9.txt /*E1171* +E1172 vim9.txt /*E1172* +E1173 vim9.txt /*E1173* +E1174 vim9.txt /*E1174* +E1175 vim9.txt /*E1175* +E1176 vim9.txt /*E1176* +E1177 eval.txt /*E1177* +E1178 vim9.txt /*E1178* +E1179 options.txt /*E1179* +E118 eval.txt /*E118* +E1180 vim9.txt /*E1180* +E1181 vim9.txt /*E1181* +E1182 eval.txt /*E1182* +E1183 eval.txt /*E1183* +E1184 eval.txt /*E1184* +E1185 various.txt /*E1185* +E1186 vim9.txt /*E1186* +E1187 starting.txt /*E1187* +E1188 cmdline.txt /*E1188* +E1189 vim9.txt /*E1189* +E119 eval.txt /*E119* +E1190 vim9.txt /*E1190* +E1191 vim9.txt /*E1191* +E1192 eval.txt /*E1192* +E1193 options.txt /*E1193* +E1194 options.txt /*E1194* +E1195 options.txt /*E1195* +E1196 options.txt /*E1196* +E1197 options.txt /*E1197* +E1198 options.txt /*E1198* +E1199 options.txt /*E1199* +E12 message.txt /*E12* +E120 eval.txt /*E120* +E1200 options.txt /*E1200* +E1201 options.txt /*E1201* +E1202 vim9.txt /*E1202* +E1203 eval.txt /*E1203* +E1204 pattern.txt /*E1204* +E1205 vim9.txt /*E1205* +E1206 vim9.txt /*E1206* +E1207 eval.txt /*E1207* +E1208 map.txt /*E1208* +E1209 builtin.txt /*E1209* +E121 eval.txt /*E121* +E1210 vim9.txt /*E1210* +E1211 vim9.txt /*E1211* +E1212 vim9.txt /*E1212* +E1213 vim9.txt /*E1213* +E1214 builtin.txt /*E1214* +E1215 builtin.txt /*E1215* +E1216 builtin.txt /*E1216* +E1217 vim9.txt /*E1217* +E1218 vim9.txt /*E1218* +E1219 vim9.txt /*E1219* +E122 userfunc.txt /*E122* +E1220 vim9.txt /*E1220* +E1221 vim9.txt /*E1221* +E1222 vim9.txt /*E1222* +E1223 vim9.txt /*E1223* +E1224 vim9.txt /*E1224* +E1225 vim9.txt /*E1225* +E1226 vim9.txt /*E1226* +E1227 vim9.txt /*E1227* +E1228 vim9.txt /*E1228* +E1229 eval.txt /*E1229* +E123 userfunc.txt /*E123* +E1230 options.txt /*E1230* +E1231 map.txt /*E1231* +E1232 builtin.txt /*E1232* +E1233 builtin.txt /*E1233* +E1234 vim9.txt /*E1234* +E1236 vim9.txt /*E1236* +E1237 map.txt /*E1237* +E1238 vim9.txt /*E1238* +E1239 builtin.txt /*E1239* +E124 userfunc.txt /*E124* +E1240 change.txt /*E1240* +E1241 change.txt /*E1241* +E1242 change.txt /*E1242* +E1243 options.txt /*E1243* +E1244 message.txt /*E1244* +E1245 cmdline.txt /*E1245* +E1246 eval.txt /*E1246* +E1247 cmdline.txt /*E1247* +E1248 vim9.txt /*E1248* +E1249 syntax.txt /*E1249* +E125 userfunc.txt /*E125* +E1250 vim9.txt /*E1250* +E1251 vim9.txt /*E1251* +E1252 vim9.txt /*E1252* +E1254 vim9.txt /*E1254* +E1255 map.txt /*E1255* +E1256 vim9.txt /*E1256* +E1257 vim9.txt /*E1257* +E1258 vim9.txt /*E1258* +E1259 vim9.txt /*E1259* +E126 userfunc.txt /*E126* +E1260 vim9.txt /*E1260* +E1261 vim9.txt /*E1261* +E1262 vim9.txt /*E1262* +E1263 userfunc.txt /*E1263* +E1264 vim9.txt /*E1264* +E1265 eval.txt /*E1265* +E1266 if_pyth.txt /*E1266* +E1267 userfunc.txt /*E1267* +E1268 vim9.txt /*E1268* +E1269 vim9.txt /*E1269* +E127 userfunc.txt /*E127* +E1270 change.txt /*E1270* +E1271 vim9.txt /*E1271* +E1272 vim9.txt /*E1272* +E1273 pattern.txt /*E1273* +E1274 cmdline.txt /*E1274* +E1275 eval.txt /*E1275* +E1276 builtin.txt /*E1276* +E1277 channel.txt /*E1277* +E1278 eval.txt /*E1278* +E1279 eval.txt /*E1279* +E128 userfunc.txt /*E128* +E1280 spell.txt /*E1280* +E1281 pattern.txt /*E1281* +E1282 eval.txt /*E1282* +E1283 eval.txt /*E1283* +E1284 popup.txt /*E1284* +E1285 builtin.txt /*E1285* +E1286 builtin.txt /*E1286* +E1287 builtin.txt /*E1287* +E1288 builtin.txt /*E1288* +E1289 builtin.txt /*E1289* +E129 userfunc.txt /*E129* +E1290 change.txt /*E1290* +E1291 testing.txt /*E1291* +E1292 cmdline.txt /*E1292* +E1293 textprop.txt /*E1293* +E1294 textprop.txt /*E1294* +E1295 textprop.txt /*E1295* +E1296 textprop.txt /*E1296* +E1297 vim9.txt /*E1297* +E1298 vim9.txt /*E1298* +E1299 tagsrch.txt /*E1299* +E13 message.txt /*E13* +E1300 userfunc.txt /*E1300* +E1301 vim9.txt /*E1301* +E1302 eval.txt /*E1302* +E1303 map.txt /*E1303* +E1304 vim9.txt /*E1304* +E1305 textprop.txt /*E1305* +E1306 vim9.txt /*E1306* +E1307 vim9.txt /*E1307* +E1308 builtin.txt /*E1308* +E1309 map.txt /*E1309* +E131 userfunc.txt /*E131* +E1310 gui.txt /*E1310* +E1311 map.txt /*E1311* +E1312 windows.txt /*E1312* +E1313 eval.txt /*E1313* +E1314 vim9class.txt /*E1314* +E1315 vim9class.txt /*E1315* +E1316 vim9class.txt /*E1316* +E1317 vim9class.txt /*E1317* +E1318 vim9class.txt /*E1318* +E1319 eval.txt /*E1319* +E132 userfunc.txt /*E132* +E1320 eval.txt /*E1320* +E1321 eval.txt /*E1321* +E1322 eval.txt /*E1322* +E1323 eval.txt /*E1323* +E1324 eval.txt /*E1324* +E1325 vim9class.txt /*E1325* +E1326 vim9class.txt /*E1326* +E1327 vim9class.txt /*E1327* +E1328 vim9class.txt /*E1328* +E133 userfunc.txt /*E133* +E1330 vim9class.txt /*E1330* +E1331 vim9class.txt /*E1331* +E1332 vim9class.txt /*E1332* +E1333 vim9class.txt /*E1333* +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* +E1342 vim9class.txt /*E1342* +E1343 vim9class.txt /*E1343* +E1344 vim9class.txt /*E1344* +E1345 vim9class.txt /*E1345* +E1346 vim9class.txt /*E1346* +E1347 vim9class.txt /*E1347* +E1348 vim9class.txt /*E1348* +E1349 vim9class.txt /*E1349* +E135 autocmd.txt /*E135* +E1350 vim9class.txt /*E1350* +E1351 vim9class.txt /*E1351* +E1352 vim9class.txt /*E1352* +E1353 vim9class.txt /*E1353* +E1354 vim9class.txt /*E1354* +E1355 vim9class.txt /*E1355* +E1356 vim9class.txt /*E1356* +E1357 vim9class.txt /*E1357* +E1358 vim9class.txt /*E1358* +E1359 vim9class.txt /*E1359* +E136 starting.txt /*E136* +E1360 vim9class.txt /*E1360* +E1361 syntax.txt /*E1361* +E1362 vim9class.txt /*E1362* +E1363 vim9.txt /*E1363* +E1364 recover.txt /*E1364* +E1365 vim9class.txt /*E1365* +E1366 vim9class.txt /*E1366* +E1367 vim9class.txt /*E1367* +E1368 vim9class.txt /*E1368* +E1369 vim9class.txt /*E1369* +E137 starting.txt /*E137* +E1370 vim9class.txt /*E1370* +E1371 vim9class.txt /*E1371* +E1372 vim9class.txt /*E1372* +E1373 vim9class.txt /*E1373* +E1374 vim9class.txt /*E1374* +E1375 vim9class.txt /*E1375* +E1376 vim9class.txt /*E1376* +E1377 vim9class.txt /*E1377* +E1378 vim9class.txt /*E1378* +E1379 vim9class.txt /*E1379* +E138 starting.txt /*E138* +E1380 vim9class.txt /*E1380* +E1381 vim9class.txt /*E1381* +E1382 vim9class.txt /*E1382* +E1383 vim9class.txt /*E1383* +E1384 vim9class.txt /*E1384* +E1385 vim9class.txt /*E1385* +E1386 vim9class.txt /*E1386* +E1387 vim9class.txt /*E1387* +E1388 vim9class.txt /*E1388* +E1389 vim9class.txt /*E1389* +E139 message.txt /*E139* +E1390 vim9class.txt /*E1390* +E1391 eval.txt /*E1391* +E1392 eval.txt /*E1392* +E1393 vim9class.txt /*E1393* +E1394 vim9class.txt /*E1394* +E1395 vim9class.txt /*E1395* +E1396 vim9class.txt /*E1396* +E1397 vim9class.txt /*E1397* +E1398 vim9class.txt /*E1398* +E1399 vim9class.txt /*E1399* +E140 message.txt /*E140* +E1400 vim9class.txt /*E1400* +E1401 vim9class.txt /*E1401* +E1402 vim9class.txt /*E1402* +E1403 vim9class.txt /*E1403* +E1405 vim9class.txt /*E1405* +E1406 vim9class.txt /*E1406* +E1407 vim9class.txt /*E1407* +E1408 vim9class.txt /*E1408* +E1409 vim9class.txt /*E1409* +E141 message.txt /*E141* +E1410 vim9class.txt /*E1410* +E1411 vim9class.txt /*E1411* +E142 message.txt /*E142* +E143 autocmd.txt /*E143* +E144 various.txt /*E144* +E145 starting.txt /*E145* +E146 change.txt /*E146* +E147 repeat.txt /*E147* +E148 repeat.txt /*E148* +E149 helphelp.txt /*E149* +E15 eval.txt /*E15* +E150 helphelp.txt /*E150* +E1500 builtin.txt /*E1500* +E1501 builtin.txt /*E1501* +E1502 builtin.txt /*E1502* +E1503 builtin.txt /*E1503* +E1504 builtin.txt /*E1504* +E1505 builtin.txt /*E1505* +E1506 editing.txt /*E1506* +E1507 builtin.txt /*E1507* +E1508 editing.txt /*E1508* +E1509 editing.txt /*E1509* +E151 helphelp.txt /*E151* +E1510 change.txt /*E1510* +E152 helphelp.txt /*E152* +E153 helphelp.txt /*E153* +E154 helphelp.txt /*E154* +E155 sign.txt /*E155* +E156 sign.txt /*E156* +E157 sign.txt /*E157* +E158 sign.txt /*E158* +E159 sign.txt /*E159* +E16 cmdline.txt /*E16* +E160 sign.txt /*E160* +E161 repeat.txt /*E161* +E162 message.txt /*E162* +E163 editing.txt /*E163* +E164 editing.txt /*E164* +E165 editing.txt /*E165* +E166 message.txt /*E166* +E167 repeat.txt /*E167* +E168 repeat.txt /*E168* +E169 message.txt /*E169* +E17 message.txt /*E17* +E170 eval.txt /*E170* +E171 eval.txt /*E171* +E172 eval.txt /*E172* +E173 message.txt /*E173* +E174 map.txt /*E174* +E175 map.txt /*E175* +E176 map.txt /*E176* +E177 map.txt /*E177* +E178 map.txt /*E178* +E179 map.txt /*E179* +E18 eval.txt /*E18* +E180 map.txt /*E180* +E181 map.txt /*E181* +E182 map.txt /*E182* +E183 map.txt /*E183* +E184 map.txt /*E184* +E185 syntax.txt /*E185* +E186 editing.txt /*E186* +E187 editing.txt /*E187* +E188 gui.txt /*E188* +E189 message.txt /*E189* +E19 message.txt /*E19* +E190 message.txt /*E190* +E191 motion.txt /*E191* +E192 message.txt /*E192* +E193 userfunc.txt /*E193* +E194 message.txt /*E194* +E195 starting.txt /*E195* +E196 various.txt /*E196* +E197 mlang.txt /*E197* +E199 cmdline.txt /*E199* +E20 motion.txt /*E20* +E200 autocmd.txt /*E200* +E201 autocmd.txt /*E201* +E202 options.txt /*E202* +E203 autocmd.txt /*E203* +E204 autocmd.txt /*E204* +E205 options.txt /*E205* +E206 options.txt /*E206* +E207 editing.txt /*E207* +E208 message.txt /*E208* +E209 message.txt /*E209* +E21 options.txt /*E21* +E210 message.txt /*E210* +E211 message.txt /*E211* +E212 message.txt /*E212* +E213 options.txt /*E213* +E214 options.txt /*E214* +E215 autocmd.txt /*E215* +E216 autocmd.txt /*E216* +E217 autocmd.txt /*E217* +E218 autocmd.txt /*E218* +E219 message.txt /*E219* +E22 message.txt /*E22* +E220 message.txt /*E220* +E221 eval.txt /*E221* +E222 message.txt /*E222* +E223 options.txt /*E223* +E224 map.txt /*E224* +E225 map.txt /*E225* +E226 map.txt /*E226* +E227 map.txt /*E227* +E228 message.txt /*E228* +E229 gui.txt /*E229* +E23 message.txt /*E23* +E230 starting.txt /*E230* +E231 options.txt /*E231* +E232 message.txt /*E232* +E233 gui.txt /*E233* +E234 options.txt /*E234* +E235 options.txt /*E235* +E236 gui.txt /*E236* +E237 print.txt /*E237* +E238 print.txt /*E238* +E239 sign.txt /*E239* +E24 message.txt /*E24* +E240 remote.txt /*E240* +E241 builtin.txt /*E241* +E242 windows.txt /*E242* +E243 if_ole.txt /*E243* +E244 gui.txt /*E244* +E245 gui.txt /*E245* +E246 autocmd.txt /*E246* +E247 remote.txt /*E247* +E248 remote.txt /*E248* +E249 windows.txt /*E249* +E25 message.txt /*E25* +E250 options.txt /*E250* +E251 remote.txt /*E251* +E252 options.txt /*E252* +E253 mbyte.txt /*E253* +E254 message.txt /*E254* +E255 sign.txt /*E255* +E257 if_cscop.txt /*E257* +E258 remote.txt /*E258* +E259 if_cscop.txt /*E259* +E26 rileft.txt /*E26* +E260 eval.txt /*E260* +E261 if_cscop.txt /*E261* +E262 if_cscop.txt /*E262* +E263 if_pyth.txt /*E263* +E264 if_pyth.txt /*E264* +E265 if_ruby.txt /*E265* +E266 if_ruby.txt /*E266* +E267 if_ruby.txt /*E267* +E268 if_ruby.txt /*E268* +E269 if_ruby.txt /*E269* +E27 farsi.txt /*E27* +E270 if_ruby.txt /*E270* +E271 if_ruby.txt /*E271* +E272 if_ruby.txt /*E272* +E273 if_ruby.txt /*E273* +E274 eval.txt /*E274* +E275 textprop.txt /*E275* +E276 eval.txt /*E276* +E277 remote.txt /*E277* +E279 terminal.txt /*E279* +E28 syntax.txt /*E28* +E280 if_tcl.txt /*E280* +E282 starting.txt /*E282* +E283 motion.txt /*E283* +E284 mbyte.txt /*E284* +E285 mbyte.txt /*E285* +E286 mbyte.txt /*E286* +E287 mbyte.txt /*E287* +E288 mbyte.txt /*E288* +E289 mbyte.txt /*E289* +E29 change.txt /*E29* +E290 builtin.txt /*E290* +E292 message.txt /*E292* +E293 message.txt /*E293* +E294 message.txt /*E294* +E295 message.txt /*E295* +E296 message.txt /*E296* +E297 message.txt /*E297* +E298 message.txt /*E298* +E299 if_perl.txt /*E299* +E30 change.txt /*E30* +E300 message.txt /*E300* +E301 message.txt /*E301* +E302 message.txt /*E302* +E303 message.txt /*E303* +E304 message.txt /*E304* +E305 recover.txt /*E305* +E306 recover.txt /*E306* +E307 recover.txt /*E307* +E308 recover.txt /*E308* +E309 recover.txt /*E309* +E31 message.txt /*E31* +E310 recover.txt /*E310* +E311 recover.txt /*E311* +E312 recover.txt /*E312* +E313 recover.txt /*E313* +E314 recover.txt /*E314* +E315 message.txt /*E315* +E316 message.txt /*E316* +E317 message.txt /*E317* +E318 message.txt /*E318* +E319 message.txt /*E319* +E32 message.txt /*E32* +E320 message.txt /*E320* +E321 editing.txt /*E321* +E322 message.txt /*E322* +E323 message.txt /*E323* +E324 print.txt /*E324* +E325 usr_11.txt /*E325* +E326 recover.txt /*E326* +E327 gui.txt /*E327* +E328 gui.txt /*E328* +E329 gui.txt /*E329* +E33 message.txt /*E33* +E330 gui.txt /*E330* +E331 gui.txt /*E331* +E332 gui.txt /*E332* +E333 gui.txt /*E333* +E334 gui.txt /*E334* +E335 gui.txt /*E335* +E336 gui.txt /*E336* +E337 gui.txt /*E337* +E338 editing.txt /*E338* +E339 message.txt /*E339* +E34 various.txt /*E34* +E340 message.txt /*E340* +E341 message.txt /*E341* +E342 message.txt /*E342* +E343 options.txt /*E343* +E344 options.txt /*E344* +E345 options.txt /*E345* +E346 options.txt /*E346* +E347 options.txt /*E347* +E348 pattern.txt /*E348* +E349 pattern.txt /*E349* +E35 message.txt /*E35* +E350 fold.txt /*E350* +E351 fold.txt /*E351* +E352 fold.txt /*E352* +E353 change.txt /*E353* +E354 change.txt /*E354* +E355 options.txt /*E355* +E356 message.txt /*E356* +E357 options.txt /*E357* +E358 options.txt /*E358* +E359 term.txt /*E359* +E36 windows.txt /*E36* +E360 various.txt /*E360* +E362 eval.txt /*E362* +E363 options.txt /*E363* +E364 builtin.txt /*E364* +E365 print.txt /*E365* +E366 popup.txt /*E366* +E367 autocmd.txt /*E367* +E368 builtin.txt /*E368* +E369 pattern.txt /*E369* +E37 message.txt /*E37* +E370 various.txt /*E370* +E371 various.txt /*E371* +E372 quickfix.txt /*E372* +E373 quickfix.txt /*E373* +E374 quickfix.txt /*E374* +E375 quickfix.txt /*E375* +E376 quickfix.txt /*E376* +E377 quickfix.txt /*E377* +E378 quickfix.txt /*E378* +E379 quickfix.txt /*E379* +E38 message.txt /*E38* +E380 quickfix.txt /*E380* +E381 quickfix.txt /*E381* +E382 options.txt /*E382* +E383 pattern.txt /*E383* +E384 options.txt /*E384* +E385 options.txt /*E385* +E386 pattern.txt /*E386* +E387 tagsrch.txt /*E387* +E388 tagsrch.txt /*E388* +E389 tagsrch.txt /*E389* +E39 digraph.txt /*E39* +E390 syntax.txt /*E390* +E391 syntax.txt /*E391* +E392 syntax.txt /*E392* +E393 syntax.txt /*E393* +E394 syntax.txt /*E394* +E395 syntax.txt /*E395* +E397 syntax.txt /*E397* +E398 syntax.txt /*E398* +E399 syntax.txt /*E399* +E40 message.txt /*E40* +E400 syntax.txt /*E400* +E401 syntax.txt /*E401* +E402 syntax.txt /*E402* +E403 syntax.txt /*E403* +E404 syntax.txt /*E404* +E405 syntax.txt /*E405* +E406 syntax.txt /*E406* +E407 syntax.txt /*E407* +E408 syntax.txt /*E408* +E409 syntax.txt /*E409* +E41 message.txt /*E41* +E410 syntax.txt /*E410* +E411 syntax.txt /*E411* +E412 syntax.txt /*E412* +E413 syntax.txt /*E413* +E414 syntax.txt /*E414* +E415 syntax.txt /*E415* +E416 syntax.txt /*E416* +E417 syntax.txt /*E417* +E418 syntax.txt /*E418* +E419 syntax.txt /*E419* +E42 quickfix.txt /*E42* +E420 syntax.txt /*E420* +E421 syntax.txt /*E421* +E422 syntax.txt /*E422* +E423 syntax.txt /*E423* +E424 message.txt /*E424* +E425 tagsrch.txt /*E425* +E426 tagsrch.txt /*E426* +E427 tagsrch.txt /*E427* +E428 tagsrch.txt /*E428* +E429 tagsrch.txt /*E429* +E43 message.txt /*E43* +E430 tagsrch.txt /*E430* +E431 tagsrch.txt /*E431* +E432 message.txt /*E432* +E433 options.txt /*E433* +E434 tagsrch.txt /*E434* +E435 tagsrch.txt /*E435* +E436 term.txt /*E436* +E437 term.txt /*E437* +E438 message.txt /*E438* +E439 message.txt /*E439* +E44 message.txt /*E44* +E440 message.txt /*E440* +E441 windows.txt /*E441* +E442 windows.txt /*E442* +E443 windows.txt /*E443* +E444 windows.txt /*E444* +E445 windows.txt /*E445* +E446 editing.txt /*E446* +E447 editing.txt /*E447* +E448 various.txt /*E448* +E449 builtin.txt /*E449* +E45 message.txt /*E45* +E450 popup.txt /*E450* +E451 eval.txt /*E451* +E452 eval.txt /*E452* +E453 syntax.txt /*E453* +E454 userfunc.txt /*E454* +E455 print.txt /*E455* +E456 print.txt /*E456* +E457 print.txt /*E457* +E458 message.txt /*E458* +E459 message.txt /*E459* +E46 message.txt /*E46* +E460 builtin.txt /*E460* +E461 eval.txt /*E461* +E462 editing.txt /*E462* +E463 netbeans.txt /*E463* +E464 message.txt /*E464* +E465 gui.txt /*E465* +E466 gui.txt /*E466* +E467 map.txt /*E467* +E468 map.txt /*E468* +E469 if_cscop.txt /*E469* +E47 message.txt /*E47* +E470 change.txt /*E470* +E471 message.txt /*E471* +E472 editing.txt /*E472* +E473 message.txt /*E473* +E474 message.txt /*E474* +E475 message.txt /*E475* +E476 pattern.txt /*E476* +E477 message.txt /*E477* +E478 message.txt /*E478* +E479 editing.txt /*E479* +E48 eval.txt /*E48* +E480 editing.txt /*E480* +E481 message.txt /*E481* +E482 message.txt /*E482* +E483 message.txt /*E483* +E484 message.txt /*E484* +E485 message.txt /*E485* +E486 pattern.txt /*E486* +E487 options.txt /*E487* +E488 message.txt /*E488* +E489 cmdline.txt /*E489* +E49 message.txt /*E49* +E490 fold.txt /*E490* +E491 builtin.txt /*E491* +E492 message.txt /*E492* +E493 cmdline.txt /*E493* +E494 editing.txt /*E494* +E495 cmdline.txt /*E495* +E496 cmdline.txt /*E496* +E497 cmdline.txt /*E497* +E498 cmdline.txt /*E498* +E499 cmdline.txt /*E499* +E50 syntax.txt /*E50* +E500 cmdline.txt /*E500* +E501 intro.txt /*E501* +E502 editing.txt /*E502* +E503 editing.txt /*E503* +E504 editing.txt /*E504* +E505 editing.txt /*E505* +E506 editing.txt /*E506* +E507 editing.txt /*E507* +E508 editing.txt /*E508* +E509 editing.txt /*E509* +E51 pattern.txt /*E51* +E510 editing.txt /*E510* +E511 netbeans.txt /*E511* +E512 editing.txt /*E512* +E513 options.txt /*E513* +E514 editing.txt /*E514* +E515 windows.txt /*E515* +E516 windows.txt /*E516* +E517 windows.txt /*E517* +E518 options.txt /*E518* +E519 options.txt /*E519* +E52 syntax.txt /*E52* +E520 options.txt /*E520* +E521 options.txt /*E521* +E522 options.txt /*E522* +E523 options.txt /*E523* +E524 options.txt /*E524* +E525 options.txt /*E525* +E526 options.txt /*E526* +E527 options.txt /*E527* +E528 options.txt /*E528* +E529 options.txt /*E529* +E53 pattern.txt /*E53* +E530 options.txt /*E530* +E531 options.txt /*E531* +E532 netbeans.txt /*E532* +E533 options.txt /*E533* +E534 options.txt /*E534* +E535 options.txt /*E535* +E536 options.txt /*E536* +E537 options.txt /*E537* +E538 pattern.txt /*E538* +E539 options.txt /*E539* +E54 pattern.txt /*E54* +E540 options.txt /*E540* +E542 options.txt /*E542* +E543 options.txt /*E543* +E544 options.txt /*E544* +E545 options.txt /*E545* +E546 options.txt /*E546* +E547 options.txt /*E547* +E548 options.txt /*E548* +E549 options.txt /*E549* +E55 pattern.txt /*E55* +E550 options.txt /*E550* +E551 options.txt /*E551* +E552 options.txt /*E552* +E553 quickfix.txt /*E553* +E554 pattern.txt /*E554* +E555 tagsrch.txt /*E555* +E556 tagsrch.txt /*E556* +E557 term.txt /*E557* +E558 term.txt /*E558* +E559 term.txt /*E559* +E560 if_cscop.txt /*E560* +E561 if_cscop.txt /*E561* +E562 if_cscop.txt /*E562* +E563 if_cscop.txt /*E563* +E564 if_cscop.txt /*E564* +E565 insert.txt /*E565* +E566 if_cscop.txt /*E566* +E567 if_cscop.txt /*E567* +E568 if_cscop.txt /*E568* +E570 message.txt /*E570* +E571 if_tcl.txt /*E571* +E572 if_tcl.txt /*E572* +E573 remote.txt /*E573* +E574 starting.txt /*E574* +E575 starting.txt /*E575* +E576 starting.txt /*E576* +E577 starting.txt /*E577* +E579 eval.txt /*E579* +E580 eval.txt /*E580* +E581 eval.txt /*E581* +E582 eval.txt /*E582* +E583 eval.txt /*E583* +E584 eval.txt /*E584* +E585 eval.txt /*E585* +E586 eval.txt /*E586* +E587 eval.txt /*E587* +E588 eval.txt /*E588* +E589 options.txt /*E589* +E59 pattern.txt /*E59* +E590 options.txt /*E590* +E591 options.txt /*E591* +E592 options.txt /*E592* +E593 options.txt /*E593* +E594 options.txt /*E594* +E595 options.txt /*E595* +E596 options.txt /*E596* +E597 options.txt /*E597* +E598 options.txt /*E598* +E599 options.txt /*E599* +E60 pattern.txt /*E60* +E600 eval.txt /*E600* +E601 eval.txt /*E601* +E602 eval.txt /*E602* +E603 eval.txt /*E603* +E604 eval.txt /*E604* +E605 eval.txt /*E605* +E606 eval.txt /*E606* +E607 eval.txt /*E607* +E608 eval.txt /*E608* +E609 if_cscop.txt /*E609* +E61 pattern.txt /*E61* +E610 editing.txt /*E610* +E611 eval.txt /*E611* +E612 sign.txt /*E612* +E613 print.txt /*E613* +E614 builtin.txt /*E614* +E616 builtin.txt /*E616* +E617 options.txt /*E617* +E618 print.txt /*E618* +E619 print.txt /*E619* +E62 pattern.txt /*E62* +E620 print.txt /*E620* +E621 print.txt /*E621* +E622 if_cscop.txt /*E622* +E623 if_cscop.txt /*E623* +E624 print.txt /*E624* +E625 if_cscop.txt /*E625* +E626 if_cscop.txt /*E626* +E627 netbeans.txt /*E627* +E628 netbeans.txt /*E628* +E629 netbeans.txt /*E629* +E63 pattern.txt /*E63* +E630 channel.txt /*E630* +E631 channel.txt /*E631* +E632 netbeans.txt /*E632* +E633 netbeans.txt /*E633* +E634 netbeans.txt /*E634* +E635 netbeans.txt /*E635* +E636 netbeans.txt /*E636* +E637 netbeans.txt /*E637* +E638 netbeans.txt /*E638* +E639 netbeans.txt /*E639* +E64 pattern.txt /*E64* +E640 netbeans.txt /*E640* +E641 netbeans.txt /*E641* +E642 netbeans.txt /*E642* +E643 netbeans.txt /*E643* +E644 netbeans.txt /*E644* +E645 netbeans.txt /*E645* +E646 netbeans.txt /*E646* +E647 netbeans.txt /*E647* +E648 netbeans.txt /*E648* +E65 pattern.txt /*E65* +E650 netbeans.txt /*E650* +E651 netbeans.txt /*E651* +E652 netbeans.txt /*E652* +E654 eval.txt /*E654* +E655 builtin.txt /*E655* +E656 netbeans.txt /*E656* +E657 netbeans.txt /*E657* +E658 netbeans.txt /*E658* +E659 if_pyth.txt /*E659* +E66 syntax.txt /*E66* +E660 netbeans.txt /*E660* +E661 helphelp.txt /*E661* +E662 motion.txt /*E662* +E663 motion.txt /*E663* +E664 motion.txt /*E664* +E665 gui_x11.txt /*E665* +E666 quickfix.txt /*E666* +E667 editing.txt /*E667* +E668 netbeans.txt /*E668* +E669 syntax.txt /*E669* +E67 syntax.txt /*E67* +E670 helphelp.txt /*E670* +E671 starting.txt /*E671* +E672 starting.txt /*E672* +E673 print.txt /*E673* +E674 print.txt /*E674* +E675 print.txt /*E675* +E676 options.txt /*E676* +E677 builtin.txt /*E677* +E678 pattern.txt /*E678* +E679 syntax.txt /*E679* +E68 pattern.txt /*E68* +E680 autocmd.txt /*E680* +E681 quickfix.txt /*E681* +E682 quickfix.txt /*E682* +E683 quickfix.txt /*E683* +E684 eval.txt /*E684* +E685 message.txt /*E685* +E686 eval.txt /*E686* +E687 eval.txt /*E687* +E688 eval.txt /*E688* +E689 eval.txt /*E689* +E69 pattern.txt /*E69* +E690 eval.txt /*E690* +E691 eval.txt /*E691* +E692 eval.txt /*E692* +E693 builtin.txt /*E693* +E694 eval.txt /*E694* +E695 eval.txt /*E695* +E696 eval.txt /*E696* +E697 eval.txt /*E697* +E698 builtin.txt /*E698* +E699 builtin.txt /*E699* +E70 pattern.txt /*E70* +E700 builtin.txt /*E700* +E701 builtin.txt /*E701* +E702 builtin.txt /*E702* +E703 eval.txt /*E703* +E704 eval.txt /*E704* +E705 eval.txt /*E705* +E706 builtin.txt /*E706* +E707 eval.txt /*E707* +E708 eval.txt /*E708* +E709 eval.txt /*E709* +E71 pattern.txt /*E71* +E710 eval.txt /*E710* +E711 eval.txt /*E711* +E712 eval.txt /*E712* +E713 eval.txt /*E713* +E714 eval.txt /*E714* +E715 eval.txt /*E715* +E716 eval.txt /*E716* +E717 eval.txt /*E717* +E718 eval.txt /*E718* +E719 eval.txt /*E719* +E72 message.txt /*E72* +E720 eval.txt /*E720* +E721 eval.txt /*E721* +E722 eval.txt /*E722* +E723 eval.txt /*E723* +E724 builtin.txt /*E724* +E725 eval.txt /*E725* +E726 builtin.txt /*E726* +E727 builtin.txt /*E727* +E728 eval.txt /*E728* +E729 eval.txt /*E729* +E73 tagsrch.txt /*E73* +E730 eval.txt /*E730* +E731 eval.txt /*E731* +E732 eval.txt /*E732* +E733 eval.txt /*E733* +E734 eval.txt /*E734* +E735 eval.txt /*E735* +E736 eval.txt /*E736* +E737 builtin.txt /*E737* +E738 eval.txt /*E738* +E739 builtin.txt /*E739* +E74 message.txt /*E74* +E740 userfunc.txt /*E740* +E741 eval.txt /*E741* +E742 userfunc.txt /*E742* +E743 eval.txt /*E743* +E744 netbeans.txt /*E744* +E745 eval.txt /*E745* +E746 userfunc.txt /*E746* +E747 editing.txt /*E747* +E748 repeat.txt /*E748* +E749 various.txt /*E749* +E75 vi_diff.txt /*E75* +E750 repeat.txt /*E750* +E751 spell.txt /*E751* +E752 spell.txt /*E752* +E753 spell.txt /*E753* +E754 spell.txt /*E754* +E755 spell.txt /*E755* +E756 spell.txt /*E756* +E757 options.txt /*E757* +E758 spell.txt /*E758* +E759 spell.txt /*E759* +E76 pattern.txt /*E76* +E760 spell.txt /*E760* +E761 spell.txt /*E761* +E762 spell.txt /*E762* +E763 spell.txt /*E763* +E764 options.txt /*E764* +E765 options.txt /*E765* +E766 builtin.txt /*E766* +E767 builtin.txt /*E767* +E768 message.txt /*E768* +E769 pattern.txt /*E769* +E77 message.txt /*E77* +E770 spell.txt /*E770* +E771 spell.txt /*E771* +E772 spell.txt /*E772* +E773 recover.txt /*E773* +E774 map.txt /*E774* +E775 map.txt /*E775* +E776 quickfix.txt /*E776* +E777 quickfix.txt /*E777* +E778 spell.txt /*E778* +E779 spell.txt /*E779* +E78 motion.txt /*E78* +E780 spell.txt /*E780* +E781 spell.txt /*E781* +E782 spell.txt /*E782* +E783 spell.txt /*E783* +E784 tabpage.txt /*E784* +E785 builtin.txt /*E785* +E786 builtin.txt /*E786* +E787 diff.txt /*E787* +E788 autocmd.txt /*E788* +E789 syntax.txt /*E789* +E79 message.txt /*E79* +E790 undo.txt /*E790* +E791 mbyte.txt /*E791* +E792 gui.txt /*E792* +E793 diff.txt /*E793* +E794 eval.txt /*E794* +E795 eval.txt /*E795* +E796 options.txt /*E796* +E797 spell.txt /*E797* +E798 builtin.txt /*E798* +E799 builtin.txt /*E799* +E80 message.txt /*E80* +E800 arabic.txt /*E800* +E801 builtin.txt /*E801* +E802 builtin.txt /*E802* +E803 builtin.txt /*E803* +E804 eval.txt /*E804* +E805 eval.txt /*E805* +E806 eval.txt /*E806* +E807 builtin.txt /*E807* +E808 eval.txt /*E808* +E809 cmdline.txt /*E809* +E81 map.txt /*E81* +E810 diff.txt /*E810* +E811 autocmd.txt /*E811* +E812 autocmd.txt /*E812* +E813 editing.txt /*E813* +E814 editing.txt /*E814* +E815 if_mzsch.txt /*E815* +E816 diff.txt /*E816* +E817 editing.txt /*E817* +E818 editing.txt /*E818* +E819 editing.txt /*E819* +E82 message.txt /*E82* +E820 editing.txt /*E820* +E821 options.txt /*E821* +E822 undo.txt /*E822* +E823 undo.txt /*E823* +E824 undo.txt /*E824* +E825 undo.txt /*E825* +E826 undo.txt /*E826* +E827 undo.txt /*E827* +E828 undo.txt /*E828* +E829 undo.txt /*E829* +E83 message.txt /*E83* +E830 undo.txt /*E830* +E831 editing.txt /*E831* +E832 undo.txt /*E832* +E833 editing.txt /*E833* +E834 options.txt /*E834* +E835 options.txt /*E835* +E836 if_pyth.txt /*E836* +E837 if_pyth.txt /*E837* +E838 netbeans.txt /*E838* +E84 windows.txt /*E84* +E840 insert.txt /*E840* +E841 map.txt /*E841* +E842 cmdline.txt /*E842* +E843 editing.txt /*E843* +E844 syntax.txt /*E844* +E845 spell.txt /*E845* +E846 options.txt /*E846* +E847 syntax.txt /*E847* +E848 syntax.txt /*E848* +E849 syntax.txt /*E849* +E85 options.txt /*E85* +E850 change.txt /*E850* +E851 gui_x11.txt /*E851* +E852 gui_x11.txt /*E852* +E853 userfunc.txt /*E853* +E854 options.txt /*E854* +E855 autocmd.txt /*E855* +E856 testing.txt /*E856* +E857 builtin.txt /*E857* +E858 builtin.txt /*E858* +E859 builtin.txt /*E859* +E86 windows.txt /*E86* +E860 textprop.txt /*E860* +E861 popup.txt /*E861* +E862 eval.txt /*E862* +E863 popup.txt /*E863* +E864 pattern.txt /*E864* +E865 pattern.txt /*E865* +E866 pattern.txt /*E866* +E867 pattern.txt /*E867* +E868 pattern.txt /*E868* +E869 pattern.txt /*E869* +E87 windows.txt /*E87* +E870 pattern.txt /*E870* +E871 pattern.txt /*E871* +E872 pattern.txt /*E872* +E873 pattern.txt /*E873* +E874 pattern.txt /*E874* +E875 pattern.txt /*E875* +E876 pattern.txt /*E876* +E877 pattern.txt /*E877* +E878 pattern.txt /*E878* +E879 syntax.txt /*E879* +E88 windows.txt /*E88* +E880 if_pyth.txt /*E880* +E881 autocmd.txt /*E881* +E882 builtin.txt /*E882* +E883 builtin.txt /*E883* +E884 userfunc.txt /*E884* +E885 sign.txt /*E885* +E886 starting.txt /*E886* +E887 if_pyth.txt /*E887* +E888 pattern.txt /*E888* +E889 message.txt /*E889* +E89 message.txt /*E89* +E890 syntax.txt /*E890* +E891 eval.txt /*E891* +E892 eval.txt /*E892* +E893 eval.txt /*E893* +E894 eval.txt /*E894* +E895 if_mzsch.txt /*E895* +E896 eval.txt /*E896* +E897 eval.txt /*E897* +E898 channel.txt /*E898* +E899 eval.txt /*E899* +E90 message.txt /*E90* +E900 builtin.txt /*E900* +E901 channel.txt /*E901* +E902 channel.txt /*E902* +E903 channel.txt /*E903* +E904 channel.txt /*E904* +E905 channel.txt /*E905* +E906 channel.txt /*E906* +E907 eval.txt /*E907* +E908 eval.txt /*E908* +E909 eval.txt /*E909* +E91 options.txt /*E91* +E910 eval.txt /*E910* +E911 eval.txt /*E911* +E912 channel.txt /*E912* +E913 eval.txt /*E913* +E914 eval.txt /*E914* +E915 channel.txt /*E915* +E916 channel.txt /*E916* +E917 channel.txt /*E917* +E918 channel.txt /*E918* +E919 repeat.txt /*E919* +E92 message.txt /*E92* +E920 channel.txt /*E920* +E921 channel.txt /*E921* +E923 builtin.txt /*E923* +E924 quickfix.txt /*E924* +E925 quickfix.txt /*E925* +E926 quickfix.txt /*E926* +E927 builtin.txt /*E927* +E928 message.txt /*E928* +E929 starting.txt /*E929* +E93 windows.txt /*E93* +E930 builtin.txt /*E930* +E931 message.txt /*E931* +E932 userfunc.txt /*E932* +E933 userfunc.txt /*E933* +E934 sign.txt /*E934* +E935 builtin.txt /*E935* +E936 autocmd.txt /*E936* +E937 autocmd.txt /*E937* +E938 builtin.txt /*E938* +E939 change.txt /*E939* +E94 windows.txt /*E94* +E940 eval.txt /*E940* +E941 builtin.txt /*E941* +E942 builtin.txt /*E942* +E943 message.txt /*E943* +E944 pattern.txt /*E944* +E945 pattern.txt /*E945* +E946 terminal.txt /*E946* +E947 terminal.txt /*E947* +E948 terminal.txt /*E948* +E949 editing.txt /*E949* +E95 message.txt /*E95* +E950 options.txt /*E950* +E951 pattern.txt /*E951* +E952 autocmd.txt /*E952* +E953 terminal.txt /*E953* +E954 options.txt /*E954* +E955 terminal.txt /*E955* +E956 pattern.txt /*E956* +E957 builtin.txt /*E957* +E958 terminal.txt /*E958* +E959 diff.txt /*E959* +E96 diff.txt /*E96* +E960 options.txt /*E960* +E961 cmdline.txt /*E961* +E962 builtin.txt /*E962* +E963 eval.txt /*E963* +E964 textprop.txt /*E964* +E965 textprop.txt /*E965* +E966 textprop.txt /*E966* +E967 textprop.txt /*E967* +E968 textprop.txt /*E968* +E969 textprop.txt /*E969* +E97 diff.txt /*E97* +E970 textprop.txt /*E970* +E971 textprop.txt /*E971* +E972 eval.txt /*E972* +E973 eval.txt /*E973* +E974 eval.txt /*E974* +E975 eval.txt /*E975* +E976 eval.txt /*E976* +E977 eval.txt /*E977* +E978 eval.txt /*E978* +E979 eval.txt /*E979* +E98 diff.txt /*E98* +E980 builtin.txt /*E980* +E981 starting.txt /*E981* +E982 terminal.txt /*E982* +E983 message.txt /*E983* +E984 repeat.txt /*E984* +E985 eval.txt /*E985* +E986 tagsrch.txt /*E986* +E987 tagsrch.txt /*E987* +E988 gui_w32.txt /*E988* +E989 userfunc.txt /*E989* +E99 diff.txt /*E99* +E990 eval.txt /*E990* +E991 eval.txt /*E991* +E992 options.txt /*E992* +E993 popup.txt /*E993* +E994 builtin.txt /*E994* +E995 eval.txt /*E995* +E996 eval.txt /*E996* +E997 popup.txt /*E997* +E998 builtin.txt /*E998* +E999 repeat.txt /*E999* +EX intro.txt /*EX* +EXINIT starting.txt /*EXINIT* +Elvis intro.txt /*Elvis* +EncodingChanged autocmd.txt /*EncodingChanged* +Eterm syntax.txt /*Eterm* +Ex intro.txt /*Ex* +Ex-mode intro.txt /*Ex-mode* +ExitPre autocmd.txt /*ExitPre* +Exuberant_ctags tagsrch.txt /*Exuberant_ctags* +F motion.txt /*F* +FALSE eval.txt /*FALSE* +FAQ intro.txt /*FAQ* +Farsi farsi.txt /*Farsi* +FileAppendCmd autocmd.txt /*FileAppendCmd* +FileAppendPost autocmd.txt /*FileAppendPost* +FileAppendPre autocmd.txt /*FileAppendPre* +FileChangedRO autocmd.txt /*FileChangedRO* +FileChangedShell autocmd.txt /*FileChangedShell* +FileChangedShellPost autocmd.txt /*FileChangedShellPost* +FileEncoding autocmd.txt /*FileEncoding* +FileExplorer autocmd.txt /*FileExplorer* +FileReadCmd autocmd.txt /*FileReadCmd* +FileReadPost autocmd.txt /*FileReadPost* +FileReadPre autocmd.txt /*FileReadPre* +FileType autocmd.txt /*FileType* +FileWriteCmd autocmd.txt /*FileWriteCmd* +FileWritePost autocmd.txt /*FileWritePost* +FileWritePre autocmd.txt /*FileWritePre* +FilterReadPost autocmd.txt /*FilterReadPost* +FilterReadPre autocmd.txt /*FilterReadPre* +FilterWritePost autocmd.txt /*FilterWritePost* +FilterWritePre autocmd.txt /*FilterWritePre* +Float eval.txt /*Float* +FocusGained autocmd.txt /*FocusGained* +FocusLost autocmd.txt /*FocusLost* +Folding fold.txt /*Folding* +FuncUndefined autocmd.txt /*FuncUndefined* +Funcref eval.txt /*Funcref* +G motion.txt /*G* +GNOME gui_x11.txt /*GNOME* +GTK gui_x11.txt /*GTK* +GTK+ gui_x11.txt /*GTK+* +GTK3 gui_x11.txt /*GTK3* +GUI gui.txt /*GUI* +GUI-X11 gui_x11.txt /*GUI-X11* +GUIEnter autocmd.txt /*GUIEnter* +GUIFailed autocmd.txt /*GUIFailed* +GetLatestVimScripts pi_getscript.txt /*GetLatestVimScripts* +GetLatestVimScripts-copyright pi_getscript.txt /*GetLatestVimScripts-copyright* +GetLatestVimScripts_dat pi_getscript.txt /*GetLatestVimScripts_dat* +Gnome gui_x11.txt /*Gnome* +H motion.txt /*H* +Haiku os_haiku.txt /*Haiku* +I insert.txt /*I* +ICCF uganda.txt /*ICCF* +IM-server mbyte.txt /*IM-server* +IME mbyte.txt /*IME* +Insert insert.txt /*Insert* +Insert-mode insert.txt /*Insert-mode* +InsertChange autocmd.txt /*InsertChange* +InsertCharPre autocmd.txt /*InsertCharPre* +InsertEnter autocmd.txt /*InsertEnter* +InsertLeave autocmd.txt /*InsertLeave* +InsertLeavePre autocmd.txt /*InsertLeavePre* +Integer eval.txt /*Integer* +Interface vim9class.txt /*Interface* +J change.txt /*J* +Japanese mbyte.txt /*Japanese* +Job eval.txt /*Job* +Jobs eval.txt /*Jobs* +K various.txt /*K* +KDE gui_x11.txt /*KDE* +KVim gui_x11.txt /*KVim* +Kibaale uganda.txt /*Kibaale* +Korean mbyte.txt /*Korean* +L motion.txt /*L* +Linux-backspace options.txt /*Linux-backspace* +List eval.txt /*List* +Lists eval.txt /*Lists* +LogiPat() pi_logipat.txt /*LogiPat()* +LogiPat-flags pi_logipat.txt /*LogiPat-flags* +Lua if_lua.txt /*Lua* +M motion.txt /*M* +MDI starting.txt /*MDI* +MS-DOS os_msdos.txt /*MS-DOS* +MS-Windows os_win32.txt /*MS-Windows* +MSDOS os_msdos.txt /*MSDOS* +MSVisualStudio if_ole.txt /*MSVisualStudio* +MVS os_390.txt /*MVS* +Mac os_mac.txt /*Mac* +Mac-format editing.txt /*Mac-format* +Mac-format-write editing.txt /*Mac-format-write* +Macintosh os_mac.txt /*Macintosh* +Mark motion.txt /*Mark* +MenuPopup autocmd.txt /*MenuPopup* +MiNT os_mint.txt /*MiNT* +ModeChanged autocmd.txt /*ModeChanged* +Moolenaar version9.txt /*Moolenaar* +MorphOS os_amiga.txt /*MorphOS* +Motif gui_x11.txt /*Motif* +Myspell spell.txt /*Myspell* +MzScheme if_mzsch.txt /*MzScheme* +N pattern.txt /*N* +N% motion.txt /*N%* +N: cmdline.txt /*N:* +N<Del> various.txt /*N<Del>* +NFA pattern.txt /*NFA* +NL-used-for-Nul pattern.txt /*NL-used-for-Nul* +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* +Number eval.txt /*Number* +Nvi intro.txt /*Nvi* +O insert.txt /*O* +OS/2 os_os2.txt /*OS\/2* +OS2 os_os2.txt /*OS2* +OS390 os_390.txt /*OS390* +OS390-Motif os_390.txt /*OS390-Motif* +OS390-PuTTY os_390.txt /*OS390-PuTTY* +OS390-bugs os_390.txt /*OS390-bugs* +OS390-has-ebcdic os_390.txt /*OS390-has-ebcdic* +OS390-limitations os_390.txt /*OS390-limitations* +OS390-open-source os_390.txt /*OS390-open-source* +Object vim9class.txt /*Object* +OffTheSpot mbyte.txt /*OffTheSpot* +OnTheSpot mbyte.txt /*OnTheSpot* +Operator-pending intro.txt /*Operator-pending* +Operator-pending-mode intro.txt /*Operator-pending-mode* +OptionSet autocmd.txt /*OptionSet* +OverTheSpot mbyte.txt /*OverTheSpot* +P change.txt /*P* +PATHEXT builtin.txt /*PATHEXT* +PEP8 filetype.txt /*PEP8* +PHP_BracesAtCodeLevel indent.txt /*PHP_BracesAtCodeLevel* +PHP_IndentFunctionCallParameters indent.txt /*PHP_IndentFunctionCallParameters* +PHP_IndentFunctionDeclarationParameters indent.txt /*PHP_IndentFunctionDeclarationParameters* +PHP_autoformatcomment indent.txt /*PHP_autoformatcomment* +PHP_default_indenting indent.txt /*PHP_default_indenting* +PHP_noArrowMatching indent.txt /*PHP_noArrowMatching* +PHP_outdentSLComments indent.txt /*PHP_outdentSLComments* +PHP_outdentphpescape indent.txt /*PHP_outdentphpescape* +PHP_removeCRwhenUnix indent.txt /*PHP_removeCRwhenUnix* +PHP_vintage_case_default_indent indent.txt /*PHP_vintage_case_default_indent* +Partial eval.txt /*Partial* +Pattern pattern.txt /*Pattern* +Perl if_perl.txt /*Perl* +Posix intro.txt /*Posix* +Python if_pyth.txt /*Python* +Q intro.txt /*Q* +Q-command-changed version5.txt /*Q-command-changed* +QNX os_qnx.txt /*QNX* +Q_ab quickref.txt /*Q_ab* +Q_ac quickref.txt /*Q_ac* +Q_ai quickref.txt /*Q_ai* +Q_bu quickref.txt /*Q_bu* +Q_ce quickref.txt /*Q_ce* +Q_ch quickref.txt /*Q_ch* +Q_cm quickref.txt /*Q_cm* +Q_co quickref.txt /*Q_co* +Q_ct help.txt /*Q_ct* +Q_de quickref.txt /*Q_de* +Q_di quickref.txt /*Q_di* +Q_ed quickref.txt /*Q_ed* +Q_et quickref.txt /*Q_et* +Q_ex quickref.txt /*Q_ex* +Q_fl quickref.txt /*Q_fl* +Q_fo quickref.txt /*Q_fo* +Q_gu quickref.txt /*Q_gu* +Q_in quickref.txt /*Q_in* +Q_km quickref.txt /*Q_km* +Q_lr quickref.txt /*Q_lr* +Q_ma quickref.txt /*Q_ma* +Q_op quickref.txt /*Q_op* +Q_pa quickref.txt /*Q_pa* +Q_qf quickref.txt /*Q_qf* +Q_ra quickref.txt /*Q_ra* +Q_re quickref.txt /*Q_re* +Q_sc quickref.txt /*Q_sc* +Q_si quickref.txt /*Q_si* +Q_ss quickref.txt /*Q_ss* +Q_st quickref.txt /*Q_st* +Q_sy quickref.txt /*Q_sy* +Q_ta quickref.txt /*Q_ta* +Q_tm quickref.txt /*Q_tm* +Q_to quickref.txt /*Q_to* +Q_ud quickref.txt /*Q_ud* +Q_ur quickref.txt /*Q_ur* +Q_vc quickref.txt /*Q_vc* +Q_vi quickref.txt /*Q_vi* +Q_vm quickref.txt /*Q_vm* +Q_wi quickref.txt /*Q_wi* +Q_wq quickref.txt /*Q_wq* +QuickFixCmdPost autocmd.txt /*QuickFixCmdPost* +QuickFixCmdPost-example quickfix.txt /*QuickFixCmdPost-example* +QuickFixCmdPre autocmd.txt /*QuickFixCmdPre* +Quickfix quickfix.txt /*Quickfix* +QuitPre autocmd.txt /*QuitPre* +R change.txt /*R* +RISC-OS os_risc.txt /*RISC-OS* +RISCOS os_risc.txt /*RISCOS* +RemoteReply autocmd.txt /*RemoteReply* +Replace insert.txt /*Replace* +Replace-mode insert.txt /*Replace-mode* +Root mbyte.txt /*Root* +Ruby if_ruby.txt /*Ruby* +Russian russian.txt /*Russian* +S change.txt /*S* +SHELL starting.txt /*SHELL* +SQLGetType ft_sql.txt /*SQLGetType* +SQLSetType ft_sql.txt /*SQLSetType* +SafeState autocmd.txt /*SafeState* +SafeStateAgain autocmd.txt /*SafeStateAgain* +Select visual.txt /*Select* +Select-mode visual.txt /*Select-mode* +Select-mode-mapping visual.txt /*Select-mode-mapping* +Session starting.txt /*Session* +SessionLoad-variable starting.txt /*SessionLoad-variable* +SessionLoadPost autocmd.txt /*SessionLoadPost* +ShellCmdPost autocmd.txt /*ShellCmdPost* +ShellFilterPost autocmd.txt /*ShellFilterPost* +SigUSR1 autocmd.txt /*SigUSR1* +SourceCmd autocmd.txt /*SourceCmd* +SourcePost autocmd.txt /*SourcePost* +SourcePre autocmd.txt /*SourcePre* +Special eval.txt /*Special* +SpellFileMissing autocmd.txt /*SpellFileMissing* +StdinReadPost autocmd.txt /*StdinReadPost* +StdinReadPre autocmd.txt /*StdinReadPre* +String eval.txt /*String* +Sven-Guckes version9.txt /*Sven-Guckes* +SwapExists autocmd.txt /*SwapExists* +Syntax autocmd.txt /*Syntax* +T motion.txt /*T* +TCL if_tcl.txt /*TCL* +TERM starting.txt /*TERM* +TOhtml-encoding syntax.txt /*TOhtml-encoding* +TOhtml-encoding-detect syntax.txt /*TOhtml-encoding-detect* +TOhtml-performance syntax.txt /*TOhtml-performance* +TOhtml-progress-color syntax.txt /*TOhtml-progress-color* +TOhtml-uncopyable-text syntax.txt /*TOhtml-uncopyable-text* +TOhtml-wrap-text syntax.txt /*TOhtml-wrap-text* +TRUE eval.txt /*TRUE* +TSQL ft_sql.txt /*TSQL* +TTpro-telnet syntax.txt /*TTpro-telnet* +Tab intro.txt /*Tab* +TabClosed autocmd.txt /*TabClosed* +TabEnter autocmd.txt /*TabEnter* +TabLeave autocmd.txt /*TabLeave* +TabNew autocmd.txt /*TabNew* +Tcl if_tcl.txt /*Tcl* +TermChanged autocmd.txt /*TermChanged* +TermResponse autocmd.txt /*TermResponse* +TermdebugStartPost terminal.txt /*TermdebugStartPost* +TermdebugStartPre terminal.txt /*TermdebugStartPre* +TermdebugStopPost terminal.txt /*TermdebugStopPost* +TermdebugStopPre terminal.txt /*TermdebugStopPre* +Terminal-Job terminal.txt /*Terminal-Job* +Terminal-Normal terminal.txt /*Terminal-Normal* +Terminal-mode terminal.txt /*Terminal-mode* +TerminalOpen autocmd.txt /*TerminalOpen* +TerminalWinOpen autocmd.txt /*TerminalWinOpen* +TextChanged autocmd.txt /*TextChanged* +TextChangedI autocmd.txt /*TextChangedI* +TextChangedP autocmd.txt /*TextChangedP* +TextChangedT autocmd.txt /*TextChangedT* +TextYankPost autocmd.txt /*TextYankPost* +Transact-SQL ft_sql.txt /*Transact-SQL* +U undo.txt /*U* +UTF-8 mbyte.txt /*UTF-8* +UTF8-xterm mbyte.txt /*UTF8-xterm* +Uganda uganda.txt /*Uganda* +Unicode mbyte.txt /*Unicode* +Unix os_unix.txt /*Unix* +Unix-format editing.txt /*Unix-format* +Unix-format-write editing.txt /*Unix-format-write* +User autocmd.txt /*User* +UserGettingBored autocmd.txt /*UserGettingBored* +V visual.txt /*V* +VIMINIT starting.txt /*VIMINIT* +VMS os_vms.txt /*VMS* +Vi intro.txt /*Vi* +View starting.txt /*View* +Vim9 vim9.txt /*Vim9* +Vim9-abstract-class vim9class.txt /*Vim9-abstract-class* +Vim9-class vim9class.txt /*Vim9-class* +Vim9-class-member vim9class.txt /*Vim9-class-member* +Vim9-class-overview vim9class.txt /*Vim9-class-overview* +Vim9-enum vim9class.txt /*Vim9-enum* +Vim9-script vim9.txt /*Vim9-script* +Vim9-simple-class vim9class.txt /*Vim9-simple-class* +Vim9-type vim9class.txt /*Vim9-type* +Vim9-using-interface vim9class.txt /*Vim9-using-interface* +VimEnter autocmd.txt /*VimEnter* +VimLeave autocmd.txt /*VimLeave* +VimLeavePre autocmd.txt /*VimLeavePre* +VimResized autocmd.txt /*VimResized* +VimResume autocmd.txt /*VimResume* +VimSuspend autocmd.txt /*VimSuspend* +Vimball-copyright pi_vimball.txt /*Vimball-copyright* +Virtual-Replace-mode insert.txt /*Virtual-Replace-mode* +Visual visual.txt /*Visual* +Visual-mode visual.txt /*Visual-mode* +W motion.txt /*W* +W10 message.txt /*W10* +W11 message.txt /*W11* +W12 message.txt /*W12* +W13 message.txt /*W13* +W14 message.txt /*W14* +W15 repeat.txt /*W15* +W16 message.txt /*W16* +W17 arabic.txt /*W17* +W18 syntax.txt /*W18* +W19 autocmd.txt /*W19* +W20 if_pyth.txt /*W20* +W21 if_pyth.txt /*W21* +W22 userfunc.txt /*W22* +WORD motion.txt /*WORD* +WSL os_win32.txt /*WSL* +WWW intro.txt /*WWW* +Win32 os_win32.txt /*Win32* +WinBar gui.txt /*WinBar* +WinClosed autocmd.txt /*WinClosed* +WinEnter autocmd.txt /*WinEnter* +WinLeave autocmd.txt /*WinLeave* +WinNew autocmd.txt /*WinNew* +WinResized autocmd.txt /*WinResized* +WinResized-event windows.txt /*WinResized-event* +WinScrolled autocmd.txt /*WinScrolled* +WinScrolled-event windows.txt /*WinScrolled-event* +X change.txt /*X* +X11 options.txt /*X11* +X11-icon gui_x11.txt /*X11-icon* +X11_mouse_shapes gui_x11.txt /*X11_mouse_shapes* +X1Drag term.txt /*X1Drag* +X1Mouse term.txt /*X1Mouse* +X1Release term.txt /*X1Release* +X2Drag term.txt /*X2Drag* +X2Mouse term.txt /*X2Mouse* +X2Release term.txt /*X2Release* +XIM mbyte.txt /*XIM* +XLFD mbyte.txt /*XLFD* +Y change.txt /*Y* +Y2K intro.txt /*Y2K* +ZQ editing.txt /*ZQ* +ZZ editing.txt /*ZZ* +[ index.txt /*[* +[# motion.txt /*[#* +[' motion.txt /*['* +[( motion.txt /*[(* +[++opt] editing.txt /*[++opt]* +[+cmd] editing.txt /*[+cmd]* +[..] pattern.txt /*[..]* +[/ motion.txt /*[\/* +[:alnum:] pattern.txt /*[:alnum:]* +[:alpha:] pattern.txt /*[:alpha:]* +[:backspace:] pattern.txt /*[:backspace:]* +[:blank:] pattern.txt /*[:blank:]* +[:cntrl:] pattern.txt /*[:cntrl:]* +[:digit:] pattern.txt /*[:digit:]* +[:escape:] pattern.txt /*[:escape:]* +[:fname:] pattern.txt /*[:fname:]* +[:graph:] pattern.txt /*[:graph:]* +[:ident:] pattern.txt /*[:ident:]* +[:keyword:] pattern.txt /*[:keyword:]* +[:lower:] pattern.txt /*[:lower:]* +[:print:] pattern.txt /*[:print:]* +[:punct:] pattern.txt /*[:punct:]* +[:return:] pattern.txt /*[:return:]* +[:space:] pattern.txt /*[:space:]* +[:tab:] pattern.txt /*[:tab:]* +[:upper:] pattern.txt /*[:upper:]* +[:xdigit:] pattern.txt /*[:xdigit:]* +[<MiddleMouse> change.txt /*[<MiddleMouse>* +[==] pattern.txt /*[==]* +[D tagsrch.txt /*[D* +[I tagsrch.txt /*[I* +[M motion.txt /*[M* +[P change.txt /*[P* +[S spell.txt /*[S* +[[ motion.txt /*[[* +[] motion.txt /*[]* +[_CTRL-D tagsrch.txt /*[_CTRL-D* +[_CTRL-I tagsrch.txt /*[_CTRL-I* +[` motion.txt /*[`* +[c diff.txt /*[c* +[count] intro.txt /*[count]* +[d tagsrch.txt /*[d* +[f editing.txt /*[f* +[i tagsrch.txt /*[i* +[m motion.txt /*[m* +[p change.txt /*[p* +[pattern] pattern.txt /*[pattern]* +[quotex] intro.txt /*[quotex]* +[range] cmdline.txt /*[range]* +[s spell.txt /*[s* +[star motion.txt /*[star* +[z fold.txt /*[z* +[{ motion.txt /*[{* +\0 change.txt /*\\0* +] index.txt /*]* +]# motion.txt /*]#* +]' motion.txt /*]'* +]) motion.txt /*])* +]/ motion.txt /*]\/* +]<MiddleMouse> change.txt /*]<MiddleMouse>* +]D tagsrch.txt /*]D* +]I tagsrch.txt /*]I* +]M motion.txt /*]M* +]P change.txt /*]P* +]S spell.txt /*]S* +][ motion.txt /*][* +]] motion.txt /*]]* +]_CTRL-D tagsrch.txt /*]_CTRL-D* +]_CTRL-I tagsrch.txt /*]_CTRL-I* +]` motion.txt /*]`* +]c diff.txt /*]c* +]d tagsrch.txt /*]d* +]f editing.txt /*]f* +]i tagsrch.txt /*]i* +]m motion.txt /*]m* +]p change.txt /*]p* +]s spell.txt /*]s* +]star motion.txt /*]star* +]z fold.txt /*]z* +]} motion.txt /*]}* +^ motion.txt /*^* +_ motion.txt /*_* +_exrc starting.txt /*_exrc* +_gvimrc gui.txt /*_gvimrc* +_vimrc starting.txt /*_vimrc* +` motion.txt /*`* +`( motion.txt /*`(* +`) motion.txt /*`)* +`-expansion editing.txt /*`-expansion* +`. motion.txt /*`.* +`0 motion.txt /*`0* +`< motion.txt /*`<* +`= editing.txt /*`=* +`> motion.txt /*`>* +`A motion.txt /*`A* +`[ motion.txt /*`[* +`] motion.txt /*`]* +`^ motion.txt /*`^* +`` motion.txt /*``* +`a motion.txt /*`a* +`quote motion.txt /*`quote* +`{ motion.txt /*`{* +`} motion.txt /*`}* +a insert.txt /*a* +a' motion.txt /*a'* +a( motion.txt /*a(* +a) motion.txt /*a)* +a4 print.txt /*a4* +a:0 userfunc.txt /*a:0* +a:000 userfunc.txt /*a:000* +a:1 userfunc.txt /*a:1* +a:firstline userfunc.txt /*a:firstline* +a:lastline userfunc.txt /*a:lastline* +a:var userfunc.txt /*a:var* +a< motion.txt /*a<* +a> motion.txt /*a>* +aB motion.txt /*aB* +aW motion.txt /*aW* +a[ motion.txt /*a[* +a] motion.txt /*a]* +a` motion.txt /*a`* +ab motion.txt /*ab* +abandon editing.txt /*abandon* +abbreviations map.txt /*abbreviations* +abel.vim syntax.txt /*abel.vim* +abs() builtin.txt /*abs()* +abstract-method vim9class.txt /*abstract-method* +acos() builtin.txt /*acos()* +active-buffer windows.txt /*active-buffer* +ada#Create_Tags() ft_ada.txt /*ada#Create_Tags()* +ada#Jump_Tag() ft_ada.txt /*ada#Jump_Tag()* +ada#Listtags() ft_ada.txt /*ada#Listtags()* +ada#Switch_Syntax_Option() ft_ada.txt /*ada#Switch_Syntax_Option()* +ada#Word() ft_ada.txt /*ada#Word()* +ada-compiler ft_ada.txt /*ada-compiler* +ada-ctags ft_ada.txt /*ada-ctags* +ada-extra-plugins ft_ada.txt /*ada-extra-plugins* +ada-reference ft_ada.txt /*ada-reference* +ada.vim ft_ada.txt /*ada.vim* +add() builtin.txt /*add()* +add-filetype-plugin usr_05.txt /*add-filetype-plugin* +add-global-plugin usr_05.txt /*add-global-plugin* +add-local-help usr_05.txt /*add-local-help* +add-option-flags options.txt /*add-option-flags* +add-package usr_05.txt /*add-package* +add-plugin usr_05.txt /*add-plugin* +added-5.1 version5.txt /*added-5.1* +added-5.2 version5.txt /*added-5.2* +added-5.3 version5.txt /*added-5.3* +added-5.4 version5.txt /*added-5.4* +added-5.5 version5.txt /*added-5.5* +added-5.6 version5.txt /*added-5.6* +added-5.7 version5.txt /*added-5.7* +added-5.8 version5.txt /*added-5.8* +added-6.1 version6.txt /*added-6.1* +added-6.2 version6.txt /*added-6.2* +added-6.3 version6.txt /*added-6.3* +added-6.4 version6.txt /*added-6.4* +added-7.1 version7.txt /*added-7.1* +added-7.2 version7.txt /*added-7.2* +added-7.3 version7.txt /*added-7.3* +added-7.4 version7.txt /*added-7.4* +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-BeOS version5.txt /*added-BeOS* +added-Mac version5.txt /*added-Mac* +added-VMS version5.txt /*added-VMS* +added-cmdline-args version5.txt /*added-cmdline-args* +added-options version5.txt /*added-options* +added-regexp version5.txt /*added-regexp* +added-various version5.txt /*added-various* +added-win32-GUI version5.txt /*added-win32-GUI* +aff-dic-format spell.txt /*aff-dic-format* +after-directory options.txt /*after-directory* +aleph options.txt /*aleph* +alt intro.txt /*alt* +alt-input debugger.txt /*alt-input* +alternate-file editing.txt /*alternate-file* +amiga-window starting.txt /*amiga-window* +and() builtin.txt /*and()* +anonymous-function eval.txt /*anonymous-function* +ant.vim syntax.txt /*ant.vim* +ap motion.txt /*ap* +apache.vim syntax.txt /*apache.vim* +append() builtin.txt /*append()* +appendbufline() builtin.txt /*appendbufline()* +aquote motion.txt /*aquote* +arabic.txt arabic.txt /*arabic.txt* +arabicfonts arabic.txt /*arabicfonts* +arabickeymap arabic.txt /*arabickeymap* +arg-functions usr_41.txt /*arg-functions* +argc() builtin.txt /*argc()* +argidx() builtin.txt /*argidx()* +arglist editing.txt /*arglist* +arglist-position editing.txt /*arglist-position* +arglist-quit usr_07.txt /*arglist-quit* +arglistid() builtin.txt /*arglistid()* +argument-list editing.txt /*argument-list* +argv() builtin.txt /*argv()* +argv-variable eval.txt /*argv-variable* +arrow_modifiers term.txt /*arrow_modifiers* +as motion.txt /*as* +asin() builtin.txt /*asin()* +asm.vim syntax.txt /*asm.vim* +asm68k syntax.txt /*asm68k* +asmh8300.vim syntax.txt /*asmh8300.vim* +assert-functions-details testing.txt /*assert-functions-details* +assert-return eval.txt /*assert-return* +assert_beeps() testing.txt /*assert_beeps()* +assert_equal() testing.txt /*assert_equal()* +assert_equalfile() testing.txt /*assert_equalfile()* +assert_exception() testing.txt /*assert_exception()* +assert_fails() testing.txt /*assert_fails()* +assert_false() testing.txt /*assert_false()* +assert_inrange() testing.txt /*assert_inrange()* +assert_match() testing.txt /*assert_match()* +assert_nobeep() testing.txt /*assert_nobeep()* +assert_notequal() testing.txt /*assert_notequal()* +assert_notmatch() testing.txt /*assert_notmatch()* +assert_report() testing.txt /*assert_report()* +assert_true() testing.txt /*assert_true()* +at motion.txt /*at* +atan() builtin.txt /*atan()* +atan2() builtin.txt /*atan2()* +attr-list syntax.txt /*attr-list* +author intro.txt /*author* +auto-format change.txt /*auto-format* +auto-setting options.txt /*auto-setting* +auto-shortname editing.txt /*auto-shortname* +autocmd-<> tips.txt /*autocmd-<>* +autocmd-buffer-local autocmd.txt /*autocmd-buffer-local* +autocmd-buflocal autocmd.txt /*autocmd-buflocal* +autocmd-changes autocmd.txt /*autocmd-changes* +autocmd-define autocmd.txt /*autocmd-define* +autocmd-disable autocmd.txt /*autocmd-disable* +autocmd-events autocmd.txt /*autocmd-events* +autocmd-events-abc autocmd.txt /*autocmd-events-abc* +autocmd-execute autocmd.txt /*autocmd-execute* +autocmd-expand autocmd.txt /*autocmd-expand* +autocmd-functions usr_41.txt /*autocmd-functions* +autocmd-groups autocmd.txt /*autocmd-groups* +autocmd-intro autocmd.txt /*autocmd-intro* +autocmd-list autocmd.txt /*autocmd-list* +autocmd-nested autocmd.txt /*autocmd-nested* +autocmd-once autocmd.txt /*autocmd-once* +autocmd-osfiletypes filetype.txt /*autocmd-osfiletypes* +autocmd-patterns autocmd.txt /*autocmd-patterns* +autocmd-remove autocmd.txt /*autocmd-remove* +autocmd-searchpat autocmd.txt /*autocmd-searchpat* +autocmd-use autocmd.txt /*autocmd-use* +autocmd.txt autocmd.txt /*autocmd.txt* +autocmd_add() builtin.txt /*autocmd_add()* +autocmd_delete() builtin.txt /*autocmd_delete()* +autocmd_get() builtin.txt /*autocmd_get()* +autocmds-kept version5.txt /*autocmds-kept* +autocommand autocmd.txt /*autocommand* +autocommand-events autocmd.txt /*autocommand-events* +autocommand-pattern autocmd.txt /*autocommand-pattern* +autocommands autocmd.txt /*autocommands* +autoformat change.txt /*autoformat* +autoload userfunc.txt /*autoload* +autoload-functions userfunc.txt /*autoload-functions* +avoid-hit-enter version5.txt /*avoid-hit-enter* +aw motion.txt /*aw* +a{ motion.txt /*a{* +a} motion.txt /*a}* +b motion.txt /*b* +b: eval.txt /*b:* +b:changedtick eval.txt /*b:changedtick* +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:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile* +b:rust_cargo_avoid_whole_workspace ft_rust.txt /*b:rust_cargo_avoid_whole_workspace* +b:rust_cargo_check_all_features ft_rust.txt /*b:rust_cargo_check_all_features* +b:rust_cargo_check_all_targets ft_rust.txt /*b:rust_cargo_check_all_targets* +b:rust_cargo_check_benches ft_rust.txt /*b:rust_cargo_check_benches* +b:rust_cargo_check_examples ft_rust.txt /*b:rust_cargo_check_examples* +b:rust_cargo_check_tests ft_rust.txt /*b:rust_cargo_check_tests* +b:rustfmt_autosave ft_rust.txt /*b:rustfmt_autosave* +b:tex_stylish syntax.txt /*b:tex_stylish* +b:var eval.txt /*b:var* +b:yaml_schema syntax.txt /*b:yaml_schema* +baan-folding syntax.txt /*baan-folding* +baan-syntax syntax.txt /*baan-syntax* +baan.vim syntax.txt /*baan.vim* +backslash intro.txt /*backslash* +backspace intro.txt /*backspace* +backspace-delete version4.txt /*backspace-delete* +backtick-expansion editing.txt /*backtick-expansion* +backup editing.txt /*backup* +backup-changed version4.txt /*backup-changed* +backup-extension version4.txt /*backup-extension* +backup-table editing.txt /*backup-table* +balloon-eval debugger.txt /*balloon-eval* +balloon_gettext() builtin.txt /*balloon_gettext()* +balloon_show() builtin.txt /*balloon_show()* +balloon_split() builtin.txt /*balloon_split()* +bar motion.txt /*bar* +bars help.txt /*bars* +base_font_name_list mbyte.txt /*base_font_name_list* +basic.vim syntax.txt /*basic.vim* +beep options.txt /*beep* +beos os_beos.txt /*beos* +better-python-interface version7.txt /*better-python-interface* +beval_bufnr-variable eval.txt /*beval_bufnr-variable* +beval_col-variable eval.txt /*beval_col-variable* +beval_lnum-variable eval.txt /*beval_lnum-variable* +beval_text-variable eval.txt /*beval_text-variable* +beval_winid-variable eval.txt /*beval_winid-variable* +beval_winnr-variable eval.txt /*beval_winnr-variable* +binary-number eval.txt /*binary-number* +bitwise-function usr_41.txt /*bitwise-function* +bitwise-shift eval.txt /*bitwise-shift* +blob eval.txt /*blob* +blob-functions usr_41.txt /*blob-functions* +blob-identity eval.txt /*blob-identity* +blob-index eval.txt /*blob-index* +blob-literal eval.txt /*blob-literal* +blob-modification eval.txt /*blob-modification* +blob2list() builtin.txt /*blob2list()* +blockwise-examples visual.txt /*blockwise-examples* +blockwise-operators visual.txt /*blockwise-operators* +blockwise-put change.txt /*blockwise-put* +blockwise-register change.txt /*blockwise-register* +blockwise-visual visual.txt /*blockwise-visual* +blowfish options.txt /*blowfish* +blowfish2 options.txt /*blowfish2* +bold syntax.txt /*bold* +bom-bytes mbyte.txt /*bom-bytes* +book intro.txt /*book* +bookmark usr_03.txt /*bookmark* +books intro.txt /*books* +boolean options.txt /*boolean* +break-finally eval.txt /*break-finally* +browse() builtin.txt /*browse()* +browsedir() builtin.txt /*browsedir()* +browsefilter editing.txt /*browsefilter* +bufadd() builtin.txt /*bufadd()* +bufexists() builtin.txt /*bufexists()* +buffer-functions usr_41.txt /*buffer-functions* +buffer-hidden windows.txt /*buffer-hidden* +buffer-list windows.txt /*buffer-list* +buffer-variable eval.txt /*buffer-variable* +buffer-write editing.txt /*buffer-write* +buffer_exists() builtin.txt /*buffer_exists()* +buffer_name() builtin.txt /*buffer_name()* +buffer_number() builtin.txt /*buffer_number()* +buffers windows.txt /*buffers* +buffers-menu gui.txt /*buffers-menu* +buflisted() builtin.txt /*buflisted()* +bufload() builtin.txt /*bufload()* +bufloaded() builtin.txt /*bufloaded()* +bufname() builtin.txt /*bufname()* +bufnr() builtin.txt /*bufnr()* +bufwinid() builtin.txt /*bufwinid()* +bufwinnr() builtin.txt /*bufwinnr()* +bug-fixes-5 version5.txt /*bug-fixes-5* +bug-fixes-6 version6.txt /*bug-fixes-6* +bug-fixes-7 version7.txt /*bug-fixes-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-reports intro.txt /*bug-reports* +bugreport.vim intro.txt /*bugreport.vim* +bugs intro.txt /*bugs* +builtin-function-details builtin.txt /*builtin-function-details* +builtin-function-list builtin.txt /*builtin-function-list* +builtin-functions builtin.txt /*builtin-functions* +builtin-terms term.txt /*builtin-terms* +builtin-tools gui.txt /*builtin-tools* +builtin.txt builtin.txt /*builtin.txt* +builtin_terms term.txt /*builtin_terms* +byte-count editing.txt /*byte-count* +byte2line() builtin.txt /*byte2line()* +byteidx() builtin.txt /*byteidx()* +byteidxcomp() builtin.txt /*byteidxcomp()* +bzip2 pi_gzip.txt /*bzip2* +c change.txt /*c* +c.vim syntax.txt /*c.vim* +cW change.txt /*cW* +c_# cmdline.txt /*c_#* +c_## cmdline.txt /*c_##* +c_#< cmdline.txt /*c_#<* +c_#n cmdline.txt /*c_#n* +c_% cmdline.txt /*c_%* +c_%% cmdline.txt /*c_%%* +c_%%%# cmdline.txt /*c_%%%#* +c_%%< cmdline.txt /*c_%%<* +c_%%n cmdline.txt /*c_%%n* +c_<BS> cmdline.txt /*c_<BS>* +c_<C-Left> cmdline.txt /*c_<C-Left>* +c_<C-R> cmdline.txt /*c_<C-R>* +c_<C-R>_<C-A> cmdline.txt /*c_<C-R>_<C-A>* +c_<C-R>_<C-F> cmdline.txt /*c_<C-R>_<C-F>* +c_<C-R>_<C-L> cmdline.txt /*c_<C-R>_<C-L>* +c_<C-R>_<C-O> cmdline.txt /*c_<C-R>_<C-O>* +c_<C-R>_<C-P> cmdline.txt /*c_<C-R>_<C-P>* +c_<C-R>_<C-R> cmdline.txt /*c_<C-R>_<C-R>* +c_<C-R>_<C-W> cmdline.txt /*c_<C-R>_<C-W>* +c_<C-Right> cmdline.txt /*c_<C-Right>* +c_<CR> cmdline.txt /*c_<CR>* +c_<Del> cmdline.txt /*c_<Del>* +c_<Down> cmdline.txt /*c_<Down>* +c_<End> cmdline.txt /*c_<End>* +c_<Esc> cmdline.txt /*c_<Esc>* +c_<Home> cmdline.txt /*c_<Home>* +c_<Insert> cmdline.txt /*c_<Insert>* +c_<Left> cmdline.txt /*c_<Left>* +c_<LeftMouse> cmdline.txt /*c_<LeftMouse>* +c_<MiddleMouse> cmdline.txt /*c_<MiddleMouse>* +c_<NL> cmdline.txt /*c_<NL>* +c_<PageDown> cmdline.txt /*c_<PageDown>* +c_<PageUp> cmdline.txt /*c_<PageUp>* +c_<Right> cmdline.txt /*c_<Right>* +c_<S-Down> cmdline.txt /*c_<S-Down>* +c_<S-Left> cmdline.txt /*c_<S-Left>* +c_<S-Right> cmdline.txt /*c_<S-Right>* +c_<S-Tab> cmdline.txt /*c_<S-Tab>* +c_<S-Up> cmdline.txt /*c_<S-Up>* +c_<Tab> cmdline.txt /*c_<Tab>* +c_<Up> cmdline.txt /*c_<Up>* +c_BS cmdline.txt /*c_BS* +c_CR cmdline.txt /*c_CR* +c_CTRL-A cmdline.txt /*c_CTRL-A* +c_CTRL-B cmdline.txt /*c_CTRL-B* +c_CTRL-C cmdline.txt /*c_CTRL-C* +c_CTRL-D cmdline.txt /*c_CTRL-D* +c_CTRL-E cmdline.txt /*c_CTRL-E* +c_CTRL-F cmdline.txt /*c_CTRL-F* +c_CTRL-G cmdline.txt /*c_CTRL-G* +c_CTRL-H cmdline.txt /*c_CTRL-H* +c_CTRL-I cmdline.txt /*c_CTRL-I* +c_CTRL-J cmdline.txt /*c_CTRL-J* +c_CTRL-K cmdline.txt /*c_CTRL-K* +c_CTRL-L cmdline.txt /*c_CTRL-L* +c_CTRL-M cmdline.txt /*c_CTRL-M* +c_CTRL-N cmdline.txt /*c_CTRL-N* +c_CTRL-P cmdline.txt /*c_CTRL-P* +c_CTRL-Q cmdline.txt /*c_CTRL-Q* +c_CTRL-R cmdline.txt /*c_CTRL-R* +c_CTRL-R_= cmdline.txt /*c_CTRL-R_=* +c_CTRL-R_CTRL-A cmdline.txt /*c_CTRL-R_CTRL-A* +c_CTRL-R_CTRL-F cmdline.txt /*c_CTRL-R_CTRL-F* +c_CTRL-R_CTRL-L cmdline.txt /*c_CTRL-R_CTRL-L* +c_CTRL-R_CTRL-O cmdline.txt /*c_CTRL-R_CTRL-O* +c_CTRL-R_CTRL-P cmdline.txt /*c_CTRL-R_CTRL-P* +c_CTRL-R_CTRL-R cmdline.txt /*c_CTRL-R_CTRL-R* +c_CTRL-R_CTRL-W cmdline.txt /*c_CTRL-R_CTRL-W* +c_CTRL-SHIFT-Q cmdline.txt /*c_CTRL-SHIFT-Q* +c_CTRL-SHIFT-V cmdline.txt /*c_CTRL-SHIFT-V* +c_CTRL-T cmdline.txt /*c_CTRL-T* +c_CTRL-U cmdline.txt /*c_CTRL-U* +c_CTRL-V cmdline.txt /*c_CTRL-V* +c_CTRL-W cmdline.txt /*c_CTRL-W* +c_CTRL-Y cmdline.txt /*c_CTRL-Y* +c_CTRL-[ cmdline.txt /*c_CTRL-[* +c_CTRL-\_CTRL-G intro.txt /*c_CTRL-\\_CTRL-G* +c_CTRL-\_CTRL-N intro.txt /*c_CTRL-\\_CTRL-N* +c_CTRL-\_e cmdline.txt /*c_CTRL-\\_e* +c_CTRL-] cmdline.txt /*c_CTRL-]* +c_CTRL-^ cmdline.txt /*c_CTRL-^* +c_CTRL-_ cmdline.txt /*c_CTRL-_* +c_Del cmdline.txt /*c_Del* +c_Down cmdline.txt /*c_Down* +c_End cmdline.txt /*c_End* +c_Esc cmdline.txt /*c_Esc* +c_Home cmdline.txt /*c_Home* +c_Insert cmdline.txt /*c_Insert* +c_Left cmdline.txt /*c_Left* +c_Right cmdline.txt /*c_Right* +c_Up cmdline.txt /*c_Up* +c_ansi_constants syntax.txt /*c_ansi_constants* +c_ansi_typedefs syntax.txt /*c_ansi_typedefs* +c_comment_strings syntax.txt /*c_comment_strings* +c_curly_error syntax.txt /*c_curly_error* +c_digraph cmdline.txt /*c_digraph* +c_gnu syntax.txt /*c_gnu* +c_no_ansi syntax.txt /*c_no_ansi* +c_no_bracket_error syntax.txt /*c_no_bracket_error* +c_no_bsd syntax.txt /*c_no_bsd* +c_no_c11 syntax.txt /*c_no_c11* +c_no_c99 syntax.txt /*c_no_c99* +c_no_cformat syntax.txt /*c_no_cformat* +c_no_curly_error syntax.txt /*c_no_curly_error* +c_no_if0 syntax.txt /*c_no_if0* +c_no_tab_space_error syntax.txt /*c_no_tab_space_error* +c_no_trail_space_error syntax.txt /*c_no_trail_space_error* +c_no_utf syntax.txt /*c_no_utf* +c_space_errors syntax.txt /*c_space_errors* +c_syntax_for_h syntax.txt /*c_syntax_for_h* +c_wildchar cmdline.txt /*c_wildchar* +call() builtin.txt /*call()* +carriage-return intro.txt /*carriage-return* +case change.txt /*case* +catch-all eval.txt /*catch-all* +catch-errors eval.txt /*catch-errors* +catch-interrupt eval.txt /*catch-interrupt* +catch-order eval.txt /*catch-order* +catch-text eval.txt /*catch-text* +cc change.txt /*cc* +ceil() builtin.txt /*ceil()* +cfilter-plugin quickfix.txt /*cfilter-plugin* +ch.vim syntax.txt /*ch.vim* +ch_canread() channel.txt /*ch_canread()* +ch_close() channel.txt /*ch_close()* +ch_close_in() channel.txt /*ch_close_in()* +ch_evalexpr() channel.txt /*ch_evalexpr()* +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_log() channel.txt /*ch_log()* +ch_logfile() channel.txt /*ch_logfile()* +ch_open() channel.txt /*ch_open()* +ch_read() channel.txt /*ch_read()* +ch_readblob() channel.txt /*ch_readblob()* +ch_readraw() channel.txt /*ch_readraw()* +ch_sendexpr() channel.txt /*ch_sendexpr()* +ch_sendraw() channel.txt /*ch_sendraw()* +ch_setoptions() channel.txt /*ch_setoptions()* +ch_status() channel.txt /*ch_status()* +change-list-jumps motion.txt /*change-list-jumps* +change-name tips.txt /*change-name* +change-tabs change.txt /*change-tabs* +change.txt change.txt /*change.txt* +changed-5.1 version5.txt /*changed-5.1* +changed-5.2 version5.txt /*changed-5.2* +changed-5.3 version5.txt /*changed-5.3* +changed-5.4 version5.txt /*changed-5.4* +changed-5.5 version5.txt /*changed-5.5* +changed-5.6 version5.txt /*changed-5.6* +changed-5.7 version5.txt /*changed-5.7* +changed-5.8 version5.txt /*changed-5.8* +changed-6.1 version6.txt /*changed-6.1* +changed-6.2 version6.txt /*changed-6.2* +changed-6.3 version6.txt /*changed-6.3* +changed-6.4 version6.txt /*changed-6.4* +changed-7.1 version7.txt /*changed-7.1* +changed-7.2 version7.txt /*changed-7.2* +changed-7.3 version7.txt /*changed-7.3* +changed-7.4 version7.txt /*changed-7.4* +changed-8.1 version8.txt /*changed-8.1* +changed-8.2 version8.txt /*changed-8.2* +changed-9.1 version9.txt /*changed-9.1* +changelist motion.txt /*changelist* +changelog.vim syntax.txt /*changelog.vim* +changenr() builtin.txt /*changenr()* +changetick eval.txt /*changetick* +changing change.txt /*changing* +channel channel.txt /*channel* +channel-address channel.txt /*channel-address* +channel-callback channel.txt /*channel-callback* +channel-close channel.txt /*channel-close* +channel-close-in channel.txt /*channel-close-in* +channel-commands channel.txt /*channel-commands* +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-mode channel.txt /*channel-mode* +channel-more channel.txt /*channel-more* +channel-noblock channel.txt /*channel-noblock* +channel-onetime-callback channel.txt /*channel-onetime-callback* +channel-open channel.txt /*channel-open* +channel-open-options channel.txt /*channel-open-options* +channel-raw channel.txt /*channel-raw* +channel-timeout channel.txt /*channel-timeout* +channel-use channel.txt /*channel-use* +channel.txt channel.txt /*channel.txt* +char-variable eval.txt /*char-variable* +char2nr() builtin.txt /*char2nr()* +characterwise motion.txt /*characterwise* +characterwise-register change.txt /*characterwise-register* +characterwise-visual visual.txt /*characterwise-visual* +charclass() builtin.txt /*charclass()* +charcol() builtin.txt /*charcol()* +charconvert_from-variable eval.txt /*charconvert_from-variable* +charconvert_to-variable eval.txt /*charconvert_to-variable* +charidx() builtin.txt /*charidx()* +charity uganda.txt /*charity* +charset mbyte.txt /*charset* +charset-conversion mbyte.txt /*charset-conversion* +chdir() builtin.txt /*chdir()* +chill.vim syntax.txt /*chill.vim* +chmod builtin.txt /*chmod* +cindent() builtin.txt /*cindent()* +cinkeys-format indent.txt /*cinkeys-format* +cino-# indent.txt /*cino-#* +cino-( indent.txt /*cino-(* +cino-) indent.txt /*cino-)* +cino-+ indent.txt /*cino-+* +cino-/ indent.txt /*cino-\/* +cino-: indent.txt /*cino-:* +cino-= indent.txt /*cino-=* +cino-> indent.txt /*cino->* +cino-C indent.txt /*cino-C* +cino-E indent.txt /*cino-E* +cino-J indent.txt /*cino-J* +cino-L indent.txt /*cino-L* +cino-M indent.txt /*cino-M* +cino-N indent.txt /*cino-N* +cino-P indent.txt /*cino-P* +cino-U indent.txt /*cino-U* +cino-W indent.txt /*cino-W* +cino-^ indent.txt /*cino-^* +cino-b indent.txt /*cino-b* +cino-c indent.txt /*cino-c* +cino-e indent.txt /*cino-e* +cino-f indent.txt /*cino-f* +cino-g indent.txt /*cino-g* +cino-h indent.txt /*cino-h* +cino-i indent.txt /*cino-i* +cino-j indent.txt /*cino-j* +cino-k indent.txt /*cino-k* +cino-l indent.txt /*cino-l* +cino-m indent.txt /*cino-m* +cino-n indent.txt /*cino-n* +cino-p indent.txt /*cino-p* +cino-star indent.txt /*cino-star* +cino-t indent.txt /*cino-t* +cino-u indent.txt /*cino-u* +cino-w indent.txt /*cino-w* +cino-{ indent.txt /*cino-{* +cino-} indent.txt /*cino-}* +cinoptions-values indent.txt /*cinoptions-values* +class vim9class.txt /*class* +class-method vim9class.txt /*class-method* +clear-undo undo.txt /*clear-undo* +clearmatches() builtin.txt /*clearmatches()* +client-server remote.txt /*client-server* +client-server-name remote.txt /*client-server-name* +clientserver remote.txt /*clientserver* +clipboard gui.txt /*clipboard* +clipboard-autoselect options.txt /*clipboard-autoselect* +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-unnamed options.txt /*clipboard-unnamed* +clipboard-unnamedplus options.txt /*clipboard-unnamedplus* +clojure-indent indent.txt /*clojure-indent* +close_cb channel.txt /*close_cb* +closure eval.txt /*closure* +cmdarg-variable eval.txt /*cmdarg-variable* +cmdbang-variable eval.txt /*cmdbang-variable* +cmdline-arguments vi_diff.txt /*cmdline-arguments* +cmdline-changed version5.txt /*cmdline-changed* +cmdline-completion cmdline.txt /*cmdline-completion* +cmdline-editing cmdline.txt /*cmdline-editing* +cmdline-history cmdline.txt /*cmdline-history* +cmdline-lines cmdline.txt /*cmdline-lines* +cmdline-ranges cmdline.txt /*cmdline-ranges* +cmdline-special cmdline.txt /*cmdline-special* +cmdline-too-long cmdline.txt /*cmdline-too-long* +cmdline-window cmdline.txt /*cmdline-window* +cmdline.txt cmdline.txt /*cmdline.txt* +cmdwin cmdline.txt /*cmdwin* +cmdwin-char cmdline.txt /*cmdwin-char* +cobol.vim syntax.txt /*cobol.vim* +codeset mbyte.txt /*codeset* +coding-style develop.txt /*coding-style* +col() builtin.txt /*col()* +coldfusion.vim syntax.txt /*coldfusion.vim* +collapse tips.txt /*collapse* +collate-variable eval.txt /*collate-variable* +color-schemes syntax.txt /*color-schemes* +color-xterm syntax.txt /*color-xterm* +coloring syntax.txt /*coloring* +colorscheme-override syntax.txt /*colorscheme-override* +colortest.vim syntax.txt /*colortest.vim* +command-attributes map.txt /*command-attributes* +command-block vim9.txt /*command-block* +command-line-functions usr_41.txt /*command-line-functions* +command-line-window cmdline.txt /*command-line-window* +command-mode intro.txt /*command-mode* +compatible-default starting.txt /*compatible-default* +compile-changes-5 version5.txt /*compile-changes-5* +compile-changes-6 version6.txt /*compile-changes-6* +compile-changes-7 version7.txt /*compile-changes-7* +compile-changes-8 version8.txt /*compile-changes-8* +compile-changes-9 version9.txt /*compile-changes-9* +compiler-compaqada ft_ada.txt /*compiler-compaqada* +compiler-decada ft_ada.txt /*compiler-decada* +compiler-dotnet quickfix.txt /*compiler-dotnet* +compiler-gcc quickfix.txt /*compiler-gcc* +compiler-gnat ft_ada.txt /*compiler-gnat* +compiler-hpada ft_ada.txt /*compiler-hpada* +compiler-manx quickfix.txt /*compiler-manx* +compiler-perl quickfix.txt /*compiler-perl* +compiler-pyunit quickfix.txt /*compiler-pyunit* +compiler-select quickfix.txt /*compiler-select* +compiler-tex quickfix.txt /*compiler-tex* +compiler-vaxada ft_ada.txt /*compiler-vaxada* +compl-current insert.txt /*compl-current* +compl-define insert.txt /*compl-define* +compl-dictionary insert.txt /*compl-dictionary* +compl-filename insert.txt /*compl-filename* +compl-function insert.txt /*compl-function* +compl-generic insert.txt /*compl-generic* +compl-keyword insert.txt /*compl-keyword* +compl-omni insert.txt /*compl-omni* +compl-omni-filetypes insert.txt /*compl-omni-filetypes* +compl-spelling insert.txt /*compl-spelling* +compl-stop insert.txt /*compl-stop* +compl-tag insert.txt /*compl-tag* +compl-thesaurus insert.txt /*compl-thesaurus* +compl-thesaurusfunc insert.txt /*compl-thesaurusfunc* +compl-vim insert.txt /*compl-vim* +compl-whole-line insert.txt /*compl-whole-line* +complete() builtin.txt /*complete()* +complete-functions insert.txt /*complete-functions* +complete-item-kind insert.txt /*complete-item-kind* +complete-items insert.txt /*complete-items* +complete-popup insert.txt /*complete-popup* +complete-popuphidden insert.txt /*complete-popuphidden* +complete-script-local-functions cmdline.txt /*complete-script-local-functions* +complete-set-option cmdline.txt /*complete-set-option* +complete_CTRL-E insert.txt /*complete_CTRL-E* +complete_CTRL-Y insert.txt /*complete_CTRL-Y* +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* +completed_item-variable eval.txt /*completed_item-variable* +completion-functions usr_41.txt /*completion-functions* +complex-change change.txt /*complex-change* +complex-repeat repeat.txt /*complex-repeat* +compress pi_gzip.txt /*compress* +conceal syntax.txt /*conceal* +confirm() builtin.txt /*confirm()* +connection-refused message.txt /*connection-refused* +console-menus gui.txt /*console-menus* +constructor vim9class.txt /*constructor* +context.vim ft_context.txt /*context.vim* +control intro.txt /*control* +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_legacy_function_to_vim9 vim9.txt /*convert_legacy_function_to_vim9* +copy() builtin.txt /*copy()* +copy-diffs diff.txt /*copy-diffs* +copy-move change.txt /*copy-move* +copying uganda.txt /*copying* +copyright uganda.txt /*copyright* +cos() builtin.txt /*cos()* +cosh() builtin.txt /*cosh()* +count intro.txt /*count* +count() builtin.txt /*count()* +count-bytes tips.txt /*count-bytes* +count-items tips.txt /*count-items* +count-variable eval.txt /*count-variable* +count1-variable eval.txt /*count1-variable* +cp-default version5.txt /*cp-default* +cpo options.txt /*cpo* +cpo-! options.txt /*cpo-!* +cpo-# options.txt /*cpo-#* +cpo-$ options.txt /*cpo-$* +cpo-% options.txt /*cpo-%* +cpo-& options.txt /*cpo-&* +cpo-+ options.txt /*cpo-+* +cpo-- options.txt /*cpo--* +cpo-. options.txt /*cpo-.* +cpo-/ options.txt /*cpo-\/* +cpo-; options.txt /*cpo-;* +cpo-< options.txt /*cpo-<* +cpo-> options.txt /*cpo->* +cpo-A options.txt /*cpo-A* +cpo-B options.txt /*cpo-B* +cpo-C options.txt /*cpo-C* +cpo-D options.txt /*cpo-D* +cpo-E options.txt /*cpo-E* +cpo-F options.txt /*cpo-F* +cpo-H options.txt /*cpo-H* +cpo-I options.txt /*cpo-I* +cpo-J options.txt /*cpo-J* +cpo-K options.txt /*cpo-K* +cpo-L options.txt /*cpo-L* +cpo-M options.txt /*cpo-M* +cpo-O options.txt /*cpo-O* +cpo-P options.txt /*cpo-P* +cpo-R options.txt /*cpo-R* +cpo-S options.txt /*cpo-S* +cpo-W options.txt /*cpo-W* +cpo-X options.txt /*cpo-X* +cpo-Z options.txt /*cpo-Z* +cpo-\ options.txt /*cpo-\\* +cpo-a options.txt /*cpo-a* +cpo-b options.txt /*cpo-b* +cpo-bar options.txt /*cpo-bar* +cpo-c options.txt /*cpo-c* +cpo-d options.txt /*cpo-d* +cpo-e options.txt /*cpo-e* +cpo-f options.txt /*cpo-f* +cpo-g options.txt /*cpo-g* +cpo-i options.txt /*cpo-i* +cpo-j options.txt /*cpo-j* +cpo-k options.txt /*cpo-k* +cpo-l options.txt /*cpo-l* +cpo-m options.txt /*cpo-m* +cpo-n options.txt /*cpo-n* +cpo-o options.txt /*cpo-o* +cpo-p options.txt /*cpo-p* +cpo-q options.txt /*cpo-q* +cpo-r options.txt /*cpo-r* +cpo-s options.txt /*cpo-s* +cpo-star options.txt /*cpo-star* +cpo-t options.txt /*cpo-t* +cpo-u options.txt /*cpo-u* +cpo-v options.txt /*cpo-v* +cpo-w options.txt /*cpo-w* +cpo-x options.txt /*cpo-x* +cpo-y options.txt /*cpo-y* +cpo-{ options.txt /*cpo-{* +cpp.vim syntax.txt /*cpp.vim* +crash-recovery recover.txt /*crash-recovery* +creating-menus gui.txt /*creating-menus* +credits intro.txt /*credits* +crontab options.txt /*crontab* +cs-find if_cscop.txt /*cs-find* +cs7-problem term.txt /*cs7-problem* +cscope if_cscop.txt /*cscope* +cscope-commands if_cscop.txt /*cscope-commands* +cscope-find if_cscop.txt /*cscope-find* +cscope-howtouse if_cscop.txt /*cscope-howtouse* +cscope-info if_cscop.txt /*cscope-info* +cscope-intro if_cscop.txt /*cscope-intro* +cscope-limitations if_cscop.txt /*cscope-limitations* +cscope-options if_cscop.txt /*cscope-options* +cscope-suggestions if_cscop.txt /*cscope-suggestions* +cscope-win32 if_cscop.txt /*cscope-win32* +cscope_connection() builtin.txt /*cscope_connection()* +cscopepathcomp if_cscop.txt /*cscopepathcomp* +cscopeprg if_cscop.txt /*cscopeprg* +cscopequickfix if_cscop.txt /*cscopequickfix* +cscoperelative if_cscop.txt /*cscoperelative* +cscopetag if_cscop.txt /*cscopetag* +cscopetagorder if_cscop.txt /*cscopetagorder* +cscopeverbose if_cscop.txt /*cscopeverbose* +csh.vim syntax.txt /*csh.vim* +cspc if_cscop.txt /*cspc* +csprg if_cscop.txt /*csprg* +csqf if_cscop.txt /*csqf* +csre if_cscop.txt /*csre* +cst if_cscop.txt /*cst* +csto if_cscop.txt /*csto* +csverb if_cscop.txt /*csverb* +ctags tagsrch.txt /*ctags* +ctags-gone version6.txt /*ctags-gone* +cterm-colors syntax.txt /*cterm-colors* +ctrl intro.txt /*ctrl* +ctype-variable eval.txt /*ctype-variable* +curly-braces-function-names eval.txt /*curly-braces-function-names* +curly-braces-names eval.txt /*curly-braces-names* +curpos-visual version6.txt /*curpos-visual* +current-directory editing.txt /*current-directory* +current-file editing.txt /*current-file* +current_compiler quickfix.txt /*current_compiler* +cursor() builtin.txt /*cursor()* +cursor-blinking options.txt /*cursor-blinking* +cursor-down intro.txt /*cursor-down* +cursor-functions usr_41.txt /*cursor-functions* +cursor-left intro.txt /*cursor-left* +cursor-motions motion.txt /*cursor-motions* +cursor-position pattern.txt /*cursor-position* +cursor-right intro.txt /*cursor-right* +cursor-up intro.txt /*cursor-up* +cursor_down intro.txt /*cursor_down* +cursor_left intro.txt /*cursor_left* +cursor_right intro.txt /*cursor_right* +cursor_up intro.txt /*cursor_up* +cw change.txt /*cw* +cweb.vim syntax.txt /*cweb.vim* +cynlib.vim syntax.txt /*cynlib.vim* +d change.txt /*d* +daB motion.txt /*daB* +daW motion.txt /*daW* +dab motion.txt /*dab* +dap motion.txt /*dap* +dart.vim syntax.txt /*dart.vim* +das motion.txt /*das* +date-functions usr_41.txt /*date-functions* +dav pi_netrw.txt /*dav* +davs pi_netrw.txt /*davs* +daw motion.txt /*daw* +dd change.txt /*dd* +debug-gcc debug.txt /*debug-gcc* +debug-highlight debugger.txt /*debug-highlight* +debug-leaks debug.txt /*debug-leaks* +debug-minidump debug.txt /*debug-minidump* +debug-mode repeat.txt /*debug-mode* +debug-scripts repeat.txt /*debug-scripts* +debug-signs debugger.txt /*debug-signs* +debug-vim debug.txt /*debug-vim* +debug-vs2005 debug.txt /*debug-vs2005* +debug-win32 debug.txt /*debug-win32* +debug-windbg debug.txt /*debug-windbg* +debug.txt debug.txt /*debug.txt* +debugbreak() builtin.txt /*debugbreak()* +debugger-compilation debugger.txt /*debugger-compilation* +debugger-features debugger.txt /*debugger-features* +debugger-support debugger.txt /*debugger-support* +debugger.txt debugger.txt /*debugger.txt* +dec-mouse options.txt /*dec-mouse* +decada_members ft_ada.txt /*decada_members* +deepcopy() builtin.txt /*deepcopy()* +default-constructor vim9class.txt /*default-constructor* +defaults.vim starting.txt /*defaults.vim* +defaults.vim-explained usr_05.txt /*defaults.vim-explained* +define-function userfunc.txt /*define-function* +definition-search tagsrch.txt /*definition-search* +definitions intro.txt /*definitions* +delete() builtin.txt /*delete()* +delete-insert change.txt /*delete-insert* +delete-menus gui.txt /*delete-menus* +deletebufline() builtin.txt /*deletebufline()* +deleting change.txt /*deleting* +demoserver.py channel.txt /*demoserver.py* +design-assumptions develop.txt /*design-assumptions* +design-compatible develop.txt /*design-compatible* +design-decisions develop.txt /*design-decisions* +design-documented develop.txt /*design-documented* +design-flexible develop.txt /*design-flexible* +design-goals develop.txt /*design-goals* +design-improved develop.txt /*design-improved* +design-maintain develop.txt /*design-maintain* +design-multi-platform develop.txt /*design-multi-platform* +design-not develop.txt /*design-not* +design-speed-size develop.txt /*design-speed-size* +desktop.vim syntax.txt /*desktop.vim* +develop-spell develop.txt /*develop-spell* +develop-spell-suggestions develop.txt /*develop-spell-suggestions* +develop.txt develop.txt /*develop.txt* +development develop.txt /*development* +dgn motion.txt /*dgn* +dh change.txt /*dh* +diB motion.txt /*diB* +diW motion.txt /*diW* +dialog gui_w32.txt /*dialog* +dialogs-added version5.txt /*dialogs-added* +dib motion.txt /*dib* +dict eval.txt /*dict* +dict-functions usr_41.txt /*dict-functions* +dict-identity eval.txt /*dict-identity* +dict-modification eval.txt /*dict-modification* +did_filetype() builtin.txt /*did_filetype()* +diff diff.txt /*diff* +diff-diffexpr diff.txt /*diff-diffexpr* +diff-mode diff.txt /*diff-mode* +diff-options diff.txt /*diff-options* +diff-original-file diff.txt /*diff-original-file* +diff-patchexpr diff.txt /*diff-patchexpr* +diff-slow diff.txt /*diff-slow* +diff.txt diff.txt /*diff.txt* +diff.vim syntax.txt /*diff.vim* +diff_filler() builtin.txt /*diff_filler()* +diff_hlID() builtin.txt /*diff_hlID()* +diff_translations diff.txt /*diff_translations* +digraph digraph.txt /*digraph* +digraph-arg change.txt /*digraph-arg* +digraph-encoding digraph.txt /*digraph-encoding* +digraph-table digraph.txt /*digraph-table* +digraph-table-mbyte digraph.txt /*digraph-table-mbyte* +digraph.txt digraph.txt /*digraph.txt* +digraph_get() builtin.txt /*digraph_get()* +digraph_getlist() builtin.txt /*digraph_getlist()* +digraph_set() builtin.txt /*digraph_set()* +digraph_setlist() builtin.txt /*digraph_setlist()* +digraphs digraph.txt /*digraphs* +digraphs-changed version6.txt /*digraphs-changed* +digraphs-default digraph.txt /*digraphs-default* +digraphs-define digraph.txt /*digraphs-define* +digraphs-use digraph.txt /*digraphs-use* +dip motion.txt /*dip* +dircolors.vim syntax.txt /*dircolors.vim* +dis motion.txt /*dis* +disable-menus gui.txt /*disable-menus* +discard editing.txt /*discard* +dist#vim eval.txt /*dist#vim* +dist#vim9 eval.txt /*dist#vim9* +distribute-script usr_51.txt /*distribute-script* +distributed-plugins usr_05.txt /*distributed-plugins* +distribution intro.txt /*distribution* +diw motion.txt /*diw* +dl change.txt /*dl* +do diff.txt /*do* +doc-file-list help.txt /*doc-file-list* +docbk.vim syntax.txt /*docbk.vim* +docbksgml.vim syntax.txt /*docbksgml.vim* +docbkxml.vim syntax.txt /*docbkxml.vim* +docbook syntax.txt /*docbook* +documentation-6 version6.txt /*documentation-6* +donate uganda.txt /*donate* +dos os_dos.txt /*dos* +dos-:cd os_dos.txt /*dos-:cd* +dos-CTRL-Break os_dos.txt /*dos-CTRL-Break* +dos-backslash os_dos.txt /*dos-backslash* +dos-colors os_dos.txt /*dos-colors* +dos-file-formats os_dos.txt /*dos-file-formats* +dos-locations os_dos.txt /*dos-locations* +dos-powershell os_dos.txt /*dos-powershell* +dos-pwsh os_dos.txt /*dos-pwsh* +dos-shell os_dos.txt /*dos-shell* +dos-standard-mappings os_dos.txt /*dos-standard-mappings* +dos-temp-files os_dos.txt /*dos-temp-files* +dosbatch.vim syntax.txt /*dosbatch.vim* +double-click term.txt /*double-click* +download intro.txt /*download* +doxygen-syntax syntax.txt /*doxygen-syntax* +doxygen.vim syntax.txt /*doxygen.vim* +dp diff.txt /*dp* +drag-n-drop gui.txt /*drag-n-drop* +drag-n-drop-win32 gui_w32.txt /*drag-n-drop-win32* +drag-status-line term.txt /*drag-status-line* +drop_file gui.txt /*drop_file* +dtd.vim syntax.txt /*dtd.vim* +dtd2vim insert.txt /*dtd2vim* +dying-variable eval.txt /*dying-variable* +e motion.txt /*e* +easy starting.txt /*easy* +echoraw() builtin.txt /*echoraw()* +echospace-variable eval.txt /*echospace-variable* +edit-a-file editing.txt /*edit-a-file* +edit-binary editing.txt /*edit-binary* +edit-dialogs editing.txt /*edit-dialogs* +edit-files editing.txt /*edit-files* +edit-intro editing.txt /*edit-intro* +edit-no-break usr_25.txt /*edit-no-break* +edit-paragraph-join usr_25.txt /*edit-paragraph-join* +edit-window windows.txt /*edit-window* +editing.txt editing.txt /*editing.txt* +editorconfig-install usr_05.txt /*editorconfig-install* +efm-%> quickfix.txt /*efm-%>* +efm-entries quickfix.txt /*efm-entries* +efm-ignore quickfix.txt /*efm-ignore* +eiffel.vim syntax.txt /*eiffel.vim* +elixir.vim syntax.txt /*elixir.vim* +emacs-keys tips.txt /*emacs-keys* +emacs-tags tagsrch.txt /*emacs-tags* +emacs_tags tagsrch.txt /*emacs_tags* +empty() builtin.txt /*empty()* +encoding-names mbyte.txt /*encoding-names* +encoding-table mbyte.txt /*encoding-table* +encoding-values mbyte.txt /*encoding-values* +encryption editing.txt /*encryption* +end intro.txt /*end* +end-of-file pattern.txt /*end-of-file* +enlightened-terminal syntax.txt /*enlightened-terminal* +environ() builtin.txt /*environ()* +eol-and-eof editing.txt /*eol-and-eof* +erlang.vim syntax.txt /*erlang.vim* +err_buf channel.txt /*err_buf* +err_cb channel.txt /*err_cb* +err_mode channel.txt /*err_mode* +err_modifiable channel.txt /*err_modifiable* +err_msg channel.txt /*err_msg* +err_name channel.txt /*err_name* +err_teapot() builtin.txt /*err_teapot()* +err_timeout channel.txt /*err_timeout* +errmsg-variable eval.txt /*errmsg-variable* +error-file-format quickfix.txt /*error-file-format* +error-messages message.txt /*error-messages* +errorformat quickfix.txt /*errorformat* +errorformat-Jikes quickfix.txt /*errorformat-Jikes* +errorformat-LaTeX quickfix.txt /*errorformat-LaTeX* +errorformat-Perl quickfix.txt /*errorformat-Perl* +errorformat-ant quickfix.txt /*errorformat-ant* +errorformat-changed version4.txt /*errorformat-changed* +errorformat-jade quickfix.txt /*errorformat-jade* +errorformat-javac quickfix.txt /*errorformat-javac* +errorformat-multi-line quickfix.txt /*errorformat-multi-line* +errorformat-separate-filename quickfix.txt /*errorformat-separate-filename* +errorformats quickfix.txt /*errorformats* +errors message.txt /*errors* +errors-variable eval.txt /*errors-variable* +escape intro.txt /*escape* +escape() builtin.txt /*escape()* +escape-bar version4.txt /*escape-bar* +euphoria3.vim syntax.txt /*euphoria3.vim* +euphoria4.vim syntax.txt /*euphoria4.vim* +euro digraph.txt /*euro* +euro-digraph digraph.txt /*euro-digraph* +eval eval.txt /*eval* +eval() builtin.txt /*eval()* +eval-examples eval.txt /*eval-examples* +eval-sandbox eval.txt /*eval-sandbox* +eval.txt eval.txt /*eval.txt* +event-variable eval.txt /*event-variable* +eventhandler() builtin.txt /*eventhandler()* +eview starting.txt /*eview* +evim starting.txt /*evim* +evim-keys starting.txt /*evim-keys* +evim.vim starting.txt /*evim.vim* +ex starting.txt /*ex* +ex-cmd-index index.txt /*ex-cmd-index* +ex-edit-index index.txt /*ex-edit-index* +ex-flags cmdline.txt /*ex-flags* +ex: options.txt /*ex:* +except-autocmd eval.txt /*except-autocmd* +except-autocmd-Cmd eval.txt /*except-autocmd-Cmd* +except-autocmd-Post eval.txt /*except-autocmd-Post* +except-autocmd-Pre eval.txt /*except-autocmd-Pre* +except-autocmd-ill eval.txt /*except-autocmd-ill* +except-compat eval.txt /*except-compat* +except-examine eval.txt /*except-examine* +except-from-finally eval.txt /*except-from-finally* +except-hier-param eval.txt /*except-hier-param* +except-several-errors eval.txt /*except-several-errors* +except-single-line eval.txt /*except-single-line* +except-syntax-err eval.txt /*except-syntax-err* +except-syntax-error eval.txt /*except-syntax-error* +exception-handling eval.txt /*exception-handling* +exception-variable eval.txt /*exception-variable* +exclusive motion.txt /*exclusive* +exclusive-linewise motion.txt /*exclusive-linewise* +executable() builtin.txt /*executable()* +execute() builtin.txt /*execute()* +execute-menus gui.txt /*execute-menus* +exepath() builtin.txt /*exepath()* +exim starting.txt /*exim* +exists() builtin.txt /*exists()* +exists_compiled() builtin.txt /*exists_compiled()* +exiting starting.txt /*exiting* +exiting-variable eval.txt /*exiting-variable* +exp() builtin.txt /*exp()* +expand() builtin.txt /*expand()* +expand-env options.txt /*expand-env* +expand-environment-var options.txt /*expand-environment-var* +expandcmd() builtin.txt /*expandcmd()* +expr eval.txt /*expr* +expr-! eval.txt /*expr-!* +expr-!= eval.txt /*expr-!=* +expr-!=# eval.txt /*expr-!=#* +expr-!=? eval.txt /*expr-!=?* +expr-!~ eval.txt /*expr-!~* +expr-!~# eval.txt /*expr-!~#* +expr-!~? eval.txt /*expr-!~?* +expr-$' eval.txt /*expr-$'* +expr-$quote eval.txt /*expr-$quote* +expr-% eval.txt /*expr-%* +expr-&& eval.txt /*expr-&&* +expr-' eval.txt /*expr-'* +expr-+ eval.txt /*expr-+* +expr-- eval.txt /*expr--* +expr-. eval.txt /*expr-.* +expr-.. eval.txt /*expr-..* +expr-/ eval.txt /*expr-\/* +expr-< eval.txt /*expr-<* +expr-<# eval.txt /*expr-<#* +expr-<< eval.txt /*expr-<<* +expr-<= eval.txt /*expr-<=* +expr-<=# eval.txt /*expr-<=#* +expr-<=? eval.txt /*expr-<=?* +expr-<? eval.txt /*expr-<?* +expr-== eval.txt /*expr-==* +expr-==# eval.txt /*expr-==#* +expr-==? eval.txt /*expr-==?* +expr-=~ eval.txt /*expr-=~* +expr-=~# eval.txt /*expr-=~#* +expr-=~? eval.txt /*expr-=~?* +expr-> eval.txt /*expr->* +expr-># eval.txt /*expr->#* +expr->= eval.txt /*expr->=* +expr->=# eval.txt /*expr->=#* +expr->=? eval.txt /*expr->=?* +expr->> eval.txt /*expr->>* +expr->? eval.txt /*expr->?* +expr-[:] eval.txt /*expr-[:]* +expr-[] eval.txt /*expr-[]* +expr-barbar eval.txt /*expr-barbar* +expr-entry eval.txt /*expr-entry* +expr-env eval.txt /*expr-env* +expr-env-expand eval.txt /*expr-env-expand* +expr-function eval.txt /*expr-function* +expr-is eval.txt /*expr-is* +expr-is# eval.txt /*expr-is#* +expr-is? eval.txt /*expr-is?* +expr-isnot eval.txt /*expr-isnot* +expr-isnot# eval.txt /*expr-isnot#* +expr-isnot? eval.txt /*expr-isnot?* +expr-lambda eval.txt /*expr-lambda* +expr-nesting eval.txt /*expr-nesting* +expr-number eval.txt /*expr-number* +expr-option eval.txt /*expr-option* +expr-option-function vim9.txt /*expr-option-function* +expr-quote eval.txt /*expr-quote* +expr-register eval.txt /*expr-register* +expr-star eval.txt /*expr-star* +expr-string eval.txt /*expr-string* +expr-unary-+ eval.txt /*expr-unary-+* +expr-unary-- eval.txt /*expr-unary--* +expr-variable eval.txt /*expr-variable* +expr1 eval.txt /*expr1* +expr10 eval.txt /*expr10* +expr11 eval.txt /*expr11* +expr2 eval.txt /*expr2* +expr3 eval.txt /*expr3* +expr4 eval.txt /*expr4* +expr5 eval.txt /*expr5* +expr6 eval.txt /*expr6* +expr7 eval.txt /*expr7* +expr8 eval.txt /*expr8* +expr9 eval.txt /*expr9* +expression eval.txt /*expression* +expression-commands eval.txt /*expression-commands* +expression-syntax eval.txt /*expression-syntax* +exrc starting.txt /*exrc* +extend() builtin.txt /*extend()* +extendnew() builtin.txt /*extendnew()* +extends vim9class.txt /*extends* +extension-removal cmdline.txt /*extension-removal* +extensions-improvements todo.txt /*extensions-improvements* +f motion.txt /*f* +f-args-example map.txt /*f-args-example* +false vim9.txt /*false* +false-variable eval.txt /*false-variable* +falsy eval.txt /*falsy* +falsy-operator eval.txt /*falsy-operator* +faq intro.txt /*faq* +farsi farsi.txt /*farsi* +farsi.txt farsi.txt /*farsi.txt* +fasm.vim syntax.txt /*fasm.vim* +fast-functions vim9.txt /*fast-functions* +fcs_choice-variable eval.txt /*fcs_choice-variable* +fcs_reason-variable eval.txt /*fcs_reason-variable* +feature-list builtin.txt /*feature-list* +feedkeys() builtin.txt /*feedkeys()* +fetch pi_netrw.txt /*fetch* +file-browser-5.2 version5.txt /*file-browser-5.2* +file-formats editing.txt /*file-formats* +file-functions usr_41.txt /*file-functions* +file-pattern autocmd.txt /*file-pattern* +file-read insert.txt /*file-read* +file-searching editing.txt /*file-searching* +file-type filetype.txt /*file-type* +file-types filetype.txt /*file-types* +file_readable() builtin.txt /*file_readable()* +fileencoding-changed version6.txt /*fileencoding-changed* +filename-backslash cmdline.txt /*filename-backslash* +filename-modifiers cmdline.txt /*filename-modifiers* +filereadable() builtin.txt /*filereadable()* +filetype filetype.txt /*filetype* +filetype-detect filetype.txt /*filetype-detect* +filetype-ignore filetype.txt /*filetype-ignore* +filetype-overrule filetype.txt /*filetype-overrule* +filetype-plugin usr_43.txt /*filetype-plugin* +filetype-plugins filetype.txt /*filetype-plugins* +filetype.txt filetype.txt /*filetype.txt* +filetypedetect-changed version6.txt /*filetypedetect-changed* +filetypes filetype.txt /*filetypes* +filewritable() builtin.txt /*filewritable()* +filler-lines windows.txt /*filler-lines* +filter change.txt /*filter* +filter() builtin.txt /*filter()* +find-manpage usr_12.txt /*find-manpage* +find-replace usr_10.txt /*find-replace* +finddir() builtin.txt /*finddir()* +findfile() builtin.txt /*findfile()* +fixed-5.1 version5.txt /*fixed-5.1* +fixed-5.2 version5.txt /*fixed-5.2* +fixed-5.3 version5.txt /*fixed-5.3* +fixed-5.4 version5.txt /*fixed-5.4* +fixed-5.5 version5.txt /*fixed-5.5* +fixed-5.6 version5.txt /*fixed-5.6* +fixed-5.7 version5.txt /*fixed-5.7* +fixed-5.8 version5.txt /*fixed-5.8* +fixed-6.1 version6.txt /*fixed-6.1* +fixed-6.2 version6.txt /*fixed-6.2* +fixed-6.3 version6.txt /*fixed-6.3* +fixed-6.4 version6.txt /*fixed-6.4* +fixed-7.1 version7.txt /*fixed-7.1* +fixed-7.2 version7.txt /*fixed-7.2* +fixed-7.3 version7.txt /*fixed-7.3* +fixed-7.4 version7.txt /*fixed-7.4* +flatten() builtin.txt /*flatten()* +flattennew() builtin.txt /*flattennew()* +flexwiki.vim syntax.txt /*flexwiki.vim* +float-e eval.txt /*float-e* +float-functions usr_41.txt /*float-functions* +float-pi eval.txt /*float-pi* +float2nr() builtin.txt /*float2nr()* +floating-point-format eval.txt /*floating-point-format* +floating-point-precision eval.txt /*floating-point-precision* +floor() builtin.txt /*floor()* +fmod() builtin.txt /*fmod()* +fname-variable eval.txt /*fname-variable* +fname_diff-variable eval.txt /*fname_diff-variable* +fname_in-variable eval.txt /*fname_in-variable* +fname_new-variable eval.txt /*fname_new-variable* +fname_out-variable eval.txt /*fname_out-variable* +fnameescape() builtin.txt /*fnameescape()* +fnamemodify() builtin.txt /*fnamemodify()* +fo-/ change.txt /*fo-\/* +fo-1 change.txt /*fo-1* +fo-2 change.txt /*fo-2* +fo-B change.txt /*fo-B* +fo-M change.txt /*fo-M* +fo-] change.txt /*fo-]* +fo-a change.txt /*fo-a* +fo-b change.txt /*fo-b* +fo-c change.txt /*fo-c* +fo-j change.txt /*fo-j* +fo-l change.txt /*fo-l* +fo-m change.txt /*fo-m* +fo-n change.txt /*fo-n* +fo-o change.txt /*fo-o* +fo-p change.txt /*fo-p* +fo-q change.txt /*fo-q* +fo-r change.txt /*fo-r* +fo-t change.txt /*fo-t* +fo-table change.txt /*fo-table* +fo-v change.txt /*fo-v* +fo-w change.txt /*fo-w* +fold-behavior fold.txt /*fold-behavior* +fold-colors fold.txt /*fold-colors* +fold-commands fold.txt /*fold-commands* +fold-create-marker fold.txt /*fold-create-marker* +fold-delete-marker fold.txt /*fold-delete-marker* +fold-diff fold.txt /*fold-diff* +fold-expr fold.txt /*fold-expr* +fold-foldcolumn fold.txt /*fold-foldcolumn* +fold-foldlevel fold.txt /*fold-foldlevel* +fold-foldtext fold.txt /*fold-foldtext* +fold-indent fold.txt /*fold-indent* +fold-manual fold.txt /*fold-manual* +fold-marker fold.txt /*fold-marker* +fold-methods fold.txt /*fold-methods* +fold-options fold.txt /*fold-options* +fold-syntax fold.txt /*fold-syntax* +fold.txt fold.txt /*fold.txt* +foldclosed() builtin.txt /*foldclosed()* +foldclosedend() builtin.txt /*foldclosedend()* +folddashes-variable eval.txt /*folddashes-variable* +foldend-variable eval.txt /*foldend-variable* +folding fold.txt /*folding* +folding-functions usr_41.txt /*folding-functions* +foldlevel() builtin.txt /*foldlevel()* +foldlevel-variable eval.txt /*foldlevel-variable* +folds fold.txt /*folds* +foldstart-variable eval.txt /*foldstart-variable* +foldtext() builtin.txt /*foldtext()* +foldtextresult() builtin.txt /*foldtextresult()* +font-sizes gui_x11.txt /*font-sizes* +fontset mbyte.txt /*fontset* +forced-motion motion.txt /*forced-motion* +foreground() builtin.txt /*foreground()* +fork os_unix.txt /*fork* +form.vim syntax.txt /*form.vim* +format-bullet-list tips.txt /*format-bullet-list* +format-comments change.txt /*format-comments* +format-formatexpr change.txt /*format-formatexpr* +formatOtherKeys map.txt /*formatOtherKeys* +formatting change.txt /*formatting* +forth.vim syntax.txt /*forth.vim* +fortran.vim syntax.txt /*fortran.vim* +freebasic.vim syntax.txt /*freebasic.vim* +freebasic_no_comment_fold syntax.txt /*freebasic_no_comment_fold* +freebasic_operators syntax.txt /*freebasic_operators* +freebasic_space_errors syntax.txt /*freebasic_space_errors* +freebasic_type_suffixes syntax.txt /*freebasic_type_suffixes* +friendship intro.txt /*friendship* +frombook usr_01.txt /*frombook* +ft-abel-syntax syntax.txt /*ft-abel-syntax* +ft-ada-commands ft_ada.txt /*ft-ada-commands* +ft-ada-constants ft_ada.txt /*ft-ada-constants* +ft-ada-functions ft_ada.txt /*ft-ada-functions* +ft-ada-indent ft_ada.txt /*ft-ada-indent* +ft-ada-omni ft_ada.txt /*ft-ada-omni* +ft-ada-options ft_ada.txt /*ft-ada-options* +ft-ada-plugin ft_ada.txt /*ft-ada-plugin* +ft-ada-syntax ft_ada.txt /*ft-ada-syntax* +ft-ada-variables ft_ada.txt /*ft-ada-variables* +ft-ant-syntax syntax.txt /*ft-ant-syntax* +ft-apache-syntax syntax.txt /*ft-apache-syntax* +ft-asm-syntax syntax.txt /*ft-asm-syntax* +ft-asm68k-syntax syntax.txt /*ft-asm68k-syntax* +ft-asmh8300-syntax syntax.txt /*ft-asmh8300-syntax* +ft-aspperl-syntax syntax.txt /*ft-aspperl-syntax* +ft-aspvbs-syntax syntax.txt /*ft-aspvbs-syntax* +ft-awk-plugin filetype.txt /*ft-awk-plugin* +ft-bash-syntax syntax.txt /*ft-bash-syntax* +ft-basic-syntax syntax.txt /*ft-basic-syntax* +ft-c-omni insert.txt /*ft-c-omni* +ft-c-syntax syntax.txt /*ft-c-syntax* +ft-ch-syntax syntax.txt /*ft-ch-syntax* +ft-changelog-plugin filetype.txt /*ft-changelog-plugin* +ft-changelog-syntax syntax.txt /*ft-changelog-syntax* +ft-chill-syntax syntax.txt /*ft-chill-syntax* +ft-clojure-indent indent.txt /*ft-clojure-indent* +ft-clojure-syntax syntax.txt /*ft-clojure-syntax* +ft-cobol-syntax syntax.txt /*ft-cobol-syntax* +ft-coldfusion-syntax syntax.txt /*ft-coldfusion-syntax* +ft-context ft_context.txt /*ft-context* +ft-context-commands ft_context.txt /*ft-context-commands* +ft-context-intro ft_context.txt /*ft-context-intro* +ft-context-mappings ft_context.txt /*ft-context-mappings* +ft-context-settings ft_context.txt /*ft-context-settings* +ft-cpp-syntax syntax.txt /*ft-cpp-syntax* +ft-csh-syntax syntax.txt /*ft-csh-syntax* +ft-css-omni insert.txt /*ft-css-omni* +ft-cweb-syntax syntax.txt /*ft-cweb-syntax* +ft-cynlib-syntax syntax.txt /*ft-cynlib-syntax* +ft-dart-syntax syntax.txt /*ft-dart-syntax* +ft-dash-syntax syntax.txt /*ft-dash-syntax* +ft-desktop-syntax syntax.txt /*ft-desktop-syntax* +ft-dircolors-syntax syntax.txt /*ft-dircolors-syntax* +ft-docbk-syntax syntax.txt /*ft-docbk-syntax* +ft-docbksgml-syntax syntax.txt /*ft-docbksgml-syntax* +ft-docbkxml-syntax syntax.txt /*ft-docbkxml-syntax* +ft-dosbatch-syntax syntax.txt /*ft-dosbatch-syntax* +ft-dtd-syntax syntax.txt /*ft-dtd-syntax* +ft-eiffel-syntax syntax.txt /*ft-eiffel-syntax* +ft-elixir-syntax syntax.txt /*ft-elixir-syntax* +ft-erlang-syntax syntax.txt /*ft-erlang-syntax* +ft-euphoria-syntax syntax.txt /*ft-euphoria-syntax* +ft-flexwiki-syntax syntax.txt /*ft-flexwiki-syntax* +ft-form-syntax syntax.txt /*ft-form-syntax* +ft-forth-syntax syntax.txt /*ft-forth-syntax* +ft-fortran-indent indent.txt /*ft-fortran-indent* +ft-fortran-plugin filetype.txt /*ft-fortran-plugin* +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-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* +ft-gprof-plugin filetype.txt /*ft-gprof-plugin* +ft-groff-syntax syntax.txt /*ft-groff-syntax* +ft-gsp-syntax syntax.txt /*ft-gsp-syntax* +ft-haskell-syntax syntax.txt /*ft-haskell-syntax* +ft-html-indent indent.txt /*ft-html-indent* +ft-html-omni insert.txt /*ft-html-omni* +ft-html-syntax syntax.txt /*ft-html-syntax* +ft-htmlos-syntax syntax.txt /*ft-htmlos-syntax* +ft-ia64-syntax syntax.txt /*ft-ia64-syntax* +ft-inform-syntax syntax.txt /*ft-inform-syntax* +ft-java-syntax syntax.txt /*ft-java-syntax* +ft-javascript-omni insert.txt /*ft-javascript-omni* +ft-json-plugin filetype.txt /*ft-json-plugin* +ft-json-syntax syntax.txt /*ft-json-syntax* +ft-ksh-syntax syntax.txt /*ft-ksh-syntax* +ft-lace-syntax syntax.txt /*ft-lace-syntax* +ft-lex-syntax syntax.txt /*ft-lex-syntax* +ft-lifelines-syntax syntax.txt /*ft-lifelines-syntax* +ft-lisp-syntax syntax.txt /*ft-lisp-syntax* +ft-lite-syntax syntax.txt /*ft-lite-syntax* +ft-lpc-syntax syntax.txt /*ft-lpc-syntax* +ft-lua-syntax syntax.txt /*ft-lua-syntax* +ft-mail-plugin filetype.txt /*ft-mail-plugin* +ft-mail.vim syntax.txt /*ft-mail.vim* +ft-make-syntax syntax.txt /*ft-make-syntax* +ft-man-plugin filetype.txt /*ft-man-plugin* +ft-maple-syntax syntax.txt /*ft-maple-syntax* +ft-markdown-plugin filetype.txt /*ft-markdown-plugin* +ft-markdown-syntax syntax.txt /*ft-markdown-syntax* +ft-masm-syntax syntax.txt /*ft-masm-syntax* +ft-mathematica-syntax syntax.txt /*ft-mathematica-syntax* +ft-matlab-indent indent.txt /*ft-matlab-indent* +ft-metafont ft_mp.txt /*ft-metafont* +ft-metafont-intro ft_mp.txt /*ft-metafont-intro* +ft-metafont-mappings ft_mp.txt /*ft-metafont-mappings* +ft-metafont-settings ft_mp.txt /*ft-metafont-settings* +ft-metapost ft_mp.txt /*ft-metapost* +ft-metapost-commands ft_mp.txt /*ft-metapost-commands* +ft-metapost-intro ft_mp.txt /*ft-metapost-intro* +ft-metapost-mappings ft_mp.txt /*ft-metapost-mappings* +ft-metapost-settings ft_mp.txt /*ft-metapost-settings* +ft-mma-syntax syntax.txt /*ft-mma-syntax* +ft-modula2-syntax syntax.txt /*ft-modula2-syntax* +ft-moo-syntax syntax.txt /*ft-moo-syntax* +ft-msql-syntax syntax.txt /*ft-msql-syntax* +ft-n1ql-syntax syntax.txt /*ft-n1ql-syntax* +ft-nasm-syntax syntax.txt /*ft-nasm-syntax* +ft-ncf-syntax syntax.txt /*ft-ncf-syntax* +ft-nroff-syntax syntax.txt /*ft-nroff-syntax* +ft-ocaml-syntax syntax.txt /*ft-ocaml-syntax* +ft-papp-syntax syntax.txt /*ft-papp-syntax* +ft-pascal-syntax syntax.txt /*ft-pascal-syntax* +ft-pdf-plugin filetype.txt /*ft-pdf-plugin* +ft-perl-syntax syntax.txt /*ft-perl-syntax* +ft-php-indent indent.txt /*ft-php-indent* +ft-php-omni insert.txt /*ft-php-omni* +ft-php-syntax syntax.txt /*ft-php-syntax* +ft-php3-syntax syntax.txt /*ft-php3-syntax* +ft-phtml-syntax syntax.txt /*ft-phtml-syntax* +ft-plaintex-syntax syntax.txt /*ft-plaintex-syntax* +ft-posix-syntax syntax.txt /*ft-posix-syntax* +ft-postscr-syntax syntax.txt /*ft-postscr-syntax* +ft-ppwiz-syntax syntax.txt /*ft-ppwiz-syntax* +ft-printcap-syntax syntax.txt /*ft-printcap-syntax* +ft-progress-syntax syntax.txt /*ft-progress-syntax* +ft-ptcap-syntax syntax.txt /*ft-ptcap-syntax* +ft-python-indent indent.txt /*ft-python-indent* +ft-python-plugin filetype.txt /*ft-python-plugin* +ft-python-syntax syntax.txt /*ft-python-syntax* +ft-qf-plugin filetype.txt /*ft-qf-plugin* +ft-quake-syntax syntax.txt /*ft-quake-syntax* +ft-r-indent indent.txt /*ft-r-indent* +ft-r-syntax syntax.txt /*ft-r-syntax* +ft-readline-syntax syntax.txt /*ft-readline-syntax* +ft-rego-syntax syntax.txt /*ft-rego-syntax* +ft-rexx-syntax syntax.txt /*ft-rexx-syntax* +ft-rmd-plugin filetype.txt /*ft-rmd-plugin* +ft-rmd-syntax syntax.txt /*ft-rmd-syntax* +ft-rnoweb-plugin filetype.txt /*ft-rnoweb-plugin* +ft-rrst-plugin filetype.txt /*ft-rrst-plugin* +ft-rrst-syntax syntax.txt /*ft-rrst-syntax* +ft-rst-plugin filetype.txt /*ft-rst-plugin* +ft-rst-syntax syntax.txt /*ft-rst-syntax* +ft-ruby-omni insert.txt /*ft-ruby-omni* +ft-ruby-syntax syntax.txt /*ft-ruby-syntax* +ft-rust filetype.txt /*ft-rust* +ft-scheme-syntax syntax.txt /*ft-scheme-syntax* +ft-sdl-syntax syntax.txt /*ft-sdl-syntax* +ft-sed-syntax syntax.txt /*ft-sed-syntax* +ft-sgml-syntax syntax.txt /*ft-sgml-syntax* +ft-sh-indent indent.txt /*ft-sh-indent* +ft-sh-syntax syntax.txt /*ft-sh-syntax* +ft-spec-plugin filetype.txt /*ft-spec-plugin* +ft-spup-syntax syntax.txt /*ft-spup-syntax* +ft-sql filetype.txt /*ft-sql* +ft-sql-omni insert.txt /*ft-sql-omni* +ft-sql-syntax syntax.txt /*ft-sql-syntax* +ft-sqlanywhere-syntax syntax.txt /*ft-sqlanywhere-syntax* +ft-sqlinformix-syntax syntax.txt /*ft-sqlinformix-syntax* +ft-squirrel-syntax syntax.txt /*ft-squirrel-syntax* +ft-syntax-omni insert.txt /*ft-syntax-omni* +ft-tcsh-syntax syntax.txt /*ft-tcsh-syntax* +ft-termcap-syntax syntax.txt /*ft-termcap-syntax* +ft-tex-plugin filetype.txt /*ft-tex-plugin* +ft-tex-syntax syntax.txt /*ft-tex-syntax* +ft-tf-syntax syntax.txt /*ft-tf-syntax* +ft-vb-syntax syntax.txt /*ft-vb-syntax* +ft-verilog-indent indent.txt /*ft-verilog-indent* +ft-vhdl-indent indent.txt /*ft-vhdl-indent* +ft-vim-indent indent.txt /*ft-vim-indent* +ft-vim-plugin filetype.txt /*ft-vim-plugin* +ft-vim-syntax syntax.txt /*ft-vim-syntax* +ft-xf86conf-syntax syntax.txt /*ft-xf86conf-syntax* +ft-xhtml-omni insert.txt /*ft-xhtml-omni* +ft-xml-omni insert.txt /*ft-xml-omni* +ft-xml-syntax syntax.txt /*ft-xml-syntax* +ft-xpm-syntax syntax.txt /*ft-xpm-syntax* +ft-yaml-syntax syntax.txt /*ft-yaml-syntax* +ft-zimbu-plugin filetype.txt /*ft-zimbu-plugin* +ft-zsh-syntax syntax.txt /*ft-zsh-syntax* +ft_ada.txt ft_ada.txt /*ft_ada.txt* +ft_context.txt ft_context.txt /*ft_context.txt* +ft_mp.txt ft_mp.txt /*ft_mp.txt* +ft_ps1.txt ft_ps1.txt /*ft_ps1.txt* +ft_raku.txt ft_raku.txt /*ft_raku.txt* +ft_rust.txt ft_rust.txt /*ft_rust.txt* +ft_sql.txt ft_sql.txt /*ft_sql.txt* +ftdetect filetype.txt /*ftdetect* +ftp pi_netrw.txt /*ftp* +ftplugin usr_51.txt /*ftplugin* +ftplugin-docs filetype.txt /*ftplugin-docs* +ftplugin-name usr_05.txt /*ftplugin-name* +ftplugin-overrule filetype.txt /*ftplugin-overrule* +ftplugin-special usr_51.txt /*ftplugin-special* +ftplugins usr_05.txt /*ftplugins* +fullcommand() builtin.txt /*fullcommand()* +funcref() builtin.txt /*funcref()* +function() builtin.txt /*function()* +function-argument userfunc.txt /*function-argument* +function-key intro.txt /*function-key* +function-list usr_41.txt /*function-list* +function-range-example userfunc.txt /*function-range-example* +function-search-undo userfunc.txt /*function-search-undo* +function_key intro.txt /*function_key* +functions eval.txt /*functions* +fuzzy-matching pattern.txt /*fuzzy-matching* +fvwm.vim syntax.txt /*fvwm.vim* +fvwm2rc syntax.txt /*fvwm2rc* +fvwmrc syntax.txt /*fvwmrc* +g index.txt /*g* +g# pattern.txt /*g#* +g$ motion.txt /*g$* +g& change.txt /*g&* +g' motion.txt /*g'* +g'a motion.txt /*g'a* +g+ undo.txt /*g+* +g, motion.txt /*g,* +g- undo.txt /*g-* +g0 motion.txt /*g0* +g8 various.txt /*g8* +g: eval.txt /*g:* +g:NetrwTopLvlMenu pi_netrw.txt /*g:NetrwTopLvlMenu* +g:Netrw_UserMaps pi_netrw.txt /*g:Netrw_UserMaps* +g:Netrw_corehandler pi_netrw.txt /*g:Netrw_corehandler* +g:Netrw_funcref pi_netrw.txt /*g:Netrw_funcref* +g:actual_curbuf options.txt /*g:actual_curbuf* +g:actual_curwin options.txt /*g:actual_curwin* +g:ada#Comment ft_ada.txt /*g:ada#Comment* +g:ada#Ctags_Kinds ft_ada.txt /*g:ada#Ctags_Kinds* +g:ada#DotWordRegex ft_ada.txt /*g:ada#DotWordRegex* +g:ada#Keywords ft_ada.txt /*g:ada#Keywords* +g:ada#WordRegex ft_ada.txt /*g:ada#WordRegex* +g:ada_abbrev ft_ada.txt /*g:ada_abbrev* +g:ada_all_tab_usage ft_ada.txt /*g:ada_all_tab_usage* +g:ada_begin_preproc ft_ada.txt /*g:ada_begin_preproc* +g:ada_default_compiler ft_ada.txt /*g:ada_default_compiler* +g:ada_extended_completion ft_ada.txt /*g:ada_extended_completion* +g:ada_extended_tagging ft_ada.txt /*g:ada_extended_tagging* +g:ada_folding ft_ada.txt /*g:ada_folding* +g:ada_gnat_extensions ft_ada.txt /*g:ada_gnat_extensions* +g:ada_line_errors ft_ada.txt /*g:ada_line_errors* +g:ada_no_tab_space_error ft_ada.txt /*g:ada_no_tab_space_error* +g:ada_no_trail_space_error ft_ada.txt /*g:ada_no_trail_space_error* +g:ada_omni_with_keywords ft_ada.txt /*g:ada_omni_with_keywords* +g:ada_rainbow_color ft_ada.txt /*g:ada_rainbow_color* +g:ada_space_errors ft_ada.txt /*g:ada_space_errors* +g:ada_standard_types ft_ada.txt /*g:ada_standard_types* +g:ada_with_gnat_project_files ft_ada.txt /*g:ada_with_gnat_project_files* +g:ada_withuse_ordinary ft_ada.txt /*g:ada_withuse_ordinary* +g:cargo_makeprg_params ft_rust.txt /*g:cargo_makeprg_params* +g:cargo_shell_command_runner ft_rust.txt /*g:cargo_shell_command_runner* +g:clojure_align_multiline_strings indent.txt /*g:clojure_align_multiline_strings* +g:clojure_align_subforms indent.txt /*g:clojure_align_subforms* +g:clojure_discard_macro syntax.txt /*g:clojure_discard_macro* +g:clojure_fold syntax.txt /*g:clojure_fold* +g:clojure_fuzzy_indent indent.txt /*g:clojure_fuzzy_indent* +g:clojure_fuzzy_indent_blacklist indent.txt /*g:clojure_fuzzy_indent_blacklist* +g:clojure_fuzzy_indent_patterns indent.txt /*g:clojure_fuzzy_indent_patterns* +g:clojure_maxlines indent.txt /*g:clojure_maxlines* +g:clojure_special_indent_words indent.txt /*g:clojure_special_indent_words* +g:clojure_syntax_keywords syntax.txt /*g:clojure_syntax_keywords* +g:colors_name options.txt /*g:colors_name* +g:decada ft_ada.txt /*g:decada* +g:decada.Error_Format ft_ada.txt /*g:decada.Error_Format* +g:decada.Make() ft_ada.txt /*g:decada.Make()* +g:decada.Make_Command ft_ada.txt /*g:decada.Make_Command* +g:decada.Unit_Name() ft_ada.txt /*g:decada.Unit_Name()* +g:filetype_csh syntax.txt /*g:filetype_csh* +g:filetype_r syntax.txt /*g:filetype_r* +g:ftplugin_rust_source_path ft_rust.txt /*g:ftplugin_rust_source_path* +g:gnat ft_ada.txt /*g:gnat* +g:gnat.Error_Format ft_ada.txt /*g:gnat.Error_Format* +g:gnat.Find() ft_ada.txt /*g:gnat.Find()* +g:gnat.Find_Program ft_ada.txt /*g:gnat.Find_Program* +g:gnat.Make() ft_ada.txt /*g:gnat.Make()* +g:gnat.Make_Command ft_ada.txt /*g:gnat.Make_Command* +g:gnat.Pretty() ft_ada.txt /*g:gnat.Pretty()* +g:gnat.Pretty_Program ft_ada.txt /*g:gnat.Pretty_Program* +g:gnat.Project_File ft_ada.txt /*g:gnat.Project_File* +g:gnat.Set_Project_File() ft_ada.txt /*g:gnat.Set_Project_File()* +g:gnat.Tags() ft_ada.txt /*g:gnat.Tags()* +g:gnat.Tags_Command ft_ada.txt /*g:gnat.Tags_Command* +g:gzip_exec pi_gzip.txt /*g:gzip_exec* +g:html_charset_override syntax.txt /*g:html_charset_override* +g:html_diff_one_file syntax.txt /*g:html_diff_one_file* +g:html_dynamic_folds syntax.txt /*g:html_dynamic_folds* +g:html_encoding_override syntax.txt /*g:html_encoding_override* +g:html_end_line syntax.txt /*g:html_end_line* +g:html_expand_tabs syntax.txt /*g:html_expand_tabs* +g:html_font syntax.txt /*g:html_font* +g:html_hover_unfold syntax.txt /*g:html_hover_unfold* +g:html_id_expr syntax.txt /*g:html_id_expr* +g:html_ignore_conceal syntax.txt /*g:html_ignore_conceal* +g:html_ignore_folding syntax.txt /*g:html_ignore_folding* +g:html_line_ids syntax.txt /*g:html_line_ids* +g:html_no_doc syntax.txt /*g:html_no_doc* +g:html_no_foldcolumn syntax.txt /*g:html_no_foldcolumn* +g:html_no_invalid syntax.txt /*g:html_no_invalid* +g:html_no_links syntax.txt /*g:html_no_links* +g:html_no_modeline syntax.txt /*g:html_no_modeline* +g:html_no_pre syntax.txt /*g:html_no_pre* +g:html_no_progress syntax.txt /*g:html_no_progress* +g:html_number_lines syntax.txt /*g:html_number_lines* +g:html_pre_wrap syntax.txt /*g:html_pre_wrap* +g:html_prevent_copy syntax.txt /*g:html_prevent_copy* +g:html_start_line syntax.txt /*g:html_start_line* +g:html_use_css syntax.txt /*g:html_use_css* +g:html_use_encoding syntax.txt /*g:html_use_encoding* +g:html_use_input_for_pc syntax.txt /*g:html_use_input_for_pc* +g:html_use_xhtml syntax.txt /*g:html_use_xhtml* +g:html_whole_filler syntax.txt /*g:html_whole_filler* +g:netrw_altfile pi_netrw.txt /*g:netrw_altfile* +g:netrw_alto pi_netrw.txt /*g:netrw_alto* +g:netrw_altv pi_netrw.txt /*g:netrw_altv* +g:netrw_banner pi_netrw.txt /*g:netrw_banner* +g:netrw_bannerbackslash pi_netrw.txt /*g:netrw_bannerbackslash* +g:netrw_browse_split pi_netrw.txt /*g:netrw_browse_split* +g:netrw_browsex_support_remote pi_netrw.txt /*g:netrw_browsex_support_remote* +g:netrw_browsex_viewer pi_netrw.txt /*g:netrw_browsex_viewer* +g:netrw_bufsettings pi_netrw.txt /*g:netrw_bufsettings* +g:netrw_chgperm pi_netrw.txt /*g:netrw_chgperm* +g:netrw_chgwin pi_netrw.txt /*g:netrw_chgwin* +g:netrw_clipboard pi_netrw.txt /*g:netrw_clipboard* +g:netrw_compress pi_netrw.txt /*g:netrw_compress* +g:netrw_ctags pi_netrw.txt /*g:netrw_ctags* +g:netrw_cursor pi_netrw.txt /*g:netrw_cursor* +g:netrw_cygwin pi_netrw.txt /*g:netrw_cygwin* +g:netrw_dav_cmd pi_netrw.txt /*g:netrw_dav_cmd* +g:netrw_decompress pi_netrw.txt /*g:netrw_decompress* +g:netrw_dirhistmax pi_netrw.txt /*g:netrw_dirhistmax* +g:netrw_dynamic_maxfilenamelen pi_netrw.txt /*g:netrw_dynamic_maxfilenamelen* +g:netrw_errorlvl pi_netrw.txt /*g:netrw_errorlvl* +g:netrw_fastbrowse pi_netrw.txt /*g:netrw_fastbrowse* +g:netrw_fetch_cmd pi_netrw.txt /*g:netrw_fetch_cmd* +g:netrw_ffkeep pi_netrw.txt /*g:netrw_ffkeep* +g:netrw_file_cmd pi_netrw.txt /*g:netrw_file_cmd* +g:netrw_fname_escape pi_netrw.txt /*g:netrw_fname_escape* +g:netrw_ftp pi_netrw.txt /*g:netrw_ftp* +g:netrw_ftp_browse_reject pi_netrw.txt /*g:netrw_ftp_browse_reject* +g:netrw_ftp_cmd pi_netrw.txt /*g:netrw_ftp_cmd* +g:netrw_ftp_list_cmd pi_netrw.txt /*g:netrw_ftp_list_cmd* +g:netrw_ftp_options pi_netrw.txt /*g:netrw_ftp_options* +g:netrw_ftp_sizelist_cmd pi_netrw.txt /*g:netrw_ftp_sizelist_cmd* +g:netrw_ftp_timelist_cmd pi_netrw.txt /*g:netrw_ftp_timelist_cmd* +g:netrw_ftpextracmd pi_netrw.txt /*g:netrw_ftpextracmd* +g:netrw_ftpmode pi_netrw.txt /*g:netrw_ftpmode* +g:netrw_glob_escape pi_netrw.txt /*g:netrw_glob_escape* +g:netrw_gx pi_netrw.txt /*g:netrw_gx* +g:netrw_hide pi_netrw.txt /*g:netrw_hide* +g:netrw_home pi_netrw.txt /*g:netrw_home* +g:netrw_http_cmd pi_netrw.txt /*g:netrw_http_cmd* +g:netrw_http_put_cmd pi_netrw.txt /*g:netrw_http_put_cmd* +g:netrw_http_xcmd pi_netrw.txt /*g:netrw_http_xcmd* +g:netrw_ignorenetrc pi_netrw.txt /*g:netrw_ignorenetrc* +g:netrw_keepdir pi_netrw.txt /*g:netrw_keepdir* +g:netrw_keepj pi_netrw.txt /*g:netrw_keepj* +g:netrw_list_cmd pi_netrw.txt /*g:netrw_list_cmd* +g:netrw_list_cmd_options pi_netrw.txt /*g:netrw_list_cmd_options* +g:netrw_list_hide pi_netrw.txt /*g:netrw_list_hide* +g:netrw_liststyle pi_netrw.txt /*g:netrw_liststyle* +g:netrw_localcopycmd pi_netrw.txt /*g:netrw_localcopycmd* +g:netrw_localcopycmdopt pi_netrw.txt /*g:netrw_localcopycmdopt* +g:netrw_localcopydircmd pi_netrw.txt /*g:netrw_localcopydircmd* +g:netrw_localcopydircmdopt pi_netrw.txt /*g:netrw_localcopydircmdopt* +g:netrw_localmkdir pi_netrw.txt /*g:netrw_localmkdir* +g:netrw_localmkdiropt pi_netrw.txt /*g:netrw_localmkdiropt* +g:netrw_localmovecmd pi_netrw.txt /*g:netrw_localmovecmd* +g:netrw_localmovecmdopt pi_netrw.txt /*g:netrw_localmovecmdopt* +g:netrw_localrmdir pi_netrw.txt /*g:netrw_localrmdir* +g:netrw_maxfilenamelen pi_netrw.txt /*g:netrw_maxfilenamelen* +g:netrw_menu pi_netrw.txt /*g:netrw_menu* +g:netrw_mkdir_cmd pi_netrw.txt /*g:netrw_mkdir_cmd* +g:netrw_mousemaps pi_netrw.txt /*g:netrw_mousemaps* +g:netrw_nobeval pi_netrw.txt /*g:netrw_nobeval* +g:netrw_nogx pi_netrw.txt /*g:netrw_nogx* +g:netrw_preview pi_netrw.txt /*g:netrw_preview* +g:netrw_rcp_cmd pi_netrw.txt /*g:netrw_rcp_cmd* +g:netrw_remote_mkdir pi_netrw.txt /*g:netrw_remote_mkdir* +g:netrw_rename_cmd pi_netrw.txt /*g:netrw_rename_cmd* +g:netrw_retmap pi_netrw.txt /*g:netrw_retmap* +g:netrw_rm_cmd pi_netrw.txt /*g:netrw_rm_cmd* +g:netrw_rmdir_cmd pi_netrw.txt /*g:netrw_rmdir_cmd* +g:netrw_rmf_cmd pi_netrw.txt /*g:netrw_rmf_cmd* +g:netrw_rsync_cmd pi_netrw.txt /*g:netrw_rsync_cmd* +g:netrw_rsync_sep pi_netrw.txt /*g:netrw_rsync_sep* +g:netrw_scp_cmd pi_netrw.txt /*g:netrw_scp_cmd* +g:netrw_scpport pi_netrw.txt /*g:netrw_scpport* +g:netrw_sepchr pi_netrw.txt /*g:netrw_sepchr* +g:netrw_servername pi_netrw.txt /*g:netrw_servername* +g:netrw_sftp_cmd pi_netrw.txt /*g:netrw_sftp_cmd* +g:netrw_silent pi_netrw.txt /*g:netrw_silent* +g:netrw_sizestyle pi_netrw.txt /*g:netrw_sizestyle* +g:netrw_sort_by pi_netrw.txt /*g:netrw_sort_by* +g:netrw_sort_direction pi_netrw.txt /*g:netrw_sort_direction* +g:netrw_sort_options pi_netrw.txt /*g:netrw_sort_options* +g:netrw_sort_sequence pi_netrw.txt /*g:netrw_sort_sequence* +g:netrw_special_syntax pi_netrw.txt /*g:netrw_special_syntax* +g:netrw_ssh_browse_reject pi_netrw.txt /*g:netrw_ssh_browse_reject* +g:netrw_ssh_cmd pi_netrw.txt /*g:netrw_ssh_cmd* +g:netrw_sshport pi_netrw.txt /*g:netrw_sshport* +g:netrw_suppress_gx_mesg pi_netrw.txt /*g:netrw_suppress_gx_mesg* +g:netrw_timefmt pi_netrw.txt /*g:netrw_timefmt* +g:netrw_tmpfile_escape pi_netrw.txt /*g:netrw_tmpfile_escape* +g:netrw_uid pi_netrw.txt /*g:netrw_uid* +g:netrw_use_errorwindow pi_netrw.txt /*g:netrw_use_errorwindow* +g:netrw_use_noswf pi_netrw.txt /*g:netrw_use_noswf* +g:netrw_use_nt_rcp pi_netrw.txt /*g:netrw_use_nt_rcp* +g:netrw_usetab pi_netrw.txt /*g:netrw_usetab* +g:netrw_win95ftp pi_netrw.txt /*g:netrw_win95ftp* +g:netrw_winsize pi_netrw.txt /*g:netrw_winsize* +g:netrw_wiw pi_netrw.txt /*g:netrw_wiw* +g:netrw_xstrlen pi_netrw.txt /*g:netrw_xstrlen* +g:no_mail_maps filetype.txt /*g:no_mail_maps* +g:no_plugin_maps filetype.txt /*g:no_plugin_maps* +g:plugin_exec filetype.txt /*g:plugin_exec* +g:rust_bang_comment_leader ft_rust.txt /*g:rust_bang_comment_leader* +g:rust_cargo_avoid_whole_workspace ft_rust.txt /*g:rust_cargo_avoid_whole_workspace* +g:rust_cargo_check_all_features ft_rust.txt /*g:rust_cargo_check_all_features* +g:rust_cargo_check_all_targets ft_rust.txt /*g:rust_cargo_check_all_targets* +g:rust_cargo_check_benches ft_rust.txt /*g:rust_cargo_check_benches* +g:rust_cargo_check_examples ft_rust.txt /*g:rust_cargo_check_examples* +g:rust_cargo_check_tests ft_rust.txt /*g:rust_cargo_check_tests* +g:rust_clip_command ft_rust.txt /*g:rust_clip_command* +g:rust_conceal ft_rust.txt /*g:rust_conceal* +g:rust_conceal_mod_path ft_rust.txt /*g:rust_conceal_mod_path* +g:rust_conceal_pub ft_rust.txt /*g:rust_conceal_pub* +g:rust_fold ft_rust.txt /*g:rust_fold* +g:rust_keep_autopairs_default ft_rust.txt /*g:rust_keep_autopairs_default* +g:rust_playpen_url ft_rust.txt /*g:rust_playpen_url* +g:rust_recommended_style ft_rust.txt /*g:rust_recommended_style* +g:rust_shortener_url ft_rust.txt /*g:rust_shortener_url* +g:rust_use_custom_ctags_defs ft_rust.txt /*g:rust_use_custom_ctags_defs* +g:rustc_makeprg_no_percent ft_rust.txt /*g:rustc_makeprg_no_percent* +g:rustc_path ft_rust.txt /*g:rustc_path* +g:rustfmt_autosave ft_rust.txt /*g:rustfmt_autosave* +g:rustfmt_autosave_if_config_present ft_rust.txt /*g:rustfmt_autosave_if_config_present* +g:rustfmt_command ft_rust.txt /*g:rustfmt_command* +g:rustfmt_emit_files ft_rust.txt /*g:rustfmt_emit_files* +g:rustfmt_fail_silently ft_rust.txt /*g:rustfmt_fail_silently* +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* +g:tar_browseoptions pi_tar.txt /*g:tar_browseoptions* +g:tar_cmd pi_tar.txt /*g:tar_cmd* +g:tar_copycmd pi_tar.txt /*g:tar_copycmd* +g:tar_extractcmd pi_tar.txt /*g:tar_extractcmd* +g:tar_nomax pi_tar.txt /*g:tar_nomax* +g:tar_readoptions pi_tar.txt /*g:tar_readoptions* +g:tar_secure pi_tar.txt /*g:tar_secure* +g:tar_writeoptions pi_tar.txt /*g:tar_writeoptions* +g:termdebug_config terminal.txt /*g:termdebug_config* +g:termdebugger terminal.txt /*g:termdebugger* +g:terminal_ansi_colors terminal.txt /*g:terminal_ansi_colors* +g:tex_comment_nospell syntax.txt /*g:tex_comment_nospell* +g:tex_conceal syntax.txt /*g:tex_conceal* +g:tex_fast syntax.txt /*g:tex_fast* +g:tex_flavor filetype.txt /*g:tex_flavor* +g:tex_fold_enabled syntax.txt /*g:tex_fold_enabled* +g:tex_isk syntax.txt /*g:tex_isk* +g:tex_matchcheck syntax.txt /*g:tex_matchcheck* +g:tex_no_error syntax.txt /*g:tex_no_error* +g:tex_nospell syntax.txt /*g:tex_nospell* +g:tex_stylish syntax.txt /*g:tex_stylish* +g:tex_subscripts syntax.txt /*g:tex_subscripts* +g:tex_superscripts syntax.txt /*g:tex_superscripts* +g:tex_verbspell syntax.txt /*g:tex_verbspell* +g:var eval.txt /*g:var* +g:vim_indent indent.txt /*g:vim_indent* +g:vim_indent_cont indent.txt /*g:vim_indent_cont* +g:vimball_home pi_vimball.txt /*g:vimball_home* +g:vimball_mkdir pi_vimball.txt /*g:vimball_mkdir* +g:vimsyn_embed syntax.txt /*g:vimsyn_embed* +g:vimsyn_folding syntax.txt /*g:vimsyn_folding* +g:vimsyn_maxlines syntax.txt /*g:vimsyn_maxlines* +g:vimsyn_minlines syntax.txt /*g:vimsyn_minlines* +g:vimsyn_noerror syntax.txt /*g:vimsyn_noerror* +g:yaml_schema syntax.txt /*g:yaml_schema* +g:zipPlugin_ext pi_zip.txt /*g:zipPlugin_ext* +g:zip_exec pi_zip.txt /*g:zip_exec* +g:zip_extractcmd pi_zip.txt /*g:zip_extractcmd* +g:zip_nomax pi_zip.txt /*g:zip_nomax* +g:zip_shq pi_zip.txt /*g:zip_shq* +g:zip_unzipcmd pi_zip.txt /*g:zip_unzipcmd* +g:zip_zipcmd pi_zip.txt /*g:zip_zipcmd* +g; motion.txt /*g;* +g< message.txt /*g<* +g<Down> motion.txt /*g<Down>* +g<End> motion.txt /*g<End>* +g<Home> motion.txt /*g<Home>* +g<LeftMouse> tagsrch.txt /*g<LeftMouse>* +g<RightMouse> tagsrch.txt /*g<RightMouse>* +g<Tab> tabpage.txt /*g<Tab>* +g<Up> motion.txt /*g<Up>* +g<kEnd> motion.txt /*g<kEnd>* +g? change.txt /*g?* +g?? change.txt /*g??* +g?g? change.txt /*g?g?* +g@ map.txt /*g@* +gD pattern.txt /*gD* +gE motion.txt /*gE* +gF editing.txt /*gF* +gH visual.txt /*gH* +gI insert.txt /*gI* +gJ change.txt /*gJ* +gM motion.txt /*gM* +gN visual.txt /*gN* +gP change.txt /*gP* +gQ intro.txt /*gQ* +gR change.txt /*gR* +gT tabpage.txt /*gT* +gU change.txt /*gU* +gUU change.txt /*gUU* +gUgU change.txt /*gUgU* +gV visual.txt /*gV* +g] tagsrch.txt /*g]* +g^ motion.txt /*g^* +g_ motion.txt /*g_* +g_CTRL-A various.txt /*g_CTRL-A* +g_CTRL-G editing.txt /*g_CTRL-G* +g_CTRL-H visual.txt /*g_CTRL-H* +g_CTRL-] tagsrch.txt /*g_CTRL-]* +g` motion.txt /*g`* +g`a motion.txt /*g`a* +ga various.txt /*ga* +garbagecollect() builtin.txt /*garbagecollect()* +gd pattern.txt /*gd* +gdb debug.txt /*gdb* +gdb-version terminal.txt /*gdb-version* +ge motion.txt /*ge* +gender-neutral helphelp.txt /*gender-neutral* +get() builtin.txt /*get()* +get-ms-debuggers debug.txt /*get-ms-debuggers* +getbufinfo() builtin.txt /*getbufinfo()* +getbufline() builtin.txt /*getbufline()* +getbufoneline() builtin.txt /*getbufoneline()* +getbufvar() builtin.txt /*getbufvar()* +getcellwidths() builtin.txt /*getcellwidths()* +getchangelist() builtin.txt /*getchangelist()* +getchar() builtin.txt /*getchar()* +getcharmod() builtin.txt /*getcharmod()* +getcharpos() builtin.txt /*getcharpos()* +getcharsearch() builtin.txt /*getcharsearch()* +getcharstr() builtin.txt /*getcharstr()* +getcmdcompltype() builtin.txt /*getcmdcompltype()* +getcmdline() builtin.txt /*getcmdline()* +getcmdpos() builtin.txt /*getcmdpos()* +getcmdscreenpos() builtin.txt /*getcmdscreenpos()* +getcmdtype() builtin.txt /*getcmdtype()* +getcmdwintype() builtin.txt /*getcmdwintype()* +getcompletion() builtin.txt /*getcompletion()* +getcurpos() builtin.txt /*getcurpos()* +getcursorcharpos() builtin.txt /*getcursorcharpos()* +getcwd() builtin.txt /*getcwd()* +getenv() builtin.txt /*getenv()* +getfontname() builtin.txt /*getfontname()* +getfperm() builtin.txt /*getfperm()* +getfsize() builtin.txt /*getfsize()* +getftime() builtin.txt /*getftime()* +getftype() builtin.txt /*getftype()* +getimstatus() builtin.txt /*getimstatus()* +getjumplist() builtin.txt /*getjumplist()* +getlatestvimscripts-install pi_getscript.txt /*getlatestvimscripts-install* +getline() builtin.txt /*getline()* +getloclist() builtin.txt /*getloclist()* +getmarklist() builtin.txt /*getmarklist()* +getmatches() builtin.txt /*getmatches()* +getmousepos() builtin.txt /*getmousepos()* +getmouseshape() builtin.txt /*getmouseshape()* +getpid() builtin.txt /*getpid()* +getpos() builtin.txt /*getpos()* +getqflist() builtin.txt /*getqflist()* +getqflist-examples quickfix.txt /*getqflist-examples* +getreg() builtin.txt /*getreg()* +getreginfo() builtin.txt /*getreginfo()* +getregtype() builtin.txt /*getregtype()* +getscript pi_getscript.txt /*getscript* +getscript-autoinstall pi_getscript.txt /*getscript-autoinstall* +getscript-data pi_getscript.txt /*getscript-data* +getscript-history pi_getscript.txt /*getscript-history* +getscript-plugins pi_getscript.txt /*getscript-plugins* +getscript-start pi_getscript.txt /*getscript-start* +getscriptinfo() builtin.txt /*getscriptinfo()* +gettabinfo() builtin.txt /*gettabinfo()* +gettabvar() builtin.txt /*gettabvar()* +gettabwinvar() builtin.txt /*gettabwinvar()* +gettagstack() builtin.txt /*gettagstack()* +gettext() builtin.txt /*gettext()* +getwininfo() builtin.txt /*getwininfo()* +getwinpos() builtin.txt /*getwinpos()* +getwinposx() builtin.txt /*getwinposx()* +getwinposy() builtin.txt /*getwinposy()* +getwinvar() builtin.txt /*getwinvar()* +gex starting.txt /*gex* +gf editing.txt /*gf* +gg motion.txt /*gg* +gh visual.txt /*gh* +gi insert.txt /*gi* +gj motion.txt /*gj* +gk motion.txt /*gk* +glob() builtin.txt /*glob()* +glob2regpat() builtin.txt /*glob2regpat()* +global-ime mbyte.txt /*global-ime* +global-local options.txt /*global-local* +global-variable eval.txt /*global-variable* +global_markfilelist pi_netrw.txt /*global_markfilelist* +globpath() builtin.txt /*globpath()* +glvs pi_getscript.txt /*glvs* +glvs-alg pi_getscript.txt /*glvs-alg* +glvs-algorithm pi_getscript.txt /*glvs-algorithm* +glvs-autoinstall pi_getscript.txt /*glvs-autoinstall* +glvs-contents pi_getscript.txt /*glvs-contents* +glvs-copyright pi_getscript.txt /*glvs-copyright* +glvs-data pi_getscript.txt /*glvs-data* +glvs-dist-install pi_getscript.txt /*glvs-dist-install* +glvs-hist pi_getscript.txt /*glvs-hist* +glvs-install pi_getscript.txt /*glvs-install* +glvs-options pi_getscript.txt /*glvs-options* +glvs-plugins pi_getscript.txt /*glvs-plugins* +glvs-usage pi_getscript.txt /*glvs-usage* +gm motion.txt /*gm* +gn visual.txt /*gn* +gnat#Insert_Tags_Header() ft_ada.txt /*gnat#Insert_Tags_Header()* +gnat#New() ft_ada.txt /*gnat#New()* +gnat-xref ft_ada.txt /*gnat-xref* +gnat_members ft_ada.txt /*gnat_members* +gnome-session gui_x11.txt /*gnome-session* +go motion.txt /*go* +gp change.txt /*gp* +gpm-mouse term.txt /*gpm-mouse* +gq change.txt /*gq* +gqap change.txt /*gqap* +gqgq change.txt /*gqgq* +gqq change.txt /*gqq* +gr change.txt /*gr* +graphic-option-gone version4.txt /*graphic-option-gone* +greek options.txt /*greek* +grep quickfix.txt /*grep* +groff.vim syntax.txt /*groff.vim* +gross-national-happiness intro.txt /*gross-national-happiness* +group-name syntax.txt /*group-name* +gs various.txt /*gs* +gsp.vim syntax.txt /*gsp.vim* +gstar pattern.txt /*gstar* +gt tabpage.txt /*gt* +gtk-css gui_x11.txt /*gtk-css* +gtk-tooltip-colors gui_x11.txt /*gtk-tooltip-colors* +gtk3-slow gui_x11.txt /*gtk3-slow* +gu change.txt /*gu* +gugu change.txt /*gugu* +gui gui.txt /*gui* +gui-IME gui.txt /*gui-IME* +gui-clipboard gui_w32.txt /*gui-clipboard* +gui-colors syntax.txt /*gui-colors* +gui-extras gui.txt /*gui-extras* +gui-font gui.txt /*gui-font* +gui-fontwide gui.txt /*gui-fontwide* +gui-footer debugger.txt /*gui-footer* +gui-fork gui_x11.txt /*gui-fork* +gui-functions usr_41.txt /*gui-functions* +gui-gnome gui_x11.txt /*gui-gnome* +gui-gnome-session gui_x11.txt /*gui-gnome-session* +gui-gtk gui_x11.txt /*gui-gtk* +gui-gtk-socketid gui_x11.txt /*gui-gtk-socketid* +gui-horiz-scroll gui.txt /*gui-horiz-scroll* +gui-init gui.txt /*gui-init* +gui-kde gui_x11.txt /*gui-kde* +gui-mouse gui.txt /*gui-mouse* +gui-mouse-focus gui.txt /*gui-mouse-focus* +gui-mouse-mapping gui.txt /*gui-mouse-mapping* +gui-mouse-modeless gui.txt /*gui-mouse-modeless* +gui-mouse-move gui.txt /*gui-mouse-move* +gui-mouse-select gui.txt /*gui-mouse-select* +gui-mouse-status gui.txt /*gui-mouse-status* +gui-mouse-various gui.txt /*gui-mouse-various* +gui-pty gui_x11.txt /*gui-pty* +gui-pty-erase gui_x11.txt /*gui-pty-erase* +gui-resources gui_x11.txt /*gui-resources* +gui-scrollbars gui.txt /*gui-scrollbars* +gui-selections gui.txt /*gui-selections* +gui-shell gui.txt /*gui-shell* +gui-shell-win32 gui_w32.txt /*gui-shell-win32* +gui-start gui.txt /*gui-start* +gui-toolbar gui.txt /*gui-toolbar* +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-printing gui_w32.txt /*gui-w32-printing* +gui-w32-start gui_w32.txt /*gui-w32-start* +gui-w32-various gui_w32.txt /*gui-w32-various* +gui-w32-windowid gui_w32.txt /*gui-w32-windowid* +gui-w32s os_win32.txt /*gui-w32s* +gui-win32-maximized gui_w32.txt /*gui-win32-maximized* +gui-x11 gui_x11.txt /*gui-x11* +gui-x11-athena gui_x11.txt /*gui-x11-athena* +gui-x11-compiling gui_x11.txt /*gui-x11-compiling* +gui-x11-gtk gui_x11.txt /*gui-x11-gtk* +gui-x11-kde gui_x11.txt /*gui-x11-kde* +gui-x11-misc gui_x11.txt /*gui-x11-misc* +gui-x11-motif gui_x11.txt /*gui-x11-motif* +gui-x11-neXtaw gui_x11.txt /*gui-x11-neXtaw* +gui-x11-printing gui_x11.txt /*gui-x11-printing* +gui-x11-start gui_x11.txt /*gui-x11-start* +gui-x11-various gui_x11.txt /*gui-x11-various* +gui.txt gui.txt /*gui.txt* +gui_running builtin.txt /*gui_running* +gui_w32.txt gui_w32.txt /*gui_w32.txt* +gui_x11.txt gui_x11.txt /*gui_x11.txt* +guifontwide_gtk gui.txt /*guifontwide_gtk* +guifontwide_win_mbyte gui.txt /*guifontwide_win_mbyte* +guu change.txt /*guu* +gv visual.txt /*gv* +gview starting.txt /*gview* +gvim starting.txt /*gvim* +gvimdiff diff.txt /*gvimdiff* +gvimrc gui.txt /*gvimrc* +gw change.txt /*gw* +gwgw change.txt /*gwgw* +gww change.txt /*gww* +gzip pi_gzip.txt /*gzip* +gzip-autocmd pi_gzip.txt /*gzip-autocmd* +gzip-example autocmd.txt /*gzip-example* +gzip-helpfile tips.txt /*gzip-helpfile* +g~ change.txt /*g~* +g~g~ change.txt /*g~g~* +g~~ change.txt /*g~~* +h motion.txt /*h* +haiku-bugs os_haiku.txt /*haiku-bugs* +haiku-colors os_haiku.txt /*haiku-colors* +haiku-compiling os_haiku.txt /*haiku-compiling* +haiku-dragndrop os_haiku.txt /*haiku-dragndrop* +haiku-fonts os_haiku.txt /*haiku-fonts* +haiku-general os_haiku.txt /*haiku-general* +haiku-gui os_haiku.txt /*haiku-gui* +haiku-launch os_haiku.txt /*haiku-launch* +haiku-meta os_haiku.txt /*haiku-meta* +haiku-mouse os_haiku.txt /*haiku-mouse* +haiku-support-credits os_haiku.txt /*haiku-support-credits* +haiku-toolbar-images os_haiku.txt /*haiku-toolbar-images* +haiku-user-settings-dir os_haiku.txt /*haiku-user-settings-dir* +haiku-vimdir os_haiku.txt /*haiku-vimdir* +hangul hangulin.txt /*hangul* +hangulin.txt hangulin.txt /*hangulin.txt* +has() builtin.txt /*has()* +has-patch builtin.txt /*has-patch* +has-python if_pyth.txt /*has-python* +has-pythonx if_pyth.txt /*has-pythonx* +has_key() builtin.txt /*has_key()* +haskell.vim syntax.txt /*haskell.vim* +haslocaldir() builtin.txt /*haslocaldir()* +hasmapto() builtin.txt /*hasmapto()* +hebrew hebrew.txt /*hebrew* +hebrew.txt hebrew.txt /*hebrew.txt* +help helphelp.txt /*help* +help-buffer-options helphelp.txt /*help-buffer-options* +help-context help.txt /*help-context* +help-curwin tips.txt /*help-curwin* +help-summary usr_02.txt /*help-summary* +help-tags tags 1 +help-translated helphelp.txt /*help-translated* +help-writing helphelp.txt /*help-writing* +help-xterm-window helphelp.txt /*help-xterm-window* +help.txt help.txt /*help.txt* +helphelp helphelp.txt /*helphelp* +helphelp.txt helphelp.txt /*helphelp.txt* +hex-editing tips.txt /*hex-editing* +hex-number eval.txt /*hex-number* +hidden-buffer windows.txt /*hidden-buffer* +hidden-changed version5.txt /*hidden-changed* +hidden-menus gui.txt /*hidden-menus* +hidden-options options.txt /*hidden-options* +hidden-quit windows.txt /*hidden-quit* +highlight-args syntax.txt /*highlight-args* +highlight-changed version4.txt /*highlight-changed* +highlight-clear syntax.txt /*highlight-clear* +highlight-cterm syntax.txt /*highlight-cterm* +highlight-ctermbg syntax.txt /*highlight-ctermbg* +highlight-ctermfg syntax.txt /*highlight-ctermfg* +highlight-ctermul syntax.txt /*highlight-ctermul* +highlight-default syntax.txt /*highlight-default* +highlight-font syntax.txt /*highlight-font* +highlight-groups syntax.txt /*highlight-groups* +highlight-gui syntax.txt /*highlight-gui* +highlight-guibg syntax.txt /*highlight-guibg* +highlight-guifg syntax.txt /*highlight-guifg* +highlight-guisp syntax.txt /*highlight-guisp* +highlight-start syntax.txt /*highlight-start* +highlight-stop syntax.txt /*highlight-stop* +highlight-term syntax.txt /*highlight-term* +highlightID() builtin.txt /*highlightID()* +highlight_exists() builtin.txt /*highlight_exists()* +highlighting-functions usr_41.txt /*highlighting-functions* +hist-names builtin.txt /*hist-names* +histadd() builtin.txt /*histadd()* +histdel() builtin.txt /*histdel()* +histget() builtin.txt /*histget()* +histnr() builtin.txt /*histnr()* +history cmdline.txt /*history* +history-functions usr_41.txt /*history-functions* +hit-enter message.txt /*hit-enter* +hit-enter-prompt message.txt /*hit-enter-prompt* +hit-return message.txt /*hit-return* +hitest.vim syntax.txt /*hitest.vim* +hjkl usr_02.txt /*hjkl* +hl-ColorColumn syntax.txt /*hl-ColorColumn* +hl-Conceal syntax.txt /*hl-Conceal* +hl-CurSearch syntax.txt /*hl-CurSearch* +hl-Cursor syntax.txt /*hl-Cursor* +hl-CursorColumn syntax.txt /*hl-CursorColumn* +hl-CursorIM syntax.txt /*hl-CursorIM* +hl-CursorLine syntax.txt /*hl-CursorLine* +hl-CursorLineFold syntax.txt /*hl-CursorLineFold* +hl-CursorLineNr syntax.txt /*hl-CursorLineNr* +hl-CursorLineSign syntax.txt /*hl-CursorLineSign* +hl-DiffAdd syntax.txt /*hl-DiffAdd* +hl-DiffChange syntax.txt /*hl-DiffChange* +hl-DiffDelete syntax.txt /*hl-DiffDelete* +hl-DiffText syntax.txt /*hl-DiffText* +hl-Directory syntax.txt /*hl-Directory* +hl-EndOfBuffer syntax.txt /*hl-EndOfBuffer* +hl-ErrorMsg syntax.txt /*hl-ErrorMsg* +hl-FoldColumn syntax.txt /*hl-FoldColumn* +hl-Folded syntax.txt /*hl-Folded* +hl-Ignore syntax.txt /*hl-Ignore* +hl-IncSearch syntax.txt /*hl-IncSearch* +hl-LineNr syntax.txt /*hl-LineNr* +hl-LineNrAbove syntax.txt /*hl-LineNrAbove* +hl-LineNrBelow syntax.txt /*hl-LineNrBelow* +hl-MatchParen syntax.txt /*hl-MatchParen* +hl-Menu syntax.txt /*hl-Menu* +hl-MessageWindow syntax.txt /*hl-MessageWindow* +hl-ModeMsg syntax.txt /*hl-ModeMsg* +hl-MoreMsg syntax.txt /*hl-MoreMsg* +hl-NonText syntax.txt /*hl-NonText* +hl-Normal syntax.txt /*hl-Normal* +hl-Pmenu syntax.txt /*hl-Pmenu* +hl-PmenuExtra syntax.txt /*hl-PmenuExtra* +hl-PmenuExtraSel syntax.txt /*hl-PmenuExtraSel* +hl-PmenuKind syntax.txt /*hl-PmenuKind* +hl-PmenuKindSel syntax.txt /*hl-PmenuKindSel* +hl-PmenuSbar syntax.txt /*hl-PmenuSbar* +hl-PmenuSel syntax.txt /*hl-PmenuSel* +hl-PmenuThumb syntax.txt /*hl-PmenuThumb* +hl-PopupNotification syntax.txt /*hl-PopupNotification* +hl-Question syntax.txt /*hl-Question* +hl-QuickFixLine syntax.txt /*hl-QuickFixLine* +hl-Scrollbar syntax.txt /*hl-Scrollbar* +hl-Search syntax.txt /*hl-Search* +hl-SignColumn syntax.txt /*hl-SignColumn* +hl-SpecialKey syntax.txt /*hl-SpecialKey* +hl-SpellBad syntax.txt /*hl-SpellBad* +hl-SpellCap syntax.txt /*hl-SpellCap* +hl-SpellLocal syntax.txt /*hl-SpellLocal* +hl-SpellRare syntax.txt /*hl-SpellRare* +hl-StatusLine syntax.txt /*hl-StatusLine* +hl-StatusLineNC syntax.txt /*hl-StatusLineNC* +hl-StatusLineTerm syntax.txt /*hl-StatusLineTerm* +hl-StatusLineTermNC syntax.txt /*hl-StatusLineTermNC* +hl-TOhtmlProgress syntax.txt /*hl-TOhtmlProgress* +hl-TabLine syntax.txt /*hl-TabLine* +hl-TabLineFill syntax.txt /*hl-TabLineFill* +hl-TabLineSel syntax.txt /*hl-TabLineSel* +hl-Terminal syntax.txt /*hl-Terminal* +hl-Title syntax.txt /*hl-Title* +hl-ToolbarButton gui.txt /*hl-ToolbarButton* +hl-ToolbarLine gui.txt /*hl-ToolbarLine* +hl-Tooltip syntax.txt /*hl-Tooltip* +hl-User1 syntax.txt /*hl-User1* +hl-User1..9 syntax.txt /*hl-User1..9* +hl-User9 syntax.txt /*hl-User9* +hl-VertSplit syntax.txt /*hl-VertSplit* +hl-Visual syntax.txt /*hl-Visual* +hl-VisualNOS syntax.txt /*hl-VisualNOS* +hl-WarningMsg syntax.txt /*hl-WarningMsg* +hl-WildMenu syntax.txt /*hl-WildMenu* +hl-debugBreakpoint terminal.txt /*hl-debugBreakpoint* +hl-debugPC terminal.txt /*hl-debugPC* +hl-lCursor syntax.txt /*hl-lCursor* +hlID() builtin.txt /*hlID()* +hlexists() builtin.txt /*hlexists()* +hlget() builtin.txt /*hlget()* +hlsearch-variable eval.txt /*hlsearch-variable* +hlset() builtin.txt /*hlset()* +holy-grail index.txt /*holy-grail* +home intro.txt /*home* +home-replace editing.txt /*home-replace* +hostname() builtin.txt /*hostname()* +how-do-i howto.txt /*how-do-i* +how-to howto.txt /*how-to* +howdoi howto.txt /*howdoi* +howto howto.txt /*howto* +howto.txt howto.txt /*howto.txt* +hpterm term.txt /*hpterm* +hpterm-color syntax.txt /*hpterm-color* +html-flavor insert.txt /*html-flavor* +html-folding syntax.txt /*html-folding* +html-indent indent.txt /*html-indent* +html-indenting indent.txt /*html-indenting* +html.vim syntax.txt /*html.vim* +htmlos.vim syntax.txt /*htmlos.vim* +http pi_netrw.txt /*http* +i insert.txt /*i* +i' motion.txt /*i'* +i( motion.txt /*i(* +i) motion.txt /*i)* +i< motion.txt /*i<* +i> motion.txt /*i>* +iB motion.txt /*iB* +iBus gui.txt /*iBus* +iW motion.txt /*iW* +i[ motion.txt /*i[* +i] motion.txt /*i]* +i_0_CTRL-D insert.txt /*i_0_CTRL-D* +i_<BS> insert.txt /*i_<BS>* +i_<C-End> insert.txt /*i_<C-End>* +i_<C-Home> insert.txt /*i_<C-Home>* +i_<C-Left> insert.txt /*i_<C-Left>* +i_<C-PageDown> tabpage.txt /*i_<C-PageDown>* +i_<C-PageUp> tabpage.txt /*i_<C-PageUp>* +i_<C-Right> insert.txt /*i_<C-Right>* +i_<CR> insert.txt /*i_<CR>* +i_<Del> insert.txt /*i_<Del>* +i_<Down> insert.txt /*i_<Down>* +i_<End> insert.txt /*i_<End>* +i_<Esc> insert.txt /*i_<Esc>* +i_<F1> helphelp.txt /*i_<F1>* +i_<Help> helphelp.txt /*i_<Help>* +i_<Home> insert.txt /*i_<Home>* +i_<Insert> insert.txt /*i_<Insert>* +i_<Left> insert.txt /*i_<Left>* +i_<LeftMouse> insert.txt /*i_<LeftMouse>* +i_<NL> insert.txt /*i_<NL>* +i_<PageDown> insert.txt /*i_<PageDown>* +i_<PageUp> insert.txt /*i_<PageUp>* +i_<Right> insert.txt /*i_<Right>* +i_<S-Down> insert.txt /*i_<S-Down>* +i_<S-Left> insert.txt /*i_<S-Left>* +i_<S-Right> insert.txt /*i_<S-Right>* +i_<S-ScrollWheelDown> insert.txt /*i_<S-ScrollWheelDown>* +i_<S-ScrollWheelLeft> insert.txt /*i_<S-ScrollWheelLeft>* +i_<S-ScrollWheelRight> insert.txt /*i_<S-ScrollWheelRight>* +i_<S-ScrollWheelUp> insert.txt /*i_<S-ScrollWheelUp>* +i_<S-Up> insert.txt /*i_<S-Up>* +i_<ScrollWheelDown> insert.txt /*i_<ScrollWheelDown>* +i_<ScrollWheelLeft> insert.txt /*i_<ScrollWheelLeft>* +i_<ScrollWheelRight> insert.txt /*i_<ScrollWheelRight>* +i_<ScrollWheelUp> insert.txt /*i_<ScrollWheelUp>* +i_<Tab> insert.txt /*i_<Tab>* +i_<Up> insert.txt /*i_<Up>* +i_BS insert.txt /*i_BS* +i_CTRL-<PageDown> tabpage.txt /*i_CTRL-<PageDown>* +i_CTRL-<PageUp> tabpage.txt /*i_CTRL-<PageUp>* +i_CTRL-@ insert.txt /*i_CTRL-@* +i_CTRL-A insert.txt /*i_CTRL-A* +i_CTRL-B-gone version5.txt /*i_CTRL-B-gone* +i_CTRL-C insert.txt /*i_CTRL-C* +i_CTRL-D insert.txt /*i_CTRL-D* +i_CTRL-E insert.txt /*i_CTRL-E* +i_CTRL-F indent.txt /*i_CTRL-F* +i_CTRL-G_<Down> insert.txt /*i_CTRL-G_<Down>* +i_CTRL-G_<Up> insert.txt /*i_CTRL-G_<Up>* +i_CTRL-G_CTRL-J insert.txt /*i_CTRL-G_CTRL-J* +i_CTRL-G_CTRL-K insert.txt /*i_CTRL-G_CTRL-K* +i_CTRL-G_U insert.txt /*i_CTRL-G_U* +i_CTRL-G_j insert.txt /*i_CTRL-G_j* +i_CTRL-G_k insert.txt /*i_CTRL-G_k* +i_CTRL-G_u insert.txt /*i_CTRL-G_u* +i_CTRL-H insert.txt /*i_CTRL-H* +i_CTRL-I insert.txt /*i_CTRL-I* +i_CTRL-J insert.txt /*i_CTRL-J* +i_CTRL-K insert.txt /*i_CTRL-K* +i_CTRL-L insert.txt /*i_CTRL-L* +i_CTRL-M insert.txt /*i_CTRL-M* +i_CTRL-N insert.txt /*i_CTRL-N* +i_CTRL-O insert.txt /*i_CTRL-O* +i_CTRL-P insert.txt /*i_CTRL-P* +i_CTRL-Q insert.txt /*i_CTRL-Q* +i_CTRL-R insert.txt /*i_CTRL-R* +i_CTRL-R_- insert.txt /*i_CTRL-R_-* +i_CTRL-R_= insert.txt /*i_CTRL-R_=* +i_CTRL-R_CTRL-O insert.txt /*i_CTRL-R_CTRL-O* +i_CTRL-R_CTRL-P insert.txt /*i_CTRL-R_CTRL-P* +i_CTRL-R_CTRL-R insert.txt /*i_CTRL-R_CTRL-R* +i_CTRL-SHIFT-Q insert.txt /*i_CTRL-SHIFT-Q* +i_CTRL-SHIFT-V insert.txt /*i_CTRL-SHIFT-V* +i_CTRL-T insert.txt /*i_CTRL-T* +i_CTRL-U insert.txt /*i_CTRL-U* +i_CTRL-V insert.txt /*i_CTRL-V* +i_CTRL-V_digit insert.txt /*i_CTRL-V_digit* +i_CTRL-W insert.txt /*i_CTRL-W* +i_CTRL-X insert.txt /*i_CTRL-X* +i_CTRL-X_CTRL-D insert.txt /*i_CTRL-X_CTRL-D* +i_CTRL-X_CTRL-E insert.txt /*i_CTRL-X_CTRL-E* +i_CTRL-X_CTRL-F insert.txt /*i_CTRL-X_CTRL-F* +i_CTRL-X_CTRL-I insert.txt /*i_CTRL-X_CTRL-I* +i_CTRL-X_CTRL-K insert.txt /*i_CTRL-X_CTRL-K* +i_CTRL-X_CTRL-L insert.txt /*i_CTRL-X_CTRL-L* +i_CTRL-X_CTRL-N insert.txt /*i_CTRL-X_CTRL-N* +i_CTRL-X_CTRL-O insert.txt /*i_CTRL-X_CTRL-O* +i_CTRL-X_CTRL-P insert.txt /*i_CTRL-X_CTRL-P* +i_CTRL-X_CTRL-S insert.txt /*i_CTRL-X_CTRL-S* +i_CTRL-X_CTRL-T insert.txt /*i_CTRL-X_CTRL-T* +i_CTRL-X_CTRL-U insert.txt /*i_CTRL-X_CTRL-U* +i_CTRL-X_CTRL-V insert.txt /*i_CTRL-X_CTRL-V* +i_CTRL-X_CTRL-Y insert.txt /*i_CTRL-X_CTRL-Y* +i_CTRL-X_CTRL-Z insert.txt /*i_CTRL-X_CTRL-Z* +i_CTRL-X_CTRL-] insert.txt /*i_CTRL-X_CTRL-]* +i_CTRL-X_index index.txt /*i_CTRL-X_index* +i_CTRL-X_s insert.txt /*i_CTRL-X_s* +i_CTRL-Y insert.txt /*i_CTRL-Y* +i_CTRL-Z options.txt /*i_CTRL-Z* +i_CTRL-[ insert.txt /*i_CTRL-[* +i_CTRL-\_CTRL-G intro.txt /*i_CTRL-\\_CTRL-G* +i_CTRL-\_CTRL-N intro.txt /*i_CTRL-\\_CTRL-N* +i_CTRL-\_CTRL-O insert.txt /*i_CTRL-\\_CTRL-O* +i_CTRL-] insert.txt /*i_CTRL-]* +i_CTRL-^ insert.txt /*i_CTRL-^* +i_CTRL-_ insert.txt /*i_CTRL-_* +i_DEL insert.txt /*i_DEL* +i_Tab insert.txt /*i_Tab* +i_^_CTRL-D insert.txt /*i_^_CTRL-D* +i_backspacing insert.txt /*i_backspacing* +i_digraph digraph.txt /*i_digraph* +i_esc intro.txt /*i_esc* +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* +iconv() builtin.txt /*iconv()* +iconv-dynamic mbyte.txt /*iconv-dynamic* +ident-search tips.txt /*ident-search* +idl-syntax syntax.txt /*idl-syntax* +idl.vim syntax.txt /*idl.vim* +if_cscop.txt if_cscop.txt /*if_cscop.txt* +if_lua.txt if_lua.txt /*if_lua.txt* +if_mzsch.txt if_mzsch.txt /*if_mzsch.txt* +if_ole.txt if_ole.txt /*if_ole.txt* +if_perl.txt if_perl.txt /*if_perl.txt* +if_pyth.txt if_pyth.txt /*if_pyth.txt* +if_ruby.txt if_ruby.txt /*if_ruby.txt* +if_sniff.txt if_sniff.txt /*if_sniff.txt* +if_tcl.txt if_tcl.txt /*if_tcl.txt* +ignore-errors eval.txt /*ignore-errors* +ignore-timestamp editing.txt /*ignore-timestamp* +implements vim9class.txt /*implements* +import-autoload vim9.txt /*import-autoload* +import-legacy vim9.txt /*import-legacy* +import-map vim9.txt /*import-map* +improved-autocmds-5.4 version5.txt /*improved-autocmds-5.4* +improved-quickfix version5.txt /*improved-quickfix* +improved-sessions version5.txt /*improved-sessions* +improved-viminfo version5.txt /*improved-viminfo* +improvements-5 version5.txt /*improvements-5* +improvements-6 version6.txt /*improvements-6* +improvements-7 version7.txt /*improvements-7* +improvements-8 version8.txt /*improvements-8* +improvements-9 version9.txt /*improvements-9* +in_bot channel.txt /*in_bot* +in_buf channel.txt /*in_buf* +in_io-buffer channel.txt /*in_io-buffer* +in_mode channel.txt /*in_mode* +in_name channel.txt /*in_name* +in_top channel.txt /*in_top* +inactive-buffer windows.txt /*inactive-buffer* +include-search tagsrch.txt /*include-search* +inclusion helphelp.txt /*inclusion* +inclusive motion.txt /*inclusive* +incomp-small-6 version6.txt /*incomp-small-6* +incompatible-5 version5.txt /*incompatible-5* +incompatible-6 version6.txt /*incompatible-6* +incompatible-7 version7.txt /*incompatible-7* +incompatible-8 version8.txt /*incompatible-8* +incompatible-9 version9.txt /*incompatible-9* +indent() builtin.txt /*indent()* +indent-expression indent.txt /*indent-expression* +indent.txt indent.txt /*indent.txt* +indentkeys-format indent.txt /*indentkeys-format* +index index.txt /*index* +index() builtin.txt /*index()* +index.txt index.txt /*index.txt* +indexof() builtin.txt /*indexof()* +info-message starting.txt /*info-message* +inform.vim syntax.txt /*inform.vim* +informix ft_sql.txt /*informix* +initialization starting.txt /*initialization* +inline-function vim9.txt /*inline-function* +input() builtin.txt /*input()* +inputdialog() builtin.txt /*inputdialog()* +inputlist() builtin.txt /*inputlist()* +inputrestore() builtin.txt /*inputrestore()* +inputsave() builtin.txt /*inputsave()* +inputsecret() builtin.txt /*inputsecret()* +ins-completion insert.txt /*ins-completion* +ins-completion-menu insert.txt /*ins-completion-menu* +ins-expandtab insert.txt /*ins-expandtab* +ins-reverse rileft.txt /*ins-reverse* +ins-smarttab insert.txt /*ins-smarttab* +ins-softtabstop insert.txt /*ins-softtabstop* +ins-special-keys insert.txt /*ins-special-keys* +ins-special-special insert.txt /*ins-special-special* +ins-textwidth insert.txt /*ins-textwidth* +insert insert.txt /*insert* +insert() builtin.txt /*insert()* +insert-index index.txt /*insert-index* +insert.txt insert.txt /*insert.txt* +insert_expand insert.txt /*insert_expand* +inserting insert.txt /*inserting* +inserting-ex insert.txt /*inserting-ex* +inserting-file insert.txt /*inserting-file* +insertmode-variable eval.txt /*insertmode-variable* +install usr_90.txt /*install* +install-home usr_90.txt /*install-home* +install-registry gui_w32.txt /*install-registry* +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* +interfaces-5.2 version5.txt /*interfaces-5.2* +internal-error message.txt /*internal-error* +internal-variables eval.txt /*internal-variables* +internal-wordlist spell.txt /*internal-wordlist* +internet intro.txt /*internet* +interpolated-string eval.txt /*interpolated-string* +interrupt() builtin.txt /*interrupt()* +intro intro.txt /*intro* +intro.txt intro.txt /*intro.txt* +inverse syntax.txt /*inverse* +invert() builtin.txt /*invert()* +ip motion.txt /*ip* +iquote motion.txt /*iquote* +is motion.txt /*is* +isabsolutepath() builtin.txt /*isabsolutepath()* +isdirectory() builtin.txt /*isdirectory()* +isinf() builtin.txt /*isinf()* +islocked() builtin.txt /*islocked()* +isnan() builtin.txt /*isnan()* +it motion.txt /*it* +italic syntax.txt /*italic* +items() builtin.txt /*items()* +iw motion.txt /*iw* +i{ motion.txt /*i{* +i} motion.txt /*i}* +j motion.txt /*j* +java-cinoptions indent.txt /*java-cinoptions* +java-indenting indent.txt /*java-indenting* +java.vim syntax.txt /*java.vim* +javascript-cinoptions indent.txt /*javascript-cinoptions* +javascript-indenting indent.txt /*javascript-indenting* +job channel.txt /*job* +job-callback channel.txt /*job-callback* +job-channel-overview channel.txt /*job-channel-overview* +job-close_cb channel.txt /*job-close_cb* +job-control channel.txt /*job-control* +job-drop channel.txt /*job-drop* +job-err_cb channel.txt /*job-err_cb* +job-err_io channel.txt /*job-err_io* +job-exit_cb channel.txt /*job-exit_cb* +job-functions usr_41.txt /*job-functions* +job-functions-details channel.txt /*job-functions-details* +job-in_io channel.txt /*job-in_io* +job-noblock channel.txt /*job-noblock* +job-options channel.txt /*job-options* +job-out_cb channel.txt /*job-out_cb* +job-out_io channel.txt /*job-out_io* +job-start channel.txt /*job-start* +job-start-if-needed channel.txt /*job-start-if-needed* +job-start-nochannel channel.txt /*job-start-nochannel* +job-stoponexit channel.txt /*job-stoponexit* +job-term channel.txt /*job-term* +job-timeout channel.txt /*job-timeout* +job_getchannel() channel.txt /*job_getchannel()* +job_info() channel.txt /*job_info()* +job_setoptions() channel.txt /*job_setoptions()* +job_start() channel.txt /*job_start()* +job_status() channel.txt /*job_status()* +job_stop() channel.txt /*job_stop()* +join() builtin.txt /*join()* +js_decode() builtin.txt /*js_decode()* +js_encode() builtin.txt /*js_encode()* +jsbterm-mouse options.txt /*jsbterm-mouse* +json.vim syntax.txt /*json.vim* +json_decode() builtin.txt /*json_decode()* +json_encode() builtin.txt /*json_encode()* +jtags tagsrch.txt /*jtags* +jump-motions motion.txt /*jump-motions* +jumplist motion.txt /*jumplist* +jumplist-stack motion.txt /*jumplist-stack* +jumpto-diffs diff.txt /*jumpto-diffs* +k motion.txt /*k* +kcc uganda.txt /*kcc* +kde gui_x11.txt /*kde* +key-codes intro.txt /*key-codes* +key-codes-changed version4.txt /*key-codes-changed* +key-mapping map.txt /*key-mapping* +key-notation intro.txt /*key-notation* +key-variable eval.txt /*key-variable* +keycodes intro.txt /*keycodes* +keymap-accents mbyte.txt /*keymap-accents* +keymap-file-format mbyte.txt /*keymap-file-format* +keymap-hebrew mbyte.txt /*keymap-hebrew* +keypad-0 intro.txt /*keypad-0* +keypad-9 intro.txt /*keypad-9* +keypad-comma term.txt /*keypad-comma* +keypad-divide intro.txt /*keypad-divide* +keypad-end intro.txt /*keypad-end* +keypad-enter intro.txt /*keypad-enter* +keypad-home intro.txt /*keypad-home* +keypad-minus intro.txt /*keypad-minus* +keypad-multiply intro.txt /*keypad-multiply* +keypad-page-down intro.txt /*keypad-page-down* +keypad-page-up intro.txt /*keypad-page-up* +keypad-plus intro.txt /*keypad-plus* +keypad-point intro.txt /*keypad-point* +keys() builtin.txt /*keys()* +keytrans() builtin.txt /*keytrans()* +kitty-keyboard-protocol map.txt /*kitty-keyboard-protocol* +kitty-terminal term.txt /*kitty-terminal* +known-bugs todo.txt /*known-bugs* +l motion.txt /*l* +l: eval.txt /*l:* +l:var eval.txt /*l:var* +lCursor mbyte.txt /*lCursor* +lace.vim syntax.txt /*lace.vim* +lambda eval.txt /*lambda* +lang-variable eval.txt /*lang-variable* +language-mapping map.txt /*language-mapping* +language-server-protocol channel.txt /*language-server-protocol* +last-pattern pattern.txt /*last-pattern* +last-position-jump usr_05.txt /*last-position-jump* +last_buffer_nr() builtin.txt /*last_buffer_nr()* +latex-syntax syntax.txt /*latex-syntax* +lc_time-variable eval.txt /*lc_time-variable* +lcs-conceal options.txt /*lcs-conceal* +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-multispace options.txt /*lcs-multispace* +lcs-nbsp options.txt /*lcs-nbsp* +lcs-precedes options.txt /*lcs-precedes* +lcs-space options.txt /*lcs-space* +lcs-tab options.txt /*lcs-tab* +lcs-trail options.txt /*lcs-trail* +left-right-motions motion.txt /*left-right-motions* +legacy-import vim9.txt /*legacy-import* +len() builtin.txt /*len()* +less various.txt /*less* +letter print.txt /*letter* +lex.vim syntax.txt /*lex.vim* +lhaskell.vim syntax.txt /*lhaskell.vim* +libcall() builtin.txt /*libcall()* +libcallnr() builtin.txt /*libcallnr()* +license uganda.txt /*license* +lid quickfix.txt /*lid* +lifelines.vim syntax.txt /*lifelines.vim* +limits vi_diff.txt /*limits* +line() builtin.txt /*line()* +line-continuation repeat.txt /*line-continuation* +line-continuation-comment repeat.txt /*line-continuation-comment* +line2byte() builtin.txt /*line2byte()* +linefeed intro.txt /*linefeed* +linewise motion.txt /*linewise* +linewise-register change.txt /*linewise-register* +linewise-visual visual.txt /*linewise-visual* +lisp.vim syntax.txt /*lisp.vim* +lispindent() builtin.txt /*lispindent()* +list eval.txt /*list* +list-concatenation eval.txt /*list-concatenation* +list-functions usr_41.txt /*list-functions* +list-identity eval.txt /*list-identity* +list-index eval.txt /*list-index* +list-modification eval.txt /*list-modification* +list-repeat windows.txt /*list-repeat* +list2blob() builtin.txt /*list2blob()* +list2str() builtin.txt /*list2str()* +listener_add() builtin.txt /*listener_add()* +listener_flush() builtin.txt /*listener_flush()* +listener_remove() builtin.txt /*listener_remove()* +lite.vim syntax.txt /*lite.vim* +literal-Dict eval.txt /*literal-Dict* +literal-string eval.txt /*literal-string* +lnum-variable eval.txt /*lnum-variable* +load-plugins starting.txt /*load-plugins* +load-vim-script repeat.txt /*load-vim-script* +local-additions help.txt /*local-additions* +local-function userfunc.txt /*local-function* +local-noglobal options.txt /*local-noglobal* +local-options options.txt /*local-options* +local-variable eval.txt /*local-variable* +local-variables userfunc.txt /*local-variables* +local_markfilelist pi_netrw.txt /*local_markfilelist* +locale mbyte.txt /*locale* +locale-name mbyte.txt /*locale-name* +localtime() builtin.txt /*localtime()* +location-list quickfix.txt /*location-list* +location-list-file-window quickfix.txt /*location-list-file-window* +location-list-window quickfix.txt /*location-list-window* +log() builtin.txt /*log()* +log10() builtin.txt /*log10()* +logiPat pi_logipat.txt /*logiPat* +logiPat-arg pi_logipat.txt /*logiPat-arg* +logiPat-caveat pi_logipat.txt /*logiPat-caveat* +logiPat-cmd pi_logipat.txt /*logiPat-cmd* +logiPat-contents pi_logipat.txt /*logiPat-contents* +logiPat-copyright pi_logipat.txt /*logiPat-copyright* +logiPat-examples pi_logipat.txt /*logiPat-examples* +logiPat-history pi_logipat.txt /*logiPat-history* +logiPat-input pi_logipat.txt /*logiPat-input* +logiPat-man pi_logipat.txt /*logiPat-man* +logiPat-manual pi_logipat.txt /*logiPat-manual* +logiPat-operators pi_logipat.txt /*logiPat-operators* +logiPat-pattern pi_logipat.txt /*logiPat-pattern* +long-lines version5.txt /*long-lines* +love intro.txt /*love* +lowercase change.txt /*lowercase* +lpc.vim syntax.txt /*lpc.vim* +lua if_lua.txt /*lua* +lua-blob if_lua.txt /*lua-blob* +lua-buffer if_lua.txt /*lua-buffer* +lua-commands if_lua.txt /*lua-commands* +lua-dict if_lua.txt /*lua-dict* +lua-dynamic if_lua.txt /*lua-dynamic* +lua-eval if_lua.txt /*lua-eval* +lua-funcref if_lua.txt /*lua-funcref* +lua-list if_lua.txt /*lua-list* +lua-luaeval if_lua.txt /*lua-luaeval* +lua-vim if_lua.txt /*lua-vim* +lua-vim-variables if_lua.txt /*lua-vim-variables* +lua-window if_lua.txt /*lua-window* +lua.vim syntax.txt /*lua.vim* +luaeval() builtin.txt /*luaeval()* +m motion.txt /*m* +m' motion.txt /*m'* +m< motion.txt /*m<* +m> motion.txt /*m>* +m[ motion.txt /*m[* +m] motion.txt /*m]* +m` motion.txt /*m`* +mac os_mac.txt /*mac* +mac-bug os_mac.txt /*mac-bug* +mac-compile os_mac.txt /*mac-compile* +mac-darwin-feature os_mac.txt /*mac-darwin-feature* +mac-faq os_mac.txt /*mac-faq* +mac-filename os_mac.txt /*mac-filename* +mac-lack os_mac.txt /*mac-lack* +mac-standard-mappings os_mac.txt /*mac-standard-mappings* +mac-vimfile os_mac.txt /*mac-vimfile* +macintosh os_mac.txt /*macintosh* +macro map.txt /*macro* +mail-list intro.txt /*mail-list* +mail.vim syntax.txt /*mail.vim* +maillist intro.txt /*maillist* +maillist-archive intro.txt /*maillist-archive* +make.vim syntax.txt /*make.vim* +man.vim filetype.txt /*man.vim* +manpager.vim filetype.txt /*manpager.vim* +manual-copyright usr_01.txt /*manual-copyright* +map() builtin.txt /*map()* +map-<SID> map.txt /*map-<SID>* +map-CTRL-C map.txt /*map-CTRL-C* +map-ambiguous map.txt /*map-ambiguous* +map-backslash map.txt /*map-backslash* +map-backtick tips.txt /*map-backtick* +map-bar map.txt /*map-bar* +map-comments map.txt /*map-comments* +map-empty-rhs map.txt /*map-empty-rhs* +map-error map.txt /*map-error* +map-examples map.txt /*map-examples* +map-keys-fails map.txt /*map-keys-fails* +map-listing map.txt /*map-listing* +map-modes map.txt /*map-modes* +map-multibyte map.txt /*map-multibyte* +map-overview map.txt /*map-overview* +map-precedence map.txt /*map-precedence* +map-return map.txt /*map-return* +map-self-destroy tips.txt /*map-self-destroy* +map-space_in_lhs map.txt /*map-space_in_lhs* +map-space_in_rhs map.txt /*map-space_in_rhs* +map-table map.txt /*map-table* +map-trailing-white map.txt /*map-trailing-white* +map-typing map.txt /*map-typing* +map-which-keys map.txt /*map-which-keys* +map.txt map.txt /*map.txt* +map_CTRL-C map.txt /*map_CTRL-C* +map_backslash map.txt /*map_backslash* +map_bar map.txt /*map_bar* +map_empty_rhs map.txt /*map_empty_rhs* +map_return map.txt /*map_return* +map_space_in_lhs map.txt /*map_space_in_lhs* +map_space_in_rhs map.txt /*map_space_in_rhs* +maparg() builtin.txt /*maparg()* +mapcheck() builtin.txt /*mapcheck()* +maple.vim syntax.txt /*maple.vim* +mapleader map.txt /*mapleader* +maplist() builtin.txt /*maplist()* +maplocalleader map.txt /*maplocalleader* +mapmode-c map.txt /*mapmode-c* +mapmode-i map.txt /*mapmode-i* +mapmode-ic map.txt /*mapmode-ic* +mapmode-l map.txt /*mapmode-l* +mapmode-n map.txt /*mapmode-n* +mapmode-nvo map.txt /*mapmode-nvo* +mapmode-o map.txt /*mapmode-o* +mapmode-s map.txt /*mapmode-s* +mapmode-t map.txt /*mapmode-t* +mapmode-v map.txt /*mapmode-v* +mapmode-x map.txt /*mapmode-x* +mapnew() builtin.txt /*mapnew()* +mapping map.txt /*mapping* +mapping-dict builtin.txt /*mapping-dict* +mapping-functions usr_41.txt /*mapping-functions* +mapset() builtin.txt /*mapset()* +mark motion.txt /*mark* +mark-functions usr_41.txt /*mark-functions* +mark-motions motion.txt /*mark-motions* +markfilelist pi_netrw.txt /*markfilelist* +masm.vim syntax.txt /*masm.vim* +match() builtin.txt /*match()* +match-highlight pattern.txt /*match-highlight* +match-parens tips.txt /*match-parens* +matchadd() builtin.txt /*matchadd()* +matchaddpos() builtin.txt /*matchaddpos()* +matcharg() builtin.txt /*matcharg()* +matchbufline() builtin.txt /*matchbufline()* +matchdelete() builtin.txt /*matchdelete()* +matchend() builtin.txt /*matchend()* +matchfuzzy() builtin.txt /*matchfuzzy()* +matchfuzzypos() builtin.txt /*matchfuzzypos()* +matchit-install usr_05.txt /*matchit-install* +matchlist() builtin.txt /*matchlist()* +matchparen pi_paren.txt /*matchparen* +matchstr() builtin.txt /*matchstr()* +matchstrlist() builtin.txt /*matchstrlist()* +matchstrpos() builtin.txt /*matchstrpos()* +matlab-indent indent.txt /*matlab-indent* +matlab-indenting indent.txt /*matlab-indenting* +max() builtin.txt /*max()* +maxcol-variable eval.txt /*maxcol-variable* +mbyte-IME mbyte.txt /*mbyte-IME* +mbyte-XIM mbyte.txt /*mbyte-XIM* +mbyte-combining mbyte.txt /*mbyte-combining* +mbyte-composing mbyte.txt /*mbyte-composing* +mbyte-conversion mbyte.txt /*mbyte-conversion* +mbyte-encoding mbyte.txt /*mbyte-encoding* +mbyte-first mbyte.txt /*mbyte-first* +mbyte-fonts-MSwin mbyte.txt /*mbyte-fonts-MSwin* +mbyte-fonts-X11 mbyte.txt /*mbyte-fonts-X11* +mbyte-func mbyte.txt /*mbyte-func* +mbyte-keymap mbyte.txt /*mbyte-keymap* +mbyte-locale mbyte.txt /*mbyte-locale* +mbyte-options mbyte.txt /*mbyte-options* +mbyte-terminal mbyte.txt /*mbyte-terminal* +mbyte-utf8 mbyte.txt /*mbyte-utf8* +mbyte.txt mbyte.txt /*mbyte.txt* +menu-changes-5.4 version5.txt /*menu-changes-5.4* +menu-examples gui.txt /*menu-examples* +menu-priority gui.txt /*menu-priority* +menu-separator gui.txt /*menu-separator* +menu-shortcut gui.txt /*menu-shortcut* +menu-text gui.txt /*menu-text* +menu-tips gui.txt /*menu-tips* +menu.vim gui.txt /*menu.vim* +menu_info() builtin.txt /*menu_info()* +menus gui.txt /*menus* +merge diff.txt /*merge* +message-history message.txt /*message-history* +message.txt message.txt /*message.txt* +messages message.txt /*messages* +meta intro.txt /*meta* +method eval.txt /*method* +mf.vim ft_mp.txt /*mf.vim* +min() builtin.txt /*min()* +missing-options vi_diff.txt /*missing-options* +mkdir() builtin.txt /*mkdir()* +mlang.txt mlang.txt /*mlang.txt* +mma.vim syntax.txt /*mma.vim* +mode() builtin.txt /*mode()* +mode-Ex intro.txt /*mode-Ex* +mode-cmdline cmdline.txt /*mode-cmdline* +mode-ins-repl insert.txt /*mode-ins-repl* +mode-replace insert.txt /*mode-replace* +mode-switching intro.txt /*mode-switching* +modeless-and-clipboard version6.txt /*modeless-and-clipboard* +modeless-selection gui.txt /*modeless-selection* +modeline options.txt /*modeline* +modeline-local options.txt /*modeline-local* +modeline-version options.txt /*modeline-version* +modifyOtherKeys map.txt /*modifyOtherKeys* +modula2.vim syntax.txt /*modula2.vim* +modula2_iso_allow_lowline syntax.txt /*modula2_iso_allow_lowline* +modula2_iso_disallow_octals syntax.txt /*modula2_iso_disallow_octals* +modula2_iso_disallow_synonyms syntax.txt /*modula2_iso_disallow_synonyms* +modula2_pim_allow_lowline syntax.txt /*modula2_pim_allow_lowline* +modula2_pim_disallow_octals syntax.txt /*modula2_pim_disallow_octals* +modula2_pim_disallow_synonyms syntax.txt /*modula2_pim_disallow_synonyms* +modula2_r10_allow_lowline syntax.txt /*modula2_r10_allow_lowline* +moo.vim syntax.txt /*moo.vim* +more-compatible version5.txt /*more-compatible* +more-prompt message.txt /*more-prompt* +more-variables eval.txt /*more-variables* +motif-intellimouse gui.txt /*motif-intellimouse* +motion-count-multiplied motion.txt /*motion-count-multiplied* +motion.txt motion.txt /*motion.txt* +mouse-mode-table term.txt /*mouse-mode-table* +mouse-overview term.txt /*mouse-overview* +mouse-reporting term.txt /*mouse-reporting* +mouse-scrolling-off scroll.txt /*mouse-scrolling-off* +mouse-swap-buttons term.txt /*mouse-swap-buttons* +mouse-using term.txt /*mouse-using* +mouse_col-variable eval.txt /*mouse_col-variable* +mouse_lnum-variable eval.txt /*mouse_lnum-variable* +mouse_win-variable eval.txt /*mouse_win-variable* +mouse_winid-variable eval.txt /*mouse_winid-variable* +movement intro.txt /*movement* +mp.vim ft_mp.txt /*mp.vim* +ms-dos os_msdos.txt /*ms-dos* +msdos os_msdos.txt /*msdos* +msql.vim syntax.txt /*msql.vim* +mswin.vim gui_w32.txt /*mswin.vim* +multi-byte mbyte.txt /*multi-byte* +multi-lang mlang.txt /*multi-lang* +multi-repeat repeat.txt /*multi-repeat* +multibyte mbyte.txt /*multibyte* +multibyte-ime mbyte.txt /*multibyte-ime* +multibyte-input mbyte.txt /*multibyte-input* +multilang mlang.txt /*multilang* +multilang-menus mlang.txt /*multilang-menus* +multilang-messages mlang.txt /*multilang-messages* +multilang-scripts mlang.txt /*multilang-scripts* +multiple-constructors vim9class.txt /*multiple-constructors* +myfiletypefile syntax.txt /*myfiletypefile* +myscriptsfile syntax.txt /*myscriptsfile* +mysql ft_sql.txt /*mysql* +mysyntaxfile syntax.txt /*mysyntaxfile* +mysyntaxfile-add syntax.txt /*mysyntaxfile-add* +mysyntaxfile-replace syntax.txt /*mysyntaxfile-replace* +mzeval() builtin.txt /*mzeval()* +mzscheme if_mzsch.txt /*mzscheme* +mzscheme-buffer if_mzsch.txt /*mzscheme-buffer* +mzscheme-commands if_mzsch.txt /*mzscheme-commands* +mzscheme-dynamic if_mzsch.txt /*mzscheme-dynamic* +mzscheme-examples if_mzsch.txt /*mzscheme-examples* +mzscheme-funcref if_mzsch.txt /*mzscheme-funcref* +mzscheme-mzeval if_mzsch.txt /*mzscheme-mzeval* +mzscheme-sandbox if_mzsch.txt /*mzscheme-sandbox* +mzscheme-setup if_mzsch.txt /*mzscheme-setup* +mzscheme-threads if_mzsch.txt /*mzscheme-threads* +mzscheme-vim if_mzsch.txt /*mzscheme-vim* +mzscheme-vimext if_mzsch.txt /*mzscheme-vimext* +mzscheme-window if_mzsch.txt /*mzscheme-window* +n pattern.txt /*n* +n1ql.vim syntax.txt /*n1ql.vim* +nasm.vim syntax.txt /*nasm.vim* +navigation motion.txt /*navigation* +nb-commands netbeans.txt /*nb-commands* +nb-events netbeans.txt /*nb-events* +nb-functions netbeans.txt /*nb-functions* +nb-messages netbeans.txt /*nb-messages* +nb-protocol_errors netbeans.txt /*nb-protocol_errors* +nb-special netbeans.txt /*nb-special* +nb-terms netbeans.txt /*nb-terms* +ncf.vim syntax.txt /*ncf.vim* +netbeans netbeans.txt /*netbeans* +netbeans-commands netbeans.txt /*netbeans-commands* +netbeans-configure netbeans.txt /*netbeans-configure* +netbeans-debugging netbeans.txt /*netbeans-debugging* +netbeans-download netbeans.txt /*netbeans-download* +netbeans-integration netbeans.txt /*netbeans-integration* +netbeans-intro netbeans.txt /*netbeans-intro* +netbeans-keybindings netbeans.txt /*netbeans-keybindings* +netbeans-messages netbeans.txt /*netbeans-messages* +netbeans-parameters netbeans.txt /*netbeans-parameters* +netbeans-preparation netbeans.txt /*netbeans-preparation* +netbeans-problems netbeans.txt /*netbeans-problems* +netbeans-protocol netbeans.txt /*netbeans-protocol* +netbeans-run netbeans.txt /*netbeans-run* +netbeans-setup netbeans.txt /*netbeans-setup* +netbeans-support netbeans.txt /*netbeans-support* +netbeans-xpm netbeans.txt /*netbeans-xpm* +netbeans.txt netbeans.txt /*netbeans.txt* +netreadfixup pi_netrw.txt /*netreadfixup* +netrw pi_netrw.txt /*netrw* +netrw-% pi_netrw.txt /*netrw-%* +netrw-- pi_netrw.txt /*netrw--* +netrw-:Explore pi_netrw.txt /*netrw-:Explore* +netrw-:Hexplore pi_netrw.txt /*netrw-:Hexplore* +netrw-:Lexplore pi_netrw.txt /*netrw-:Lexplore* +netrw-:MF pi_netrw.txt /*netrw-:MF* +netrw-:MT pi_netrw.txt /*netrw-:MT* +netrw-:NetrwC pi_netrw.txt /*netrw-:NetrwC* +netrw-:NetrwMB pi_netrw.txt /*netrw-:NetrwMB* +netrw-:Rexplore pi_netrw.txt /*netrw-:Rexplore* +netrw-:Sexplore pi_netrw.txt /*netrw-:Sexplore* +netrw-:Texplore pi_netrw.txt /*netrw-:Texplore* +netrw-:Vexplore pi_netrw.txt /*netrw-:Vexplore* +netrw-C pi_netrw.txt /*netrw-C* +netrw-D pi_netrw.txt /*netrw-D* +netrw-I pi_netrw.txt /*netrw-I* +netrw-O pi_netrw.txt /*netrw-O* +netrw-P pi_netrw.txt /*netrw-P* +netrw-P18 pi_netrw.txt /*netrw-P18* +netrw-P19 pi_netrw.txt /*netrw-P19* +netrw-P20 pi_netrw.txt /*netrw-P20* +netrw-P21 pi_netrw.txt /*netrw-P21* +netrw-P22 pi_netrw.txt /*netrw-P22* +netrw-R pi_netrw.txt /*netrw-R* +netrw-S pi_netrw.txt /*netrw-S* +netrw-Tb pi_netrw.txt /*netrw-Tb* +netrw-Th pi_netrw.txt /*netrw-Th* +netrw-U pi_netrw.txt /*netrw-U* +netrw-X pi_netrw.txt /*netrw-X* +netrw-a pi_netrw.txt /*netrw-a* +netrw-activate pi_netrw.txt /*netrw-activate* +netrw-bookmark pi_netrw.txt /*netrw-bookmark* +netrw-bookmarks pi_netrw.txt /*netrw-bookmarks* +netrw-browse pi_netrw.txt /*netrw-browse* +netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds* +netrw-browse-maps pi_netrw.txt /*netrw-browse-maps* +netrw-browser pi_netrw.txt /*netrw-browser* +netrw-browser-options pi_netrw.txt /*netrw-browser-options* +netrw-browser-settings pi_netrw.txt /*netrw-browser-settings* +netrw-browser-var pi_netrw.txt /*netrw-browser-var* +netrw-browsing pi_netrw.txt /*netrw-browsing* +netrw-c-tab pi_netrw.txt /*netrw-c-tab* +netrw-cB pi_netrw.txt /*netrw-cB* +netrw-cadaver pi_netrw.txt /*netrw-cadaver* +netrw-call pi_netrw.txt /*netrw-call* +netrw-cb pi_netrw.txt /*netrw-cb* +netrw-cd pi_netrw.txt /*netrw-cd* +netrw-chgup pi_netrw.txt /*netrw-chgup* +netrw-clean pi_netrw.txt /*netrw-clean* +netrw-contents pi_netrw.txt /*netrw-contents* +netrw-copyright pi_netrw.txt /*netrw-copyright* +netrw-cr pi_netrw.txt /*netrw-cr* +netrw-createfile pi_netrw.txt /*netrw-createfile* +netrw-credits pi_netrw.txt /*netrw-credits* +netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h* +netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l* +netrw-ctrl-r pi_netrw.txt /*netrw-ctrl-r* +netrw-ctrl_l pi_netrw.txt /*netrw-ctrl_l* +netrw-curdir pi_netrw.txt /*netrw-curdir* +netrw-d pi_netrw.txt /*netrw-d* +netrw-debug pi_netrw.txt /*netrw-debug* +netrw-del pi_netrw.txt /*netrw-del* +netrw-delete pi_netrw.txt /*netrw-delete* +netrw-dir pi_netrw.txt /*netrw-dir* +netrw-dirlist pi_netrw.txt /*netrw-dirlist* +netrw-downdir pi_netrw.txt /*netrw-downdir* +netrw-edithide pi_netrw.txt /*netrw-edithide* +netrw-editwindow pi_netrw.txt /*netrw-editwindow* +netrw-enter pi_netrw.txt /*netrw-enter* +netrw-ex pi_netrw.txt /*netrw-ex* +netrw-explore pi_netrw.txt /*netrw-explore* +netrw-explore-cmds pi_netrw.txt /*netrw-explore-cmds* +netrw-expose pi_netrw.txt /*netrw-expose* +netrw-externapp pi_netrw.txt /*netrw-externapp* +netrw-file pi_netrw.txt /*netrw-file* +netrw-filigree pi_netrw.txt /*netrw-filigree* +netrw-fixup pi_netrw.txt /*netrw-fixup* +netrw-ftp pi_netrw.txt /*netrw-ftp* +netrw-ftype pi_netrw.txt /*netrw-ftype* +netrw-gb pi_netrw.txt /*netrw-gb* +netrw-gd pi_netrw.txt /*netrw-gd* +netrw-getftype pi_netrw.txt /*netrw-getftype* +netrw-gf pi_netrw.txt /*netrw-gf* +netrw-gh pi_netrw.txt /*netrw-gh* +netrw-gitignore pi_netrw.txt /*netrw-gitignore* +netrw-gn pi_netrw.txt /*netrw-gn* +netrw-gp pi_netrw.txt /*netrw-gp* +netrw-grep pi_netrw.txt /*netrw-grep* +netrw-gx pi_netrw.txt /*netrw-gx* +netrw-handler pi_netrw.txt /*netrw-handler* +netrw-help pi_netrw.txt /*netrw-help* +netrw-hexplore pi_netrw.txt /*netrw-hexplore* +netrw-hide pi_netrw.txt /*netrw-hide* +netrw-hiding pi_netrw.txt /*netrw-hiding* +netrw-history pi_netrw.txt /*netrw-history* +netrw-horiz pi_netrw.txt /*netrw-horiz* +netrw-i pi_netrw.txt /*netrw-i* +netrw-incompatible pi_netrw.txt /*netrw-incompatible* +netrw-internal-variables pi_netrw.txt /*netrw-internal-variables* +netrw-intro-browse pi_netrw.txt /*netrw-intro-browse* +netrw-leftmouse pi_netrw.txt /*netrw-leftmouse* +netrw-lexplore pi_netrw.txt /*netrw-lexplore* +netrw-list pi_netrw.txt /*netrw-list* +netrw-listbookmark pi_netrw.txt /*netrw-listbookmark* +netrw-listhack pi_netrw.txt /*netrw-listhack* +netrw-login pi_netrw.txt /*netrw-login* +netrw-mA pi_netrw.txt /*netrw-mA* +netrw-mB pi_netrw.txt /*netrw-mB* +netrw-mF pi_netrw.txt /*netrw-mF* +netrw-mT pi_netrw.txt /*netrw-mT* +netrw-mX pi_netrw.txt /*netrw-mX* +netrw-ma pi_netrw.txt /*netrw-ma* +netrw-mb pi_netrw.txt /*netrw-mb* +netrw-mc pi_netrw.txt /*netrw-mc* +netrw-md pi_netrw.txt /*netrw-md* +netrw-me pi_netrw.txt /*netrw-me* +netrw-mf pi_netrw.txt /*netrw-mf* +netrw-mg pi_netrw.txt /*netrw-mg* +netrw-mh pi_netrw.txt /*netrw-mh* +netrw-middlemouse pi_netrw.txt /*netrw-middlemouse* +netrw-ml_get pi_netrw.txt /*netrw-ml_get* +netrw-mm pi_netrw.txt /*netrw-mm* +netrw-modify pi_netrw.txt /*netrw-modify* +netrw-mouse pi_netrw.txt /*netrw-mouse* +netrw-move pi_netrw.txt /*netrw-move* +netrw-mp pi_netrw.txt /*netrw-mp* +netrw-mr pi_netrw.txt /*netrw-mr* +netrw-ms pi_netrw.txt /*netrw-ms* +netrw-mt pi_netrw.txt /*netrw-mt* +netrw-mu pi_netrw.txt /*netrw-mu* +netrw-mv pi_netrw.txt /*netrw-mv* +netrw-mx pi_netrw.txt /*netrw-mx* +netrw-mz pi_netrw.txt /*netrw-mz* +netrw-netrc pi_netrw.txt /*netrw-netrc* +netrw-newfile pi_netrw.txt /*netrw-newfile* +netrw-nexplore pi_netrw.txt /*netrw-nexplore* +netrw-noload pi_netrw.txt /*netrw-noload* +netrw-nread pi_netrw.txt /*netrw-nread* +netrw-ntree pi_netrw.txt /*netrw-ntree* +netrw-nwrite pi_netrw.txt /*netrw-nwrite* +netrw-o pi_netrw.txt /*netrw-o* +netrw-obtain pi_netrw.txt /*netrw-obtain* +netrw-options pi_netrw.txt /*netrw-options* +netrw-p pi_netrw.txt /*netrw-p* +netrw-p1 pi_netrw.txt /*netrw-p1* +netrw-p10 pi_netrw.txt /*netrw-p10* +netrw-p11 pi_netrw.txt /*netrw-p11* +netrw-p12 pi_netrw.txt /*netrw-p12* +netrw-p13 pi_netrw.txt /*netrw-p13* +netrw-p14 pi_netrw.txt /*netrw-p14* +netrw-p15 pi_netrw.txt /*netrw-p15* +netrw-p16 pi_netrw.txt /*netrw-p16* +netrw-p17 pi_netrw.txt /*netrw-p17* +netrw-p2 pi_netrw.txt /*netrw-p2* +netrw-p3 pi_netrw.txt /*netrw-p3* +netrw-p4 pi_netrw.txt /*netrw-p4* +netrw-p5 pi_netrw.txt /*netrw-p5* +netrw-p6 pi_netrw.txt /*netrw-p6* +netrw-p7 pi_netrw.txt /*netrw-p7* +netrw-p8 pi_netrw.txt /*netrw-p8* +netrw-p9 pi_netrw.txt /*netrw-p9* +netrw-passwd pi_netrw.txt /*netrw-passwd* +netrw-password pi_netrw.txt /*netrw-password* +netrw-path pi_netrw.txt /*netrw-path* +netrw-pexplore pi_netrw.txt /*netrw-pexplore* +netrw-preview pi_netrw.txt /*netrw-preview* +netrw-problems pi_netrw.txt /*netrw-problems* +netrw-protocol pi_netrw.txt /*netrw-protocol* +netrw-prvwin pi_netrw.txt /*netrw-prvwin* +netrw-pscp pi_netrw.txt /*netrw-pscp* +netrw-psftp pi_netrw.txt /*netrw-psftp* +netrw-putty pi_netrw.txt /*netrw-putty* +netrw-qF pi_netrw.txt /*netrw-qF* +netrw-qL pi_netrw.txt /*netrw-qL* +netrw-qb pi_netrw.txt /*netrw-qb* +netrw-qf pi_netrw.txt /*netrw-qf* +netrw-quickcom pi_netrw.txt /*netrw-quickcom* +netrw-quickcoms pi_netrw.txt /*netrw-quickcoms* +netrw-quickhelp pi_netrw.txt /*netrw-quickhelp* +netrw-quickmap pi_netrw.txt /*netrw-quickmap* +netrw-quickmaps pi_netrw.txt /*netrw-quickmaps* +netrw-r pi_netrw.txt /*netrw-r* +netrw-read pi_netrw.txt /*netrw-read* +netrw-ref pi_netrw.txt /*netrw-ref* +netrw-refresh pi_netrw.txt /*netrw-refresh* +netrw-rename pi_netrw.txt /*netrw-rename* +netrw-reverse pi_netrw.txt /*netrw-reverse* +netrw-rexplore pi_netrw.txt /*netrw-rexplore* +netrw-rightmouse pi_netrw.txt /*netrw-rightmouse* +netrw-s pi_netrw.txt /*netrw-s* +netrw-s-cr pi_netrw.txt /*netrw-s-cr* +netrw-settings pi_netrw.txt /*netrw-settings* +netrw-settings-window pi_netrw.txt /*netrw-settings-window* +netrw-sexplore pi_netrw.txt /*netrw-sexplore* +netrw-sort pi_netrw.txt /*netrw-sort* +netrw-sort-sequence pi_netrw.txt /*netrw-sort-sequence* +netrw-sortsequence pi_netrw.txt /*netrw-sortsequence* +netrw-source pi_netrw.txt /*netrw-source* +netrw-ssh-hack pi_netrw.txt /*netrw-ssh-hack* +netrw-star pi_netrw.txt /*netrw-star* +netrw-starpat pi_netrw.txt /*netrw-starpat* +netrw-starstar pi_netrw.txt /*netrw-starstar* +netrw-starstarpat pi_netrw.txt /*netrw-starstarpat* +netrw-start pi_netrw.txt /*netrw-start* +netrw-t pi_netrw.txt /*netrw-t* +netrw-texplore pi_netrw.txt /*netrw-texplore* +netrw-todo pi_netrw.txt /*netrw-todo* +netrw-trailingslash pi_netrw.txt /*netrw-trailingslash* +netrw-transparent pi_netrw.txt /*netrw-transparent* +netrw-u pi_netrw.txt /*netrw-u* +netrw-updir pi_netrw.txt /*netrw-updir* +netrw-urls pi_netrw.txt /*netrw-urls* +netrw-usermaps pi_netrw.txt /*netrw-usermaps* +netrw-userpass pi_netrw.txt /*netrw-userpass* +netrw-v pi_netrw.txt /*netrw-v* +netrw-var pi_netrw.txt /*netrw-var* +netrw-variables pi_netrw.txt /*netrw-variables* +netrw-vexplore pi_netrw.txt /*netrw-vexplore* +netrw-windows-netrc pi_netrw.txt /*netrw-windows-netrc* +netrw-windows-s pi_netrw.txt /*netrw-windows-s* +netrw-write pi_netrw.txt /*netrw-write* +netrw-x pi_netrw.txt /*netrw-x* +netrw-xfer pi_netrw.txt /*netrw-xfer* +netrw.vim pi_netrw.txt /*netrw.vim* +netrw_filehandler pi_netrw.txt /*netrw_filehandler* +netterm-mouse options.txt /*netterm-mouse* +network pi_netrw.txt /*network* +new() vim9class.txt /*new()* +new-5 version5.txt /*new-5* +new-6 version6.txt /*new-6* +new-7 version7.txt /*new-7* +new-8 version8.txt /*new-8* +new-9 version9.txt /*new-9* +new-GTK-GUI version5.txt /*new-GTK-GUI* +new-MzScheme version7.txt /*new-MzScheme* +new-Select-mode version5.txt /*new-Select-mode* +new-View version6.txt /*new-View* +new-argument-list version6.txt /*new-argument-list* +new-buftype version6.txt /*new-buftype* +new-cmdwin version6.txt /*new-cmdwin* +new-color-schemes version6.txt /*new-color-schemes* +new-colorschemes-9 version9.txt /*new-colorschemes-9* +new-commands version5.txt /*new-commands* +new-commands-5.4 version5.txt /*new-commands-5.4* +new-conceal version7.txt /*new-conceal* +new-debug-itf version6.txt /*new-debug-itf* +new-debug-mode version6.txt /*new-debug-mode* +new-debug-support version7.txt /*new-debug-support* +new-define-operator version7.txt /*new-define-operator* +new-diff-mode version6.txt /*new-diff-mode* +new-encryption version5.txt /*new-encryption* +new-evim version6.txt /*new-evim* +new-ex-commands-5.2 version5.txt /*new-ex-commands-5.2* +new-file-browser version6.txt /*new-file-browser* +new-file-writing version6.txt /*new-file-writing* +new-filetype filetype.txt /*new-filetype* +new-filetype-5.4 version5.txt /*new-filetype-5.4* +new-filetype-plugins version6.txt /*new-filetype-plugins* +new-filetype-scripts filetype.txt /*new-filetype-scripts* +new-folding version6.txt /*new-folding* +new-functions-5.2 version5.txt /*new-functions-5.2* +new-global-values version6.txt /*new-global-values* +new-highlighting version5.txt /*new-highlighting* +new-indent-flex version6.txt /*new-indent-flex* +new-items-6 version6.txt /*new-items-6* +new-items-7 version7.txt /*new-items-7* +new-items-8 version8.txt /*new-items-8* +new-items-9 version9.txt /*new-items-9* +new-line-continuation version5.txt /*new-line-continuation* +new-location-list version7.txt /*new-location-list* +new-lua version7.txt /*new-lua* +new-manpage-trans version7.txt /*new-manpage-trans* +new-map-expression version7.txt /*new-map-expression* +new-map-select version7.txt /*new-map-select* +new-more-encryption version7.txt /*new-more-encryption* +new-more-highlighting version7.txt /*new-more-highlighting* +new-more-unicode version7.txt /*new-more-unicode* +new-multi-byte version5.txt /*new-multi-byte* +new-multi-lang version6.txt /*new-multi-lang* +new-multibyte version5.txt /*new-multibyte* +new-netrw-explore version7.txt /*new-netrw-explore* +new-network-files version6.txt /*new-network-files* +new-omni-completion version7.txt /*new-omni-completion* +new-onemore version7.txt /*new-onemore* +new-operator-mod version6.txt /*new-operator-mod* +new-options-5.2 version5.txt /*new-options-5.2* +new-options-5.4 version5.txt /*new-options-5.4* +new-other-8.2 version8.txt /*new-other-8.2* +new-other-9.1 version9.txt /*new-other-9.1* +new-perl-python version5.txt /*new-perl-python* +new-persistent-undo version7.txt /*new-persistent-undo* +new-plugins version6.txt /*new-plugins* +new-popup-compl version9.txt /*new-popup-compl* +new-popup-window version8.txt /*new-popup-window* +new-posix version7.txt /*new-posix* +new-print-multibyte version7.txt /*new-print-multibyte* +new-printing version6.txt /*new-printing* +new-python3 version7.txt /*new-python3* +new-regexp-engine version7.txt /*new-regexp-engine* +new-runtime-dir version5.txt /*new-runtime-dir* +new-script version5.txt /*new-script* +new-script-5.4 version5.txt /*new-script-5.4* +new-scroll-back version7.txt /*new-scroll-back* +new-search-path version6.txt /*new-search-path* +new-searchpat version6.txt /*new-searchpat* +new-session-files version5.txt /*new-session-files* +new-spell version7.txt /*new-spell* +new-style-testing testing.txt /*new-style-testing* +new-tab-pages version7.txt /*new-tab-pages* +new-terminal-window version8.txt /*new-terminal-window* +new-text-properties version8.txt /*new-text-properties* +new-undo-branches version7.txt /*new-undo-branches* +new-unlisted-buffers version6.txt /*new-unlisted-buffers* +new-user-defined version5.txt /*new-user-defined* +new-user-manual version6.txt /*new-user-manual* +new-utf-8 version6.txt /*new-utf-8* +new-vertsplit version6.txt /*new-vertsplit* +new-vim-script version7.txt /*new-vim-script* +new-vim-script-8 version8.txt /*new-vim-script-8* +new-vim-script-9 version9.txt /*new-vim-script-9* +new-vim-server version6.txt /*new-vim-server* +new-vimgrep version7.txt /*new-vimgrep* +new-vimscript-8.2 version8.txt /*new-vimscript-8.2* +new-virtedit version6.txt /*new-virtedit* +news intro.txt /*news* +nextnonblank() builtin.txt /*nextnonblank()* +no-eval-feature eval.txt /*no-eval-feature* +no-type-checking eval.txt /*no-type-checking* +no_buffers_menu gui.txt /*no_buffers_menu* +no_mail_maps filetype.txt /*no_mail_maps* +no_plugin_maps filetype.txt /*no_plugin_maps* +nocombine syntax.txt /*nocombine* +non-greedy pattern.txt /*non-greedy* +non-zero-arg eval.txt /*non-zero-arg* +none-function_argument userfunc.txt /*none-function_argument* +none-variable eval.txt /*none-variable* +normal-index index.txt /*normal-index* +not-compatible usr_01.txt /*not-compatible* +not-edited editing.txt /*not-edited* +notation intro.txt /*notation* +notepad gui_w32.txt /*notepad* +nr2char() builtin.txt /*nr2char()* +nroff.vim syntax.txt /*nroff.vim* +null vim9.txt /*null* +null-anomalies vim9.txt /*null-anomalies* +null-compare vim9.txt /*null-compare* +null-details vim9.txt /*null-details* +null-variable eval.txt /*null-variable* +null-variables vim9.txt /*null-variables* +null_blob vim9.txt /*null_blob* +null_channel vim9.txt /*null_channel* +null_class vim9.txt /*null_class* +null_dict vim9.txt /*null_dict* +null_function vim9.txt /*null_function* +null_job vim9.txt /*null_job* +null_list vim9.txt /*null_list* +null_object vim9.txt /*null_object* +null_partial vim9.txt /*null_partial* +null_string vim9.txt /*null_string* +number_relativenumber options.txt /*number_relativenumber* +numbered-function eval.txt /*numbered-function* +numbermax-variable eval.txt /*numbermax-variable* +numbermin-variable eval.txt /*numbermin-variable* +numbersize-variable eval.txt /*numbersize-variable* +o insert.txt /*o* +o_CTRL-V motion.txt /*o_CTRL-V* +o_V motion.txt /*o_V* +o_object-select motion.txt /*o_object-select* +o_v motion.txt /*o_v* +object vim9class.txt /*object* +object-const-variable vim9class.txt /*object-const-variable* +object-final-variable vim9class.txt /*object-final-variable* +object-motions motion.txt /*object-motions* +object-select motion.txt /*object-select* +objects index.txt /*objects* +obtaining-exted netbeans.txt /*obtaining-exted* +ocaml.vim syntax.txt /*ocaml.vim* +octal eval.txt /*octal* +octal-nrformats options.txt /*octal-nrformats* +octal-number eval.txt /*octal-number* +old-style-testing testing.txt /*old-style-testing* +oldfiles-variable eval.txt /*oldfiles-variable* +ole-activation if_ole.txt /*ole-activation* +ole-eval if_ole.txt /*ole-eval* +ole-gethwnd if_ole.txt /*ole-gethwnd* +ole-interface if_ole.txt /*ole-interface* +ole-methods if_ole.txt /*ole-methods* +ole-normal if_ole.txt /*ole-normal* +ole-registration if_ole.txt /*ole-registration* +ole-sendkeys if_ole.txt /*ole-sendkeys* +ole-setforeground if_ole.txt /*ole-setforeground* +omap-info map.txt /*omap-info* +omni-sql-completion ft_sql.txt /*omni-sql-completion* +online-help helphelp.txt /*online-help* +opening-window windows.txt /*opening-window* +operator motion.txt /*operator* +operator-doubled motion.txt /*operator-doubled* +operator-pending-index index.txt /*operator-pending-index* +operator-variable eval.txt /*operator-variable* +option-backslash options.txt /*option-backslash* +option-list quickref.txt /*option-list* +option-summary options.txt /*option-summary* +option-value-function options.txt /*option-value-function* +option-window options.txt /*option-window* +option_restore() todo.txt /*option_restore()* +option_save() todo.txt /*option_save()* +optional-function-argument userfunc.txt /*optional-function-argument* +options options.txt /*options* +options-changed version5.txt /*options-changed* +options-in-terminal terminal.txt /*options-in-terminal* +options.txt options.txt /*options.txt* +optwin options.txt /*optwin* +or() builtin.txt /*or()* +oracle ft_sql.txt /*oracle* +os2 os_os2.txt /*os2* +os390 os_390.txt /*os390* +os_390.txt os_390.txt /*os_390.txt* +os_amiga.txt os_amiga.txt /*os_amiga.txt* +os_beos.txt os_beos.txt /*os_beos.txt* +os_dos.txt os_dos.txt /*os_dos.txt* +os_haiku.txt os_haiku.txt /*os_haiku.txt* +os_mac.txt os_mac.txt /*os_mac.txt* +os_mint.txt os_mint.txt /*os_mint.txt* +os_msdos.txt os_msdos.txt /*os_msdos.txt* +os_os2.txt os_os2.txt /*os_os2.txt* +os_qnx.txt os_qnx.txt /*os_qnx.txt* +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* +other-features vi_diff.txt /*other-features* +out_buf channel.txt /*out_buf* +out_cb channel.txt /*out_cb* +out_io-buffer channel.txt /*out_io-buffer* +out_mode channel.txt /*out_mode* +out_modifiable channel.txt /*out_modifiable* +out_msg channel.txt /*out_msg* +out_name channel.txt /*out_name* +out_timeout channel.txt /*out_timeout* +p change.txt /*p* +pack-add repeat.txt /*pack-add* +package-create repeat.txt /*package-create* +packages repeat.txt /*packages* +packload-two-steps repeat.txt /*packload-two-steps* +page-down intro.txt /*page-down* +page-up intro.txt /*page-up* +page_down intro.txt /*page_down* +page_up intro.txt /*page_up* +pager message.txt /*pager* +papp.vim syntax.txt /*papp.vim* +paragraph motion.txt /*paragraph* +partial builtin.txt /*partial* +pascal.vim syntax.txt /*pascal.vim* +patches-8 version8.txt /*patches-8* +patches-8.1 version8.txt /*patches-8.1* +patches-8.2 version8.txt /*patches-8.2* +patches-9 version9.txt /*patches-9* +patches-9.1 version9.txt /*patches-9.1* +patches-after-8.2 version9.txt /*patches-after-8.2* +patches-after-9.0 version9.txt /*patches-after-9.0* +pathshorten() builtin.txt /*pathshorten()* +pattern pattern.txt /*pattern* +pattern-atoms pattern.txt /*pattern-atoms* +pattern-delimiter change.txt /*pattern-delimiter* +pattern-multi-byte pattern.txt /*pattern-multi-byte* +pattern-multi-items pattern.txt /*pattern-multi-items* +pattern-multibyte pattern.txt /*pattern-multibyte* +pattern-overview pattern.txt /*pattern-overview* +pattern-searches pattern.txt /*pattern-searches* +pattern.txt pattern.txt /*pattern.txt* +patterns-composing pattern.txt /*patterns-composing* +pdev-option print.txt /*pdev-option* +peace intro.txt /*peace* +penc-option print.txt /*penc-option* +perl if_perl.txt /*perl* +perl-Append if_perl.txt /*perl-Append* +perl-Blob if_perl.txt /*perl-Blob* +perl-Buffer if_perl.txt /*perl-Buffer* +perl-Buffers if_perl.txt /*perl-Buffers* +perl-Count if_perl.txt /*perl-Count* +perl-Delete if_perl.txt /*perl-Delete* +perl-DoCommand if_perl.txt /*perl-DoCommand* +perl-Eval if_perl.txt /*perl-Eval* +perl-Get if_perl.txt /*perl-Get* +perl-GetCursor if_perl.txt /*perl-GetCursor* +perl-Msg if_perl.txt /*perl-Msg* +perl-Name if_perl.txt /*perl-Name* +perl-Number if_perl.txt /*perl-Number* +perl-Set if_perl.txt /*perl-Set* +perl-SetHeight if_perl.txt /*perl-SetHeight* +perl-SetOption if_perl.txt /*perl-SetOption* +perl-Windows if_perl.txt /*perl-Windows* +perl-compiling if_perl.txt /*perl-compiling* +perl-dynamic if_perl.txt /*perl-dynamic* +perl-editing if_perl.txt /*perl-editing* +perl-overview if_perl.txt /*perl-overview* +perl-patterns pattern.txt /*perl-patterns* +perl-using if_perl.txt /*perl-using* +perl.vim syntax.txt /*perl.vim* +perleval() builtin.txt /*perleval()* +persistent-undo undo.txt /*persistent-undo* +pexpr-option print.txt /*pexpr-option* +pfn-option print.txt /*pfn-option* +pheader-option print.txt /*pheader-option* +photon-fonts os_qnx.txt /*photon-fonts* +photon-gui os_qnx.txt /*photon-gui* +php-comment indent.txt /*php-comment* +php-indent indent.txt /*php-indent* +php-indenting indent.txt /*php-indenting* +php.vim syntax.txt /*php.vim* +php3.vim syntax.txt /*php3.vim* +phtml.vim syntax.txt /*phtml.vim* +pi_getscript.txt pi_getscript.txt /*pi_getscript.txt* +pi_gzip.txt pi_gzip.txt /*pi_gzip.txt* +pi_logipat.txt pi_logipat.txt /*pi_logipat.txt* +pi_netrw.txt pi_netrw.txt /*pi_netrw.txt* +pi_paren.txt pi_paren.txt /*pi_paren.txt* +pi_spec.txt pi_spec.txt /*pi_spec.txt* +pi_tar.txt pi_tar.txt /*pi_tar.txt* +pi_vimball.txt pi_vimball.txt /*pi_vimball.txt* +pi_zip.txt pi_zip.txt /*pi_zip.txt* +pkzip options.txt /*pkzip* +plaintex.vim syntax.txt /*plaintex.vim* +plsql ft_sql.txt /*plsql* +plugin usr_05.txt /*plugin* +plugin-details filetype.txt /*plugin-details* +plugin-filetype usr_51.txt /*plugin-filetype* +plugin-special usr_51.txt /*plugin-special* +plugin_exec filetype.txt /*plugin_exec* +plugin_name.txt helphelp.txt /*plugin_name.txt* +pmbcs-option print.txt /*pmbcs-option* +pmbfn-option print.txt /*pmbfn-option* +popt-option print.txt /*popt-option* +popup popup.txt /*popup* +popup-buffer popup.txt /*popup-buffer* +popup-callback popup.txt /*popup-callback* +popup-close popup.txt /*popup-close* +popup-examples popup.txt /*popup-examples* +popup-filter popup.txt /*popup-filter* +popup-filter-errors popup.txt /*popup-filter-errors* +popup-filter-mode popup.txt /*popup-filter-mode* +popup-function-details popup.txt /*popup-function-details* +popup-functions popup.txt /*popup-functions* +popup-intro popup.txt /*popup-intro* +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-position popup.txt /*popup-position* +popup-props popup.txt /*popup-props* +popup-scrollbar popup.txt /*popup-scrollbar* +popup-terminal popup.txt /*popup-terminal* +popup-textprop-pos popup.txt /*popup-textprop-pos* +popup-usage popup.txt /*popup-usage* +popup-window popup.txt /*popup-window* +popup-window-functions usr_41.txt /*popup-window-functions* +popup.txt popup.txt /*popup.txt* +popup_atcursor() popup.txt /*popup_atcursor()* +popup_beval() popup.txt /*popup_beval()* +popup_beval_example popup.txt /*popup_beval_example* +popup_clear() popup.txt /*popup_clear()* +popup_close() popup.txt /*popup_close()* +popup_create() popup.txt /*popup_create()* +popup_create-arguments popup.txt /*popup_create-arguments* +popup_dialog() popup.txt /*popup_dialog()* +popup_dialog-example popup.txt /*popup_dialog-example* +popup_filter_menu() popup.txt /*popup_filter_menu()* +popup_filter_yesno() popup.txt /*popup_filter_yesno()* +popup_findecho() popup.txt /*popup_findecho()* +popup_findinfo() popup.txt /*popup_findinfo()* +popup_findpreview() popup.txt /*popup_findpreview()* +popup_getoptions() popup.txt /*popup_getoptions()* +popup_getpos() popup.txt /*popup_getpos()* +popup_hide() popup.txt /*popup_hide()* +popup_list() popup.txt /*popup_list()* +popup_locate() popup.txt /*popup_locate()* +popup_menu() popup.txt /*popup_menu()* +popup_menu-shortcut-example popup.txt /*popup_menu-shortcut-example* +popup_move() popup.txt /*popup_move()* +popup_notification() popup.txt /*popup_notification()* +popup_setoptions() popup.txt /*popup_setoptions()* +popup_settext() popup.txt /*popup_settext()* +popup_show() popup.txt /*popup_show()* +popupmenu-completion insert.txt /*popupmenu-completion* +popupmenu-keys insert.txt /*popupmenu-keys* +popupwin popup.txt /*popupwin* +ports-5.2 version5.txt /*ports-5.2* +ports-6 version6.txt /*ports-6* +posix vi_diff.txt /*posix* +posix-compliance vi_diff.txt /*posix-compliance* +posix-screen-size vi_diff.txt /*posix-screen-size* +postgresql ft_sql.txt /*postgresql* +postscr.vim syntax.txt /*postscr.vim* +postscript-cjk-printing print.txt /*postscript-cjk-printing* +postscript-print-encoding print.txt /*postscript-print-encoding* +postscript-print-trouble print.txt /*postscript-print-trouble* +postscript-print-util print.txt /*postscript-print-util* +postscript-printing print.txt /*postscript-printing* +pow() builtin.txt /*pow()* +ppwiz.vim syntax.txt /*ppwiz.vim* +press-enter message.txt /*press-enter* +press-return message.txt /*press-return* +prevcount-variable eval.txt /*prevcount-variable* +preview-popup windows.txt /*preview-popup* +preview-window windows.txt /*preview-window* +prevnonblank() builtin.txt /*prevnonblank()* +print-intro print.txt /*print-intro* +print-options print.txt /*print-options* +print.txt print.txt /*print.txt* +printf() builtin.txt /*printf()* +printf-$ builtin.txt /*printf-$* +printf-% builtin.txt /*printf-%* +printf-B builtin.txt /*printf-B* +printf-E builtin.txt /*printf-E* +printf-G builtin.txt /*printf-G* +printf-S builtin.txt /*printf-S* +printf-X builtin.txt /*printf-X* +printf-b builtin.txt /*printf-b* +printf-c builtin.txt /*printf-c* +printf-d builtin.txt /*printf-d* +printf-e builtin.txt /*printf-e* +printf-f builtin.txt /*printf-f* +printf-g builtin.txt /*printf-g* +printf-o builtin.txt /*printf-o* +printf-s builtin.txt /*printf-s* +printf-x builtin.txt /*printf-x* +printing print.txt /*printing* +printing-formfeed print.txt /*printing-formfeed* +profile repeat.txt /*profile* +profiling repeat.txt /*profiling* +profiling-variable eval.txt /*profiling-variable* +progname-variable eval.txt /*progname-variable* +progpath-variable eval.txt /*progpath-variable* +progress.vim syntax.txt /*progress.vim* +prompt-buffer channel.txt /*prompt-buffer* +prompt_getprompt() builtin.txt /*prompt_getprompt()* +prompt_setcallback() builtin.txt /*prompt_setcallback()* +prompt_setinterrupt() builtin.txt /*prompt_setinterrupt()* +prompt_setprompt() builtin.txt /*prompt_setprompt()* +promptbuffer-functions usr_41.txt /*promptbuffer-functions* +pronounce intro.txt /*pronounce* +prop_add() textprop.txt /*prop_add()* +prop_add_list() textprop.txt /*prop_add_list()* +prop_clear() textprop.txt /*prop_clear()* +prop_find() textprop.txt /*prop_find()* +prop_list() textprop.txt /*prop_list()* +prop_remove() textprop.txt /*prop_remove()* +prop_type_add() textprop.txt /*prop_type_add()* +prop_type_change() textprop.txt /*prop_type_change()* +prop_type_delete() textprop.txt /*prop_type_delete()* +prop_type_get() textprop.txt /*prop_type_get()* +prop_type_list() textprop.txt /*prop_type_list()* +protected-method vim9class.txt /*protected-method* +protected-variable vim9class.txt /*protected-variable* +ps1-about ft_ps1.txt /*ps1-about* +ps1-compiler ft_ps1.txt /*ps1-compiler* +ps1-folding ft_ps1.txt /*ps1-folding* +ps1-keyword ft_ps1.txt /*ps1-keyword* +ps1-syntax ft_ps1.txt /*ps1-syntax* +psql ft_sql.txt /*psql* +ptcap.vim syntax.txt /*ptcap.vim* +pterm-mouse options.txt /*pterm-mouse* +public-variable vim9class.txt /*public-variable* +pum_getpos() builtin.txt /*pum_getpos()* +pumvisible() builtin.txt /*pumvisible()* +put change.txt /*put* +put-Visual-mode change.txt /*put-Visual-mode* +py3eval() builtin.txt /*py3eval()* +pyeval() builtin.txt /*pyeval()* +python if_pyth.txt /*python* +python-.locked if_pyth.txt /*python-.locked* +python-2-and-3 if_pyth.txt /*python-2-and-3* +python-Dictionary if_pyth.txt /*python-Dictionary* +python-Function if_pyth.txt /*python-Function* +python-List if_pyth.txt /*python-List* +python-VIM_SPECIAL_PATH if_pyth.txt /*python-VIM_SPECIAL_PATH* +python-_get_paths if_pyth.txt /*python-_get_paths* +python-bindeval if_pyth.txt /*python-bindeval* +python-bindeval-objects if_pyth.txt /*python-bindeval-objects* +python-buffer if_pyth.txt /*python-buffer* +python-buffers if_pyth.txt /*python-buffers* +python-building if_pyth.txt /*python-building* +python-chdir if_pyth.txt /*python-chdir* +python-command if_pyth.txt /*python-command* +python-commands if_pyth.txt /*python-commands* +python-current if_pyth.txt /*python-current* +python-dynamic if_pyth.txt /*python-dynamic* +python-environment if_pyth.txt /*python-environment* +python-error if_pyth.txt /*python-error* +python-eval if_pyth.txt /*python-eval* +python-examples if_pyth.txt /*python-examples* +python-fchdir if_pyth.txt /*python-fchdir* +python-find_module if_pyth.txt /*python-find_module* +python-foreach_rtp if_pyth.txt /*python-foreach_rtp* +python-input if_pyth.txt /*python-input* +python-options if_pyth.txt /*python-options* +python-output if_pyth.txt /*python-output* +python-path_hook if_pyth.txt /*python-path_hook* +python-pyeval if_pyth.txt /*python-pyeval* +python-range if_pyth.txt /*python-range* +python-special-path if_pyth.txt /*python-special-path* +python-stable if_pyth.txt /*python-stable* +python-stable-abi if_pyth.txt /*python-stable-abi* +python-strwidth if_pyth.txt /*python-strwidth* +python-tabpage if_pyth.txt /*python-tabpage* +python-tabpages if_pyth.txt /*python-tabpages* +python-vars if_pyth.txt /*python-vars* +python-vim if_pyth.txt /*python-vim* +python-vvars if_pyth.txt /*python-vvars* +python-window if_pyth.txt /*python-window* +python-windows if_pyth.txt /*python-windows* +python.vim syntax.txt /*python.vim* +python2-directory if_pyth.txt /*python2-directory* +python3 if_pyth.txt /*python3* +python3-directory if_pyth.txt /*python3-directory* +python3-stable-abi if_pyth.txt /*python3-stable-abi* +python3-version-variable eval.txt /*python3-version-variable* +python_x if_pyth.txt /*python_x* +python_x-special-comments if_pyth.txt /*python_x-special-comments* +pythonx if_pyth.txt /*pythonx* +pythonx-directory if_pyth.txt /*pythonx-directory* +pyxeval() builtin.txt /*pyxeval()* +q repeat.txt /*q* +q-args-example map.txt /*q-args-example* +q/ cmdline.txt /*q\/* +q: cmdline.txt /*q:* +q? cmdline.txt /*q?* +qf.vim filetype.txt /*qf.vim* +qnx os_qnx.txt /*qnx* +qnx-compiling os_qnx.txt /*qnx-compiling* +qnx-general os_qnx.txt /*qnx-general* +qnx-terminal os_qnx.txt /*qnx-terminal* +quake.vim syntax.txt /*quake.vim* +quickfix quickfix.txt /*quickfix* +quickfix-6 version6.txt /*quickfix-6* +quickfix-ID quickfix.txt /*quickfix-ID* +quickfix-buffer quickfix.txt /*quickfix-buffer* +quickfix-changedtick quickfix.txt /*quickfix-changedtick* +quickfix-context quickfix.txt /*quickfix-context* +quickfix-directory-stack quickfix.txt /*quickfix-directory-stack* +quickfix-error-lists quickfix.txt /*quickfix-error-lists* +quickfix-functions usr_41.txt /*quickfix-functions* +quickfix-gcc quickfix.txt /*quickfix-gcc* +quickfix-index quickfix.txt /*quickfix-index* +quickfix-manx quickfix.txt /*quickfix-manx* +quickfix-parse quickfix.txt /*quickfix-parse* +quickfix-perl quickfix.txt /*quickfix-perl* +quickfix-size quickfix.txt /*quickfix-size* +quickfix-title quickfix.txt /*quickfix-title* +quickfix-valid quickfix.txt /*quickfix-valid* +quickfix-window quickfix.txt /*quickfix-window* +quickfix-window-ID quickfix.txt /*quickfix-window-ID* +quickfix-window-function quickfix.txt /*quickfix-window-function* +quickfix.txt quickfix.txt /*quickfix.txt* +quickref quickref.txt /*quickref* +quickref.txt quickref.txt /*quickref.txt* +quote change.txt /*quote* +quote# change.txt /*quote#* +quote% change.txt /*quote%* +quote+ gui_x11.txt /*quote+* +quote- change.txt /*quote-* +quote. change.txt /*quote.* +quote/ change.txt /*quote\/* +quote0 change.txt /*quote0* +quote1 change.txt /*quote1* +quote2 change.txt /*quote2* +quote3 change.txt /*quote3* +quote4 change.txt /*quote4* +quote9 change.txt /*quote9* +quote: change.txt /*quote:* +quote= change.txt /*quote=* +quote_ change.txt /*quote_* +quote_# change.txt /*quote_#* +quote_% change.txt /*quote_%* +quote_- change.txt /*quote_-* +quote_. change.txt /*quote_.* +quote_/ change.txt /*quote_\/* +quote_: change.txt /*quote_:* +quote_= change.txt /*quote_=* +quote_alpha change.txt /*quote_alpha* +quote_number change.txt /*quote_number* +quote_quote change.txt /*quote_quote* +quote_~ change.txt /*quote_~* +quotea change.txt /*quotea* +quotecommandquote intro.txt /*quotecommandquote* +quoteplus gui_x11.txt /*quoteplus* +quotequote change.txt /*quotequote* +quotes quotes.txt /*quotes* +quotes.txt quotes.txt /*quotes.txt* +quotestar gui.txt /*quotestar* +quote~ change.txt /*quote~* +r change.txt /*r* +r.vim syntax.txt /*r.vim* +raku-unicode ft_raku.txt /*raku-unicode* +rand() builtin.txt /*rand()* +random builtin.txt /*random* +range() builtin.txt /*range()* +raw-terminal-mode term.txt /*raw-terminal-mode* +rcp pi_netrw.txt /*rcp* +read-in-close-cb channel.txt /*read-in-close-cb* +read-messages insert.txt /*read-messages* +read-only-share editing.txt /*read-only-share* +read-only-variable vim9class.txt /*read-only-variable* +read-stdin version5.txt /*read-stdin* +readblob() builtin.txt /*readblob()* +readdir() builtin.txt /*readdir()* +readdirex() builtin.txt /*readdirex()* +readfile() builtin.txt /*readfile()* +readline.vim syntax.txt /*readline.vim* +recording repeat.txt /*recording* +recover.txt recover.txt /*recover.txt* +recovery recover.txt /*recovery* +recursive_mapping map.txt /*recursive_mapping* +redo undo.txt /*redo* +redo-register undo.txt /*redo-register* +reduce() builtin.txt /*reduce()* +ref intro.txt /*ref* +reference intro.txt /*reference* +reference_toc help.txt /*reference_toc* +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* +registers change.txt /*registers* +rego.vim syntax.txt /*rego.vim* +regular-expression pattern.txt /*regular-expression* +reload editing.txt /*reload* +reltime() builtin.txt /*reltime()* +reltimefloat() builtin.txt /*reltimefloat()* +reltimestr() builtin.txt /*reltimestr()* +remote.txt remote.txt /*remote.txt* +remote_expr() builtin.txt /*remote_expr()* +remote_foreground() builtin.txt /*remote_foreground()* +remote_peek() builtin.txt /*remote_peek()* +remote_read() builtin.txt /*remote_read()* +remote_send() builtin.txt /*remote_send()* +remote_startserver() builtin.txt /*remote_startserver()* +remove() builtin.txt /*remove()* +remove-filetype filetype.txt /*remove-filetype* +remove-option-flags options.txt /*remove-option-flags* +rename() builtin.txt /*rename()* +rename-files tips.txt /*rename-files* +repeat() builtin.txt /*repeat()* +repeat.txt repeat.txt /*repeat.txt* +repeating repeat.txt /*repeating* +replacing change.txt /*replacing* +replacing-ex insert.txt /*replacing-ex* +reselect-Visual visual.txt /*reselect-Visual* +resolve() builtin.txt /*resolve()* +restore-cursor usr_05.txt /*restore-cursor* +restore-position tips.txt /*restore-position* +restricted-mode starting.txt /*restricted-mode* +retab-example change.txt /*retab-example* +rethrow eval.txt /*rethrow* +reverse() builtin.txt /*reverse()* +rexx.vim syntax.txt /*rexx.vim* +rgb.txt gui_w32.txt /*rgb.txt* +rgview starting.txt /*rgview* +rgvim starting.txt /*rgvim* +right-justify change.txt /*right-justify* +rileft rileft.txt /*rileft* +rileft.txt rileft.txt /*rileft.txt* +riscos os_risc.txt /*riscos* +rmd.vim syntax.txt /*rmd.vim* +rot13 change.txt /*rot13* +round() builtin.txt /*round()* +rrst.vim syntax.txt /*rrst.vim* +rst.vim syntax.txt /*rst.vim* +rsync pi_netrw.txt /*rsync* +ruby if_ruby.txt /*ruby* +ruby-blob if_ruby.txt /*ruby-blob* +ruby-buffer if_ruby.txt /*ruby-buffer* +ruby-command if_ruby.txt /*ruby-command* +ruby-commands if_ruby.txt /*ruby-commands* +ruby-dynamic if_ruby.txt /*ruby-dynamic* +ruby-evaluate if_ruby.txt /*ruby-evaluate* +ruby-globals if_ruby.txt /*ruby-globals* +ruby-message if_ruby.txt /*ruby-message* +ruby-rubyeval if_ruby.txt /*ruby-rubyeval* +ruby-set_option if_ruby.txt /*ruby-set_option* +ruby-vim if_ruby.txt /*ruby-vim* +ruby-window if_ruby.txt /*ruby-window* +ruby.vim syntax.txt /*ruby.vim* +ruby_fold syntax.txt /*ruby_fold* +ruby_foldable_groups syntax.txt /*ruby_foldable_groups* +ruby_minlines syntax.txt /*ruby_minlines* +ruby_no_expensive syntax.txt /*ruby_no_expensive* +ruby_operators syntax.txt /*ruby_operators* +ruby_space_errors syntax.txt /*ruby_space_errors* +ruby_spellcheck_strings syntax.txt /*ruby_spellcheck_strings* +rubyeval() builtin.txt /*rubyeval()* +russian russian.txt /*russian* +russian-intro russian.txt /*russian-intro* +russian-issues russian.txt /*russian-issues* +russian-keymap russian.txt /*russian-keymap* +russian-l18n russian.txt /*russian-l18n* +russian.txt russian.txt /*russian.txt* +rust ft_rust.txt /*rust* +rust-auto-pairs ft_rust.txt /*rust-auto-pairs* +rust-commands ft_rust.txt /*rust-commands* +rust-intro ft_rust.txt /*rust-intro* +rust-mappings ft_rust.txt /*rust-mappings* +rust-settings ft_rust.txt /*rust-settings* +rust-syntastic ft_rust.txt /*rust-syntastic* +rview starting.txt /*rview* +rvim starting.txt /*rvim* +rxvt syntax.txt /*rxvt* +s change.txt /*s* +s/\& change.txt /*s\/\\&* +s/\0 change.txt /*s\/\\0* +s/\1 change.txt /*s\/\\1* +s/\2 change.txt /*s\/\\2* +s/\3 change.txt /*s\/\\3* +s/\9 change.txt /*s\/\\9* +s/\<CR> change.txt /*s\/\\<CR>* +s/\= change.txt /*s\/\\=* +s/\E change.txt /*s\/\\E* +s/\L change.txt /*s\/\\L* +s/\U change.txt /*s\/\\U* +s/\\ change.txt /*s\/\\\\* +s/\b change.txt /*s\/\\b* +s/\e change.txt /*s\/\\e* +s/\l change.txt /*s\/\\l* +s/\n change.txt /*s\/\\n* +s/\r change.txt /*s\/\\r* +s/\t change.txt /*s\/\\t* +s/\u change.txt /*s\/\\u* +s/\~ change.txt /*s\/\\~* +s:netrw_passwd pi_netrw.txt /*s:netrw_passwd* +s:var eval.txt /*s:var* +s<CR> change.txt /*s<CR>* +sandbox eval.txt /*sandbox* +sandbox-option eval.txt /*sandbox-option* +save-file editing.txt /*save-file* +save-settings starting.txt /*save-settings* +scheme.vim syntax.txt /*scheme.vim* +scp pi_netrw.txt /*scp* +scratch-buffer windows.txt /*scratch-buffer* +screenattr() builtin.txt /*screenattr()* +screenchar() builtin.txt /*screenchar()* +screenchars() builtin.txt /*screenchars()* +screencol() builtin.txt /*screencol()* +screenpos() builtin.txt /*screenpos()* +screenrow() builtin.txt /*screenrow()* +screenstring() builtin.txt /*screenstring()* +script usr_41.txt /*script* +script-here if_perl.txt /*script-here* +script-local map.txt /*script-local* +script-variable eval.txt /*script-variable* +scriptnames-dictionary eval.txt /*scriptnames-dictionary* +scriptout-changed version4.txt /*scriptout-changed* +scriptversion eval.txt /*scriptversion* +scriptversion-1 eval.txt /*scriptversion-1* +scriptversion-2 eval.txt /*scriptversion-2* +scriptversion-3 eval.txt /*scriptversion-3* +scriptversion-4 eval.txt /*scriptversion-4* +scroll-binding scroll.txt /*scroll-binding* +scroll-cursor scroll.txt /*scroll-cursor* +scroll-down scroll.txt /*scroll-down* +scroll-horizontal scroll.txt /*scroll-horizontal* +scroll-insert tips.txt /*scroll-insert* +scroll-mouse-wheel scroll.txt /*scroll-mouse-wheel* +scroll-region term.txt /*scroll-region* +scroll-smooth tips.txt /*scroll-smooth* +scroll-up scroll.txt /*scroll-up* +scroll.txt scroll.txt /*scroll.txt* +scrollbind-quickadj scroll.txt /*scrollbind-quickadj* +scrollbind-relative scroll.txt /*scrollbind-relative* +scrolling scroll.txt /*scrolling* +scrollstart-variable eval.txt /*scrollstart-variable* +sdl.vim syntax.txt /*sdl.vim* +search() builtin.txt /*search()* +search()-sub-match builtin.txt /*search()-sub-match* +search-commands pattern.txt /*search-commands* +search-offset pattern.txt /*search-offset* +search-pattern pattern.txt /*search-pattern* +search-range pattern.txt /*search-range* +search-replace change.txt /*search-replace* +searchcount() builtin.txt /*searchcount()* +searchdecl() builtin.txt /*searchdecl()* +searchforward-variable eval.txt /*searchforward-variable* +searchpair() builtin.txt /*searchpair()* +searchpairpos() builtin.txt /*searchpairpos()* +searchpos() builtin.txt /*searchpos()* +section motion.txt /*section* +sed.vim syntax.txt /*sed.vim* +self eval.txt /*self* +send-money sponsor.txt /*send-money* +send-to-menu gui_w32.txt /*send-to-menu* +sendto gui_w32.txt /*sendto* +sentence motion.txt /*sentence* +server-functions usr_41.txt /*server-functions* +server2client() builtin.txt /*server2client()* +serverlist() builtin.txt /*serverlist()* +servername-variable eval.txt /*servername-variable* +session-file starting.txt /*session-file* +set-option options.txt /*set-option* +set-spc-auto spell.txt /*set-spc-auto* +setbufline() builtin.txt /*setbufline()* +setbufvar() builtin.txt /*setbufvar()* +setcellwidths() builtin.txt /*setcellwidths()* +setcharpos() builtin.txt /*setcharpos()* +setcharsearch() builtin.txt /*setcharsearch()* +setcmdline() builtin.txt /*setcmdline()* +setcmdpos() builtin.txt /*setcmdpos()* +setcursorcharpos() builtin.txt /*setcursorcharpos()* +setenv() builtin.txt /*setenv()* +setfperm() builtin.txt /*setfperm()* +setline() builtin.txt /*setline()* +setloclist() builtin.txt /*setloclist()* +setmatches() builtin.txt /*setmatches()* +setpos() builtin.txt /*setpos()* +setqflist() builtin.txt /*setqflist()* +setqflist-action builtin.txt /*setqflist-action* +setqflist-examples quickfix.txt /*setqflist-examples* +setqflist-what builtin.txt /*setqflist-what* +setreg() builtin.txt /*setreg()* +settabvar() builtin.txt /*settabvar()* +settabwinvar() builtin.txt /*settabwinvar()* +settagstack() builtin.txt /*settagstack()* +setting-guifont gui.txt /*setting-guifont* +setting-guitablabel tabpage.txt /*setting-guitablabel* +setting-tabline tabpage.txt /*setting-tabline* +setuid change.txt /*setuid* +setwinvar() builtin.txt /*setwinvar()* +sftp pi_netrw.txt /*sftp* +sgml.vim syntax.txt /*sgml.vim* +sgr-mouse options.txt /*sgr-mouse* +sh-awk syntax.txt /*sh-awk* +sh-embed syntax.txt /*sh-embed* +sh.vim syntax.txt /*sh.vim* +sha256() builtin.txt /*sha256()* +shell-window tips.txt /*shell-window* +shell_error-variable eval.txt /*shell_error-variable* +shellescape() builtin.txt /*shellescape()* +shift intro.txt /*shift* +shift-left-right change.txt /*shift-left-right* +shiftwidth() builtin.txt /*shiftwidth()* +shm-A options.txt /*shm-A* +shm-C options.txt /*shm-C* +shm-F options.txt /*shm-F* +shm-I options.txt /*shm-I* +shm-O options.txt /*shm-O* +shm-S options.txt /*shm-S* +shm-T options.txt /*shm-T* +shm-W options.txt /*shm-W* +shm-a options.txt /*shm-a* +shm-c options.txt /*shm-c* +shm-f options.txt /*shm-f* +shm-i options.txt /*shm-i* +shm-l options.txt /*shm-l* +shm-m options.txt /*shm-m* +shm-n options.txt /*shm-n* +shm-o options.txt /*shm-o* +shm-q options.txt /*shm-q* +shm-r options.txt /*shm-r* +shm-s options.txt /*shm-s* +shm-t options.txt /*shm-t* +shm-w options.txt /*shm-w* +shm-x options.txt /*shm-x* +short-name-changed version4.txt /*short-name-changed* +showing-menus gui.txt /*showing-menus* +sign-column sign.txt /*sign-column* +sign-commands sign.txt /*sign-commands* +sign-functions usr_41.txt /*sign-functions* +sign-functions-details sign.txt /*sign-functions-details* +sign-group sign.txt /*sign-group* +sign-identifier sign.txt /*sign-identifier* +sign-intro sign.txt /*sign-intro* +sign-priority sign.txt /*sign-priority* +sign-support sign.txt /*sign-support* +sign.txt sign.txt /*sign.txt* +sign_define() sign.txt /*sign_define()* +sign_getdefined() sign.txt /*sign_getdefined()* +sign_getplaced() sign.txt /*sign_getplaced()* +sign_jump() sign.txt /*sign_jump()* +sign_place() sign.txt /*sign_place()* +sign_placelist() sign.txt /*sign_placelist()* +sign_undefine() sign.txt /*sign_undefine()* +sign_unplace() sign.txt /*sign_unplace()* +sign_unplacelist() sign.txt /*sign_unplacelist()* +signs sign.txt /*signs* +simple-change change.txt /*simple-change* +simplify() builtin.txt /*simplify()* +simulated-command vi_diff.txt /*simulated-command* +sin() builtin.txt /*sin()* +single-repeat repeat.txt /*single-repeat* +sinh() builtin.txt /*sinh()* +sizeofint-variable eval.txt /*sizeofint-variable* +sizeoflong-variable eval.txt /*sizeoflong-variable* +sizeofpointer-variable eval.txt /*sizeofpointer-variable* +skeleton autocmd.txt /*skeleton* +skip_defaults_vim starting.txt /*skip_defaults_vim* +slice eval.txt /*slice* +slice() builtin.txt /*slice()* +slow-fast-terminal term.txt /*slow-fast-terminal* +slow-start starting.txt /*slow-start* +slow-terminal term.txt /*slow-terminal* +socket-interface channel.txt /*socket-interface* +sort() builtin.txt /*sort()* +sorting change.txt /*sorting* +sound-functions usr_41.txt /*sound-functions* +sound_clear() builtin.txt /*sound_clear()* +sound_playevent() builtin.txt /*sound_playevent()* +sound_playfile() builtin.txt /*sound_playfile()* +sound_stop() builtin.txt /*sound_stop()* +soundfold() builtin.txt /*soundfold()* +source-vim9-script usr_52.txt /*source-vim9-script* +space intro.txt /*space* +spec-customizing pi_spec.txt /*spec-customizing* +spec-how-to-use-it pi_spec.txt /*spec-how-to-use-it* +spec-setting-a-map pi_spec.txt /*spec-setting-a-map* +spec_chglog_format pi_spec.txt /*spec_chglog_format* +spec_chglog_prepend pi_spec.txt /*spec_chglog_prepend* +spec_chglog_release_info pi_spec.txt /*spec_chglog_release_info* +special-buffers windows.txt /*special-buffers* +specifies vim9class.txt /*specifies* +speed-up tips.txt /*speed-up* +spell spell.txt /*spell* +spell-ACCENT spell.txt /*spell-ACCENT* +spell-AUTHOR spell.txt /*spell-AUTHOR* +spell-BAD spell.txt /*spell-BAD* +spell-BREAK spell.txt /*spell-BREAK* +spell-CHECKCOMPOUNDCASE spell.txt /*spell-CHECKCOMPOUNDCASE* +spell-CHECKCOMPOUNDDUP spell.txt /*spell-CHECKCOMPOUNDDUP* +spell-CHECKCOMPOUNDPATTERN spell.txt /*spell-CHECKCOMPOUNDPATTERN* +spell-CHECKCOMPOUNDREP spell.txt /*spell-CHECKCOMPOUNDREP* +spell-CHECKCOMPOUNDTRIPLE spell.txt /*spell-CHECKCOMPOUNDTRIPLE* +spell-CHECKSHARPS spell.txt /*spell-CHECKSHARPS* +spell-CIRCUMFIX spell.txt /*spell-CIRCUMFIX* +spell-COMMON spell.txt /*spell-COMMON* +spell-COMPLEXPREFIXES spell.txt /*spell-COMPLEXPREFIXES* +spell-COMPOUND spell.txt /*spell-COMPOUND* +spell-COMPOUNDBEGIN spell.txt /*spell-COMPOUNDBEGIN* +spell-COMPOUNDEND spell.txt /*spell-COMPOUNDEND* +spell-COMPOUNDFIRST spell.txt /*spell-COMPOUNDFIRST* +spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG* +spell-COMPOUNDFORBIDFLAG spell.txt /*spell-COMPOUNDFORBIDFLAG* +spell-COMPOUNDLAST spell.txt /*spell-COMPOUNDLAST* +spell-COMPOUNDMIDDLE spell.txt /*spell-COMPOUNDMIDDLE* +spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN* +spell-COMPOUNDPERMITFLAG spell.txt /*spell-COMPOUNDPERMITFLAG* +spell-COMPOUNDROOT spell.txt /*spell-COMPOUNDROOT* +spell-COMPOUNDRULE spell.txt /*spell-COMPOUNDRULE* +spell-COMPOUNDRULES spell.txt /*spell-COMPOUNDRULES* +spell-COMPOUNDSYLLABLE spell.txt /*spell-COMPOUNDSYLLABLE* +spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX* +spell-COMPOUNDWORDMAX spell.txt /*spell-COMPOUNDWORDMAX* +spell-COPYRIGHT spell.txt /*spell-COPYRIGHT* +spell-EMAIL spell.txt /*spell-EMAIL* +spell-FLAG spell.txt /*spell-FLAG* +spell-FOL spell.txt /*spell-FOL* +spell-FORBIDDENWORD spell.txt /*spell-FORBIDDENWORD* +spell-HOME spell.txt /*spell-HOME* +spell-IGNOREEXTRA spell.txt /*spell-IGNOREEXTRA* +spell-KEEPCASE spell.txt /*spell-KEEPCASE* +spell-KEY spell.txt /*spell-KEY* +spell-LANG spell.txt /*spell-LANG* +spell-LEMMA_PRESENT spell.txt /*spell-LEMMA_PRESENT* +spell-LOW spell.txt /*spell-LOW* +spell-MAP spell.txt /*spell-MAP* +spell-MAXNGRAMSUGS spell.txt /*spell-MAXNGRAMSUGS* +spell-NAME spell.txt /*spell-NAME* +spell-NEEDAFFIX spell.txt /*spell-NEEDAFFIX* +spell-NEEDCOMPOUND spell.txt /*spell-NEEDCOMPOUND* +spell-NOBREAK spell.txt /*spell-NOBREAK* +spell-NOCOMPOUNDSUGS spell.txt /*spell-NOCOMPOUNDSUGS* +spell-NOSPLITSUGS spell.txt /*spell-NOSPLITSUGS* +spell-NOSUGFILE spell.txt /*spell-NOSUGFILE* +spell-NOSUGGEST spell.txt /*spell-NOSUGGEST* +spell-ONLYINCOMPOUND spell.txt /*spell-ONLYINCOMPOUND* +spell-PFX spell.txt /*spell-PFX* +spell-PFXPOSTPONE spell.txt /*spell-PFXPOSTPONE* +spell-PSEUDOROOT spell.txt /*spell-PSEUDOROOT* +spell-RARE spell.txt /*spell-RARE* +spell-REP spell.txt /*spell-REP* +spell-SAL spell.txt /*spell-SAL* +spell-SET spell.txt /*spell-SET* +spell-SFX spell.txt /*spell-SFX* +spell-SLASH spell.txt /*spell-SLASH* +spell-SOFOFROM spell.txt /*spell-SOFOFROM* +spell-SOFOTO spell.txt /*spell-SOFOTO* +spell-SUGSWITHDOTS spell.txt /*spell-SUGSWITHDOTS* +spell-SYLLABLE spell.txt /*spell-SYLLABLE* +spell-SYLLABLENUM spell.txt /*spell-SYLLABLENUM* +spell-SpellFileMissing spell.txt /*spell-SpellFileMissing* +spell-TRY spell.txt /*spell-TRY* +spell-UPP spell.txt /*spell-UPP* +spell-VERSION spell.txt /*spell-VERSION* +spell-WORDCHARS spell.txt /*spell-WORDCHARS* +spell-aff-format spell.txt /*spell-aff-format* +spell-affix-chars spell.txt /*spell-affix-chars* +spell-affix-comment spell.txt /*spell-affix-comment* +spell-affix-flags spell.txt /*spell-affix-flags* +spell-affix-mbyte spell.txt /*spell-affix-mbyte* +spell-affix-not-supported spell.txt /*spell-affix-not-supported* +spell-affix-vim spell.txt /*spell-affix-vim* +spell-cjk spell.txt /*spell-cjk* +spell-compound spell.txt /*spell-compound* +spell-dic-format spell.txt /*spell-dic-format* +spell-double-scoring spell.txt /*spell-double-scoring* +spell-file-format spell.txt /*spell-file-format* +spell-functions usr_41.txt /*spell-functions* +spell-german spell.txt /*spell-german* +spell-load spell.txt /*spell-load* +spell-midword spell.txt /*spell-midword* +spell-mkspell spell.txt /*spell-mkspell* +spell-quickstart spell.txt /*spell-quickstart* +spell-remarks spell.txt /*spell-remarks* +spell-russian spell.txt /*spell-russian* +spell-sug-file spell.txt /*spell-sug-file* +spell-syntax spell.txt /*spell-syntax* +spell-wordlist-format spell.txt /*spell-wordlist-format* +spell-yiddish spell.txt /*spell-yiddish* +spell.txt spell.txt /*spell.txt* +spellbadword() builtin.txt /*spellbadword()* +spellfile-cleanup spell.txt /*spellfile-cleanup* +spellfile.vim spell.txt /*spellfile.vim* +spellsuggest() builtin.txt /*spellsuggest()* +split() builtin.txt /*split()* +splitfind windows.txt /*splitfind* +splitview windows.txt /*splitview* +sponsor sponsor.txt /*sponsor* +sponsor-faq sponsor.txt /*sponsor-faq* +sponsor.txt sponsor.txt /*sponsor.txt* +spoon os_unix.txt /*spoon* +spup.vim syntax.txt /*spup.vim* +sql-adding-dialects ft_sql.txt /*sql-adding-dialects* +sql-completion ft_sql.txt /*sql-completion* +sql-completion-columns ft_sql.txt /*sql-completion-columns* +sql-completion-customization ft_sql.txt /*sql-completion-customization* +sql-completion-dynamic ft_sql.txt /*sql-completion-dynamic* +sql-completion-filetypes ft_sql.txt /*sql-completion-filetypes* +sql-completion-maps ft_sql.txt /*sql-completion-maps* +sql-completion-procedures ft_sql.txt /*sql-completion-procedures* +sql-completion-static ft_sql.txt /*sql-completion-static* +sql-completion-tables ft_sql.txt /*sql-completion-tables* +sql-completion-tutorial ft_sql.txt /*sql-completion-tutorial* +sql-completion-views ft_sql.txt /*sql-completion-views* +sql-dialects ft_sql.txt /*sql-dialects* +sql-macros ft_sql.txt /*sql-macros* +sql-matchit ft_sql.txt /*sql-matchit* +sql-navigation ft_sql.txt /*sql-navigation* +sql-object-motions ft_sql.txt /*sql-object-motions* +sql-predefined-objects ft_sql.txt /*sql-predefined-objects* +sql-type-default ft_sql.txt /*sql-type-default* +sql-types ft_sql.txt /*sql-types* +sql.vim syntax.txt /*sql.vim* +sqlanywhere ft_sql.txt /*sqlanywhere* +sqlanywhere.vim syntax.txt /*sqlanywhere.vim* +sqlgettype ft_sql.txt /*sqlgettype* +sqlinformix.vim syntax.txt /*sqlinformix.vim* +sqlj ft_sql.txt /*sqlj* +sqlserver ft_sql.txt /*sqlserver* +sqlsettype ft_sql.txt /*sqlsettype* +sqrt() builtin.txt /*sqrt()* +squirrel.vim syntax.txt /*squirrel.vim* +srand() builtin.txt /*srand()* +sscanf eval.txt /*sscanf* +standard-plugin usr_05.txt /*standard-plugin* +standard-plugin-list help.txt /*standard-plugin-list* +standout syntax.txt /*standout* +star pattern.txt /*star* +starstar editing.txt /*starstar* +starstar-wildcard editing.txt /*starstar-wildcard* +start-of-file pattern.txt /*start-of-file* +start-vimdiff diff.txt /*start-vimdiff* +starting starting.txt /*starting* +starting-amiga starting.txt /*starting-amiga* +starting.txt starting.txt /*starting.txt* +startup starting.txt /*startup* +startup-options starting.txt /*startup-options* +startup-terminal term.txt /*startup-terminal* +state() builtin.txt /*state()* +static-tag tagsrch.txt /*static-tag* +status-line windows.txt /*status-line* +statusmsg-variable eval.txt /*statusmsg-variable* +stl-%{ options.txt /*stl-%{* +str2float() builtin.txt /*str2float()* +str2list() builtin.txt /*str2list()* +str2nr() builtin.txt /*str2nr()* +strcasestr() builtin.txt /*strcasestr()* +strcharlen() builtin.txt /*strcharlen()* +strcharpart() builtin.txt /*strcharpart()* +strchars() builtin.txt /*strchars()* +strchr() builtin.txt /*strchr()* +strcspn() builtin.txt /*strcspn()* +strdisplaywidth() builtin.txt /*strdisplaywidth()* +strftime() builtin.txt /*strftime()* +strgetchar() builtin.txt /*strgetchar()* +stridx() builtin.txt /*stridx()* +strikethrough syntax.txt /*strikethrough* +string eval.txt /*string* +string() builtin.txt /*string()* +string-functions usr_41.txt /*string-functions* +string-match builtin.txt /*string-match* +string-offset-encoding eval.txt /*string-offset-encoding* +strlen() builtin.txt /*strlen()* +strpart() builtin.txt /*strpart()* +strpbrk() builtin.txt /*strpbrk()* +strptime() builtin.txt /*strptime()* +strrchr() builtin.txt /*strrchr()* +strridx() builtin.txt /*strridx()* +strspn() builtin.txt /*strspn()* +strstr() builtin.txt /*strstr()* +strtrans() builtin.txt /*strtrans()* +strutf16len() builtin.txt /*strutf16len()* +strwidth() builtin.txt /*strwidth()* +style-changes develop.txt /*style-changes* +style-compiler develop.txt /*style-compiler* +style-examples develop.txt /*style-examples* +style-functions develop.txt /*style-functions* +style-names develop.txt /*style-names* +style-spaces develop.txt /*style-spaces* +style-various develop.txt /*style-various* +sub-menu-priority gui.txt /*sub-menu-priority* +sub-replace-\= change.txt /*sub-replace-\\=* +sub-replace-expression change.txt /*sub-replace-expression* +sub-replace-special change.txt /*sub-replace-special* +sublist eval.txt /*sublist* +submatch() builtin.txt /*submatch()* +subscribe-maillist intro.txt /*subscribe-maillist* +subscript eval.txt /*subscript* +substitute() builtin.txt /*substitute()* +substitute-CR version6.txt /*substitute-CR* +substring eval.txt /*substring* +suffixes cmdline.txt /*suffixes* +suspend starting.txt /*suspend* +swap-exists-choices usr_11.txt /*swap-exists-choices* +swap-file recover.txt /*swap-file* +swapchoice-variable eval.txt /*swapchoice-variable* +swapcommand-variable eval.txt /*swapcommand-variable* +swapfile-changed version4.txt /*swapfile-changed* +swapfilelist() builtin.txt /*swapfilelist()* +swapinfo() builtin.txt /*swapinfo()* +swapname() builtin.txt /*swapname()* +swapname-variable eval.txt /*swapname-variable* +sybase ft_sql.txt /*sybase* +syn-sync-grouphere syntax.txt /*syn-sync-grouphere* +syn-sync-groupthere syntax.txt /*syn-sync-groupthere* +syn-sync-linecont syntax.txt /*syn-sync-linecont* +synID() builtin.txt /*synID()* +synIDattr() builtin.txt /*synIDattr()* +synIDtrans() builtin.txt /*synIDtrans()* +syncbind scroll.txt /*syncbind* +syncolor syntax.txt /*syncolor* +synconcealed() builtin.txt /*synconcealed()* +synload-1 syntax.txt /*synload-1* +synload-2 syntax.txt /*synload-2* +synload-3 syntax.txt /*synload-3* +synload-4 syntax.txt /*synload-4* +synload-5 syntax.txt /*synload-5* +synload-6 syntax.txt /*synload-6* +synstack() builtin.txt /*synstack()* +syntax syntax.txt /*syntax* +syntax-functions usr_41.txt /*syntax-functions* +syntax-highlighting syntax.txt /*syntax-highlighting* +syntax-latex syntax.txt /*syntax-latex* +syntax-loading syntax.txt /*syntax-loading* +syntax-printing usr_06.txt /*syntax-printing* +syntax-tex syntax.txt /*syntax-tex* +syntax.txt syntax.txt /*syntax.txt* +syntax_cmd syntax.txt /*syntax_cmd* +sys-file-list help.txt /*sys-file-list* +sysmouse term.txt /*sysmouse* +system() builtin.txt /*system()* +system-functions usr_41.txt /*system-functions* +system-vimrc starting.txt /*system-vimrc* +systemlist() builtin.txt /*systemlist()* +s~ change.txt /*s~* +t motion.txt /*t* +t: eval.txt /*t:* +t:var eval.txt /*t:var* +t_#2 term.txt /*t_#2* +t_#4 term.txt /*t_#4* +t_%1 term.txt /*t_%1* +t_%i term.txt /*t_%i* +t_&8 term.txt /*t_&8* +t_8b term.txt /*t_8b* +t_8f term.txt /*t_8f* +t_8u term.txt /*t_8u* +t_@7 term.txt /*t_@7* +t_AB term.txt /*t_AB* +t_AF term.txt /*t_AF* +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_CS term.txt /*t_CS* +t_CTRL-W_. terminal.txt /*t_CTRL-W_.* +t_CTRL-W_: terminal.txt /*t_CTRL-W_:* +t_CTRL-W_CTRL-C terminal.txt /*t_CTRL-W_CTRL-C* +t_CTRL-W_CTRL-W terminal.txt /*t_CTRL-W_CTRL-W* +t_CTRL-W_N terminal.txt /*t_CTRL-W_N* +t_CTRL-W_gT terminal.txt /*t_CTRL-W_gT* +t_CTRL-W_gt terminal.txt /*t_CTRL-W_gt* +t_CTRL-W_quote terminal.txt /*t_CTRL-W_quote* +t_CTRL-\_CTRL-N terminal.txt /*t_CTRL-\\_CTRL-N* +t_CV term.txt /*t_CV* +t_Ce term.txt /*t_Ce* +t_Co term.txt /*t_Co* +t_Cs term.txt /*t_Cs* +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_F1 term.txt /*t_F1* +t_F2 term.txt /*t_F2* +t_F3 term.txt /*t_F3* +t_F4 term.txt /*t_F4* +t_F5 term.txt /*t_F5* +t_F6 term.txt /*t_F6* +t_F7 term.txt /*t_F7* +t_F8 term.txt /*t_F8* +t_F9 term.txt /*t_F9* +t_GP term.txt /*t_GP* +t_IE term.txt /*t_IE* +t_IS term.txt /*t_IS* +t_K1 term.txt /*t_K1* +t_K3 term.txt /*t_K3* +t_K4 term.txt /*t_K4* +t_K5 term.txt /*t_K5* +t_K6 term.txt /*t_K6* +t_K7 term.txt /*t_K7* +t_K8 term.txt /*t_K8* +t_K9 term.txt /*t_K9* +t_KA term.txt /*t_KA* +t_KB term.txt /*t_KB* +t_KC term.txt /*t_KC* +t_KD term.txt /*t_KD* +t_KE term.txt /*t_KE* +t_KF term.txt /*t_KF* +t_KG term.txt /*t_KG* +t_KH term.txt /*t_KH* +t_KI term.txt /*t_KI* +t_KJ term.txt /*t_KJ* +t_KK term.txt /*t_KK* +t_KL term.txt /*t_KL* +t_PE term.txt /*t_PE* +t_PS term.txt /*t_PS* +t_RB term.txt /*t_RB* +t_RC term.txt /*t_RC* +t_RF term.txt /*t_RF* +t_RI term.txt /*t_RI* +t_RK term.txt /*t_RK* +t_RS term.txt /*t_RS* +t_RT term.txt /*t_RT* +t_RV term.txt /*t_RV* +t_Ri term.txt /*t_Ri* +t_SC term.txt /*t_SC* +t_SH term.txt /*t_SH* +t_SI term.txt /*t_SI* +t_SR term.txt /*t_SR* +t_ST term.txt /*t_ST* +t_Sb term.txt /*t_Sb* +t_Sf term.txt /*t_Sf* +t_Si term.txt /*t_Si* +t_TE term.txt /*t_TE* +t_TI term.txt /*t_TI* +t_Te term.txt /*t_Te* +t_Ts term.txt /*t_Ts* +t_Us term.txt /*t_Us* +t_VS term.txt /*t_VS* +t_WP term.txt /*t_WP* +t_WS term.txt /*t_WS* +t_XM term.txt /*t_XM* +t_ZH term.txt /*t_ZH* +t_ZR term.txt /*t_ZR* +t_al term.txt /*t_al* +t_bc term.txt /*t_bc* +t_blob-variable eval.txt /*t_blob-variable* +t_bool-variable eval.txt /*t_bool-variable* +t_cd term.txt /*t_cd* +t_cdl version4.txt /*t_cdl* +t_ce term.txt /*t_ce* +t_channel-variable eval.txt /*t_channel-variable* +t_ci version4.txt /*t_ci* +t_cil version4.txt /*t_cil* +t_cl term.txt /*t_cl* +t_class-variable eval.txt /*t_class-variable* +t_cm term.txt /*t_cm* +t_cri version4.txt /*t_cri* +t_cs term.txt /*t_cs* +t_csc version4.txt /*t_csc* +t_cv version4.txt /*t_cv* +t_cvv version4.txt /*t_cvv* +t_da term.txt /*t_da* +t_db term.txt /*t_db* +t_dict-variable eval.txt /*t_dict-variable* +t_dl term.txt /*t_dl* +t_ds term.txt /*t_ds* +t_ed version4.txt /*t_ed* +t_el version4.txt /*t_el* +t_f1 version4.txt /*t_f1* +t_f10 version4.txt /*t_f10* +t_f2 version4.txt /*t_f2* +t_f3 version4.txt /*t_f3* +t_f4 version4.txt /*t_f4* +t_f5 version4.txt /*t_f5* +t_f6 version4.txt /*t_f6* +t_f7 version4.txt /*t_f7* +t_f8 version4.txt /*t_f8* +t_f9 version4.txt /*t_f9* +t_fd term.txt /*t_fd* +t_fe term.txt /*t_fe* +t_float-variable eval.txt /*t_float-variable* +t_fs term.txt /*t_fs* +t_func-variable eval.txt /*t_func-variable* +t_help version4.txt /*t_help* +t_il version4.txt /*t_il* +t_job-variable eval.txt /*t_job-variable* +t_k1 term.txt /*t_k1* +t_k2 term.txt /*t_k2* +t_k3 term.txt /*t_k3* +t_k4 term.txt /*t_k4* +t_k5 term.txt /*t_k5* +t_k6 term.txt /*t_k6* +t_k7 term.txt /*t_k7* +t_k8 term.txt /*t_k8* +t_k9 term.txt /*t_k9* +t_k; term.txt /*t_k;* +t_kB term.txt /*t_kB* +t_kD term.txt /*t_kD* +t_kI term.txt /*t_kI* +t_kN term.txt /*t_kN* +t_kP term.txt /*t_kP* +t_kb term.txt /*t_kb* +t_kd term.txt /*t_kd* +t_ke term.txt /*t_ke* +t_kh term.txt /*t_kh* +t_kl term.txt /*t_kl* +t_kr term.txt /*t_kr* +t_ks term.txt /*t_ks* +t_ku term.txt /*t_ku* +t_le term.txt /*t_le* +t_list-variable eval.txt /*t_list-variable* +t_mb term.txt /*t_mb* +t_md term.txt /*t_md* +t_me term.txt /*t_me* +t_mr term.txt /*t_mr* +t_ms term.txt /*t_ms* +t_nd term.txt /*t_nd* +t_none-variable eval.txt /*t_none-variable* +t_number-variable eval.txt /*t_number-variable* +t_object-variable eval.txt /*t_object-variable* +t_op term.txt /*t_op* +t_se term.txt /*t_se* +t_sf1 version4.txt /*t_sf1* +t_sf10 version4.txt /*t_sf10* +t_sf2 version4.txt /*t_sf2* +t_sf3 version4.txt /*t_sf3* +t_sf4 version4.txt /*t_sf4* +t_sf5 version4.txt /*t_sf5* +t_sf6 version4.txt /*t_sf6* +t_sf7 version4.txt /*t_sf7* +t_sf8 version4.txt /*t_sf8* +t_sf9 version4.txt /*t_sf9* +t_skd version4.txt /*t_skd* +t_skl version4.txt /*t_skl* +t_skr version4.txt /*t_skr* +t_sku version4.txt /*t_sku* +t_so term.txt /*t_so* +t_sr term.txt /*t_sr* +t_star7 term.txt /*t_star7* +t_string-variable eval.txt /*t_string-variable* +t_tb version4.txt /*t_tb* +t_te term.txt /*t_te* +t_ti term.txt /*t_ti* +t_tp version4.txt /*t_tp* +t_ts term.txt /*t_ts* +t_ts_old version4.txt /*t_ts_old* +t_typealias-variable eval.txt /*t_typealias-variable* +t_u7 term.txt /*t_u7* +t_ue term.txt /*t_ue* +t_undo version4.txt /*t_undo* +t_us term.txt /*t_us* +t_ut term.txt /*t_ut* +t_vb term.txt /*t_vb* +t_ve term.txt /*t_ve* +t_vi term.txt /*t_vi* +t_vs term.txt /*t_vs* +t_xn term.txt /*t_xn* +t_xs term.txt /*t_xs* +tab intro.txt /*tab* +tab-page tabpage.txt /*tab-page* +tab-page-commands tabpage.txt /*tab-page-commands* +tab-page-intro tabpage.txt /*tab-page-intro* +tab-page-other tabpage.txt /*tab-page-other* +tabline-menu tabpage.txt /*tabline-menu* +tabnew-autocmd tabpage.txt /*tabnew-autocmd* +tabpage tabpage.txt /*tabpage* +tabpage-variable eval.txt /*tabpage-variable* +tabpage.txt tabpage.txt /*tabpage.txt* +tabpagebuflist() builtin.txt /*tabpagebuflist()* +tabpagenr() builtin.txt /*tabpagenr()* +tabpagewinnr() builtin.txt /*tabpagewinnr()* +tag tagsrch.txt /*tag* +tag-! tagsrch.txt /*tag-!* +tag-binary-search tagsrch.txt /*tag-binary-search* +tag-blocks motion.txt /*tag-blocks* +tag-commands tagsrch.txt /*tag-commands* +tag-details tagsrch.txt /*tag-details* +tag-function tagsrch.txt /*tag-function* +tag-functions usr_41.txt /*tag-functions* +tag-highlight syntax.txt /*tag-highlight* +tag-matchlist tagsrch.txt /*tag-matchlist* +tag-old-static tagsrch.txt /*tag-old-static* +tag-overloaded version5.txt /*tag-overloaded* +tag-preview tagsrch.txt /*tag-preview* +tag-priority tagsrch.txt /*tag-priority* +tag-regexp tagsrch.txt /*tag-regexp* +tag-search tagsrch.txt /*tag-search* +tag-security tagsrch.txt /*tag-security* +tag-skip-file tagsrch.txt /*tag-skip-file* +tag-stack tagsrch.txt /*tag-stack* +tagfiles() builtin.txt /*tagfiles()* +taglist() builtin.txt /*taglist()* +tags tagsrch.txt /*tags* +tags-and-searches tagsrch.txt /*tags-and-searches* +tags-file-changed version5.txt /*tags-file-changed* +tags-file-format tagsrch.txt /*tags-file-format* +tags-option tagsrch.txt /*tags-option* +tagsrch.txt tagsrch.txt /*tagsrch.txt* +tagstack tagsrch.txt /*tagstack* +tagstack-examples tagsrch.txt /*tagstack-examples* +tan() builtin.txt /*tan()* +tanh() builtin.txt /*tanh()* +tar pi_tar.txt /*tar* +tar-contents pi_tar.txt /*tar-contents* +tar-copyright pi_tar.txt /*tar-copyright* +tar-history pi_tar.txt /*tar-history* +tar-manual pi_tar.txt /*tar-manual* +tar-options pi_tar.txt /*tar-options* +tar-usage pi_tar.txt /*tar-usage* +tcl if_tcl.txt /*tcl* +tcl-beep if_tcl.txt /*tcl-beep* +tcl-buffer if_tcl.txt /*tcl-buffer* +tcl-buffer-append if_tcl.txt /*tcl-buffer-append* +tcl-buffer-cmds if_tcl.txt /*tcl-buffer-cmds* +tcl-buffer-command if_tcl.txt /*tcl-buffer-command* +tcl-buffer-count if_tcl.txt /*tcl-buffer-count* +tcl-buffer-delcmd if_tcl.txt /*tcl-buffer-delcmd* +tcl-buffer-delete if_tcl.txt /*tcl-buffer-delete* +tcl-buffer-expr if_tcl.txt /*tcl-buffer-expr* +tcl-buffer-get if_tcl.txt /*tcl-buffer-get* +tcl-buffer-insert if_tcl.txt /*tcl-buffer-insert* +tcl-buffer-last if_tcl.txt /*tcl-buffer-last* +tcl-buffer-mark if_tcl.txt /*tcl-buffer-mark* +tcl-buffer-option if_tcl.txt /*tcl-buffer-option* +tcl-buffer-set if_tcl.txt /*tcl-buffer-set* +tcl-buffer-windows if_tcl.txt /*tcl-buffer-windows* +tcl-bugs if_tcl.txt /*tcl-bugs* +tcl-command if_tcl.txt /*tcl-command* +tcl-commands if_tcl.txt /*tcl-commands* +tcl-dynamic if_tcl.txt /*tcl-dynamic* +tcl-ex-commands if_tcl.txt /*tcl-ex-commands* +tcl-examples if_tcl.txt /*tcl-examples* +tcl-expr if_tcl.txt /*tcl-expr* +tcl-linenumbers if_tcl.txt /*tcl-linenumbers* +tcl-misc if_tcl.txt /*tcl-misc* +tcl-option if_tcl.txt /*tcl-option* +tcl-output if_tcl.txt /*tcl-output* +tcl-var-current if_tcl.txt /*tcl-var-current* +tcl-var-lbase if_tcl.txt /*tcl-var-lbase* +tcl-var-line if_tcl.txt /*tcl-var-line* +tcl-var-lnum if_tcl.txt /*tcl-var-lnum* +tcl-var-range if_tcl.txt /*tcl-var-range* +tcl-variables if_tcl.txt /*tcl-variables* +tcl-window if_tcl.txt /*tcl-window* +tcl-window-buffer if_tcl.txt /*tcl-window-buffer* +tcl-window-cmds if_tcl.txt /*tcl-window-cmds* +tcl-window-command if_tcl.txt /*tcl-window-command* +tcl-window-cursor if_tcl.txt /*tcl-window-cursor* +tcl-window-delcmd if_tcl.txt /*tcl-window-delcmd* +tcl-window-expr if_tcl.txt /*tcl-window-expr* +tcl-window-height if_tcl.txt /*tcl-window-height* +tcl-window-option if_tcl.txt /*tcl-window-option* +tcsh-style cmdline.txt /*tcsh-style* +tcsh.vim syntax.txt /*tcsh.vim* +tear-off-menus gui.txt /*tear-off-menus* +telnet-CTRL-] tagsrch.txt /*telnet-CTRL-]* +temp-file-name builtin.txt /*temp-file-name* +tempfile change.txt /*tempfile* +template autocmd.txt /*template* +tempname() builtin.txt /*tempname()* +term++close terminal.txt /*term++close* +term++open terminal.txt /*term++open* +term-dependent-settings term.txt /*term-dependent-settings* +term-list syntax.txt /*term-list* +term.txt term.txt /*term.txt* +term_dumpdiff() terminal.txt /*term_dumpdiff()* +term_dumpload() terminal.txt /*term_dumpload()* +term_dumpwrite() terminal.txt /*term_dumpwrite()* +term_getaltscreen() terminal.txt /*term_getaltscreen()* +term_getansicolors() terminal.txt /*term_getansicolors()* +term_getattr() terminal.txt /*term_getattr()* +term_getcursor() terminal.txt /*term_getcursor()* +term_getjob() terminal.txt /*term_getjob()* +term_getline() terminal.txt /*term_getline()* +term_getscrolled() terminal.txt /*term_getscrolled()* +term_getsize() terminal.txt /*term_getsize()* +term_getstatus() terminal.txt /*term_getstatus()* +term_gettitle() terminal.txt /*term_gettitle()* +term_gettty() terminal.txt /*term_gettty()* +term_list() terminal.txt /*term_list()* +term_scrape() terminal.txt /*term_scrape()* +term_sendkeys() terminal.txt /*term_sendkeys()* +term_setansicolors() terminal.txt /*term_setansicolors()* +term_setapi() terminal.txt /*term_setapi()* +term_setkill() terminal.txt /*term_setkill()* +term_setrestore() terminal.txt /*term_setrestore()* +term_setsize() terminal.txt /*term_setsize()* +term_start() terminal.txt /*term_start()* +term_wait() terminal.txt /*term_wait()* +termcap term.txt /*termcap* +termcap-changed version4.txt /*termcap-changed* +termcap-colors term.txt /*termcap-colors* +termcap-cursor-color term.txt /*termcap-cursor-color* +termcap-cursor-shape term.txt /*termcap-cursor-shape* +termcap-options term.txt /*termcap-options* +termcap-title term.txt /*termcap-title* +termdebug-commands terminal.txt /*termdebug-commands* +termdebug-communication terminal.txt /*termdebug-communication* +termdebug-customizing terminal.txt /*termdebug-customizing* +termdebug-events terminal.txt /*termdebug-events* +termdebug-example terminal.txt /*termdebug-example* +termdebug-frames terminal.txt /*termdebug-frames* +termdebug-mappings terminal.txt /*termdebug-mappings* +termdebug-prompt terminal.txt /*termdebug-prompt* +termdebug-starting terminal.txt /*termdebug-starting* +termdebug-stepping terminal.txt /*termdebug-stepping* +termdebug-variables terminal.txt /*termdebug-variables* +termdebug_disasm_window terminal.txt /*termdebug_disasm_window* +termdebug_map_K terminal.txt /*termdebug_map_K* +termdebug_map_minus terminal.txt /*termdebug_map_minus* +termdebug_map_plus terminal.txt /*termdebug_map_plus* +termdebug_popup terminal.txt /*termdebug_popup* +termdebug_shortcuts terminal.txt /*termdebug_shortcuts* +termdebug_signs terminal.txt /*termdebug_signs* +termdebug_use_prompt terminal.txt /*termdebug_use_prompt* +termdebug_variables_window terminal.txt /*termdebug_variables_window* +termdebug_wide terminal.txt /*termdebug_wide* +termdebug_winbar terminal.txt /*termdebug_winbar* +terminal terminal.txt /*terminal* +terminal-api terminal.txt /*terminal-api* +terminal-autoshelldir terminal.txt /*terminal-autoshelldir* +terminal-client-server terminal.txt /*terminal-client-server* +terminal-close terminal.txt /*terminal-close* +terminal-colors os_unix.txt /*terminal-colors* +terminal-communication terminal.txt /*terminal-communication* +terminal-cursor-style terminal.txt /*terminal-cursor-style* +terminal-debug terminal.txt /*terminal-debug* +terminal-debugger terminal.txt /*terminal-debugger* +terminal-diff terminal.txt /*terminal-diff* +terminal-diffscreendump terminal.txt /*terminal-diffscreendump* +terminal-dumptest terminal.txt /*terminal-dumptest* +terminal-function-details terminal.txt /*terminal-function-details* +terminal-functions usr_41.txt /*terminal-functions* +terminal-info term.txt /*terminal-info* +terminal-job-index index.txt /*terminal-job-index* +terminal-key-codes term.txt /*terminal-key-codes* +terminal-mouse term.txt /*terminal-mouse* +terminal-ms-windows terminal.txt /*terminal-ms-windows* +terminal-options term.txt /*terminal-options* +terminal-output-codes term.txt /*terminal-output-codes* +terminal-resizing terminal.txt /*terminal-resizing* +terminal-screendump terminal.txt /*terminal-screendump* +terminal-session terminal.txt /*terminal-session* +terminal-size-color terminal.txt /*terminal-size-color* +terminal-special-keys terminal.txt /*terminal-special-keys* +terminal-testing terminal.txt /*terminal-testing* +terminal-to-job terminal.txt /*terminal-to-job* +terminal-typing terminal.txt /*terminal-typing* +terminal-unix terminal.txt /*terminal-unix* +terminal-use terminal.txt /*terminal-use* +terminal-window terminal.txt /*terminal-window* +terminal.txt terminal.txt /*terminal.txt* +terminalprops() builtin.txt /*terminalprops()* +terminfo term.txt /*terminfo* +termresponse-variable eval.txt /*termresponse-variable* +ternary eval.txt /*ternary* +test-functions usr_41.txt /*test-functions* +test-functions-details testing.txt /*test-functions-details* +test_alloc_fail() testing.txt /*test_alloc_fail()* +test_autochdir() testing.txt /*test_autochdir()* +test_feedinput() testing.txt /*test_feedinput()* +test_garbagecollect_now() testing.txt /*test_garbagecollect_now()* +test_garbagecollect_soon() testing.txt /*test_garbagecollect_soon()* +test_getvalue() testing.txt /*test_getvalue()* +test_gui_event() testing.txt /*test_gui_event()* +test_ignore_error() testing.txt /*test_ignore_error()* +test_mswin_event() testing.txt /*test_mswin_event()* +test_null_blob() testing.txt /*test_null_blob()* +test_null_channel() testing.txt /*test_null_channel()* +test_null_dict() testing.txt /*test_null_dict()* +test_null_function() testing.txt /*test_null_function()* +test_null_job() testing.txt /*test_null_job()* +test_null_list() testing.txt /*test_null_list()* +test_null_partial() testing.txt /*test_null_partial()* +test_null_string() testing.txt /*test_null_string()* +test_option_not_set() testing.txt /*test_option_not_set()* +test_override() testing.txt /*test_override()* +test_refcount() testing.txt /*test_refcount()* +test_setmouse() testing.txt /*test_setmouse()* +test_settime() testing.txt /*test_settime()* +test_srand_seed() testing.txt /*test_srand_seed()* +test_unknown() testing.txt /*test_unknown()* +test_void() testing.txt /*test_void()* +testing testing.txt /*testing* +testing-support testing.txt /*testing-support* +testing-variable eval.txt /*testing-variable* +testing.txt testing.txt /*testing.txt* +tex-cchar syntax.txt /*tex-cchar* +tex-cole syntax.txt /*tex-cole* +tex-conceal syntax.txt /*tex-conceal* +tex-error syntax.txt /*tex-error* +tex-folding syntax.txt /*tex-folding* +tex-matchcheck syntax.txt /*tex-matchcheck* +tex-math syntax.txt /*tex-math* +tex-morecommands syntax.txt /*tex-morecommands* +tex-nospell syntax.txt /*tex-nospell* +tex-package syntax.txt /*tex-package* +tex-runon syntax.txt /*tex-runon* +tex-slow syntax.txt /*tex-slow* +tex-stopzone syntax.txt /*tex-stopzone* +tex-style syntax.txt /*tex-style* +tex-supersub syntax.txt /*tex-supersub* +tex-sync syntax.txt /*tex-sync* +tex-verb syntax.txt /*tex-verb* +tex.vim syntax.txt /*tex.vim* +text-functions usr_41.txt /*text-functions* +text-objects motion.txt /*text-objects* +text-objects-changed version5.txt /*text-objects-changed* +text-prop-changes textprop.txt /*text-prop-changes* +text-prop-functions textprop.txt /*text-prop-functions* +text-prop-intro textprop.txt /*text-prop-intro* +text-properties textprop.txt /*text-properties* +text-property-functions usr_41.txt /*text-property-functions* +textlock eval.txt /*textlock* +textprop textprop.txt /*textprop* +textprop.txt textprop.txt /*textprop.txt* +tf.vim syntax.txt /*tf.vim* +this_session-variable eval.txt /*this_session-variable* +throw-catch eval.txt /*throw-catch* +throw-expression eval.txt /*throw-expression* +throw-from-catch eval.txt /*throw-from-catch* +throw-variables eval.txt /*throw-variables* +throwpoint-variable eval.txt /*throwpoint-variable* +time-functions usr_41.txt /*time-functions* +timer builtin.txt /*timer* +timer-functions usr_41.txt /*timer-functions* +timer_info() builtin.txt /*timer_info()* +timer_pause() builtin.txt /*timer_pause()* +timer_start() builtin.txt /*timer_start()* +timer_stop() builtin.txt /*timer_stop()* +timer_stopall() builtin.txt /*timer_stopall()* +timers builtin.txt /*timers* +timestamp editing.txt /*timestamp* +timestamps editing.txt /*timestamps* +tips tips.txt /*tips* +tips.txt tips.txt /*tips.txt* +tmux syntax.txt /*tmux* +tmux-integration term.txt /*tmux-integration* +todo todo.txt /*todo* +todo.txt todo.txt /*todo.txt* +toggle options.txt /*toggle* +toggle-revins version4.txt /*toggle-revins* +tolower() builtin.txt /*tolower()* +toolbar-icon gui.txt /*toolbar-icon* +tooltips gui.txt /*tooltips* +toupper() builtin.txt /*toupper()* +tr() builtin.txt /*tr()* +trim() builtin.txt /*trim()* +trojan-horse starting.txt /*trojan-horse* +true vim9.txt /*true* +true-variable eval.txt /*true-variable* +trunc() builtin.txt /*trunc()* +truthy eval.txt /*truthy* +try-conditionals eval.txt /*try-conditionals* +try-echoerr eval.txt /*try-echoerr* +try-finally eval.txt /*try-finally* +try-nested eval.txt /*try-nested* +try-nesting eval.txt /*try-nesting* +tutor usr_01.txt /*tutor* +two-engines pattern.txt /*two-engines* +type() builtin.txt /*type()* +type-casting vim9.txt /*type-casting* +type-checking vim9.txt /*type-checking* +type-inference vim9.txt /*type-inference* +type-mistakes tips.txt /*type-mistakes* +typealias vim9class.txt /*typealias* +typename() builtin.txt /*typename()* +u undo.txt /*u* +uganda uganda.txt /*uganda* +uganda.txt uganda.txt /*uganda.txt* +undercurl syntax.txt /*undercurl* +underdashed syntax.txt /*underdashed* +underdotted syntax.txt /*underdotted* +underdouble syntax.txt /*underdouble* +underline syntax.txt /*underline* +underline-codes syntax.txt /*underline-codes* +undo undo.txt /*undo* +undo-blocks undo.txt /*undo-blocks* +undo-branches undo.txt /*undo-branches* +undo-break undo.txt /*undo-break* +undo-close-block undo.txt /*undo-close-block* +undo-commands undo.txt /*undo-commands* +undo-persistence undo.txt /*undo-persistence* +undo-redo undo.txt /*undo-redo* +undo-remarks undo.txt /*undo-remarks* +undo-tree undo.txt /*undo-tree* +undo-two-ways undo.txt /*undo-two-ways* +undo.txt undo.txt /*undo.txt* +undo_ftplugin usr_51.txt /*undo_ftplugin* +undo_indent usr_51.txt /*undo_indent* +undofile() builtin.txt /*undofile()* +undotree() builtin.txt /*undotree()* +unicode mbyte.txt /*unicode* +uniq() builtin.txt /*uniq()* +unix os_unix.txt /*unix* +unlisted-buffer windows.txt /*unlisted-buffer* +up-down-motions motion.txt /*up-down-motions* +uppercase change.txt /*uppercase* +urxvt-mouse options.txt /*urxvt-mouse* +use-visual-cmds version4.txt /*use-visual-cmds* +useful-mappings tips.txt /*useful-mappings* +usenet intro.txt /*usenet* +user-cmd-ambiguous map.txt /*user-cmd-ambiguous* +user-commands map.txt /*user-commands* +user-functions eval.txt /*user-functions* +user-manual usr_toc.txt /*user-manual* +userfunc.txt userfunc.txt /*userfunc.txt* +using-<Plug> usr_51.txt /*using-<Plug>* +using-menus gui.txt /*using-menus* +using-scripts repeat.txt /*using-scripts* +using-xxd tips.txt /*using-xxd* +using_CTRL-V map.txt /*using_CTRL-V* +usr_01.txt usr_01.txt /*usr_01.txt* +usr_02.txt usr_02.txt /*usr_02.txt* +usr_03.txt usr_03.txt /*usr_03.txt* +usr_04.txt usr_04.txt /*usr_04.txt* +usr_05.txt usr_05.txt /*usr_05.txt* +usr_06.txt usr_06.txt /*usr_06.txt* +usr_07.txt usr_07.txt /*usr_07.txt* +usr_08.txt usr_08.txt /*usr_08.txt* +usr_09.txt usr_09.txt /*usr_09.txt* +usr_10.txt usr_10.txt /*usr_10.txt* +usr_11.txt usr_11.txt /*usr_11.txt* +usr_12.txt usr_12.txt /*usr_12.txt* +usr_20.txt usr_20.txt /*usr_20.txt* +usr_21.txt usr_21.txt /*usr_21.txt* +usr_22.txt usr_22.txt /*usr_22.txt* +usr_23.txt usr_23.txt /*usr_23.txt* +usr_24.txt usr_24.txt /*usr_24.txt* +usr_25.txt usr_25.txt /*usr_25.txt* +usr_26.txt usr_26.txt /*usr_26.txt* +usr_27.txt usr_27.txt /*usr_27.txt* +usr_28.txt usr_28.txt /*usr_28.txt* +usr_29.txt usr_29.txt /*usr_29.txt* +usr_30.txt usr_30.txt /*usr_30.txt* +usr_31.txt usr_31.txt /*usr_31.txt* +usr_32.txt usr_32.txt /*usr_32.txt* +usr_40.txt usr_40.txt /*usr_40.txt* +usr_41.txt usr_41.txt /*usr_41.txt* +usr_42.txt usr_42.txt /*usr_42.txt* +usr_43.txt usr_43.txt /*usr_43.txt* +usr_44.txt usr_44.txt /*usr_44.txt* +usr_45.txt usr_45.txt /*usr_45.txt* +usr_50.txt usr_50.txt /*usr_50.txt* +usr_51.txt usr_51.txt /*usr_51.txt* +usr_52.txt usr_52.txt /*usr_52.txt* +usr_90.txt usr_90.txt /*usr_90.txt* +usr_toc.txt usr_toc.txt /*usr_toc.txt* +utf-8 mbyte.txt /*utf-8* +utf-8-char-arg mbyte.txt /*utf-8-char-arg* +utf-8-in-xwindows mbyte.txt /*utf-8-in-xwindows* +utf-8-typing mbyte.txt /*utf-8-typing* +utf16idx() builtin.txt /*utf16idx()* +utf8 mbyte.txt /*utf8* +v visual.txt /*v* +v: eval.txt /*v:* +v:argv eval.txt /*v:argv* +v:beval_bufnr eval.txt /*v:beval_bufnr* +v:beval_col eval.txt /*v:beval_col* +v:beval_lnum eval.txt /*v:beval_lnum* +v:beval_text eval.txt /*v:beval_text* +v:beval_winid eval.txt /*v:beval_winid* +v:beval_winnr eval.txt /*v:beval_winnr* +v:char eval.txt /*v:char* +v:charconvert_from eval.txt /*v:charconvert_from* +v:charconvert_to eval.txt /*v:charconvert_to* +v:cmdarg eval.txt /*v:cmdarg* +v:cmdbang eval.txt /*v:cmdbang* +v:collate eval.txt /*v:collate* +v:colornames eval.txt /*v:colornames* +v:completed_item eval.txt /*v:completed_item* +v:count eval.txt /*v:count* +v:count1 eval.txt /*v:count1* +v:ctype eval.txt /*v:ctype* +v:dying eval.txt /*v:dying* +v:echospace eval.txt /*v:echospace* +v:errmsg eval.txt /*v:errmsg* +v:errors eval.txt /*v:errors* +v:event eval.txt /*v:event* +v:exception eval.txt /*v:exception* +v:exiting eval.txt /*v:exiting* +v:false eval.txt /*v:false* +v:fcs_choice eval.txt /*v:fcs_choice* +v:fcs_reason eval.txt /*v:fcs_reason* +v:fname eval.txt /*v:fname* +v:fname_diff eval.txt /*v:fname_diff* +v:fname_in eval.txt /*v:fname_in* +v:fname_new eval.txt /*v:fname_new* +v:fname_out eval.txt /*v:fname_out* +v:folddashes eval.txt /*v:folddashes* +v:foldend eval.txt /*v:foldend* +v:foldlevel eval.txt /*v:foldlevel* +v:foldstart eval.txt /*v:foldstart* +v:hlsearch eval.txt /*v:hlsearch* +v:insertmode eval.txt /*v:insertmode* +v:key eval.txt /*v:key* +v:lang eval.txt /*v:lang* +v:lc_time eval.txt /*v:lc_time* +v:lnum eval.txt /*v:lnum* +v:maxcol eval.txt /*v:maxcol* +v:mouse_col eval.txt /*v:mouse_col* +v:mouse_lnum eval.txt /*v:mouse_lnum* +v:mouse_win eval.txt /*v:mouse_win* +v:mouse_winid eval.txt /*v:mouse_winid* +v:none eval.txt /*v:none* +v:null eval.txt /*v:null* +v:numbermax eval.txt /*v:numbermax* +v:numbermin eval.txt /*v:numbermin* +v:numbersize eval.txt /*v:numbersize* +v:oldfiles eval.txt /*v:oldfiles* +v:operator eval.txt /*v:operator* +v:option_command eval.txt /*v:option_command* +v:option_new eval.txt /*v:option_new* +v:option_old eval.txt /*v:option_old* +v:option_oldglobal eval.txt /*v:option_oldglobal* +v:option_oldlocal eval.txt /*v:option_oldlocal* +v:option_type eval.txt /*v:option_type* +v:prevcount eval.txt /*v:prevcount* +v:profiling eval.txt /*v:profiling* +v:progname eval.txt /*v:progname* +v:progpath eval.txt /*v:progpath* +v:python3_version eval.txt /*v:python3_version* +v:register eval.txt /*v:register* +v:scrollstart eval.txt /*v:scrollstart* +v:searchforward eval.txt /*v:searchforward* +v:servername eval.txt /*v:servername* +v:shell_error eval.txt /*v:shell_error* +v:sizeofint eval.txt /*v:sizeofint* +v:sizeoflong eval.txt /*v:sizeoflong* +v:sizeofpointer eval.txt /*v:sizeofpointer* +v:statusmsg eval.txt /*v:statusmsg* +v:swapchoice eval.txt /*v:swapchoice* +v:swapcommand eval.txt /*v:swapcommand* +v:swapname eval.txt /*v:swapname* +v:t_TYPE eval.txt /*v:t_TYPE* +v:t_blob eval.txt /*v:t_blob* +v:t_bool eval.txt /*v:t_bool* +v:t_channel eval.txt /*v:t_channel* +v:t_class eval.txt /*v:t_class* +v:t_dict eval.txt /*v:t_dict* +v:t_float eval.txt /*v:t_float* +v:t_func eval.txt /*v:t_func* +v:t_job eval.txt /*v:t_job* +v:t_list eval.txt /*v:t_list* +v:t_none eval.txt /*v:t_none* +v:t_number eval.txt /*v:t_number* +v:t_object eval.txt /*v:t_object* +v:t_string eval.txt /*v:t_string* +v:t_typealias eval.txt /*v:t_typealias* +v:termblinkresp eval.txt /*v:termblinkresp* +v:termrbgresp eval.txt /*v:termrbgresp* +v:termresponse eval.txt /*v:termresponse* +v:termrfgresp eval.txt /*v:termrfgresp* +v:termstyleresp eval.txt /*v:termstyleresp* +v:termu7resp eval.txt /*v:termu7resp* +v:testing eval.txt /*v:testing* +v:this_session eval.txt /*v:this_session* +v:throwpoint eval.txt /*v:throwpoint* +v:true eval.txt /*v:true* +v:val eval.txt /*v:val* +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:warningmsg eval.txt /*v:warningmsg* +v:windowid eval.txt /*v:windowid* +v_! change.txt /*v_!* +v_$ visual.txt /*v_$* +v_: cmdline.txt /*v_:* +v_< change.txt /*v_<* +v_<BS> change.txt /*v_<BS>* +v_<Del> change.txt /*v_<Del>* +v_<Esc> visual.txt /*v_<Esc>* +v_= change.txt /*v_=* +v_> change.txt /*v_>* +v_C change.txt /*v_C* +v_CTRL-A change.txt /*v_CTRL-A* +v_CTRL-C visual.txt /*v_CTRL-C* +v_CTRL-G visual.txt /*v_CTRL-G* +v_CTRL-H change.txt /*v_CTRL-H* +v_CTRL-O visual.txt /*v_CTRL-O* +v_CTRL-R visual.txt /*v_CTRL-R* +v_CTRL-V visual.txt /*v_CTRL-V* +v_CTRL-X change.txt /*v_CTRL-X* +v_CTRL-Z starting.txt /*v_CTRL-Z* +v_CTRL-\_CTRL-G intro.txt /*v_CTRL-\\_CTRL-G* +v_CTRL-\_CTRL-N intro.txt /*v_CTRL-\\_CTRL-N* +v_CTRL-] tagsrch.txt /*v_CTRL-]* +v_D change.txt /*v_D* +v_J change.txt /*v_J* +v_K various.txt /*v_K* +v_O visual.txt /*v_O* +v_P change.txt /*v_P* +v_R change.txt /*v_R* +v_S change.txt /*v_S* +v_U change.txt /*v_U* +v_V visual.txt /*v_V* +v_X change.txt /*v_X* +v_Y change.txt /*v_Y* +v_a motion.txt /*v_a* +v_a' motion.txt /*v_a'* +v_a( motion.txt /*v_a(* +v_a) motion.txt /*v_a)* +v_a< motion.txt /*v_a<* +v_a> motion.txt /*v_a>* +v_aB motion.txt /*v_aB* +v_aW motion.txt /*v_aW* +v_a[ motion.txt /*v_a[* +v_a] motion.txt /*v_a]* +v_a` motion.txt /*v_a`* +v_ab motion.txt /*v_ab* +v_ap motion.txt /*v_ap* +v_aquote motion.txt /*v_aquote* +v_as motion.txt /*v_as* +v_at motion.txt /*v_at* +v_aw motion.txt /*v_aw* +v_a{ motion.txt /*v_a{* +v_a} motion.txt /*v_a}* +v_b_< visual.txt /*v_b_<* +v_b_<_example visual.txt /*v_b_<_example* +v_b_> visual.txt /*v_b_>* +v_b_>_example visual.txt /*v_b_>_example* +v_b_A visual.txt /*v_b_A* +v_b_A_example visual.txt /*v_b_A_example* +v_b_C visual.txt /*v_b_C* +v_b_D change.txt /*v_b_D* +v_b_I visual.txt /*v_b_I* +v_b_I_example visual.txt /*v_b_I_example* +v_b_c visual.txt /*v_b_c* +v_b_r visual.txt /*v_b_r* +v_b_r_example visual.txt /*v_b_r_example* +v_c change.txt /*v_c* +v_d change.txt /*v_d* +v_g? change.txt /*v_g?* +v_gF editing.txt /*v_gF* +v_gJ change.txt /*v_gJ* +v_gN visual.txt /*v_gN* +v_gV visual.txt /*v_gV* +v_g] tagsrch.txt /*v_g]* +v_g_CTRL-A change.txt /*v_g_CTRL-A* +v_g_CTRL-G editing.txt /*v_g_CTRL-G* +v_g_CTRL-X change.txt /*v_g_CTRL-X* +v_g_CTRL-] tagsrch.txt /*v_g_CTRL-]* +v_gf editing.txt /*v_gf* +v_gn visual.txt /*v_gn* +v_gq change.txt /*v_gq* +v_gv visual.txt /*v_gv* +v_gw change.txt /*v_gw* +v_i motion.txt /*v_i* +v_i' motion.txt /*v_i'* +v_i( motion.txt /*v_i(* +v_i) motion.txt /*v_i)* +v_i< motion.txt /*v_i<* +v_i> motion.txt /*v_i>* +v_iB motion.txt /*v_iB* +v_iW motion.txt /*v_iW* +v_i[ motion.txt /*v_i[* +v_i] motion.txt /*v_i]* +v_i` motion.txt /*v_i`* +v_ib motion.txt /*v_ib* +v_ip motion.txt /*v_ip* +v_iquote motion.txt /*v_iquote* +v_is motion.txt /*v_is* +v_it motion.txt /*v_it* +v_iw motion.txt /*v_iw* +v_i{ motion.txt /*v_i{* +v_i} motion.txt /*v_i}* +v_o visual.txt /*v_o* +v_object-select motion.txt /*v_object-select* +v_p change.txt /*v_p* +v_r change.txt /*v_r* +v_s change.txt /*v_s* +v_u change.txt /*v_u* +v_v visual.txt /*v_v* +v_x change.txt /*v_x* +v_y change.txt /*v_y* +v_zy change.txt /*v_zy* +v_~ change.txt /*v_~* +vab motion.txt /*vab* +val-variable eval.txt /*val-variable* +valgrind debug.txt /*valgrind* +values() builtin.txt /*values()* +var-functions usr_41.txt /*var-functions* +variable-categories vim9.txt /*variable-categories* +variable-scope eval.txt /*variable-scope* +variable-types vim9.txt /*variable-types* +variables eval.txt /*variables* +various various.txt /*various* +various-cmds various.txt /*various-cmds* +various-functions usr_41.txt /*various-functions* +various-motions motion.txt /*various-motions* +various.txt various.txt /*various.txt* +vb.vim syntax.txt /*vb.vim* +vba pi_vimball.txt /*vba* +verbose starting.txt /*verbose* +version-5.1 version5.txt /*version-5.1* +version-5.2 version5.txt /*version-5.2* +version-5.3 version5.txt /*version-5.3* +version-5.4 version5.txt /*version-5.4* +version-5.5 version5.txt /*version-5.5* +version-5.6 version5.txt /*version-5.6* +version-5.7 version5.txt /*version-5.7* +version-5.8 version5.txt /*version-5.8* +version-6.1 version6.txt /*version-6.1* +version-6.2 version6.txt /*version-6.2* +version-6.3 version6.txt /*version-6.3* +version-6.4 version6.txt /*version-6.4* +version-7.0 version7.txt /*version-7.0* +version-7.1 version7.txt /*version-7.1* +version-7.2 version7.txt /*version-7.2* +version-7.3 version7.txt /*version-7.3* +version-7.4 version7.txt /*version-7.4* +version-8.0 version8.txt /*version-8.0* +version-8.1 version8.txt /*version-8.1* +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-variable eval.txt /*version-variable* +version4.txt version4.txt /*version4.txt* +version5.txt version5.txt /*version5.txt* +version6.txt version6.txt /*version6.txt* +version7.0 version7.txt /*version7.0* +version7.1 version7.txt /*version7.1* +version7.2 version7.txt /*version7.2* +version7.3 version7.txt /*version7.3* +version7.4 version7.txt /*version7.4* +version7.txt version7.txt /*version7.txt* +version8.0 version8.txt /*version8.0* +version8.1 version8.txt /*version8.1* +version8.2 version8.txt /*version8.2* +version8.txt version8.txt /*version8.txt* +version9.0 version9.txt /*version9.0* +version9.1 version9.txt /*version9.1* +version9.txt version9.txt /*version9.txt* +versionlong-variable eval.txt /*versionlong-variable* +vi intro.txt /*vi* +vi-differences vi_diff.txt /*vi-differences* +vi-features vi_diff.txt /*vi-features* +vi: options.txt /*vi:* +vi_diff.txt vi_diff.txt /*vi_diff.txt* +vib motion.txt /*vib* +view starting.txt /*view* +view-diffs diff.txt /*view-diffs* +view-file starting.txt /*view-file* +views-sessions starting.txt /*views-sessions* +vim-7.4 version7.txt /*vim-7.4* +vim-8 version8.txt /*vim-8* +vim-8.1 version8.txt /*vim-8.1* +vim-8.2 version8.txt /*vim-8.2* +vim-9 version9.txt /*vim-9* +vim-9.0 version9.txt /*vim-9.0* +vim-9.1 version9.txt /*vim-9.1* +vim-additions vi_diff.txt /*vim-additions* +vim-announce intro.txt /*vim-announce* +vim-arguments starting.txt /*vim-arguments* +vim-changelog version8.txt /*vim-changelog* +vim-default-editor gui_w32.txt /*vim-default-editor* +vim-dev intro.txt /*vim-dev* +vim-mac intro.txt /*vim-mac* +vim-modes intro.txt /*vim-modes* +vim-modes-intro intro.txt /*vim-modes-intro* +vim-raku ft_raku.txt /*vim-raku* +vim-script-intro usr_41.txt /*vim-script-intro* +vim-script-library eval.txt /*vim-script-library* +vim-security intro.txt /*vim-security* +vim-use intro.txt /*vim-use* +vim-variable eval.txt /*vim-variable* +vim.b if_lua.txt /*vim.b* +vim.g if_lua.txt /*vim.g* +vim.t if_lua.txt /*vim.t* +vim.v if_lua.txt /*vim.v* +vim.vim syntax.txt /*vim.vim* +vim.w if_lua.txt /*vim.w* +vim7 version7.txt /*vim7* +vim8 version8.txt /*vim8* +vim9 vim9.txt /*vim9* +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-classes vim9.txt /*vim9-classes* +vim9-const vim9.txt /*vim9-const* +vim9-curly vim9.txt /*vim9-curly* +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-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-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-lambda vim9.txt /*vim9-lambda* +vim9-lambda-arguments vim9.txt /*vim9-lambda-arguments* +vim9-line-continuation vim9.txt /*vim9-line-continuation* +vim9-literal-dict vim9.txt /*vim9-literal-dict* +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-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-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.txt vim9.txt /*vim9.txt* +vim9class.txt vim9class.txt /*vim9class.txt* +vim9script vim9.txt /*vim9script* +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_mac intro.txt /*vim_mac* +vim_starting builtin.txt /*vim_starting* +vim_use intro.txt /*vim_use* +vimball pi_vimball.txt /*vimball* +vimball-contents pi_vimball.txt /*vimball-contents* +vimball-extract pi_vimball.txt /*vimball-extract* +vimball-history pi_vimball.txt /*vimball-history* +vimball-intro pi_vimball.txt /*vimball-intro* +vimball-manual pi_vimball.txt /*vimball-manual* +vimball-windows pi_vimball.txt /*vimball-windows* +vimdev intro.txt /*vimdev* +vimdiff diff.txt /*vimdiff* +vimfiles options.txt /*vimfiles* +viminfo starting.txt /*viminfo* +viminfo-! options.txt /*viminfo-!* +viminfo-% options.txt /*viminfo-%* +viminfo-' options.txt /*viminfo-'* +viminfo-/ options.txt /*viminfo-\/* +viminfo-: options.txt /*viminfo-:* +viminfo-< options.txt /*viminfo-<* +viminfo-@ options.txt /*viminfo-@* +viminfo-c options.txt /*viminfo-c* +viminfo-encoding starting.txt /*viminfo-encoding* +viminfo-errors starting.txt /*viminfo-errors* +viminfo-f options.txt /*viminfo-f* +viminfo-file starting.txt /*viminfo-file* +viminfo-file-marks starting.txt /*viminfo-file-marks* +viminfo-file-name starting.txt /*viminfo-file-name* +viminfo-h options.txt /*viminfo-h* +viminfo-n options.txt /*viminfo-n* +viminfo-quote options.txt /*viminfo-quote* +viminfo-r options.txt /*viminfo-r* +viminfo-read starting.txt /*viminfo-read* +viminfo-read-write starting.txt /*viminfo-read-write* +viminfo-s options.txt /*viminfo-s* +viminfo-timestamp starting.txt /*viminfo-timestamp* +viminfo-write starting.txt /*viminfo-write* +vimrc starting.txt /*vimrc* +vimrc-filetype usr_05.txt /*vimrc-filetype* +vimrc-intro usr_05.txt /*vimrc-intro* +vimrc-option-example starting.txt /*vimrc-option-example* +vimrc_example.vim usr_05.txt /*vimrc_example.vim* +vimscript-version eval.txt /*vimscript-version* +vimscript-versions eval.txt /*vimscript-versions* +vimtutor usr_01.txt /*vimtutor* +virtcol() builtin.txt /*virtcol()* +virtcol2col() builtin.txt /*virtcol2col()* +virtual-text textprop.txt /*virtual-text* +visual-block visual.txt /*visual-block* +visual-change visual.txt /*visual-change* +visual-examples visual.txt /*visual-examples* +visual-index index.txt /*visual-index* +visual-mode visual.txt /*visual-mode* +visual-operators visual.txt /*visual-operators* +visual-repeat visual.txt /*visual-repeat* +visual-search visual.txt /*visual-search* +visual-start visual.txt /*visual-start* +visual-use visual.txt /*visual-use* +visual.txt visual.txt /*visual.txt* +visualmode() builtin.txt /*visualmode()* +vms os_vms.txt /*vms* +vms-authors os_vms.txt /*vms-authors* +vms-changes os_vms.txt /*vms-changes* +vms-compiling os_vms.txt /*vms-compiling* +vms-deploy os_vms.txt /*vms-deploy* +vms-download os_vms.txt /*vms-download* +vms-gui os_vms.txt /*vms-gui* +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-counted sponsor.txt /*votes-counted* +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* +w motion.txt /*w* +w32-clientserver remote.txt /*w32-clientserver* +w32-xpm-support gui_w32.txt /*w32-xpm-support* +w: eval.txt /*w:* +w:current_syntax syntax.txt /*w:current_syntax* +w:quickfix_title quickfix.txt /*w:quickfix_title* +w:var eval.txt /*w:var* +waittime channel.txt /*waittime* +warningmsg-variable eval.txt /*warningmsg-variable* +wdl-syntax syntax.txt /*wdl-syntax* +wdl.vim syntax.txt /*wdl.vim* +white-space pattern.txt /*white-space* +whitespace pattern.txt /*whitespace* +wildcard editing.txt /*wildcard* +wildcards editing.txt /*wildcards* +wildmenumode() builtin.txt /*wildmenumode()* +win-scrolled-resized windows.txt /*win-scrolled-resized* +win16 os_win32.txt /*win16* +win32 os_win32.txt /*win32* +win32-!start gui_w32.txt /*win32-!start* +win32-PATH os_win32.txt /*win32-PATH* +win32-backslashes os_win32.txt /*win32-backslashes* +win32-cmdargs os_win32.txt /*win32-cmdargs* +win32-colors gui_w32.txt /*win32-colors* +win32-compiling os_win32.txt /*win32-compiling* +win32-curdir os_win32.txt /*win32-curdir* +win32-faq os_win32.txt /*win32-faq* +win32-gettext mlang.txt /*win32-gettext* +win32-gui gui_w32.txt /*win32-gui* +win32-hidden-menus gui.txt /*win32-hidden-menus* +win32-installer os_win32.txt /*win32-installer* +win32-mouse os_win32.txt /*win32-mouse* +win32-open-with-menu gui_w32.txt /*win32-open-with-menu* +win32-popup-menu gui_w32.txt /*win32-popup-menu* +win32-problems os_win32.txt /*win32-problems* +win32-quotes os_win32.txt /*win32-quotes* +win32-restore os_win32.txt /*win32-restore* +win32-startup os_win32.txt /*win32-startup* +win32-term os_win32.txt /*win32-term* +win32-vimrun gui_w32.txt /*win32-vimrun* +win32-win3.1 os_win32.txt /*win32-win3.1* +win32-win95 os_win32.txt /*win32-win95* +win32s os_win32.txt /*win32s* +win_execute() builtin.txt /*win_execute()* +win_findbuf() builtin.txt /*win_findbuf()* +win_getid() builtin.txt /*win_getid()* +win_gettype() builtin.txt /*win_gettype()* +win_gotoid() builtin.txt /*win_gotoid()* +win_id2tabwin() builtin.txt /*win_id2tabwin()* +win_id2win() builtin.txt /*win_id2win()* +win_move_separator() builtin.txt /*win_move_separator()* +win_move_statusline() builtin.txt /*win_move_statusline()* +win_screenpos() builtin.txt /*win_screenpos()* +win_splitmove() builtin.txt /*win_splitmove()* +winbufnr() builtin.txt /*winbufnr()* +wincol() builtin.txt /*wincol()* +window windows.txt /*window* +window-ID windows.txt /*window-ID* +window-contents intro.txt /*window-contents* +window-exit editing.txt /*window-exit* +window-functions usr_41.txt /*window-functions* +window-move-cursor windows.txt /*window-move-cursor* +window-moving windows.txt /*window-moving* +window-resize windows.txt /*window-resize* +window-size term.txt /*window-size* +window-size-functions usr_41.txt /*window-size-functions* +window-tag windows.txt /*window-tag* +window-toolbar gui.txt /*window-toolbar* +window-variable eval.txt /*window-variable* +windowid windows.txt /*windowid* +windowid-variable eval.txt /*windowid-variable* +windows windows.txt /*windows* +windows-3.1 os_win32.txt /*windows-3.1* +windows-asynchronously os_win32.txt /*windows-asynchronously* +windows-icon os_win32.txt /*windows-icon* +windows-intro windows.txt /*windows-intro* +windows-starting windows.txt /*windows-starting* +windows.txt windows.txt /*windows.txt* +windows95 os_win32.txt /*windows95* +windows98 os_win32.txt /*windows98* +windowsme os_win32.txt /*windowsme* +windowsversion() builtin.txt /*windowsversion()* +winheight() builtin.txt /*winheight()* +winid windows.txt /*winid* +winlayout() builtin.txt /*winlayout()* +winline() builtin.txt /*winline()* +winnr() builtin.txt /*winnr()* +winrestcmd() builtin.txt /*winrestcmd()* +winrestview() builtin.txt /*winrestview()* +winsaveview() builtin.txt /*winsaveview()* +winwidth() builtin.txt /*winwidth()* +word motion.txt /*word* +word-count editing.txt /*word-count* +word-motions motion.txt /*word-motions* +wordcount() builtin.txt /*wordcount()* +workbench starting.txt /*workbench* +workshop workshop.txt /*workshop* +workshop-support workshop.txt /*workshop-support* +workshop.txt workshop.txt /*workshop.txt* +wrap-off intro.txt /*wrap-off* +write-compiler-plugin usr_51.txt /*write-compiler-plugin* +write-device editing.txt /*write-device* +write-fail editing.txt /*write-fail* +write-filetype-plugin usr_51.txt /*write-filetype-plugin* +write-library-script usr_52.txt /*write-library-script* +write-local-help usr_51.txt /*write-local-help* +write-permissions editing.txt /*write-permissions* +write-plugin usr_51.txt /*write-plugin* +write-plugin-quickload usr_52.txt /*write-plugin-quickload* +write-quit editing.txt /*write-quit* +write-readonly editing.txt /*write-readonly* +writefile() builtin.txt /*writefile()* +writing editing.txt /*writing* +www intro.txt /*www* +x change.txt /*x* +x-input-method mbyte.txt /*x-input-method* +x-resources version5.txt /*x-resources* +x11-clientserver remote.txt /*x11-clientserver* +x11-cut-buffer gui_x11.txt /*x11-cut-buffer* +x11-selection gui_x11.txt /*x11-selection* +xattr editing.txt /*xattr* +xf86conf.vim syntax.txt /*xf86conf.vim* +xfontset mbyte.txt /*xfontset* +xfree-xterm syntax.txt /*xfree-xterm* +xim mbyte.txt /*xim* +xim-input-style mbyte.txt /*xim-input-style* +xiterm syntax.txt /*xiterm* +xml-folding syntax.txt /*xml-folding* +xml-omni-datafile insert.txt /*xml-omni-datafile* +xml.vim syntax.txt /*xml.vim* +xor() builtin.txt /*xor()* +xpm.vim syntax.txt /*xpm.vim* +xterm-8-bit term.txt /*xterm-8-bit* +xterm-8bit term.txt /*xterm-8bit* +xterm-blink syntax.txt /*xterm-blink* +xterm-blinking-cursor syntax.txt /*xterm-blinking-cursor* +xterm-bracketed-paste term.txt /*xterm-bracketed-paste* +xterm-clipboard term.txt /*xterm-clipboard* +xterm-codes term.txt /*xterm-codes* +xterm-color syntax.txt /*xterm-color* +xterm-command-server term.txt /*xterm-command-server* +xterm-copy-paste term.txt /*xterm-copy-paste* +xterm-cursor-keys term.txt /*xterm-cursor-keys* +xterm-end-home-keys term.txt /*xterm-end-home-keys* +xterm-focus-event term.txt /*xterm-focus-event* +xterm-function-keys term.txt /*xterm-function-keys* +xterm-kitty term.txt /*xterm-kitty* +xterm-modifier-keys term.txt /*xterm-modifier-keys* +xterm-mouse options.txt /*xterm-mouse* +xterm-mouse-wheel scroll.txt /*xterm-mouse-wheel* +xterm-resize term.txt /*xterm-resize* +xterm-save-screen tips.txt /*xterm-save-screen* +xterm-screens tips.txt /*xterm-screens* +xterm-scroll-region term.txt /*xterm-scroll-region* +xterm-shifted-keys term.txt /*xterm-shifted-keys* +xterm-terminfo-entries term.txt /*xterm-terminfo-entries* +xterm-true-color term.txt /*xterm-true-color* +y change.txt /*y* +yaml.vim syntax.txt /*yaml.vim* +yank change.txt /*yank* +ye-option-gone version4.txt /*ye-option-gone* +year-2000 intro.txt /*year-2000* +your-runtime-dir usr_43.txt /*your-runtime-dir* +yy change.txt /*yy* +z index.txt /*z* +z+ scroll.txt /*z+* +z- scroll.txt /*z-* +z. scroll.txt /*z.* +z/OS os_390.txt /*z\/OS* +z<CR> scroll.txt /*z<CR>* +z<Left> scroll.txt /*z<Left>* +z<Right> scroll.txt /*z<Right>* +z= spell.txt /*z=* +zA fold.txt /*zA* +zC fold.txt /*zC* +zD fold.txt /*zD* +zE fold.txt /*zE* +zF fold.txt /*zF* +zG spell.txt /*zG* +zH scroll.txt /*zH* +zL scroll.txt /*zL* +zM fold.txt /*zM* +zN fold.txt /*zN* +zN<CR> scroll.txt /*zN<CR>* +zO fold.txt /*zO* +zOS os_390.txt /*zOS* +zOS-Bugs os_390.txt /*zOS-Bugs* +zOS-Motif os_390.txt /*zOS-Motif* +zOS-PuTTY os_390.txt /*zOS-PuTTY* +zOS-has-ebcdic os_390.txt /*zOS-has-ebcdic* +zOS-limitations os_390.txt /*zOS-limitations* +zOS-open-source os_390.txt /*zOS-open-source* +zP change.txt /*zP* +zR fold.txt /*zR* +zW spell.txt /*zW* +zX fold.txt /*zX* +z^ scroll.txt /*z^* +za fold.txt /*za* +zb scroll.txt /*zb* +zc fold.txt /*zc* +zd fold.txt /*zd* +ze scroll.txt /*ze* +zf fold.txt /*zf* +zg spell.txt /*zg* +zh scroll.txt /*zh* +zi fold.txt /*zi* +zip pi_zip.txt /*zip* +zip-contents pi_zip.txt /*zip-contents* +zip-copyright pi_zip.txt /*zip-copyright* +zip-extension pi_zip.txt /*zip-extension* +zip-history pi_zip.txt /*zip-history* +zip-manual pi_zip.txt /*zip-manual* +zip-usage pi_zip.txt /*zip-usage* +zip-x pi_zip.txt /*zip-x* +zj fold.txt /*zj* +zk fold.txt /*zk* +zl scroll.txt /*zl* +zm fold.txt /*zm* +zn fold.txt /*zn* +zo fold.txt /*zo* +zp change.txt /*zp* +zr fold.txt /*zr* +zs scroll.txt /*zs* +zsh.vim syntax.txt /*zsh.vim* +zt scroll.txt /*zt* +zuG spell.txt /*zuG* +zuW spell.txt /*zuW* +zug spell.txt /*zug* +zuw spell.txt /*zuw* +zv fold.txt /*zv* +zw spell.txt /*zw* +zx fold.txt /*zx* +zy change.txt /*zy* +zz scroll.txt /*zz* +{ motion.txt /*{* +{Visual} intro.txt /*{Visual}* +{address} cmdline.txt /*{address}* +{arglist} editing.txt /*{arglist}* +{aupat} autocmd.txt /*{aupat}* +{bufname} windows.txt /*{bufname}* +{char1-char2} intro.txt /*{char1-char2}* +{event} autocmd.txt /*{event}* +{file} editing.txt /*{file}* +{group-name} syntax.txt /*{group-name}* +{lhs} map.txt /*{lhs}* +{motion} intro.txt /*{motion}* +{move-around} visual.txt /*{move-around}* +{offset} pattern.txt /*{offset}* +{register} change.txt /*{register}* +{rhs} map.txt /*{rhs}* +{server} remote.txt /*{server}* +{subject} helphelp.txt /*{subject}* +{{{ fold.txt /*{{{* +{} intro.txt /*{}* +} motion.txt /*}* +}}} fold.txt /*}}}* +~ change.txt /*~* diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt new file mode 100644 index 0000000..aa7b9dd --- /dev/null +++ b/runtime/doc/tagsrch.txt @@ -0,0 +1,960 @@ +*tagsrch.txt* For Vim version 9.1. Last change: 2023 Feb 13 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tags and special searches *tags-and-searches* + +See section |29.1| of the user manual for an introduction. + +1. Jump to a tag |tag-commands| +2. Tag stack |tag-stack| +3. Tag match list |tag-matchlist| +4. Tags details |tag-details| +5. Tags file format |tags-file-format| +6. Include file searches |include-search| +7. Using 'tagfunc' |tag-function| + +============================================================================== +1. Jump to a tag *tag-commands* + + *tag* *tags* +A tag is an identifier that appears in a "tags" file. It is a sort of label +that can be jumped to. For example: In C programs each function name can be +used as a tag. The "tags" file has to be generated by a program like ctags, +before the tag commands can be used. + +With the ":tag" command the cursor will be positioned on the tag. With the +CTRL-] command, the keyword on which the cursor is standing is used as the +tag. If the cursor is not on a keyword, the first keyword to the right of the +cursor is used. + +The ":tag" command works very well for C programs. If you see a call to a +function and wonder what that function does, position the cursor inside of the +function name and hit CTRL-]. This will bring you to the function definition. +An easy way back is with the CTRL-T command. Also read about the tag stack +below. + + *:ta* *:tag* *E426* *E429* +:[count]ta[g][!] {name} + Jump to the definition of {name}, using the + information in the tags file(s). Put {name} in the + tag stack. See |tag-!| for [!]. + {name} can be a regexp pattern, see |tag-regexp|. + When there are several matching tags for {name}, jump + to the [count] one. When [count] is omitted the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. + +g<LeftMouse> *g<LeftMouse>* +<C-LeftMouse> *<C-LeftMouse>* *CTRL-]* +CTRL-] Jump to the definition of the keyword under the + cursor. Same as ":tag {name}", where {name} is the + keyword under or after cursor. + When there are several matching tags for {name}, jump + to the [count] one. When no [count] is given the + first one is jumped to. See |tag-matchlist| for + jumping to other matching tags. + + *v_CTRL-]* +{Visual}CTRL-] Same as ":tag {name}", where {name} is the text that + is highlighted. + + *telnet-CTRL-]* +CTRL-] is the default telnet escape key. When you type CTRL-] to jump to a +tag, you will get the telnet prompt instead. Most versions of telnet allow +changing or disabling the default escape key. See the telnet man page. You +can 'telnet -E {Hostname}' to disable the escape character, or 'telnet -e +{EscapeCharacter} {Hostname}' to specify another escape character. If +possible, try to use "ssh" instead of "telnet" to avoid this problem. + + *tag-priority* +When there are multiple matches for a tag, this priority is used: +1. "FSC" A full matching static tag for the current file. +2. "F C" A full matching global tag for the current file. +3. "F " A full matching global tag for another file. +4. "FS " A full matching static tag for another file. +5. " SC" An ignore-case matching static tag for the current file. +6. " C" An ignore-case matching global tag for the current file. +7. " " An ignore-case matching global tag for another file. +8. " S " An ignore-case matching static tag for another file. + +Note that when the current file changes, the priority list is mostly not +changed, to avoid confusion when using ":tnext". It is changed when using +":tag {name}". + +The ignore-case matches are not found for a ":tag" command when: +- 'tagcase' is "followic" and the 'ignorecase' option is off +- 'tagcase' is "followscs" and the 'ignorecase' option is off and the + 'smartcase' option is off or the pattern contains an upper case character. +- 'tagcase' is "match" +- 'tagcase' is "smart" and the pattern contains an upper case character. + +The ignore-case matches are found when: +- a pattern is used (starting with a "/") +- for ":tselect" +- when 'tagcase' is "followic" and 'ignorecase' is on +- when 'tagcase' is "followscs" and 'ignorecase' is on or the 'smartcase' + option is on and the pattern does not contain an upper case character +- when 'tagcase' is "ignore" +- when 'tagcase' is "smart" and the pattern does not contain an upper case + character + +Note that using ignore-case tag searching disables binary searching in the +tags file, which causes a slowdown. This can be avoided by fold-case sorting +the tag file. See the 'tagbsearch' option for an explanation. + +============================================================================== +2. Tag stack *tag-stack* *tagstack* *E425* + +On the tag stack is remembered which tags you jumped to, and from where. +Tags are only pushed onto the stack when the 'tagstack' option is set. + +g<RightMouse> *g<RightMouse>* +<C-RightMouse> *<C-RightMouse>* *CTRL-T* +CTRL-T Jump to [count] older entry in the tag stack + (default 1). + + *:po* *:pop* *E555* *E556* +:[count]po[p][!] Jump to [count] older entry in tag stack (default 1). + See |tag-!| for [!]. + +:[count]ta[g][!] Jump to [count] newer entry in tag stack (default 1). + See |tag-!| for [!]. + + *:tags* +:tags Show the contents of the tag stack. The active + entry is marked with a '>'. + +The output of ":tags" looks like this: + + # TO tag FROM line in file/text + 1 1 main 1 harddisk2:text/vim/test + > 2 2 FuncA 58 i = FuncA(10); + 3 1 FuncC 357 harddisk2:text/vim/src/amiga.c + +This list shows the tags that you jumped to and the cursor position before +that jump. The older tags are at the top, the newer at the bottom. + +The '>' points to the active entry. This is the tag that will be used by the +next ":tag" command. The CTRL-T and ":pop" command will use the position +above the active entry. + +Below the "TO" is the number of the current match in the match list. Note +that this doesn't change when using ":pop" or ":tag". + +The line number and file name are remembered to be able to get back to where +you were before the tag command. The line number will be correct, also when +deleting/inserting lines, unless this was done by another program (e.g. +another instance of Vim). + +For the current file, the "file/text" column shows the text at the position. +An indent is removed and a long line is truncated to fit in the window. + +You can jump to previously used tags with several commands. Some examples: + + ":pop" or CTRL-T to position before previous tag + {count}CTRL-T to position before {count} older tag + ":tag" to newer tag + ":0tag" to last used tag + +The most obvious way to use this is while browsing through the call graph of +a program. Consider the following call graph: + + main ---> FuncA ---> FuncC + ---> FuncB + +(Explanation: main calls FuncA and FuncB; FuncA calls FuncC). +You can get from main to FuncA by using CTRL-] on the call to FuncA. Then +you can CTRL-] to get to FuncC. If you now want to go back to main you can +use CTRL-T twice. Then you can CTRL-] to FuncB. + +If you issue a ":ta {name}" or CTRL-] command, this tag is inserted at the +current position in the stack. If the stack was full (it can hold up to 20 +entries), the oldest entry is deleted and the older entries shift one +position up (their index number is decremented by one). If the last used +entry was not at the bottom, the entries below the last used one are +deleted. This means that an old branch in the call graph is lost. After the +commands explained above the tag stack will look like this: + + # TO tag FROM line in file/text + 1 1 main 1 harddisk2:text/vim/test + 2 1 FuncB 59 harddisk2:text/vim/src/main.c + +The |gettagstack()| function returns the tag stack of a specified window. The +|settagstack()| function modifies the tag stack of a window. + + *tagstack-examples* +Write to the tag stack just like `:tag` but with a user-defined +jumper#jump_to_tag function: > + " Store where we're jumping from before we jump. + let tag = expand('<cword>') + let pos = [bufnr()] + getcurpos()[1:] + let item = {'bufnr': pos[0], 'from': pos, 'tagname': tag} + if jumper#jump_to_tag(tag) + " Jump was successful, write previous location to tag stack. + let winid = win_getid() + let stack = gettagstack(winid) + let stack['items'] = [item] + call settagstack(winid, stack, 't') + endif +< +Set current index of the tag stack to 4: > + call settagstack(1005, {'curidx' : 4}) +< +Push a new item onto the tag stack: > + let pos = [bufnr('myfile.txt'), 10, 1, 0] + let newtag = [{'tagname' : 'mytag', 'from' : pos}] + call settagstack(2, {'items' : newtag}, 'a') +< + *E73* +When you try to use the tag stack while it doesn't contain anything you will +get an error message. + +============================================================================== +3. Tag match list *tag-matchlist* *E427* *E428* + +When there are several matching tags, these commands can be used to jump +between them. Note that these commands don't change the tag stack, they keep +the same entry. + + *:ts* *:tselect* +:ts[elect][!] [name] List the tags that match [name], using the + information in the tags file(s). + When [name] is not given, the last tag name from the + tag stack is used. + See |tag-!| for [!]. + With a '>' in the first column is indicated which is + the current position in the list (if there is one). + [name] can be a regexp pattern, see |tag-regexp|. + See |tag-priority| for the priorities used in the + listing. + Example output: + +> + # pri kind tag file + 1 F f mch_delay os_amiga.c + mch_delay(msec, ignoreinput) + > 2 F f mch_delay os_msdos.c + mch_delay(msec, ignoreinput) + 3 F f mch_delay os_unix.c + mch_delay(msec, ignoreinput) + Type number and <Enter> (empty cancels): +< + See |tag-priority| for the "pri" column. Note that + this depends on the current file, thus using + ":tselect xxx" can produce different results. + The "kind" column gives the kind of tag, if this was + included in the tags file. + The "info" column shows information that could be + found in the tags file. It depends on the program + that produced the tags file. + When the list is long, you may get the |more-prompt|. + If you already see the tag you want to use, you can + type 'q' and enter the number. + + *:sts* *:stselect* +:sts[elect][!] [name] Does ":tselect[!] [name]" and splits the window for + the selected tag. + + *g]* +g] Like CTRL-], but use ":tselect" instead of ":tag". + + *v_g]* +{Visual}g] Same as "g]", but use the highlighted text as the + identifier. + + *:tj* *:tjump* +:tj[ump][!] [name] Like ":tselect", but jump to the tag directly when + there is only one match. + + *:stj* *:stjump* +:stj[ump][!] [name] Does ":tjump[!] [name]" and splits the window for the + selected tag. + + *g_CTRL-]* +g CTRL-] Like CTRL-], but use ":tjump" instead of ":tag". + + *v_g_CTRL-]* +{Visual}g CTRL-] Same as "g CTRL-]", but use the highlighted text as + the identifier. + + *:tn* *:tnext* +:[count]tn[ext][!] Jump to [count] next matching tag (default 1). See + |tag-!| for [!]. + + *:tp* *:tprevious* +:[count]tp[revious][!] Jump to [count] previous matching tag (default 1). + See |tag-!| for [!]. + + *:tN* *:tNext* +:[count]tN[ext][!] Same as ":tprevious". + + *:tr* *:trewind* +:[count]tr[ewind][!] Jump to first matching tag. If [count] is given, jump + to [count]th matching tag. See |tag-!| for [!]. + + *:tf* *:tfirst* +:[count]tf[irst][!] Same as ":trewind". + + *:tl* *:tlast* +:tl[ast][!] Jump to last matching tag. See |tag-!| for [!]. + + *:lt* *:ltag* +:lt[ag][!] [name] Jump to tag [name] and add the matching tags to a new + location list for the current window. [name] can be + a regexp pattern, see |tag-regexp|. When [name] is + not given, the last tag name from the tag stack is + used. The search pattern to locate the tag line is + prefixed with "\V" to escape all the special + characters (very nomagic). The location list showing + the matching tags is independent of the tag stack. + See |tag-!| for [!]. + +When there is no other message, Vim shows which matching tag has been jumped +to, and the number of matching tags: > + tag 1 of 3 or more +The " or more" is used to indicate that Vim didn't try all the tags files yet. +When using ":tnext" a few times, or with ":tlast", more matches may be found. + +When you didn't see this message because of some other message, or you just +want to know where you are, this command will show it again (and jump to the +same tag as last time): > + :0tn +< + *tag-skip-file* +When a matching tag is found for which the file doesn't exist, this match is +skipped and the next matching tag is used. Vim reports this, to notify you of +missing files. When the end of the list of matches has been reached, an error +message is given. + + *tag-preview* +The tag match list can also be used in the preview window. The commands are +the same as above, with a "p" prepended. +{not available when compiled without the |+quickfix| feature} + + *:pts* *:ptselect* +:pts[elect][!] [name] Does ":tselect[!] [name]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + + *:ptj* *:ptjump* +:ptj[ump][!] [name] Does ":tjump[!] [name]" and shows the new tag in a + "Preview" window. See |:ptag| for more info. + + *:ptn* *:ptnext* +:[count]ptn[ext][!] ":tnext" in the preview window. See |:ptag|. + + *:ptp* *:ptprevious* +:[count]ptp[revious][!] ":tprevious" in the preview window. See |:ptag|. + + *:ptN* *:ptNext* +:[count]ptN[ext][!] Same as ":ptprevious". + + *:ptr* *:ptrewind* +:[count]ptr[ewind][!] ":trewind" in the preview window. See |:ptag|. + + *:ptf* *:ptfirst* +:[count]ptf[irst][!] Same as ":ptrewind". + + *:ptl* *:ptlast* +:ptl[ast][!] ":tlast" in the preview window. See |:ptag|. + +============================================================================== +4. Tags details *tag-details* + + *static-tag* +A static tag is a tag that is defined for a specific file. In a C program +this could be a static function. + +In Vi jumping to a tag sets the current search pattern. This means that the +"n" command after jumping to a tag does not search for the same pattern that +it did before jumping to the tag. Vim does not do this as we consider it to +be a bug. If you really want the old Vi behavior, set the 't' flag in +'cpoptions'. + + *tag-binary-search* +Vim uses binary searching in the tags file to find the desired tag quickly +(when enabled at compile time |+tag_binary|). But this only works if the +tags file was sorted on ASCII byte value. Therefore, if no match was found, +another try is done with a linear search. If you only want the linear search, +reset the 'tagbsearch' option. Or better: Sort the tags file! + +Note that the binary searching is disabled when not looking for a tag with a +specific name. This happens when ignoring case and when a regular expression +is used that doesn't start with a fixed string. Tag searching can be a lot +slower then. The former can be avoided by case-fold sorting the tags file. +See 'tagbsearch' for details. + + *tag-regexp* +The ":tag" and ":tselect" commands accept a regular expression argument. See +|pattern| for the special characters that can be used. +When the argument starts with '/', it is used as a pattern. If the argument +does not start with '/', it is taken literally, as a full tag name. +Examples: > + :tag main +< jumps to the tag "main" that has the highest priority. > + :tag /^get +< jumps to the tag that starts with "get" and has the highest priority. > + :tag /norm +< lists all the tags that contain "norm", including "id_norm". +When the argument both exists literally, and match when used as a regexp, a +literal match has a higher priority. For example, ":tag /open" matches "open" +before "open_file" and "file_open". +When using a pattern case is ignored. If you want to match case use "\C" in +the pattern. + + *tag-!* +If the tag is in the current file this will always work. Otherwise the +performed actions depend on whether the current file was changed, whether a ! +is added to the command and on the 'autowrite' option: + + tag in file autowrite ~ +current file changed ! option action ~ +----------------------------------------------------------------------------- + yes x x x goto tag + no no x x read other file, goto tag + no yes yes x abandon current file, read other file, goto + tag + no yes no on write current file, read other file, goto + tag + no yes no off fail +----------------------------------------------------------------------------- + +- If the tag is in the current file, the command will always work. +- If the tag is in another file and the current file was not changed, the + other file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and a ! is + added to the command, the changes to the current file are lost, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is on, the current file will be written, the other + file will be made the current file and read into the buffer. +- If the tag is in another file, the current file was changed and the + 'autowrite' option is off, the command will fail. If you want to save + the changes, use the ":w" command and then use ":tag" without an argument. + This works because the tag is put on the stack anyway. If you want to lose + the changes you can use the ":tag!" command. + + *tag-security* +Note that Vim forbids some commands, for security reasons. This works like +using the 'secure' option for exrc/vimrc files in the current directory. See +|trojan-horse| and |sandbox|. +When the {tagaddress} changes a buffer, you will get a warning message: + "WARNING: tag command changed a buffer!!!" +In a future version changing the buffer will be impossible. All this for +security reasons: Somebody might hide a nasty command in the tags file, which +would otherwise go unnoticed. Example: > + :$d|/tag-function-name/ + +In Vi the ":tag" command sets the last search pattern when the tag is searched +for. In Vim this is not done, the previous search pattern is still remembered, +unless the 't' flag is present in 'cpoptions'. + + *emacs-tags* *emacs_tags* *E430* +Emacs style tag files are only supported if Vim was compiled with the +|+emacs_tags| feature enabled. Sorry, there is no explanation about Emacs tag +files here, it is only supported for backwards compatibility :-). + +Lines in Emacs tags files can be very long. Vim only deals with lines of up +to about 510 bytes. To see whether lines are ignored set 'verbose' to 5 or +higher. Non-Emacs tags file lines can be any length. + + *tags-option* +The 'tags' option is a list of file names. Each of these files is searched +for the tag. This can be used to use a different tags file than the default +file "tags". It can also be used to access a common tags file. + +The next file in the list is not used when: +- A matching static tag for the current buffer has been found. +- A matching global tag has been found. +This also depends on whether case is ignored. Case is ignored when: +- 'tagcase' is "followic" and 'ignorecase' is set +- 'tagcase' is "ignore" +- 'tagcase' is "smart" and the pattern only contains lower case + characters. +- 'tagcase' is "followscs" and 'smartcase' is set and the pattern only + contains lower case characters. +If case is not ignored, and the tags file only has a match without matching +case, the next tags file is searched for a match with matching case. If no +tag with matching case is found, the first match without matching case is +used. If case is ignored, and a matching global tag with or without matching +case is found, this one is used, no further tags files are searched. + +When a tag file name starts with "./", the '.' is replaced with the path of +the current file. This makes it possible to use a tags file in the directory +where the current file is (no matter what the current directory is). The idea +of using "./" is that you can define which tag file is searched first: In the +current directory ("tags,./tags") or in the directory of the current file +("./tags,tags"). + +For example: > + :set tags=./tags,tags,/home/user/commontags + +In this example the tag will first be searched for in the file "tags" in the +directory where the current file is. Next the "tags" file in the current +directory. If it is not found there, then the file "/home/user/commontags" +will be searched for the tag. + +This can be switched off by including the 'd' flag in 'cpoptions', to make +it Vi compatible. "./tags" will then be the tags file in the current +directory, instead of the tags file in the directory where the current file +is. + +Instead of the comma a space may be used. Then a backslash is required for +the space to be included in the string option: > + :set tags=tags\ /home/user/commontags + +To include a space in a file name use three backslashes. To include a comma +in a file name use two backslashes. For example, use: > + :set tags=tag\\\ file,/home/user/common\\,tags + +for the files "tag file" and "/home/user/common,tags". The 'tags' option will +have the value "tag\ file,/home/user/common\,tags". + +If the 'tagrelative' option is on (which is the default) and using a tag file +in another directory, file names in that tag file are relative to the +directory where the tag file is. + +============================================================================== +5. Tags file format *tags-file-format* *E431* + + *ctags* *jtags* +A tags file can be created with an external command, for example "ctags". It +will contain a tag for each function. Some versions of "ctags" will also make +a tag for each "#defined" macro, typedefs, enums, etc. + +Some programs that generate tags files: +ctags As found on most Unix systems. Only supports C. Only + does the basic work. +universal ctags A maintained version of ctags based on exuberant + ctags. See https://ctags.io. + *Exuberant_ctags* +exuberant ctags This is a very good one. It works for C, C++, Java, + Fortran, Eiffel and others. It can generate tags for + many items. See http://ctags.sourceforge.net. + No new version since 2009. +etags Connected to Emacs. Supports many languages. +JTags For Java, in Java. It can be found at + http://www.fleiner.com/jtags/. +ptags.py For Python, in Python. Found in your Python source + directory at Tools/scripts/ptags.py. +ptags For Perl, in Perl. It can be found at + http://www.eleves.ens.fr:8080/home/nthiery/Tags/. +gnatxref For Ada. See http://www.gnuada.org/. gnatxref is + part of the gnat package. + + +The lines in the tags file must have one of these two formats: + +1. {tagname} {TAB} {tagfile} {TAB} {tagaddress} +2. {tagname} {TAB} {tagfile} {TAB} {tagaddress} {term} {field} .. + +Previously an old format was supported, see |tag-old-static|. + +The first format is a normal tag, which is completely compatible with Vi. It +is the only format produced by traditional ctags implementations. This is +often used for functions that are global, also referenced in other files. + +The lines in the tags file can end in <NL> or <CR><NL>. On the Macintosh <CR> +also works. The <CR> and <NL> characters can never appear inside a line. + +The second format is new. It includes additional information in optional +fields at the end of each line. It is backwards compatible with Vi. It is +only supported by new versions of ctags (such as Universal ctags or Exuberant +ctags). + +{tagname} The identifier. Normally the name of a function, but it can + be any identifier. It cannot contain a <Tab>. +{TAB} One <Tab> character. Note: previous versions allowed any + white space here. This has been abandoned to allow spaces in + {tagfile}. +{tagfile} The file that contains the definition of {tagname}. It can + have an absolute or relative path. It may contain environment + variables and wildcards (although the use of wildcards is + doubtful). It cannot contain a <Tab>. +{tagaddress} The Ex command that positions the cursor on the tag. It can + be any Ex command, although restrictions apply (see + |tag-security|). Posix only allows line numbers and search + commands, which are mostly used. +{term} ;" The two characters semicolon and double quote. This is + interpreted by Vi as the start of a comment, which makes the + following be ignored. This is for backwards compatibility + with Vi, it ignores the following fields. Example: + APP file /^static int APP;$/;" v + When {tagaddress} is not a line number or search pattern, then + {term} must be |;". Here the bar ends the command (excluding + the bar) and ;" is used to have Vi ignore the rest of the + line. Example: + APP file.c call cursor(3, 4)|;" v + +{field} .. A list of optional fields. Each field has the form: + + <Tab>{fieldname}:{value} + + The {fieldname} identifies the field, and can only contain + alphabetical characters [a-zA-Z]. + The {value} is any string, but cannot contain a <Tab>. + These characters are special: + "\t" stands for a <Tab> + "\r" stands for a <CR> + "\n" stands for a <NL> + "\\" stands for a single '\' character + + There is one field that doesn't have a ':'. This is the kind + of the tag. It is handled like it was preceded with "kind:". + See the documentation of ctags for the kinds it produces. + + The only other field currently recognized by Vim is "file:" + (with an empty value). It is used for a static tag. + + +The first lines in the tags file can contain lines that start with + !_TAG_ +These are sorted to the first lines, only rare tags that start with "!" can +sort to before them. Vim recognizes two items. The first one is the line +that indicates if the file was sorted. When this line is found, Vim uses +binary searching for the tags file: + !_TAG_FILE_SORTED<Tab>1<Tab>{anything} ~ + +A tag file may be case-fold sorted to avoid a linear search when case is +ignored. (Case is ignored when 'ignorecase' is set and 'tagcase' is +"followic", or when 'tagcase' is "ignore".) See 'tagbsearch' for details. +The value '2' should be used then: + !_TAG_FILE_SORTED<Tab>2<Tab>{anything} ~ + +The other tag that Vim recognizes is the encoding of the tags file: + !_TAG_FILE_ENCODING<Tab>utf-8<Tab>{anything} ~ +Here "utf-8" is the encoding used for the tags. Vim will then convert the tag +being searched for from 'encoding' to the encoding of the tags file. And when +listing tags the reverse happens. When the conversion fails the unconverted +tag is used. + + *tag-search* +The command can be any Ex command, but often it is a search command. +Examples: + tag1 file1 /^main(argc, argv)/ ~ + tag2 file2 108 ~ + +The command is always executed with 'magic' not set. The only special +characters in a search pattern are "^" (begin-of-line) and "$" (<EOL>). +See |pattern|. Note that you must put a backslash before each backslash in +the search text. This is for backwards compatibility with Vi. + + *E434* *E435* +If the command is a normal search command (it starts and ends with "/" or +"?"), some special handling is done: +- Searching starts on line 1 of the file. + The direction of the search is forward for "/", backward for "?". + Note that 'wrapscan' does not matter, the whole file is always searched. +- If the search fails, another try is done ignoring case. If that fails too, + a search is done for: + "^tagname[ \t]*(" + (the tag with '^' prepended and "[ \t]*(" appended). When using function + names, this will find the function name when it is in column 0. This will + help when the arguments to the function have changed since the tags file was + made. If this search also fails another search is done with: + "^[#a-zA-Z_].*\<tagname[ \t]*(" + This means: A line starting with '#' or an identifier and containing the tag + followed by white space and a '('. This will find macro names and function + names with a type prepended. + + + *tag-old-static* +Until March 2019 (patch 8.1.1092) an outdated format was supported: + {tagfile}:{tagname} {TAB} {tagfile} {TAB} {tagaddress} + +This format is for a static tag only. It is obsolete now, replaced by +the second format. It is only supported by Elvis 1.x, older Vim versions and +a few versions of ctags. A static tag is often used for functions that are +local, only referenced in the file {tagfile}. Note that for the static tag, +the two occurrences of {tagfile} must be exactly the same. Also see +|tags-option| below, for how static tags are used. + +The support was removed, since when you can update to the new Vim version you +should also be able to update ctags to one that supports the second format. + +============================================================================== +6. Include file searches *include-search* *definition-search* + *E387* *E388* *E389* + +These commands look for a string in the current file and in all encountered +included files (recursively). This can be used to find the definition of a +variable, function or macro. If you only want to search in the current +buffer, use the commands listed at |pattern-searches|. + +These commands are not available when the |+find_in_path| feature was disabled +at compile time. + +When a line is encountered that includes another file, that file is searched +before continuing in the current buffer. Files included by included files are +also searched. When an include file could not be found it is silently +ignored. Use the |:checkpath| command to discover which files could not be +found, possibly your 'path' option is not set up correctly. Note: the +included file is searched, not a buffer that may be editing that file. Only +for the current file the lines in the buffer are used. + +The string can be any keyword or a defined macro. For the keyword any match +will be found. For defined macros only lines that match with the 'define' +option will be found. The default is "^#\s*define", which is for C programs. +For other languages you probably want to change this. See 'define' for an +example for C++. The string cannot contain an end-of-line, only matches +within a line are found. + +When a match is found for a defined macro, the displaying of lines continues +with the next line when a line ends in a backslash. + +The commands that start with "[" start searching from the start of the current +file. The commands that start with "]" start at the current cursor position. + +The 'include' option is used to define a line that includes another file. The +default is "\^#\s*include", which is for C programs. Note: Vim does not +recognize C syntax, if the 'include' option matches a line inside +"#ifdef/#endif" or inside a comment, it is searched anyway. The 'isfname' +option is used to recognize the file name that comes after the matched +pattern. + +The 'path' option is used to find the directory for the include files that +do not have an absolute path. + +The 'comments' option is used for the commands that display a single line or +jump to a line. It defines patterns that may start a comment. Those lines +are ignored for the search, unless [!] is used. One exception: When the line +matches the pattern "^# *define" it is not considered to be a comment. + +If you want to list matches, and then select one to jump to, you could use a +mapping to do that for you. Here is an example: > + + :map <F4> [I:let nr = input("Which one: ")<Bar>exe "normal " .. nr .. "[\t"<CR> +< + *[i* +[i Display the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is displayed, and comment + lines are not ignored. + + *]i* +]i like "[i", but start at the current cursor position. + + *:is* *:isearch* +:[range]is[earch][!] [count] [/]pattern[/] + Like "[i" and "]i", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. + + *[I* +[I Display all lines that contain the keyword under the + cursor. Filenames and line numbers are displayed + for the found lines. The search starts at the + beginning of the file. + + *]I* +]I like "[I", but start at the current cursor position. + + *:il* *:ilist* +:[range]il[ist][!] [/]pattern[/] + Like "[I" and "]I", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. + + *[_CTRL-I* +[ CTRL-I Jump to the first line that contains the keyword + under the cursor. The search starts at the beginning + of the file. Lines that look like a comment are + ignored (see 'comments' option). If a count is given, + the count'th matching line is jumped to, and comment + lines are not ignored. + + *]_CTRL-I* +] CTRL-I like "[ CTRL-I", but start at the current cursor + position. + + *:ij* *:ijump* +:[range]ij[ump][!] [count] [/]pattern[/] + Like "[ CTRL-I" and "] CTRL-I", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. + +CTRL-W CTRL-I *CTRL-W_CTRL-I* *CTRL-W_i* +CTRL-W i Open a new window, with the cursor on the first line + that contains the keyword under the cursor. The + search starts at the beginning of the file. Lines + that look like a comment line are ignored (see + 'comments' option). If a count is given, the count'th + matching line is jumped to, and comment lines are not + ignored. + + *:isp* *:isplit* +:[range]isp[lit][!] [count] [/]pattern[/] + Like "CTRL-W i" and "CTRL-W i", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. + + *[d* +[d Display the first macro definition that contains the + macro under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is displayed. + + *]d* +]d like "[d", but start at the current cursor position. + + *:ds* *:dsearch* +:[range]ds[earch][!] [count] [/]string[/] + Like "[d" and "]d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. + + *[D* +[D Display all macro definitions that contain the macro + under the cursor. Filenames and line numbers are + displayed for the found lines. The search starts + from the beginning of the file. + + *]D* +]D like "[D", but start at the current cursor position. + + *:dli* *:dlist* +:[range]dli[st][!] [/]string[/] + Like `[D` and `]D`, but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. + Note that `:dl` works like `:delete` with the "l" + flag, not `:dlist`. + + *[_CTRL-D* +[ CTRL-D Jump to the first macro definition that contains the + keyword under the cursor. The search starts from + the beginning of the file. If a count is given, the + count'th matching line is jumped to. + + *]_CTRL-D* +] CTRL-D like "[ CTRL-D", but start at the current cursor + position. + + *:dj* *:djump* +:[range]dj[ump][!] [count] [/]string[/] + Like "[ CTRL-D" and "] CTRL-D", but search in + [range] lines (default: whole file). + See |:search-args| for [/] and [!]. + +CTRL-W CTRL-D *CTRL-W_CTRL-D* *CTRL-W_d* +CTRL-W d Open a new window, with the cursor on the first + macro definition line that contains the keyword + under the cursor. The search starts from the + beginning of the file. If a count is given, the + count'th matching line is jumped to. + + *:dsp* *:dsplit* +:[range]dsp[lit][!] [count] [/]string[/] + Like "CTRL-W d", but search in [range] lines + (default: whole file). + See |:search-args| for [/] and [!]. + + *:che* *:chec* *:check* *:checkpath* +:che[ckpath] List all the included files that could not be found. + +:che[ckpath]! List all the included files. + + *:search-args* +Common arguments for the commands above: +[!] When included, find matches in lines that are recognized as comments. + 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: > + /* comment + foobar */ +< A match for "foobar" is found, because this line is not recognized as + a comment (even though syntax highlighting does recognize it). + Note: Since a macro definition mostly doesn't look like a comment, the + [!] makes no difference for ":dlist", ":dsearch" and ":djump". +[/] A pattern can be surrounded by '/'. Without '/' only whole words are + matched, using the pattern "\<pattern\>". Only after the second '/' a + next command can be appended with '|'. Example: > + :isearch /string/ | echo "the last one" +< For a ":djump", ":dsplit", ":dlist" and ":dsearch" command the pattern + is used as a literal string, not as a search pattern. + +============================================================================== +7. Using 'tagfunc' *tag-function* + +It is possible to provide Vim with a function which will generate a list of +tags used for commands like |:tag|, |:tselect| and Normal mode tag commands +like |CTRL-]|. + +The function used for generating the taglist is specified by setting the +'tagfunc' option. The function will be called with three arguments: + pattern The tag identifier or pattern used during the tag search. + flags String containing flags to control the function behavior. + info Dict containing the following entries: + buf_ffname Full filename which can be used for priority. + user_data Custom data String, if stored in the tag + stack previously by tagfunc. + +Note that in a legacy function "a:" needs to be prepended to the argument name +when using it. + +Currently up to three flags may be passed to the tag function: + 'c' The function was invoked by a normal command being processed + (mnemonic: the tag function may use the context around the + cursor to perform a better job of generating the tag list.) + 'i' In Insert mode, the user was completing a tag (with + |i_CTRL-X_CTRL-]| or 'completeopt' contains `t`). + 'r' The first argument to tagfunc should be interpreted as a + |pattern| (see |tag-regexp|), such as when using: > + :tag /pat +< It is also given when completing in insert mode. + If this flag is not present, the argument is usually taken + literally as the full tag name. + +Note that when 'tagfunc' is set, the priority of the tags described in +|tag-priority| does not apply. Instead, the priority is exactly as the +ordering of the elements in the list returned by the function. + *E987* +The function should return a List of Dict entries. Each Dict must at least +include the following entries and each value must be a string: + name Name of the tag. + filename Name of the file where the tag is defined. It is + either relative to the current directory or a full path. + cmd Ex command used to locate the tag in the file. This + can be either an Ex search pattern or a line number. +Note that the format is similar to that of |taglist()|, which makes it possible +to use its output to generate the result. +The following fields are optional: + kind Type of the tag. + user_data String of custom data stored in the tag stack which + can be used to disambiguate tags between operations. + +If the function returns |v:null| instead of a List, a standard tag lookup will +be performed instead. + +It is not allowed to change the tagstack from inside 'tagfunc'. *E986* +It is not allowed to close a window or change window from inside 'tagfunc'. +*E1299* + +The following is a hypothetical example of a function used for 'tagfunc'. It +uses the output of |taglist()| to generate the result: a list of tags in the +inverse order of file names. +> + function TagFunc(pattern, flags, info) + function CompareFilenames(item1, item2) + let f1 = a:item1['filename'] + let f2 = a:item2['filename'] + return f1 >=# f2 ? + \ -1 : f1 <=# f2 ? 1 : 0 + endfunction + + let result = taglist(a:pattern) + call sort(result, "CompareFilenames") + + return result + endfunc + set tagfunc=TagFunc +< + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt new file mode 100644 index 0000000..546b0bf --- /dev/null +++ b/runtime/doc/term.txt @@ -0,0 +1,1196 @@ +*term.txt* For Vim version 9.1. Last change: 2023 Dec 09 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Terminal information *terminal-info* + +Vim uses information about the terminal you are using to fill the screen and +recognize what keys you hit. If this information is not correct, the screen +may be messed up or keys may not be recognized. The actions which have to be +performed on the screen are accomplished by outputting a string of +characters. Special keys produce a string of characters. These strings are +stored in the terminal options, see |terminal-options|. + +NOTE: Most of this is not used when running the |GUI|. + +1. Startup |startup-terminal| +2. Terminal options |terminal-options| +3. Window size |window-size| +4. Slow and fast terminals |slow-fast-terminal| +5. Using the mouse |mouse-using| + +============================================================================== +1. Startup *startup-terminal* + +When Vim is started a default terminal type is assumed. For the Amiga this is +a standard CLI window, for MS-Windows the pc terminal, for Unix an ansi +terminal. A few other terminal types are always available, see below +|builtin-terms|. + +You can give the terminal name with the '-T' Vim argument. If it is not given +Vim will try to get the name from the TERM environment variable. + + *termcap* *terminfo* *E557* *E558* *E559* +On Unix the terminfo database or termcap file is used. This is referred to as +"termcap" in all the documentation. At compile time, when running configure, +the choice whether to use terminfo or termcap is done automatically. When +running Vim the output of ":version" will show |+terminfo| if terminfo is +used. Also see |xterm-screens|. + +On non-Unix systems a termcap is only available if Vim was compiled with +TERMCAP defined. + + *builtin-terms* *builtin_terms* +A number of builtin terminals are available. Since patch 9.0.0280 there is no +difference between Vim versions. You can see a list of available builtin +terminals in the error message you get for `:set term=xxx` (when not running +the GUI). Also see |++builtin_terms|. + +If the termcap code is included Vim will try to get the strings for the +terminal you are using from the termcap file and the builtin termcaps. Both +are always used, if an entry for the terminal you are using is present. Which +one is used first depends on the 'ttybuiltin' option: + +'ttybuiltin' on 1: builtin termcap 2: external termcap +'ttybuiltin' off 1: external termcap 2: builtin termcap + +If an option is missing in one of them, it will be obtained from the other +one. If an option is present in both, the one first encountered is used. + +Which external termcap file is used varies from system to system and may +depend on the environment variables "TERMCAP" and "TERMPATH". See "man +tgetent". + +Settings depending on terminal *term-dependent-settings* + +If you want to set options or mappings, depending on the terminal name, you +can do this best in your .vimrc. Example: > + + if &term == "xterm" + ... xterm maps and settings ... + elseif &term =~ "vt10." + ... vt100, vt102 maps and settings ... + endif +< + *raw-terminal-mode* +For normal editing the terminal will be put into "raw" mode. The strings +defined with 't_ti', 't_TI' and 't_ks' will be sent to the terminal. Normally +this puts the terminal in a state where the termcap codes are valid and +activates the cursor and function keys. +When Vim exits the terminal will be put back into the mode it was before Vim +started. The strings defined with 't_te', 't_TE' and 't_ke' will be sent to +the terminal. On the Amiga, with commands that execute an external command +(e.g., "!!"), the terminal will be put into Normal mode for a moment. This +means that you can stop the output to the screen by hitting a printing key. +Output resumes when you hit <BS>. + +Note: When 't_ti' is not empty, Vim assumes that it causes switching to the +alternate screen. This may slightly change what happens when executing a +shell command or exiting Vim. To avoid this use 't_TI' and 't_TE' (but make +sure to add to them, not overwrite). + +Vim will try to detect what keyboard protocol the terminal is using with the +'t_RK' termcap entry. This is sent after 't_TI', but only when there is no +work to do (no typeahead and no pending commands). That is to avoid the +response to end up in a shell command or arrive after Vim exits. + + *xterm-bracketed-paste* +When the 't_BE' option is set then 't_BE' will be sent to the +terminal when entering "raw" mode and 't_BD' when leaving "raw" mode. The +terminal is then expected to put 't_PS' before pasted text and 't_PE' after +pasted text. This way Vim can separate text that is pasted from characters +that are typed. The pasted text is handled like when the middle mouse button +is used, it is inserted literally and not interpreted as commands. + +Please note: while bracketed paste is trying to prevent nasty side-effects +from pasting (like the CTRL-C or <ESC> key), it's not a guaranteed security +measure because different terminals may implement this mode slightly +differently. You should still be careful with what you paste into Vim. + +When the cursor is in the first column, the pasted text will be inserted +before it. Otherwise the pasted text is appended after the cursor position. +This means one cannot paste after the first column. Unfortunately Vim does +not have a way to tell where the mouse pointer was. + +Note that in some situations Vim will not recognize the bracketed paste and +you will get the raw text. In other situations Vim will only get the first +pasted character and drop the rest, e.g. when using the "r" command. If you +have a problem with this, disable bracketed paste by putting this in your +.vimrc: > + set t_BE= +If this is done while Vim is running the 't_BD' will be sent to the terminal +to disable bracketed paste. + +If |t_PS| or |t_PE| is not set, then |t_BE| will not be used. This is to make +sure that bracketed paste is not enabled when the escape codes surrounding +pasted text cannot be recognized. + +Note: bracketed paste mode will be disabled, when the 'esckeys' option is not +set (also when the 'compatible' option is set). + +If your terminal supports bracketed paste, but the options are not set +automatically, you can try using something like this: > + + if &term =~ "screen" + let &t_BE = "\e[?2004h" + let &t_BD = "\e[?2004l" + exec "set t_PS=\e[200~" + exec "set t_PE=\e[201~" + endif + +The terminfo entries "BE", "BD", "PS" and "PE" were added in ncurses version +6.4, early 2023, for some terminals. If you have this version then you may +not have to manually configure your terminal. + + *tmux-integration* +If you experience issues when running Vim inside tmux, here are a few hints. +You can comment-out parts if something doesn't work (it may depend on the +terminal that tmux is running in): > + + if !has('gui_running') && &term =~ '^\%(screen\|tmux\)' + " Better mouse support, see :help 'ttymouse' + set ttymouse=sgr + + " Enable true colors, see :help xterm-true-color + let &termguicolors = v:true + let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" + let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" + + " Enable bracketed paste mode, see :help xterm-bracketed-paste + let &t_BE = "\<Esc>[?2004h" + let &t_BD = "\<Esc>[?2004l" + let &t_PS = "\<Esc>[200~" + let &t_PE = "\<Esc>[201~" + + " Enable focus event tracking, see :help xterm-focus-event + let &t_fe = "\<Esc>[?1004h" + let &t_fd = "\<Esc>[?1004l" + execute "set <FocusGained>=\<Esc>[I" + execute "set <FocusLost>=\<Esc>[O" + + " Enable modified arrow keys, see :help arrow_modifiers + execute "silent! set <xUp>=\<Esc>[@;*A" + execute "silent! set <xDown>=\<Esc>[@;*B" + execute "silent! set <xRight>=\<Esc>[@;*C" + execute "silent! set <xLeft>=\<Esc>[@;*D" + endif +< + *cs7-problem* +Note: If the terminal settings are changed after running Vim, you might have +an illegal combination of settings. This has been reported on Solaris 2.5 +with "stty cs8 parenb", which is restored as "stty cs7 parenb". Use +"stty cs8 -parenb -istrip" instead, this is restored correctly. + +Some termcap entries are wrong in the sense that after sending 't_ks' the +cursor keys send codes different from the codes defined in the termcap. To +avoid this you can set 't_ks' (and 't_ke') to empty strings. This must be +done during initialization (see |initialization|), otherwise it's too late. + +Some termcap entries assume that the highest bit is always reset. For +example: The cursor-up entry for the Amiga could be ":ku=\E[A:". But the +Amiga really sends "\233A". This works fine if the highest bit is reset, +e.g., when using an Amiga over a serial line. If the cursor keys don't work, +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. + +Many cursor key codes start with an <Esc>. Vim must find out if this is a +single hit of the <Esc> key or the start of a cursor key sequence. It waits +for a next character to arrive. If it does not arrive within one second a +single <Esc> is assumed. On very slow systems this may fail, causing cursor +keys not to work sometimes. If you discover this problem reset the 'timeout' +option. Vim will wait for the next character to arrive after an <Esc>. If +you want to enter a single <Esc> you must type it twice. Resetting the +'esckeys' option avoids this problem in Insert mode, but you lose the +possibility to use cursor and function keys in Insert mode. + +On the Amiga the recognition of window resizing is activated only when the +terminal name is "amiga" or "builtin_amiga". + +Some terminals have confusing codes for the cursor keys. The televideo 925 is +such a terminal. It sends a CTRL-H for cursor-left. This would make it +impossible to distinguish a backspace and cursor-left. To avoid this problem +CTRL-H is never recognized as cursor-left. + + *vt100-cursor-keys* *xterm-cursor-keys* +Other terminals (e.g., vt100 and xterm) have cursor keys that send <Esc>OA, +<Esc>OB, etc. Unfortunately these are valid commands in insert mode: Stop +insert, Open a new line above the new one, start inserting 'A', 'B', etc. +Instead of performing these commands Vim will erroneously recognize this typed +key sequence as a cursor key movement. To avoid this and make Vim do what you +want in either case you could use these settings: > + :set notimeout " don't timeout on mappings + :set ttimeout " do timeout on terminal key codes + :set timeoutlen=100 " timeout after 100 msec +This requires the key-codes to be sent within 100 msec in order to recognize +them as a cursor key. When you type you normally are not that fast, so they +are recognized as individual typed commands, even though Vim receives the same +sequence of bytes. + + *vt100-function-keys* *xterm-function-keys* +An xterm can send function keys F1 to F4 in two modes: vt100 compatible or +not. Because Vim may not know what the xterm is sending, both types of keys +are recognized. The same happens for the <Home> and <End> keys. + normal vt100 ~ + <F1> t_k1 <Esc>[11~ <xF1> <Esc>OP *<xF1>-xterm* + <F2> t_k2 <Esc>[12~ <xF2> <Esc>OQ *<xF2>-xterm* + <F3> t_k3 <Esc>[13~ <xF3> <Esc>OR *<xF3>-xterm* + <F4> t_k4 <Esc>[14~ <xF4> <Esc>OS *<xF4>-xterm* + <Home> t_kh <Esc>[7~ <xHome> <Esc>OH *<xHome>-xterm* + <End> t_@7 <Esc>[4~ <xEnd> <Esc>OF *<xEnd>-xterm* + +When Vim starts, <xF1> is mapped to <F1>, <xF2> to <F2> etc. This means that +by default both codes do the same thing. If you make a mapping for <xF2>, +because your terminal does have two keys, the default mapping is overwritten, +thus you can use the <F2> and <xF2> keys for something different. + + *xterm-shifted-keys* +Newer versions of xterm support shifted function keys and special keys. Vim +recognizes most of them. Use ":set termcap" to check which are supported and +what the codes are. Mostly these are not in a termcap, they are only +supported by the builtin_xterm termcap. + + *xterm-modifier-keys* +Newer versions of xterm support Alt and Ctrl for most function keys. To avoid +having to add all combinations of Alt, Ctrl and Shift for every key a special +sequence is recognized at the end of a termcap entry: ";*X". The "X" can be +any character, often '~' is used. The ";*" stands for an optional modifier +argument. ";2" is Shift, ";3" is Alt, ";5" is Ctrl and ";9" is Meta (when +it's different from Alt). They can be combined. Examples: > + :set <F8>=^[[19;*~ + :set <Home>=^[[1;*H +Another speciality about these codes is that they are not overwritten by +another code. That is to avoid that the codes obtained from xterm directly +|t_RV| overwrite them. + +Another special value is a termcap entry ending in "@;*X". This is for cursor +keys, which either use "CSI X" or "CSI 1 ; modifier X". Thus the "@" +stands for either "1" if a modifier follows, or nothing. + *arrow_modifiers* +Several terminal emulators (alacritty, gnome, konsole, etc.) send special +codes for keys with modifiers, but these do not have an entry in the +termcap/terminfo database. You can make them work by adding a few lines in +your vimrc. For example, to make the Control modifier work with arrow keys +for the gnome terminal: > + if &term =~ 'gnome' + execute "set <xUp>=\<Esc>[@;*A" + execute "set <xDown>=\<Esc>[@;*B" + execute "set <xRight>=\<Esc>[@;*C" + execute "set <xLeft>=\<Esc>[@;*D" + endif +< *xterm-scroll-region* +The default termcap entry for xterm on Sun and other platforms does not +contain the entry for scroll regions. Add ":cs=\E[%i%d;%dr:" to the xterm +entry in /etc/termcap and everything should work. + + *xterm-end-home-keys* +On some systems (at least on FreeBSD with XFree86 3.1.2) the codes that the +<End> and <Home> keys send contain a <Nul> character. To make these keys send +the proper key code, add these lines to your ~/.Xdefaults file: + +*VT100.Translations: #override \n\ + <Key>Home: string("0x1b") string("[7~") \n\ + <Key>End: string("0x1b") string("[8~") + + *xterm-8bit* *xterm-8-bit* +Xterm can be run in a mode where it uses 8-bit escape sequences. The CSI code +is used instead of <Esc>[. The advantage is that an <Esc> can quickly be +recognized in Insert mode, because it can't be confused with the start of a +special key. +For the builtin termcap entries, Vim checks if the 'term' option contains +"8bit" anywhere. It then uses 8-bit characters for the termcap entries, the +mouse and a few other things. You would normally set $TERM in your shell to +"xterm-8bit" and Vim picks this up and adjusts to the 8-bit setting +automatically. +When Vim receives a response to the |t_RV| (request version) sequence and it +starts with CSI, it assumes that the terminal is in 8-bit mode and will +convert all key sequences to their 8-bit variants. + + *xterm-terminfo-entries* +For some time the terminfo entries were insufficient to describe all the +features that Vim can use. The builtin xterm termcap entries did have these, +with the result that several terminals that were similar enough to xterm took +advantage of these by prefixing "xterm-" to the terminal name in $TERM. + +This leads to problems, because quite often these terminals are not 100% +compatible with xterm. At the start of 2023 several entries have been added +to the terminfo database to make it possible to use these features without +using the "xterm" workaround. These are the relevant entries (so far): + + name xterm value description ~ + RV "\033[>c" Request version |t_RV| + + BE "\033[?2004h" enable bracketed paste mode |t_BE| + BD "\033[?2004l" disable bracketed paste mode |t_BD| + PS "\033[200~" pasted text start |t_PS| + PE "\033[201~" pasted text end |t_PE| + + XM "\033[?1006;1004;1000%?%p1%{1}%=%th%el%;" + mouse enable / disable |t_XM| + FE "\033[?1004h" enable focus event tracking |t_fe| + FD "\033[?1004l" disable focus event tracking |t_fd| + +The "XM" entry includes "1006" to enable SGR style mouse reporting. This +supports columns above 223. It also includes "1004" which enables focus +reporting. +Note: As of 2023, the "1004" is currently not used by Vim itself, instead +it is recommended to set focus reporting independently of mouse tracking by +the |t_fe| and |t_fd| entries, as ncurses also starts to use with the latest +versions (and will then also end up in terminfo/termcap). + + *xterm-kitty* *kitty-terminal* +The Kitty terminal is a special case. Mainly because it works differently +from most other terminals, but also because, instead of trying the fit in and +make it behave like other terminals by default, it dictates how applications +need to work when using Kitty. This makes it very difficult for Vim to work +in a Kitty terminal. Some exceptions have been hard coded, but it is not at +all nice to have to make exceptions for one specific terminal. + +One of the problems is that the value for $TERM is set to "xterm-kitty". For +Vim this is an indication that the terminal is xterm-compatible and the +builtin xterm termcap entries should be used. Many other terminals depend on +this. However, Kitty is not fully xterm compatible. The author suggested to +ignore the "xterm-" prefix and use the terminfo entry anyway, so that is what +happens now, the builtin xterm termcap entries are not used. However, the +t_RV is set, otherwise other things would not work, such as automatically +setting 'ttymouse' to "sgr" (at least until |t_XM| is being used for this). + +It is not clear why kitty sets $TERM to "xterm-kitty", the terminal isn't +really xterm compatible. "kitty" would be more appropriate, but a terminfo +entry with that name is not widespread. + +Note that using the kitty keyboard protocol is a separate feature, see +|kitty-keyboard-protocol|. + + +============================================================================== +2. Terminal options *terminal-options* *termcap-options* *E436* + +The terminal options can be set just like normal options. But they are not +shown with the ":set all" command. Instead use ":set termcap". + +It is always possible to change individual strings by setting the +appropriate option. For example: > + :set t_ce=^V^[[K (CTRL-V, <Esc>, [, K) + +The options are listed below. The associated termcap code is always equal to +the last two characters of the option name. Only one termcap code is +required: Cursor motion, 't_cm'. + +The options 't_da', 't_db', 't_ms', 't_xs', 't_xn' represent flags in the +termcap. When the termcap flag is present, the option will be set to "y". +But any non-empty string means that the flag is set. An empty string means +that the flag is not set. 't_CS' works like this too, but it isn't a termcap +flag. + +OUTPUT CODES *terminal-output-codes* + option meaning ~ + + t_AB set background color (ANSI) *t_AB* *'t_AB'* + t_AF set foreground color (ANSI) *t_AF* *'t_AF'* + t_AL add number of blank lines *t_AL* *'t_AL'* + t_al add new blank line *t_al* *'t_al'* + t_bc backspace character *t_bc* *'t_bc'* + t_cd clear to end of screen *t_cd* *'t_cd'* + t_ce clear to end of line *t_ce* *'t_ce'* + t_cl clear screen *t_cl* *'t_cl'* + t_cm cursor motion (required!) *E437* *t_cm* *'t_cm'* + t_Co number of colors *t_Co* *'t_Co'* + t_CS if non-empty, cursor relative to scroll region *t_CS* *'t_CS'* + t_cs define scrolling region *t_cs* *'t_cs'* + t_CV define vertical scrolling region *t_CV* *'t_CV'* + t_da if non-empty, lines from above scroll down *t_da* *'t_da'* + t_db if non-empty, lines from below scroll up *t_db* *'t_db'* + t_DL delete number of lines *t_DL* *'t_DL'* + t_dl delete line *t_dl* *'t_dl'* + t_fs set window title end (from status line) *t_fs* *'t_fs'* + t_ke exit "keypad transmit" mode *t_ke* *'t_ke'* + t_ks start "keypad transmit" mode *t_ks* *'t_ks'* + t_le move cursor one char left *t_le* *'t_le'* + t_mb blinking mode *t_mb* *'t_mb'* + t_md bold mode *t_md* *'t_md'* + t_me Normal mode (undoes t_mr, t_mb, t_md and color) *t_me* *'t_me'* + t_mr reverse (invert) mode *t_mr* *'t_mr'* + *t_ms* *'t_ms'* + t_ms if non-empty, cursor can be moved in standout/inverse mode + t_nd non destructive space character *t_nd* *'t_nd'* + t_op reset to original color pair *t_op* *'t_op'* + t_RI cursor number of chars right *t_RI* *'t_RI'* + t_Sb set background color *t_Sb* *'t_Sb'* + t_Sf set foreground color *t_Sf* *'t_Sf'* + t_se standout end *t_se* *'t_se'* + t_so standout mode *t_so* *'t_so'* + t_sr scroll reverse (backward) *t_sr* *'t_sr'* + t_te end of "termcap" mode *t_te* *'t_te'* + t_ti put terminal into "termcap" mode *t_ti* *'t_ti'* + t_ts set window title start (to status line) *t_ts* *'t_ts'* + t_ue underline end *t_ue* *'t_ue'* + t_us underline mode *t_us* *'t_us'* + t_ut clearing uses the current background color *t_ut* *'t_ut'* + t_vb visual bell *t_vb* *'t_vb'* + t_ve cursor visible *t_ve* *'t_ve'* + t_vi cursor invisible *t_vi* *'t_vi'* + t_vs cursor very visible (blink) *t_vs* *'t_vs'* + *t_xs* *'t_xs'* + t_xs if non-empty, standout not erased by overwriting (hpterm) + *t_xn* *'t_xn'* + t_xn if non-empty, writing a character at the last screen cell + does not cause scrolling + t_ZH italics mode *t_ZH* *'t_ZH'* + t_ZR italics end *t_ZR* *'t_ZR'* + +Added by Vim (there are no standard codes for these): + t_AU set underline color (ANSI) *t_AU* *'t_AU'* + t_Ce undercurl and underline end *t_Ce* *'t_Ce'* + t_Cs undercurl (curly underline) mode *t_Cs* *'t_Cs'* + t_Us double underline mode *t_Us* *'t_Us'* + t_ds dotted underline mode *t_ds* *'t_ds'* + t_Ds dashed underline mode *t_Ds* *'t_Ds'* + t_Te strikethrough end *t_Te* *'t_Te'* + t_Ts strikethrough mode *t_Ts* *'t_Ts'* + t_IS set icon text start *t_IS* *'t_IS'* + t_IE set icon text end *t_IE* *'t_IE'* + t_WP set window position (Y, X) in pixels *t_WP* *'t_WP'* + t_GP get window position (Y, X) in pixels *t_GP* *'t_GP'* + t_WS set window size (height, width in cells) *t_WS* *'t_WS'* + t_VS cursor normally visible (no blink) *t_VS* *'t_VS'* + t_SI start insert mode (bar cursor shape) *t_SI* *'t_SI'* + t_SR start replace mode (underline cursor shape) *t_SR* *'t_SR'* + t_EI end insert or replace mode (block cursor shape) *t_EI* *'t_EI'* + |termcap-cursor-shape| + t_RV request terminal version string (works for *t_RV* *'t_RV'* + xterm and other terminal emulators) The + response is stored in |v:termresponse| |xterm-8bit| + |'ttymouse'| |xterm-codes| + t_XM enable/disable mouse reporting, *t_XM* *'t_XM'* + see |mouse-reporting| below + t_RK request terminal keyboard protocol state; *t_RK* *'t_RK'* + sent after |t_TI| + t_u7 request cursor position (for xterm) *t_u7* *'t_u7'* + see |'ambiwidth'| + The response is stored in |v:termu7resp| + t_RF request terminal foreground color *t_RF* *'t_RF'* + The response is stored in |v:termrfgresp| + t_RB request terminal background color *t_RB* *'t_RB'* + The response is stored in |v:termrbgresp| + t_8f set foreground color (R, G, B) *t_8f* *'t_8f'* + |xterm-true-color| + t_8b set background color (R, G, B) *t_8b* *'t_8b'* + |xterm-true-color| + t_8u set underline color (R, G, B) *t_8u* *'t_8u'* + t_BE enable bracketed paste mode *t_BE* *'t_BE'* + |xterm-bracketed-paste| + t_BD disable bracketed paste mode *t_BD* *'t_BD'* + |xterm-bracketed-paste| + t_SC set cursor color start *t_SC* *'t_SC'* + t_EC set cursor color end *t_EC* *'t_EC'* + t_SH set cursor shape *t_SH* *'t_SH'* + t_RC request terminal cursor blinking *t_RC* *'t_RC'* + The response is stored in |v:termblinkresp| + t_RS request terminal cursor style *t_RS* *'t_RS'* + The response is stored in |v:termstyleresp| + t_ST save window title to stack *t_ST* *'t_ST'* + t_RT restore window title from stack *t_RT* *'t_RT'* + t_Si save icon text to stack *t_Si* *'t_Si'* + t_Ri restore icon text from stack *t_Ri* *'t_Ri'* + t_TE end of "raw" mode *t_TE* *'t_TE'* + t_TI put terminal into "raw" mode *t_TI* *'t_TI'* + t_fe enable focus-event tracking *t_fe* *'t_fe'* + |xterm-focus-event| + t_fd disable focus-event tracking *t_fd* *'t_fd'* + |xterm-focus-event| + +Some codes have a start, middle and end part. The start and end are defined +by the termcap option, the middle part is text. + set title text: t_ts {title text} t_fs + set icon text: t_IS {icon text} t_IE + set cursor color: t_SC {color name} t_EC + +t_SH must take one argument: + 0, 1 or none blinking block cursor + 2 block cursor + 3 blinking underline cursor + 4 underline cursor + 5 blinking vertical bar cursor + 6 vertical bar cursor + +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. + + *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. + +The "XM" terminfo/termcap entry is used for this. Vim also has the 'ttymouse' +option to specify the mouse protocol being used. See the option for the +possible values. + +If Vim can read the "XM" terminfo/termcap entry then it will be used for +enabling and disabling the mouse reporting. If it is missing, then the value +from 'ttymouse' is used to decide how to do this. + +If the "XM" entry exists and the first number is "1006" then 'ttymouse' will +be set to "sgr", unless it was already set earlier. + + +KEY CODES *terminal-key-codes* +Note: Use the <> form if possible + + option name meaning ~ + + t_ku <Up> arrow up *t_ku* *'t_ku'* + t_kd <Down> arrow down *t_kd* *'t_kd'* + t_kr <Right> arrow right *t_kr* *'t_kr'* + t_kl <Left> arrow left *t_kl* *'t_kl'* + <xUp> alternate arrow up *<xUp>* + <xDown> alternate arrow down *<xDown>* + <xRight> alternate arrow right *<xRight>* + <xLeft> alternate arrow left *<xLeft>* + <S-Up> shift arrow up + <S-Down> shift arrow down + t_%i <S-Right> shift arrow right *t_%i* *'t_%i'* + t_#4 <S-Left> shift arrow left *t_#4* *'t_#4'* + t_k1 <F1> function key 1 *t_k1* *'t_k1'* + <xF1> alternate F1 *<xF1>* + t_k2 <F2> function key 2 *<F2>* *t_k2* *'t_k2'* + <xF2> alternate F2 *<xF2>* + t_k3 <F3> function key 3 *<F3>* *t_k3* *'t_k3'* + <xF3> alternate F3 *<xF3>* + t_k4 <F4> function key 4 *<F4>* *t_k4* *'t_k4'* + <xF4> alternate F4 *<xF4>* + t_k5 <F5> function key 5 *<F5>* *t_k5* *'t_k5'* + t_k6 <F6> function key 6 *<F6>* *t_k6* *'t_k6'* + t_k7 <F7> function key 7 *<F7>* *t_k7* *'t_k7'* + t_k8 <F8> function key 8 *<F8>* *t_k8* *'t_k8'* + t_k9 <F9> function key 9 *<F9>* *t_k9* *'t_k9'* + t_k; <F10> function key 10 *<F10>* *t_k;* *'t_k;'* + t_F1 <F11> function key 11 *<F11>* *t_F1* *'t_F1'* + t_F2 <F12> function key 12 *<F12>* *t_F2* *'t_F2'* + t_F3 <F13> function key 13 *<F13>* *t_F3* *'t_F3'* + t_F4 <F14> function key 14 *<F14>* *t_F4* *'t_F4'* + t_F5 <F15> function key 15 *<F15>* *t_F5* *'t_F5'* + t_F6 <F16> function key 16 *<F16>* *t_F6* *'t_F6'* + t_F7 <F17> function key 17 *<F17>* *t_F7* *'t_F7'* + t_F8 <F18> function key 18 *<F18>* *t_F8* *'t_F8'* + t_F9 <F19> function key 19 *<F19>* *t_F9* *'t_F9'* + <S-F1> shifted function key 1 + <S-xF1> alternate <S-F1> *<S-xF1>* + <S-F2> shifted function key 2 *<S-F2>* + <S-xF2> alternate <S-F2> *<S-xF2>* + <S-F3> shifted function key 3 *<S-F3>* + <S-xF3> alternate <S-F3> *<S-xF3>* + <S-F4> shifted function key 4 *<S-F4>* + <S-xF4> alternate <S-F4> *<S-xF4>* + <S-F5> shifted function key 5 *<S-F5>* + <S-F6> shifted function key 6 *<S-F6>* + <S-F7> shifted function key 7 *<S-F7>* + <S-F8> shifted function key 8 *<S-F8>* + <S-F9> shifted function key 9 *<S-F9>* + <S-F10> shifted function key 10 *<S-F10>* + <S-F11> shifted function key 11 *<S-F11>* + <S-F12> shifted function key 12 *<S-F12>* + t_%1 <Help> help key *t_%1* *'t_%1'* + t_&8 <Undo> undo key *t_&8* *'t_&8'* + t_kI <Insert> insert key *t_kI* *'t_kI'* + <kInsert> keypad insert key + t_kD <Del> delete key *t_kD* *'t_kD'* + t_kb <BS> backspace key *t_kb* *'t_kb'* + t_kB <S-Tab> back-tab (shift-tab) *<S-Tab>* *t_kB* *'t_kB'* + t_kh <Home> home key *t_kh* *'t_kh'* + t_#2 <S-Home> shifted home key *<S-Home>* *t_#2* *'t_#2'* + <xHome> alternate home key *<xHome>* + t_@7 <End> end key *t_@7* *'t_@7'* + t_*7 <S-End> shifted end key *<S-End>* *t_star7* *'t_star7'* + <xEnd> alternate end key *<xEnd>* + t_kP <PageUp> page-up key *t_kP* *'t_kP'* + t_kN <PageDown> page-down key *t_kN* *'t_kN'* + t_K1 <kHome> keypad home key *t_K1* *'t_K1'* + t_K4 <kEnd> keypad end key *t_K4* *'t_K4'* + t_K3 <kPageUp> keypad page-up key *t_K3* *'t_K3'* + t_K5 <kPageDown> keypad page-down key *t_K5* *'t_K5'* + t_K6 <kPlus> keypad plus key *<kPlus>* *t_K6* *'t_K6'* + t_K7 <kMinus> keypad minus key *<kMinus>* *t_K7* *'t_K7'* + t_K8 <kDivide> keypad divide *<kDivide>* *t_K8* *'t_K8'* + t_K9 <kMultiply> keypad multiply *<kMultiply>* *t_K9* *'t_K9'* + t_KA <kEnter> keypad enter key *<kEnter>* *t_KA* *'t_KA'* + t_KB <kPoint> keypad decimal point *<kPoint>* *t_KB* *'t_KB'* + t_KC <k0> keypad 0 *<k0>* *t_KC* *'t_KC'* + t_KD <k1> keypad 1 *<k1>* *t_KD* *'t_KD'* + t_KE <k2> keypad 2 *<k2>* *t_KE* *'t_KE'* + t_KF <k3> keypad 3 *<k3>* *t_KF* *'t_KF'* + t_KG <k4> keypad 4 *<k4>* *t_KG* *'t_KG'* + t_KH <k5> keypad 5 *<k5>* *t_KH* *'t_KH'* + t_KI <k6> keypad 6 *<k6>* *t_KI* *'t_KI'* + t_KJ <k7> keypad 7 *<k7>* *t_KJ* *'t_KJ'* + t_KK <k8> keypad 8 *<k8>* *t_KK* *'t_KK'* + t_KL <k9> keypad 9 *<k9>* *t_KL* *'t_KL'* + <Mouse> leader of mouse code *<Mouse>* + + t_PS <PasteStart> start of bracketed paste *t_PS* *'t_PS'* + |xterm-bracketed-paste| + t_PE <PasteEnd> end of bracketed paste *t_PE* *'t_PE'* + |xterm-bracketed-paste| + <FocusGained> Vim window got focus (internal only) + <FocusLost> Vim window lost focus (internal only) + +Note about t_so and t_mr: When the termcap entry "so" is not present the +entry for "mr" is used. And vice versa. The same is done for "se" and "me". +If your terminal supports both inversion and standout mode, you can see two +different modes. If your terminal supports only one of the modes, both will +look the same. + + *keypad-comma* +The keypad keys, when they are not mapped, behave like the equivalent normal +key. There is one exception: if you have a comma on the keypad instead of a +decimal point, Vim will use a dot anyway. Use these mappings to fix that: > + :noremap <kPoint> , + :noremap! <kPoint> , +< *xterm-codes* +There is a special trick to obtain the key codes which currently only works +for xterm. When |t_RV| is defined and a response is received which indicates +an xterm with patchlevel 141 or higher, Vim uses special escape sequences to +request the key codes directly from the xterm. The responses are used to +adjust the various t_ codes. This avoids the problem that the xterm can +produce different codes, depending on the mode it is in (8-bit, VT102, +VT220, etc.). The result is that codes like <xF1> are no longer needed. + +One of the codes that can change is 't_Co', the number of colors. This will +trigger a redraw. If this is a problem, reset the 'xtermcodes' option as +early as possible: > + set noxtermcodes + +Note: Requesting the key codes is only done on startup. If the xterm options +are changed after Vim has started, the escape sequences may not be recognized +anymore. + + *xterm-true-color* +Vim supports using true colors in the terminal (taken from |highlight-guifg| +and |highlight-guibg|), given that the terminal supports this. To make this +work the 'termguicolors' option needs to be set. +See https://github.com/termstandard/colors for a list of terminals that +support true colors. + +For telling the terminal what RGB color to use the |t_8f| and |t_8b| termcap +entries are used. These are set by default to values that work for most +terminals. If that does not work for your terminal you can set them manually. +The default values are set like this: > + let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum" + let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum" + +Some terminals accept the same sequences, but with all semicolons replaced by +colons (this is actually more compatible, but less widely supported): > + let &t_8f = "\<Esc>[38:2:%lu:%lu:%lum" + let &t_8b = "\<Esc>[48:2:%lu:%lu:%lum" + +These options contain printf strings, with |printf()| (actually, its C +equivalent hence `l` modifier) invoked with the t_ option value and three +unsigned long integers that may have any value between 0 and 255 (inclusive) +representing red, green and blue colors respectively. + + *xterm-resize* +Window resizing with xterm only works if the allowWindowOps resource is +enabled. On some systems and versions of xterm it's disabled by default +because someone thought it would be a security issue. It's not clear if this +is actually the case. + +To overrule the default, put this line in your ~/.Xdefaults or +~/.Xresources: +> + XTerm*allowWindowOps: true + +And run "xrdb -merge .Xresources" to make it effective. You can check the +value with the context menu (right mouse button while CTRL key is pressed), +there should be a tick at allow-window-ops. + + *xterm-focus-event* +Some terminals including xterm support the focus event tracking feature. +If this feature is enabled by the 't_fe' sequence, special key sequences are +sent from the terminal to Vim every time the terminal gains or loses focus. +Vim fires focus events (|FocusGained|/|FocusLost|) by handling them accordingly. +Focus event tracking is disabled by a 't_fd' sequence when exiting "raw" mode. +If you would like to disable this feature, add the following to your .vimrc: + `set t_fd=` + `set t_fe=` +If your terminal does support this but Vim does not recognize the terminal, +you may have to set the options yourself: > + let &t_fe = "\<Esc>[?1004h" + let &t_fd = "\<Esc>[?1004l" + execute "set <FocusGained>=\<Esc>[I" + execute "set <FocusLost>=\<Esc>[O" +If this causes garbage to show when Vim starts up then it doesn't work. + + *termcap-colors* +Note about colors: The 't_Co' option tells Vim the number of colors available. +When it is non-zero, the 't_AB' and 't_AF' options are used to set the color. +If one of these is not available, 't_Sb' and 't_Sf' are used. 't_me' is used +to reset to the default colors. Also see 'termguicolors'. +When the GUI is running 't_Co' is set to 16777216. + + *termcap-cursor-shape* *termcap-cursor-color* +When Vim enters Insert mode the 't_SI' escape sequence is sent. When Vim +enters Replace mode the 't_SR' escape sequence is sent if it is set, otherwise +'t_SI' is sent. When leaving Insert mode or Replace mode 't_EI' is used. +Note: When 't_EI' is not set then 't_SI' and 't_SR' will not be sent. And +when 't_SI' or 't_SR' is not set then 't_EI' is sent only once. + +This can be used to change the shape or color of the cursor in Insert or +Replace mode. These are not standard termcap/terminfo entries, you need to set +them yourself. +Example for an xterm, this changes the color of the cursor: > + if &term =~ "xterm" + let &t_SI = "\<Esc>]12;purple\x7" + let &t_SR = "\<Esc>]12;red\x7" + let &t_EI = "\<Esc>]12;blue\x7" + endif +NOTE: When Vim exits the shape for Normal mode will remain. The shape from +before Vim started will not be restored. + +For Windows Terminal you can use something like this: > + " Note: This should be set after `set termguicolors` or `set t_Co=256`. + if &term =~ 'xterm' || &term == 'win32' + " Use DECSCUSR escape sequences + let &t_SI = "\e[5 q" " blink bar + let &t_SR = "\e[3 q" " blink underline + let &t_EI = "\e[1 q" " blink block + let &t_ti ..= "\e[1 q" " blink block + let &t_te ..= "\e[0 q" " default (depends on terminal, normally blink + " block) + endif + +{not available when compiled without the |+cursorshape| feature} + + *termcap-title* +The 't_ts' and 't_fs' options are used to set the window title if the terminal +allows title setting via sending strings. They are sent before and after the +title string, respectively. Similar 't_IS' and 't_IE' are used to set the +icon text. These are Vim-internal extensions of the Unix termcap, so they +cannot be obtained from an external termcap. However, the builtin termcap +contains suitable entries for xterm and iris-ansi, so you don't need to set +them here. + *hpterm* +If inversion or other highlighting does not work correctly, try setting the +'t_xs' option to a non-empty string. This makes the 't_ce' code be used to +remove highlighting from a line. This is required for "hpterm". Setting the +'weirdinvert' option has the same effect as making 't_xs' non-empty, and vice +versa. + + *scroll-region* +Some termcaps do not include an entry for "cs" (scroll region), although the +terminal does support it. For example: xterm on a Sun. You can use the +builtin_xterm or define t_cs yourself. For example: > + :set t_cs=^V^[[%i%d;%dr +Where ^V is CTRL-V and ^[ is <Esc>. + +The vertical scroll region t_CV is not a standard termcap code. Vim uses it +internally in the GUI. But it can also be defined for a terminal, if you can +find one that supports it. The two arguments are the left and right column of +the region which to restrict the scrolling to. Just like t_cs defines the top +and bottom lines. Defining t_CV will make scrolling in vertically split +windows a lot faster. Don't set t_CV when t_da or t_db is set (text isn't +cleared when scrolling). + +Unfortunately it is not possible to deduce from the termcap how cursor +positioning should be done when using a scrolling region: Relative to the +beginning of the screen or relative to the beginning of the scrolling region. +Most terminals use the first method. The 't_CS' option should be set to any +string when cursor positioning is relative to the start of the scrolling +region. It should be set to an empty string otherwise. + +Note for xterm users: The shifted cursor keys normally don't work. You can + make them work with the xmodmap command and some mappings in Vim. + + Give these commands in the xterm: + xmodmap -e "keysym Up = Up F13" + xmodmap -e "keysym Down = Down F16" + xmodmap -e "keysym Left = Left F18" + xmodmap -e "keysym Right = Right F19" + + And use these mappings in Vim: + :map <t_F3> <S-Up> + :map! <t_F3> <S-Up> + :map <t_F6> <S-Down> + :map! <t_F6> <S-Down> + :map <t_F8> <S-Left> + :map! <t_F8> <S-Left> + :map <t_F9> <S-Right> + :map! <t_F9> <S-Right> + +Instead of, say, <S-Up> you can use any other command that you want to use the +shift-cursor-up key for. (Note: To help people that have a Sun keyboard with +left side keys F14 is not used because it is confused with the undo key; F15 +is not used, because it does a window-to-front; F17 is not used, because it +closes the window. On other systems you can probably use them.) + +============================================================================== +3. Window size *window-size* + +[This is about the size of the whole window Vim is using, not a window that is +created with the ":split" command.] + +If you are running Vim on an Amiga and the terminal name is "amiga" or +"builtin_amiga", the amiga-specific window resizing will be enabled. On Unix +systems three methods are tried to get the window size: + +- an ioctl call (TIOCGSIZE or TIOCGWINSZ, depends on your system) +- the environment variables "LINES" and "COLUMNS" +- from the termcap entries "li" and "co" + +If everything fails a default size of 24 lines and 80 columns is assumed. If +a window-resize signal is received the size will be set again. If the window +size is wrong you can use the 'lines' and 'columns' options to set the +correct values. + +One command can be used to set the screen size: + *:mod* *:mode* *E359* +:mod[e] [mode] + +Without argument this only detects the screen size and redraws the screen. +[mode] was used on MS-DOS, but it doesn't work anymore. In |Vim9| this +command is not supported. + +============================================================================== +4. Slow and fast terminals *slow-fast-terminal* + *slow-terminal* + +If you have a fast terminal you may like to set the 'ruler' option. The +cursor position is shown in the status line. If you are using horizontal +scrolling ('wrap' option off) consider setting 'sidescroll' to a small +number. + +If you have a slow terminal you may want to reset the 'showcmd' option. +The command characters will not be shown in the status line. If the terminal +scrolls very slowly, set the 'scrolljump' to 5 or so. If the cursor is moved +off the screen (e.g., with "j") Vim will scroll 5 lines at a time. Another +possibility is to reduce the number of lines that Vim uses with the command +"z{height}<CR>". + +If the characters from the terminal are arriving with more than 1 second +between them you might want to set the 'timeout' and/or 'ttimeout' option. +See the "Options" chapter |options|. + +If your terminal does not support a scrolling region, but it does support +insert/delete line commands, scrolling with multiple windows may make the +lines jump up and down. This would happen if the 'ttyfast' option has been +reset. Check that with: > + verbose set ttyfast? + +If your terminal scrolls very slowly, but redrawing is not slow, set the +'ttyscroll' option to a small number, e.g., 3. This will make Vim redraw the +screen instead of scrolling, when there are more than 3 lines to be scrolled. + +If you are using a color terminal that is slow, use this command: > + hi NonText cterm=NONE ctermfg=NONE +This avoids that spaces are sent when they have different attributes. On most +terminals you can't see this anyway. + +If you are using Vim over a slow serial line, you might want to try running +Vim inside the "screen" program. Screen will optimize the terminal I/O quite +a bit. + +If you are testing termcap options, but you cannot see what is happening, you +might want to set the 'writedelay' option. When non-zero, one character is +sent to the terminal at a time. This makes the screen updating a lot slower, +making it possible to see what is happening. + +============================================================================== +5. Using the mouse *mouse-using* + +This section is about using the mouse on a terminal or a terminal window. How +to use the mouse in a GUI window is explained in |gui-mouse|. For scrolling +with a mouse wheel see |scroll-mouse-wheel|. + +Don't forget to enable the mouse with this command: > + :set mouse=a +Otherwise Vim won't recognize the mouse in all modes (See 'mouse'). + +Currently the mouse is supported for Unix in an xterm window, in a *BSD +console with |sysmouse|, in a Linux console (with GPM |gpm-mouse|), and +in a Windows console. +Mouse clicks can be used to position the cursor, select an area and paste. + +These characters in the 'mouse' option tell in which situations the mouse will +be used by Vim: + n Normal mode + v Visual mode + i Insert mode + c Command-line mode + h all previous modes when in a help file + a all previous modes + r for |hit-enter| prompt + +The default for 'mouse' is empty, the mouse is not used. Normally you would +do: > + :set mouse=a +to start using the mouse (this is equivalent to setting 'mouse' to "nvich"). +If you only want to use the mouse in a few modes or also want to use it for +the two questions you will have to concatenate the letters for those modes. +For example: > + :set mouse=nv +Will make the mouse work in Normal mode and Visual mode. > + :set mouse=h +Will make the mouse work in help files only (so you can use "g<LeftMouse>" to +jump to tags). + +Whether the selection that is started with the mouse is in Visual mode or +Select mode depends on whether "mouse" is included in the 'selectmode' +option. + *terminal-mouse* +In an xterm, with the currently active mode included in the 'mouse' option, +normal mouse clicks are used by Vim, mouse clicks with the shift or ctrl key +pressed go to the xterm. With the currently active mode not included in +'mouse' all mouse clicks go to the xterm. + +For terminals where it is not possible to have the mouse events be used by the +terminal itself by using a modifier, a workaround is to not use mouse events +for Vim in command-line mode: > + :set mouse=nvi +Then to select text with the terminal, use ":" to go to command-line mode, +select and copy the text to the system, then press Esc. + +Another way is to temporarily use ":sh" to run a shell, copy the text, then +exit the shell. 'mouse' can remain set to "a" then. + *xterm-clipboard* +In the Motif GUI version, when running in a terminal and there is +access to the X-server (DISPLAY is set), the copy and paste will behave like +in the GUI. If not, the middle mouse button will insert the unnamed register. +In that case, here is how you copy and paste a piece of text: + +Copy/paste with the mouse and Visual mode ('mouse' option must be set, see +above): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. This will start Visual mode and + highlight the selected area. +2. Press "y" to yank the Visual text in the unnamed register. +3. Click the left mouse button at the insert position. +4. Click the middle mouse button. + +Shortcut: If the insert position is on the screen at the same time as the +Visual text, you can do 2, 3 and 4 all in one: Click the middle mouse button +at the insert position. + +Note: When the |-X| command line argument is used, Vim will not connect to the +X server and copy/paste to the X clipboard (selection) will not work. Use the +shift key with the mouse buttons to let the xterm do the selection. + + *xterm-command-server* +When the X-server clipboard is available, the command server described in +|x11-clientserver| can be enabled with the --servername command line argument. + + *xterm-copy-paste* +NOTE: In some (older) xterms, it's not possible to move the cursor past column +95 or 223. This is an xterm problem, not Vim's. Get a newer xterm +|color-xterm|. Also see |'ttymouse'|. + +Copy/paste in xterm with (current mode NOT included in 'mouse'): +1. Press left mouse button on first letter of text, move mouse pointer to last + letter of the text and release the button. +2. Use normal Vim commands to put the cursor at the insert position. +3. Press "a" to start Insert mode. +4. Click the middle mouse button. +5. Press ESC to end Insert mode. +(The same can be done with anything in 'mouse' if you keep the shift key +pressed while using the mouse.) + +Note: if you lose the 8th bit when pasting (special characters are translated +into other characters), you may have to do "stty cs8 -istrip -parenb" in your +shell before starting Vim. + +Thus in an xterm the shift and ctrl keys cannot be used with the mouse. Mouse +commands requiring the CTRL modifier can be simulated by typing the "g" key +before using the mouse: + "g<LeftMouse>" is "<C-LeftMouse> (jump to tag under mouse click) + "g<RightMouse>" is "<C-RightMouse> ("CTRL-T") + + *mouse-mode-table* *mouse-overview* +A short overview of what the mouse buttons do, when 'mousemodel' is "extend": + +Normal Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes end yes +<C-LeftMouse> yes end yes "CTRL-]" (2) +<S-LeftMouse> yes no change yes "*" (2) *<S-LeftMouse>* +<LeftDrag> yes start or extend (1) no *<LeftDrag>* +<LeftRelease> yes start or extend (1) no +<MiddleMouse> yes if not active no put +<MiddleMouse> yes if active no yank and put +<RightMouse> yes start or extend yes +<A-RightMouse> yes start or extend blockw. yes *<A-RightMouse>* +<S-RightMouse> yes no change yes "#" (2) *<S-RightMouse>* +<C-RightMouse> no no change no "CTRL-T" +<RightDrag> yes extend no *<RightDrag>* +<RightRelease> yes extend no *<RightRelease>* + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<LeftMouse> yes (cannot be active) yes +<C-LeftMouse> yes (cannot be active) yes "CTRL-O^]" (2) +<S-LeftMouse> yes (cannot be active) yes "CTRL-O*" (2) +<LeftDrag> yes start or extend (1) no like CTRL-O (1) +<LeftRelease> yes start or extend (1) no like CTRL-O (1) +<MiddleMouse> no (cannot be active) no put register +<RightMouse> yes start or extend yes like CTRL-O +<A-RightMouse> yes start or extend blockw. yes +<S-RightMouse> yes (cannot be active) yes "CTRL-O#" (2) +<C-RightMouse> no (cannot be active) no "CTRL-O CTRL-T" + +In a help window: +event position selection change action ~ + cursor window ~ +<2-LeftMouse> yes (cannot be active) no "^]" (jump to help tag) + +When 'mousemodel' is "popup", these are different: + +Normal Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no +<A-LeftMouse> yes start or extend blockw. no *<A-LeftMouse>* +<RightMouse> no popup menu no + +Insert or Replace Mode: +event position selection change action ~ + cursor window ~ +<S-LeftMouse> yes start or extend (1) no like CTRL-O (1) +<A-LeftMouse> yes start or extend blockw. no +<RightMouse> no popup menu no + +(1) only if mouse pointer moved since press +(2) only if click is in same buffer + +Clicking the left mouse button causes the cursor to be positioned. If the +click is in another window that window is made the active window. When +editing the command-line the cursor can only be positioned on the +command-line. When in Insert mode Vim remains in Insert mode. If 'scrolloff' +is set, and the cursor is positioned within 'scrolloff' lines from the window +border, the text is scrolled. + +A selection can be started by pressing the left mouse button on the first +character, moving the mouse to the last character, then releasing the mouse +button. You will not always see the selection until you release the button, +only in some versions (GUI, Win32) will the dragging be shown immediately. +Note that you can make the text scroll by moving the mouse at least one +character in the first/last line in the window when 'scrolloff' is non-zero. + +In Normal, Visual and Select mode clicking the right mouse button causes the +Visual area to be extended. When 'mousemodel' is "popup", the left button has +to be used while keeping the shift key pressed. When clicking in a window +which is editing another buffer, the Visual or Select mode is stopped. + +In Normal, Visual and Select mode clicking the right mouse button with the alt +key pressed causes the Visual area to become blockwise. When 'mousemodel' is +"popup" the left button has to be used with the alt key. Note that this won't +work on systems where the window manager consumes the mouse events when the +alt key is pressed (it may move the window). + + *double-click* +Double, triple and quadruple clicks are supported when the GUI is active, for +Win32, and for an xterm (if the gettimeofday() function is available). For +selecting text, extra clicks extend the selection: + click select ~ + double word or % match *<2-LeftMouse>* + triple line *<3-LeftMouse>* + quadruple rectangular block *<4-LeftMouse>* +Exception: In a Help window a double click jumps to help for the word that is +clicked on. +A double click on a word selects that word. 'iskeyword' is used to specify +which characters are included in a word. A double click on a character +that has a match selects until that match (like using "v%"). If the match is +an #if/#else/#endif block, the selection becomes linewise. +For MS-Windows and xterm the time for double clicking can be set with the +'mousetime' option. For the other systems this time is defined outside of Vim. +An example, for using a double click to jump to the tag under the cursor: > + :map <2-LeftMouse> :exe "tag " .. expand("<cword>")<CR> + +Dragging the mouse with a double click (button-down, button-up, button-down +and then drag) will result in whole words to be selected. This continues +until the button is released, at which point the selection is per character +again. + +For scrolling with the mouse see |scroll-mouse-wheel|. + + *gpm-mouse* +The GPM mouse is only supported when the |+mouse_gpm| feature was enabled at +compile time. The GPM mouse driver (Linux console) does not support quadruple +clicks. + +In Insert mode, when a selection is started, Vim goes into Normal mode +temporarily. When Visual or Select mode ends, it returns to Insert mode. +This is like using CTRL-O in Insert mode. Select mode is used when the +'selectmode' option contains "mouse". + *sysmouse* +The sysmouse is only supported when the |+mouse_sysmouse| feature was enabled +at compile time. The sysmouse driver (*BSD console) does not support keyboard +modifiers. + + *drag-status-line* +When working with several windows, the size of the windows can be changed by +dragging the status line with the mouse. Point the mouse at a status line, +press the left button, move the mouse to the new position of the status line, +release the button. Just clicking the mouse in a status line makes that window +the current window, without moving the cursor. If by selecting a window it +will change position or size, the dragging of the status line will look +confusing, but it will work (just try it). + + *<MiddleRelease>* *<MiddleDrag>* +Mouse clicks can be mapped. The codes for mouse clicks are: + code mouse button normal action ~ + <LeftMouse> left pressed set cursor position + <LeftDrag> left moved while pressed extend selection + <LeftRelease> left released set selection end + <MiddleMouse> middle pressed paste text at cursor position + <MiddleDrag> middle moved while pressed - + <MiddleRelease> middle released - + <RightMouse> right pressed extend selection + <RightDrag> right moved while pressed extend selection + <RightRelease> right released set selection end + <X1Mouse> X1 button pressed - *X1Mouse* + <X1Drag> X1 moved while pressed - *X1Drag* + <X1Release> X1 button release - *X1Release* + <X2Mouse> X2 button pressed - *X2Mouse* + <X2Drag> X2 moved while pressed - *X2Drag* + <X2Release> X2 button release - *X2Release* + +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. + +Examples: > + :noremap <MiddleMouse> <LeftMouse><MiddleMouse> +Paste at the position of the middle mouse button click (otherwise the paste +would be done at the cursor position). > + + :noremap <LeftRelease> <LeftRelease>y +Immediately yank the selection, when using Visual mode. + +Note the use of ":noremap" instead of "map" to avoid a recursive mapping. +> + :map <X1Mouse> <C-O> + :map <X2Mouse> <C-I> +Map the X1 and X2 buttons to go forwards and backwards in the jump list, see +|CTRL-O| and |CTRL-I|. + + *mouse-swap-buttons* +To swap the meaning of the left and right mouse buttons: > + :noremap <LeftMouse> <RightMouse> + :noremap <LeftDrag> <RightDrag> + :noremap <LeftRelease> <RightRelease> + :noremap <RightMouse> <LeftMouse> + :noremap <RightDrag> <LeftDrag> + :noremap <RightRelease> <LeftRelease> + :noremap g<LeftMouse> <C-RightMouse> + :noremap g<RightMouse> <C-LeftMouse> + :noremap! <LeftMouse> <RightMouse> + :noremap! <LeftDrag> <RightDrag> + :noremap! <LeftRelease> <RightRelease> + :noremap! <RightMouse> <LeftMouse> + :noremap! <RightDrag> <LeftDrag> + :noremap! <RightRelease> <LeftRelease> +< + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt new file mode 100644 index 0000000..c5331fa --- /dev/null +++ b/runtime/doc/terminal.txt @@ -0,0 +1,1631 @@ +*terminal.txt* For Vim version 9.1. Last change: 2023 Nov 08 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Terminal window support *terminal* *terminal-window* + + +The terminal feature is optional, use this to check if your Vim has it: > + echo has('terminal') +If the result is "1" you have it. + + +1. Basic use |terminal-use| + Typing |terminal-typing| + Size and color |terminal-size-color| + Command syntax |:terminal| + Resizing |terminal-resizing| + Terminal Modes |Terminal-mode| + Cursor style |terminal-cursor-style| + Session |terminal-session| + Special keys |terminal-special-keys| + Unix |terminal-unix| + MS-Windows |terminal-ms-windows| +2. Terminal functions |terminal-function-details| +3. Terminal communication |terminal-communication| + Vim to job: term_sendkeys() |terminal-to-job| + Job to Vim: JSON API |terminal-api| + Using the client-server feature |terminal-client-server| +4. Remote testing |terminal-testing| +5. Diffing screen dumps |terminal-diff| + Writing a screen dump test for Vim |terminal-dumptest| + Creating a screen dump |terminal-screendump| + Comparing screen dumps |terminal-diffscreendump| +6. Debugging |terminal-debug| + Starting |termdebug-starting| + Example session |termdebug-example| + Stepping through code |termdebug-stepping| + Inspecting variables |termdebug-variables| + Navigating stack frames |termdebug-frames| + Other commands |termdebug-commands| + Events |termdebug-events| + Prompt mode |termdebug-prompt| + Mappings |termdebug-mappings| + Communication |termdebug-communication| + Customizing |termdebug-customizing| + +{only available when compiled with the |+terminal| feature} +The terminal feature requires the |+job| and |+channel| features. + +============================================================================== +1. Basic use *terminal-use* + +This feature is for running a terminal emulator in a Vim window. A job can be +started connected to the terminal emulator. For example, to run a shell: > + :term bash + +Or to run build command: > + :term make myprogram + +The job runs asynchronously from Vim, the window will be updated to show +output from the job, also while editing in another window. + + +Typing ~ + *terminal-typing* +When the keyboard focus is in the terminal window, typed keys will be sent to +the job. This uses a pty when possible. You can click outside of the +terminal window to move keyboard focus elsewhere. + + *t_CTRL-W_CTRL-W* *t_CTRL-W_:* +CTRL-W can be used to navigate between windows and other CTRL-W commands, e.g.: + CTRL-W CTRL-W move focus to the next window + CTRL-W : enter an Ex command +See |CTRL-W| for more commands. + +Special in the terminal window: *t_CTRL-W_.* *t_CTRL-W_N* + CTRL-W . send a CTRL-W to the job in the terminal + CTRL-W CTRL-\ send a CTRL-\ to the job in the terminal + CTRL-W N go to Terminal-Normal mode, see |Terminal-mode| + CTRL-\ CTRL-N go to Terminal-Normal mode, see |Terminal-mode| + CTRL-W " {reg} paste register {reg} *t_CTRL-W_quote* + Also works with the = register to insert the result of + evaluating an expression. + CTRL-W CTRL-C ends the job, see below |t_CTRL-W_CTRL-C| + CTRL-W gt go to next tabpage, same as `gt` *t_CTRL-W_gt* + CTRL-W gT go to previous tabpage, same as `gT` *t_CTRL-W_gT* + +See option 'termwinkey' for specifying another key instead of CTRL-W that +will work like CTRL-W. However, typing 'termwinkey' twice sends 'termwinkey' +to the job. For example: + 'termwinkey' CTRL-W move focus to the next window + 'termwinkey' : enter an Ex command + 'termwinkey' 'termwinkey' send 'termwinkey' to the job in the terminal + 'termwinkey' . send 'termwinkey' to the job in the terminal + 'termwinkey' CTRL-\ send a CTRL-\ to the job in the terminal + 'termwinkey' N go to terminal Normal mode, see below + 'termwinkey' CTRL-N same as CTRL-W N |t_CTRL-W_N| + 'termwinkey' CTRL-C same as CTRL-W CTRL-C |t_CTRL-W_CTRL-C| + *t_CTRL-\_CTRL-N* +The special key combination CTRL-\ CTRL-N can be used to switch to Normal +mode, just like this works in any other mode. + *t_CTRL-W_CTRL-C* +CTRL-W CTRL-C can be typed to forcefully end the job. On MS-Windows a +CTRL-Break will also kill the job. + +If you type CTRL-C the effect depends on what the pty has been configured to +do. For simple commands this causes a SIGINT to be sent to the job, which +would end it. Other commands may ignore the SIGINT or handle the CTRL-C +themselves (like Vim does). + +To change the keys you type use terminal mode mappings, see |:tmap|. +These are defined like any mapping, but apply only when typing keys that are +sent to the job running in the terminal. For example, to make F1 switch +to Terminal-Normal mode: > + tnoremap <F1> <C-W>N +You can use Esc, but you need to make sure it won't cause other keys to +break (cursor keys start with an Esc, so they may break), this probably only +works in the GUI: > + tnoremap <Esc> <C-W>N + set notimeout ttimeout timeoutlen=100 + +You can also create menus similar to terminal mode mappings, but you have to +use |:tlmenu| instead of |:tmenu|. + + *options-in-terminal* +After opening the terminal window and setting 'buftype' to "terminal" the +|TerminalWinOpen| autocommand event is triggered. This makes it possible to set +options specifically for the terminal window and buffer. Example: > + au TerminalWinOpen * setlocal bufhidden=hide +This only works properly if the terminal is not hidden. + +For both hidden and non-hidden terminals this works, both for buffer-local and +window-local options: > + au TerminalWinOpen,BufWinEnter * if &buftype == 'terminal' + \ | setlocal bufhidden=hide colorcolumn=123 + \ | endif +Note that for a hidden terminal the options are not set until the terminal is +no longer hidden. + +There is also the |TerminalOpen| event. Keep in mind this may be triggered +for a hidden terminal, then the current window and buffer are not that of the +new terminal. +You need to use <abuf>, which is set to the terminal buffer. Example: > + au TerminalOpen * call setbufvar(expand('<abuf>')->str2nr(), + \ '&termwinscroll', 1000) +For a window-local option, you need to delay setting the option until the +terminal window has been created (this only works for a hidden terminal): > + au TerminalOpen * exe printf( + \ 'au BufWinEnter <buffer=%d> ++once setlocal colorcolumn=%d', + \ expand('<abuf>')->str2nr(), 123) +For a non-hidden terminal use |TerminalWinOpen|. + +Mouse events (click and drag) are passed to the terminal. Mouse move events +are only passed when Vim itself is receiving them. For a terminal that is +when 'balloonevalterm' is enabled. + + +Size and color ~ + *terminal-size-color* +See option 'termwinsize' for controlling the size of the terminal window. +(TODO: scrolling when the terminal is larger than the window) + +The job running in the terminal can change the colors. The default foreground +and background colors are taken from Vim, the Normal highlight group. + +For a color terminal the 'background' option is used to decide whether the +terminal window will start with a white or black background. + +To use a different color the Terminal highlight group can be used, for +example: > + hi Terminal ctermbg=lightgrey ctermfg=blue guibg=lightgrey guifg=blue +Instead of Terminal another group can be specified with the "term_highlight" +option for `term_start()`. + + *g:terminal_ansi_colors* +In GUI mode or with 'termguicolors', the 16 ANSI colors used by default in new +terminal windows may be configured using the variable +`g:terminal_ansi_colors`, which should be a list of 16 color names or +hexadecimal color codes, similar to those accepted by |highlight-guifg|. When +not using GUI colors, the terminal window always uses the 16 ANSI colors of +the underlying terminal. +When using `term_start()` the colors can be set with the "ansi_colors" option. +The |term_setansicolors()| function can be used to change the colors, and +|term_getansicolors()| to get the currently used colors. + + +Command syntax ~ + +:[range]ter[minal] [options] [command] *:ter* *:terminal* + Open a new terminal window. + + If [command] is provided run it as a job and connect + the input and output to the terminal. + If [command] is not given the 'shell' option is used. + if [command] is NONE no job is started, the pty of the + terminal can be used by a command like gdb. + + If [command] is missing the default behavior is to + close the terminal when the shell exits. This can be + changed with the ++noclose argument. + If [command] is present the default behavior is to + keep the terminal open in Terminal-Normal mode. This + can be changed with the ++close argument. + + No Vim command can follow, any | is included in + [command]. Use `:execute` if you must have a Vim + command following in the same line. + + A new buffer will be created, using [command] or + 'shell' as the name, prefixed with a "!". If a buffer + by this name already exists a number is added in + parentheses. E.g. if "gdb" exists the second terminal + buffer will use "!gdb (1)". + + If [range] is given the specified lines are used as + input for the job. It will not be possible to type + keys in the terminal window. For MS-Windows see the + ++eof argument below. + + *term++close* *term++open* + Supported [options] are: + ++close The terminal window will close + automatically when the job terminates. + |terminal-close| + ++noclose The terminal window will NOT close + automatically when the job terminates. + ++open When the job terminates and no window + shows it, a window will be opened. + Note that this can be interruptive. + The last of ++close, ++noclose and ++open + matters and rules out earlier arguments. + + ++curwin Open the terminal in the current + window, do not split the current + window. Fails if the current buffer + cannot be |abandon|ed. + ++hidden Open the terminal in a hidden buffer, + no window will be used. + ++norestore Do not include this terminal window + in a session file. + ++shell Instead of executing {command} + directly, use a shell, like with + `:!command` *E279* + {only works on Unix and MS-Windows} + ++kill={how} When trying to close the terminal + window kill the job with {how}. See + |term_setkill()| for the values. + ++rows={height} Use {height} for the terminal window + height. If the terminal uses the full + Vim height (no window above or below + the terminal window) the command line + height will be reduced as needed. + ++cols={width} Use {width} for the terminal window + width. If the terminal uses the full + Vim width (no window left or right of + the terminal window) this value is + ignored. + ++eof={text} When using [range]: text to send after + the last line was written. Cannot + contain white space. A CR is + appended. For MS-Windows the default + is to send CTRL-D. + E.g. for a shell use "++eof=exit" and + for Python "++eof=exit()". Special + codes can be used like with `:map`, + e.g. "<C-Z>" for CTRL-Z. + ++type={pty} (MS-Windows only): Use {pty} as the + virtual console. See 'termwintype' + for the values. + ++api={expr} Permit the function name starting with + {expr} to be called as |terminal-api| + function. If {expr} is empty then no + function can be called. + + If you want to use more options use the |term_start()| + function. + If you want to split the window vertically, use: > + :vertical terminal +< Or short: > + :vert ter + +When the buffer associated with the terminal is forcibly unloaded or wiped out +the job is killed, similar to calling `job_stop(job, "kill")` . +Closing the window normally results in |E947|. When a kill method was set +with "++kill={how}" or |term_setkill()| then closing the window will use that +way to kill or interrupt the job. For example: > + :term ++kill=term tail -f /tmp/log + +So long as the job is running the window behaves like it contains a modified +buffer. Trying to close the window with `CTRL-W :quit` fails. When using +`CTRL-W :quit!` the job is ended. The text in the window is lost, the buffer +is deleted. With `CTRL-W :bunload!` the buffer remains but will be empty. + +Trying to close the window with `CTRL-W :close` also fails. Using +`CTRL-W :close!` will close the window and make the buffer hidden. + +You can use `CTRL-W :hide` to close the terminal window and make the buffer +hidden, the job keeps running. The `:buffer` command can be used to turn the +current window into a terminal window. If there are unsaved changes this +fails, use ! to force, as usual. + + *terminal-close* +When the terminal window is closed, e.g. when the shell exits and "++close" +argument was used, and this is the last normal Vim window, then Vim will exit. +This is like using |:quit| in a normal window. Help and preview windows are +not counted. + +To have a background job run without a window, and open the window when it's +done, use options like this: > + :term ++hidden ++open make +Note that the window will open at an unexpected moment, this will interrupt +what you are doing. + + *E947* *E948* +So long as the job is running, the buffer is considered modified and Vim +cannot be quit easily, see |abandon|. + +When the job has finished and no changes were made to the buffer: closing the +window will wipe out the buffer. + +Before changes can be made to a terminal buffer, the 'modifiable' option must +be set. This is only possible when the job has finished. At the first change +the buffer will become a normal buffer and the highlighting is removed. +You may want to change the buffer name with |:file| to be able to write, since +the buffer name will still be set to the command. + + +Resizing ~ + *terminal-resizing* +The size of the terminal can be in one of three modes: + +1. The 'termwinsize' option is empty: The terminal size follows the window + size. The minimal size is 2 screen lines with 10 cells. + +2. The 'termwinsize' option is "rows*cols", where "rows" is the minimal number + of screen rows and "cols" is the minimal number of cells. + +3. The 'termwinsize' option is "rowsXcols" (where the x is upper or lower + case). The terminal size is fixed to the specified number of screen lines + and cells. If the window is bigger there will be unused empty space. + +If the window is smaller than the terminal size, only part of the terminal can +be seen (the lower-left part). + +The |term_getsize()| function can be used to get the current size of the +terminal. |term_setsize()| can be used only when in the first or second mode, +not when 'termwinsize' is "rowsXcols". + + +Terminal-Job and Terminal-Normal mode ~ + *Terminal-mode* *Terminal-Job* +When the job is running the contents of the terminal is under control of the +job. That includes the cursor position. Typed keys are sent to the job. +The terminal contents can change at any time. This is called Terminal-Job +mode. + +Use CTRL-W N (or 'termwinkey' N) to switch to Terminal-Normal mode. Now the +contents of the terminal window is under control of Vim, the job output is +suspended. CTRL-\ CTRL-N does the same. + +Terminal-Job mode is where |:tmap| mappings are applied. Keys sent by +|term_sendkeys()| are not subject to tmap, but keys from |feedkeys()| are. + +It is not possible to enter Insert mode from Terminal-Job mode. + + *Terminal-Normal* *E946* +In Terminal-Normal mode you can move the cursor around with the usual Vim +commands, Visually mark text, yank text, etc. But you cannot change the +contents of the buffer. The commands that would start insert mode, such as +'i' and 'a', return to Terminal-Job mode. The window will be updated to show +the contents of the terminal. |:startinsert| is ineffective. + +In Terminal-Normal mode the statusline and window title show "(Terminal)". If +the job ends while in Terminal-Normal mode this changes to +"(Terminal-finished)". + +When the job outputs lines in the terminal, such that the contents scrolls off +the top, those lines are remembered and can be seen in Terminal-Normal mode. +The number of lines is limited by the 'termwinscroll' option. When going over +this limit, the first 10% of the scrolled lines are deleted and are lost. + + +Cursor style ~ + *terminal-cursor-style* +By default the cursor in the terminal window uses a not blinking block. The +normal xterm escape sequences can be used to change the blinking state and the +shape. Once focus leaves the terminal window Vim will restore the original +cursor. + +An exception is when xterm is started with the "-bc" argument, or another way +that causes the cursor to blink. This actually means that the blinking flag +is inverted. Since Vim cannot detect this, the terminal window cursor +blinking will also be inverted. + + +Session ~ + *terminal-session* +A terminal window will be restored when using a session file, if possible and +wanted. + +If "terminal" was removed from 'sessionoptions' then no terminal windows will +be restored. + +If the job in the terminal was finished the window will not be restored. + +If the terminal can be restored, the command that was used to open it will be +used again. To change this use the |term_setrestore()| function. This can +also be used to not restore a specific terminal by setting the command to +"NONE". + + +Special keys ~ + *terminal-special-keys* +Since the terminal emulator simulates an xterm, only escape sequences that +both Vim and xterm recognize will be available in the terminal window. If you +want to pass on other escape sequences to the job running in the terminal you +need to set up forwarding. Example: > + tmap <expr> <Esc>]b SendToTerm("\<Esc>]b") + func SendToTerm(what) + call term_sendkeys('', a:what) + return '' + endfunc + + +Unix ~ + *terminal-unix* +On Unix a pty is used to make it possible to run all kinds of commands. You +can even run Vim in the terminal! That's used for debugging, see below. + +Environment variables are used to pass information to the running job: + TERM the name of the terminal, from the 'term' option or + $TERM in the GUI; falls back to "xterm" if it does not + start with "xterm" + ROWS number of rows in the terminal initially + LINES same as ROWS + COLUMNS number of columns in the terminal initially + COLORS number of colors, 't_Co' (256*256*256 in the GUI) + VIM_SERVERNAME v:servername + VIM_TERMINAL v:version + + +MS-Windows ~ + *terminal-ms-windows* +On MS-Windows winpty is used to make it possible to run all kind of commands. +Obviously, they must be commands that run in a terminal, not open their own +window. + +You need the following two files from winpty: + + winpty.dll + winpty-agent.exe + +You can download them from the following page: + + https://github.com/rprichard/winpty + +Just put the files somewhere in your PATH. You can set the 'winptydll' option +to point to the right file, if needed. If you have both the 32-bit and 64-bit +version, rename to winpty32.dll and winpty64.dll to match the way Vim was +build. + *ConPTY* *E982* +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. + +Environment variables are used to pass information to the running job: + VIM_SERVERNAME v:servername + +============================================================================== +2. Terminal functions *terminal-function-details* + + *term_dumpdiff()* +term_dumpdiff({filename}, {filename} [, {options}]) + Open a new window displaying the difference between the two + files. The files must have been created with + |term_dumpwrite()|. + Returns the buffer number or zero when the diff fails. + Also see |terminal-diff|. + NOTE: this does not work with double-width characters yet. + + The top part of the buffer contains the contents of the first + file, the bottom part of the buffer contains the contents of + the second file. The middle part shows the differences. + The parts are separated by a line of equals. + + If the {options} argument is present, it must be a Dict with + these possible members: + "term_name" name to use for the buffer name, instead + of the first file name. + "term_rows" vertical size to use for the terminal, + instead of using 'termwinsize', but + respecting the minimal size + "term_cols" horizontal size to use for the terminal, + instead of using 'termwinsize', but + respecting the minimal size + "vertical" split the window vertically + "curwin" use the current window, do not split the + window; fails if the current buffer + cannot be |abandon|ed + "bufnr" do not create a new buffer, use the + existing buffer "bufnr". This buffer + must have been previously created with + term_dumpdiff() or term_dumpload() and + visible in a window. + "norestore" do not add the terminal window to a + session file + + Each character in the middle part indicates a difference. If + there are multiple differences only the first in this list is + used: + X different character + w different width + f different foreground color + b different background color + a different attribute + + missing position in first file + - missing position in second file + > cursor position in first file, not in second + < cursor position in second file, not in first + + Using the "s" key the top and bottom parts are swapped. This + makes it easy to spot a difference. + + Can also be used as a |method|: > + GetFilename()->term_dumpdiff(otherfile) +< + *term_dumpload()* +term_dumpload({filename} [, {options}]) + Open a new window displaying the contents of {filename} + The file must have been created with |term_dumpwrite()|. + Returns the buffer number or zero when it fails. + Also see |terminal-diff|. + + For {options} see |term_dumpdiff()|. + + Can also be used as a |method|: > + GetFilename()->term_dumpload() +< + *term_dumpwrite()* +term_dumpwrite({buf}, {filename} [, {options}]) + Dump the contents of the terminal screen of {buf} in the file + {filename}. This uses a format that can be used with + |term_dumpload()| and |term_dumpdiff()|. + If the job in the terminal already finished an error is given: + *E958* + If {filename} already exists an error is given: *E953* + Also see |terminal-diff|. + + {options} is a dictionary with these optional entries: + "rows" maximum number of rows to dump + "columns" maximum number of columns to dump + + Can also be used as a |method|, the base is used for the file + name: > + GetFilename()->term_dumpwrite(bufnr) + +term_getaltscreen({buf}) *term_getaltscreen()* + Returns 1 if the terminal of {buf} is using the alternate + screen. + {buf} is used as with |term_getsize()|. + + Can also be used as a |method|: > + GetBufnr()->term_getaltscreen() + + +term_getansicolors({buf}) *term_getansicolors()* + Get the ANSI color palette in use by terminal {buf}. + Returns a List of length 16 where each element is a String + representing a color in hexadecimal "#rrggbb" format. + Also see |term_setansicolors()| and |g:terminal_ansi_colors|. + If neither was used returns the default colors. + + {buf} is used as with |term_getsize()|. If the buffer does not + exist or is not a terminal window, an empty list is returned. + + Can also be used as a |method|: > + GetBufnr()->term_getansicolors() + +< {only available when compiled with GUI enabled and/or the + |+termguicolors| feature} + +term_getattr({attr}, {what}) *term_getattr()* + Given {attr}, a value returned by term_scrape() in the "attr" + item, return whether {what} is on. {what} can be one of: + bold + italic + underline + strike + reverse + + Can also be used as a |method|: > + GetAttr()->term_getattr() + + +term_getcursor({buf}) *term_getcursor()* + Get the cursor position of terminal {buf}. Returns a list with + two numbers and a dictionary: [row, col, dict]. + + "row" and "col" are one based, the first screen cell is row + 1, column 1. This is the cursor position of the terminal + itself, not of the Vim window. + + "dict" can have these members: + "visible" one when the cursor is visible, zero when it + is hidden. + "blink" one when the cursor is blinking, zero when it + is not blinking. + "shape" 1 for a block cursor, 2 for underline and 3 + for a vertical bar. + "color" color of the cursor, e.g. "green" + + {buf} must be the buffer number of a terminal window. If the + buffer does not exist or is not a terminal window, an empty + list is returned. + + Can also be used as a |method|: > + GetBufnr()->term_getcursor() + +term_getjob({buf}) *term_getjob()* + Get the Job associated with terminal window {buf}. + {buf} is used as with |term_getsize()|. + Returns |v:null| when there is no job. + + Can also be used as a |method|: > + GetBufnr()->term_getjob() + + +term_getline({buf}, {row}) *term_getline()* + Get a line of text from the terminal window of {buf}. + {buf} is used as with |term_getsize()|. + + The first line has {row} one. When {row} is "." the cursor + line is used. When {row} is invalid an empty string is + returned. + + To get attributes of each character use |term_scrape()|. + + Can also be used as a |method|: > + GetBufnr()->term_getline(row) + + +term_getscrolled({buf}) *term_getscrolled()* + Return the number of lines that scrolled to above the top of + terminal {buf}. This is the offset between the row number + used for |term_getline()| and |getline()|, so that: > + term_getline(buf, N) +< is equal to: > + getline(N + term_getscrolled(buf)) +< (if that line exists). + + {buf} is used as with |term_getsize()|. + + Can also be used as a |method|: > + GetBufnr()->term_getscrolled() + + +term_getsize({buf}) *term_getsize()* + Get the size of terminal {buf}. Returns a list with two + numbers: [rows, cols]. This is the size of the terminal, not + the window containing the terminal. + + {buf} must be the buffer number of a terminal window. Use an + empty string for the current buffer. If the buffer does not + exist or is not a terminal window, an empty list is returned. + + Can also be used as a |method|: > + GetBufnr()->term_getsize() + + +term_getstatus({buf}) *term_getstatus()* + Get the status of terminal {buf}. This returns a String with + a comma-separated list of these items: + running job is running + finished job has finished + normal in Terminal-Normal mode + One of "running" or "finished" is always present. + + {buf} must be the buffer number of a terminal window. If the + buffer does not exist or is not a terminal window, an empty + string is returned. + + Can also be used as a |method|: > + GetBufnr()->term_getstatus() + + +term_gettitle({buf}) *term_gettitle()* + Get the title of terminal {buf}. This is the title that the + job in the terminal has set. + + {buf} must be the buffer number of a terminal window. If the + buffer does not exist or is not a terminal window, an empty + string is returned. + + Can also be used as a |method|: > + GetBufnr()->term_gettitle() + + +term_gettty({buf} [, {input}]) *term_gettty()* + Get the name of the controlling terminal associated with + terminal window {buf}. {buf} is used as with |term_getsize()|. + + When {input} is omitted or 0, return the name for writing + (stdout). When {input} is 1 return the name for reading + (stdin). On UNIX, both return same name. + + Can also be used as a |method|: > + GetBufnr()->term_gettty() + + +term_list() *term_list()* + Return a list with the buffer numbers of all buffers for + terminal windows. + + +term_scrape({buf}, {row}) *term_scrape()* + Get the contents of {row} of terminal screen of {buf}. + For {buf} see |term_getsize()|. + + The first line has {row} one. When {row} is "." the cursor + line is used. When {row} is invalid an empty string is + returned. + + Return a List containing a Dict for each screen cell: + "chars" character(s) at the cell + "fg" foreground color as #rrggbb + "bg" background color as #rrggbb + "attr" attributes of the cell, use |term_getattr()| + to get the individual flags + "width" cell width: 1 or 2 + For a double-width cell there is one item, thus the list can + be shorter than the width of the terminal. + + Can also be used as a |method|: > + GetBufnr()->term_scrape(row) + + +term_sendkeys({buf}, {keys}) *term_sendkeys()* + Send keystrokes {keys} to terminal {buf}. + {buf} is used as with |term_getsize()|. + + {keys} are translated as key sequences. For example, "\<c-x>" + means the character CTRL-X. + + Can also be used as a |method|: > + GetBufnr()->term_sendkeys(keys) + + +term_setansicolors({buf}, {colors}) *term_setansicolors()* + Set the ANSI color palette used by terminal {buf}. + {colors} must be a List of 16 valid color names or hexadecimal + color codes, like those accepted by |highlight-guifg|. + Also see |term_getansicolors()| and |g:terminal_ansi_colors|. + + The colors normally are: + 0 black + 1 dark red + 2 dark green + 3 brown + 4 dark blue + 5 dark magenta + 6 dark cyan + 7 light grey + 8 dark grey + 9 red + 10 green + 11 yellow + 12 blue + 13 magenta + 14 cyan + 15 white + + These colors are used in the GUI and in the terminal when + 'termguicolors' is set. When not using GUI colors (GUI mode + or 'termguicolors'), the terminal window always uses the 16 + ANSI colors of the underlying terminal. + + Can also be used as a |method|: > + GetBufnr()->term_setansicolors(colors) + +< {only available with GUI enabled and/or the |+termguicolors| + feature} + + +term_setapi({buf}, {expr}) *term_setapi()* + Set the function name prefix to be used for the |terminal-api| + function in terminal {buf}. For example: > + :call term_setapi(buf, "Myapi_") + :call term_setapi(buf, "") +< + The default is "Tapi_". When {expr} is an empty string then + no |terminal-api| function can be used for {buf}. + + When used as a method the base is used for {buf}: > + GetBufnr()->term_setapi({expr}) + + +term_setkill({buf}, {how}) *term_setkill()* + When exiting Vim or trying to close the terminal window in + another way, {how} defines whether the job in the terminal can + be stopped. + When {how} is empty (the default), the job will not be + stopped, trying to exit will result in |E947|. + Otherwise, {how} specifies what signal to send to the job. + See |job_stop()| for the values. + + After sending the signal Vim will wait for up to a second to + check that the job actually stopped. + + Can also be used as a |method|: > + GetBufnr()->term_setkill(how) + + +term_setrestore({buf}, {command}) *term_setrestore()* + Set the command to write in a session file to restore the job + in this terminal. The line written in the session file is: > + terminal ++curwin ++cols=%d ++rows=%d {command} +< Make sure to escape the command properly. + + Use an empty {command} to run 'shell'. + Use "NONE" to not restore this window. + + Can also be used as a |method|: > + GetBufnr()->term_setrestore(command) + + +term_setsize({buf}, {rows}, {cols}) *term_setsize()* *E955* + Set the size of terminal {buf}. The size of the window + containing the terminal will also be adjusted, if possible. + If {rows} or {cols} is zero or negative, that dimension is not + changed. + + {buf} must be the buffer number of a terminal window. Use an + empty string for the current buffer. If the buffer does not + exist or is not a terminal window, an error is given. + + Can also be used as a |method|: > + GetBufnr()->term_setsize(rows, cols) + + +term_start({cmd} [, {options}]) *term_start()* + Open a terminal window and run {cmd} in it. + + {cmd} can be a string or a List, like with |job_start()|. The + string "NONE" can be used to open a terminal window without + starting a job, the pty of the terminal can be used by a + command like gdb. + + Returns the buffer number of the terminal window. If {cmd} + cannot be executed the window does open and shows an error + message. + If opening the window fails zero is returned. + + {options} are similar to what is used for |job_start()|, see + |job-options|. However, not all options can be used. These + are supported: + all timeout options + "stoponexit", "cwd", "env" + "callback", "out_cb", "err_cb", "exit_cb", "close_cb" + "in_io", "in_top", "in_bot", "in_name", "in_buf" + "out_io", "out_name", "out_buf", "out_modifiable", "out_msg" + "err_io", "err_name", "err_buf", "err_modifiable", "err_msg" + However, at least one of stdin, stdout or stderr must be + connected to the terminal. When I/O is connected to the + terminal then the callback function for that part is not used. + + There are extra options: + "term_name" name to use for the buffer name, instead + of the command name. + "term_rows" vertical size to use for the terminal, + instead of using 'termwinsize'; valid + range is from zero to 1000 + "term_cols" horizontal size to use for the terminal, + instead of using 'termwinsize' + "vertical" split the window vertically; note that + other window position can be defined with + command modifiers, such as |:belowright|. + "curwin" use the current window, do not split the + window; fails if the current buffer + cannot be |abandon|ed + "hidden" do not open a window + "norestore" do not add the terminal window to a + session file + "term_kill" what to do when trying to close the + terminal window, see |term_setkill()| + "term_finish" What to do when the job is finished: + "close": close any windows + "open": open window if needed + Note that "open" can be interruptive. + See |term++close| and |term++open|. + "term_opencmd" command to use for opening the window when + "open" is used for "term_finish"; must + have "%d" where the buffer number goes, + e.g. "10split|buffer %d"; when not + specified "botright sbuf %d" is used + "term_highlight" highlight group to use instead of + "Terminal" + "eof_chars" Text to send after all buffer lines were + written to the terminal. When not set + CTRL-D is used on MS-Windows. For Python + use CTRL-Z or "exit()". For a shell use + "exit". A CR is always added. + "ansi_colors" A list of 16 color names or hex codes + defining the ANSI palette used in GUI + color modes. See |g:terminal_ansi_colors|. + "tty_type" (MS-Windows only): Specify which pty to + use. See 'termwintype' for the values. + "term_api" function name prefix for the + |terminal-api| function. See + |term_setapi()|. + + Can also be used as a |method|: > + GetCommand()->term_start() + + +term_wait({buf} [, {time}]) *term_wait()* + Wait for pending updates of {buf} to be handled. + {buf} is used as with |term_getsize()|. + {time} is how long to wait for updates to arrive in msec. If + not set then 10 msec will be used. + + Can also be used as a |method|: > + GetBufnr()->term_wait() + +============================================================================== +3. Terminal communication *terminal-communication* + +There are several ways to communicate with the job running in a terminal: +- Use |term_sendkeys()| to send text and escape sequences from Vim to the job. +- Use the JSON API to send encoded commands from the job to Vim. +- Use the |client-server| mechanism. This works on machines with an X server + and on MS-Windows. + + +Vim to job: term_sendkeys() ~ + *terminal-to-job* +This allows for remote controlling the job running in the terminal. It is a +one-way mechanism. The job can update the display to signal back to Vim. +For example, if a shell is running in a terminal, you can do: > + call term_sendkeys(buf, "ls *.java\<CR>") + +This requires for the job to be in the right state where it will do the right +thing when receiving the keys. For the above example, the shell must be +waiting for a command to be typed. + +For a job that was written for the purpose, you can use the JSON API escape +sequence in the other direction. E.g.: > + call term_sendkeys(buf, "\<Esc>]51;["response"]\x07") + + +Job to Vim: JSON API ~ + *terminal-api* +The job can send JSON to Vim, using a special escape sequence. The JSON +encodes a command that Vim understands. Example of such a message: > + <Esc>]51;["drop", "README.md"]<07> + +The body is always a list, making it easy to find the end: ]<07>. +The <Esc>]51;msg<07> sequence is reserved by xterm for "Emacs shell", which is +similar to what we are doing here. + +Currently supported commands: + + call {funcname} {argument} + + Call a user defined function with {argument}. + The function is called with two arguments: the buffer number + of the terminal and {argument}, the decoded JSON argument. + By default, the function name must start with "Tapi_" to avoid + accidentally calling a function not meant to be used for the + terminal API. This can be changed with |term_setapi()|. + The user function should sanity check the argument. + The function can use |term_sendkeys()| to send back a reply. + Example in JSON: > + ["call", "Tapi_Impression", ["play", 14]] +< Calls a function defined like this: > + function Tapi_Impression(bufnum, arglist) + if len(a:arglist) == 2 + echomsg "impression " .. a:arglist[0] + echomsg "count " .. a:arglist[1] + endif + endfunc +< Output from `:echo` may be erased by a redraw, use `:echomsg` + to be able to see it with `:messages`. + + drop {filename} [options] + + Let Vim open a file, like the `:drop` command. If {filename} + is already open in a window, switch to that window. Otherwise + open a new window to edit {filename}. + Note that both the job and Vim may change the current + directory, thus it's best to use the full path. + + [options] is only used when opening a new window. If present, + it must be a Dict. Similarly to |++opt|, these entries are + recognized: + "ff" file format: "dos", "mac" or "unix" + "fileformat" idem + "enc" overrides 'fileencoding' + "encoding" idem + "bin" sets 'binary' + "binary" idem + "nobin" resets 'binary' + "nobinary" idem + "bad" specifies behavior for bad characters, see + |++bad| + + Example in JSON: > + ["drop", "path/file.txt", {"ff": "dos"}] + +A trick to have Vim send this escape sequence: > + exe "set t_ts=\<Esc>]51; t_fs=\x07" + let &titlestring = '["call","Tapi_TryThis",["hello",123]]' + redraw + set t_ts& t_fs& + +Rationale: Why not allow for any command or expression? Because that might +create a security problem. + *terminal-autoshelldir* +This can be used to pass the current directory from a shell to Vim. +Put this in your .vimrc: > + def g:Tapi_lcd(_, path: string) + if isdirectory(path) + execute 'silent lcd ' .. fnameescape(path) + endif + enddef +< +And, in a bash init file: > + if [[ -n "$VIM_TERMINAL" ]]; then + PROMPT_COMMAND='_vim_sync_PWD' + function _vim_sync_PWD() { + printf '\033]51;["call", "Tapi_lcd", "%q"]\007' "$PWD" + } + fi +< +Or, for zsh: > + if [[ -n "$VIM_TERMINAL" ]]; then + autoload -Uz add-zsh-hook + add-zsh-hook -Uz chpwd _vim_sync_PWD + function _vim_sync_PWD() { + printf '\033]51;["call", "Tapi_lcd", "%q"]\007' "$PWD" + } + fi +< +Or, for fish: > + if test -n "$VIM_TERMINAL" + function _vim_sync_PWD --on-variable=PWD + printf '\033]51;["call", "Tapi_lcd", "%s"]\007' "$PWD" + end + end + + +Using the client-server feature ~ + *terminal-client-server* +This only works when v:servername is not empty. If needed you can set it, +before opening the terminal, with: > + call remote_startserver('vim-server') + +$VIM_SERVERNAME is set in the terminal to pass on the server name. + +In the job you can then do something like: > + vim --servername $VIM_SERVERNAME --remote +123 some_file.c +This will open the file "some_file.c" and put the cursor on line 123. + +============================================================================== +4. Remote testing *terminal-testing* + +Most Vim tests execute a script inside Vim. For some tests this does not +work, running the test interferes with the code being tested. To avoid this +Vim is executed in a terminal window. The test sends keystrokes to it and +inspects the resulting screen state. + +Functions ~ + +|term_sendkeys()| send keystrokes to a terminal (not subject to tmap) +|term_wait()| wait for screen to be updated +|term_scrape()| inspect terminal screen + + +============================================================================== +5. Diffing screen dumps *terminal-diff* + +In some cases it can be bothersome to test that Vim displays the right +characters on the screen. E.g. with syntax highlighting. To make this +simpler it is possible to take a screen dump of a terminal and compare it to +an expected screen dump. + +Vim uses the window size, text, color and other attributes as displayed. The +Vim screen size, font and other properties do not matter. Therefore this +mechanism is portable across systems. A conventional screenshot would reflect +all differences, including font size and family. + + +Writing a screen dump test for Vim ~ + *terminal-dumptest* +For an example see the Test_syntax_c() function in +src/testdir/test_syntax.vim. The main parts are: +- Write a file you want to test with. This is useful for testing syntax + highlighting. You can also start Vim with an empty buffer. +- Run Vim in a terminal with a specific size. The default is 20 lines of 75 + characters. This makes sure the dump is always this size. The function + RunVimInTerminal() takes care of this. Pass it the arguments for the Vim + command. +- Send any commands to Vim using |term_sendkeys()|. For example: > + call term_sendkeys(buf, ":echo &lines &columns\<CR>") +- Check that the screen is now in the expected state, using + VerifyScreenDump(). This expects the reference screen dump to be in the + src/testdir/dumps/ directory. Pass the name without ".dump". It is + recommended to use the name of the test function and a sequence number, so + that we know what test is using the file. +- Repeat sending commands and checking the state. +- Finally stop Vim by calling StopVimInTerminal(). + +The first time you do this you won't have a screen dump yet. Create an empty +file for now, e.g.: > + touch src/testdir/dumps/Test_function_name_01.dump + +The test will then fail, giving you the command to compare the reference dump +and the failed dump, e.g.: > + call term_dumpdiff("failed/Test_func.dump", "dumps/Test_func.dump") + +Use this command in Vim, with the current directory set to src/testdir. +Once you are satisfied with the test, move the failed dump in place of the +reference: > + :!mv failed/Test_func.dump dumps/Test_func.dump + + +Creating a screen dump ~ + *terminal-screendump* +To create the screen dump, run Vim (or any other program) in a terminal and +make it show the desired state. Then use the |term_dumpwrite()| function to +create a screen dump file. For example: > + :call term_dumpwrite(77, "mysyntax.dump") + +Here "77" is the buffer number of the terminal. Use `:ls!` to see it. + +You can view the screen dump with |term_dumpload()|: > + :call term_dumpload("mysyntax.dump") + +To verify that Vim still shows exactly the same screen, run Vim again with +exactly the same way to show the desired state. Then create a screen dump +again, using a different file name: > + :call term_dumpwrite(88, "test.dump") + +To assert that the files are exactly the same use |assert_equalfile()|: > + call assert_equalfile("mysyntax.dump", "test.dump") + +If there are differences then v:errors will contain the error message. + + +Comparing screen dumps ~ + *terminal-diffscreendump* +|assert_equalfile()| does not make it easy to see what is different. +To spot the problem use |term_dumpdiff()|: > + call term_dumpdiff("mysyntax.dump", "test.dump") + +This will open a window consisting of three parts: +1. The contents of the first dump +2. The difference between the first and second dump +3. The contents of the second dump + +You can usually see what differs in the second part. Use the 'ruler' to +relate it to the position in the first or second dump. Letters indicate the +kind of difference: + X different character + > cursor in first but not in second + < cursor in second but not in first + w character width differs (single vs double width) + f foreground color differs + b background color differs + a attribute differs (bold, underline, reverse, etc.) + ? character missing in both + + character missing in first + - character missing in second + +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* + +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 +Vim this also works remotely over an ssh connection. + +When the |+terminal| feature is missing, the plugin will use the "prompt" +buffer type, if possible. The running program will then use a newly opened +terminal window. See |termdebug-prompt| below for details. + + +Starting ~ + *termdebug-starting* +Load the plugin with this command: > + packadd termdebug +< *:Termdebug* +To start debugging use `:Termdebug` or `:TermdebugCommand` followed by the +command name, for example: > + :Termdebug vim + +This opens two windows: + +gdb window A terminal window in which "gdb vim" is executed. Here you + can directly interact with gdb. The buffer name is "!gdb". + +program window A terminal window for the executed program. When "run" is + used in gdb the program I/O will happen in this window, so + that it does not interfere with controlling gdb. The buffer + name is "debugged program". + +The current window is used to show the source code. When gdb pauses the +source file location will be displayed, if possible. A sign is used to +highlight the current position, using highlight group debugPC. + +If the buffer in the current window is modified, another window will be opened +to display the current gdb position. You can use `:Winbar` to add a window +toolbar there. + +Focus the terminal of the executed program to interact with it. This works +the same as any command running in a terminal window. + +When the debugger ends, typically by typing "quit" in the gdb window, the two +opened windows are closed. + +Only one debugger can be active at a time. + *:TermdebugCommand* +If you want to give specific commands to the command being debugged, you can +use the `:TermdebugCommand` command followed by the command name and +additional parameters. > + :TermdebugCommand vim --clean -c ':set nu' + +Both the `:Termdebug` and `:TermdebugCommand` support an optional "!" bang +argument to start the command right away, without pausing at the gdb window +(and cursor will be in the debugged window). For example: > + :TermdebugCommand! vim --clean + +To attach gdb to an already running executable or use a core file, pass extra +arguments. E.g.: > + :Termdebug vim core + :Termdebug vim 98343 + +If no argument is given, you'll end up in a gdb window, in which you need to +specify which command to run using e.g. the gdb `file` command. + + +Example session ~ + *termdebug-example* +Start in the Vim "src" directory and build Vim: > + % make +Make sure that debug symbols are present, usually that means that $CFLAGS +includes "-g". + +Start Vim: > + % ./vim + +Load the termdebug plugin and start debugging Vim: > + :packadd termdebug + :Termdebug vim +You should now have three windows: + source - where you started, has a window toolbar with buttons + gdb - you can type gdb commands here + program - the executed program will use this window + +You can use CTRL-W CTRL-W or the mouse to move focus between windows. +Put focus on the gdb window and type: > + break ex_help + run +Vim will start running in the program window. Put focus there and type: > + :help gui +Gdb will run into the ex_help breakpoint. The source window now shows the +ex_cmds.c file. A red "1 " marker will appear in the signcolumn where the +breakpoint was set. The line where the debugger stopped is highlighted. You +can now step through the program. Let's use the mouse: click on the "Next" +button in the window toolbar. You will see the highlighting move as the +debugger executes a line of source code. + +Click "Next" a few times until the for loop is highlighted. Put the cursor on +the end of "eap->arg", then click "Eval" in the toolbar. You will see this +displayed: + "eap->arg": 0x555555e68855 "gui" ~ +This way you can inspect the value of local variables. You can also focus the +gdb window and use a "print" command, e.g.: > + print *eap +If mouse pointer movements are working, Vim will also show a balloon when the +mouse rests on text that can be evaluated by gdb. + +Now go back to the source window and put the cursor on the first line after +the for loop, then type: > + :Break +You will see a ">>" marker appear, this indicates the new breakpoint. Now +click "Cont" in the toolbar and the code until the breakpoint will be +executed. + +You can type more advanced commands in the gdb window. For example, type: > + watch curbuf +Now click "Cont" in the toolbar (or type "cont" in the gdb window). Execution +will now continue until the value of "curbuf" changes, which is in do_ecmd(). +To remove this watchpoint again type in the gdb window: > + delete 3 + +You can see the stack by typing in the gdb window: > + where +Move through the stack frames, e.g. with: > + frame 3 +The source window will show the code, at the point where the call was made to +a deeper level. + + +Stepping through code ~ + *termdebug-stepping* +Put focus on the gdb window to type commands there. Some common ones are: +- CTRL-C interrupt the program +- next execute the current line and stop at the next line +- step execute the current line and stop at the next statement, + entering functions +- until execute until past the current cursor line or past a specified + position or the current stack frame returns +- finish execute until leaving the current function +- where show the stack +- frame N go to the Nth stack frame +- continue continue execution + + *:Run* *:Arguments* +In the window showing the source code these commands can be used to control +gdb: + `:Run` [args] run the program with [args] or the previous arguments + `:Arguments` {args} set arguments for the next `:Run` + + *:Break* set a breakpoint at the cursor position + :Break {position} + set a breakpoint at the specified position + *:Tbreak* set a temporary breakpoint at the cursor position + :Tbreak {position} + set a temporary breakpoint at the specified position + *:Clear* delete the breakpoint at the cursor position + + *:Step* execute the gdb "step" command + *:Over* execute the gdb "next" command (`:Next` is a Vim command) + *:Until* execute the gdb "until" command + *:Finish* execute the gdb "finish" command + *:Continue* execute the gdb "continue" command + *:Stop* interrupt the program + +If 'mouse' is set the plugin adds a window toolbar with these entries: + Step `:Step` + Next `:Over` + Finish `:Finish` + Cont `:Continue` + Stop `:Stop` + Eval `:Evaluate` +This way you can use the mouse to perform the most common commands. You need +to have the 'mouse' option set to enable mouse clicks. +See |termdebug_winbar| for configuring this toolbar. + *:Winbar* +You can add the window toolbar in other windows you open with: > + :Winbar + +If gdb stops at a source line and there is no window currently showing the +source code, a new window will be created for the source code. This also +happens if the buffer in the source code window has been modified and can't be +abandoned. + +Gdb gives each breakpoint a number. In Vim the number shows up in the sign +column, with a red background. You can use these gdb commands: +- info break list breakpoints +- delete N delete breakpoint N +You can also use the `:Clear` command if the cursor is in the line with the +breakpoint, or use the "Clear breakpoint" right-click menu entry. + + +Inspecting variables ~ + *termdebug-variables* *:Evaluate* + `:Evaluate` evaluate the expression under the cursor + `K` same (see |termdebug_map_K| to disable) + `:Evaluate` {expr} evaluate {expr} + `:'<,'>Evaluate` evaluate the Visually selected text + +This is similar to using "print" in the gdb window. +You can usually shorten `:Evaluate` to `:Ev`. + + +Navigating stack frames ~ + *termdebug-frames* *:Frame* *:Up* *:Down* + `:Frame` [frame] select frame [frame], which is a frame number, + address, or function name (default: current frame) + `:Up` [count] go up [count] frames (default: 1; the frame that + called the current) + `+` same (see |termdebug_map_plus| to disable) + `:Down` [count] go down [count] frames (default: 1; the frame called + by the current) + `-` same (see |termdebug_map_minus| to disable) + + +Other commands ~ + *termdebug-commands* + *:Gdb* jump to the gdb window + *:Program* jump to the window with the running program + *:Source* jump to the window with the source code, create it if there + isn't one + *:Asm* jump to the window with the disassembly, create it if there + isn't one + *:Var* jump to the window with the local and argument variables, + create it if there isn't one. This window updates whenever the + program is stopped + +Events ~ + *termdebug-events* +Four autocommands can be used: > + au User TermdebugStartPre echomsg 'debugging starting' + au User TermdebugStartPost echomsg 'debugging started' + au User TermdebugStopPre echomsg 'debugging stopping' + au User TermdebugStopPost echomsg 'debugging stopped' +< + *TermdebugStartPre* +TermdebugStartPre Before starting debugging. + Not triggered if the debugger is already + running or the debugger command cannot be + executed. + *TermdebugStartPost* +TermdebugStartPost After debugging has initialized. + If a "!" bang is passed to `:Termdebug` or + `:TermdebugCommand` the event is triggered + before running the provided command in gdb. + *TermdebugStopPre* +TermdebugStopPre Before debugging ends, when gdb is terminated, + most likely after issuing a "quit" command in + the gdb window. + *TermdebugStopPost* +TermdebugStopPost After debugging has ended, gdb-related windows + are closed, debug buffers wiped out and + the state before the debugging was restored. + + +Customizing ~ + *termdebug-customizing* *g:termdebug_config* +In the past several global variables were used for configuration. These are +deprecated and using the g:termdebug_config dictionary is preferred. When +g:termdebug_config exists the other global variables will NOT be used. +The recommended way is to start with an empty dictionary: > + let g:termdebug_config = {} + +Then you can add entries to the dictionary as mentioned below. The +deprecated global variable names are mentioned for completeness. If you are +switching over to using g:termdebug_config you can find the old variable name +and take over the value, then delete the deprecated variable. + + +Prompt mode ~ + *termdebug-prompt* +When the |+terminal| feature is not supported and on MS-Windows, gdb will run +in a buffer with 'buftype' set to "prompt". This works slightly differently: +- The gdb window will be in Insert mode while typing commands. Go to Normal + mode with <Esc>, then you can move around in the buffer, copy/paste, etc. + Go back to editing the gdb command with any command that starts Insert mode, + such as `a` or `i`. +- The program being debugged will run in a separate window. On MS-Windows + this is a new console window. On Unix, if the |+terminal| feature is + available a Terminal window will be opened to run the debugged program in. + + *termdebug_use_prompt* +Prompt mode can be used even when the |+terminal| feature is present with: > + let g:termdebug_config['use_prompt'] = 1 +If there is no g:termdebug_config you can use: > + let g:termdebug_use_prompt = 1 +< +Mappings ~ + *termdebug_map_K* *termdebug-mappings* +The K key is normally mapped to |:Evaluate| unless a buffer local (|:map-local|) +mapping to K already exists. If you do not want this use: > + let g:termdebug_config['map_K'] = 0 +If there is no g:termdebug_config you can use: > + let g:termdebug_map_K = 0 +< + *termdebug_map_minus* +The - key is normally mapped to |:Down| unless a buffer local mapping to the - +key already exists. If you do not want this use: > + let g:termdebug_config['map_minus'] = 0 +< + *termdebug_map_plus* +The + key is normally mapped to |:Up| unless a buffer local mapping to the + +key already exists. If you do not want this use: > + let g:termdebug_config['map_plus'] = 0 +< + *termdebug_disasm_window* +If you want the Asm window shown by default, set the "disasm_window" flag to +1. The "disasm_window_height" entry can be used to set the window height: > + let g:termdebug_config['disasm_window'] = 1 + let g:termdebug_config['disasm_window_height'] = 15 +If there is no g:termdebug_config you can use: > + let g:termdebug_disasm_window = 15 +Any value greater than 1 will set the Asm window height to that value. +If the current window has enough horizontal space, it will be vertically split +and the Asm window will be shown side by side with the source code window (and +the height option won't be used). + + *termdebug_variables_window* +If you want the Var window shown by default, set the "variables_window" flag +to 1. The "variables_window_height" entry can be used to set the window +height: > + let g:termdebug_config['variables_window'] = 1 + let g:termdebug_config['variables_window_height'] = 15 +If there is no g:termdebug_config you can use: > + let g:termdebug_variables_window = 15 +Any value greater than 1 will set the Var window height to that value. +If the current window has enough horizontal space, it will be vertically split +and the Var window will be shown side by side with the source code window (and +the height options won't be used). + +Communication ~ + *termdebug-communication* +There is another, hidden, buffer, which is used for Vim to communicate with +gdb. The buffer name is "gdb communication". Do not delete this buffer, it +will break the debugger. + +Gdb has some weird behavior, the plugin does its best to work around that. +For example, after typing "continue" in the gdb window a CTRL-C can be used to +interrupt the running program. But after using the MI command +"-exec-continue" pressing CTRL-C does not interrupt. Therefore you will see +"continue" being used for the `:Continue` command, instead of using the +communication channel. + + +GDB command ~ + *g:termdebugger* +To change the name of the gdb command, set "debugger" entry in +g:termdebug_config or the "g:termdebugger" variable before invoking +`:Termdebug`: > + let g:termdebug_config['command'] = "mygdb" +If there is no g:termdebug_config you can use: > + let g:termdebugger = "mygdb" + +If the command needs an argument use a List: > + let g:termdebug_config['command'] = ['rr', 'replay', '--'] +If there is no g:termdebug_config you can use: > + let g:termdebugger = ['rr', 'replay', '--'] + +Several arguments will be added to make gdb work well for the debugger. +If you want to modify them, add a function to filter the argument list: > + let g:termdebug_config['command_filter'] = MyDebugFilter + +If you do not want the arguments to be added, but you do need to set the +"pty", use a function to add the necessary arguments: > + let g:termdebug_config['command_add_args'] = MyAddArguments +The function will be called with the list of arguments so far, and a second +argument that is the name of the pty. + *gdb-version* +Only debuggers fully compatible with gdb will work. Vim uses the GDB/MI +interface. The "new-ui" command requires gdb version 7.12 or later. If you +get this error: + Undefined command: "new-ui". Try "help".~ +Then your gdb is too old. + + +Colors ~ + *hl-debugPC* *hl-debugBreakpoint* +The color of the signs can be adjusted with these highlight groups: +- debugPC the current position +- debugBreakpoint a breakpoint + +The defaults are, when 'background' is "light": + hi debugPC term=reverse ctermbg=lightblue guibg=lightblue + hi debugBreakpoint term=reverse ctermbg=red guibg=red + +When 'background' is "dark": + hi debugPC term=reverse ctermbg=darkblue guibg=darkblue + hi debugBreakpoint term=reverse ctermbg=red guibg=red + + +Shortcuts ~ + *termdebug_shortcuts* +You can define your own shortcuts (mappings) to control gdb, that can work in +any window, using the TermDebugSendCommand() function. Example: > + map ,w :call TermDebugSendCommand('where')<CR> +The argument is the gdb command. + + +Popup menu ~ + *termdebug_popup* +By default the Termdebug plugin sets 'mousemodel' to "popup_setpos" and adds +these entries to the popup menu: + Set breakpoint `:Break` + Clear breakpoint `:Clear` + Evaluate `:Evaluate` +If you don't want this then disable it with: > + let g:termdebug_config['popup'] = 0 +If there is no g:termdebug_config you can use: > + let g:termdebug_popup = 0 + + +Change default signs ~ + *termdebug_signs* +Termdebug uses the hex number of the breakpoint ID in the signcolumn to +represent breakpoints. if it is greater than "0xFF", then it will be displayed +as "F+", due to we really only have two screen cells for the sign. + +If you want to customize the breakpoint signs: > + let g:termdebug_config['sign'] = '>>' +If there is no g:terminal_config yet you can use: > + let g:termdebug_config = {'sign': '>>'} + +After this, breakpoints will be displayed as `>>` in the signcolumn. + + +Window toolbar ~ + *termdebug_winbar* +By default the Termdebug plugin creates a window toolbar if the mouse is +enabled (see |:Winbar|). If you don't want this then disable it with: > + let g:termdebug_config['winbar'] = 0 + + +Vim window width ~ + *termdebug_wide* +To change the width of the Vim window when debugging starts and use a vertical +split: > + let g:termdebug_config['wide'] = 163 +If there is no g:termdebug_config you can use: > + let g:termdebug_wide = 163 + +This will set 'columns' to 163 when `:Termdebug` is used. The value is +restored when quitting the debugger. + +If the wide value is set and 'columns' is already a greater value, then a +vertical split will be used without modifying 'columns'. + +Set the wide value to 1 to use a vertical split without ever changing +'columns'. This is useful when the terminal can't be resized by Vim. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/test_urls.vim b/runtime/doc/test_urls.vim new file mode 100644 index 0000000..e23f879 --- /dev/null +++ b/runtime/doc/test_urls.vim @@ -0,0 +1,89 @@ +" Test for URLs in help documents. +" +" Opens a new window with all found URLS followed by return code from curl +" (anything other than 0 means unreachable) +" +" Written by Christian Brabandt. + +func Test_check_URLs() +"20.10.23, added by Restorer + if has("win32") + let s:outdev = 'nul' + else + let s:outdev = '/dev/null' + endif +" Restorer: For Windows users. If "curl" or "weget" is installed on the system +" but not in %PATH%, add the full routes for them to this environment variable. + if executable('curl') + " Note: does not follow redirects! + let s:command1 = 'curl --silent --fail --output ' ..s:outdev.. ' --head ' + let s:command2 = "" + elseif executable('wget') + " Note: only allow a couple of redirects + let s:command1 = 'wget --quiet -S --spider --max-redirect=2 --timeout=5 --tries=2 -O ' ..s:outdev.. ' ' + let s:command2 = "" + elseif has("win32") "20.10.23, added by Restorer + if executable('powershell') + if 2 == system('powershell -nologo -noprofile "$psversiontable.psversion.major"') + echoerr 'To work in OS Windows requires the program "PowerShell" version 3.0 or higher' + return + endif + let s:command1 = + \ "powershell -nologo -noprofile \"{[Net.ServicePointManager]::SecurityProtocol = 'Tls12, Tls11, Tls, Ssl3'};try{(Invoke-WebRequest -MaximumRedirection 2 -TimeoutSec 5 -Uri " + let s:command2 = ').StatusCode}catch{exit [int]$Error[0].Exception.Status}"' + endif + else + echoerr 'Only works when "curl" or "wget", or "powershell" is available' + return + endif + + " Do the testing. + set report =999 + set nomore shm +=s + + let pat='\(https\?\|ftp\)://[^\t* ]\+' + exe 'helpgrep' pat + helpclose + + let urls = map(getqflist(), 'v:val.text') + " do not use submatch(1)! + let urls = map(urls, {key, val -> matchstr(val, pat)}) + " remove examples like user@host (invalid urls) + let urls = filter(urls, 'v:val !~ "@"') + " Remove example URLs which are invalid + let urls = filter(urls, {key, val -> val !~ '\<\(\(my\|some\)\?host\|machine\|hostname\|file\)\>'}) + new + put =urls + " remove some more invalid items + " empty lines + "20.10.23, Restorer: '_' is a little faster, see `:h global` + v/./d _ + " remove # anchors + %s/#.*$//e + " remove trailing stuff (parenthesis, dot, comma, quotes), but only for HTTP + " links + g/^h/s#[.),'"`/>][:.,]\?$## + g#^[hf]t\?tp:/\(/\?\.*\)$#d _ + silent! g/ftp://,$/d _ + silent! g/=$/d _ + let a = getline(1,'$') + let a = uniq(sort(a)) + %d _ + call setline(1, a) + + %s/.*/\=TestURL(submatch(0))/ + + " highlight the failures + /.* \([0-9]*[1-9]\|[0-9]\{2,}\)$ +endfunc + +func TestURL(url) + " Relies on the return code to determine whether a page is valid + echom printf("Testing URL: %d/%d %s", line('.'), line('$'), a:url) + call system(s:command1 .. shellescape(a:url) .. s:command2) + return printf("%s %d", a:url, v:shell_error) +endfunc + +call Test_check_URLs() + +" vim: sw=2 sts=2 et diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt new file mode 100644 index 0000000..dabdd32 --- /dev/null +++ b/runtime/doc/testing.txt @@ -0,0 +1,633 @@ +*testing.txt* For Vim version 9.1. Last change: 2023 May 18 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Testing Vim and Vim script *testing-support* + +Expression evaluation is explained in |eval.txt|. This file goes into details +about writing tests in Vim script. This can be used for testing Vim itself +and for testing plugins. + +1. Testing Vim |testing| +2. Test functions |test-functions-details| +3. Assert functions |assert-functions-details| + +============================================================================== +1. Testing Vim *testing* + +Vim can be tested after building it, usually with "make test". +The tests are located in the directory "src/testdir". + +There are two types of tests added over time: + test20.in oldest, only for tiny builds + test_something.vim new style tests + + *new-style-testing* +New tests should be added as new style tests. The test scripts are named +test_<feature>.vim (replace <feature> with the feature under test). These use +functions such as |assert_equal()| to keep the test commands and the expected +result in one place. + *old-style-testing* +These tests are used only for testing Vim without the |+eval| feature. + +Find more information in the file src/testdir/README.txt. + +============================================================================== +2. Test functions *test-functions-details* + +test_alloc_fail({id}, {countdown}, {repeat}) *test_alloc_fail()* + This is for testing: If the memory allocation with {id} is + called, then decrement {countdown}, and when it reaches zero + let memory allocation fail {repeat} times. When {repeat} is + smaller than one it fails one time. + + Can also be used as a |method|: > + GetAllocId()->test_alloc_fail() + + +test_autochdir() *test_autochdir()* + Set a flag to enable the effect of 'autochdir' before Vim + startup has finished. + + +test_feedinput({string}) *test_feedinput()* + Characters in {string} are queued for processing as if they + were typed by the user. This uses a low level input buffer. + This function works only when with |+unix| or GUI is running. + + Can also be used as a |method|: > + GetText()->test_feedinput() + + +test_garbagecollect_now() *test_garbagecollect_now()* + Like garbagecollect(), but executed right away. This must + only be called directly to avoid any structure to exist + internally, and |v:testing| must have been set before calling + any function. *E1142* + This will not work when called from a :def function, because + variables on the stack will be freed. + + +test_garbagecollect_soon() *test_garbagecollect_soon()* + Set the flag to call the garbagecollector as if in the main + loop. Only to be used in tests. + + +test_getvalue({name}) *test_getvalue()* + Get the value of an internal variable. These values for + {name} are supported: + need_fileinfo + + Can also be used as a |method|: > + GetName()->test_getvalue() +< + *test_gui_event()* +test_gui_event({event}, {args}) + Generate a GUI {event} with arguments {args} for testing Vim + functionality. This function works only when the GUI is + running. + + {event} is a String and the supported values are: + "dropfiles" drop one or more files in a window. + "findrepl" search and replace text. + "mouse" mouse button click event. + "scrollbar" move or drag the scrollbar. + "key" send a low-level keyboard event. + "tabline" select a tab page by mouse click. + "tabmenu" select a tabline menu entry. + + {args} is a Dict and contains the arguments for the event. + + "dropfiles": + Drop one or more files in a specified window. The supported + items in {args} are: + files: List of file names + row: window row number + col: window column number + modifiers: key modifiers. The supported values are: + 0x4 Shift + 0x8 Alt + 0x10 Ctrl + The files are added to the |argument-list| and the first + file in {files} is edited in the window. See |drag-n-drop| + for more information. This event works only when the + |drop_file| feature is present. + + "findrepl": + {only available when the GUI has a find/replace dialog} + Perform a search and replace of text. The supported items + in {args} are: + find_text: string to find. + repl_text: replacement string. + flags: flags controlling the find/replace. Supported + values are: + 1 search next string (find dialog) + 2 search next string (replace dialog) + 3 replace string once + 4 replace all matches + 8 match whole words only + 16 match case + forward: set to 1 for forward search. + + "mouse": + Inject either a mouse button click, or a mouse move, event. + The supported items in {args} are: + button: mouse button. The supported values are: + 0 left mouse button + 1 middle mouse button + 2 right mouse button + 3 mouse button release + 4 scroll wheel down + 5 scroll wheel up + 6 scroll wheel left + 7 scroll wheel right + row: mouse click row number. The first row of the + Vim window is 1 and the last row is 'lines'. + col: mouse click column number. The maximum value + of {col} is 'columns'. + multiclick: set to 1 to inject a multiclick mouse event. + modifiers: key modifiers. The supported values are: + 4 shift is pressed + 8 alt is pressed + 16 ctrl is pressed + move: Optional; if used and TRUE then a mouse move + event can be generated. + Only {args} row: and col: are used and + required; they are interpreted as pixels or + screen cells, depending on "cell". + Only results in an event when 'mousemoveevent' + is set or a popup uses mouse move events. + cell: Optional: when present and TRUE then "move" + uses screen cells instead of pixel positions + + "scrollbar": + Set or drag the left, right or horizontal scrollbar. Only + works when the scrollbar actually exists. The supported + items in {args} are: + which: Selects the scrollbar. The supported values + are: + left Left scrollbar of the current window + right Right scrollbar of the current window + hor Horizontal scrollbar + value: Amount to scroll. For the vertical scrollbars + the value can be between 0 to the line-count + of the buffer minus one. For the horizontal + scrollbar the value can be between 1 and the + maximum line length, assuming 'wrap' is not + set. + dragging: 1 to drag the scrollbar and 0 to click in the + scrollbar. + + "key": + Send a low-level keyboard event (e.g. key-up or down). + Currently only supported on MS-Windows. + The supported items in {args} are: + event: The supported string values are: + keyup generate a keyup event + keydown generate a keydown event + keycode: Keycode to use for a keyup or a keydown event. + *E1291* + + "tabline": + Inject a mouse click event on the tabline to select a + tabpage. The supported items in {args} are: + tabnr: tab page number + + "tabmenu": + Inject an event to select a tabline menu entry. The + supported items in {args} are: + tabnr: tab page number + item: tab page menu item number. 1 for the first + menu item, 2 for the second item and so on. + + After injecting the GUI events you probably should call + |feedkeys()| to have them processed, e.g.: > + call feedkeys("y", 'Lx!') +< + Returns TRUE if the event is successfully added, FALSE if + there is a failure. + + Can also be used as a |method|: > + GetEvent()->test_gui_event({args}) +< +test_ignore_error({expr}) *test_ignore_error()* + Ignore any error containing {expr}. A normal message is given + instead. + This is only meant to be used in tests, where catching the + error with try/catch cannot be used (because it skips over + following code). + {expr} is used literally, not as a pattern. + When the {expr} is the string "RESET" then the list of ignored + errors is made empty. + + Can also be used as a |method|: > + GetErrorText()->test_ignore_error() + + +test_mswin_event({event}, {args}) *test_mswin_event()* + Generate a low-level MS-Windows {event} with arguments {args} + for testing Vim functionality. It works for MS-Windows GUI + and for the console. + + {event} is a String and the supported values are: + "mouse" mouse event. + "key" keyboard event. + + "mouse": + Inject either a mouse button click, or a mouse move, event. + The supported items in {args} are: + button: mouse button. The supported values are: + 0 right mouse button + 1 middle mouse button + 2 left mouse button + 3 mouse button release + 4 scroll wheel down + 5 scroll wheel up + 6 scroll wheel left + 7 scroll wheel right + row: mouse click row number. The first row of the + Vim window is 1 and the last row is 'lines'. + col: mouse click column number. The maximum value + of {col} is 'columns'. + Note: row and col are always interpreted as + screen cells for the console application. + But, they may be interpreted as pixels + for the GUI, depending on "cell". + multiclick: set to 1 to inject a double-click mouse event. + modifiers: key modifiers. The supported values are: + 4 shift is pressed + 8 alt is pressed + 16 ctrl is pressed + move: Optional; if used and TRUE then a mouse move + event can be generated. + Only {args} row: and col: are used and + required. + Only results in an event when 'mousemoveevent' + is set or a popup uses mouse move events. + cell: Optional for the GUI: when present and TRUE + then "move" uses screen cells instead of pixel + positions. Not used by the console. + + "key": + Send a low-level keyboard event (e.g. keyup or keydown). + The supported items in {args} are: + event: The supported string values are: + keyup generate a keyup event + keydown generate a keydown event + keycode: Keycode to use for a keyup or a keydown event. + modifiers: Optional; key modifiers. + The supported values are: + 2 shift is pressed + 4 ctrl is pressed + 8 alt is pressed + Note: These values are different from the + mouse modifiers. + execute: Optional. Similar to |feedkeys()| mode x. + When this is included and set to true + (non-zero) then Vim will process any buffered + unprocessed key events. All other {args} + items are optional when this is set and true. + + Returns TRUE if the event is successfully added or executed, + FALSE if there is a failure. + + Can also be used as a |method|: > + GetEvent()->test_mswin_event({args}) +< + +test_null_blob() *test_null_blob()* + Return a |Blob| that is null. Only useful for testing. + + +test_null_channel() *test_null_channel()* + Return a |Channel| that is null. Only useful for testing. + {only available when compiled with the +channel feature} + + +test_null_dict() *test_null_dict()* + Return a |Dict| that is null. Only useful for testing. + + +test_null_function() *test_null_function()* + Return a |Funcref| that is null. Only useful for testing. + + +test_null_job() *test_null_job()* + Return a |Job| that is null. Only useful for testing. + {only available when compiled with the +job feature} + + +test_null_list() *test_null_list()* + Return a |List| that is null. Only useful for testing. + + +test_null_partial() *test_null_partial()* + Return a |Partial| that is null. Only useful for testing. + + +test_null_string() *test_null_string()* + Return a |String| that is null. Only useful for testing. + + +test_option_not_set({name}) *test_option_not_set()* + Reset the flag that indicates option {name} was set. Thus it + looks like it still has the default value. Use like this: > + set ambiwidth=double + call test_option_not_set('ambiwidth') +< Now the 'ambiwidth' option behaves like it was never changed, + even though the value is "double". + Only to be used for testing! + + Can also be used as a |method|: > + GetOptionName()->test_option_not_set() + + +test_override({name}, {val}) *test_override()* + Overrides certain parts of Vim's internal processing to be able + to run tests. Only to be used for testing Vim! + The override is enabled when {val} is non-zero and removed + when {val} is zero. + Current supported values for {name} are: + + {name} effect when {val} is non-zero ~ + alloc_lines make a copy of every buffer line into allocated + memory, so that memory access errors can be found + by valgrind + autoload `import autoload` will load the script right + away, not postponed until an item is used + char_avail disable the char_avail() function + nfa_fail makes the NFA regexp engine fail to force a + fallback to the old engine + no_query_mouse do not query the mouse position for "dec" + terminals + no_wait_return set the "no_wait_return" flag. Not restored + with "ALL". + redraw disable the redrawing() function + redraw_flag ignore the RedrawingDisabled flag + starting reset the "starting" variable, see below + term_props reset all terminal properties when the version + string is detected + ui_delay time in msec to use in ui_delay(); overrules a + wait time of up to 3 seconds for messages + unreachable no error for code after `:throw` and `:return` + uptime overrules sysinfo.uptime + vterm_title setting the window title by a job running in a + terminal window + ALL clear all overrides, except alloc_lines ({val} is + not used) + + "starting" is to be used when a test should behave like + startup was done. Since the tests are run by sourcing a + script the "starting" variable is non-zero. This is usually a + good thing (tests run faster), but sometimes this changes + behavior in a way that the test doesn't work properly. + When using: > + call test_override('starting', 1) +< The value of "starting" is saved. It is restored by: > + call test_override('starting', 0) + +< To make sure the flag is reset later using `:defer` can be + useful: > + call test_override('unreachable', 1) + defer call test_override('unreachable', 0) + +< Can also be used as a |method|: > + GetOverrideVal()-> test_override('starting') + + +test_refcount({expr}) *test_refcount()* + Return the reference count of {expr}. When {expr} is of a + type that does not have a reference count, returns -1. Only + to be used for testing. + + Can also be used as a |method|: > + GetVarname()->test_refcount() + + +test_setmouse({row}, {col}) *test_setmouse()* + Set the mouse position to be used for the next mouse action. + {row} and {col} are one based. + For example: > + call test_setmouse(4, 20) + call feedkeys("\<LeftMouse>", "xt") + + +test_settime({expr}) *test_settime()* + Set the time Vim uses internally. Currently only used for + timestamps in the history, as they are used in viminfo, and + for undo. + Using a value of 1 makes Vim not sleep after a warning or + error message. + {expr} must evaluate to a number. When the value is zero the + normal behavior is restored. + + Can also be used as a |method|: > + GetTime()->test_settime() + + +test_srand_seed([seed]) *test_srand_seed()* + When [seed] is given this sets the seed value used by + `srand()`. When omitted the test seed is removed. + + +test_unknown() *test_unknown()* + Return a value with unknown type. Only useful for testing. + + +test_void() *test_void()* + Return a value with void type. Only useful for testing. + +============================================================================== +3. Assert functions *assert-functions-details* + + +assert_beeps({cmd}) *assert_beeps()* + Run {cmd} and add an error message to |v:errors| if it does + NOT produce a beep or visual bell. + Also see |assert_fails()|, |assert_nobeep()| and + |assert-return|. + + Can also be used as a |method|: > + GetCmd()->assert_beeps() +< + *assert_equal()* +assert_equal({expected}, {actual} [, {msg}]) + When {expected} and {actual} are not equal an error message is + added to |v:errors| and 1 is returned. Otherwise zero is + returned. |assert-return| + The error is in the form "Expected {expected} but got + {actual}". When {msg} is present it is prefixed to that. + + There is no automatic conversion, the String "4" is different + from the Number 4. And the number 4 is different from the + Float 4.0. The value of 'ignorecase' is not used here, case + always matters. + Example: > + assert_equal('foo', 'bar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Expected 'foo' but got 'bar' ~ + + Can also be used as a |method|, the base is passed as the + second argument: > + mylist->assert_equal([1, 2, 3]) + +< *assert_equalfile()* +assert_equalfile({fname-one}, {fname-two} [, {msg}]) + When the files {fname-one} and {fname-two} do not contain + exactly the same text an error message is added to |v:errors|. + Also see |assert-return|. + When {fname-one} or {fname-two} does not exist the error will + mention that. + Mainly useful with |terminal-diff|. + + Can also be used as a |method|: > + GetLog()->assert_equalfile('expected.log') + +assert_exception({error} [, {msg}]) *assert_exception()* + When v:exception does not contain the string {error} an error + message is added to |v:errors|. Also see |assert-return|. + This can be used to assert that a command throws an exception. + Using the error number, followed by a colon, avoids problems + with translations: > + try + commandthatfails + call assert_false(1, 'command should have failed') + catch + call assert_exception('E492:') + endtry +< + *assert_fails()* +assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) + Run {cmd} and add an error message to |v:errors| if it does + NOT produce an error or when {error} is not found in the + error message. Also see |assert-return|. + *E856* + When {error} is a string it must be found literally in the + first reported error. Most often this will be the error code, + including the colon, e.g. "E123:". > + assert_fails('bad cmd', 'E987:') +< + When {error} is a |List| with one or two strings, these are + used as patterns. The first pattern is matched against the + first reported error: > + assert_fails('cmd', ['E987:.*expected bool']) +< The second pattern, if present, is matched against the last + reported error. + If there is only one error then both patterns must match. This + can be used to check that there is only one error. + To only match the last error use an empty string for the first + error: > + assert_fails('cmd', ['', 'E987:']) +< + If {msg} is empty then it is not used. Do this to get the + default message when passing the {lnum} argument. + *E1115* + When {lnum} is present and not negative, and the {error} + argument is present and matches, then this is compared with + the line number at which the error was reported. That can be + the line number in a function or in a script. + *E1116* + When {context} is present it is used as a pattern and matched + against the context (script name or function name) where + {lnum} is located in. + + Note that beeping is not considered an error, and some failing + commands only beep. Use |assert_beeps()| for those. + + Can also be used as a |method|: > + GetCmd()->assert_fails('E99:') + +assert_false({actual} [, {msg}]) *assert_false()* + When {actual} is not false an error message is added to + |v:errors|, like with |assert_equal()|. + The error is in the form "Expected False but got {actual}". + When {msg} is present it is prepended to that. + Also see |assert-return|. + + A value is false when it is zero. When {actual} is not a + number the assert fails. + + Can also be used as a |method|: > + GetResult()->assert_false() + +assert_inrange({lower}, {upper}, {actual} [, {msg}]) *assert_inrange()* + This asserts number and |Float| values. When {actual} is lower + than {lower} or higher than {upper} an error message is added + to |v:errors|. Also see |assert-return|. + The error is in the form "Expected range {lower} - {upper}, + but got {actual}". When {msg} is present it is prefixed to + that. + + *assert_match()* +assert_match({pattern}, {actual} [, {msg}]) + When {pattern} does not match {actual} an error message is + added to |v:errors|. Also see |assert-return|. + The error is in the form "Pattern {pattern} does not match + {actual}". When {msg} is present it is prefixed to that. + + {pattern} is used as with |=~|: The matching is always done + like 'magic' was set and 'cpoptions' is empty, no matter what + the actual value of 'magic' or 'cpoptions' is. + + {actual} is used as a string, automatic conversion applies. + Use "^" and "$" to match with the start and end of the text. + Use both to match the whole text. + + Example: > + assert_match('^f.*o$', 'foobar') +< Will result in a string to be added to |v:errors|: + test.vim line 12: Pattern '^f.*o$' does not match 'foobar' ~ + + Can also be used as a |method|: > + getFile()->assert_match('foo.*') +< +assert_nobeep({cmd}) *assert_nobeep()* + Run {cmd} and add an error message to |v:errors| if it + produces a beep or visual bell. + Also see |assert_beeps()|. + + Can also be used as a |method|: > + GetCmd()->assert_nobeep() +< + *assert_notequal()* +assert_notequal({expected}, {actual} [, {msg}]) + The opposite of `assert_equal()`: add an error message to + |v:errors| when {expected} and {actual} are equal. + Also see |assert-return|. + + Can also be used as a |method|: > + mylist->assert_notequal([1, 2, 3]) + +< *assert_notmatch()* +assert_notmatch({pattern}, {actual} [, {msg}]) + The opposite of `assert_match()`: add an error message to + |v:errors| when {pattern} matches {actual}. + Also see |assert-return|. + + Can also be used as a |method|: > + getFile()->assert_notmatch('bar.*') + + +assert_report({msg}) *assert_report()* + Report a test failure directly, using String {msg}. + Always returns one. + + Can also be used as a |method|: > + GetMessage()->assert_report() + + +assert_true({actual} [, {msg}]) *assert_true()* + When {actual} is not true an error message is added to + |v:errors|, like with |assert_equal()|. + Also see |assert-return|. + A value is TRUE when it is a non-zero number. When {actual} + is not a number the assert fails. + When {msg} is given it precedes the default message. + + Can also be used as a |method|: > + GetResult()->assert_true() +< + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt new file mode 100644 index 0000000..bf7fd16 --- /dev/null +++ b/runtime/doc/textprop.txt @@ -0,0 +1,515 @@ +*textprop.txt* For Vim version 9.1. Last change: 2023 Apr 23 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Displaying text with properties attached. *textprop* *text-properties* + + +1. Introduction |text-prop-intro| +2. Functions |text-prop-functions| +3. When text changes |text-prop-changes| + + +{not able to use text properties when the |+textprop| feature was +disabled at compile time} + +============================================================================== +1. Introduction *text-prop-intro* + +Text properties can be attached to text in a buffer. They will move with the +text: If lines are deleted or inserted the properties move with the text they +are attached to. Also when inserting/deleting text in the line before the +text property. And when inserting/deleting text inside the text property, it +will increase/decrease in size. + +The main use for text properties is to highlight text. This can be seen as a +replacement for syntax highlighting. Instead of defining patterns to match +the text, the highlighting is set by a script, possibly using the output of an +external parser. This only needs to be done once, not every time when +redrawing the screen, thus can be much faster, after the initial cost of +attaching the text properties. + +Text properties can also be used for other purposes to identify text. For +example, add a text property on a function name, so that a search can be +defined to jump to the next/previous function. + +A text property is attached at a specific line and column, and has a specified +length. The property can span multiple lines. + +A text property has these fields: + "id" a number to be used as desired + "type" the name of a property type + + +Property Types ~ + *E971* +A text property normally has the name of a property type, which defines +how to highlight the text. The property type can have these entries: + "highlight" name of the highlight group to use + "combine" when omitted or TRUE the text property highlighting is + combined with any syntax highlighting; when FALSE the + text property highlighting replaces the syntax + highlighting + "priority" when properties overlap, the one with the highest + priority will be used. + "start_incl" when TRUE inserts at the start position will be + included in the text property + "end_incl" when TRUE inserts at the end position will be + included in the text property + + +Example ~ + +Suppose line 11 in a buffer has this text (excluding the indent): + + The number 123 is smaller than 4567. + +To highlight the numbers in this text: > + call prop_type_add('number', {'highlight': 'Constant'}) + call prop_add(11, 12, {'length': 3, 'type': 'number'}) + call prop_add(11, 32, {'length': 4, 'type': 'number'}) + +Try inserting or deleting lines above the text, you will see that the text +properties stick to the text, thus the line number is adjusted as needed. + +Setting "start_incl" and "end_incl" is useful when white space surrounds the +text, e.g. for a function name. Using false is useful when the text starts +and/or ends with a specific character, such as the quote surrounding a string. + + func FuncName(arg) ~ + ^^^^^^^^ property with start_incl and end_incl set + + var = "text"; ~ + ^^^^^^ property with start_incl and end_incl not set + +Nevertheless, when text is inserted or deleted the text may need to be parsed +and the text properties updated. But this can be done asynchronously. + + +Internal error *E967* + +If you see E967, please report the bug. You can do this at Github: +https://github.com/vim/vim/issues/new + +============================================================================== +2. Functions *text-prop-functions* + +Manipulating text property types: + +prop_type_add({name}, {props}) define a new property type +prop_type_change({name}, {props}) change an existing property type +prop_type_delete({name} [, {props}]) delete a property type +prop_type_get({name} [, {props}]) get property type values +prop_type_list([{props}]) get list of property types + + +Manipulating text properties: + +prop_add({lnum}, {col}, {props}) add a text property +prop_add_list({props}, [{item}, ...]) + add a text property at multiple + positions. +prop_clear({lnum} [, {lnum-end} [, {bufnr}]]) + remove all text properties +prop_find({props} [, {direction}]) search for a text property +prop_list({lnum} [, {props}]) text properties in {lnum} +prop_remove({props} [, {lnum} [, {lnum-end}]]) + remove a text property + + *prop_add()* *E965* +prop_add({lnum}, {col}, {props}) + Attach a text property at position {lnum}, {col}. {col} is + counted in bytes, use one for the first column. + If {lnum} is invalid an error is given. *E966* + If {col} is invalid an error is given. *E964* + + {props} is a dictionary with these fields: + type name of the text property type + length length of text in bytes, can only be used + for a property that does not continue in + another line; can be zero + end_lnum line number for the end of text (inclusive) + end_col column just after the text; not used when + "length" is present; when {col} and "end_col" + are equal, and "end_lnum" is omitted or equal + to {lnum}, this is a zero-width text property + bufnr buffer to add the property to; when omitted + the current buffer is used + id user defined ID for the property; must be a + number, should be positive; when using "text" + then "id" must not be present and will be set + automatically to a negative number; otherwise + zero is used + *E1305* + text text to be displayed before {col}, or + above/below the line if {col} is zero; prepend + and/or append spaces for padding with + highlighting; cannot be used with "length", + "end_lnum" and "end_col" + See |virtual-text| for more information. + *E1294* + text_align when "text" is present and {col} is zero; + specifies where to display the text: + after after the end of the line + right right aligned in the window (unless + the text wraps to the next screen + line) + below in the next screen line + above just above the line + When omitted "after" is used. Only one + "right" property can fit in each line, if + there are two or more these will go in a + separate line (still right aligned). + text_padding_left *E1296* + used when "text" is present and {col} is zero; + padding between the end of the text line + (leftmost column for "above" and "below") and + the virtual text, not highlighted + text_wrap when "text" is present and {col} is zero, + specifies what happens if the text doesn't + fit: + wrap wrap the text to the next line + truncate truncate the text to make it fit + When omitted "truncate" is used. + Note that this applies to the individual text + property, the 'wrap' option sets the overall + behavior + All fields except "type" are optional. + + It is an error when both "length" and "end_lnum" or "end_col" + are given. Either use "length" or "end_col" for a property + within one line, or use "end_lnum" and "end_col" for a + property that spans more than one line. + When neither "length" nor "end_col" are given the property + will be zero-width. That means it will move with the text, as + a kind of mark. One character will be highlighted, if the + type specifies highlighting. + The property can end exactly at the last character of the + text, or just after it. In the last case, if text is appended + to the line, the text property size will increase, also when + the property type does not have "end_incl" set. + + "type" will first be looked up in the buffer the property is + added to. When not found, the global property types are used. + If not found an error is given. + *virtual-text* + When "text" is used and the column is non-zero then this text + will be displayed at the specified start location of the text + property. The text of the buffer line will be shifted to make + room. This is called "virtual text". + When the column is zero the virtual text will appear above, + after or below the buffer text. The "text_align" and + "text_wrap" arguments determine how it is displayed. + To separate the virtual text from the buffer text prepend + and/or append spaces to the "text" field or use the + "text_padding_left" value. + + Make sure to use a highlight that makes clear to the user that + this is virtual text, otherwise it will be very confusing that + the text cannot be edited. When using "above" you need to + make clear this text belongs to the text line below it, when + using "below" you need to make sure it belongs to the text + line above it. + + The text will be displayed but it is not part of the actual + buffer line, the cursor cannot be placed on it. A mouse click + in the text will move the cursor to the first character after + the text, or the last character of the line. + Any Tab and other control character in the text will be + changed to a space (Rationale: otherwise the size of the text + 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* . + + Can also be used as a |method|: > + GetLnum()->prop_add(col, props) +< + *prop_add_list()* +prop_add_list({props}, [{item}, ...]) + Similar to prop_add(), but attaches a text property at + multiple positions in a buffer. + + {props} is a dictionary with these fields: + bufnr buffer to add the property to; when omitted + the current buffer is used + id user defined ID for the property; must be a + number; when omitted zero is used + type name of the text property type + All fields except "type" are optional. + + The second argument is a List of items, where each {item} is a + list that specifies the starting and ending position of the + text: [{lnum}, {col}, {end-lnum}, {end-col}] + or: [{lnum}, {col}, {end-lnum}, {end-col}, {id}] + + The first two items {lnum} and {col} specify the starting + position of the text where the property will be attached. + The next two items {end-lnum} and {end-col} specify the + position just after the text. + An optional fifth item {id} can be used to give a different ID + to a property. When omitted the ID from {props} is used, + falling back to zero if none are present. + + It is not possible to add a text property with a "text" field + here. + + Example: > + call prop_add_list(#{type: 'MyProp', id: 2}, + \ [[1, 4, 1, 7], + \ [1, 15, 1, 20], + \ [2, 30, 3, 30]] +< + Can also be used as a |method|: > + GetProp()->prop_add_list([[1, 1, 1, 2], [1, 4, 1, 8]]) + + +prop_clear({lnum} [, {lnum-end} [, {props}]]) *prop_clear()* + Remove all text properties from line {lnum}. + When {lnum-end} is given, remove all text properties from line + {lnum} to {lnum-end} (inclusive). + + When {props} contains a "bufnr" item use this buffer, + otherwise use the current buffer. + + Can also be used as a |method|: > + GetLnum()->prop_clear() +< + *prop_find()* +prop_find({props} [, {direction}]) + Search for a text property as specified with {props}: + id property with this ID + type property with this type name + both "id" and "type" must both match + bufnr buffer to search in; when present a + start position with "lnum" and "col" + must be given; when omitted the + current buffer is used + lnum start in this line (when omitted start + at the cursor) + col start at this column (when omitted + and "lnum" is given: use column 1, + otherwise start at the cursor) + skipstart do not look for a match at the start + position + + A property matches when either "id" or "type" matches. + {direction} can be "f" for forward and "b" for backward. When + omitted forward search is performed. + + If a match is found then a Dict is returned with the entries + as with prop_list(), and additionally an "lnum" entry. + If no match is found then an empty Dict is returned. + + +prop_list({lnum} [, {props}]) *prop_list()* + Returns a List with all the text properties in line {lnum}. + + The following optional items are supported in {props}: + bufnr use this buffer instead of the current buffer + end_lnum return text properties in all the lines + between {lnum} and {end_lnum} (inclusive). + A negative value is used as an offset from the + last buffer line; -1 refers to the last buffer + line. + types List of property type names. Return only text + properties that match one of the type names. + ids List of property identifiers. Return only text + properties with one of these identifiers. + + The properties are ordered by starting column and priority. + Each property is a Dict with these entries: + lnum starting line number. Present only when + returning text properties between {lnum} and + {end_lnum}. + col starting column + length length in bytes, one more if line break is + included + id property ID + text text to be displayed before {col}. Only + present for |virtual-text| properties. + text_align alignment property of |virtual-text|. + text_padding_left + left padding used for virtual text. + text_wrap specifies whether |virtual-text| is wrapped. + type name of the property type, omitted if + the type was deleted + type_bufnr buffer number for which this type was defined; + 0 if the type is global + start when TRUE property starts in this line + end when TRUE property ends in this line + + When "start" is zero the property started in a previous line, + the current one is a continuation. + When "end" is zero the property continues in the next line. + The line break after this line is included. + + Returns an empty list on error. + + Examples: + " get text properties placed in line 5 + echo prop_list(5) + " get text properties placed in line 20 in buffer 4 + echo prop_list(20, {'bufnr': 4}) + " get all the text properties between line 1 and 20 + echo prop_list(1, {'end_lnum': 20}) + " get all the text properties of type 'myprop' + echo prop_list(1, {'types': ['myprop'], + \ 'end_lnum': -1}) + " get all the text properties of type 'prop1' or 'prop2' + echo prop_list(1, {'types': ['prop1', 'prop2'], + \ 'end_lnum': -1}) + " get all the text properties with ID 8 + echo prop_list(1, {'ids': [8], 'end_lnum': line('$')}) + " get all the text properties with ID 10 and 20 + echo prop_list(1, {'ids': [10, 20], 'end_lnum': -1}) + " get text properties with type 'myprop' and ID 100 + " in buffer 4. + echo prop_list(1, {'bufnr': 4, 'types': ['myprop'], + \ 'ids': [100], 'end_lnum': -1}) + + Can also be used as a |method|: > + GetLnum()->prop_list() +< + *prop_remove()* *E968* *E860* +prop_remove({props} [, {lnum} [, {lnum-end}]]) + Remove a matching text property from line {lnum}. When + {lnum-end} is given, remove matching text properties from line + {lnum} to {lnum-end} (inclusive). + When {lnum} is omitted remove matching text properties from + all lines (this requires going over all lines, thus will be a + bit slow for a buffer with many lines). + + {props} is a dictionary with these fields: + id remove text properties with this ID + type remove text properties with this type name + types remove text properties with type names in this + List + both "id" and "type"/"types" must both match + bufnr use this buffer instead of the current one + all when TRUE remove all matching text properties, + not just the first one + Only one of "type" and "types" may be supplied. *E1295* + + A property matches when either "id" or one of the supplied + types matches. + If buffer "bufnr" does not exist you get an error message. + If buffer "bufnr" is not loaded then nothing happens. + + Returns the number of properties that were removed. + + Can also be used as a |method|: > + GetProps()->prop_remove() + + +prop_type_add({name}, {props}) *prop_type_add()* *E969* *E970* + Add a text property type {name}. If a property type with this + name already exists an error is given. Nothing is returned. + {props} is a dictionary with these optional fields: + bufnr define the property only for this buffer; this + avoids name collisions and automatically + clears the property types when the buffer is + deleted. + highlight name of highlight group to use + priority when a character has multiple text + properties the one with the highest priority + will be used; negative values can be used, the + default priority is zero + combine when omitted or TRUE combine the highlight + with any syntax highlight; when FALSE syntax + highlight will not be used + override when TRUE the highlight overrides any other, + including 'cursorline' and Visual + start_incl when TRUE inserts at the start position will + be included in the text property + end_incl when TRUE inserts at the end position will be + included in the text property + + Can also be used as a |method|: > + GetPropName()->prop_type_add(props) + +prop_type_change({name}, {props}) *prop_type_change()* + Change properties of an existing text property type. If a + property with this name does not exist an error is given. + The {props} argument is just like |prop_type_add()|. + + Can also be used as a |method|: > + GetPropName()->prop_type_change(props) + +prop_type_delete({name} [, {props}]) *prop_type_delete()* + Remove the text property type {name}. When text properties + using the type {name} are still in place, they will not have + an effect and can no longer be removed by name. + + {props} can contain a "bufnr" item. When it is given, delete + a property type from this buffer instead of from the global + property types. + + When text property type {name} is not found there is no error. + + Can also be used as a |method|: > + GetPropName()->prop_type_delete() + +prop_type_get({name} [, {props}]) *prop_type_get()* + Returns the properties of property type {name}. This is a + dictionary with the same fields as was given to + prop_type_add(). + When the property type {name} does not exist, an empty + dictionary is returned. + + {props} can contain a "bufnr" item. When it is given, use + this buffer instead of the global property types. + + Can also be used as a |method|: > + GetPropName()->prop_type_get() + +prop_type_list([{props}]) *prop_type_list()* + Returns a list with all property type names. + + {props} can contain a "bufnr" item. When it is given, use + this buffer instead of the global property types. + + +============================================================================== +3. When text changes *text-prop-changes* + +Vim will do its best to keep the text properties on the text where it was +attached. When inserting or deleting text the properties after the change +will move accordingly. + +When text is deleted and a text property no longer includes any text, it is +deleted. However, a text property that was defined as zero-width will remain, +unless the whole line is deleted. + *E275* +When a buffer is unloaded, all the text properties are gone. There is no way +to store the properties in a file. You can only re-create them. When a +buffer is hidden the text is preserved and so are the text properties. It is +not possible to add text properties to an unloaded buffer. + +When using replace mode, the text properties stay on the same character +positions, even though the characters themselves change. + +To update text properties after the text was changed, install a callback with +`listener_add()`. E.g, if your plugin does spell checking, you can have the +callback update spelling mistakes in the changed text. Vim will move the +properties below the changed text, so that they still highlight the same text, +thus you don't need to update these. + + +Text property columns are not updated or copied: ~ + +- When setting the line with |setline()| or through an interface, such as Lua, + Tcl or Python. Vim does not know what text got inserted or deleted. +- With a command like `:move`, which takes a line of text out of context. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt new file mode 100644 index 0000000..7ed8e00 --- /dev/null +++ b/runtime/doc/tips.txt @@ -0,0 +1,571 @@ +*tips.txt* For Vim version 9.1. Last change: 2023 Aug 10 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Tips and ideas for using Vim *tips* + +These are just a few that we thought would be helpful for many users. +You can find many more tips on the wiki. The URL can be found on +http://www.vim.org + +Don't forget to browse the user manual, it also contains lots of useful tips +|usr_toc.txt|. + +Editing C programs |C-editing| +Finding where identifiers are used |ident-search| +Switching screens in an xterm |xterm-screens| +Scrolling in Insert mode |scroll-insert| +Smooth scrolling |scroll-smooth| +Correcting common typing mistakes |type-mistakes| +Counting words, lines, etc. |count-items| +Restoring the cursor position |restore-position| +Renaming files |rename-files| +Change a name in multiple files |change-name| +Speeding up external commands |speed-up| +Useful mappings |useful-mappings| +Compressing the help files |gzip-helpfile| +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| + +============================================================================== +Editing C programs *C-editing* + +There are quite a few features in Vim to help you edit C program files. Here +is an overview with tags to jump to: + +|usr_29.txt| Moving through programs chapter in the user manual. +|usr_30.txt| Editing programs chapter in the user manual. +|C-indenting| Automatically set the indent of a line while typing + text. +|=| Re-indent a few lines. +|format-comments| Format comments. + +|:checkpath| Show all recursively included files. +|[i| Search for identifier under cursor in current and + included files. +|[_CTRL-I| Jump to match for "[i" +|[I| List all lines in current and included files where + identifier under the cursor matches. +|[d| Search for define under cursor in current and included + files. + +|CTRL-]| Jump to tag under cursor (e.g., definition of a + function). +|CTRL-T| Jump back to before a CTRL-] command. +|:tselect| Select one tag out of a list of matching tags. + +|gd| Go to Declaration of local variable under cursor. +|gD| Go to Declaration of global variable under cursor. + +|gf| Go to file name under the cursor. + +|%| Go to matching (), {}, [], /* */, #if, #else, #endif. +|[/| Go to previous start of comment. +|]/| Go to next end of comment. +|[#| Go back to unclosed #if, #ifdef, or #else. +|]#| Go forward to unclosed #else or #endif. +|[(| Go back to unclosed '(' +|])| Go forward to unclosed ')' +|[{| Go back to unclosed '{' +|]}| Go forward to unclosed '}' + +|v_ab| Select "a block" from "[(" to "])", including braces +|v_ib| Select "inner block" from "[(" to "])" +|v_aB| Select "a block" from "[{" to "]}", including brackets +|v_iB| Select "inner block" from "[{" to "]}" + +============================================================================== +Finding where identifiers are used *ident-search* + +You probably already know that |tags| can be used to jump to the place where a +function or variable is defined. But sometimes you wish you could jump to all +the places where a function or variable is being used. This is possible in +two ways: +1. Using the |:grep| command. This should work on most Unix systems, + but can be slow (it reads all files) and only searches in one directory. +2. Using ID utils. This is fast and works in multiple directories. It uses a + database to store locations. You will need some additional programs for + this to work. And you need to keep the database up to date. + +Using the GNU id-tools: + +What you need: +- The GNU id-tools installed (mkid is needed to create ID and lid is needed to + use the macros). +- An identifier database file called "ID" in the current directory. You can + create it with the shell command "mkid file1 file2 ..". + +Put this in your .vimrc: > + map _u :call ID_search()<Bar>execute "/\\<" .. g:word .. "\\>"<CR> + map _n :n<Bar>execute "/\\<" .. g:word .. "\\>"<CR> + + function! ID_search() + let g:word = expand("<cword>") + let x = system("lid --key=none " .. g:word) + let x = substitute(x, "\n", " ", "g") + execute "next " .. x + endfun + +To use it, place the cursor on a word, type "_u" and vim will load the file +that contains the word. Search for the next occurrence of the word in the +same file with "n". Go to the next file with "_n". + +This has been tested with id-utils-3.2 (which is the name of the id-tools +archive file on your closest gnu-ftp-mirror). + +[the idea for this comes from Andreas Kutschera] + +============================================================================== +Switching screens in an xterm *xterm-screens* *xterm-save-screen* + +(From comp.editors, by Juergen Weigert, in reply to a question) + +:> Another question is that after exiting vim, the screen is left as it +:> was, i.e. the contents of the file I was viewing (editing) was left on +:> the screen. The output from my previous like "ls" were lost, +:> ie. no longer in the scrolling buffer. I know that there is a way to +:> restore the screen after exiting vim or other vi like editors, +:> I just don't know how. Helps are appreciated. Thanks. +: +:I imagine someone else can answer this. I assume though that vim and vi do +:the same thing as each other for a given xterm setup. + +They not necessarily do the same thing, as this may be a termcap vs. +terminfo problem. You should be aware that there are two databases for +describing attributes of a particular type of terminal: termcap and +terminfo. This can cause differences when the entries differ AND when of +the programs in question one uses terminfo and the other uses termcap +(also see |+terminfo|). + +In your particular problem, you are looking for the control sequences +^[[?47h and ^[[?47l. These switch between xterms alternate and main screen +buffer. As a quick workaround a command sequence like > + echo -n "^[[?47h"; vim ... ; echo -n "^[[?47l" +may do what you want. (My notation ^[ means the ESC character, further down +you'll see that the databases use \E instead). + +On startup, vim echoes the value of the termcap variable ti (terminfo: +smcup) to the terminal. When exiting, it echoes te (terminfo: rmcup). Thus +these two variables are the correct place where the above mentioned control +sequences should go. + +Compare your xterm termcap entry (found in /etc/termcap) with your xterm +terminfo entry (retrieved with "infocmp -C xterm"). Both should contain +entries similar to: > + :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h: + +PS: If you find any difference, someone (your sysadmin?) should better check + the complete termcap and terminfo database for consistency. + +NOTE 1: If you recompile Vim with FEAT_XTERM_SAVE defined in feature.h, the +builtin xterm will include the mentioned "te" and "ti" entries. + +NOTE 2: If you want to disable the screen switching, and you don't want to +change your termcap, you can add these lines to your .vimrc: > + :set t_ti= t_te= + +============================================================================== +Scrolling in Insert mode *scroll-insert* + +If you are in insert mode and you want to see something that is just off the +screen, you can use CTRL-X CTRL-E and CTRL-X CTRL-Y to scroll the screen. + |i_CTRL-X_CTRL-E| + +To make this easier, you could use these mappings: > + :inoremap <C-E> <C-X><C-E> + :inoremap <C-Y> <C-X><C-Y> +(Type this literally, make sure the '<' flag is not in 'cpoptions'). +You then lose the ability to copy text from the line above/below the cursor +|i_CTRL-E|. + +Also consider setting 'scrolloff' to a larger value, so that you can always see +some context around the cursor. If 'scrolloff' is bigger than half the window +height, the cursor will always be in the middle and the text is scrolled when +the cursor is moved up/down. + +============================================================================== +Smooth scrolling *scroll-smooth* + +If you like the scrolling to go a bit smoother, you can use these mappings: > + :map <C-U> <C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y><C-Y> + :map <C-D> <C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E><C-E> + +(Type this literally, make sure the '<' flag is not in 'cpoptions'). + +============================================================================== +Correcting common typing mistakes *type-mistakes* + +When there are a few words that you keep on typing in the wrong way, make +abbreviations that correct them. For example: > + :ab teh the + :ab fro for + +============================================================================== +Counting words, lines, etc. *count-items* + +To count how often any pattern occurs in the current buffer use the substitute +command and add the 'n' flag to avoid the substitution. The reported number +of substitutions is the number of items. Examples: > + + :%s/./&/gn characters + :%s/\i\+/&/gn words + :%s/^//n lines + :%s/the/&/gn "the" anywhere + :%s/\<the\>/&/gn "the" as a word + +You might want to reset 'hlsearch' or do ":nohlsearch". +Add the 'e' flag if you don't want an error when there are no matches. + +An alternative is using |v_g_CTRL-G| in Visual mode. + +If you want to find matches in multiple files use |:vimgrep|. + + *count-bytes* +If you want to count bytes, you can use this: + + Visually select the characters (block is also possible) + Use "y" to yank the characters + Use the strlen() function: > + :echo strlen(@") +A line break is counted for one byte. + +============================================================================== +Restoring the cursor position *restore-position* + +Sometimes you want to write a mapping that makes a change somewhere in the +file and restores the cursor position, without scrolling the text. For +example, to change the date mark in a file: > + :map <F2> msHmtgg/Last [cC]hange:\s*/e+1<CR>"_D"=strftime("%Y %b %d")<CR>p'tzt`s + +Breaking up saving the position: + ms store cursor position in the 's' mark + H go to the first line in the window + mt store this position in the 't' mark + +Breaking up restoring the position: + 't go to the line previously at the top of the window + zt scroll to move this line to the top of the window + `s jump to the original position of the cursor + +For something more advanced see |winsaveview()| and |winrestview()|. + +============================================================================== +Renaming files *rename-files* + +Say I have a directory with the following files in them (directory picked at +random :-): + +buffer.c +charset.c +digraph.c +... + +and I want to rename *.c *.bla. I'd do it like this: > + + $ vim + :r !ls *.c + :%s/\(.*\).c/mv & \1.bla + :w !sh + :q! + +============================================================================== +Change a name in multiple files *change-name* + +Example for using a script file to change a name in several files: + + Create a file "subs.vim" containing substitute commands and a :update + command: > + :%s/Jones/Smith/g + :%s/Allen/Peter/g + :update +< + Execute Vim on all files you want to change, and source the script for + each argument: > + + vim *.let + argdo source subs.vim + +See |:argdo|. + +============================================================================== +Speeding up external commands *speed-up* + +In some situations, execution of an external command can be very slow. This +can also slow down wildcard expansion on Unix. Here are a few suggestions to +increase the speed. + +If your .cshrc (or other file, depending on the shell used) is very long, you +should separate it into a section for interactive use and a section for +non-interactive use (often called secondary shells). When you execute a +command from Vim like ":!ls", you do not need the interactive things (for +example, setting the prompt). Put the stuff that is not needed after these +lines: > + + if ($?prompt == 0) then + exit 0 + endif + +Another way is to include the "-f" flag in the 'shell' option, e.g.: > + + :set shell=csh\ -f + +(the backslash is needed to include the space in the option). +This will make csh completely skip the use of the .cshrc file. This may cause +some things to stop working though. + +============================================================================== +Useful mappings *useful-mappings* + +Here are a few mappings that some people like to use. + + *map-backtick* > + :map ' ` +Make the single quote work like a backtick. Puts the cursor on the column of +a mark, instead of going to the first non-blank character in the line. + + *emacs-keys* +For Emacs-style editing on the command-line: > + " start of line + :cnoremap <C-A> <Home> + " back one character + :cnoremap <C-B> <Left> + " delete character under cursor + :cnoremap <C-D> <Del> + " end of line + :cnoremap <C-E> <End> + " forward one character + :cnoremap <C-F> <Right> + " recall newer command-line + :cnoremap <C-N> <Down> + " recall previous (older) command-line + :cnoremap <C-P> <Up> + " back one word + :cnoremap <Esc><C-B> <S-Left> + " forward one word + :cnoremap <Esc><C-F> <S-Right> + +NOTE: This requires that the '<' flag is excluded from 'cpoptions'. |<>| + + *format-bullet-list* +This mapping will format any bullet list. It requires that there is an empty +line above and below each list entry. The expression commands are used to +be able to give comments to the parts of the mapping. > + + :let m = ":map _f :set ai<CR>" " need 'autoindent' set + :let m ..= "{O<Esc>" " add empty line above item + :let m ..= "}{)^W" " move to text after bullet + :let m ..= "i <CR> <Esc>" " add space for indent + :let m ..= "gq}" " format text after the bullet + :let m ..= "{dd" " remove the empty line + :let m ..= "5lDJ" " put text after bullet + :execute m |" define the mapping + +(<> notation |<>|. Note that this is all typed literally. ^W is "^" "W", not +CTRL-W. You can copy/paste this into Vim if '<' is not included in +'cpoptions'.) + +Note that the last comment starts with |", because the ":execute" command +doesn't accept a comment directly. + +You also need to set 'textwidth' to a non-zero value, e.g., > + :set tw=70 + +A mapping that does about the same, but takes the indent for the list from the +first line (Note: this mapping is a single long line with a lot of spaces): > + :map _f :set ai<CR>}{a <Esc>WWmmkD`mi<CR><Esc>kkddpJgq}'mJO<Esc>j +< + *collapse* +These two mappings reduce a sequence of empty (;b) or blank (;n) lines into a +single line > + :map ;b GoZ<Esc>:g/^$/.,/./-j<CR>Gdd + :map ;n GoZ<Esc>:g/^[ <Tab>]*$/.,/[^ <Tab>]/-j<CR>Gdd + +============================================================================== +Compressing the help files *gzip-helpfile* + +For those of you who are really short on disk space, you can compress the help +files and still be able to view them with Vim. This makes accessing the help +files a bit slower and requires the "gzip" program. + +(1) Compress all the help files: "gzip doc/*.txt". + +(2) Edit "doc/tags" and change the ".txt" to ".txt.gz": > + :%s=\(\t.*\.txt\)\t=\1.gz\t= + +(3) Add this line to your vimrc: > + set helpfile={dirname}/help.txt.gz + +Where {dirname} is the directory where the help files are. The |gzip| plugin +will take care of decompressing the files. +You must make sure that $VIMRUNTIME is set to where the other Vim files are, +when they are not in the same location as the compressed "doc" directory. See +|$VIMRUNTIME|. + +============================================================================== +Executing shell commands in a window *shell-window* + +See |terminal|. + +Another solution is splitting your terminal screen or display window with the +"splitvt" program. You can probably find it on some ftp server. The person +that knows more about this is Sam Lantinga <slouken@cs.ucdavis.edu>. + +Another alternative is the "window" command, found on BSD Unix systems, which +supports multiple overlapped windows. Or the "screen" program, found at +www.uni-erlangen.de, which supports a stack of windows. + +============================================================================== +Hex editing *hex-editing* *using-xxd* + +See section |23.4| of the user manual. + +If one has a particular extension that one uses for binary files (such as exe, +bin, etc), you may find it helpful to automate the process with the following +bit of autocmds for your <.vimrc>. Change that "*.bin" to whatever +comma-separated list of extension(s) you find yourself wanting to edit: > + + " vim -b : edit binary using xxd-format! + augroup Binary + autocmd! + autocmd BufReadPre *.bin set binary + autocmd BufReadPost *.bin + \ if &binary + \ | execute "silent %!xxd -c 32" + \ | set filetype=xxd + \ | redraw + \ | endif + autocmd BufWritePre *.bin + \ if &binary + \ | let s:view = winsaveview() + \ | execute "silent %!xxd -r -c 32" + \ | endif + autocmd BufWritePost *.bin + \ if &binary + \ | execute "silent %!xxd -c 32" + \ | set nomodified + \ | call winrestview(s:view) + \ | redraw + \ | endif + augroup END + +============================================================================== +Using <> notation in autocommands *autocmd-<>* + +The <> notation is not recognized in the argument of an :autocmd. To avoid +having to use special characters, you could use a self-destroying mapping to +get the <> notation and then call the mapping from the autocmd. Example: + + *map-self-destroy* > + " This is for automatically adding the name of the file to the menu list. + " It uses a self-destroying mapping! + " 1. use a line in the buffer to convert the 'dots' in the file name to \. + " 2. store that in register '"' + " 3. add that name to the Buffers menu list + " WARNING: this does have some side effects, like overwriting the + " current register contents and removing any mapping for the "i" command. + " + autocmd BufNewFile,BufReadPre * nmap i :nunmap i<CR>O<C-R>%<Esc>:.g/\./s/\./\\./g<CR>0"9y$u:menu Buffers.<C-R>9 :buffer <C-R>%<C-V><CR><CR> + autocmd BufNewFile,BufReadPre * normal i + +Another method, perhaps better, is to use the ":execute" command. In the +string you can use the <> notation by preceding it with a backslash. Don't +forget to double the number of existing backslashes and put a backslash before +'"'. +> + autocmd BufNewFile,BufReadPre * exe "normal O\<C-R>%\<Esc>:.g/\\./s/\\./\\\\./g\<CR>0\"9y$u:menu Buffers.\<C-R>9 :buffer \<C-R>%\<C-V>\<CR>\<CR>" + +For a real buffer menu, user functions should be used (see |:function|), but +then the <> notation isn't used, which defeats using it as an example here. + +============================================================================== +Highlighting matching parens *match-parens* + +This example shows the use of a few advanced tricks: +- using the |CursorMoved| autocommand event +- using |searchpairpos()| to find a matching paren +- using |synID()| to detect whether the cursor is in a string or comment +- using |:match| to highlight something +- using a |pattern| to match a specific position in the file. + +This should be put in a Vim script file, since it uses script-local variables. +It skips matches in strings or comments, unless the cursor started in string +or comment. This requires syntax highlighting. + +A slightly more advanced version is used in the |matchparen| plugin. +> + let s:paren_hl_on = 0 + function s:Highlight_Matching_Paren() + if s:paren_hl_on + match none + let s:paren_hl_on = 0 + endif + + let c_lnum = line('.') + let c_col = col('.') + + let c = getline(c_lnum)[c_col - 1] + let plist = split(&matchpairs, ':\|,') + let i = index(plist, c) + if i < 0 + return + endif + if i % 2 == 0 + let s_flags = 'nW' + let c2 = plist[i + 1] + else + let s_flags = 'nbW' + let c2 = c + let c = plist[i - 1] + endif + if c == '[' + let c = '\[' + let c2 = '\]' + endif + let s_skip ='synIDattr(synID(line("."), col("."), 0), "name") ' .. + \ '=~? "string\\|comment"' + execute 'if' s_skip '| let s_skip = 0 | endif' + + let [m_lnum, m_col] = searchpairpos(c, '', c2, s_flags, s_skip) + + if m_lnum > 0 && m_lnum >= line('w0') && m_lnum <= line('w$') + exe 'match Search /\(\%' .. c_lnum .. 'l\%' .. c_col .. + \ 'c\)\|\(\%' .. m_lnum .. 'l\%' .. m_col .. 'c\)/' + let s:paren_hl_on = 1 + endif + endfunction + + autocmd CursorMoved,CursorMovedI * call s:Highlight_Matching_Paren() + autocmd InsertEnter * match none +< + +============================================================================== +Opening help in the current window *help-curwin* + +By default, help is displayed in a split window. If you prefer it opens in +the current window, try this custom `:HelpCurwin` command: +> + command -bar -nargs=? -complete=help HelpCurwin execute s:HelpCurwin(<q-args>) + let s:did_open_help = v:false + + function s:HelpCurwin(subject) abort + let mods = 'silent noautocmd keepalt' + if !s:did_open_help + execute mods .. ' help' + execute mods .. ' helpclose' + let s:did_open_help = v:true + endif + if !getcompletion(a:subject, 'help')->empty() + execute mods .. ' edit ' .. &helpfile + set buftype=help + endif + return 'help ' .. a:subject + endfunction +< + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt new file mode 100644 index 0000000..9847ff7 --- /dev/null +++ b/runtime/doc/todo.txt @@ -0,0 +1,6345 @@ +*todo.txt* For Vim version 9.1. Last change: 2023 Dec 14 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + TODO list for Vim *todo* + +This is a veeeery long list of known bugs, current work and desired +improvements. To make it a little bit accessible, the older items are grouped +by subject. In the first column of the line a classification is used to be +able to look for "the next thing to do": + +Priority classification: +9 next point release +8 next release +7 as soon as possible +6 soon +5 should be included +4 nice to have +3 consider including +2 maybe not +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|. + +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 +maillist. Updates will be forwarded to the |vim_dev| maillist. Issues +entered there will not be repeated below, unless there is extra information. + +The #1234 numbers refer to an issue or pull request on github. To see it in a +browser use: https://github.com/vim/vim/issues/1234 +(replace 1234 with the issue/pull number) + *known-bugs* +-------------------- Known bugs and current work ----------------------- + +FILETYPE_FILE is defined to the same value in multiple places. +Only use the one in feature.h. Others too. + +Mapping with modifier is not recognized after a partial mapping. Probably +because the typeahead was simplified when looking for a matching mapping. +Need to somehow undo the simplification. #12002 + +Windows scroll when using the autocmd window. #12085 +in restore_snapshot_rec() restore more values from the snapshot, instead of +calling frame_new_height() and frame_new_width(), especially w_topline and +w_skipcol. + +Check places that source "path/*.vim" to not match other extensions, e.g. +.vim9, on MS-Windows (short file name match, gets expanded to long file name). +E.g. for startup files, plugins, packs, etc. + +When a help item can't be found, then open 'helpfile'. Search for the tag in +that file and gtive E149 only when not found. Helps for a tiny Vim installed +without all the help files. + +SpellCap highlight not updated - PR #12428 + +Virtual text problems: +- If 'list' is on, 'below' virtual text which includes 1 or 2 characters are + gone (Issue #12028) +- Virtual text aligned "above": Wrong indentation when using tabs (Issue + #12232) +- Virtual text to the right of the line that isn't visible doesn't cause the + 'extends' character to show in 'list' mode. #12478 +- Virtual text to the right of the line that fits exactly on screen causes + that line and all lines below it not to be displayed (Issue #12213) +- Window screen gets wrong when a virtual text is placed on 'above' or + 'below' on an empty line (Issue #11959) +- truncated Virtual text below an empty line causes display error #12493 + +When 'virtualedit' is "all" and 'cursorcolumn' is set, the wrong column may be +highlighted. (van-de-bugger, 2018 Jan 23, #2576) + +Improve profiling by caching matching functions: PR #12192 + +With 'smoothscroll' set and "lastline" in 'display', moving the cursor to a +wrapping line that makes the display scroll up may scroll much more than +needed, thus jump-scrolling. (part of issue 12411) + +Add filecopy() ? #12346 + +Implement foreach() PR #12166 + +Errors when running tests with valgrind: +- test_codestyle.vim: e.g.: + command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 6: keycode_check.vim: space before tab: Expected 0 but got 7 + command line..script /home/mool/vim/vim90/src/testdir/runtest.vim[569]..function RunTheTest[52]..Test_test_files line 10: setup.vim: trailing white space: Expected 0 but got 23 +- test_gui.vim: + Found errors in Test_gui_mouse_event(): + +When every block in if/elseif ends in "throw" or "return" code following after +"endif" should give an "unreachable code" error. + +Upcoming larger works: +- Make spell checking work with recent .dic/.aff files, e.g. French. #4916 + Make Vim understand the format somehow? Search for "spell" below. + Make sure suggestions are speedy, also with composed words (German). +- Make syntax highlighting faster and better. + Add a generic mechanism to test a syntax plugin: An input file for the + filetype and a screendump of expected result. With a way to specify the + setup (global variables) and another dump file from that. + Discuss alternatives for using other grammars (treesitter, TextMate). + - Possibly conversion to Vim syntax rules. + - Other mechanism than group and cluster to nest syntax items, to be used + for grammars. + - Possibly keeping the parsed syntax tree and incremental updates. + - tree-sitter doesn't handle incorrect syntax (while typing) properly. + - NeoVim uses treesitter, what can we learn from that? + - Vscode is asked to switch to treesitter: + https://github.com/microsoft/vscode/issues/50140 + - Vscode uses TextMate. #9087 - Other people don't like it. + https://github.com/icedman/vim-textmate + - sublime grammar? Hugo mentions it's a moving target #9087 + - Make clear how it relates to LSP. + - example plugin: https://github.com/uga-rosa/dps-vsctm.vim + + +Further Vim9 improvements: +- Classes and Interfaces. See |vim9-classes| + - Cannot use class type of itself in the method (Issue #12369) + - Getting member of variable with "any" type should be handled at runtime. + Remove temporary solution from #12096 / patch 9.0.1375. + - "obj.Method()" does not always work in a compiled function, assumes "obj" + is a dictionary. #12196 Issue #12024 might be the same problem. + Issue #11822: any.Func() can be a dict or an object call, need to handle + this at runtime. Also see #12198 for an example. + Possibly issue #11981 can be fixed at the same time (has two examples). + - Make ":defcompile ClassName" compile all functions and methods in the + class. + - Forward declaration of a class? E.g. for Clone() function. + Email lifepillar 2023 Mar 26 + - object empty(), len() - can class define a method to be used for them? + - When "Meta" is a class, is "const MetaAlias = Meta" allowed? It should + either work or given an error. Possibly give an error now and implement it + later (using a typedef). #12006 + - how about lock/unlock? + - For chaining, allow using the class name as type for function return + value. + - Implement "specifies" interface + - Implement generics + - Add "assignable" (class or child)? + - More efficient way for interface member index than iterating over list? + - a variant of type() that returns a different type for each class? + list<number> and list<string> should also differ. +- implement :enum +- Promise class, could be used to wait on a popup close callback? +- class local to a function +- Use Vim9 for more runtime files. +- Inline call to map() and filter(), better type checking. +- When evaluating constants for script variables, some functions could work: + has(featureName), len(someString) +- Implement as part of an expression: ++expr, --expr, expr++, expr--. +- The use of the literal value "null" and the type specific "null_xxx" + values is confusing (#13458, #11770). + +Information missing in terminfo: +- Codes used for focus gained and lost termcodes are hard-coded in + set_termname(), not named. +- t_fe enable focus-event tracking +- t_fd disable focus-event tracking +- Accept "hyper" and "meta" modifiers (16 and 32) from Kitty like Meta? + 8 is actually "super". +- t_RV request terminal version string; xterm: "\033[>c" + change in terminfo for "RV" uses the wrong escape sequence 7 - 14 Jan only +- Codes for <PasteStart> t_PS and <PasteEnd> t_PE; with bracketed paste: + t_BE and t_BD. +Modifiers for various keys +- flag to indicate "xterm compatible modifiers" ? +Underline and similar: +- t_AU - Set underline color: like "AF" and "AB" entries. +- t_Ce undercurl and underline end +- t_Cs undercurl (curly underline) mode +- t_Us double underline mode +- t_ds dotted underline mode +- t_Ds dashed underline mode +- t_Te strikethrough end +- t_Ts strikethrough mode +Cursor codes: |termcap-cursor-shape| +- t_RC request terminal cursor blinking +- t_RS request terminal cursor style +- t_VS cursor normally visible (no blink) +- t_SI start insert mode (bar cursor shape) +- t_SR start replace mode (underline cursor shape) +- t_EI end insert or replace mode (block cursor shape) +- t_SC set cursor color start +- t_EC set cursor color end +- t_SH set cursor shape +State requests: +- t_RF request terminal foreground color +- t_RB request terminal background color +Less important (not needed for regular editing): +- t_IS set icon text start +- t_IE set icon text end +- t_ST save window title to stack +- t_RT restore window title from stack +- t_Si save icon text to stack +- t_Ri restore icon text from stack +- t_WP set window position (Y, X) in pixels +- t_GP get window position (Y, X) in pixels +- t_WS set window size (height, width in cells) +Vim internal, but there should be a terminfo entry for these: +- t_8f set foreground color (R, G, B) in printf() format +- t_8b set background color (R, G, B) in printf() format +- t_8u set underline color (R, G, B) in printf() format +Probably Vim internal, not in terminfo: +- t_TE end of "raw" mode +- t_TI put terminal into "raw" mode +- t_RK request terminal keyboard protocol state; sent after |t_TI| +Already working, not properly documented: +- t_u7 request cursor position + +Popup windows: +- Add a function to redraw a specific popup window. Esp. to be used when + editing the command line, when screen updating doesn't happen. (Shougo) + #10210 Example that shows the need on the issue. + Probably need to update all popup windows (they may overlap) + If the display is scrolled need to redraw everything later. +- Add a flag to make a popup window focusable? + CTRL-W P cycle over any preview window or focusable popup, end up back in + current window. + ? - switch between current window and all popup windows + Esc in popup window goes back to previous current window +- Add a termcap entry for changing the cursor when it goes under the popup and + back. like t_SI and t_EI (t_SU and t_EU, where "U" means under?) +- With terminal in popup, allow for popup_hide() to temporarily hide it.? +- Make it possible to scroll horizontally when 'wrap' is off. Does this + require an ascii scrollbar, like with the vertical one? +- Fire some autocommand event after a new popup window was created and + 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. +- Width is not computed correctly when minwidth and maxwidth are &columns + and padding and a scrollbar are used. (#6676) +- 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? +- Match does not have right BG color if line length equals popup width. + (#5658) +- Figure out the size and position better if wrapping inserts indent + +'incsearch' with :s: +- :s/foo using CTRL-G moves to another line, should not happen, or use the + correct line (it uses the last but one line) (Lifepillar, Aug 18, #3345) +- Also support range: :/foo/,/bar/delete +- Also support for user command, e.g. Cfilter +- :%s/foo should take the first match below the cursor line, unless there + isn't one? + Then :%s?foo should take the first match above the cursor line. + +Prompt buffer: +- Add a command line history, using up/down keys. issue #5010 +- delay next prompt until plugin gives OK? +- add prompt_addtext({buf}, {expr}) none add text to a prompt buffer + +Terminal debugger: +- Add a mechanism for configuration. Instead of several global variables use + a dictionary. Use callbacks for some things, e.g. opening a debug window in + a certain position. +- Make prompt-buffer variant work better. +- Add option to not open the program window. It's not used when attaching to + an already running program. (M. Kelly) +- Use the optional token on requests, match the result with it. #10300 +- When only gdb window exists, on "quit" edit another buffer. +- Termdebug does not work when Vim was built with mzscheme: gdb hangs just + after "run". Everything else works, including communication channel. Not + initializing mzscheme avoid the problem, thus it's not some #ifdef. +- Add support for lldb? issue #3565 +- Could we do something similar for debugging Vim scripts? At least see the + script while stepping through it. Simple version would use an extra window. + More complete solution would actually run Vim in a Terminal and control it + with another Vim instance. + +Terminal emulator window: +- Can escape a terminal popup with win_gotoid(), should be an error +- No support for underline color, t_8u. +- When in terminal-Normal mode when the job finishes, the cursor jumps to the + end but the window is not updated. This only happens when typing "a". + :term bash -c "for V in {0..5}; do echo $V; sleep 1; done" +- GUI: cursor color is not updated when going to Terminal-Job mode. #12328 +- GUI: cursor color is not updated when switching between tabs with a key. + #12329 +- GUI: cursor color is not updated when switching between tabs with a mouse + click. #12330 +- When started with ":terminal ++close" and the shell exits but there is a + background process, the window remains open, because the channel still + exists (and output still shows). Perhaps close the window when an explicit + ++close was used? (#5931) +- Using "CTRL-W :confirm quite" and selecting "yes" should work like ":quit!". + (Harm te Hennepe, #6129) +- When the job in the terminal doesn't use mouse events, let the scroll wheel + scroll the scrollback, like a terminal does at the shell prompt. #2490 + A bit like using CTRL-W N first. + Jump back like with "a" when any key is typed. + And use modeless selection. #2962 +- Use CTRL-W CTRL-K to enter a digraph? #5371 +- When Vim runs in the terminal and changes the title, the statusline needs to + be redrawn. +- GUI: When using ":set go+=!" a system() call causes the hit-enter prompt. + (#3327) +- Allow for specifying the directory, with ++cwd={dir}. +- When pasting should call vterm_keyboard_start_paste(), e.g. when using + K_MIDDLEMOUSE, calling insert_reg(). +- Users expect parsing the :term argument like a shell does, also support + single quotes. E.g. with: :term grep 'alice says "hello"' (#1999) +- Win32: Redirecting input does not work, half of Test_terminal_redir_file() + is disabled. +- Win32: Redirecting output works but includes escape sequences. +- Win32: Make terminal used for :!cmd in the GUI work better. Allow for + redirection. +- When the job only outputs lines, we could handle resizing the terminal + better: store lines separated by line breaks, instead of screen lines, + then when the window is resized redraw those lines. +- Redrawing is slow with Motif. (Ramel Eshed) +- For the GUI fill termios with default values, perhaps like pangoterm: + http://bazaar.launchpad.net/~leonerd/pangoterm/trunk/view/head:/main.c#L134 +- 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) + +Autoconf: must use autoconf 2.69, later version generates lots of warnings +- try using autoconf 2.71 and fix all "obsolete" warnings #11322 + +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 + +Selected index returned by complete_info() does not match the index in the +list of items. #12230 + +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. + +PR to add custom and customlist completion types. #12228 + +Can deref_func_name() and deref_function_name() be merged? + +Using :global with a pattern containing \zs doesn't use the line where \zs +matches but the start of the pattern. #3695 If there is a useful application +for this, it can be made to work by changing the call to ml_setmarked(): + ml_setmarked(lnum + regmatch.startpos[0].lnum); + +After patch 8.2.4915 w_botline is computed much more often. Can this be +reduced? + +When 'delcombine' is set a put after "x" includes the base character and all +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 + +When :argument has a non-number argument, use it like :buffer to find the +argument by name. #12272 + +Fold unexpectedly closed when inserting fold marker with CTRL-V (Issue #12320) + +Can we make 'noendofline' and 'endoffile' visible? Should show by default, +since it's an unusual situation. +- Show 'noendofline' when it would be used for writing ('fileformat' "dos") + with an upside down exclamation mark? NonText highlighting. +- Show 'endoffile' when it would be used for writing ('fileformat' "dos") with + "CTRL-Z", NonText highlighting. +- Add 'fillchars' items to change this, default behavior like: + 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 #12032: Support Python 3 stable ABI. + +PR #11860: Add more info to 'colorcolumn': display a character and highlight +for each separate entry. Disadvantage: option value gets very complicated +with multiple entries, e.g. every 8 columns. + +Stray characters in the shell #11719, caused by requesting a response for: +- XT key sequences +- Whether modifyOtherKeys is active +- 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. +- typed keys - Normal mode command - like what is recorded in a register and + displayed by 'showcmd'. +- register used - #12063 +- 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? + +Better terminal emulator support: + > Somehow request the terminfo entry from the terminal itself. The $TERM + value then is only relevant for whether this feature is supported or not. + Replaces the xterm mechanism to request each entry separately. #6609 + Multiplexers (screen, tmux) can request it to the underlying terminal, and + pass it on with modifications. + How to get all the text quickly (also over ssh)? Can we use a side channel? + > When xterm supports sending an Escape sequence for the Esc key, should + have a way to request this state. That could be an XTGETTCAP entry, e.g. + "k!". Add "esc_sends_sequence" flag. + If we know this state, then do not pretend going out of Insert mode in + vgetorpeek(), where kitty_protocol_state is checked. + > If a response ends up in a shell command, one way to avoid this is by + sending t_RV last and delay starting a shell command until the response + has been seen. + > Can we use the req_more_codes_from_term() mechanism with more terminals? + Should we repeat it after executing a shell command? + Can also add this to the 'keyprotocol' option: "mok2+tcap" + > In the table of terminal names pointing to the list of termcap entries, + 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? + +Instead of prefixing "INTERNAL" to internal messages, add a message in iemsg() +and siemsg() and translate it. Messages only given to them don't need +translation. + +When scheme can't be found by configure there is no clear "not found" message: + configure:5769: checking MzScheme install prefix + configure:5781: result: + +Can "CSI nr X" be used instead of outputting spaces? Is it faster? #8002 + +Typed keys invisible after calling interrupt() from a timer. #10631 + +With a window height of 6 and 'scrolloff' set to 3, using "j" does not scroll +evenly. (#10545) Need to handle this in scroll_cursor_bot(). + +Idea: when typing ":e /some/dir/" and "dir" does not exist, highlight in red. + +":set shellpipe&" and ":set shellredir&" should use the logic from +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. +IDEA: when drawing the text, store the text byte index in ScreenLinesIdx[]. +When converting screen column to text position use this. +The line number can be obtained from win->w_lines[]. + +Version of getchar() that does not move the cursor - #10603 Use a separate +argument for the new flag. + +test_arglist func Test_all_not_allowed_from_cmdwin() hangs on MS-Windows. + +Can we add highlighting to ":echowindow"? + +Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is +spread out. Make a section with copy/paste examples of script and pointers to +more information. + +Problem that a previous silent ":throw" causes a following try/catch not to +work. (ZyX, 2013 Sep 28) With examples: (Malcolm Rowe, 2015 Dec 24) +Also see #8487 for an example. + +Request to use "." for the cursor column in search pattern \%<.c and \%<.v. +(#8179) + +":filter set termcap" only filters terminal codes, not keys. (#9297) + +Add an option to restrict 'incsearch' to not scroll the view. (Tavis Ormandy) + +Remove SPACE_IN_FILENAME ? It is only used for completion. + +When 'term' starts with "foot" then default t_TI and t_TE to the values used +for the builtin xterm termcap. + +Adding "10" to 'spellsuggest' causes spell suggestions to become very slow. +(#4087) Did patch 8.2.2379 help? +Also, z= in German on a long word can take a very long time, but CTRL-C to +interrupt does not work. Where to add ui_breakcheck()? +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. + (2006 Jul 26, Gary Johnson) +- Completion of ":cd" doesn't use 'cdpath'. #374. + +Make "g>" and "g<" in Visual mode move the text right or left. +Also for a block selection. #8558 + +When using dictionary insert completion with 'ignorecase', the leading capital +in a word should be preserved. + +Add optional argument to virtcol() that specifies "start", "cursor" or "end" +to tell which value from getvvcol() should be used. (#7964) +Value returned by virtcol() changes depending on how lines wrap. This is +inconsistent with the documentation. + +When 'wildignore' has an entry ending in "/*" this means nothing matching the +path before it will be added. When encountering a directory check this and if +there is a match do not scan the directory (possibly speeds up :find a lot). +#12482 + +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 + +Patch for blockwise paste reporting changes: #6660. Asked for a PR. + +Missing filetype test for bashrc, PKGBUILD, etc. + +Add an option to not fetch terminal codes in xterm, to avoid flicker when t_Co +changes. + +Add ??= operator, "a ??= b" works like "a = a ?? b". #10343 + +When ":redir" is used while already active, the previous one is ended. But +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. +This is useful e.g. when a popup was created that disables mappings, we need +to return from vgetc() to make this happen. #7011 + +Expanding <mods> should put the tab number from cmdmod.tab before "tab". +Any way to convert "$" back by using a special value? (#6901) + +Can we detect true color support? https://gist.github.com/XVilka/8346728 +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. + +Changing a capturing group to non-capturing changes the result: #7607 + :echo matchstr('aaa bbb', '\(.\{-1,}\>\)\|.*') + aaa + :echo matchstr('aaa bbb', '\%(.\{-1,}\>\)\|.*') + aaa bbb +Should also work without any group: + :echo matchstr('aaa bbb', '.\{-1,}\>\|.*') + aaa bbb (should be aaa) + +Should add a match/str/list/pos method that also returns the test and position +of submatches. #8355 + +Check out PR #543 (Roland Puntaier). +Patch for multibyte characters in langmap and applying a mapping on them. +(Christian Brabandt, 2015 Jun 12, update July 25) +Is this the right solution? Need to cleanup langmap behavior: +- in vgetorpeek() apply langmap to the typeahead buffer and put the result in + a copy-buffer, only when langmap is appropriate for the current mode. Then + check for mapping and let gotchars() work on the copy-buffer. +- Remove LANGMAP_ADJUST() in other parts of the code. Make sure the mode is + covered by the above change. +So that replaying the register doesn't use keymap/langmap and still does the +same thing. +Also see #737: langmap not applied to replaying recording. +Perhaps also related: #5147 + +Matchparen doesn't remove highlight after undo. (#7054) +Is OK when syntax HL is active. + +Currently Del can be used to delete the last character of a typed count. +Can it also be used to delete an incomplete Normal mode command? (#7096) +After an operator: should work. After "a" or "i" for text objects: should +work. + +Using "au!" after "filetype on" is a bit slow. Can the matching of +autocommands be made faster? (#7056) + +Using a search pattern containing "\%V" and 'hlsearch' set keeps old matches +when the Visual area changes. #11694. Do a redraw when starting a Visual +selection? + +Append in Visual block mode inserts the wrong character. +Test_visual_block_mode() already has the proper check, which is commented out. +(#8288) + +Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr" + replace this: + let left = GetLeftFunc() + let right = GetRightFunc() + 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? + +":pedit" ignores the local working directory when 'pvp' is set (#7267) + +Lua: updating wrong buffer when using newly created, unloaded buffer. +(#6539) + +File marks merging has duplicates since 7.4.1925. (Ingo Karkat, #5733) + +A syntax plugin cannot use autocommands, it could be sourced from setting +'syntax' in a modeline. Add a function that indicates whether "secure" +and/or "sandbox" are set. + +Problem with auto-formatting - inserting space and putting cursor before added +character. (#6154) +Auto-formatting comments joins a following non-comment line when the comment +ends in a space. (Adam Levy, 18 Oct 2022) + +When 'lazyredraw' is set sometimes the title is not updated. +(Jason Franklin, 2020 Feb 3) Looks like a race condition. + +With bash ":make" does not set v:shell_error. Possible solution: set +'shellpipe' to "2>&1| tee %s; exit ${PIPESTATUS[0]}" #5994 + +Using mode() when "/pat" is used in Visual mode returns "v" instead of "c", +which is not useful. Return "c/v" instead. And "c/o" when using "d/pat". +#6127 + +Add a cterm attribute for "dimmed" or "faint" text. (#8269) + +When 'fileignorecase' is set ":e testfile.c" works to edit TestFile.c, but +":find testfile.c" does not ignore case. +Might be related to #6088. + +Error for reverse range when using :vimgrep in file "[id-01] file.txt". +(#6919) + +When changing the crypt key the buffer should be considered modified. +Like when changing 'fileformat'. Save the old key in save_file_ff(). +(Ninu-Ciprian Marginean) + +Strange sequence of BufWipeout and BufNew events while doing omni-complete. +(Paul Jolly, #5656) +Get BufDelete without preceding BufNew. (Paul Jolly, #5694) + Later more requests for what to track. + Should we add new events that don't allow any buffer manipulation? + Really only for dealing with appearing and disappearing buffers, load and + unload. +BufWinenter event not fired when saving unnamed buffer. (Paul Jolly, #5655) +Another spurious BufDelete. (Dani Dickstein, #5701) + +Wrong error when using local arglist. (Harm te Hennepe, #6133) + +Test loose_clipboard() by selecting text before suspending. + +:unmap <c-n> gives error but does remove the mapping. (Antony Scriven, 2019 +Dec 19) + +Patch to add an option to enable/disable VTP. (Nobuhiro Takasaki, #5344) +Should have three values: empty, "off", "on". Name it 'winterm'? + +Patch to fix session file when using multiple tab pages. (Jason Franklin, 2019 +May 20) +Also put :argadd commands at the start for all buffers, so that their order +remains equal? Then %argdel to clean it up. Do try this with 'hidden' set. +Also #5326: netrw buffers are not restored. + +When 'backupdir' has a path ending in double slash (meaning: use full path of +the file) combined with 'patchmode' the file name is wrong. (#5791) + +Completion mixes results from the current buffer with tags and other files. +Happens when typing CTRL-N while still searching for results. E.g., type "b_" +in terminal.c and then CTRL-N twice. +Should do current file first and not split it up when more results are found. +(Also #1890) + +Help for ":argadd fname" says that if "fname" is already in the argument list +that entry is used. But instead it's always added. (#6210) +Add flag AL_FIND_ADD, if there is one argument find it in the list. + +Statusline highlighting error, off by one. (#5599) + +":find" with 'path' set to "data*" does not find files, while completion does +find them. (Max Kukartsev, #6218) + +Enable 'termbidi' if $VTE_VERSION >= 5703 ? + +Python 3.8 doesn't work. (Antonios Hadjigeorgalis, #5509) + +"--cleanFOO" does not result in an error. (#5537) + +Output from assert_equalfile() doesn't give a hint about what's different. +Assuming the files are text, print the line with the difference. + +Result of synID() sometimes wrong in help files. (#5252) + +When a help file is opened that doesn't have "ft=help" in the modeline then +the FileType is first set to "text" before it is set to "help". (#8099) + +Problem showing a line if the number column width changes when using "o". +(Mateusz Morusiewicz, #4245) + +When using :packadd for a replacement language plugin, it is loaded after the +default one. #4698 + +When using :packadd files under "later" are not used, which is inconsistent +with packages under "start". (xtal8, #1994) + +Patch to add new motion ]( and ]{. (Yasuhiro Matsumoto, #5320) +Better: use the "z" prefix. or ]t) and [t(. + +Visual highlight not removed when 'display' is "lastline" and line doesn't +fit. (Kevin Lawler, #4457) + +Current position in the changelist should be local to the buffer. (#2173) + +Does not build with MinGW out of the box: +- _stat64 is not defined, need to use "struct stat" in vim.h +- WINVER conflict, should use 0x0600 by default? +- INT_MAX not defined: need to include <limits.h> in vim.h + +Display messed up with matchparen, wrapping and scrolling. (#5638) +Screen update bug related to matchparen. (Chris Heath, 2017 Mar 4, #1532) + +When getting a focus event halfway a mapping this aborts the mapping. E.g. +when "qq" is mapped and after the first "q" the mouse is moved outside of the +gvim window (with focus follows mouse), then the K_FOCUSLOST key is put in the +input buffer. (#5302) + +Check_external_diff() is used too often. (Daniel Hahler, #4800) + +Win32: after "[I" showing matches, scroll wheel messes up screen. (Tsakiridis, +2007 Feb 18) +Patch by Alex Dobrynin, 2007 Jun 3. Also fixes other scroll wheel problems. + +Add a WindowScrolled event. Trigger around the same time as CursorMoved. +Can be used to update highlighting. #3127 #5181 + +Incorrect formatting with autoindent. (Sebastian Gniazdowski, #4909) + +Patch to add the :bvimgrep command. (Christian Brabandt, 2014 Nov 12) +Updated 2016 Jun 10, #858 Update 2017 Mar 28: use <buffer>. +Better use ":bufgrep" ? + +Improve fallback for menu translations, to avoid having to create lots of +files that source the actual file. E.g. menu_da_de -> menu_da +Include part of #3242? + +Patch for different behavior of text objects with quotes: #11976 +Is this actually better? + +Patch to have text objects defined by arbitrary single characters. (Daniel +Thau, 2013 Nov 20, 2014 Jan 29, 2014 Jan 31) +Added tests (James McCoy, 2016 Aug 3, #958). Still needs more work. + +Would be nice to set tab-local values for 'diffexpr' and 'diffopt'. Use +t:diffexpr_option t:diffopt_option? (#4782) +Also make 'scrollopt' tab-local, remove "hor" only for the current tab page. + +Internal diff doesn't handle binary file like external diff does. (Mike +Williams, 2018 Oct 30) + +'[ mark in wrong column after put. (#4776) + +Problem with :tlmenu: Detach item added with all modes? Issue #3563. + +Add an argument to expandcmd() to expand like ":next" does. + +When both "a" and "l" is in 'formatoptions' then auto-formatting also happens +in a long line. #5189 + +The quoting of the [command] argument of :terminal is not clearly documented. +Give a few examples. (#4288) + +Opening a file with --remote-tab-silent that matches 'wildignore' does not +work, results in "E479: No match". (#4610) + +7 Add an option to add one pixel column to the character width? Lucida + Console italic is wider than the normal font ("d" overlaps with next char). + Opposite of 'linespace': 'columnspace'. +Patch for this (Tristan Konolige, #1011, only added the option, no implem.) + +Bug: script written with "-W scriptout" contains Key codes, while the script +read with "-s scriptin" expects escape codes. Probably "scriptout" needs to +be adjusted. (Daniel Steinberg, 2019 Feb 24, #4041) + +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) + +Some composing characters actually add a cell width to the character they are +on top off, making the whole thing two characters wide. (#4526) + +Should we include some part of pull request #4505, not increment changedtick +in some cases? E.g. for ":write" when the changed flag was already off, the +buffer didn't change at all. + +When using a timer callback vgetc_busy is reset, allowing for using input(). +But in a channel callback this does not happen. We need to do something +similar to check_due_timer(). Also see #3809. + +C syntax: {} inside () causes following {} to be highlighted as error. +(Michalis Giannakidis, 2006 Jun 1) + +Check: __attribute__((format(printf, on semsg() and siemsg(). Where was this +added? + +Add test for urxvt mouse codes. Also test that mouse coordinates can be +negative. (see #4326) + +'cmdheight' has a tab-local value, but it cannot be obtained with +`:echo gettabwinvar(2, 1, '&cmdheight')` returns the value for the _current_ +tab page. (Ingo Karkat, #4324) +:call settabwinvar(1, 1, '&cmdheight', 2) also doesn't work well. + +When opening a file, allow for specifying the initial column position: + vim +12:5 file.txt line 12 column 5 + :edit +12:5 file.txt +Should probably use the column as the character index. + +This modeline throws unexpected errors: (#4165) + vim: syn=nosyntax + +Make balloon_show() work outside of 'balloonexpr'? Users expect it to work: +#2948. (related to #1512?) +Also see #2352, want better control over balloon, perhaps set the position. +Should also be possible to add highlighting, like in the status line? +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 + +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. + +When 'confirm' is set a "silent q" doesn't show the prompt. It should in this +case. (Nate Peterson, 2019 Jan 31, #3892) +For "silent! q" it should not prompt and just fail. + +Add <aevent>, which expands to the currently triggered autocommand event name. +(Daniel Hahler, #4232) Or add it to v:event (easier to use but slightly more +expensive). + +Some xterm responses are not properly handled: (Markus G枚mmel, 2019 Apr 1) + DCS 0 $ r Pt ST should be ignored. + DCS 0 + r/Pt/ ST already ignored? + +Using CTRL-L to add a character to the search string that contains \v, +punctuation is repeated. (Smylers, 2018 Nov 17, #3621) + +Using single wide base character with double wide composing character gives +drawing errors. Fill up the base character? (Dominique, #4328) + +When 'sidescrolloff' is set, using "zl" to go to the end of the line, suddenly +scrolls back. Should allow for this scrolling, like 'scrolloff' does when +using CTRL-E. (Yee Cheng Chin, #3721) + +Add function to make use of internal diff, working on two lists and returning +unified diff (list of lines). + +When splitting a window with few text lines, the relative cursor position is +kept, which means part of the text isn't displayed. Better show all the text +when possible. (Dylan Lloyd, #3973) + +Make ":interactive !cmd" stop termcap mode, also when used in an autocommand. +(#3692) + +Add something like 'fillchars' local to window, but allow for specifying a +highlight name. Esp. for the statusline. +And "extends" and "precedes" are also useful without 'list' set. Also in +'fillchars' or another option? + +Sourceforge Vim pages still have content, make them empty, keep redirect. +Check for PHP errors. (Wayne Davison, 2018 Oct 26) + +Problem with Visual yank when 'linebreak' and 'showbreak' are set. +Patch with tests, but it's not clear how it is supposed to work. (tommm, 2018 +Nov 17) Asked about this, Dec 22. Christian will have a look. + +Update for xim-input-style help (Tony Mechelynck, 2019 Jan 10). +Feedback from someone who uses this? + +Only output t_Cs when t_Ce is also set. do not use Cs and Ce termcap entries. (Daniel Hahler, 2018 Sep 25) +Add t_cS and t_cR for cursor color select and reset. Use Cs and Cr terminfo +values. + +Further xdiff changes: +- More options, e.g. different kind of whitespace diff. +- when editing text, update the surrounding diff blocks. +- omit diff.exe from distribution +- Can we make this show differences within a line? +- add option to use external diff above a certain size. + +Difference between two regexp engines: #3373 + +When the last line wraps, selecting with the mouse below that line only +includes the first screen line. (2018 Aug 23, #3368) + +Refactored HTML indent file. (Michael Lee, #1821) +Asked to write a test. + +Merge checking for 'cursorline' and 'concealcursor', see neovim #9492. + +Add a windowID argument to placing a sign, so that it only shows up in one +window for the buffer. + +Compiler warning (geeknik, 2017 Oct 26): +- undefined left shift in eval_string(), before hex2nr() (#2250) + Use unsigned for "nr". + +Add Native language protocol server (LSP) support. (Yegappan Lakshmanan, 2018 +Oct 28) + +Patch to be able to use hex numbers with :digraph. (Lcd, 2015 Sep 6) +Update Sep 7. Update by Christian Brabandt, 2015 Sep 8, 2016 Feb 1. +Patch to be able to disable default digraphs (incomplete) (Eric Pruitt, 2018 +Nov 22). + +Patch to list user digraphs. (Christian Brabandt, 2012 Apr 14) + +Setting 'columns' in a BufEnter autocommand causes a second tab width to +behave strangely, as if there is a gap and a vertical window separator. +(Michael Soyka, 2018 Sep 23, #3477) + +Add an option similar to 'lazyredraw' to skip redrawing while executing a +script or function. + +Using a menu item while the "more" prompt is displayed doesn't work well. +E.g. after using help->version. Have a key that ends the "more" prompt and +does nothing otherwise? + +MS-Windows: write may fail if another program is reading the file. +If 'readonly' is not set but the file appears to be readonly later, try again +(wait a little while). +CreateFile() returns ERROR_SHARING_VIOLATION (Linwei, 2018 May 5) + +Using --remote to open a file in which a # appears does not work on +MS-Windows. Perhaps in \# the \ is seen as a path separator. (Axel Bender, +2017 Feb 9) Can we expand wildcards first and send the path literally to the +receiving Vim? Or make an exception for #, it's not useful remotely. + +Column number is wrong when using 'linebreak' and 'wrap'. (Keith Smiley, 2018 +Jan 15, #2555) + +Add Makefiles to the runtime/spell directory tree, since nobody uses Aap. +Will have to explain the manual steps (downloading the .aff and .dic files, +applying the diff, etc. + +User dictionary ~/.vim/spell/lang.utf-8.add not used for spell checking until a +word is re-added to it. (Matej Cepl, 2018 Feb 6) + +Fold at end of the buffer behaves inconsistently. (James McCoy, 2017 Oct 9) + +Implement option_save() and option_restore(): +option_restore({list}) *option_restore()* + Restore options previously saved by option_save(). + When buffer-local options have been saved, this function must + be called when the same buffer is the current buffer. + When window-local options have been saved, this function must + be called when the same window is the current window. + When in the wrong buffer and/or window an error is given and + the local options won't be restored. + +option_save({list}) *option_save()* + Saves the options named in {list}. The returned value can be + passed to option_restore(). Example: > + let s:saved_options = option_save([ + \ 'ignorecase', + \ 'iskeyword', + \ ]) + au <buffer> BufLeave * + \ call option_restore(s:saved_options) +< The advantage over using `:let` is that global and local + values are handled and the script ID is restored, so that + `:verbose set` will show where the option was originally set, + not where it was restored. + Alternatively: save and restore ALL options. Implementation needs to use + copy-on-write. Return an ID from option_save(), when + option_restore(ID) is called give an error if another option_save() + was called in the meantime, they must be balanced. + +"gvim --remote" from a directory with non-word characters changes the current +directory (Paulo Marcel Coelho Arabic, 2017 Oct 30, #2266) +Also see #1689. + +No profile information for function that executes ":quit". (Daniel Hahler, +2017 Dec 26, #2501) + +A function on a dictionary is not profiled. (ZyX, 2010 Dec 25) + +Add script number to profile? (#3330 breaks tests). + +A function defined locally and lambda's are not easily recognized. +Mention where they were defined somewhere. + +ml_get errors with buggy script. (Dominique, 2017 Apr 30) + +Error in emsg with buggy script. (Dominique, 2017 Apr 30) + +Join truncates xml comment. (Dmitrii Tcyganok, 2017 Dec 24, #2494) +Requires 'formatoptions' to include "j". (Gary Johnson, 2017 Dec 24) + +Patch to support hunspell. (Matej Cepl, Jan 2018, #2500) Based on older patch +in #846) +Doesn't work on Windows yet. Not ready to included, hard coded paths. + +When a timer is running and typing CTRL-R on the command line, it is not +redrawn properly. (xtal8, 2017 Oct 23, #2241) + +In an optional package the "after" directory is not scanned? +(Renato Fabbri, 2018 Feb 22) + +Patch for Neovim concerning restoring when closing help window. (glacambre +neovim #7431) + +Patch for improving detecting Ruby on Mac in configure. (Ilya Mikhaltsou, 2017 +Nov 21) + +When t_Co is changed from termresponse, the OptionSet autocommand event isn't +triggered. Use the code from the end of set_num_option() in +set_color_count(). + +Add another autocommand like TermResponse that is fired for the other terminal +responses, such as bg and fg. Use "bg", "fg", "blink", etc. for the name. + +When using command line window, CmdlineLeave is triggered without +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 +20) + +MS-Windows: buffer completion doesn't work when using backslash (or slash) +for a path separator. (xtal8, #2201) + +Would be nice for Insert mode completion to highlight the text that was added +(and may change when picking another completion). + +Test more runtime files. + +Window not closed when deleting buffer. (Harm te Hennepe, 2017 Aug 27, #2029) + +Add options_default() / options_restore() to set several options to Vim +defaults for a plugin. Comments from Zyx, 2017 May 10. +Perhaps use a vimcontext / endvimcontext command block. + +After using :noautocmd CursorMoved may still trigger. (Andy Stewart, 2017 Sep +13, #2084). Set old position after the command. + +When bracketed paste is used, pasting at the ":append" prompt does not get the +line breaks. (Ken Takata, 2017 Aug 22) + +Cannot copy modeless selection when cursor is inside it. (lkintact, #2300) + +Test_writefile_fails_conversion failure on Solaris because if different iconv +behavior. Skip when "uname" returns "SunOS"? (Pavel Heimlich, #1872) + +'tagrelative' is broken in specific situation. (xaizek, 2017 Oct 19, #2221) + +The ++ options for the :edit command are also useful on the Vim command line. + +Overlong utf-8 sequence is displayed wrong. (Harm te Hennepe, 2017 Sep 14, +#2089) Patch with possible solution by Bj枚rn Linse. + +X11: Putting more than about 262040 characters of text on the clipboard and +pasting it in another Vim doesn't work. (Dominique Pelle, 2008 Aug 21-23) +clip_x11_request_selection_cb() is called with zero value and length. +Also: Get an error message from free() in the process that owns the selection. +Seems to happen when the selection is requested the second time, but before +clip_x11_convert_selection_cb() is invoked, thus in X library code. +Kazunobu Kuriyama is working on a proper fix. (2017 Jul 25) + +Problem with three-piece comment. (Michael Lee, 2017 May 11, #1696) + +Creating a partial with an autoload function is confused about the "self" +attribute of the function. For an unknown function assume "self" and make +that optional? (Bjorn Linse, 2017 Aug 5) + +Cindent: returning a structure has more indent for the second item. +(Sam Pagenkopf, 2017 Sep 14, #2090) + +Patch from Christian Brabandt to preserve upper case marks when wiping out a +buffer. (2013 Dec 9) +Also fixes #2166? + +Profile of a dict function is lost when the dict is deleted. Would it be +possible to collect this? (Daniel Hahler, #2350) + +When checking if a bufref is valid, also check the buffer number, to catch the +case of :bwipe followed by :new. + +Patch to skip writing a temp file for diffing if the buffer is equal to the +existing file. (Akria Sheng, 2017 Jul 22) +Could also skip writing lines that are the same. + +MS-Windows: Opening same file in a second gvim hangs. (Sven Bruggemann, 2017 +Jul 4) + +Setting 'clipboard' to "unnamed" makes a global command very slow (Daniel +Drucker, 2017 May 8). +This was supposed to be fixed, did it break again somehow? +Christian cannot reproduce it. + +Using composing char in mapping does not work properly. maparg() shows the +wrong thing. (Nikolai Pavlov, 2017 Jul 8, #1827) +Or is this not an actual problem? + +Better TeX indent file. (Christian Brabandt, 2017 May 3) + +Use gvimext.dll from the nightly build? (Issue #249) + +'synmaxcol' works with bytes instead of screen cells. (Llandon, 2017 May 31, +#1736) + +Problem with using :cd when remotely editing a file. (Gerd Wachsmuth, 2017 May +8, #1690) + +Memory leak in test97? The string is actually freed. Weird. + +assert_fails() can only check for the first error. Make it possible to have +it catch multiple errors and check all of them. + +Add a toolbar in the terminal. Can be global, above all windows, or specific +for one window. + +Make maparg() also return the raw rhs, so that it doesn't depend on 'cpo'. +(Brett Stahlman, 2017 May 23) +Even better: add a way to disable a mapping temporarily and re-enable it +later. This is for a sub-mode that is active for a short while (one buffer). +Still need maplist() to find the mappings. What can we use to identify a +mapping? Something unique would be better than the LHS. +Perhaps simpler: actually delete the mappings. Use maplist() to list matching +mappings (with a lhs prefix, like maparg()), mapdelete() to delete, +maprestore() to restore (using the output of maplist()). + +Add an argument to :mkvimrc (or add another command) to skip mappings from +plugins (source is a Vim script). No need to put these in a .vimrc, they will +be defined when the plugin is loaded. + +Use tb_set(winid, [{'text': 'stop', 'cb': callback, 'hi': 'Green'}]) + tb_highlight(winid, 'ToolBar') + tb_get(winid) + +json_encode(): should convert to utf-8. (Nikolai Pavlov, 2016 Jan 23) +What if there is an invalid character? + +Json string with trailing \u should be an error. (Lcd) + +import can't be used in define option when include matches too. +(Romain Lafourcade, 2017 Jun 18, #1519) + +Wrong diff highlighting with three files. (2016 Oct 20, #1186) +Also get E749 on exit. +Another example in #1309 + +Suggestion to improve pt-br spell checking. (Marcelo D Montu, 2016 Dec 15, +#1330) + +Error in test_startup_utf8 on Solaris. (Danek Duvall, 2016 Aug 17) + +Rule to use "^" for statusline does not work if a space is defined with +highlighting for both stl and stlnc. Patch by Ken Hamada (itchyny, 2016 Dec 11) + +Using CTRL-G_U in InsertCharPre causes trouble for redo. (Israel Chauca +Fuentes, 2017 Feb 12, #1470) + +Add a "keytrans()" function, which turns the internal byte representation of a +key into a form that can be used for :map. E.g. + let xx = "\<C-Home>" + echo keytrans(xx) + <C-Home> + +Check for errors E704 and E705 only does VAR_FUNC, should also do VAR_PARTIAL. +(Nikolai Pavlov, 2017 Mar 13, #1557) +Make a function to check for function-like type? + +Implement named arguments for functions with optional arguments: + func Foo(start, count = 1, all = 1) + call Foo(12, all = 0) + +Add a command to take a range of lines, filter them and put the output +somewhere else. :{range}copy {dest} !cmd + +The TermResponse event is not triggered when a plugin has set 'eventignore' to +"all". Netrw does this. (Gary Johnson, 2017 Jan 24) +Postpone the event until 'eventignore' is reset. + +Expanding /**/ is slow. Idea by Luc Hermitte, 2017 Apr 14. + +Once .exe with updated installer is available: Add remark to download page +about /S and /D options (Ken Takata, 2016 Apr 13) +Or point to nightly builds: https://github.com/vim/vim-win32-installer/releases + +":sbr" docs state it respects 'switchbuf', but "vsplit" does not cause a +vertical split. (Haldean Brown, 2017 Mar 1) + +Use ADDR_OTHER instead of ADDR_LINES for many more commands. +E.g. all the location list commands use a count. +Add tests for using number larger than number of lines in buffer. + +Might be useful to have isreadonly(), like we have islocked(). +Avoids exceptions, e.g. when using the b: namespace as a dict. + +Patch to make v:shell_error writable. (Christian Brabandt, 2016 Sep 27) +Useful to restore it. Is there another solution? + +Patch for wrong cursor position on wrapped line, involving breakindent. +(Ozaki Kiichi, 2016 Nov 25) + +Patch for 'cursorlinenr' option. (Ozaki Kiichi, 2016 Nov 30) + +Window resizing with 'winfixheight': With a vertical split the height changes +anyway. (Tommy allen, 2017 Feb 21, #1502) + +Invalid behavior with NULL list. (Nikolai Pavlov, #768) +E.g. deepcopy(test_null_list()) + +Patch to make it possible to extend a list with itself. +(Nikolai Pavlov, 2016 Sep 23) + +Patch to add Zstandard compressed file support. (Nick Terrell, 2016 Oct 24) + +On Windows buffer completion sees backslash as escape char instead of path +separator. (Toffanim, 2016 Nov 24, #1274) + +Should :vmap in matchit.vim be :xmap? (Tony Mechelynck) + +Problem with whitespace in errorformat. (Gerd Wachsmuth, 2016 May 15, #807) + +Support sort(l, 'F'), convert strings to float. (#7857) + +sort() is not stable when using numeric/float sort (Nikolay Pavlov, 2016 Sep +4#1038) + +sort() does not use 'smartcase' for the skip pattern, even though 'ignorecase' +is used. (Filipe Brandenburger, #7322) + ++channel: +- Add a in_cb, invoked when the write buffer has become empty. (Matteo Landi) +- Add ch_readlines(): for a channel in NL mode, reads as many lines as are + available. Should be more efficient than looping over ch_read() with + ch_status() to check for more. +- If buffer contents is changed in a callback, set w_redr_status so that it + gets redrawn in redraw_after_callback(). #6120 +- Add a separate timeout for opening a socket. Currently it's fixed at 50 + msec, which is too small for a remote connection. (tverniquet, #2130) +- Writing raw mode to a buffer should still handle NL characters as line + breaks. (Dmitry Zotikov, 2017 Aug 16) +- When out_cb executes :sleep, the close_cb may be invoked. (Daniel Hahler, + 2016 Dec 11, #1320) +- Implement |job-term| ? +- Calling a function when receiving a "call" on a channel, using feedkeys() + does not work. It does work from a timer. (Qiming Zhao, #3852) +- Channel test fails with Motif. Sometimes kills the X11 server. +- When a message in the queue but there is no callback, drop it after a while? + Add timestamp to queued messages and callbacks with ID, remove after a + minute. Option to set the droptime. +- Add an option to drop text of very long lines? Default to 1 Mbyte. +- Add remark about undo sync, is there a way to force it? +- When starting a job, have an option to open the server socket, so we know + the port, and pass it to the command with --socket-fd {nr}. (Olaf Dabrunz, + Feb 9) How to do this on MS-Windows? +- For connection to server, a "keep open" flag would be useful. Retry + connecting in the main loop with zero timeout. +- job_start(): run job in a newly opened terminal (not a terminal window). + With xterm could use -S{pty}. + Although user could use "xterm -e 'cmd arg'". + +Regexp problems: +- NFA engine can be slow for some patterns. Dominique found out that most + time is spent in addstate_here() copying the threads. Instead of copying, + let each thread point to the next one (by offset, the list is reallocated). + (Dominique Pelle, 2019 Feb 18) +- Old engine: using 'incsearch' /\Zabc does not highlight the "c" if it has a + composing character. New engine is OK. (Tony Mechelynck, 2019 May 5) +- When search pattern has the base character both with and without combining + character, search fails. E.g. "喔`福喔掂笟" in "喔佮覆喔`福喔掂笟喔`副喔佮箖喔勦福". (agguser, #2312) +- [:space:] only matches ASCII spaces. Add [:white:] for all space-like + characters, esp. including 0xa0. Use character class zero. +- Since 7.4.704 the old regex engine fails to match [[:print:]] in 0xf6. + (Manuel Ortega, 2016 Apr 24) + Test fails on Mac. Avoid using isalpha(), isalnum(), etc? Depends on + LC_CTYPE +- The old engine does not find a match for "/\%#=1\(\)\{80}", the new engine + matches everywhere. +- Using win_linetabsize() can still be slow. Cache the result, store col and + vcol. Reset them when moving to another line. +- Very slow with a long line and Ruby highlighting. (John Whitley, 2014 Dec 4) +- Bug with pattern: '\vblock (\d+)\.\n.*\d+%(\1)@<!\.$' + (Lech Lorens, 2014 Feb 3) +- Issue 164: freeze on regexp search. +- Ignorecase not handled properly for multibyte characters. (Axel Bender, + 2013 Dec 11) +- Using \@> and \?. (Brett Stahlman, 2013 Dec 21) Remark from Marcin + Szamotulski; Remark from Brett 2014 Jan 6 and 7. +- NFA regexp doesn't handle \%<v correctly. (Ingo Karkat, 2014 May 12) +- Does not work with NFA regexp engine: + \%u, \%x, \%o, \%d followed by a composing character +- Search for \%d0\+ may fail with E363. (Christian Brabandt, 2016 Oct 4) +- \%'[ does not work. '%'] does work. (Masaaki Nakamura, 2016 Apr 4) +- Bug relating to back references. (Ingo Karkat, 2014 Jul 24) +- New RE does not give an error for empty group: "\(\)\{2}" (Dominique Pelle, + 2015 Feb 7) +- Using back reference before the capturing group sometimes works with the old + engine, can we do this with the new engine? E.g. with + "/\%(<\1>\)\@<=.*\%(<\/\(\w\+\)>\)\@=" matching text inside HTML tags. + This problem is probably the same: "\%(^\1.*$\n\)\@<=\(\d\+\).*$". + (guotuofeng, 2015 Jun 22) +- Strange matching with "\(Hello\n\)\@<=A". (Anas Syed, 2015 Feb 12) +- Problem with \v(A)@<=b+\1c. (Issue 334) +- Diff highlighting can be very slow. (Issue 309) +- Using %> for a virtual column has a check based on 'tabsize'. Better would + be to cache the result of win_linetabsize(col), storing both col and vcol, + and use them to decide whether win_linetabsize() needs to be called. Reset + col and vcol when moving to another line. +- this doesn't work: "syntax match ErrorMsg /.\%9l\%>20c\&\%<28c/". Leaving + out the \& works. Seems any column check after \& fails. +- Difference between two engines: ".*\zs\/\@>\/" on text "///" + (Chris Paul, 2016 Nov 13) New engine not greedy enough? + Another one: echom matchstr(" sdfsfsf\n sfdsdfsdf",'[^\n]*') + (2017 May 15, #1252) + +Idea from Sven: record sequence of keys. Useful to show others what they are +doing (look over the shoulder), and also to see what happened. +Probably list of keystrokes, with some annotations for mode changes. +Could store in logfile to be able to analyse it with an external command. +E.g. to see when's the last time a plugin command was used. + +cmap using execute() has side effects. (Killthemule, 2016 Aug 17, #983) + +:map X may print invalid data. (Nikolay Pavlov, 2017 Jul 3, #1816) + +Patch to order results from taglist(). (Duncan McDougall, 2016 Oct 25) + +ml_get errors when reloading file. (Chris Desjardins, 2016 Apr 19) +Also with latest version. + +Completion for input() does not expand environment variables. (chdiza, 2016 +Jul 25, #948) + +Patch to add 'systemencoding', convert between 'encoding' and this for file +names, shell commands and the like. (Kikuchan, 2010 Oct 14) +Assume the system converts between the actual encoding of the filesystem to +the system encoding (usually utf-8). + +MS-Windows: use WS_HIDE instead of SW_SHOWMINNOACTIVE in os_win32.c? +Otherwise task flickers in taskbar. + +Second problem in #966: ins_compl_add_tv() uses get_dict_string() multiple +times, overwrites the one buffer. (Nikolay Pavlov, 2016 Aug 5) + +Patch to improve map documentation. Issue #799. + +We can use '. to go to the last change in the current buffer, but how about +the last change in any buffer? Can we use ', (, is next to .)? + +Ramel Eshed: system() is much slower than job_start(), why? (Aug 26) + +When generating the Unicode tables with runtime/tools/unicode.vim the +emoji_width table has only one entry. + +It's possible to add ",," to 'wildignore', an empty entry. Causes problems. +Reject the value? #710. + +When doing "vi buf.md" a BufNew autocommand for *.md is not triggered. +Because of using the initial buffer? (Dun Peal, 2016 May 12) + +Neovim patch for utfc_ptr2char_len() https://github.com/neovim/neovim/pull/4574 +No test, needs some work to include. + +Patch to improve indenting for C++ constructor with initializer list. +(Hirohito Higashi, 2016 Mar 31) + +Zero-out crypt key information when no longer in use. (Ben Fritz, 2017 May 15) + +Add stronger encryption. Could use libsodium (NaCl). +https://github.com/jedisct1/libsodium/ +Possibly include the needed code so that it can be built everywhere. + +Add a way to restart a timer. It's similar to timer_stop() and timer_start(), +but the reference remains valid. + +Need to try out instructions in INSTALLpc.txt about how to install all +interfaces and how to build Vim with them. +Appveyor build with self-installing executable, includes getting most +interfaces: https://github.com/k-takata/vim/tree/chrisbra-appveyor-build +result: https://ci.appveyor.com/project/k-takata/vim/history + +Problem using ":try" inside ":execute". (ZyX, 2013 Sep 15) + +Patch to make tests pass with EBCDIC. (Owen Leibman, 2016 Apr 10) + +Add ":read :command", to insert the output of an Ex command? +Can already do it with ":$put =execute('command')". + +exists(":tearoff") does not tell you if the command is implemented. (Tony +Mechelynck) Perhaps use exists("::tearoff") to check? + +Use vim.vim syntax highlighting for help file examples, but without ":" in +'iskeyword' for syntax. + +Installation of .desktop files does not work everywhere. +It's now fixed, but the target directory probably isn't right. +Add configure check? +Should use /usr/local/share/applications or /usr/share/applications. +Or use $XDG_DATA_DIRS. +Also need to run update-desktop-database (Kuriyama Kazunobu, 2015 Nov 4) + +Test object i{ and it do not behave the same. #1379 +Do not include the linebreak at the start? + +Feature request: add the "al" text object, to manipulate a screen line. +Especially useful when using 'linebreak' + +Patch to avoid redrawing tabline when the popup menu is visible. +(Christian Brabandt, 2016 Jan 28) + +When the CursorMovedI event triggers, and CTRL-X was typed, a script cannot +restore the mode properly. (Andrew Stewart, 2016 Apr 20) +Do not trigger the event? + +Patch to make the behavior of "w" more straightforward, but not Vi compatible. +With a 'cpo' flag. (Christian Brabandt, 2016 Feb 8) + +Patch to add optionproperties(). (Anton Lindqvist, 2016 Mar 27, update Apr 13) + +Patch to add TagNotFound autocommand. (Anton Lindqvist, 2016 Feb 3) + +Patch to add Error autocommand. (Anton Lindqvist, 2016 Feb 17) +Only remembers one error. + +GVim: when both Tab and CTRL-I are mapped, use CTRL-I not for Tab. + +Unexpected delay when using CTRL-O u. It's not timeoutlen. +(Gary Johnson, 2015 Aug 28) + +Instead of separately uploading patches to the ftp site, we can get them from +github with a URL like this: + https://github.com/vim/vim/compare/v7.4.920%5E...v7.4.920.diff +Diff for version.c contains more context, can't skip a patch. + +Python: ":py raw_input('prompt')" doesn't work. (Manu Hack) + +Comparing nested structures with "==" uses a different comparator than when +comparing individual items. + +Using uninitialized memory. (Dominique Pelle, 2015 Nov 4) + +MS-Windows: When editing a file with a leading space, writing it uses the +wrong name. (Aram, 2014 Nov 7) Vim 7.4. + +Can't recognize the $ProgramFiles(x86) environment variable. Recognize it +specifically? First try with the parens, then without. + +Patch to add :mapgroup, put mappings in a group like augroup. +(Yasuhiro Matsumoto, 2016 Feb 19) + +Can we cache the syntax attributes, so that updates for 'relativenumber' and +'cursorline'/'cursorcolumn' are a lot faster? Thus store the attributes +before combining them. + +C highlighting: modern C allows: /* comment */ #ifdef +and also line continuation after #include. +I can't recommend it though. + +Build with Python on Mac does not always use the right library. +(Kazunobu Kuriyama, 2015 Mar 28) + +To support Thai (and other languages) word boundaries, include the ICU +library: http://userguide.icu-project.org/boundaryanalysis + +Patch to use two highlight groups for relative numbers. (Shaun Brady, 2016 Jan +30) + +MS-Windows: Crash opening very long file name starting with "\\". +(Christian Brock, 2012 Jun 29) + +The OptionSet autocommand event is not always triggered. (Rick Howe, 2015 Sep +24): :diffthis, :diffoff. + +":set all&" still does not handle all side effects. Centralize handling side +effects for when set by the user, on init and when reset to default. + +":tag" does not jump to the right entry of a :tselect. (James Speros, 2015 Oct +9) + +The argument for "-S" is not taken literally, the ":so" command expands +wildcards. Add a ":nowild" command modifier? (ZyX, 2015 March 4) + +Proposal to make options.txt easier to read. (Arnaud Decara, 2015 Aug 5) +Update Aug 14. + +When using --remote-tab on MS-Windows 'encoding' hasn't been initialized yet, +the file name ends up encoded wrong. (Raul Coronado, 2015 Dec 21) + +Example in editing.txt uses $HOME with the expectation that it ends in a +slash. For me it does, but perhaps not for everybody. Add a function that +inserts a slash when needed? pathconcat(dir, path) (Thilo Six, 2015 Aug 12) + +ml_updatechunk() is slow when retrying for another encoding. (John Little, +2014 Sep 11) + +Patch to fix checking global option value when not using it. +(Arnaud Decara, 2015 Jul 23) + +When 'showbreak' is set repeating a Visual operation counts the size of the +'showbreak' text as part of the operation. (Axel Bender, 2015 Jul 20) + +Patch to add grepfile(). (Scott Prager, 2015 May 26) +Work in progress. + +Would be useful to have a treemap() or deepmap() function. Like map() but +when an item is a list or dict would recurse into it. + +Patch for global-local options consistency. (Arnaud Decara, 2015 Jul 22) +Is this right? + +Patch to make getregtype() return the right size for non-linux systems. +(Yasuhiro Matsumoto, 2014 Jul 8) +Breaks test_eval. Inefficient, can we only compute y_width when needed? + +Patch to use different terminal mode settings for system(). (Hayaki Saito) +Does this work for everybody? + +Patch for man.vim. (SungHyun Nam, 2015 May 20) +Doesn't work completely (Dominique Orban) + +Patch to add a "literal" argument to bufnr(). (Olaf Dabrunz, 2015 Aug 4) + +Extended file attributes lost on write (backupcopy=no). Issue 306. +Would require reading attributes from the original file with listxattr() and +getxattr() and adding them to the new file. + +Patch to add :lockjumps. (Carlo Baldassi, 2015 May 25) +OK to not block marks? + +Patch on Issue 72: 'autochdir' causes problems for :vimgrep. + +When two SIGWINCH arrive very quickly, the second one may be lost. +(Josh Triplett, 2015 Sep 17) + +Make comments in the test Makefile silent. (Kartik Agaram, 2014 Sep 24) + +Result of systemlist() does not show whether text ended in line break. +(Bjorn Linse, 2014 Nov 27) + +When in 'comments' "n:x" follows after three-part comment directly it repeats +any one-character from the previous line. (Kartik Agaram, 2014 Sep 19) + +Patch: Let rare word highlighting overrule good word highlighting. +(Jakson A. Aquino, 2010 Jul 30, again 2011 Jul 2) + +Patch to add digits argument to round(). (Yasuhiro Matsumoto, 2015 Apr 26) + +Can assign to s:type when a function s:type has been defined. +Also the other way around: define a function while a variable with that name +was already defined. +(Yasuhiro Matsumoto, 2014 Nov 3) + +Patch for ordered dict. (Ozaki Kiichi, 2015 May 7) + +Patch for building a 32bit Vim with 64bit MingW compiler. +(Michael Soyka, 2014 Oct 15) + +Patch: On MS-Windows shellescape() may have to triple double quotes. +(Ingo Karkat, 2015 Jan 16) + +Patch for glob(), adding slash to normal files. (Ingo Karkat, 2014 Dec 22) + +When entering and leaving the preview window autocommands are triggered, but +these may not work well. Perhaps set a flag to indicate that the preview +window is involved? (John Otter, 2015 Oct 27) + +Using "." to repeat an Ex command puts that command in history. Probably +should not happen. If the command is the result of a mapping it's not put in +history either. (Jacob Niehus, 2014 Nov 2) +Patch from Jacob, Nov 2. + +"hi link" does not respect groups with GUI settings only. (Mark Lodato, 2014 +Jun 8) + +Bug: Autocompleting ":tag/pat" replaces "/pat" with a match but does not +insert a space. (Micha Mos, 2014 Nov 7) + +No error for missing endwhile. (ZyX, 2014 Mar 20) + +Patch to make extend() fail early when it might fail at some point. +(Olaf Dabrunz, 2015 May 2) Makes extend() slower, do we still want it? +Perhaps only the checks that can be done without looping over the dict or +arguments. + +Problem with transparent and matchgroup. Issue #475 + +Idea: For a window in the middle (has window above and below it), use +right-mouse-drag on the status line to move a window up/down without changing +its height? It's like dragging the status bar above it at the same time. + +Patch to add a :domodeline command. (Christian Brabandt, 2014 Oct 21) + +This does not give an error: (Andre Sihera, 2014 Mar 21) + vim -u NONE 1 2 3 -c 'bufdo if 1 | echo 1' +This neither: (ZyX) + vim -u NONE 1 2 3 -c 'bufdo while 1 | echo 1' + +'viewdir' default on MS-Windows is not a good choice, it's a system directory. +Change 'viewdir' to "$HOME/vimfiles/view" and use 'viewdiralt' to also read +from? + +Include a plugin manager with Vim? vim-plug seems to be the best currently: +https://github.com/junegunn/vim-plug. +Also Vundle: https://github.com/gmarik/vundle +Or minpac: https://github.com/k-takata/minpac, since it leverages the builtin +package feature. +Long message about this from ZyX, 2014 Mar 23. And following replies. +Also see http://vim-wiki.mawercer.de/wiki/topic/vim%20plugin%20managment.html +User view: +- Support multiple sources, basically any http:// URL. Or a central place that + will work for everybody (github? redirects from vim.org?). + Be able to look into the files before deciding to install. +- Be able to try out a plugin and remove it again with (almost) no traces. +- Each plugin needs a "manifest" file that has the version, dependencies + (including Vim version and features), conflicts, list of files, etc. + Updater uses that to decide what/how to update. + Dependencies can use a URL for specific versions, or short name for scripts + on vim.org. +- Once a plugin is installed it remembers where it came from, updater checks + there. Can manually update when really needed. +- Must be possible to install for one user. Also system wide? +- Can edit plugin config with Vim. Can temporarily disable a plugin. +- Run the update manually, find latest version and install. +- Be able to download without special tools, must work for 95% of users. +Implementation: +- Avoid the 'runtimepath' getting long. Need some other way to keep each + plugin separate. +- When installing or updating, first figure out what needs to be done. This + may involve recursively fetching manifest files for dependencies. Then show + the user what's going to change and ask for OK. +- Scripts on Vim.org must be able to consist of several files. Is zip format + sufficient? Upload the manifest? Or refer to a site that has the manifest? +- Best is to fetch individual files or use a Vimball. Reduces dependency on + tools that might be missing and allows inspection of the files before + installing. +Out of scope: +- Overview of plugins, ratings, comments, etc. That's another world. +- Development work on plugins (although diff with distributed version would be + useful). + +When typing the first character of a command, e.g. "f", then using a menu, the +menu item doesn't work. Clear typeahead when using a menu? + +Editing an ascii file as ucs-2 or ucs-4 causes display errors. +(ZyX, 2014 Mar 30) + +":Next 1 some-arg" does not complain about trailing argument. Also for +various other commands. (ZyX, 2014 Mar 30) + +Patch to skip sort if no line matches the expression. +(Christian Brabandt, 2014 Jun 25) + +VMS: Select() doesn't work properly, typing ESC may hang Vim. Use sys$qiow +instead. (Samuel Ferencik, 2013 Sep 28) + +Patch for XDG base directory support. (Jean Fran莽ois Bignolles, 2014 Mar 4) +Remark on the docs. Should not be a compile time feature. But then what? +Also see #2034. + +Patch to define macros for hardcoded values. (Elias Diem, 2013 Dec 14) + +Updated spec ftplugin. (Mat臎j Cepl, 2013 Oct 16) + +Patch to handle integer overflow. (Aaron Burrow, 2013 Dec 12) + +7 Windows XP: When using "ClearType" for text smoothing, a column of yellow + pixels remains when typing spaces in front of a "D" ('guifont' set to + "lucida_console:h8"). +Patch by Thomas Tuegel, also for GTK, 2013 Nov 24 + +:help gives example for z?, but it does not work. m? and t? do work. + +Discussion about canonicalization of Hebrew. (Ron Aaron, 2011 April 10) + +Checking runtime scripts: Thilo Six, 2012 Jun 6. + +When evaluating expression in backticks, autoload doesn't work. +(Andy Wokula, 2013 Dec 14) + +Using <nr>ifoobar<esc> can slow down Vim. Patch by Christian Brabandt, 2013 +Dec 13. Only helps a bit, 10000ii<Esc> is still too slow. + +Javascript file where indent gets stuck on: GalaxyMaster, 2012 May 3. + +The BufUnload event is triggered when re-using the empty buffer. +(Pokey Rule, 2013 Jul 22) +Patch by Marcin Szamotulski, 2013 Jul 22. + +Patch to allow more types in remote_expr(). (Lech Lorens, 2014 Jan 5) +Doesn't work for string in list. Other way to pass all types of variables +reliably? + +Patch to add {lhs} to :mapclear: clear all maps starting with {lhs}. +(Christian Brabandt, 2013 Dec 9) + +Exception caused by argument of return is not caught by try/catch. +(David Barnett, 2013 Nov 19) +Bug in try/catch: return with invalid compare throws error that isn't caught. +(ZyX, 2011 Jan 26) +try/catch not working for argument of return. (Matt Wozniski, 2008 Sep 15) +try/catch not working when inside a for loop. (ZyX, 2011 Jan 25) + +Patch to fix that 'cedit' is recognized after :normal. (Christian Brabandt, +2013 Mar 19, later message) + +Patch to view coverage of the tests. (Nazri Ramliy, 2013 Feb 15) + +Patch to add "Q" and "A" responses to interactive :substitute. They are +carried over when using :global. (Christian Brabandt, 2013 Jun 19) + +Bug with 'cursorline' in diff mode. Line being scrolled into view gets +highlighted as the cursor line. (Alessandro Ivaldi, 2013 Jun 4) + +Two highlighting bugs. (ZyX, 2013 Aug 18) + +Patch to support 'u' in interactive substitute. (Christian Brabandt, 2012 Sep +28) With tests: Oct 9. + +Dialog is too big on Linux too. (David Fishburn, 2013 Sep 2) + +- Add regex for 'paragraphs' and 'sections': 'parare' and 'sectre'. Combine + the two into a regex for searching. (Ned Konz) +Patch by Christian Brabandt, 2013 Apr 20, unfinished. + +Bug: findfile("any", "file:///tmp;") does not work. + +Patch to add getsid(). (Tyru, 2011 Oct 2) Do we want this? Update Oct 4. +Or use expand('<sid>')? + +Patch to make confirm() display colors. (Christian Brabandt, 2012 Nov 9) + +Problem with refresh:always in completion. (Tyler Wade, 2013 Mar 17) + +b:undo_ftplugin cannot call a script-local function. (Boris Danilov, 2013 Jan +7) + +Win32: The Python interface only works with one version of Python, selected at +compile time. Can this be made to work with version 2.1 and 2.2 dynamically? + +Python: Be able to define a Python function that can be called directly from +Vim script. Requires converting the arguments and return value, like with +vim.bindeval(). + +Patch for :tabcloseleft, after closing a tab go to left tab. (William Bowers, +2012 Aug 4) + +Patch to improve equivalence classes in regexp patterns. +(Christian Brabandt, 2013 Jan 16, update Jan 17) + +Patch with suggestions for starting.txt. (Tony Mechelynck, 2012 Oct 24) +But use Gnome instead of GTK? + +Should be possible to enable/disable matchparen per window or buffer. +Add a check for b:no_match_paren in Highlight_matching_Pair() (Marcin +Szamotulski, 2012 Nov 8) + +'iminsert' global value set when using ":setlocal iminsert"? (Wu, 2012 Jun 23) + +Patch to append regexp to tag commands to make it possible to select one out +of many matches. (Cody Cutler, 2013 Mar 28) + +The input map for CTRL-O in mswin.vim causes problems after CTRL-X CTRL-O. +Suggestion for another map. (Philip Mat, 2012 Jun 18) +But use "gi" instead of "a". Or use CTRL-\ CTRL-O. + +When there are no command line arguments ":next" and ":argu" give E163, which +is confusing. Should say "the argument list is empty". + +URXVT: +- will get stuck if byte sequence does not contain the expected semicolon. +- Use urxvt mouse support also in xterm. Explanations: + http://www.midnight-commander.org/ticket/2662 + +Patch to add tests for if_xcmdsrv.c., Jul 8, need some more work. (Brian Burns) +New tests Jul 13. Update Jul 17. Discussion Jul 18. + +Patch for input method status. (Hirohito Higashi, 2012 Apr 18) + +Update Vim app icon (for Gnome). (Jakub Steiner, 2013 Dec 6) + +Patch to use .png icons for the toolbar on MS-Windows. (Martin Gieseking, 2013 +Apr 18) + +Patch for has('unnamedplus') docs. (Tony Mechelynck, 2011 Sep 27) +And one for gui_x11.txt. + +":cd" doesn't work when current directory path contains "**". +finddir() has the same problem. (Yukihiro Nakadaira, 2012 Jan 10) +Requires a rewrite of the file_file_in_path code. + +Should use has("browsefilter") in ftplugins. Requires patch 7.3.593. + +Update for vim2html.pl. (Tyru, 2013 Feb 22) + +Patch to sort functions starting with '<' after others. Omit dict functions, +they can't be called. (Yasuhiro Matsumoto, 2011 Oct 11) + +Patch to pass list to or(), and() and xor(). (Yasuhiro Matsumoto, 2012 Feb 8) + +Patch to improve "it" and "at" text object matching. (Christian Brabandt, 2011 +Nov 20) + +Patch to improve GUI find/replace dialog. (Christian Brabandt, 2012 May 26) +Update Jun 2. + +`] moves to character after insert, instead of the last inserted character. +(Yukihiro Nakadaira, 2011 Dec 9) + +Plugin for Modeleasy. (Massimiliano Tripoli, 2011 Nov 29) + +BufWinLeave triggers too late when quitting last window in a tab page. (Lech +Lorens, 2012 Feb 21) + +Patch for 'transparency' option. (Sergiu Dotenco, 2011 Sep 17) +Only for MS-Windows. No documentation. Do we want this? + +Patch to support cursor shape in Cygwin console. (Ben bgold, 2011 Dec 27) + +On MS-Windows a temp dir with a & init causes system() to fail. (Ben Fritz, +2012 Jun 19) + +'cursorline' is displayed too short when there are concealed characters and +'list' is set. (Dennis Preiser) +Patch 7.3.116 was the wrong solution. +Christian Brabandt has another incomplete patch. (2011 Jul 13) + +Win32: Patch to use task dialogs when available. (Sergiu Dotenco, 2011 Sep 17) +New feature, requires testing. Made some remarks. + +Win32: Patch for alpha-blended icons and toolbar height. (Sergiu Dotenco, 2011 +Sep 17) Asked for feedback from others. + +Win32: Cannot cd into a directory that starts with a space. (Andy Wokula, 2012 +Jan 19) + +Need to escape $HOME on Windows for fnameescape()? (ZyX, 2011 Jul 21, +discussion 2013 Jul 4) Can't simply use a backslash, \$HOME has a different +meaning already. Would be possible to use $$HOME where $HOME is to be used. + +"2" in 'formatoptions' not working in comments. (Christian Corneliussen, 2011 +Oct 26) + +Bug in repeating Visual "u". (Lawrence Kesteloot, 2010 Dec 20) + +Windows keys not set properly on Windows 7? (cncyber, 2010 Aug 26) + +When using a Vim server, a # in the path causes an error message. +(Jeff Lanzarotta, 2011 Feb 17) + +When there is a ">" in a line that "gq" wraps to the start of the next line, +then the following line will pick it up as a leader. Should get the leader +from the first line, not a wrapped line. (Matt Ackeret, 2012 Feb 27) + +Using ":break" or something else that stops executing commands inside a +":finally" does not rethrow a previously uncaught exception. (ZyX, 2010 Oct +15) + +Vim using lots of memory when joining lines. (John Little, 2010 Dec 3) + +BT regexp engine: After trying a \@> match and failing, submatches are not +cleared. See test64. + +On 64 bit MS-Windows "long" is only 32 bits, but we sometimes need to store a +64 bits value. Change all number options to use nropt_T and define it to the +right type. + +string() can't parse back "inf" and "nan". Fix documentation or fix code? +(ZyX, 2010 Aug 23) + +When doing "redir => s:foo" in a script and then "redir END" somewhere else +(e.g. in a function) it can't find s:foo. +When a script contains "redir => s:foo" but doesn't end redirection, a +following "redir" command gives an error for not being able to access s:foo. +(ZyX, 2011 Mar 27) + +When setqflist() uses a filename that triggers a BufReadCmd autocommand Vim +doesn't jump to the correct line with :cfirst. (ZyX, 2011 Sep 18) + +Behavior of i" and a" text objects isn't logical. (Ben Fritz, 2013 Nov 19) + +When setting a local option value from the global value, add a script ID that +indicates this, so that ":verbose set" can give a hint. Check with options in +the help file. + +After patch 7.3.097 still get E15. (Yukihiro Nakadaira, 2011 Jan 18) +Also for another example (ZyX, 2011 Jan 24) + +"0g@$" puts '] on last byte of multibyte. (ZyX, 2011 Jan 22) + +Patch for :tabrecently. (Hirokazu Yoshida, 2012 Jan 30) + +Problem with "syn sync grouphere". (Gustavo Niemeyer, 2011 Jan 27) + +Loading autoload script even when usage is inside "if 0". (Christian Brabandt, +2010 Dec 18) + +With a filler line in diff mode, it isn't displayed in the column with line +number, but it is in the sign column. Doesn't look right. (ZyX 2011 Jun 5) +Patch by Christian Brabandt, 2011 Jun 5. Introduces new problems. + +Add jump() function. (Marcin Szamotulski, 2013 Aug 29) +Is this needed? CTRL-O and CTRL-I do the same, just more difficult to use. + +8 Add a command to jump to the next character highlighted with "Error". +Patch by Christian Brabandt, uses ]e [e ]t and [t. 2011 Aug 9. + +Add event for when the text scrolls. A bit like CursorMoved. Also a similar +one for insert mode. Use the event in matchparen to update the highlight if +the match scrolls into view. + +7 Use "++--", "+++--" for different levels instead of "+---" "+----". +Patch by Christian Brabandt, 2011 Jul 27. +Update by Ben Fritz, with fix for TOhtml. (2011 Jul 30) + +9 Add %F to 'errorformat': file name without spaces. Useful on Unix to + avoid matching something up to a time 11:22:33. +Patch by Christian Brabandt, 2011 Jul 27. + +Patch to add up to 99 match groups. (Christian Brabandt, 2010 Dec 22) +Also add named groups: \%{name}(re) and \%{name}g + +In the sandbox it's not allowed to do many things, but it's possible to change +or set variables. Add a way to prevent variables from being changed in the +sandbox? E.g.: ":protect g:restore_settings". + +Win32: tear-off menu does not work when menu language is German. (Markus +Bossler, 2011 Mar 2) Fixed by 7.3.095? + +Wish for NetBeans commands: + - make it possible to have 'defineAnnoType' also handle terminal colors. + +7.3.014 changed how backslash at end of line works, but still get a NUL when +there is one backslash. (Ray Frush, 2010 Nov 18) What does the original ex +do? + +New esperanto spell file can't be processed. (Dominique Pelle, 2011 Jan 30) +- move compflags to separate growarray? +- instead of a regexp use a hashtable. Expand '?', '*', '+'. What would be + the maximum repeat for * and +? + +"L'Italie" noted as a spell error at start of the sentence. (Dominique Pelle, +2011 Feb 27) + +Editing a file with a ^M with 'ff' set to "mac", opening a help file, then the +^M is displayed as ^J sometimes. Getting 'ff' value from wrong window/buffer? + +When Vim is put in the background (SIGTSTP) and then gets a SIGHUP it doesn't +exit. It exists as soon as back in the foreground. (Stephen Liang, 2011 Jan +9) Caused by vim_handle_signal(SIGNAL_BLOCK); in ui.c. + +g` not working correctly when using :edit. It works OK when editing a file on +the command line. (Ingo Karkat, 2011 Jan 25) + +Since patch 7.2.46 Yankring plugin has become very slow, eventually make Vim +crash? (Raiwil, 2010 Nov 17) + +Regexp engine performance: +- Profiling: + ./vim -u NONE -s ~/vim/test/ruby.vim + ./vim -u NONE -s ~/vim/test/loop.vim + ./vim -u NONE -s ~/vim/test/alsa.vim + ./vim -s ~/vim/test/todo.vim + ./vim -s ~/vim/test/xml.vim + Dominique Pelle: xmlSyncDT is particularly slow (Jun 7) +- More test files from the src/pkg/regexp/testdata directory in the Go repo. +- Performance tests: + - Using asciidoc syntax. (Marek Schimara, 2013 Jun 6) + - ~/vim/text/FeiqCfg.xml (file from Netjune) + - ~/vim/text/edl.svg (also XML) + - glts has five tests. (May 25) + - ~/vim/test/slowsearch + - ~/vim/test/rgb.vim + - search for a.*e*exn in the vim executable. Go to last line to use + 'hlsearch'. + - Slow combination of folding and PHP syntax highlighting. Script to + reproduce it. Caused by "syntax sync fromstart" in combination with patch + 7.2.274. (Christian Brabandt, 2010 May 27) Generally, folding with + 'foldmethod' set to "syntax" is slow. Do profiling to find out why. + +Problem producing tags file when hebrew.frx is present. It has a BOM. +Results in E670. (Tony Mechelynck, 2010 May 2) + +'beval' option should be global-local. + +Ruby: ":ruby print $buffer.number" returns zero. + +setpos() does not restore cursor position after :normal. (Tyru, 2010 Aug 11) + +With "tw=55 fo+=a" typing space before ) doesn't work well. (Scott Mcdermott, +2010 Oct 24) + +Messages in message.txt are highlighted as examples. + +When using cp850 the NBSP (0xff) is not drawn correctly. (Brett Stahlman, 2010 +Oct 22) 'isprint' is set to "@,161-255". + +":echo "\x85" =~# '[\u0085]'" returns 1 instead of 0. (ZyX, 2010 Oct 3) + +'cindent' not correct when 'list' is set. (Zdravi Korusef, 2010 Apr 15) + +C-indenting: A matching { in a comment is ignored, but intermediate { are not +checked to be in a comment. Implement FM_SKIPCOMM flag of findmatchlimit(). +Issue 46. + +Using CompilerSet doesn't record where an option was set from. E.g., in the +gcc compiler plugin. (Gary Johnson, 2010 Dec 13) + +":helpgrep" does not put the cursor in the correct column when preceded by +accented character. (Tony Mechelynck, 2010 Apr 15) + +Don't call check_restricted() for histadd(), setbufvar(), settabvar(), +setwinvar(). + +Patch for gVimExt to show an icon. (Dominik Riebeling, 2010 Nov 7) + +When 'lines' is 25 and 'scrolloff' is 12, "j" scrolls zero or two lines +instead of one. (Constantin Pan, 2010 Sep 10) + +Gui menu edit/paste in block mode insert only inserts in one line (Bjorn +Winckler, 2011 May 11) +Requires a map mode for Insert mode started from blockwise Visual mode. + +Problem with cursor in the wrong column. (SungHyun Nam, 2010 Mar 11) +Additional info by Dominique Pelle. (also on 2010 Apr 10) + +CreateFile and CreateFileW are used without sharing, filewritable() fails when +the file was already open (e.g. script is being sourced). Add FILE_SHARE_READ| +FILE_SHARE_WRITE in mch_access()? (Philippe Vaucher, 2010 Nov 2) + +Is ~/bin (literally) in $PATH supposed to work? (Paul, 2010 March 29) +Looks like only bash can do it. (Yakov Lerner) + +Cscope "cs add" stopped working somewhat before 7.2.438. (Gary Johnson, 2010 +Jun 29) Caused by 7.2.433? + +Jumplist doesn't work properly in Insert mode? (Jean Johner, 2010 Mar 20) + +Problem with transparent cmdline. Also: Terminal title is wrong with +non-ASCII character. (Lily White, 2010 Mar 7) + +iconv() doesn't fail on an illegal character, as documented. (Yongwei Wu, 2009 +Nov 15, example Nov 26) Add argument to specify whether iconv() should fail +or replace with a character and continue? + +Add local time at start of --startuptime output. +Requires configure check for localtime(). +Use format year-month-day hr:min:sec. + +Patch to make ":hi link" also take arguments. (Nate Soares, 2012 Dec 4) + +Shell not recognized properly if it ends in "csh -f". (James Vega, 2009 Nov 3) +Find tail? Might have a / in argument. Find space? Might have space in +path. + +Test 51 fails when language set to German. (Marco, 2011 Jan 9) +Dominique can't reproduce it. + +'ambiwidth' should be global-local. + +":function f(x) keepjumps" creates a function where every command is executed +like it has ":keepjumps" before it. + +Coverity: Check if there are new reported defects: +https://scan.coverity.com/projects/241 + +Problem with editing file in binary mode. (Ingo Krabbe, 2009 Oct 8) + +Display error when 'tabline' that includes a file name with double-width +characters. (2010 Aug 14, bootleq) + +Problem with stop directory in findfile(). (Adam Simpkins, 2009 Aug 26) + +Using ']' as the end of a range in a pattern requires double escaping: + /[@-\\]] (Andy Wokula, 2011 Jun 28) + +For running gvim on a USB stick: avoid the OLE registration. Use a command +line argument -noregister. + +When using an expression in 'statusline' leading white space sometimes goes +missing (but not always). (ZyX, 2010 Nov 1) + +When a mapping exists both for insert mode and lang-insert mode, the last one +doesn't work. (Tyru, 2010 May 6) Or is this intended? + +Still a problem with ":make" in the wrong directory. Caused by ":bufdo". +(Ajit Thakkar, 2009 Jul 1) More information Jul 9, Jul 15. +Caused by "doautoall syntaxset BufEnter *" in syntax/nosyntax.vim ? +There also is a BufLeave/BufEnter aucmd to save/restore view. +Does the patch to save/restore globaldir work? + +":bufdo normal gg" while 'hidden' is set leaves buffers without syntax +highlighting. Don't disable Syntax autocommands then? Or add a flag/modifier +to avoid changing 'eventignore'? + +Patch for displaying 0x200c and 0x200d. (Ali Gholami Rudi, 2009 May 6) +Probably needs a bit of work. + +List of encoding aliases. (Takao Fujiwara, 2009 Jul 18) +Are they all OK? Update Jul 22. + +Win32: Improved Makefile for MSVC. (Leonardo Valeri Manera, 2010 Aug 18) + +Win32: Expanding 'path' runs into a maximum size limit. (bgold12, 2009 Nov 15) + +Win32: Patch for using .png files for icons. (Charles Peacech, 2012 Feb 5) + +Putting a Visual block while 'visualedit' is "all" does not leave the cursor +on the first character. (John Beckett, 2010 Aug 7) + +Setting 'tags' to "tagsdir/*" does not find "tagsdir/tags". (Steven K. Wong, +2009 Jul 18) + +Patch to add "focusonly" to 'scrollopt', so that scrollbind also applies in +window that doesn't have focus. (Jonathon Mah, 2009 Jan 12) +Needs more work. + +Problem with <script> mappings (Andy Wokula, 2009 Mar 8) + +When starting Vim with "gvim -f -u non_existent_file > foo.txt" there are a +few control characters in the output. (Dale Wiles, 2009 May 28) + +'cmdwinheight' is only used in last window when 'winheight' is a large value. +(Tony Mechelynck, 2009 Apr 15) + +Status line containing winnr() isn't updated when splitting the window (Clark +J. Wang, 2009 Mar 31) + +When $VIMRUNTIME is set in .vimrc, need to reload lang files. Already done +for GTK, how about others? (Ron Aaron, 2010 Apr 10) + +":tab split fname" doesn't set the alternate file in the original window, +because win_valid() always returns FALSE. Below win_new_tabpage() in +ex_docmd.c. + +Space before comma in function definition not allowed: "function x(a , b)" +Give a more appropriate error message. Add a remark to the docs. + +string_convert() should be able to convert between utf-8 and utf-16le. Used +for GTK clipboard. Avoid requirement for iconv. + +Now that colnr_T is int instead of unsigned, more type casts can be removed. + +Don't load macmap.vim on startup, turn it into a plugin. (Ron Aaron, +2009 Apr 7) Reminder Apr 14. + +Add "no_hlsearch" to winsaveview(). + +Bug: When reloading a buffer changed outside of Vim, BufRead autocommands +are applied to the wrong buffer/window. (Ben Fritz, 2009 Apr 2, May 11) +Ignore window options when not in the right window? +Perhaps we need to use a hidden window for applying autocommands to a buffer +that doesn't have a window. + +When using "ab foo bar" and mapping <Tab> to <Esc>, pressing <Tab> after foo +doesn't trigger the abbreviation like <Esc> would. (Ramana Kumar, 2009 Sep 6) + +getbufvar() to get a window-local option value for a buffer that's not +displayed in a window should return the value that's stored for that buffer. + +":he ctrl_u" can be auto-corrected to ":he ctrl-u". + +Diff mode out of sync. (Gary Johnson, 2010 Aug 4) + +Win32: completion of file name ":e c:\!test" results in ":e c:\\!test", which +does not work. (Nieko Maatjes, 2009 Jan 8, Ingo Karkat, 2009 Jan 22) + +Using ~ works OK on 'a' with composing char, but not on 0x0418 with composing +char 0x0301. (Tony Mechelynck, 2009 Mar 4) + +This does not work yet: "a\(%C\)" (get composing characters into a submatch). + +Inconsistent: starting with $LANG set to es_ES.utf-8 gives Spanish +messages, even though locale is not supported. But ":lang messages +es_ES.utf-8" gives an error and doesn't switch messages. (Dominique Pelle, +2009 Jan 26) + +When $HOME contains special characters, such as a comma, escape them when used +in an option. (Michael Hordijk, 2009 May 5) +Turn "esc" argument of expand_env_esc() into string of chars to be escaped. + +Should make 'ignorecase' global-local, so that it makes sense setting it from +a modeline. + +Add cscope target to Makefile. (Tony Mechelynck, 2009 Jun 18, replies by +Sergey Khorev) + +Completion for ":buf" doesn't work properly on Win32 when 'shellslash' is off. +(Henrik Ohman, 2009, Jan 29) + +shellescape() depends on 'shellslash' for quoting. That doesn't work when +'shellslash' is set but using cmd.exe. (Ben Fritz) +Use a different option or let it depend on whether 'shell' looks like a +unix-like shell? + +Bug: in Ex mode (after "Q") backslash before line break, when yanked into a +register and executed, results in <Nul>: instead of line break. +(Konrad Schwarz, 2010 Apr 16) + +Have a look at patch for utf-8 line breaking. (Yongwei Wu, 2008 Mar 1, Mar 23) +Now at: http://vimgadgets.sourceforge.net/liblinebreak/ + +Greek sigma character should be lower cased depending on the context. Can we +make this work? (Dominique Pelle, 2009 Sep 24) + +When changing 'encoding' convert all the swap file names, so that we can +still delete them. Also convert all buffer file names? + +"gqip" in Insert mode has an off-by-one error, causing it to reflow text. +(Raul Coronado, 2009 Nov 2) + +MS-Windows: editing the first, empty buffer, 'ffs' set to "unix,dos", ":enew" +doesn't set 'ff' to "unix". (Ben Fritz, 2008 Dec 5) Reusing the old buffer +probably causes this. + +'scrollbind' is not respected when deleting lines or undo. (Milan Vancura, +2009 Jan 16) + +Having "Syntax" in 'eventignore' for :bufdo may cause problems, e.g. for +":bufdo e" when buffers are open in windows. ex_listdo(eap) could set the +option only for when jumping to another buffer, not when the command argument +is executed. + +":pedit %" with a BufReadPre autocommand causes the cursor to move to the +first line. (Ingo Karkat, 2008 Jul 1) Ian Kelling is working on this. +Similar problem with ":e". (Marc Montu, 2014 Apr 22) + +Cursor line moves in other window when using CTRL-W J that doesn't change +anything. (Dasn, 2009 Apr 7) + +On Unix "glob('does not exist~')" returns the string. Without the "~" it +doesn't. (John Little, 2008 Nov 9) +Shell expansion returns unexpanded string? +Don't use shell when "~" is not at the start? + +When using ":e ++enc=foo file" and the file is already loaded with +'fileencoding' set to "bar", then do_ecmd() uses that buffer, even though the +fileencoding differs. Reload the buffer in this situation? Need to check for +the buffer to be unmodified. +Unfinished patch by Ian Kelling, 2008 Jul 11. Followup Jul 14, need to have +another look at it. + +c.vim: XXX in a comment is colored yellow, but not when it's after "#if 0". +(Ilya Dogolazky, 2009 Aug 7) + +You can type ":w ++bad=x fname", but the ++bad argument is ignored. Give an +error message? Or is this easy to implement? (Nathan Stratton Treadway, 2008 +Aug 20) This is in ucs2bytes(), search for 0xBF. Using the ++bad argument is +at the other match for 0xBF. + +When adding "-complete=file" to a user command this also changes how the +argument is processed for <f-args>. (Ivan Tishchenko, 2008 Aug 19) + +Win32: associating a type with Vim doesn't take care of space after a +backslash? (Robert Vibrant, 2008 Jun 5) + +When 'rightleft' is set, cursorcolumn isn't highlighted after the end of a +line. It's also wrong in folds. (Dominique Pelle, 2010 Aug 21) + +":help s/~" jumps to *s/\~*, while ":help s/\~" doesn't find anything. (Tim +Chase) Fix by Ian Kelling, 2008 Jul 14. + +When mapping : to ; and ; to :, @; doesn't work like @: and @: doesn't work +either. Matt Wozniski: nv_at() calls do_execreg() which uses +put_in_typebuf(). Char mapped twice? + +Despite adding save_subexpr() this still doesn't work properly: +Regexp: matchlist('12a4aaa', '^\(.\{-}\)\(\%5c\@<=a\+\)\(.\+\)\?') +Returns ['12a4', 'aaa', '4aaa'], should be ['12a4', 'aaa', ''] +Backreference not cleared when retrying after \@<= fails? +(Brett Stahlman, 2008 March 8) + +Problem with remote_send(). (Charles Campbell, 2008 Aug 12) + +ftplugin for help file should set 'isk' to help file value. + +Win32: remote editing fails when the current directory name contains "[". +(Ivan Tishchenko, Liu Yubao) Suggested patch by Chris Lubinski: Avoid +escaping characters where the backslash is not removed later. Asked Chris for +an alternate solution, also for src/ex_getln.c. +This also fails when the file or directory name contains "%". (Thoml, 2008 +July 7) +Using --remote-silent while the current directory has a # in the name does not +work, the # needs to be escaped. (Tramblay Bruno, 2012 Sep 15) + +When using remote-silent the -R flag is not passed on. (Axel Bender, 2012 May +31) + +Win32: A --remote command that has a directory name starting with a ( doesn't +work, the backslash is removed, assuming that it escapes the (. (Valery +Kondakoff, 2009 May 13) + +Win32: Using "gvim --remote-tab-silent el艥uti.txt" doesn't work, the +multibyte character isn't passed and edits elsuti.txt. +(Ra煤l N煤帽ez de Arenas Coronado, 2015 Dec 18) + +Problem with CTRL-F. (Charles Campbell, 2008 March 21) +Only happens with "gvim -geometry "160x26+4+27" -u NONE -U NONE prop.c". +'lines' is 54. (2008 March 27) + +Problem with pointer wrapping around in getvcol(). (Wolfgang Kroworsch, 2008 +Oct 19) Check for "col" being "MAXCOL" separately? + +Unexpectedly inserting a double quote. (Anton Woellert, 2008 Mar 23) +Works OK when 'cmdheight' is 2. + +8 Use a mechanism similar to omni completion to figure out the kind of tab + for CTRL-] and jump to the appropriate matching tag (if there are + several). + +The utf class table is missing some entries: + 0x2212, minus sign + 0x2217, star + 0x2500, bar + 0x26ab, circle + +Visual line mode doesn't highlight properly when 'showbreak' is used and the +line doesn't fit. (Dasn, 2008 May 1) + +GUI: In Normal mode can't yank the modeless selection. Make "gy" do this? +Works like CTRL-Y in Command line mode. + +C't: On utf-8 system, editing file with umlaut through Gnome results in URL +with %nn%nn, which is taken as two characters instead of one. +Try to reproduce at work. + +Patch for default choice in file changed dialog. (Bjorn Winckler, 2008 Oct 19) +Is there a way to list all the files first? + +Fail to edit file after failed register access. Error flag remains set? +(Lech Lorens, 2010 Aug 30) + +Problem with 'ts' set to 9 and 'showbreak' to ">>>". (Matthew Winn, 2007 Oct +1) + +":tab help" always opens a new tab, while ":help" re-uses an existing window. +Would be more consistent when an existing tab is re-used. (Tony Mechelynck) + +Using Aap to build Vim: add remarks about how to set personal preferences. +Example on http://www.calmar.ws/tmp/aap.html + +When 'diffopt' has "context:0" a single deleted line causes two folds to merge +and mess up syncing. (Austin Jennings, 2008 Jan 31) + +Gnome improvements: Edward Catmur, 2007 Jan 7 + Also use Save/Discard for other GUIs + +New PHP syntax file, use it? (Peter Hodge) + +":echoe" in catch block stops processing, while this doesn't happen outside of +a catch block. (ZyX, 2011 Jun 2) + +Test 54 uses shell commands, that doesn't work on non-Unix systems. Use some +other way to test buffer-local autocommands. + +The documentation mentions the priority for ":2match" and ":3match", but it +appears the last one wins. (John Beckett, 2008 Jul 22) Caused by adding +matchadd()? Suggested patch by John, 2008 Jul 24. + +When 'encoding' is utf-8 the command line is redrawn as a whole on every +character typed. (Tyler Spivey, 2008 Sep 3) Only redraw cmdline for +'arabicshape' when there is a character on the command line for which +(ARABIC_CHAR(u8c)) is TRUE. + +Cheng Fang made javacomplete. (2007 Aug 11) +Asked about latest version: 0.77.1 is on www.vim.org. + +More AmigaOS4 patches. (Peter Bengtsson, Nov 9) + +Amiga patches with vbcc. (Adrien Destugues, 2010 Aug 30) +http://pulkomandy.ath.cx/drop/vim73_vbcc_amiga.diff + +Problem with compound words? (Bert, 2008 May 6) +No warning for when flags are defined after they are used in an affix. + +Screen redrawing when continuously updating the buffer and resizing the +terminal. (Yakov Lerner, 2006 Sept 7) + +Add option settings to help ftplugin. (David Eggum, 2006 Dec 18) + +Autoconf problem: when checking for iconv library we may add -L/usr/local/lib, +but when compiling further tests -liconv is added without the -L argument, +that may fail (e.g., sizeof(int)). (Blaine, 2007 Aug 21) + +Problem with ".add" files when using two languages and restarting Vim. (Raul +Coronado, 2008 Oct 30) + +Popup menu redraw: Instead of first redrawing the text and then drawing the +popup menu over it, first draw the new popup menu, remember its position and +size and then redraw the text, skipping the characters under the popup menu. +This should avoid flicker. Other solution by A.Politz, 2007 Aug 22. + +When the file name has parenthesis, e.g., "foo (bar).txt", ":!ls '%'" has the +parenthesis escaped but not the space. That's inconsistent. Either escape +neither or both. No escaping might be best, because it doesn't depend on +particularities of the shell. (Zvi Har'El, 2007 Nov 10) (Teemu Likonen, 2008 +Jun 3) +However, for backwards compatibility escaping might be necessary. Check if +the user put quotes around the expanded item? + +A throw in a function causes missing an endif below the call. (Spiros +Bousbouras, 2011 May 16) + +Error E324 can be given when a cron script has wiped out our temp directory. +Give a clear error message about this (and tell them not to wipe out /tmp). + +Color for cUserLabel should differ from case label, so that a mistake in a +switch list is noticed: + switch (i) + { + case 1: + foobar: + } + +Look at http://www.gtk-server.org/ . It has a Vim script implementation. + +Netbeans problem. Use "nc -l 127.0.0.1 55555" for the server, then run gvim +with "gvim -nb:localhost:55555:foo". From nc do: '1:editFile!0 "foo"'. Then +go to Insert mode and add a few lines. Then backspacing every other time +moves the cursor instead of deleting. (Chris Kaiser, 2007 Sep 25) + +Windows installer could add a "open in new tab of existing Vim" menu entry. +GvimExt: patch to add "Edit with single Vim &tabbed" menu entry. +Just have two choices, always using one Vim and selecting between using an +argument list or opening each file in a separate tab. +(Erik Falor, 2008 May 21, 2008 Jun 26) + +Windows installer: licence text should not use indent, causes bad word wrap. +(Benjamin Fritz, 2010 Aug 16) + +Changes for Win32 makefile. (Mike Williams, 2007 Jan 22, Alexei Alexandrov, +2007 Feb 8) + +Win32: Can't complete shell command names. Why is setting xp_context in +set_one_cmd_context() inside #ifndef BACKSLASH_IN_FILENAME? + +Win32: Patch for cscope external command. (Mike Williams, 2007 Aug 7) + +Win32: XPM support only works with path without spaces. Patch by Mathias +Michaelis, 2006 Jun 9. Another patch for more path names, 2006 May 31. +New version: http://members.tcnet.ch/michaelis/vim/patches.zip (also for other +patches by Mathias, see mail Feb 22) + +Win32: compiling with normal features and OLE fails. Patch by Mathias +Michaelis, 2006 Jun 4. + +Win32: using CTRL-S in Insert mode doesn't remove the "+" from the tab pages +label. (Tsakiridis, 2007 Feb 18) Patch from Ian Kelling, 2008 Aug 6. + +Win32: using "gvim --remote-tab-silent fname" sometimes gives an empty screen +with the more prompt. Caused by setting the guitablabel? (Thomas Michael +Engelke, 2007 Dec 20 - 2008 Jan 17) + +Win32: patch for fullscreen mode. (Liushaolin, 2008 April 17) + +Win32: When 'shell' is bash shellescape() doesn't always do the right thing. +Depends on 'shellslash', 'shellquote' and 'shellxquote', but shellescape() +only takes 'shellslash' into account. + +Menu item that does "xxd -r" doesn't work when 'fileencoding' is utf-16. +Check for this and use iconv? (Edward L. Fox, 2007 Sep 12) +Does the conversion in the other direction work when 'fileencodings' is set +properly? + +Cursor displayed in the wrong position when using 'numberwidth'. (James Vega, +2007 Jun 21) + +When $VAR contains a backslash expand('$VAR') removes it. (Teemu Likonen, 2008 +Jun 18) + +C++ indenting wrong with "=". (James Kanze, 2007 Jan 26) + +":lockvar" should use copyID to avoid endless loop. + +When using --remote-silent and the file name matches 'wildignore' get an E479 +error. without --remote-silent it works fine. (Ben Fritz, 2008 Jun 20) + +GVim: dialog for closing Vim should check if Vim is busy writing a file. Then +use a different dialog: "busy saving, really quit? yes / no". + +Check other interfaces for changing curbuf in a wrong way. Patch like for +if_ruby.c. + +":helpgrep" should use the directory from 'helpfile'. + +The need_fileinfo flag is messy. Instead make the message right away and put +it in keep_msg? + +Editing a file remotely that matches 'wildignore' results in a "no match" +error. Should only happen when there are wildcards, not when giving the file +name literally, and esp. if there is only one name. + +Test 61 fails sometimes. This is a timing problem: "sleep 2" sometimes takes +longer than 2 seconds. + +Using ":au CursorMoved * cmd" invokes mch_FullName(), which can be slow. +Can this be avoided? (Thomas Waba, 2008 Aug 24) +Also for ":w" without a file name. +The buffer has the full path in ffname, should pass this to the autocommand. + +"vim -C" often has 'nocompatible', because it's set in some startup script. +Set 'compatible' after startup is done? Patch by James Vega, 2008 Feb 7. + +VMS: while editing a file found in complex, Vim will save file into the first +directory of the path and not to the original location of the file. +(Zoltan Arpadffy) + +VMS: VFC files are in some cases truncated during reading (Zoltan Arpadffy) + +input() completion should not insert a backslash to escape a space in a file +name? + +Ruby completion is insecure. Can this be fixed? + +When 'backupskip' is set from $TEMP special characters need to be escaped. +(patch by Grembowietz, 2007 Feb 26, not quite right) +Another problem is that file_pat_to_reg_pat() doesn't recognize "\\", so "\\(" +will be seen as a path separator plus "\(". + +gvim d:\path\path\(FILE).xml should not remove the \ before the (. +This also fails with --remote. + +When doing ":quit" the Netbeans "killed" event isn't sent. (Xavier de Gaye, +2008 Nov 10) call netbeans_file_closed() at the end of buf_freeall(), or in +all places where buf_freeall() is called? + +aucmd_prepbuf() should also use a window in another tab page. + +When unloading a buffer in a BufHidden autocommand the hidden flag is reset? +(Bob Hiestand, 2008 Aug 26, Aug 27) + +Substituting an area with a line break with almost the same area does change +the Visual area. Can this be fixed? (James Vega, 2006 Sept 15) + +GUI: When combining fg en bg make sure they are not equal. + +Use different pt_br dictionary for spell checking. (Jackson A. Aquino, 2006 +Jun 5) + +Use different romanian dictionary for spell checking. (Andrei Popescu, Nov +2008) Use http://downloads.sourceforge.net/rospell/ro_RO.3.2.zip +Or the hunspell-ro.3.2.tar.gz file, it also has a iso-8859-2 list. + +In a C file with spell checking, in "% integer" "nteger" is seen as an error, +but "]s" doesn't find it. "nteger" by itself is found. (Ralf Wildenhues, 2008 +Jul 22) + +There should be something about spell checking in the user manual. + +Add an option to specify the character to use when a double-width character is +moved to the next line. Default '>', set to a space to blank it out. Check +that char is single width when it's set (compare with 'listchars'). + +The generated vim.bat can avoid the loop for NT. (Carl Zmola, 2006 Sep 3) + +When showing a diff between a non-existent file and an existing one, with the +cursor in the empty buffer, the other buffer only shows the last line. Change +the "insert" into a change from one line to many? (Yakov Lerner, 2008 May 27) + +These two abbreviations don't give the same result: + let asdfasdf = "xyz\<Left>" + cabbr XXX <C-R>=asdfasdf<CR> + cabbr YYY xyz<Left> + +Michael Dietrich: maximized gvim sometimes displays output of external command +partly. (2006 Dec 7) + +In FileChangedShell command it's no longer allowed to switch to another +buffer. But the changed buffer may differ from the current buffer, how to +reload it then? + +For Aap: include a config.arg.example file with hints how to use config.arg. + +Default for 'background' is wrong when using xterm with 256 colors. +Table with estimates from Matteo Cavalleri, 2014 Jan 10. + +Setting 'background' resets the Normal background color: + highlight Normal ctermbg=DarkGray + set background=dark +This is undesired, 'background' is supposed to tell Vim what the background +color is, not reset it. + +Completion menu: For a wrapping line, completing a long file name, only the +start of the path is shown in the menu. Should move the menu to the right to +show more text of the completions. Shorten the items that don't fit in the +middle? + +Accessing file#var in a function should not need the g: prepended. + +When exiting detects a modified buffer, instead of opening the buffer in the +current tab, use an existing tab, if possible. Like finding a window where +the buffer is displayed. (Antonios Tsakiridis) + +When ":cn" moves to an error in the same line the message isn't shortened. +Only skip shortening for ":cc"? + +Problem with ":call" and dictionary function. Hari Krishna Dara, Charles +Campbell 2006 Jul 06. + +A custom completion function in a ":command" cannot be a Funcref. (Andy +Wokula, 2007 Aug 25) + +Problem with using :redir in user command completion function? (Hari Krishna +Dara, 2006 June 21) + +Another resizing problem when setting 'columns' and 'lines' to a very large +number. (Tony Mechelynck, 2007 Feb 6) + +After starting Vim, using '0 to jump somewhere in a file, ":sp" doesn't center +the cursor line. It works OK after some other commands. + +Win32: Is it possible to have both postscript and Win32 printing? + +Using UTF-8 character with ":command" does not work properly. (Matt Wozniski, +2008 Sep 29) + +In the Netbeans interface add a "vimeval" function, so that the other side can +check the result of has("patch13"). + +Cursor line at bottom of window instead of halfway after saving view and +restoring. Only with 'nowrap'. (Robert Webb, 2008 Aug 25) + +Netrw has trouble executing autocommands only for a directory. Add <isdir> +and <notisdir> to autocommand patterns? Also <isfile>? + +Add command modifier that skips wildcard expansion, so that you don't need to +put backslashes before special chars, only for white space. + +In mswin.vim: Instead of mapping <C-V> for Insert mode in a complicated way, +can it be done like ":imap <C-V> <MiddleMouse>" without negative side effects? + +When right after "vim file", "M" then CTRL-W v the windows are scrolled +differently and unexpectedly. Caused by patch 7.2.398? + +The magic clipboard format "VimClipboard2" appears in several places. Should +be only one. + +Win32, NTFS: When editing a specific infostream directly and 'backupcopy' is +"auto" should detect this situation and work like 'backupcopy' is "yes". File +name is something like "c:\path\foo.txt:bar", includes a colon. (Alex +Jakushev, 2008 Feb 1) + +Small problem displaying diff filler line when opening windows with a script. +(David Luyer, 2007 Mar 1 ~/Mail/oldmail/mool/in.15872 ) + +Is it allowed that 'backupext' is empty? Problems when backup is in same dir +as original file? If it's OK don't compare with 'patchmode'. (Thierry Closen) + +Patch for adding ":lscscope". (Navdeep Parhar, 2007 Apr 26; update 2008 Apr +23) + +":mkview" isn't called with the right buffer argument. Happens when using +tabs and the autocommand "autocmd BufWinLeave * mkview". (James Vega, 2007 +Jun 18) + +When completing from another file that uses a different encoding completion +text has the wrong encoding. E.g., when 'encoding' is utf-8 and file is +latin1. Example from Gombault Damien, 2007 Mar 24. + +In gvim the backspace key produces a backspace character, but on Linux the +VERASE key is Delete. Set VERASE to Backspace? (patch by Stephane Chazelas, +2007 Oct 16) + +TermResponse autocommand isn't always triggered when using vimdiff. (Aron +Griffis, 2007 Sep 19) + +Create a gvimtutor.1 file and change Makefiles to install it. + +When 'encoding' is utf-8 typing text at the end of the line causes previously +typed characters to be redrawn. Caused by patch 7.1.329. (Tyler Spivey, 2008 +Sep 3, 11) + +":vimgrep" does not recognize a recursive symlink. Is it possible to detect +this, at least for Unix (using device/inode)? + +When switching between windows the cursor is often put in the middle. +Remember the relative position and restore that, just like lnum and col are +restored. (Luc St-Louis) + +Add an option for a minimal text length before inserting a line break for +'textwidth'. Avoids very short lines when a very long word follows. +(Kartik Agaram) + + +Better plugin support (not plugin manager, see elsewhere for that): +- Avoid use of feedkeys, add eval functions where needed: + - manipulating the Visual selection? +- Add createmark(): add a mark like mM, but return a unique ID. Need some way + to clean them up again... Use a name + the script ID. + Add createmark( , 'c') to track inserts/deletes before the column. +- Plugins need to make a lot of effort, lots of mappings, to know what + happened before pressing the key that triggers a plugin action. How about + keeping the last N pressed keys, so that they do not need to be mapped? +- equivalent of netbeans_beval_cb(). With an autocommand? +- Add something to enable debugging when a remote message is received. + + +More patches: +- Another patch for Javascript indenting. (Hari Kumar, 2010 Jul 11) + Needs a few tests. +- Add 'cscopeignorecase' option. (Liang Wenzhi, 2006 Sept 3) +- Extra argument to strtrans() to translate special keys to their name (Eric + Arnold, 2006 May 22) +- Mac: indicate whether a buffer was modified. (Nicolas Weber, 2006 Jun 30) +- Allow negative 'nrwidth' for left aligning. (Nathan Laredo, 2006 Aug 16) +- ml_append_string(): efficiently append to an existing line. (Brad + Beveridge, 2006 Aug 26) Use in some situations, e.g., when pasting a + character at a time? +- recognize hex numbers better. (Mark Manning, 2006 Sep 13) +- Add <AbbrExpand> key, to expand an abbreviation in a mapping. (Kana + Natsuno, 2008 Jul 17) +- Add 'wspara' option, also accept blank lines like empty lines for "{" and + "}". (Mark Lundquist, 2008 Jul 18) +- Patch to add CTRL-T to delete part of a path on cmdline. (Adek, 2008 Jul + 21) +- Instead of creating a copy of the tutor in all the shell scripts, do it in + vimtutor.vim. (Jan Minar, 2008 Jul 20) +- When fsync() fails there is no hint about what went wrong. Patch by Ben + Schmidt, 2008 Jul 22. +- testdir/Make_dos_sh.mak for running tests with MingW. (Bill McCarthy, 2008 + Sep 13) +- Replace ccomplete.vim by cppcomplete.vim from www.vim.org? script 1520 by + Vissale Neang. (Martin Stubenschrott) Asked Vissale to make the scripts + more friendly for the Vim distribution. + New version received 2008 Jan 6. + No maintenance in two years... +- Patch to open dropped files in new tabs. (Michael Trim, 2010 Aug 3) + +Awaiting updated patches: +9 Mac unicode patch (Da Woon Jung, Eckehard Berns): + 8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac? + New patch 2004 Jun 16 + - selecting proportional font breaks display + - UTF-8 text causes display problems. Font replacement causes this. + - Command-key mappings do not work. (Alan Schmitt) + - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work. + (Alan Schmitt) + - remove 'macatsui' option when this has been fixed. + - when 'macatsui' is off should we always convert to "macroman" and ignore + 'termencoding'? +9 HTML indenting can be slow. Caused by using searchpair(). Can search() + be used instead? A.Politz is looking into a solution. +8 Win32: Add minidump generation. (George Reilly, 2006 Apr 24) +7 Completion of network shares, patch by Yasuhiro Matsumoto. + Update 2004 Sep 6. + How does this work? Missing comments. +8 Add a few more command names to the menus. Patch from Jiri Brezina + (28 feb 2002). Will mess the translations... +7 ATTENTION dialog choices are more logical when "Delete it" appears + before "Quit". Patch by Robert Webb, 2004 May 3. +- Include flipcase patch: ~/vim/patches/wall.flipcase2 ? Make it work + for multibyte characters. +- Win32: add options to print dialog. Patch from Vipin Aravind. +- Patch to add highlighting for whitespace. (Tom Schumm, 2003 Jul 5) + use the patch that keeps using HLF_8 if HLF_WS has not + been given values. + Add section in help files for these highlight groups? +7 Add "DefaultFG" and "DefaultBG" for the colors of the menu. (Marcin + Dalecki has a patch for Motif and Carbon) +- Add possibility to highlight specific columns (for Fortran). Or put a + line in between columns (e.g., for 'textwidth'). + Patch to add 'hlcolumn' from Vit Stradal, 2004 May 20. + confirm() add "flags" argument, with 'v' for vertical + layout and 'c' for console dialog. (Haegg) + Flemming Madsen has a patch for the 'c' flag + (2003 May 13) + raisewin() raise gvim window (see HierAssist patch for + Tcl implementation ~/vim/HierAssist/ ) + taglist() add argument to specify maximum number of matches. + useful for interactive things or completion. + col('^') column of first non-white character. + Can use "len(substitute(getline('.'), '\S.*', '', '')) + + 1", but that's ugly. +7 Add patch from Benoit Cerrina to integrate Vim and Perl functions + better. Now also works for Ruby (2001 Nov 10) +7 When 'rightleft' is set, the search pattern should be displayed right + to left as well? See patch of Dec 26. (Nadim Shaikli) +8 Option to lock all used memory so that it doesn't get swapped to disk + (unencrypted). Patch by Jason Holt, 2003 May 23. Uses mlock. +7 Add ! register, for shell commands. (patch from Grenie) +8 In the gzip plugin, also recognize *.gz.orig, *.gz.bak, etc. Like it's + done for filetype detection. Patch from Walter Briscoe, 2003 Jul 1. +7 Add a "-@ filelist" argument: read file names from a file. (David + Kotchan has a patch for it) +7 Add ":justify" command. Patch from Vit Stradal 2002 Nov 25. +- findmatch() should be adjusted for Lisp. See remark at + get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram, + incomplete patch Mar 18) +- For GUI Find/Replace dialog support using a regexp. Patch for Motif + and GTK by degreneir (nov 10 and nov 18). +- Patch for "paranoid mode" by Kevin Collins, March 7. Needs much more work. +- Patch for redo register. (Ben Schmidt, 2007 Oct 19) + Await response to question to make the register writable. + + +Better 'rightleft' or BIDI support: +- Minimal Vi with bidi support: https://github.com/aligrudi/neatvi + By Ali Gholami Rudi, also worked on arabic.c + + +Spell checking: +- List of common misspellings in English: + https://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines + German: + https://de.wikipedia.org/wiki/Wikipedia:Liste_von_Tippfehlern/F%C3%BCr_Maschinen + There are other languages. +- [s does not find missing capital at start of the line. #10838 + Probably because the dot at the end of the previous line isn't seen. +- When 'cursorline' is set and the first word should have SpellCap + highlighting, redrawing the line removes it when moving the cursor away + from the line. (#7085) Would need to inspect the end of the previous line + and update "capcol_lnum" and "cap_col". +- Mixup of highlighting when there is a match and SpellBad. (ZyX, 2015 Jan 1) +- Spell files use a latin single quote. Unicode also has another single + quote: 0x2019. (Ron Aaron, 2014 Apr 4) + New OpenOffice spell files support this with ICONV. But they are not + compatible with Vim spell files. The old files can no longer be + downloaded. +- Add a feature to only consider two spaces after a dot to start a new + sentence. Don't give the capitalization error when there is one space. +- Add a way to specify punctuation characters. Add the superscript numbers + by default: 0x2070, 0xb9, 0xb2, 0xb3, 0x2074 - 0x2079. +- In popup menu: If the only problem is the case of the first character, + don't offer "ignore" and "add to word list". +- Spell menu: When using the Popup menu to select a replacement word, + ":spellrepeat" doesn't work. SpellReplace() uses setline(). Can it use + "z=" somehow? Or use a new function. + + +Quickfix/Location List: +- Window size is wrong when using quickfix window. (Lifepillar, 2018 Aug 24, + #2999) +- When using CTRL-W CR in the quickfix window, the jumplist in the opened + window is cleared, to avoid going back to the list of errors buffer (would + have two windows with it). Can we just remove the jump list entries for + the quickfix buffer? +- When an item in the quickfix list has a file name that does not exist, + behave like the item was not a match for :cnext. +- When adding an item to a new quickfix list make ":cnext" jump to that + item. Make a difference being at the first item and not having used + :cnext at all. (Afanasiy Fet, 2017 Jan 3) +- When opening quickfix window, disable spell checking? +- Patch for supporting count before CR in quickfix window. (AOYAMA Shotaro, + 2007 Jan 1) +- Patch from Herculano de Lima Einloft Neto for better formatting of the + quickfix window (2004 dec 2) +- Amiga: When using quickfix with the Manx compiler we only get the first 25 + errors. How do we get the rest? +8 The quickfix file is read without conversion, thus in 'encoding'. Add an + option to specify the encoding of the errorfile and convert it. Also for + ":grep" and ":helpgrep". + More generic solution: support a filter (e.g., by calling a function). +7 Add a command that goes back to the position from before jumping to the + first quickfix location. + +Vi incompatibility: +- Try new POSIX tests, made after my comments. (Geoff Clare, 2005 April 7) + Version 1.5 is in ~/src/posix/1.5. (Lynne Canal) +8 With undo/redo only marks in the changed lines should be changed. Other + marks should be kept. Vi keeps each mark at the same text, even when it + is deleted or restored. (Webb) + Also: A mark is lost after: make change, undo, redo and undo. + Example: "{d''" then "u" then "d''": deletes an extra line, because the '' + position is one line down. (Veselinovic) +8 When stdin is not a tty, and Vim reads commands from it, an error should + make Vim exit. +7 Unix Vim (not gvim): Typing CTRL-C in Ex mode should finish the line + (currently you can continue typing, but it's truncated later anyway). + Requires a way to make CTRL-C interrupt select() when in cooked input. +8 When loading a file in the .exrc, Vi loads the argument anyway. Vim skips + loading the argument if there is a file already. When no file argument + given, Vi starts with an empty buffer, Vim keeps the loaded file. (Bearded) +6 In Insert mode, when using <BS> or <Del>, don't wipe out the text, but + only move back the cursor. Behaves like '$' in 'cpoptions'. Use a flag + in 'cpoptions' to switch this on/off. +8 When editing a file which is a symbolic link, and then opening another + symbolic link on the same file, Vim uses the name of the first one. + Adjust the file name in the buffer to the last one used? Use several file + names in one buffer??? + Also: When first editing file "test", which is symlink to "test2", and + then editing "test2", you end up editing buffer "test" again. It's not + logical that the name that was first used sticks with the buffer. +7 The ":undo" command works differently in Ex mode. Edit a file, make some + changes, "Q", "undo" and _all_ changes are undone, like the ":visual" + command was one command. + On the other hand, an ":undo" command in an Ex script only undoes the last + change (e.g., use two :append commands, then :undo). +7 The ":map" command output overwrites the command. Perhaps it should keep + the ":map" when it's used without arguments? +7 CTRL-L is not the end of a section? It is for Posix! Make it an option. +7 Add a way to send an email for a crashed edit session. Create a file when + making changes (containing name of the swap file), delete it when writing + the file. Supply a program that can check for crashed sessions (either + all, for a system startup, or for one user, for in a .login file). +7 Vi doesn't do autoindenting when input is not from a tty (in Ex mode). +7 "z3<CR>" should still use the whole window, but only redisplay 3 lines. +7 ":tag xx" should move the cursor to the first non-blank. Or should it go + to the match with the tag? Option? +7 Implement 'autoprint'/'ap' option. +7 Add flag in 'cpoptions' that makes <BS> after a count work like <Del> + (Sayre). +7 Add flag in 'cpoptions' that makes operator (yank, filter) not move the + cursor, at least when cancelled. (default Vi compatible). +7 This Vi-trick doesn't work: "Q" to go to Ex mode, then "g/pattern/visual". + In Vi you can edit in visual mode, and when doing "Q" you jump to the next + match. Nvi can do it too. +7 Support '\' for line continuation in Ex mode for these commands: (Luebking) + g/./a\ g/pattern1/ s/pattern2/rep1\\ + line 1\ line 2\\ + line 2\ line 3\\ + . line4/ +6 ":e /tmp/$tty" doesn't work. ":e $uid" does. Is $tty not set because of + the way the shell is started? +6 Vi compatibility (optional): make "ia<CR><ESC>10." do the same strange + thing. (only repeat insert for the first line). + + +GTK+ GUI: +9 Crash with X command server over ssh. (Ciaran McCreesh, 2006 Feb 6) +8 GTK 2: Combining UTF-8 characters not displayed properly in menus (Mikolaj + Machowski) They are displayed as separate characters. Problem in + creating a label? +8 GTK 2: Combining UTF-8 characters are sometimes not drawn properly. + Depends on the font size, "monospace 13" has the problem. Vim seems to do + everything right, must be a GTK bug. Is there a way to work around it? +9 Can't paste a Visual selection from GTK-gvim to vim in xterm or Motif gvim + when it is longer than 4000 characters. Works OK from gvim to gvim and + vim to vim. Pasting through xterm (using the shift key) also works. + It starts working after GTK gvim loses the selection and gains it again. +- Gnome2: When moving the toolbar out of the dock, so that it becomes + floating, it can no longer be moved. Therefore making it float has been + blocked for now. +- Mapping with partial match not executed properly in GTK. (Ingo Karkat, + #7082) +- Add more testing of the GTK GUI. + - gtk_test_widget_click() can be used to simulate a click in a widget. +- Tests failing for "make testgui" with GTK: + - Test_setbufvar_options() + - Test_exit_callback_interval() +- When adding a timer from 'balloonexpr' it won't fire, because + g_main_context_iteration() doesn't return. Need to trigger an event when + the timer expires. +- problem with 'L' in 'guioptions' changing the window width. (Aaron + Cornelius, 2012 Feb 6) +- Patch to invert characters differently in GTK. (Yukihiro Nakadaira, 2013 + May 5) +- drawing a double-width combining character over single-width characters + doesn't look right. (Dominique Pelle, 2010 Aug 8) +- tear-off menu does not work. (Kurt Sonnenmoser, 2010 Oct 25) +- Patch for GTK buttons X1Mouse and X2Mouse. (Christian J. Robinson, 2010 + Aug 9) +- When setting 'columns' in a startup script and doing ":vertical diffsplit" + the window isn't redrawn properly, see two vertical bars. +- when the Tab pages bar appears or disappears while the window is maximized + the window is no longer maximized. Patch that has some idea but doesn't + work from Geoffrey Antos, 2008 May 5. Also: the window may no longer fit + on the screen, thus the command line is not visible. +- Patch to support horizontal scroll wheel in GTK. Untested. (Bjorn + Winckler, 2010 Jun 30) + + +Win32 GUI known bugs: +- Win32: tearoff menu window should have a scrollbar when it's taller than + the screen. +8 The -P argument doesn't work very well with many MDI applications. + The last argument of CreateWindowEx() should be used, see MSDN docs. + Tutorial: http://win32assembly.online.fr/tut32.html +6 Win32 GUI: With "-u NONE -U NONE" and doing "CTRL-W v" "CTRL-W o", the ":" + of ":only" is highlighted like the cursor. (Lipelis) +8 When 'encoding' is "utf-8", should use 'guifont' for both normal and wide + characters to make Asian languages work. Win32 fonts contain both + type of characters. +7 When font smoothing is enabled, redrawing can become very slow. The reason + appears to be drawing with a transparent background. Would it be possible + to use an opaque background in most places? +7 The cursor color indicating IME mode doesn't work properly. (Shizhu Pan, + 2004 May 9) +8 Win32: When clicking on the gvim title bar, which gives it focus, produces + a file-changed dialog, after clicking on a button in that dialog the gvim + window follows the mouse. The button-up event is lost. Only with + MS-Windows 98? + Try this: ":set sw ts", get enter-prompt, then change the file in a + console, go back to Vim and click "reload" in the dialog for the changed + file: Window moves with the cursor! + Put focus event in input buffer and let generic Vim code handle it? +8 When Vim is minimized and when maximizing it a file-changed dialog pops + up, Vim isn't maximized. It should be done before the dialog, so that it + appears in the right position. (Webb) +9 When selecting at the more-prompt or hit-enter-prompt, the right mouse + button doesn't give popup menu. + At the hit-enter prompt CTRL-Y doesn't work to copy the modeless + selection. + On the command line, don't get a popup menu for the right mouse button. + Let the middle button paste selected text (not the clipboard but the + non-Visual selection)? Otherwise CTRL-Y has to be used to copy the text. +8 When 'grepprg' doesn't execute, the error only flashes by, the + user can hardly see what is wrong. (Moore) + Could use vimrun with an "-nowait" argument to only wait when an error + occurs, but "command.com" doesn't return an error code. +8 When the 'shell' cannot be executed, should give an appropriate error msg. + Esp. for a filter command, currently it only complains the file could not + be read. +7 At the hit-enter prompt scrolling now no longer works. Need to use the + keyboard to get around this. Pretend <CR> was hit when the user tries to + scroll? +7 Scrollbar width doesn't change when selecting other windows appearance. + Also background color of Toolbar and rectangle below vert. scrollbar. +6 Drawing text transparently doesn't seem to work (when drawing part cursor). +8 CTRL key doesn't always work in combination with ALT key. It does work + for function keys, not for alphabetic characters. Perhaps this is because + CTRL-ALT is used by Windows as AltGr? +8 CTRL-- doesn't work for AZERTY, because it's CTRL-[ for QWERTY. How do we + know which keyboard is being used? +7 When scrolling, and a background color is dithered, the dither pattern + doesn't always join correctly between the scrolled area and the new drawn + area (Koloseike). +8 When gui_init_font() is called with "*", p_guifont is freed while it might + still be used somewhere. This is too tricky, do the font selection first, + then set the new font by name (requires putting all logfont parameters in + the font name). +- When running a fast timer, the cursor no longer blinks. Was reported: + cursor blinks in terminal on widows with a timer. (xtal8, #2142) +- Last message from startup doesn't show up when there is an echoerr + command. (Cyril Slobin, 2009 Mar 13) + + +Motif: +6 New Motif toolbar button from Marcin Dalecki: + - When the mouse pointer is over an Agide button the red becomes black. + Something with the way colors are specified in the .xpm file. + - The pixmap is two pixels smaller than it should be. The gap is filled + with grey instead of the current toolbar background color. +9 Can configure be changed to disable netbeans if the Xpm library is + required and it's missing? +8 When using the resource "Vim*borderwidth 2" the widgets are positioned + wrong. +9 XIM is disabled by default for SGI/IRIX. Fix XIM so that 'imdisable' can + be off by default. +9 XIM doesn't work properly for Motif. (Yasuhiro Matsumoto) For now, + keep XIM active at all times when the input method has the preediting + flag. +8 X11: A menu that contains an umlaut is truncated at that character. + Happens when the locale is "C", which uses ASCII instead of IS0-8859-1. + Is there a way to use latin1 by default? Gnome_init() seems to do this. +8 Perhaps use fontsets for everything? +6 When starting in English and switching the language to Japanese, setting + the locale with ":lang", 'guifontset' and "hi menu font=", deleting all + menus and setting them again, the menus don't use the new font. Most of + the tooltips work though... +7 Motif: when using a file selection dialog, the specified file name is not + always used (when specifying a filter or another directory). +8 When 'encoding' is different from the current locale (e.g., utf-8) the + menu strings don't work. Requires conversion from 'encoding' to the + current locale. Workaround: set 'langmenu'. + + +Motif GUI: +- gui_mch_browsedir() is missing, browsedir() doesn't work nicely. +7 Use XmStringCreateLocalized() instead of XmStringCreateSimple()? + David Harrison says it's OK (it exists in Motif 1.2). +8 Lesstif: When deleting a menu that's torn off, the torn off menu becomes + very small instead of disappearing. When closing it, Vim crashes. + (Phillipps) + + +GUI: +9 On Solaris, creating the popup menu causes the right mouse button no + longer to work for extending the selection. (Halevy) +9 When running an external program, it can't always be killed with CTRL-C. + e.g., on Solaris 5.5, when using "K" (Keech). Other 'guipty' problems on + Solaris 2.6. (Marley) +9 On Solaris: Using a "-geometry" argument, bigger than the window where Vim + is started from, causes empty lines below the cmdline. (raf) +8 When setting 'langmenu', it should be effective immediately. Store both + the English and the translated text in the menu structure. Re-generate + the translation when 'langmenu' has changed. +8 Basic flaw in the GUI code: NextScreen is updated before calling + gui_write(), but the GUI code relies on NextScreen to represent the state + of where it is processing the output. + Need better separation of Vim core and GUI code. +8 When fontset support is enabled, setting 'guifont' to a single font + doesn't work. +8 Menu priority for sub-menus for: Amiga. +8 When translating menus ignore the part after the Tab, the shortcut. So + that the same menu item with a different shortcut (e.g., for the Mac) are + still translated. +8 Add menu separators for Amiga. +8 Add way to specify the file filter for the browse dialog. At least for + browse(). +8 Add dialog for search/replace to other GUIs? Tk has something for this, + use that code? Or use console dialog. +8 When selecting a font with the font dialog and the font is invalid, the + error message disappears too quick. +7 More features in the find/replace dialog: + - regexp on/off + - search in selection/buffer/all buffers/directory + when all buffers/directory is used: + - filter for file name + when directory is used: + - subdirectory on/off + - top directory browser +8 gui_check_colors() is not called at the right moment. Do it much later, + to avoid problems. +8 gui_update_cursor() is called for a cursor shape change, even when there + are mappings to be processed. Only do something when going to wait for + input. Or maybe every 100 ms? +8 X11: When the window size is reduced to fit on screen, there are blank + lines below the text and bottom scrollbar. "gvim -geometry 80x78+0+0". + When the "+0+0" is omitted it works. +8 When starting an external command, and 'guipty' set, BS and DEL are mixed + up. Set erase character somehow? +8 The compose key doesn't work properly (Cepas). Both for Win32 and X11. +7 The cursor in an inactive window should be hollow. Currently it's not + visible. +7 GUI on Solaris 2.5.1, using /usr/dt/..: When gvim starts, cursor is + hollow, after window lowered/raised it's OK. (Godfrey) +7 When starting GUI with ":gui", and window is made smaller because it + doesn't fit on the screen, there is an extra redraw. +8 When setting font with .Xdefaults, there is an extra empty line at the + bottom, which disappears when using ":set guifont=<Tab>". (Chadzelek) +8 When font shape changes, but not the size, doing ":set font=" does not + redraw the screen with the new font. Also for Win32. + When the size changes, on Solaris 2.5 there isn't a redraw for the + remaining part of the window (Phillipps). +- Flashes really badly in certain cases when running remotely from a Sun. +4 Re-write the code so that the highlighting isn't changed multiple times + when doing a ":hi clear". The color changes happen three or more times + currently. This is very obvious on a 66Mhz 486. + + +Win32 console: +8 Should $USERPROFILE be preferred above $HOMEDRIVE/$HOMEPATH? No, but it's + a good fallback, thus use: + $HOME + $HOMEDRIVE$HOMEPATH + SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_APPDATA, FALSE); + $USERPROFILE + SHGetSpecialFolderPath(NULL, lpzsPath, CSIDL_COMMON_APPDATA, FALSE); + $ALLUSERSPROFILE + $SYSTEMDRIVE\ + C:\ +8 Win32 console: <M-Up> and <M-Down> don't work. (Geddes) We don't have + special keys for these. Should use modifier + key. +8 Win32 console: caps-lock makes non-alpha keys work like with shift. + Should work like in the GUI version. +8 Environment variables in DOS are not case sensitive. Make a define for + STRCMP_ENV(), and use it when comparing environment var names. +8 Setting 'shellslash' has no immediate effect. Change all file names when + it is set/reset? Or only use it when actually executing a shell command? +8 When editing a file on a Samba server, case might matter. ":e file" + followed by ":e FILE" will edit "file" again, even though "FILE" might be + another one. Set last used name in buflist_new()? Fix do_ecmd(), etc. +8 When a buffer is editing a file like "ftp://mach/file", which is not going + to be used like a normal file name, don't change the slashes to + backslashes. (Ronald Hoellwarth) + + +Win32 console: +9 When editing a file by its short file name, it should be expanded into its + long file name, to avoid problems like these: (Mccollister) + 1) Create a file called ".bashrc" using some other editor. + 2) Drag that file onto a shortcut or the actual executable. + 3) Note that the file name is something like BASHRC~1 + 4) Go to File->Save As menu item and type ".bashrc" as the file name. + 5) Press "Yes" to indicate that I want to overwrite the file. + 6) Note that the message "File exists (add ! to override)" is displayed + and the file is not saved. + Use FindFirstFile() to expand a file name and directory in the path to its + long name. +8 Also implement 'conskey' option for the Win32 console version? Look at + how Xvi does console I/O under Windows NT. +7 Re-install the use of $TERM and support the use of different terminals, + besides the console. +8 Use of <altgr> modifier doesn't work? 5.3 was OK. (Garcia-Suarez/Guckes) +9 Mapping <C-S-Tab> doesn't work correctly. How to see the difference with + <C-S-i>? +9 tmpnam() uses file in root of file system: "\asdf". That doesn't work on + a Netware network drive. Use same function as for Win32 GUI? +8 In os_win32.h, HAVE_STRICMP and HAVE_STRNICMP are defined only if __GNUC__ + is not defined. Shouldn't that be the other way around? + + +Amiga: +8 In mch_inchar() should use convert_input_safe() to handle incomplete byte + sequences. +9 In mch_expandpath() a "*" is to be expanded, but "\*" isn't. Remove + backslashes in result. +8 Executing a shell, only one option for 'shell' is separated. Should do + all options, using white space separation. + + +Macintosh: +- GUI: gui_mch_browsedir() is missing. +7 Loading the Perl library only works on OS/X 10.2 or 10.3, never on both. + Load the Perl library dynamically see Python sources file dynload_mac + (Jack) + dynamic linking: http://developer.apple.com/technotes/tn2002/tn2064.html +8 inputdialog() doesn't resize when giving more text lines. (David Fishburn, + 2006 Sept 28) +8 Define vim_mkdir() for Macintosh. +8 Define mch_writable() for Macintosh. +9 When DiskLock is running, using a swap file causes a crash. Appears to be + a problem with writing a file that starts with a dot. (Giacalone) +9 In mac_expandpath() check that handling of backslashes is done properly. +- Build problem with small features on Mac OS X 10.6. (Rainer, 2011 Jan 24) +- Version of netbeans.c for use with MacVim. (Kazuki Sakamoto, 2010 Nov 18) +- Mac with X11: clipboard doesn't work properly. (Raf, 2010 Aug 16) +- Move Carbon todo items to os_mac.txt. Note that this version is frozen, + try the Cocoa version. +- After a ":vsplit" the left scrollbar doesn't appear until 'columns' is + changed or the window is resized. +- Patch for configure: remove arch from ruby link args. (Knezevic, 2008 Mar + 5) Alternative: Kazuki Sakamoto, Mar 7. +- trouble compiling with Motif, requires --disable-darwin. (Raf, 2008 Aug 1) + Reply by Ben Schmidt. +- Using gvim: netrw window disappears. (Nick Lo, 2006 Jun 21) + + +"Small" problems: +- When using e_secure in do_one_cmd() mention the command being executed, + otherwise it's not clear where it comes from. +9 For Turkish vim_tolower() and vim_toupper() also need to use utf_ + functions for characters below 0x80. (Sertacyildiz) +9 When the last edited file is a help file, using '0 in a new Vim doesn't + edit the file as a help file. 'filetype' is OK, but 'iskeyword' isn't, + file isn't readonly, etc. +8 When an ":edit" is inside a try command and the ATTENTION prompt is used, + the :catch commands are always executed, also when the file is edited + normally. Should reset did_emsg and undo side effects. Also make sure + the ATTENTION message shows up. Servatius Brandt works on this. +7 Vimtutor leaves escape sequence in terminal. This is the xterm response to + requesting the version number. (Yasuhiro Matsumoto) +8 When redirecting and using ":silent" the current column for displaying and + redirection can be different. Use a separate variable to hold the column + for redirection. +7 The messages for "vim --help" and "vim --version" don't use + 'termencoding'. +- Could the hit-enter prompt be avoided when a message only overlaps the + 'showcmd' area? Clear that area when the next cmd is typed. +8 When 'scrollbind' is set, a window won't scroll horizontally if the cursor + line is too short. Add a word in 'scrollopt' to allow moving the cursor + to longer line that is visible. A similar thing is done for the GUI when + using the horizontal scrollbar. +8 When giving a ":bwipeout" command a file-changed dialog may popup for this + buffer, which is pointless. (Mike Williams) +8 On MS-Windows ":make" doesn't show output while it is working. Use the + tee.exe from http://unxutils.sourceforge.net/ ? About 16 Kbyte in the + UnxUtils.zip archive. + Is it better than what we have in src/tee? +8 When doing Insert mode completion a mapping cannot recursively call + edit(), because the completion information is global. Put everything in + an allocated structure? +7 mb_off2cells() doesn't work correctly on the tail byte of a double-byte + character. (Yasuhiro Matsumoto) It should return 1 when used on a tail + byte, like for utf-8. Store second byte of double-byte in ScreenLines2[] + (like for DBCS_JPNU) and put a zero in the second byte (like for UTF-8). +7 Inside a function with "perl <<EOF" a line with "$i++" is recognized as an + ":insert" command, causing the following "endfunction" not to be found. + Add skipping this perl construction inside function definitions. +7 When 'ttimeoutlen' is 10 and 'timeoutlen' is 1000, there is a keycode + "<Esc>a" and a mapping <Esc>x", when typing "<Esc>a" with half a second + delay should not be interpreted as a keycode. (Hans Ginzel) +7 ":botright 1 new" twice causes all window heights to be changed. Make the + bottom window only bigger as much as needed. +7 The Cygwin and MingW makefiles define "PC", but it's not used anywhere. + Remove? (Dan Sharp) +9 User commands use the context of the script they were defined in. This + causes a "s:var" argument to unexpectedly use a variable in the defining + script, not the calling script. Add an argument to ":command": + "-keepcontext". Do replace <SID>, so that a function in the defining + script can be called. +8 The Japanese message translations for MS-Windows are called ja.sjis.po, + but they use encoding cp932. Rename the file and check that it still + works. +8 A very long message in confirm() can't be quit. Make this possible with + CTRL-C. +8 "gf" always excludes trailing punctuation characters. file_name_in_line() + is currently fixed to use ".,:;!". Add an option to make this + configurable? +8 'hkmap' should probably be global-local. +8 Using ":s" in a function changes the previous replacement string. Save + "old_sub" in save_search_patterns()? +8 Should allow multibyte characters for the delimiter: ":s+a+b+" where "+" + is a multibyte character. +8 When appending to a file and 'patchmode' isn't empty, a backup file is + always written, even when the original file already exists. +9 When getting focus while writing a large file, could warn for this file + being changed outside of Vim. Avoid checking this while the file is being + written. +7 The message in bt_dontwrite_msg() could be clearer. +8 The script ID that is stored with an option and displayed with ":verbose + set" isn't reset when the option is set internally. For example when + 'foldlevel' is set from 'foldlevelstart'. +8 Also store the line number with the script ID and use it for ":verbose", + so that "set nocompatible" is found when it changes other option values. + When an option is set indirectly mention the command? E.g. when + ":diffsplit" sets 'foldmethod'. +8 In the fileformat dialog, "Cancel" isn't translated. Add a global + variable for this. (Eduardo Fernandez) +9 When editing a file with 'readonly' set, there is no check for an existing + swap file. Then using ":write" (without making any changes) doesn't give + a warning either. Should check for an existing swap file without creating + one. Unfinished patch by Ian Kelling, 2008 July 14. +7 When 'showbreak' is set, the amount of space a Tab occupies changes. + Should work like 'showbreak' is inserted without changing the Tabs. +7 When 'mousefocus' is set and switching to another window with a typed + command, the mouse pointer may be moved to a part of the window that's + covered by another window and we lose focus. Only move in the y + direction, not horizontally? +8 ":hardcopy": + - Using the cterm_color[] table is wrong when t_colors is > 16. + - Need to handle unprintable characters. + - Win32: On a B&W printer syntax highlighting isn't visible. Perform + dithering to make grey text? + - Add a flag in 'printoptions' to add an empty page to make the total + number even. "addempty"? (Mike Williams) + - Respect 'linebreak'. Perhaps also 'showbreak'? + - Should interpret CTRL-L as a page break. + - Grey line numbers are not always readable. Add field in 'printoptions'. + Default to black when no syntax highlighting. + - Be able to print a window in diff mode. + - Be able to specify a colorscheme to use for printing. And a separate + one for B&W printing (if that can be detected). +8 When 'virtualedit' is "block,insert" and encoding is "utf-8", selecting a + block of one double-wide character, then "d" deletes only half of it. +8 When 'virtualedit' is set, should "I" in blockwise visual mode also insert + in lines that don't extend into the block? +8 With 'virtualedit' set, in Insert mode just after the end of line, CTRL-O + yh does not yank the last character of the line. (Pavel Papushev) + Doing "hl" first appears to make it work. +8 With 'virtualedit' set it's possible to move into the blank area from + 'linebreak'. +8 With 'virtualedit' set and 'selection' "exclusive", a Visual selection + that ends in or after a tab, "d" doesn't delete (part of) the tab. + (Helmut Stiegler) +9 When jumping to a tag, the search pattern is put in the history. When + 'magic' is on, the pattern may not work. Translate the pattern depending + on p_magic when putting it in the history? Alternative: Store value of + 'magic' in history. (Margo) +9 optwin.vim: Restoring a mapping for <Space> or <CR> is not correct for + ":noremap". Add "mapcmd({string}, {mode})? Use code from ":mkexrc". +9 term_console is used before it is set (msdos, Amiga). +9 Get out-of-memory for ":g/^/,$s//@/" on 1000 lines, this is not handled + correctly. Get many error messages while redrawing the screen, which + cause another redraw, etc. +8 [<C-I> doesn't work when '*' is in 'iskeyword'. find_pattern_in_path() + must escape special characters in the pattern. +8 Vim can overwrite a read-only file with ":w!". ":w" can't overwrite an + existing file, "w!" can, but perhaps not a read-only file? Then use + ":w!!" for that. + Or ask for permission to overwrite it (if file can be made writable) and + restore file to readonly afterwards. + Overwriting a file for which a swap file exists is similar issue. +7 When compiled with "xterm_clipboard", startup can be slower and might get + error message for invalid $DISPLAY. Try connecting to the X server in the + background (forked), so that Vim starts up quicker? Connect as soon as + the clipboard is to be used (Visual select mode starts, paste from + clipboard) +7 X11: Some people prefer to use CLIPBOARD instead of PRIMARY for the normal + selection. Add an "xclipboard" argument to the 'clipboard' option? (Mark + Waggoner) +6 When the xterm reports the number of colors, a redraw occurs. This is + annoying on a slow connection. Wait for the xterm to report the number of + colors before drawing the screen. With a timeout. +8 When the builtin xterm termcap contains codes that are not wanted, need a + way to avoid using the builtin termcap. +8 Xterm sends ^[[H for <Home> and ^[[F for <End> in some mode. Also + recognize these keys? Mostly useful for xterm simulators, like gnometerm. + See http://dickey.his.com/xterm/xterm.faq.html#xterm_pc_style. +8 '[ and '] should be set to start/end of line when using a linewise operator + (e.g., ":w"). +8 CTRL-A can't handle big "long" numbers, they become negative. Check for + "-" character, if not present, use unsigned long. +8 Add suspending with CTRL-Z at the "more" prompt, and when executing a long + script in do_cmdline(). +8 When using 'hidden', many swap files will be open. When Vim runs into the + maximum number of open files, error messages will appear. Detect that + this problem is present, and close any hidden files that don't have + changes. +8 Core dump within signal function: gdb doesn't show stack backtrace! Option + to skip catch_signals()? +9 Repeating a "cw" with "." doesn't work if the text was pasted from the + clipboard. (Thomas Jones) It's because the menu/toolbar item exits Insert + mode and uses "gP". How to fix this without breaking inserting a block of + text? +8 In Replace mode pasting from the clipboard (using menu or toolbar) inserts + all the text. Add ":rmenu"? +8 Pasting with the mouse in Replace mode inserts the text, instead of + overwriting, when it is more than one line. Same for using <C-R>. +9 CTRL-E and CTRL-Y don't work in small window when 'so' is 4 and lines are + wrapping (Acevedo/in.226). E.g., when using CTRL-E, window height 7, + window might actually scroll down when last line of buffer is displayed. + --> Remember if the previous command was "cursor follows screen" or + "screen follow cursor" and use this in cursupdate(). +7 tilde_replace() can only handle "~/", should also do "~user/". + Get the list of home directories (from /etc/passwd? Use getpwent()) and + use some clever algorithm to match a path with that. Find common strings + in the list? +8 When dragging status line with mouse, sometimes a jump when first clicking + on the status line (caused by 'winheight'). Select window on button up, + instead of on button down. +8 Dragging the status line doesn't scroll but redraw. +8 When performing incremental search, should abort searching as soon as a + character is typed. +8 How to set VIMRC_FILE to \"something\" for configure? Why does this not + work: CFLAGS='-DVIMRC_FILE=\"/mydir/myfile\"' ./configure +8 The temporary file is sometimes not writable. Check for this, and use an + alternate name when it isn't. Or add the 'temptemplate' option: template + for the temp file name ":set temptemplate=/usr/tmp/?????.tmp". + Also: Win32 version uses Windows temp directory, which might not work for + cygwin bash. +7 Get error "*, \+ or \( operand could be empty" for pattern "\(.\)\1\{3}". + Remember flags for backreferences. +7 When switching to Daylight Saving Time, Vim complains that a file has been + changed since last read. Can we use a function that uses GMT? +7 When completing an environment variable after a '$', check for file names + that contain a '$' after all have been found. +8 When "cm" termcap entry is missing, starting gvim shouldn't complain about + it. (Lohner) Try out with "vt100" entry, cm replaced with cX. +7 When an include file starts with "../", the check for already visiting + this file doesn't work. Need to simplify the file name. +7 The names and comments for the arguments of do_browse() are confusing. + "dflt" isn't the default file name when "initdir" is not NULL and + "initdir" is the default path to be used. +7 When 'scrolloff' is exactly half the window height, "j" causes a scroll of + two lines at a time. "k" doesn't do this. (Cory T. Echols) + + +I can't reproduce these (if you can, let me know how!): +9 NT 4.0 on NTFS file system: Editing ".bashrc" (drag and drop), file + disappears. Editing ".xyz" is OK. Also, drag&drop only works for three + files. (McCollister) + + +Problems that will (probably) not be solved: +- GTK: when using the popup menu with spelling suggestions and releasing the + right mouse button before the menu appears selecting an item with the + right mouse button has no effect. GTK does not produce an event for this. +- GTK 2: Cannot use the file selector. When using it many things become + slow. This is caused by some code in GTK that writes + ~/.recently-used.xbel every time an event is handled. It assumes the main + loop is never quit, which is a wrong assumption. Also, it overwrites the + file with different file permissions, which is a privacy issue. This + needs to be fixed in GTK. A solution in Vim would be really complicated. + (2008 Jul 31) This appears to be fixed in Vim 7.3. +- xterm title: The following scenario may occur (esp. when running the Vim + test script): Vim 1 sets the title to "file1", then restores the title to + "xterm" with an ESC sequence when exiting. Vim 2 obtains the old title + with an X library call, this may result in "file1", because the window + manager hasn't processed the "xterm" title yet. Can apparently only be + worked around with a delay. +- In a terminal with 'mouse' set such that the mouse is active when entering + a command line, after executing a shell command that scrolls up the + display and then pressing ":": Selecting text with the mouse works like + the display wasn't scrolled. Vim doesn't know how much the external + command scrolled up the display. Use Shift to select text. +- X windows: When $DISPLAY points to a X server where there is no access + permission, trying to connect to the X server causes an error message. + XtOpenDisplay() prints this directly, there is no way to avoid it. +- X windows: Setting 'guifontset' to an illegal value sometimes crashes Vim. + This is caused by a fault in a X library function, can't be solved in Vim. +- Win32 tcl: has("tcl") hangs when the tcl84.dll is from cygwin. +- Motif: When adding a menu item "Find this &Symbol", the "s" in "this" will + be underlined, instead of in "Symbol". Motif doesn't let us specify which + character gets the highlighting. +- Moving the cursor removes color in color-xterm. This is a color-xterm + problem! color-xterm ver. 6.1 beta 3 and later work properly. +- In zsh, "gvim&" changes the terminal settings. This is a zsh problem. + (Jennings) +- Problem with HPterm under X: old contents of window is lost (Cosentino). +- Amiga: The ":cq" command does not always abort the Manx compiler. Why? +- Linux: A file with protection r--rw-rw- is seen readonly for others. The + access() function in GNU libc is probably wrong. +- When doing a CTRL-Z and typing a command for the shell, while Vim is busy + (e.g. writing a file), the command for the shell is sometimes eaten by Vim, + because the terminal mode is changed from RAW to CBREAK. +- An old version of GNU tgoto can't handle the terminfo code for "AF". The + "%p1" is interpreted as "%p" and "1", causing color not to be working. + Fix: Change the "%p1" in the "AF" and "AB" terminfo entries to "%p". + (Benzinger). +- When running an external command from the GUI, typeahead is going to that + program, not to Vim. It looks like the shell eats the characters, Vim + can't get back what the external command didn't use. +- Win32 GUI: Error code from external command not returned in shell_error. + It appears that cmd.exe and command.com don't return an error code. +- Win32 GUI: The Toolbar is a bit too high when the flat style is being + used. We don't have control over the height of the Toolbar. +- Win32: All files created on the day of switching from winter to summer + time cause "changed since editing started" messages. It goes away when + the file is written again the next day, or the timezone is adjusted. + DJGPP version is OK. (Zaimi) Looks like a problem with the Win32 library. + Rebooting doesn't help. Time stamps look OK in directory. (Penn) + Is this on FAT (stores wall clock time) or NTFS (stores UTS)? +- Win32, MS-Windows XP: $HOME uses the wrong drive when the user profiles + are not on the boot disk. This is caused by a wrong value of $HOMEDRIVE. + This is a bug in XP, see MSKB article 818134. +- Win32, MS-Windows: expanding plugin/**/*.vim also picks up + dir/ctags.vim,v. This is because the short file name is something like + "ctags~1.vim" and that matches the pattern. +- SunOS 5.5.1 with Motif: The file open dialog does not have a horizontal + scroll bar for the "files" selection. This is a problem in the Motif + libraries, get a patch from Sun. +- Solaris 2.6 with GTK and Perl: gvim crashes when started. Problem with X + input method called from GDK code. Without Perl it doesn't crash. +- VMS: Vimdiff doesn't work with the VMS diff, because the output looks + different. This makes test 47 fail. Install a Unix-compatible diff. +- GTK with Gnome: Produces an error message when starting up: + Gdk-WARNING **: locale not supported by C library + This is caused by the gnome library gnome_init() setting $LC_CTYPE to + "en_US". Not all systems support this locale name, thus causing the + error. Hopefully a newer version of GTK/Gnome fixes this problem. +- GTK 2: With this mapping the hit-enter prompt is _sometimes_ below the + screen, at other times there is a grey area below the command line: + :nmap <F11> :if &guioptions=~'m' \| set guioptions-=m \| else \| set guioptions+=m \| endif<cr> +- GTK: When pasting a selection from Vim to xclipboard gvim crashes with a + ABRT signal. Probably an error in the file gdkselection.c, the assert + always fails when XmbTextListToTextProperty() fails. (Tom Allard) +- GTK 2: gives an assertion error for every non-builtin icon in the toolbar. + This is a GTK 2.4.x bug, fixed in GTK 2.4.2. (Thomas de Grenier de Latour) +- When using an xterm that supports the termresponse feature, and the 't_Co' + termcap option was wrong when Vim started, it will be corrected when the + termresponse is received. Since the number of colors changes, the + highlighting needs to be initialized again. This may cause colors defined + in the vimrc file to be lost. +- On Windows NT 4.0 the number of files passed to Vim with drag&drop and + "Edit with Vim" is limited. The maximum command line length is 255 chars. + +--------------------- extensions and improvements ---------------------- + *extensions-improvements* + +Most interesting new features to be added when all bugs have been fixed: +- Using ":exe edit fname" has escaping problems. Use ":edit ++(fname)". + Thus use "++=" to give arguments as expressions, comma-separated as if + calling a function. + With options: ":edit ++(['!', '++enc=abc'], ['+/pat'], fname)". + Alternative: Make a function for Ex commands: cmd_edit(). +- Add COLUMN NUMBERS to ":" commands ":line1,line2[col1,col2]cmd". Block + can be selected with CTRL-V. Allow '$' (end of line) for col2. + (issue #3292) +- ECLIPSE plugin. Problem is: the interface is very complicated. Need to + implement part in Java and then connect to Vim. Some hints from Alexandru + Roman, 2004 Dec 15. Should then also work with Oracle Jdeveloper, see JSR + 198 standard http://www.jcp.org/en/jsr/detail?id=198. + Eclim does it: http://eclim.sourceforge.net/ (Eric Van Dewoestine) + Plugin that uses a terminal emulator: http://vimplugin.sf.net + And another one: http://www.satokar.com/viplugin/index.php +- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is. + Especially when using the scrollbar. Typing a cursor-movement command + scrolls back to where the cursor is. +- Scroll commands by screen line. g CTRL-E and g CTRL-Y ? Requires the + first line to be able to start halfway. +8 Add a command to jump to a certain kind of tag. Allow the user to specify + values for the optional fields. E.g., ":tag size type=m". + Also allow specifying the file and command, so that the result of + taglist() can be used. +- X11: Make it possible to run Vim inside a window of another program. + This can be done with XReparentWindow(). But how exactly? + + +Documentation: +8 List of Vim runtime directories. dotvim.txt from Charles Campbell, 2007 + Feb 20. +8 The GUI help should explain the Find and Find/Replace dialogs. Add a link + to it from ":promptrepl" and ":promptfind". +8 List of options should mention whether environment variables are expanded + or not. +8 Extend usr_27.txt a bit. (Adam Seyfarth) +9 Make the Reference Manual more precise. For each command mention: + - change to cursor position and curswant + - if it can be undone (u/CTRL-R) and redone (.) + - how it works for folded lines + - how it works with multibyte characters +8 Spread the windows commands over the other files. For example, ":stag" + should be with ":tag". Cross-link with tags to avoid too much double + text. +8 Add tags for all features, e.g. "gui_running". +7 MS-Windows: When a wrong command is typed with an ALT key, give a hint to + look at the help for 'winaltkeys'. +7 Add a help.vim plugin that maps <Tab> to jump to the next tag in || and + <C-Tab> (and <S-Tab>) to the previous tag. + Patch by Balazs Kezes, 2007 Dec 30. Remark from A. Politz. +- Check text editor compendium for vi and Vim remarks. + + +Help: +- First try using the ":help" argument literally, before using it as a + pattern. And then match it as part of a tag. +- When a help item has multiple matches make it possible to use ":tn" to go + to the other matches. +- Support a way to view (and edit) .info files. +- Implement a "sticky" help window, some help text lines that are always + displayed in a window with fixed height. (Guckes) Use "~/.vimhelp" file, + user can edit it to insert favorite commands, new account can contain a + default contents. +- Make 'winminheight' a local option, so that the user can set a minimal + height for the help window (and other windows). +- ":help :s^I" should expand to ":help :substitute". +- Make the help key (<F1>) context sensitive? +- Learn mode: show short help while typing commands. + + +User Friendlier: +8 Windows install with install.exe: Use .exe instead of .bat files for + links, so that command line arguments are passed on unmodified? (Walter + Briscoe) +8 Windows install: Be able to associate Vim with a selection of file types? +8 Windows uninstall: Have uninstal.c delete the vimfiles directories that + dosinst.c creates. List the contents of the directory (recursively) if + the user asks for it. Requires an implementation of "rm -rf". +8 Remember the name of the vimrc file that was used (~/.vimrc, $VIM/_vimrc, + $HOME/_vimrc, etc.) and add "edit vimrc" to the File menu. +- Add a way to save local settings and mappings into a new plugin file. + ":mkplugin <file>"? +- Add mappings local to a window: ":map <window> ..." #9339 +9 Add buffer-local menu. Should offer a choice between removing the menu or + disabling it. Be careful that tear-offs don't disappear (keep one empty + item?). + Alternative: use BufEnter and BufLeave autocommands. +8 make a vimtutor script for Amiga and other systems. +7 When Vim detects a file is being edited elsewhere and it's a gvim session + of the same user it should offer a "Raise" button, so that the other gvim + window can be displayed. (Eduard) +8 Support saving and restoring session for X windows? It should work to do + ":mksession" and use "-S fname" for the restart command. The + gui_x11_wm_protocol_handler() already takes care of the rest. + global_event_filter() for GTK. + + +Tab pages: +9 GUI implementation for the tab pages line for other systems. +7 GUI: Control over the appearance of the text in the labels (bold, color, + font, etc.) +8 Make GUI menu in tab pages line configurable. Like the popup menu. +8 balloons for the tab page labels that are shortened to show the full path. +7 :tabdup duplicate the tab with all its windows. +7 Option to put tab line at the left or right? Need an option to specify + its width. It's like a separate window with ":tabs" output. +8 Add local options for each tab page? E.g., 'diffopt' could differ between + tab pages. +7 Add local highlighting for each tab page? + + +Spell checking: +- Support more regions? Caolan McNamara argues it's needed for es_XX. + https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=219777 +- Unicode defines another quote character: 0x2019. Use it as an equivalent + of a single quote, thus use it as a word character like a quote and match + with words, replacing the curly quote with a single quote. +- Could filter é things for HTML before doing spell checking. + Similarly for TeX. +- The Hungarian spell file uses four extra characters in the FOL/UPP/LOW + items than other spell files with the ISO-8859-2 encoding, that causes + problem when changing 'spelllang'. There is no obvious way to fix this. +- Considering Hunspell 1.1.4: + What does MAXNGRAMSUGS do? + Is COMPLEXPREFIXES necessary when we have flags for affixes? +- There is no Finnish spell checking file. For openoffice Voikko is now + used, which is based on Malaga: http://home.arcor.de/bjoern-beutel/malaga/ + (Teemu Likonen) +8 ":mkspell" still takes much too long in Hungarian dictionary from + hunspell. Only solution appears to be to postpone secondary suffixes. +8 Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG. + WFP_COMPPERMIT and WFP_COMPFORBID +8 implement use of <compoptions> in .spl file: + implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP + items and check if the result is a valid word. + implement CHECKCOMPOUNDDUP + implement CHECKCOMPOUNDTRIPLE + Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case. + How is it supposed to work? +- Add a command the repeats ]s and z=, showing the misspelled word in its + context. Thus to spell-check a whole file. +- suggestion for "KG" to "kg" when it's keepcase. +- For flags on affixes: Use a "AFFCOMPSET" flag; means the compound flags of + the word are not used. +- Support breakpoint character ? 0xb7 and ignore it? Makes it possible to + use same wordlist for hyphenation. +- Compound word is accepted if nr of words is <= COMPOUNDWORDMAX OR nr of + syllables <= COMPOUNDSYLMAX. Specify using AND in the affix file? +- NEEDCOMPOUND also used for affix? Or is this called ONLYINCOMPOUND now? + Or is ONLYINCOMPOUND only for inside a compound, not at start or end? +- Do we need a flag for the rule that when compounding is done the following + word doesn't have a capital after a word character, even for Onecap words? +- New hunspell home page: http://hunspell.sourceforge.net/ + - Version 1.1.0 is out now, look into that. + - Lots of code depends on LANG, that isn't right. Enable each mechanism + in the affix file separately. + - Example with compounding dash is bad, gets in the way of setting + COMPOUNDMIN and COMPOUNDWORDMAX to a reasonable value. + - PSEUDOROOT == NEEDAFFIX + - COMPOUNDROOT -> COMPOUNDED? For a word that already is a compound word + Or use COMPOUNDED2, COMPOUNDED3, etc. +- CIRCUMFIX: when a word uses a prefix marked with the CIRCUMFIX flag, then + the word must also have a suffix marked with the CIRCUMFIX flag. It's a + bit primitive, since only one flag is used, which doesn't allow matching + specific prefixes with suffixes. + Alternative: + PSFX {flag} {pchop} {padd} {pcond} {schop} {sadd}[/flags] {scond} + We might not need this at all, you can use the NEEDAFFIX flag and the + affix which is required. +- When a suffix has more than one syllable, it may count as a word for + COMPOUNDWORDMAX. +- Add flags to count extra syllables in a word. SYLLABLEADD1 SYLLABLEADD2, + etc.? Or make it possible to specify the syllable count of a word + directly, e.g., after another slash: /abc/3 +- MORPHO item in affix file: ignore TAB and morphological field after + word/flags and affix. +- Implement multiple flags for compound words and CMP item? + Await comments from other spell checking authors. +- Also see tklspell: http://tkltrans.sourceforge.net/ +8 Charles Campbell asks for method to add "contained" groups to existing + syntax items (to add @Spell). + Add ":syntax contains {pattern} add=@Spell" command? A bit like ":syn + cluster" but change the contains list directly for matching syntax items. +- References: MySpell library (in OpenOffice.org). + http://spellchecker.mozdev.org/source.html + http://whiteboard.openoffice.org/source/browse/whiteboard/lingucomponent/source/spellcheck/myspell/ + author: Kevin Hendricks <kevin.hendricks@sympatico.ca> +8 It is currently not possible to mark "can not" as rare, because "can" and + "not" are good words. Find a way to let "rare" overrule "good"? +8 Make "en-rare" spell file? Ask Charles Campbell. +8 The English dictionaries for different regions are not consistent in their + use of words with a dash. +7 Insert mode completion mechanism that uses the spell word lists. +8 Add hl groups to 'spelllang'? + :set spelllang=en_us,en-rare/SpellRare,en-math/SpellMath + More complicated: Regions with different languages? E.g., comments + in English, strings in German (po file). + + +Diff mode: +9 When making small changes, e.g. deleting a character, update the diff. + Possibly without running diff. +8 Also show difference with the file when editing started? Should show what + can be undone. (Tom Popovich) + +Folding: + (commands still available: zI zJ zK zp zP zq zQ zV zy zY; + secondary: zB zS zT zZ, z=) +- Patch to make closed folds line up. (Charles Campbell, 2014 Sep 12) + Remark from Roland Eggner: does it cause crashes? (2014 Dec 12) + Updated patch by Roland Eggner, Dec 16 + Updated patch from Charles, 2016 Jul 2 +- Patch to make fold updates much faster. (Christian Brabandt, 2012 Dec) +- Patch to have the fold and sign column and at the last line of the buffer. + (Marco Hinz, 2014 Sep 25) + Alternate suggestion: let all columns continue, also the number column. +- Patch to add FoldedLineNr highlighting: different highlighting for the + line number of a closed fold. (eXerigumo Clanjor, 2013 Jul 15) +- Patch to use 'foldnestmax' also for "marker" foldmethod. (Arnaud Lacombe, + 2011 Jan 7) +- 'foldcolumn' in modeline applied to wrong window when using a session. + (Teemu Likonen, March 19) +- With foldmethod=syntax and nofoldenable comment highlighting isn't + removed. (Marcin Szewczyk, 2017 Apr 26) +- The ":move" command does not honor closed folds. (Ryan Lue, #2351) +- When completion inserts the first match, it may trigger the line to be + folded. Disable updating folds while completion is active? (Peter Odding, + 2010 Jun 9) +- When 'foldmethod' is "indent", adding an empty line below a fold and then + indented text, creates a new fold instead of joining it with the previous + one. (Evan Laforge, 2009 Oct 17) +- Add ":nofold". Range will apply without expanding to closed fold. +8 Vertical folds: looks like vertically split windows, but the cursor moves + through the vertical separator, separator moves when scrolling. +8 Add "z/" and "z?" for searching in not folded text only. Or use a regexp + item, so that it can be used in any pattern. +8 When a closed fold is displayed open because of 'foldminlines', the + behavior of commands is still like the fold is closed. How to make the + user aware of this? +8 Add an option 'foldskip' with values like 'foldopen' that specifies which + commands skip over a closed fold. +8 "H" and "L" count buffer lines instead of window lines. (Servatius Brandt) +8 Add a way to add fold-plugins. Johannes Zellner has one for VB. +7 When using manual folding, the undo command should also restore folds. +- Allow completely hiding a closed fold. E.g., by setting 'foldtext' to an + empty string. Require showing a character in 'foldcolumn' to avoid the + missing line goes unnoticed. + How to implement this? +- When pressing the down arrow of a scrollbar, a closed fold doesn't scroll + until after a long time. How to make scrolling with closed folds + smoother? +- When creating a session, also store folds for buffers in the buffer list, + using the wininfo in wi_folds. +- When currently editing the first file in the argument list the session + file can contain: + args version.c main.c + edit version.c + Can editing version.c twice be avoided? +- 'foldmethod' "textobject": fold on sections and paragraph text objects. +- "zuf": undo change in manual fold. "zUf" redo change in manual fold. How + to implement this? +- "zJ" command: add the line or fold below the fold in the fold under the + cursor. +- 'foldmethod' "syntax": "fold=3" argument: set fold level for a region or + match. +- Apply a new foldlevel to a range of lines. (Steve Litt) + +Multi-byte characters: +- When editing a file with both utf-8 and latin1 text Vim always falls back + to latin1. Add a command to convert the latin1 characters to utf-8? + :unmix utf-8,latin1 filename + Would only work when 'encoding' is utf-8. +9 When the tail byte of a double-byte character is illegal (e.g., a CR), the + display is messed up (Yasuhiro Matsumoto). Should check for illegal + double-byte characters and display them differently (display each single + byte). +9 'fenc' in modeline problem: add option to reload the file when 'fenc' is + set to a different value in a modeline? Option can be default on. Could + it be done with an autocommand? +8 Add an item in 'fileencodings' to check the first lines of a file for + the encoding. See Python PEP: http://www.python.org/peps/pep-0263.html. + To avoid getting a wrong encoding only accept something Emacs-like: + "-*- coding: enc-na_me.foo -*-" and "-*- coding= enc-na_me.foo -*-" + Match with "-\*-\s*coding[:=]\s*\([::word::-_.]\+\)\s*-\*-" and use first + item. +8 Add an item in 'fileencodings' to check the first line of an XML file for + the encoding. <?xml version="1.0" encoding="UTF-8"?> Or "charset=UTF-8"? + For HTML look for "charset=utf-8". +8 When a file was converted from 'fileencoding' to 'encoding', a tag search + should also do this on the search pattern. (Andrzej M. Ostruszka) +8 When filtering changes the encoding 'fileencoding' may not work. E.g., + when using xxd and 'fileencoding' is "utf-16". Add an option to set a + different fileencoding for filter output? +7 When converting a file fails, mention which byte could not be converted, + so that the user can fix the problem. +8 Add configure option to be able to disable using the iconv library. (Udo + Schweigert) +9 'aleph' should be set to 1488 for Unicode. (Zvi Har'El) +8 Should add test for using various commands with multibyte characters. +8 'infercase' doesn't work with multibyte characters. +8 toupper() function doesn't handle byte count changes. +7 Searching and composing characters: + When searching, should order of composing characters be ignored? + Add a special item to match with a composing character, so that composing + characters can be manipulated. +8 Should implement 'delcombine' for command line editing. +8 Detect overlong UTF-8 sequences and handle them like illegal bytes. +8 ":s/x/\u\1/" doesn't work, making uppercase isn't done for multibyte + characters. +8 UTF-8: "r" in Visual mode doesn't take composing characters. +8 UTF-8: When there is a precomposed character in the font, use it instead + of a character and a composing character. See xterm for an example. +7 When a character can't be displayed, display its digraph instead. + 'display' option to specify this. +7 Use ideas for nl_langinfo() from Markus Kuhn in enc_default(): + (www.cl.cam.ac.uk/~mgk25/ucs/langinfo.c) +- GTK and Win32: Allow selecting fonts for 'guifontset' with the + fontselector somehow. +- GTK and Win32: make it possible to set the font for the menu to make it + possible to have 'encoding' different from the current locale. +- dbcs_class() only works for Japanese and Korean. Implement this for + other encodings. The "euc-jp" and "euc-kr" choices might be wrong. +- Find some way to automatically select the right GUI font or fontset, + depending on the default value of 'encoding'. + Irrelevant in the GTK+ 2 GUI so long as UTF-8 is used. + For Windows, the charset_pairs[] table could be used. But how do we know + if a font exists? +- Do keyboard conversion from 'termencoding' to 'encoding' with + convert_input() for Mac GUI. +- Add mnemonics from RFC1345 longer than two characters. + Support CTRL-K _{mnemonic}_ +- Make 'breakat' accept multibyte characters. Problem: can't use a lookup + table anymore (breakat_flags[]). + Simplistic solution: when 'formatoptions' contains "m" also break a line + at a multibyte character >= 0x100. + Making breakat support multibyte characters (Yasuhiro Matsumoto, #6598) + Scroll doesn't work correctly, why? +- Add the possibility to enter mappings which are used whenever normal text + could be entered. E.g., for "f" command. But not in Normal mode. Sort + of opposite of 'langmap'. Use ":amap" command? +- When breaking a line, take properties of multibyte characters into + account. The "linebreak" program from Bruno Haible can do it: + ftp://ftp.ilog.fr/pub/Users/haible/gnu/linebreak-0.1.tar.gz + But it's very complicated... +- Problem with 'langmap' being used on the rhs of a mapping. (Nikolai + Weibull, 2008 May 14). + Possibly related problem: Alexey Muranov, 2015 Apr 2 + + +Printing: +7 Implement "undercurl" for printing. +- Add "page width" to wrap long lines. +- Win32: use a font dialog for setting 'printfont'. Can reuse the code for + the 'guifont' dialog, put the common code in a separate function. +- Add the file timestamp to the page header (with an option). (George + Reilly) +- Win32: when 'printfont' is empty use 'guifont'. +- Unix: Use some dialog box to do the obvious settings (paper size, printer + name, portrait/landscape, etc). +- PostScript: Only works for text that can be converted to an 8-bit + character set. How to support Unicode fully? +- Allow specifying the paper size, instead of using a standard size. Same + units as for the margins. +- Support right-to-left text? +8 Make the foreground color darkening function preserve the hue of the + color. + + +Syntax highlighting: +8 Make ":syn off" use 'runtimepath' instead of $VIMRUNTIME. (Gary Johnson) + Should do the same for ":syn on" and ":syn manual". +8 Support "containedin" argument for ":syn include", so that the defined + cluster can be added to existing syntax items. +8 C syntax: Don't highlight {} as errors inside () when used like this: + "({ something })", often used in GCC code. +7 Add a "startgroup" to a region. Used like "nextgroup" inside the region, + preferred item at the start of the region. (Charles Campbell) +8 When editing a new file without a name and giving it a name (by writing + it) and 'filetype' is not set, detect the filetype. Avoid doing it for + ":wq file". +7 For "nextgroup" we have skipwhite, skipnl and skipempty. It would be + really nice to be able to skip with a pattern. Or skip with a syntax + group. (Nikolai Weibull, 2007 Feb 27) +8 Make conversion to HTML faster (Write it in C or pre-compile the script). +9 There is still a redraw bug somewhere. Probably because a cached state is + used in a wrong way. I can't reproduce it... +7 Be able to change only the background highlighting. Useful for Diff* and + Search highlighting. +7 When 'number' is set highlight the number of the current line. + Must be enabled with an option, because it slows down display updating. +8 Allow the user to add items to the Syntax menu sorted, without having to + change this for each release. +8 Add a "matchcontains" for regions: items contained in the start or end + pattern, but not in the body. +8 Add a "keepend-contained" argument: Don't change the end of an item this + one is contained in. Like "keepend" but specified on the contained item, + instead of the containing item. +8 cpp.vim: In C++ it's allowed to use {} inside (). +8 Some syntax files set 'iskeyword', they should use "syn iskeyword". + Also need a separate 'iskeyword' for the command line, e.g., in a help + window ":e /asdf/asdf/" CTRL-W works different. +8 Add specific syntax item to match with parens/braces that don't have a + "%" match. :syntax nomatch cMatchError (,{,[,),},] [contained] +8 Highlight the text between two matching parens (e.g., with a grey + background) when on one of the parens or in between them. + Option for the matchparen plugin? +8 When using a cterm, and no ctermfg or ctermbg are defined, use start/stop + sequences. Add remark in docs that :if 'term' == "term-name" should be + used. +8 Add @spell cluster to String and Comment groups for many languages. Will + allow spell checking. (Fleiner) +8 When listing syntax items, try to sort the keywords alphabetically. And + re-insert the [] if possible. +8 Make it possible to use color of text for Visual highlight group (like for + the Cursor). +8 It would be useful to make the highlight group name an expression. Then + when there is a match, the expression would be evaluated to find out what + highlight group to use. Could be used to check if the shell used in a + password file appears in /etc/shells. (Nikolai Weibull) + syn match =s:checkShell(v:match) contained 'pattern' +8 Make it possible to only highlight a sub-expression of a match. Like + using "\1" in a ":s" command. +8 Support for deleting syntax items: + :syn keyword cTodo remove this + :syn match cTodo remove "pattern" + :syn region cString remove start="this" end="that" +8 Add possibility to sync on something else, when the syncing in one way + doesn't find match. For HTML: When no {script} is found, try looking for + a '<'. (Fleiner) +7 Replace the synchronizing method with a state machine specification? + Should be able to start at any line in the file, search forwards or + backwards, and use the result of matching a pattern. +7 Use parsing like awk, so that e.g., a ( without a matching ) can be + detected. +8 Make it possible to use "inverted" highlighting, invert the original + character. For Visual mode. (xterm-selection already does this). +8 Highlight non-printable characters with "SpecialChar", linked to + "Special". Display them with the digraph characters, if possible. +8 Highlight the clipboard-selection with a highlight group. +8 Be able to reset highlighting to its original (default) values. +7 Be able to write current highlighting to a file as commands, similar to + ":mkvimrc". +8 Improve c.vim: + - Add check for unterminated strings, with a variable to switch it on: + "c_strict_ansi". + - Detect unbalanced "#endif". Requires looking back a long way... +8 Add an option to restrict the updating of syntax highlighting to the + current line while in Insert mode. +8 When guessing value of 'background', the syntax file has already been + loaded (from the .gvimrc). After changing 'background', load it again? +8 Add ":syn resync" command, to re-parse the whole file until the current + display position. +8 Should support "me" offset for a region start pattern. To be used to + allow searching for the end pattern inside the match of the end pattern. + Example: syn region pikeXX start="([^{]" end=")" should work on "()". +8 When using a regexp for "contains=", should delay matching with it until + redrawing happens. Set a flag when a group is added, check this flag when + highlighting starts. +7 It's possible for an item to be transparent, so that the colors of an item + lower on the stack is used. Also do this with highlighting, so that the + user can set transparent highlighting? E.g. a number in a C comment would + get the color of a comment, a number in an assignment Normal. (Nikolai + Weibull) +7 Add "semitrans": Add highlighting. E.g., make the text bold, but keep the + colors. And add colors, so that Green+Red becomes Yellow. + E.g. for this html: + <B> bold text <I> italic+bold text </B> italic text </I> +7 CTRL-] checks the highlight group for finding out what the tag is. +7 Add an explanation how a list of words can be used to highlight misspelled + words. +7 Should find a better way to parse the :syntax and :highlight commands. + Use tables or lists that can be shared by parsing for execution and + completion? +8 Add ColorSchemePost autocommand event, so that scripts can set up their + highlighting. (Salman Halim) +7 Add a few sets of colors (e.g. Borland Turbo C one). With a menu to + select one of the sets. +8 Add offsets to sub-matches: "\(a*\) *"he=e1-1 + 'e' is end of match 'e1' is end of sub-match 1, 's2' is start of submatch + 2, etc. +8 In Insert mode, when there are typeahead characters, postpone the + highlighting (for "." command). +8 Syncing on comments isn't 100% correct when / / lines mix with / * and * /. + For example: What about a line that starts with / / and contains * /? +8 Ignore / * and * / inside strings, when syncing. +7 Build a few more syntax files from the file "/usr/share/misc/vgrindefs": + ISP, LDL, Icon, ratfor. And check "nedit/source/highlight.c". +6 Add possibility to have background color continue until the right edge of + the window. Useful for comment blocks and function headings. (Rogall) +- Make it possible to add "contains" items for all items in a group. Useful + when extending an already existing syntax file. +- Add line-continuation pattern for non-syncing items too? +- Add possibility to highlight the whole line, including the right margin + (for comment blocks). +- Add 'hlmatch' option: List of flags: + 'c': highlight match for character under the cursor. + 'b': highlight the previous (, and its match. + 'a': highlight all text from the previous ( until its match. + Also for {}, <>, etc.? + 'e': highlight all braces without a match (slow?) + OR: add an argument "cursor" to the syntax command, which means that the + region/match/keyword is only highlighted when the cursor is on it. + (Campbell) + Or do it like Elvis: define text objects and how to highlight them around + the cursor. (Iain Truskett) +7 Make it possible to use all words in the tags files as Keyword. + Can also be done with a script (but it's slow). +7 Make it possible to call a ":" command when a match is found. Should + allow for adding keywords from the text (e.g. variables that are set). + And allows for sections with different highlighting. +7 Add highlight group for commandline: "Commandline". Make sure it + highlights the command line while typing a command, and any output from + messages. And external commands? +8 Make a version that works like less, but with highlighting: read stdin for + text, exit at end of file, don't allow editing, etc. moreim? lessim? +7 SpecialKey highlighting overrules syntax highlighting. Can't give an + unprintable char another color. Would be useful for ^M at end of line. +- Syntax highlight for a region does not work with a "nextgroup" if the + start match is empty. #8449 +- The :syntax cchar value can only be a single character. It would be + useful to support combining characters. (Charles Campbell) Also #4687 +- Syntax highlighting slow (hangs) in SASS file. (Niek Bosch, 2013 Aug 21) +- Several syntax file match "^\s*" which may get underlined if that's in the + highlight group. Add a "\zs" after it? +- patch to add "combine" flag to syntax commands. (so8res, 2012 Dec 6) + Patch to add "combine" to :syntax, combines highlight attributes. (Nate + Soares, 2012 Dec 3) +- Syntax update problem in one buffer opened in two windows, bottom window + is not correctly updated. (Paul Harris, 2012 Feb 27) +- Syntax region with 'concealends' and a 'cchar' value, 'conceallevel' set + to 2, only one of the two ends gets the cchar displayed. (Brett Stahlman, + 2010 Aug 21, Ben Fritz, 2010 Sep 14) +- Using "syn sync breaklines=2" works for when text is changed, but not when + scrolling or redrawing. Should start search for syntax patterns above the + first drawn line. (#8103) +- Syntax priority problem. (Charles Campbell, 2011 Sep 15) +- Syntax highlighting wrong for transparent region. (Doug Kearns, 2007 Feb + 26) +- Bug in using a transparent syntax region. (Hanlen in vim-dev maillist, + 2007 Jul 31) +- Syntax HL error caused by "containedin". (Peter Hodge, 2006 Oct 6) +- Open two windows on the same C code, delete a ")" in one window, resulting + in highlighted "{" in that window, not in the other. +- When using "nextgroup" and the group has an empty match, there is no + search at that position for another match. (Lukas Mai, 2008 April 11) + + +Vim script language: +8 Make the filename and line number available to script functions, so that + they can give useful debugging info. The whole call stack would be ideal. + At least use this for error messages. +7 Execute a function with standard option values. No need to save and + restore option values. Especially useful for new options. Problem: how + to avoid a performance penalty (esp. for string options)? +- range for ":exec", pass it on to the executed command. (Webb) +7 ":include" command: just like ":source" but doesn't start a new scriptID? + Will be tricky for the list of script names. +8 Have a look at VSEL. Would it be useful to include? (Bigham) +8 Have a prefix for a function to make it unique. When using packages it + can be the plugin name. + Perhaps also have a way to remove everything that the package added? + including autocommands. +7 Pre-parse or compile Vim scripts into a bytecode, like :def functions. + Possibilities: + 1. Put the bytecode with the original script, with an ":if + has('bytecode-1234')" around it, so that it's only used with a Vim that + supports the version. Update the code with a command, can be used in + an autocommand. + 2. Use a ".vic" file (like Python use .pyc). Create it when writing a + .vim file. Problem: distribution, non-writable directory, etc. + 3. Use a cache directory for each user. Disadvantage: cache lookup may + cost more time than bytecode wins. +7 Add argument to winwidth() to subtract the space taken by 'foldcolumn', + signs and/or 'number'. +6 Add ++ and -- operators? They only work on variables (lvals), how to + implement this? +8 Add functions: + has(":command") Check if ":command" works. compare function + with "ex_ni". E.g. for ":simalt". + escape() Add argument to specify what to escape with. + modestack() Instead of just the current mode return the + stack of Insert / CTRL-O / :normal things. + realname() Get user name (first, last, full) + user_fullname() patch by Nikolai Weibull, Nov + 3 2002 + Only add this when also implemented for + non-Unix systems, otherwise a shell cmd could + be used. + get_user_name() gets login name. + menuprop({name}, {idx}, {what}) + Get menu property of menu {name} item {idx}. + menuprop("", 1, "name") returns "File". + menuprop("File", 1, "n") returns "nmenu + File.Open..." argument. + Patch by Ilya Sher, 2004 Apr 22 + Return a list of menus and/or a dictionary + with properties instead. + mapname({idx}, mode) return the name of the idx'th mapping. + Patch by Ilya Sher, 2004 Mar 4. + Return a list instead. + char2hex() convert char string to hex string. + crypt() encrypt string + decrypt() decrypt string + base64enc() base 64 encoding + base64dec() base 64 decoding + attributes() return file protection flags "drwxrwxrwx" + filecopy(from, to) Copy a file + shorten(fname) shorten a file name, like home_replace() + perl(cmd) call Perl and return string + inputrl() like input() but right-to-left + typed() return the characters typed and consumed (to + find out what happened) + virtualmode() add argument to obtain whether "$" was used in + Visual block mode. + getacp() Win32: get codepage (Glenn Maynard) + libcall() Allow more than one argument. + libcallext() Like libcall(), but using a callback function + to allow the library to execute a command or + evaluate an expression. +7 Make bufname("'0") return the buffer name from mark '0. How to get the + column and line number? col("'0") currently returns zero. +8 argc() returns 0 when using "vim -t tag". How to detect that no file was + specified in any way? To be able to jump to the last edited file. +8 Pass the command line arguments to Vim scripts in some way. As v:args + List? Or extra parameter to argv()? +8 Add command arguments with three dashes, passed on to Vim scripts. +6 User functions: Functions local to buffer "b:func()"? +8 For Strings add ":let var[{expr}] = {expr}". When past the end of "var" + just ignore. +8 The "= register should be writable, if followed by the name of a variable, + option or environment variable. +8 ":let &option" should list the value of the option. +8 ":let Func().foo = value" should work, also when "foo" doesn't exist. + Also: ":let Func()[foo] = value" should work. Same for a List. +7 Add synIDlist(), making the whole list of syntax items on the syntax stack + available as a List. +8 Add autocommand-event for when a variable is changed: + :au VarChanged {varname} {commands} +8 Add "has("gui_capable")", to check if the GUI can be started. +8 Add possibility to use variables like registers: characterwise (default), + linewise (when ending in '\n'), blockwise (when ending in '\001'). reg0, + rega, reg%, etc. Add functions linewise({expr}), blockwise({expr}) and + charwise({expr}). +7 Make it possible to do any command on a string variable (make a buffer + with one line, containing the string). Maybe add an (invisible) scratch + buffer for this? + result = scratch(string, command) + result = apply(string, command) + result = execute(string, command) + "command" would use <> notation. + Does scratch buffer have a number? Or re-use same number? +7 Add function to generate unique number (date in milliseconds). + + +Robustness: +6 Add file locking. Lock a file when starting to edit it with flock() or + fcntl(). This patch has advisory file locking while reading/writing + the file for Vim 5.4: ~/vim/patches/kahn_file_locking . + The patch is incomplete (needs support for more systems, autoconf). + Andy doesn't have time to work on it. + Disadvantage: Need to find ways to gracefully handle failure to obtain a + lock. When to release a lock: When buffer is unloaded? + + +Performance: +7 For string variables up to 3 bytes don't allocate memory, use v_list + itself as a character array. Use VAR_SSTRING (short string). +7 Add 'lazysize' option: Above this size Vim doesn't load everything before + starting to edit a file. Things like 'fileencodings' only work up to this + size, modelines only work at the top. Useful for large log files where + you only want to look at the first few pages. Use zero to disable it. +8 move_lines() copies every line into allocated memory, making reloading a + buffer a lot slower than re-editing the file. Can the memline be locked + so that we don't need to make a copy? Or avoid invoking ml_updatechunk(), + that is taking a lot of time. (Ralf Wildenhues, 2008 Jul 7) + With a patch, but does it work? +8 Turn b_syn_ic and b_syn_containedin into b_syn_flags. +9 Loading menu.vim still takes quite a bit of time. How to make it faster? +8 in_id_list() takes much time for syntax highlighting. Cache the result? +7 setpcmark() shifts the jumplist, this takes quite a bit of time when + jumping around. Instead use an index for the start? +8 When displaying a space with only foreground highlighting, it's the same + as a space without attributes. Avoid displaying spaces for the "~" lines + when starting up in a color terminal. +8 Avoid alloc() for scratch buffer use, esp. in syntax.c. It's very slow on + Win16. +8 Profiling shows that in_id_list() is used very often for C code. Can this + function be improved? +8 For an existing file, the page size of the swap file is always the + default, instead of using the block size of the device, because the swap + file is created only after setting the block size in mf_open(). How can + this be improved? +8 Set default for 'ttyscroll' to half a screen height? Should speed up + MS-DOS version. (Negri) +7 C syntax highlighting gets a lot slower after ":set foldmethod=syntax". + (Charles Campbell) Inserting a "{" is very slow. (dman) +7 HTML syntax highlighting is slow for long lines. Try displaying + http://www.theregister.co.uk/content/4/22908.html. (Andre Pang) +7 Check how performance of loading the wordlist can be improved (adding a + lot of abbreviations). +7 Compile Ex commands to byte codes. Store byte codes in a vim script file + at the end, after "compiled:. Make it look like a single comment line + for old Vim versions. Insert first line "Vim script compiled <timestamp>. + Only used compiled code when timestamp matches the file stat. + Add command to compile a vim script and add it to the file in-place. + Split Ex command executing into a parsing and executing phase. + Use compiled code for functions, while loops, etc. +8 When defining autocommands (e.g., from $VIMRUNTIME/filetype.vim), need to + compare each pattern with all existing patterns. Use a hash code to avoid + using strcmp() too often? +7 Include turbo_loader patches, speeding up reading a file? + Speed up reading a file by reading it into a fixed-size buffer, creating + the list of indexes in another buffer, and then copying the result into a + memfile block with two copies. Then read the next block into another + fixed-size buffer, create the second list of indexes and copy text from + the two blocks to the memfile block. +7 do_cmdline(): Avoid that the command line is copied to allocated memory + and freed again later all the time. For while loops, and for when called + with an argument that can be messed with. + Generic solution: Make a struct that contains a pointer and a flag that + indicates if the pointer should be freed when replaced. +7 Check that the file size is not more than "sizeof(long)". +- Further improve finding mappings in maphash[] in vgetorpeek() +8 Syntax highlighting is slow when deleting lines. Try in + $VIMRUNTIME/filetype.vim. +- "out of memory" after deleting (1,$d) and changing (:%s/^/> /) a lot of + lines (27000) a few times. Memory fragmentation? +- Have a look at how pdksh does memory allocation (alloc.c). (Dalecki) +- Do profiling on: + - :g/pat/normal cmd + - deleting 10Mbyte worth of lines (netscape binary) + - "[i" and "[d" (Yegappan Lakshmanan) + - ":g/^/m0" on a 450Kbyte file. And the "u". + - highlighting "~/vim/test/longline.tex", "~/vim/test/scwoop.tcl" and + "~/vim/test/lockup.pl". + - loading a syntax file to highlight all words not from a dictionary. + - editing a Vim script with syntax highlighting on (loading vim.vim). +7 Screen updating can be further improved by only redrawing lines that were + changed (and lines after them, when syntax highlighting was used, and it + changed). + - On each change, remember start and end of the change. + - When inserting/deleting lines, remember begin, end, and line count. +- Use macros/duarte/capicua for profiling. Nvi 1.71 is the fastest! +- When using a file with one long line (1Mbyte), then do "$hhhh", is still + very slow. Avoid calling getvcol() for each "h"? +- Executing a register, e.g. "10000@@" is slow, because ins_typebuf has to + move the previous commands forward each time. Pass count from + normal_cmd() down to do_execreg(). +- Avoid calls to plines() for cursor line, use w_cline_height. +- After ":set nowrap" remove superfluous redraw with wrong hor. offset if + cursor is right of the screen. +8 Make CTRL-C on Unix generate a signal, avoid using select() to check for a + CTRL-C (it's slow). + + +Code size: +8 GUI: When NO_CONSOLE is defined, more code can be excluded. +- Put getline() and cookie in a struct, so only one argument has to be + passed to do_cmdline() and other functions. +8 Make a GUI-only version for Unix? +8 In buf_write _() isn't needed when setting errmsg, do it once when using + it. +7 When compiling with a GUI-only version, the code for cterm colors can be + left out. +8 When compiled with a GUI-only version, the termcap entries for terminals + can be removed. +8 Can the check for libelf in configure.ac be removed? + + +Messages: +8 When using ":q" in a changed file, the error says to "add !". Add the + command so that beginners understand it: "use :q!". +8 For 'verbose' level 12 prints commands from source'ed files. How to skip + lines that aren't executed? Perhaps move the echoing to do_cmdline()? +8 Use 'report' for ":bdel"? (Krishna) To avoid these messages when using a + script. +- Delete message after new command has been entered and have waited for key. + Perhaps after ten seconds? +- Make message history available in "msg" variables: msg1, msg2, .. msg9. +9 Check handling of overwriting of messages and delays: + Very wrong: errors while redrawing cause endless loop. + When switching to another file and screen scrolls because of the long + message and return must be typed, don't scroll the screen back before + redrawing. +8 When address range is wrong you only get "Invalid range". Be a bit more + specific: Negative, beyond last line, reverse range? Include the text. +8 Make it possible to ignore errors for a moment ('errorignore'?). Another + option to switch off giving error messages ('errorquiet'?). Also an option + not to give any messages ('quiet')? Or ":quiet on", ":quiet off". + Careful: For a severe error (out of memory), and when the user starts + typing, error messages must be switched back on. + Also a flag to ignore error messages for shell commands (for mappings). +- Option to set time for emsg() sleep. Interrupt sleep when key is typed? + Sleep before second message? +8 In Ex silent mode or when reading commands from a file, what exactly is + not printed and what is? Check ":print", ":set all", ":args", ":vers", + etc. At least there should be no prompt. (Smulders) And don't clear the + screen when reading commands from stdin. (Kendall) + --> Make a difference between informative messages, prompts, etc. and + error messages, printing text, etc. +8 Window should be redrawn when resizing at the hit-enter prompt. + Also at the ":tselect" prompt. Find a generic solution for redrawing when + a prompt is present (with a callback function?). + + +Screen updating: +- screen_line(): + - insert/delete character stuff. + - improve delete rest of line (spaces at end of line). +- When moving or resizing window, try to avoid a complete redraw (esp. when + dragging the status line with the mouse). +- When 'lazyredraw' set, don't echo :ex commands? Need a flag to redraw when + waiting for a character. +8 Add a ":refresh [winnr]" command, to force updating a window. Useful from + an event handler where ":normal" can't be used. Also useful when + 'lazyredraw' is set in a mapping. + +Scrolling: +8 Add "zy" command: scroll horizontally to put the cursor in the middle. +6 Add option to set the overlap for CTRL-F and CTRL-B. (Garhi) +- extend 'scrollbind' option: 'scrollopt' words "search", "relative", etc.. + Also 'e'xecute some commands (search, vertical movements) in all bound + windows. +7 Add 'scrollbind' feature to make the offset of one window with the next + one equal to the window height. When editing one file in both windows it + looks like each window displays a page of the buffer. +- Allow scrolling by dragging with the mouse (grab a character and move it + up/down). Like the "hand" in Acrobat reader. Use Alt-LeftMouse for this? + (Goldfarb) +- Add command to execute some commands (search, vertical movements) in all + bound windows. +- Add 'search' option to 'scrollopt' to allow 'scrollbind' windows to + be bound by regexp searches +- Add "z>" and "z<": scroll sideways one screenful. (Campbell) +- Add option to set the number of lines when not to scroll, instead of the + fixed number used now (for terminals that scroll slow with a large number + of lines but not with a single line). + + +Autoconf: +8 Should use acconfig.h to define prototypes that are used by autoheader. +8 Some compilers don't give an error for "-OPT:Olimit" but a warning. (Webb) + Add a check for the warning, so that "Olimit" can be added automatically? +- Autoconf: Use @datadir@ for the system independent files. Make sure the + system dependent and system independent files are separated. (Leitner). +- Add autoconf check for waitpid()/wait4(). +- Remove fcntl() from autoconf, all systems have it? +- Set default for 'dictionary', add search for dictionary to autoconf. + + +Perl interface: +8 Rename typemap file to something else? +7 Make buffers accessed as Perl arrays. (Clark) +7 Make it possible to compile with non-ANSI C? +6 Tcl/Tk has the "load" command: load a shared library (.so or .dll). + + +Shared libraries: +8 libcall() can keep the library around instead of always calling dlclose(). + (Jason Felice, 2018 Mar 20) +6 Add support for loading shared libraries, and calling functions in it. + :libload internal-name libname + :libunload internal-name + :liblist + :libcall internal-name function(arg1, arg2, ...) + :libcall function(arg1, arg2, ...) + libcall() can have only one integer or String argument at the moment. +6 Have a look on how Perl handles loading dynamic libraries. + + +Tags: +9 With ":set tags=./tags,../tags" and a tag appears in both tags files it is + added twice. Requires figuring out the actual file name for each found + match. Remove tag_fname from the match and combine it with the fname in + the match (without expanding or other things that take time). When + 'tagrelative' is off tag_fname isn't needed at all. +8 For 'tags' wildcard in the file name is not supported, only in the path. + This is due to it using |file-searching|. Suboptimal solution would be to + make the filename or the whole option use |wildcards| globing, better + would be to merge the 2 kinds of globing. originally (Erik Falor, 2008 + April 18), updated (Ian Kelling, 2008 July 4) +7 Can CTRL-] (jump to tag) include a following "." and "->" to restrict the + number of possible matches? Check tags file for an item that has members. + (Flemming Madsen) +8 Scope arguments for ":tag", e.g.: ":tag class:cPage open", like Elvis. +8 When output of ":tselect" is long, getting the more-prompt, should be able + to type the tag number directly. +7 Add the possibility to use the "-t {tag}" argument multiple times. Open a + window for each tag. +7 Make output of ":tselect" a bit nicer. Use highlighting? +7 Highlight the "tag 1 of >2" message. New highlight group, or same as "hit + bottom" search message. +7 When using ":tag" at the top of the tag stack, should add another entry, + so CTRL-T can bring you back to where you are now AND to where you were + before the previous ":tag" command. (Webb) +- When doing "[^I" or "[^D" add position to tag stack. +- Add command to put current position to tag stack: ":tpush". +- Add functions to save and restore the tag stack? Or a command to switch + to another tag stack? So that you can do something else and come back to + what you were working on. +7 When using CTRL-] on someClass::someMethod, separate class from method and + use ":ta class:someClass someMethod". + Include C++ tags changes (Bertin). Change "class::func" tag into "func" + with "class=class"? Docs in oldmail/bertin/in.xxx. +7 Add ":tagargs", to set values for fields: + :tagargs class:someclass file:version.c + :tagargs clear + These are then the default values (changes the order of priority in tag + matching). +7 Support for "gtags" and "global"? With ":rtag" command? + There is an example for how to do this in Nvi. + Or do it like Elvis: 'tagprg' and 'tagprgonce' options. (Yamaguchi) + The Elvis method is far more flexible, do it that way. +7 Support "col:99" extra field, to position the cursor in that column. With + a flag in 'cpoptions' to switch it off again. +7 Better support for jumping to where a function or variable is used. Use + the id-utils, with a connection to "gid" (Emacs can do it too). Add + ":idselect", which uses an "ID" database (made by "mkid") like "tselect". + + +Win32 GUI: +8 Make debug mode work while starting up (vim -D). Open console window for + the message and input? +8 When using "Edit with Vim" for one file it changes directory, when several + files are selected and using "Edit with single Vim" the directory isn't + changed. At least change directory when the path is the same for all + files. Perhaps just use the path of the first file or use the longest + common part of the path. +8 Add font argument to set the lfCharSet. (Bobcik) +8 Somehow automatically detect the system language and set $LANG, so that + gettext and menus work. +8 Could keep console open to run multiple commands, to avoid the need to hit + return in every console. + Also: Look at how Emacs does run external commands: + http://www.cs.washington.edu/homes/voelker/ntemacs.html. +8 Need a separate PopUp menu for modeless selection. Need two new commands: + Copy selection to clipboard, Paste selection (as typed text). +8 Support copy/paste for other file formats. At least HTML, perhaps RTF. + Add "copy special" and "paste special" commands? +7 Use different default colors, to match the current Windows color scheme. + Sys_WindowText, Sys_Window, etc. (Lionel Schaffhauser) +7 Use <C-Tab> to cycle through open windows (e.g., the find dialog). +7 <Esc> should close a dialog. +7 Keep the console for external commands open. Don't wait for a key to be + hit. Re-open it when the user has closed it anyway. Or use a prepended + command: ":nowait {cmd}", or ":quiet", which executes {cmd} without any + prompts. +7 Should be able to set an option so that when you double click a file that + is associated with Vim, you can either get a new instance of Vim, or have + the file added into an already running Vim. +7 The "-P" argument only works for the current codepage. Use wide + functions to find the window title. + + +GUI: +7 Implement ":popup" for other systems than Windows. +8 Implement ":tearoff" for other systems than Win32 GUI. +6 Implement ":untearoff": hide a torn-off menu. +8 When using the scrollbar to scroll, don't move the cursor position. When + moving the cursor: scroll to the cursor position. +9 Make <S-Insert> paste from the clipboard by default. (Kunze) +7 Menu local to a buffer, like mappings. Or local to a filetype? +8 In Buffers menu, add a choice whether selecting a buffer opens it in the + current window, splits the window or uses ":hide". +8 Dragging the mouse pointer outside of a Vim Window should make the text + scroll. Return a value from gui_send_mouse_event() to the machine + specific code to indicate the time in which the event should be repeated. +8 Make it possible to ignore a mouse click when it's used to give Vim (gvim) + window focus. Also when a mouse click is used to bring a window to front. +8 Make the split into system independent code and system specific code more + explicit. There are too many #ifdefs in gui.c. + If possible, separate the Vim code completely from the GUI code, to allow + running them in separate processes. +7 X11: Support cursorColor resource and "-cr" argument. +8 X11 (and others): CTRL-; is not different from ';'. Set the modifier mask + to include CTRL for keys where CTRL produces the same ASCII code. +7 Add some code to handle proportional fonts on more systems? Need to draw + each character separately (like xterm). Also for when a double-width font + is not exactly double-width. (Maeda) +8 Should take font from xterm where gvim was started (if no other default). +8 Selecting font names in X11 is difficult, make a script or something to + select one. +8 Visual highlighting should keep the same font (bold, italic, etc.). +8 Add flag to 'guioptions' to not put anything in the clipboard at all? +8 Should support a way to use keys that we don't recognize yet. Add a + command that adds entries to special_keys somehow. How do we make this + portable (X11, Win32, ..)? +7 Add a flag to 'guioptions' that tells not to remove inactive menu items. + For systems where greying-out or removing menu items is very slow. The + menu items would remain visibly normally, but not do anything. +7 Add ":minimize" and ":maximize", which iconize the window and back. + Useful when using gvim to run a script (e.g. 2html.vim). +7 X11: Is it possible to free allocated colors, so that other programs can + use them again? Otherwise, allow disabling allocating the default colors. + Or allocate an own colormap (check UAE). With an option to use it. For + the commandline, "-install" is mostly used for X11 programs. +7 Should support multi-column menus. +- Should add option for where to put the "Help" menu: like Motif at the far + right, or with the other menus (but still at the right). +- Add menu item to "Keep Insert mode". +8 ":mkgvimrc" command, that includes menus. +6 Big change: Move GUI to separate program "vimgui", to make startup of vim a + lot faster, but still be able to do "vim -g" or ":gui". +7 More explicit mouse button binding instead of 'mousemodel'? +7 Add option to set the position of the window on the screen. 'windowpos', + which has a value of "123,456": <x>,<y>. + Or add a command, like ":winsize"? +7 Add toolbar for more GUIs. +8 Make it possible to use "amenu icon=BuiltIn##", so that the toolbar item + name can be chosen free. +7 Make it possible to put the toolbar on top, left, right and/or bottom of + the window? Allows for softkey-like use. +6 Separate the part of Vim that does the editing from the part that runs the + GUI. Communicate through a pseudo-tty. Vim starts up, creates a + pty that is connected to the terminal. When the GUI starts, the pty is + reconnected to the GUI process. When the GUI stops, it is connected to + the terminal again. Also use the pty for external processes, it looks + like a vt100 terminal to them. Vim uses extra commands to communicate GUI + things. +7 Motif: For a confirm() dialog <Enter> should be ignored when no default + button selected, <Esc> should close the dialog. +7 When using a pseudo-tty Vim should behave like some terminal (vt52 looks + simple enough). Terminal codes to/from shell should be translated. +- Would it be useful to be able to quit the GUI and go back to the terminal + where it was started from? +7 Support "-visual <type>" command line argument. + + +Autocommands: +9 Add WinNewPre - before creating a new window. #10635 +9 When triggering WinNew provide the window ID somehow. #10633 +9 Rework the code from FEAT_OSFILETYPE for autocmd-osfiletypes to use + 'filetype'. Only for when the current buffer is known. +- Put autocommand event names in a hashtable for faster lookup? +8 When the SwapExists event is triggered, provide information about the + swap file, e.g., whether the process is running, file was modified, etc. + Must be possible to check the situation that it's probably OK to delete + the swap file. (Marc Merlin) +8 When all the patterns for an event are "*" there is no need to expand + buffer names to a full path. This can be slow for NFS. +7 For autocommand events that trigger multiple times per buffer (e.g., + CursorHold), go through the list once and cache the result for a specific + buffer. Invalidate the cache when adding/deleting autocommands or + changing the buffer name. +7 Add TagJump event: do something after jumping to a tag. +8 Add "TagJumpFile" autocommand: When jumping to another file for a tag. + Can be used to open "main.c.gz" when "main.c" isn't found. +8 Use another option than 'updatetime' for the CursorHold event. The two + things are unrelated for the user (but the implementation is more + difficult). +7 Add autocommand event for when a buffer cannot be abandoned. So that the + user can define the action taking (autowrite, dialog, fail) based on the + kind of file. (Yakov Lerner) Or is BufLeave sufficient? +8 Autocommand for when modified files have been found, when getting input + focus again (e.g., FileChangedFocus). + Check when: getting focus, jumping to another buffer, ... +8 Autocommands should not change registers. And marks? And the jumplist? + And anything else? Add a command to save and restore these things. +8 Add autocommands, user functions and user commands to ":mkvimrc". +6 Add KeymapChanged event, so that the effects of a different keymap can be + handled (e.g., other font) (Ron Aaron) +7 When trying to open a directory, trigger an OpenDirectory event. +7 Add file type in front of file pattern: <d> for directory, <l> for link, + <x> for executable, etc. With commas to separate alternatives. The + autocommand is only executed when both the file type AND the file pattern + match. (Leonard) +5 Add option that specifies extensions which are to be discarded from the + file name. E.g. 'ausuffix', with ".gz,.orig". Such that file.c.gz will + trigger the "*.c" autocommands. (Belabas) +7 Add something to break the autocommands for the current event, and for + what follows. Useful for a "BufWritePre" that wants to avoid writing the + file. +8 When editing "tt.gz", which is in DOS format, 'fileformat' stays at + "unix", thus writing the file changes it. Somehow detect that the read + command used dos fileformat. Same for 'fileencoding'. +- Add events to autocommands: + Error - When an error happens + VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled + when exiting isn't a good idea. + CursorHoldC - CursorHold while command-line editing + WinMoved - when windows have been moved around, e.g, ":wincmd J" + SearchPost - After doing a search command (e.g. to do "M") + ShutDown - when the system is about to shut down + InsertCharPost - user typed a character in Insert mode, after inserting + the char. + BufModified - When a buffer becomes modified, or unmodified (for + putting a [+] in the window title or checking out the + file from CVS). + BufFirstChange - When making a change, when 'modified' is set. Can be + used to do a :preserve for remote files. + BufChange - after a change was made. Set some variables to indicate + the position and number of inserted/deleted lines, so + that marks can be updated. HierAssist has patch to add + BufChangePre, BufChangePost and RevertBuf. (Shah) + ViewChanged - triggered when the text scrolls and when the window size + changes. + QuickfixList - when any entry in the current list changes or another + list is selected + QuickfixPosition - when selecting another entry in the current quickfix + list + +- Write the file now and then ('autosave'): + *'autosave'* *'as'* *'noautosave'* *'noas'* + 'autosave' 'as' number (default 0) + Automatically write the current buffer to file N seconds after the + last change has been made and when |'modified'| is still set. + Default: 0 = do not autosave the buffer. + Alternative: have 'autosave' use 'updatetime' and 'updatecount' but make + them save the file itself besides the swapfile. +- Buffer autocommands are a bit inconsistent. Add a separate set of + autocommands for the buffer lifecycle: + BufIsCreated (after buffer ID exists) + BufIsLoaded (after buffer ID has content) + BufIsUnloaded (after buffer ID no longer has) + BufIsWiped (after buffer ID was wiped) + BufIsRenamed (after buffer ID gets another name) + The buffer list and windows are locked, no changes possible + + +Omni completion: +- Add a flag to 'complete' to be able to do omni completion with CTRL-N (and + mix it with other kinds of completion). +- Ideas from the Vim 7 BOF at SANE: + - For interpreted languages, use the interpreter to obtain information. + Should work for Java (Eclipse does this), Python, Tcl, etc. + Richard Emberson mentioned working on an interface to Java. + - Check Readline for its completion interface. +- Ideas from others: + http://www.wholetomato.com/ + http://www.vim.org/scripts/script.php?script_id=747 + http://sourceforge.net/projects/insenvim + or http://insenvim.sourceforge.net + Java, XML, HTML, C++, JSP, SQL, C# + MS-Windows only, lots of dependencies (e.g. Perl, Internet + explorer), uses .dll shared libraries. + For C++ uses $INCLUDE environment var. + Uses Perl for C++. + Uses ctags to find the info: + ctags -f $allTagsFile --fields=+aiKmnsSz --language-force=C++ --C++-kinds=+cefgmnpsut-dlux -u $files + www.vim.org script 1213 (Java Development Environment) (Fuchuan Wang) + IComplete: http://www.vim.org/scripts/script.php?script_id=1265 + and http://stud4.tuwien.ac.at/~e0125672/icomplete/ + http://cedet.sourceforge.net/intellisense.shtml (for Emacs) + Ivan Villanueva has something for Java. + Emacs: http://www.xref-tech.com/xrefactory/more_c_completion.html + Completion in .NET framework SharpDevelop: http://www.icsharpcode.net +- Pre-expand abbreviations, show which abbrevs would match? + + +Insert mode completion/expansion: +- Is it possible to keep the complete menu open when calling complete()? + (Prabir Shrestha, 2017 May 19, #1713) +- When 'completeopt' has "noselect" does not insert a newline. + (Lifepillar, 2017 Apr 23, #1653) +- Can 'completeopt' be made buffer-local? (#5487) +- When complete() first argument is before where insert started and + 'backspace' is Vi compatible, the completion fails. + (Hirohito Higashi, 2015 Feb 19) +- The CompleteDone autocommand needs some info passed to it: + - The word that was selected (empty if abandoned complete) + - Type of completion: tag, omnifunc, user func. +- When a:base in 'completefunc' starts with a number it's passed as a + number, not a string. (Sean Ma) Need to add flag to call_func_retlist() + to force a string value. +- When editing the text and pressing CTRL-N again goes back to originally + completed text, edited text is gone. (Peng Yu, 2008 Jul 24) + Suggestion by Ben Schmidt, 2008 Aug 6. +- GUI implementation of the popup menu. +7 When searching in other files the name flash by, too fast to read. Only + display a name every second or so, like with ":vimgrep". +7 When expanding file names with an environment variable, add the match with + the unexpanded var. So $HOME/tm expands to "/home/guy/tmp" and + "$HOME/tmp" +8 When there is no word before the cursor but something like "sys." complete + with "sys.". Works well for C and similar languages. +9 ^X^L completion doesn't repeat correctly. It uses the first match with + the last added line, instead of continuing where the last match ended. + (Webb) +8 Add option to set different behavior for Insert mode completion: + - ignore/match case + - different characters than 'iskeyword' +8 Add option 'isexpand', containing characters when doing expansion (so that + "." and "\" can be included, without changing 'iskeyword'). (Goldfarb) + Also: 'istagword': characters used for CTRL-]. + When 'isexpand' or 'istagword' are empty, use 'iskeyword'. + Alternative: Use a pattern so that start and end of a keyword can be + defined, only allow dash in the middle, etc. +8 Add a command to undo the completion, go back to the original text. +7 Completion of an abbreviation: Can leave letters out, like what Instant + text does: www.textware.com +8 Use the class information in the tags file to do context-sensitive + completion. After "foo." complete all member functions/variables of + "foo". Need to search backwards for the class definition of foo. + Should work for C++ and Java. + Even more context would be nice: "import java.^N" -> "io", "lang", etc. +7 When expanding $HOME/dir with ^X^F keep the $HOME (with an option?). +7 Add CTRL-X command in Insert mode like CTRL-X CTRL-N, that completes WORDS + instead of words. +8 Add CTRL-X CTRL-R: complete words from register contents. +8 Add completion of previously inserted texts (like what CTRL-A does). + Requires remembering a number of insertions. +8 Add 'f' flag to 'complete': Expand file names. + Also apply 'complete' to whole line completion. +- Add a flag to 'complete' to only scan local header files, not system + header files. (Andri Moell) +- Make it possible to search include files in several places. Use the + 'path' option? Can this be done with the dictionary completion (use + wildcards in the file name)? +- Make CTRL-X CTRL-K do a binary search in the dictionary (if it's sorted). +- Speed up CTRL-X CTRL-K dictionary searching (don't use a regexp?). +- Set a mark at the position where the match was found (file mark, could + be in another file). +- Add CTRL-A command in CTRL-X mode: show all matches. +- Make CTRL-X CTRL-L use the 'complete' option? +- Add command in CTRL-X mode to add following words to the completed string + (e.g. to complete "Pointer->element" with CTRL-X CTRL-P CTRL-W CTRL-W) +- CTRL-X CTRL-F: Use 'path' to find completions. +- CTRL-X CTRL-F: Option to use forward slashes on MS-Windows? +- CTRL-X CTRL-F: Don't replace "$VIM" with the actual value. (Kelly) +- Allow listing all matches in some way (and picking one from the list). + + +Command line editing: +7 Add commands (keys) to delete from the cursor to the end of the command + line. +8 Custom completion of user commands can't use the standard completion + functions. Add a hook to invoke a user function that returns the type of + completion to be done: "file", "tag", "custom", etc. +- Add flags to 'whichwrap' for command line editing (cursor right at end of + lines wraps to start of line). +- Make editing the command line work like Insert mode in a single-line view + on a buffer that contains the command line history. But this has many + disadvantages, only implement it when these can be solved. Elvis has run + into these, see remarks from Steve (~/Mail/oldmail/kirkendall/in.00012). + - Going back in history and editing a line there would change the history. + Would still need to keep a copy of the history elsewhere. Like the + cmdwin does now already. + - Use CTRL-O to execute one Normal mode command. How to switch to normal + mode for more commands? <Esc> should cancel the command line. CTRL-T? + - To allow "/" and "= need to recursively call getcmdline(), overwrite the + cmdline. But then we are editing a command-line again. How to avoid + that the user gets confused by the stack of command lines? + - Use edit() for normal cmdline editing? Would have to integrate + getcmdline() into edit(). Need to solve conflicts between Insert mode + and Command-line mode commands. Make it work like Korn shell and tcsh. + Problems: + - Insert: completion with 'wildchar' + - Insert: use cmdline abbreviations + - Insert: CTRL-D deletes indent instead of listing matches + - Normal: no CTRL-W commands + - Normal: no ":" commands? + - Normal: allow Visual mode only within one line. + - where to show insert/normal mode message? Change highlighting of + character in first column? + - Implementation ideas: + - Set "curwin" and "curbuf" to the command line window and buffer. + - curwin->w_topline is always equal to curwin->w_cursor.lnum. + - never set 'number', no folding, etc. No status line. + - sync undo after entering a command line? + - use NV_NOCL flag for commands that are not allowed in Command-line + Mode. + + +Command line completion: +- Feature request: Complete members of a dictionary. + (Luc Hermitte, 2017 Jan 4, #1350) +- Completion of ":e" is ":earlier", should be ":edit". Complete to the + matching command instead of doing this alphabetically. (Mikel Jorgensen) +8 Change expand_interactively into a flag that is passed as an argument. +8 With command line completion after '%' and '#', expand current/alternate + file name, so it can be edited. Also with modifiers, such as "%:h". +8 When completing command names, either sort them on the long name, or list + them with the optional part inside []. +8 Add an option to ignore case when doing interactive completion. So that + ":e file<Tab>" also lists "Filelist" (sorted after matching case matches). +7 Completion of ":map x ": fill in the current mapping, so that it can be + edited. (Sven Guckes) +- For 'wildmenu': Simplify "../bar" when possible. +- When using <Up> in wildmenu mode for a submenu, should go back to the + current menu, not the first one. E.g., ":emenu File.Save<Up>". +8 When using backtick expansion, the external command may write a greeting + message. Add an option or commands to remove lines that match a regexp? +7 When listing matches of files, display the common path separately from the + file names, if this makes the listing shorter. (Webb) +- Add command line completion for ":ilist" and friends, show matching + identifiers (Webb). +8 Add command line completion for "old value" of a command. ":args <key>" + would result in the current list of arguments, which you can then edit. +7 Add command line completion with CTRL-X, just like Insert mode completion. + Useful for ":s/word/xx/". +- Add command to go back to the text as it was before completion started. + Also to be used for <Up> in the command line. +- Add 'wildlongest' option: Key to use to find longest common match for + command line completion (default CTRL-L), like 'wildchar'. (Cregut) + Also: when there are several matches, show them line a CTRL-D. +- With 'wildmode' set to "longest:full,full" and pressing Tab once the first + entry in wildmenu is highlighted, that shouldn't happen. (Yuki Watanabe, + 2011 Feb 12) +- After using <Tab> for command line completion after ":ta blah" and getting + E33 (no tags file), further editing the command to e.g., ":echo 'blah'", + the command is not executed. Fix by Ian Kelling? +- Command line completion: Scanning for tags doesn't check for typed key now + and then? Hangs for about 5 seconds. Appears to be caused by finding + include files with "foo/**" in 'path'. (Kalisiak, 2006 July 15) + Additional info: When using the |wildcards| ** globing, vim hangs + indefinitely on lots of directories. The |file-searching| globing, like in + ":set path=/**" does not hang as often as with globing with |wildcards|, + like in ":1find /**/file". This is for files that unix "find" can find + very quickly. Merging the 2 kinds of globing might make this an easier + fix. (Ian Kelling, 2008 July 4) +- Command line completion when 'cmdheight' is maximum and 'wildmenu' is set, + only one buffer line displayed, causes display errors. +- Completing with 'wildmenu' and using <Up> and <Down> to move through + directory tree stops unexpectedly when using ":cd " and entering a + directory that doesn't contain other directories. +8 Command line completion: buffers "foo.txt" and "../b/foo.txt", completing + ":buf foo<Tab>" doesn't find the second one. (George V. Reilly) +8 Add more command line completion for :syntax. +8 Add more command line completion for :highlight. +- Wildmenu not deleted: "gvim -u NONE", ":set nocp wildmenu cmdheight=3 + laststatus=2", CTRL-D CTRL-H CTRL-H CTRL-H. (A.Politz, 2008 April 1) Works + OK with Vim in an xterm. +- If the variable "g:x#y#z" exists completion after ":echo g:x#" doesn't + work. + + +Command line history: +- Add "KeyWasTyped" flag: It's reset before each command and set when a + character from the keyboard is consumed. Value is used to decide to put a + command line in history or not. Put line in history if it didn't + completely result from one mapping. +- When using ":browse", also put the resulting edit command in the history, + so that it can be repeated. (Demirel) + + +Insert mode: +9 When 'autoindent' is set, hitting <CR> twice, while there is text after + the cursor, doesn't delete the autoindent in the resulting blank line. + (Rich Wales) This is Vi compatible, but it looks like a bug. +8 When using CTRL-O in Insert mode, then executing an insert command + "a" or "i", should we return to Insert mode after <Esc>? (Eggink) + Perhaps it can be allowed a single time, to be able to do + "<C-O>10axyz<Esc>". Nesting this further is confusing. + ":map <F2> 5aabc<Esc>" works only once from Insert mode. +8 When using CTRL-G CTRL-O do like CTRL-\ CTRL-O, but when returning with + the cursor in the same position and the text didn't change continue the + same change, so that "." repeats the whole insert. +7 Use CTRL-G <count> to repeat what follows. Useful for inserting a + character multiple times or repeating CTRL-Y. +- Make 'revins' work in Replace mode. +7 Use 'matchpairs' for 'showmatch': When inserting a character check if it + appears in the rhs of 'matchpairs'. +- In Insert mode (and command line editing?): Allow undo of the last typed + character. This is useful for CTRL-U, CTRL-W, delete and backspace, and + also for characters that wrap to the next line. + Also: be able to undo CTRL-R (insert register). + Possibly use 'backspace'="whole" for a mode where at least a <CR> that + inserts autoindent is undone by a single <BS>. +- Use CTRL-G in Insert mode for an extra range of commands, like "g" in + Normal mode. +- Make 'paste' work without resetting other options, but override their + value. Avoids problems when changing files and modelines or autocommands + are used. +- When typing CTRL-V and a digit higher than 2, only expect two digits. +- Insert binary numbers with CTRL-V b. +- Make it possible to undo <BS>, <C-W> and <C-U>. Bash uses CTRL-Y. + + +'cindent', 'smartindent': +9 Wrapping a variable initialization should have extra indent: + char * veryLongName = + "very long string" + Also check if "cino=+10" is used correctly. +8 Lisp indenting: "\\" confuses the indenter. (Dorai Sitaram, 2006 May 17) +8 Why are continuation lines outside of a {} block not indented? E.g.: + long_type foo = + value; +8 Java: Inside an anonymous class, after an "else" or "try" the indent is + too small. (Vincent Bergbauer) + Problem of using {} inside (), 'cindent' doesn't work then. +8 In C++ it's possible to have {} inside (): (Kirshna) + func( + new String[] { + "asdf", + "asdf" + } + ); +8 In C++ a function isn't recognized inside a namespace: + (Chow Loong Jin) + namespace { + int + func(int arg) { + } + } +6 Add 'cino' flag for this function argument layout: (Spencer Collyer) + func( arg1 + , arg2 + , arg3 + ); +7 Add separate "(0" option into inside/outside a function (Zellner): + func( + int x) // indent like "(4" + { + if (a + && b) // indent like "(0" +9 Using "{" in a comment: (Helmut Stiegler) + if (a) + { + if (b) + { + // { + } + } <-- this is indented incorrect + Problem is that find_start_brace() checks for the matching brace to be in + a comment, but not braces in between. Requires adding a comment check to + findmatchlimit(). +- Make smartindenting configurable. Add 'sioptions', e.g. '#' setting the + indent to 0 should be switched on/off. +7 Support ANSI style function header, with each argument on its own line. +- "[p" and "]p" should use 'cindent' code if it's on (only for the first + line). +- Add option to 'cindent' to set indent for comments outside of {}? +- Make a command to line up a comment after a code line with a previous + comment after a code line. Can 'cindent' do this automatically? +- When 'cindent'ing a '}', showmatch is done before fixing the indent. It + looks better when the indent is fixed before the showmatch. (Webb) +- Add option to make indenting work in comments too (for commented-out + code), unless the line starts with "*". +- Don't use 'cindent' when doing formatting with "gq"? +- When formatting a comment after some text, insert the '*' for the new line + (indent is correct if 'cindent' is set, but '*' doesn't get inserted). +8 When 'comments' has both "s1:/*,mb:*,ex:*/" and "s1:(*,mb:*,ex:*)", the + 'x' flag always uses the first match. Need to continue looking for more + matches of "*" and remember all characters that could end the comment. +- For smartindent: When typing 'else' line it up with matching 'if'. +- 'smartindent': allow patterns in 'cinwords', for e.g. TeX files, where + lines start with "\item". +- Support this style of comments (with an option): (Brown) + /* here is a comment that + is just autoindented, and + nothing else */ +- Add words to 'cinwords' to reduce the indent, e.g., "end" or "fi". +7 Use Tabs for the indent of starting lines, pad with spaces for + continuation lines. Allows changing 'tabstop' without messing up the + indents. + Patch by Lech Lorens, 2010 Mar. Update by James McCoy, 2014 Mar 15. + + +Java: +8 Can have {} constructs inside parens. Include changes from Steve + Odendahl? +8 Recognize "import java.util.Vector" and use $CLASSPATH to find files for + "[i" commands and friends. +- For files found with 'include': handle "*" in included name, for Java. + (Jason) +- How to make a "package java.util" cause all classes in the package to be + searched? Also for "import java.util.*". (Mark Brophy) + + +'comments': +8 When formatting C comments that are after code, the "*" isn't repeated + like it's done when there is no code. And there is no automatic wrapping. + Recognize comments that come after code. Should insert the comment leader + when it's "#" or "//". + Other way around: when a C command starts with "* 4" the "*" is repeated + while it should not. Use syntax HL comment recognition? +7 When using "comments=fg:--", Vim inserts three spaces for a new line. + When hitting a TAB, these spaces could be removed. +7 The 'n'esting flag doesn't do the indenting of the last (rightmost) item. +6 Make strings in 'comments' option a RE, to be able to match more + complicated things. (Phillipps) Use a special flag to indicate that a + regexp is used. +8 Make the 'comments' option with "/* * */" lines only repeat the "*" line + when there is a "/*" before it? Or include this in 'cindent'? + + +Virtual edit: +8 Make the horizontal scrollbar work to move the text further left. +7 Allow specifying it separately for Tabs and beyond end-of-line? + + +Text objects: +8 Add text object for fold, so that it can be yanked when it's open. +8 Add test script for text object commands "aw", "iW", etc. +8 Add text object for part of a CamelHumpedWord and under_scored_word. + (Scott Graham) "ac" and "au"? +8 Add a text object for any kind of quoting, also with multibyte + characters. Option to specify what quotes are recognized (default: all) + use "aq" and "iq". Use 'quotepairs' to define pairs of quotes, like + 'matchpairs'? +8 Add text object for any kind of parens, also multibyte ones. +8 Add a way to make an ":omap" for a user-defined text object. Requires + changing the starting position in oap->start. +8 Add "gp" and "gP" commands: insert text and make sure there is a single + space before it, unless at the start of the line, and after it, unless at + the end of the line or before a ".". +7 Add objects with backwards extension? Use "I" and "A". Thus "2dAs" + deletes the current and previous sentence. (Jens Paulus) +7 Add "g{" and "g}" to move to the first/last character of a paragraph + (instead of the line just before/after a paragraph as with "{" and "}"). +6 Ignore comment leaders for objects. Make "das" work in reply-email. +5 Make it possible to use syntax group matches as a text object. For + example, define a "ccItem" group, then do "da<ccItem>" to delete one. + Or, maybe just define "dai", delete-an-item, to delete the syntax item the + cursor is on. + + +Select mode: +8 In blockwise mode, typed characters are inserted in front of the block, + backspace deletes a column before the block. (Steve Hall) +7 Alt-leftmouse starts block mode selection in MS Word. + See http://vim.wikia.com/wiki/Use_Alt-Mouse_to_select_blockwise. +7 Add Cmdline-select mode. Like Select mode, but used on the command line. + - Change gui_send_mouse_event() to pass on mouse events when 'mouse' + contains 'C' or 'A'. + - Catch mouse events in ex_getln.c. Also shift-cursor, etc., like in + normal_cmd(). + - remember start and end of selection in cmdline_info. + - Typing text replaces the selection. + + +Visual mode: +8 Support using "." in Visual mode. Use the operator applied to the Visual + selection, if possible. +- When dragging the Visual selection with the mouse and 'scrolloff' is zero, + behave like 'scrolloff' is one, so that the text scrolls when the pointer + is in the top line. +- Displaying size of Visual area: use 24-33 column display. + When selecting multiple lines, up to about a screenful, also count the + characters. +8 When using "I" or "A" in Visual block mode, short lines do not get the new + text. Make it possible to add the text to short lines too, with padding + where needed. +7 With a Visual block selected, "2x" deletes a block of double the width, + "3y" yanks a block of triple width, etc. +7 When selecting linewise, using "itext" should insert "text" at the start + of each selected line. +8 What is "R" supposed to do in Visual mode? +8 Make Visual mode local to the buffer. Allow changing to another buffer. + When starting a new Visual selection, remove the Visual selection in any + other buffer. (Ron Aaron) +8 Support dragging the Visual area to drop it somewhere else. (Ron Aaron, + Ben Godfrey) +7 Support dragging the Visual area to drop it in another program, and + receive dropped text from another program. (Ben Godfrey) +7 With blockwise Visual mode and "c", "C", "I", "A", etc., allow the use of + a <CR>. The entered lines are repeated over the Visual area. +7 Filtering a block should only apply to the block, not to the whole lines. + When the number of lines is increased, add lines. When decreased, pad with + spaces or delete? Use ":`<,`>" on the command line. +8 After filtering the Visual area, make "gv" select the filtered text? + Currently "gv" only selects a single line, not useful. +7 Don't move the cursor when scrolling? Needed when the selection should + stay the same. Scroll to the cursor at any movement command. With an + option! +7 In Visual block mode, need to be able to define a corner on a position + that doesn't have text? Also: when using the mouse, be able to select + part of a TAB. Even more: Add a mode where the cursor can be on a screen + position where there is no text. When typing, add spaces to fill the gap. + Other solution: Always use curswant, so that you can move the cursor to + the right column, and then use up/down movements to select the line, + without changing the column. +6 ":left" and ":right" should work in Visual block mode. +7 CTRL-I and CTRL-O should work in Visual mode, but only jump to marks in the + current buffer. +6 In non-Block mode, "I" should insert the same text in front of each line, + before the first non-blank, "gI" in column 1. +6 In non-Block mode, "A" should append the same text after each line. +6 When in blockwise visual selection (CTRL-V), allow cursor to be placed + right of the line. Could also allow cursor to be placed anywhere on a TAB + or other special character. +6 Add commands to move selected text, without deselecting. + + +More advanced repeating commands: +- Add "." command for visual mode: redo last visual command (e.g. ":fmt"). +- Add command to repeat last movement. Including count. +- Add "." command after operator: repeat last command of same operator. E.g. + "c." will repeat last change, also when "x" used since then (Webb). + "y." will repeat last yank. + "c2." will repeat the last but one change? + Also: keep history of Normal mode commands, add command to list the history + and/or pick an older command. +- History stack for . command? Use "g." command. + + +Mappings and Abbreviations: +8 When "0" is mapped (it is a movement command) this mapping should not be + used after typing another number, e.g. "20l". (Charles Campbell) + Is this possible without disabling the mapping of the following command? +8 Should mapping <C-A> and <C-S-A> both work? +7 ":abbr b byte", append "b " to an existing word still expands to "byte". + This is Vi compatible, but can we avoid it anyway? +8 To make a mapping work with a prepended "x to select a register, store the + last _typed_ register name and access it with "&. +8 Add ":amap", like ":amenu". +7 Add a mapping that works always, for remapping the keyboard. +8 Add ":cab!", abbreviations that only apply to Command-line mode and not to + entering search strings. +8 Add a flag to ":abbrev" to eat the character that triggers the + abbreviation. Thus "abb ab xxx" and typing "ab<Space>" inserts "xxx" and + not the <Space>. +8 Give a warning when using CTRL-C in the lhs of a mapping. It will never + (?) work. +7 Add <0x8f> (hex), <0o33> (octal) and <123> (decimal) to <> notation? +7 When someone tries to unmap with a trailing space, and it fails, try + unmapping without the trailing space. Helps for ":unmap xx | unmap yy". +6 Context-sensitive abbreviations: Specify syntax group(s) in which the + abbreviations are to be used. +- Add mappings that take arguments. Could work like the ":s" command. For + example, for a mouse escape sequence: + :mapexp <Esc>{\([0-9]*\),\([0-9]*\); H\1j\2l +- Add optional <Number> argument for mappings: + :map <Number>q ^W^W<Number>G + :map <Number>q<Number>t ^W^W<Number1-1>G<Number2>l + :map q<Char> :s/<Char>/\u\0/g + Or implicit: + :map q <Register>d<Number>$ +- Add command to repeat a whole mapping ("." only repeats the last change in + a mapping). Also: Repeat a whole insert command, including any mappings + that it included. Sort-of automatic recording? +- Include an option (or flag to 'cpoptions') that makes errors in mappings + not flush the rest of the mapping (like nvi does). +- Use context sensitiveness of completion to switch abbreviations and + mappings off for :unab and :unmap. +6 When using mappings in Insert mode, insert characters for incomplete + mappings first, then remove them again when a mapping matches. Avoids + that characters that are the start of some mapping are not shown until you + hit another character. +- Add mappings for replace mode: ":rmap". How do we then enter mappings for + non-replace Insert mode? +- Add separate mappings for Visual-character/block/line mode? +- Add 'mapstop' command, to stop recursive mappings. +- List mappings that have a raw escape sequence both with the name of the key + for that escape sequence (if there is one) and the sequence itself. +- List mappings: Once with special keys listed as <>, once with meta chars as + <M-a>, once with the byte values (octal?). Sort of "spell mapping" command? +- When entering mappings: Add the possibility to enter meta keys like they + are displayed, within <>: <M-a>, <~@> or <|a>. +- Allow multiple arguments to :unmap. +- Command to show keys that are not used and available for mapping + ":freekeys". +- Allow any character except white space in abbreviations lhs (Riehm). + + +Incsearch: +- Wrong scrolling when using incsearch. Patch by Christian Brabandt, 2014 + Dec 4. Is this a good solution? +- Temporarily open folds to show where the search ends up. Restore the + folds when going to another line. + Patch to open folds for 'incsearch'. (Christian Brabandt, 2015 Jan 6) +- Bug with 'incsearch' going to wrong line. (Wolfram Kresse, 2009 Aug 17) + Only with "vim -u NONE". +- When no match is found and the user types more, the screen is redrawn + anyway. Could skip that. Esp. if the line wraps and the text is scrolled + up every time. +- When incsearch used and hitting return, no need to search again in many + cases, saves a lot of time in big files. (Slootman wants to work on this?) + When not using special characters, can continue search from the last match + (or not at all, when there was no match). See oldmail/webb/in.872. +9 incsearch is incorrect for "/that/<Return>/this/;//" (last search pattern + isn't updated). + + +Searching: +9 Should have an option for :vimgrep to find lines without a match. +8 Add "g/" and "gb" to search for a pattern in the Visually selected text? + "g?" is already used for rot13. + The vis.vim script has a ":S" command that does something like this. + Can use "g/" in Normal mode, uses the '< to '> area. + Use "&/" for searching the text in the Visual area? +9 Add "v" offset: "/pat/v": search for pattern and start Visual mode on the + matching text. +8 Add a modifier to interpret a space like "\_s\+" to make it much easier to + search for a phrase. +8 Add a mechanism for recursiveness: "\@(([^()]*\@g[^()]*)\)". \@g stands + for "go recursive here" and \@( \) marks the recursive part. + Perl does it this way: + $paren = qr/ \(( [^()] | (??{ $paren }) )* \) /x; + Here $paren is evaluated when it's encountered. This is like a regexp + inside a regexp. In the above terms it would be: + \@((\([^()]\|\@g\)*)\) +8 Show the progress every second. Could use the code that checks for CTRL-C + to find out how much time has passed. Or use SIGALRM. Where to show the + number? +7 Support for approximate-regexps to find similar words (agrep + http://www.tgries.de/agrep/ tre: http://laurikari.net/tre/index.html). +8 Add an item for a big character range, so that one can search for a + chinese character: \z[234-1234] or \z[XX-YY] or \z[0x23-0x234]. +7 Add an item stack to allow matching (). One side is "push X on + the stack if previous atom matched". Other side is "match with top of + stack, pop it when it matches". Use "\@pX" and "\@m"? + Example: \((\@p).\{-}\@m\)* +7 Add a flag to "/pat/" to discard an error. Useful to continue a mapping + when a search fails. Could be "/pat/E" (e is already used for end offset). +7 Add pattern item to use properties of Unicode characters. In Perl it's + "\p{L}" for a letter. See Regular Expression Pocket Reference. +8 Would it be possible to allow ":23,45/pat/flags" to search for "pat" in + lines 23 to 45? Or does this conflict with Ex range syntax? +8 Allow identical pairs in 'matchpairs'. Restrict the search to the current + line. +7 Allow longer pairs in 'matchpairs'. Use matchit.vim as an + example. +8 Make it possible to define the character that "%" checks for in + #if/#endif. For nmake it's !if/!endif. +- For "%" command: set hierarchy for which things include other things that + should be ignored (like "*/" or "#endif" inside /* */). + Also: use "%" to jump from start to end of syntax region and back. + Alternative: use matchit.vim +8 A pattern like "\([^a]\+\)\+" takes an awful long time. Recognize that + the recursive "\+" is meaningless and optimize for it. + This one is also very slow on "/* some comment */": "^\/\*\(.*[^/]\)*$". +7 Recognize "[a-z]", "[0-9]", etc. and replace them with the faster "\l" and + "\d". +7 Add a way to specify characters in <C-M> or <Key> form. Could be + \%<C-M>. +8 Add an argument after ":s/pat/str/" for a range of matches. For example, + ":s/pat/str/#3-4" to replace only the third and fourth "pat" in a line. +8 When 'iskeyword' is changed the matches from 'hlsearch' may change. (Benji + Fisher) redraw if some options are set while 'hlsearch' is set? +8 Add an option not to use 'hlsearch' highlighting for ":s" and ":g" + commands. (Kahn) It would work like ":noh" is used after that command. + Also: An extra flag to do this once, and a flag to keep the existing + search pattern. +- Make 'hlsearch' a local/global option, so that it can be disabled in some + of the windows. +- Add \%h{group-name}; to search for a specific highlight group. + Add \%s{syntax-group}; to search for a specific syntax group. +- Support Perl regexp. Use PCRE (Perl Compatible RE) package. (Shade) + Or translate the pattern to a Vim one. + Don't switch on with an option for typed commands/mappings/functions, it's + too confusing. Use "\@@" in the pattern, to avoid incompatibilities. +8 Add a way to access the last substitute text, what is used for ":s//~/". + Can't use the ~ register, it's already used for drag & drop. +- Remember flags for backreferenced items, so that "*" can be used after it. + Check with "\(\S\)\1\{3}". (Hemmerling) +8 Flags that apply to the whole pattern. + This works for all places where a regexp is used. + Add "\q" to not store this pattern as the last search pattern? +- Add flags to search command (also for ":s"?): + i ignore case + I use case + p use Perl regexp syntax (or POSIX?) + v use Vi regexp syntax + f forget pattern, don't keep it for "n" command + F remember pattern, keep it for "n" command + Perl uses these too: + e evaluate the right side as an expression (Perl only) + m multiple line expression (we don't need it) + o compile only once (Perl only) + s single line expression (we don't need it) + x extended regexp (we don't need it) + When used after ":g" command, backslash needed to avoid confusion with the + following command. + Add 'searchflags' for default flags (replaces 'gdefault'). +- Add command to display the last used substitute pattern and last used + pattern. (Margo) Maybe make it accessible through a register (like "/ + for search string)? +7 Use T-search algorithm, to speed up searching for strings without special + characters. See C't article, August 1997. +- Add 'fuzzycase' option, so that case doesn't matter, and '-' and '_' are + equivalent (for Unix filenames). +- Add 'v' flag to search command: enter Visual mode, with the matching text + as Visual area. (variation on idea from Bertin) +- Searching: "/this//that/" should find "that" after "this". +- Add global search commands: Instead of wrapping at the end of the buffer, + they continue in another buffer. Use flag after search pattern: + a for the next file in the argument list + f for file in the buffer list + w for file edited in a window. + e.g. "/pat/f". Then "n" and "N" work through files too. "f" flag also for + ":s/pat/foo/f"??? Then when 'autowrite' and 'hidden' are both not set, ask + before saving files: "Save modified buffer "/path/file"? (Yes/Hide/No + Save-all/hide-All/Quit) ". +- ":s/pat/foo/3": find 3rd match of "pat", like sed. (Thomas Koehler) +7 When searching with 'n' give message when getting back where the search + first started. Remember start of search in '/ mark. +7 Add option that scrolls screen to put cursor in middle of screen after + search always/when off-screen/never. And after a ":tag" command. Maybe + specify how many lines below the screen causes a redraw with the cursor in + the middle (default would be half a screen, zero means always). +6 Support multiple search buffers, so macros can be made without side + effects. +7 From xvim: Allow a newline in search patterns (also for :s, can delete + newline). Add BOW, EOW, NEWL, NLORANY, NLBUTANY, magic 'n' and 'r', etc. + [not in xvim:] Add option to switch on matches crossing ONE line boundary. +7 Add ":iselect", a combination of ":ilist" and ":tselect". (Aaron) (Zellner) + Also ":dselect". +- Searching for \%'> does not find anything when using line Visual + selection. Probably because it's using MAXCOL. #8238 +- Regexp to search for duplicate lines does not work correctly: + /\(^.*\n\)\1 (Chris Morgan, #6239) +- Problem with upwards search on Windows (works OK on Linux). (Brett + Stahlman, 2014 Jun 8) +- Searching mixed with Visual mode doesn't redraw properly. (James Vega, + 2010 Nov 22) +- Searching for composing char works, but not when inside []. (ZyX, Benjamin + R. Haskell, 2010 Aug 24) +- When 'smartcase' is set and using CTRL-L to add to the search pattern it + may result in no matches. Convert chars to lower case? (Erik Wognsen, + 2009 Apr 16) + + +Undo: +9 ":gundo" command: global undo. Undoes changes spread over multiple files + in the order they were made. Also ":gredo". Both with a count. Useful + when tests fail after making changes and you forgot in which files. +9 After undo/redo, in the message show whether the buffer is modified or + not. +8 Search for pattern in undo tree, showing when it happened and the text + state, so that you can jump to it. +8 Undo tree: visually show the tree somehow (Damian Conway) + Show only the leaves, indicating how many changed from the branch and the + timestamp? + Put branch with most recent change on the left, older changes get more + indent? +- Make it possible to undo all the commands from a mapping, including a + trailing unfinished command, e.g. for ":map K iX^[r". +- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not + possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a", + etc. Postpone saving for undo until something is really inserted? +8 When Inserting a lot of text, it can only be undone as a whole. Make undo + sync points at every line or word. Could recognize the start of a new + word (white space and then non-white space) and backspacing. + Can already use CTRL-G u, but that requires remapping a lot of things. +8 Make undo more memory-efficient: Compare text before and after change, + only remember the lines that really changed. +7 Add undo for a range of lines. Can change these back to a previous + version without changing the rest of the file. Stop doing this when a + change includes only some of these lines and changes the line count. Need + to store these undo actions as a separate change that can be undone. +- For u_save() include the column number. This can be used to set '[ and ']. + And in the future the undo can be made more efficient (Webb). +- In out-of-memory situations: Free allocated space in undo, and reduce the + number of undo levels (with confirmation). +- Instead of [+], give the number of changes since the last write: [+123]. + When undoing to before the last write, change this to a negative number: + [-99]. +- With undo with simple line delete/insert: optimize screen updating. +- When executing macro's: Save each line for undo only once. +- When doing a global substitute, causing almost all lines to be changed, + undo info becomes very big. Put undo info in swap file?? +- MS-Windows: when writing undo file the infostreams are copied in + mch_copy_file_attribute(), that seems unnecessary. (#7925) Add a flag to + only copy attributes? +- undo result wrong: Masato Nishihata, #4798 +- After recovering from a swap file the undofile should not be used, it + causes corruption. (#6631) +- When the computer crashes while writing the undofile, the contents may be + lost. Write to a temp file, fsync and rename. (#8879) +- Undo puts cursor in wrong line after "cG<Esc>" undo. +- Undo history wrong when ":next file" re-uses a buffer. (#5426) ex_next() + should pass flag to do_argfile(), then to do_ecmd(). Is there a test for + this? +- Undo problem: "g-" doesn't go back, gets stuck. (Bj枚rn Linse, 2016 Jul 18) +- Undo message is not always properly displayed. Patch by Ken Takata, 2013 + oct 3. Doesn't work properly according to Yukihiro Nakadaira. + Also see #1635. +- When using ":diffput" through a mapping, undo in the target buffer isn't + synced. (Ryan Carney, 2016 Sep 14) +- The undo file name can get too long. (Issue #346) + For the path use a hash instead of dir%dir%dir%name hash%name. + Check both for some time for backwards compatibility. + Alternatively: create the directory structure under 'undodir'. +- Patch to add ":undorecover", get as much text out of the undo file as + possible. (Christian Brabandt, 2014 Mar 12, update Aug 22) +- Patch to support :undo absolute jump to file save number. (Christian + Brabandt, 2010 Nov 5) +- There should be a way after an abbreviation has expanded to go back to + what was typed. CTRL-G h ? Would also undo last word or line break + inserted perhaps. And undo CTRL-W. CTRL-G l would redo. +- When using 'cryptmethod' xchaha20 the undo file is not encrypted. + Need to handle extra bytes. + + +Buffer list: +7 Command to execute a command in another buffer: ":inbuf {bufname} {cmd}". + Also for other windows: ":inwin {winnr} {cmd}". How to make sure that + this works properly for all commands, and still be able to return to the + current buffer/window? E.g.: ":inbuf xxx only". +8 Add File.{recent-files} menu entries: Recently edited files. + Ron Aaron has a plugin for this: mru.vim. +8 Unix: Check all uses of fnamecmp() and fnamencmp() if they should check + inode too. +7 Add another number for a buffer, which is visible for the user. When + creating a new buffer, use the lowest number not in use (or the highest + number in use plus one?). +7 Offer some buffer selection from the command line? Like using ":ls" and + asking for a buffer number. (Zachmann) +- When starting to edit a file that is already in the buffer list, use the + file name argument for the new short file name. (Webb) +- Add an option to make ":bnext" and ":bprev" wrap around the end of the + buffer list. Also for ":next" and ":prev"? +7 Add argument to ":ls" which is a pattern for buffers to list. + E.g. ":ls *.c". (Thompson) +7 Add expansion of buffer names, so that "*.c" is expanded to all buffer + names. Needed for ":bdel *.c", ":bunload *.c", etc. +8 Support for <afile> where a buffer name is expected. +7 Add an option to mostly use slashes in file names. Separately for + internal use and for when executing an external program? +8 Some file systems are case-sensitive, some are not. Besides + 'wildignorecase' there might be more parts inside + CASE_INSENSITIVE_FILENAME that are useful on Unix. +- When using ":bwipe!" also get rid of references to be buffer, e.g. in the + jumplist and alternate file. +- ":bnext" in a help buffer is supposed to go to the next help buffer, but + it goes to any buffer, and then :bnext skips help buffers, since they are + unlisted. (#4478) +- :buffer completion does not escape "+" properly and results in a regexp + error. (#5467) +- Problem with two buffers with the same name a/b, if it didn't exist before + and is created outside of Vim. (dskloetg, 2018 Jul 16, #3219) +- Add an option with file patterns, to be used when unloading a buffer: If + there is a match, remove entries for the buffer from marks, jumplist, etc. + To be used for git temp files. + + +Swap (.swp) files: +8 If writing to the swap file fails, should try to open one in another + directory from 'dir'. Useful in case the file system is full and when + there are short file name problems. +8 Also use the code to try using a short file name for the backup and swap + file for the Win32 and Dos 32 bit versions. +8 When a file is edited by root, add $LOGNAME to know who did su. +8 When the edited file is a symlink, try to put the swap file in the same + dir as the actual file. Adjust FullName(). Avoids editing the same file + twice (e.g. when using quickfix). Also try to make the name of the backup + file the same as the actual file? + Use the code for resolve()? +7 When using 64 bit inode numbers, also store the top 32 bits. Add another + field for this, using part of bo_fname[], to keep it compatible. +7 When editing a file on removable media, should put swap file somewhere + else. Use something like 'r' flag in 'viminfo'. 'diravoid'? + Also: Be able to specify minimum disk space, skip directory when not + enough room. +7 Add a configure check for which directory should be used: /tmp, /var/tmp + or /var/preserve. +- Add an option to create a swap file only when making the first change to + the buffer. (Liang) Or only when the buffer is not read-only. +- Add option to set "umask" for backup files and swap files (Antwerpen). + 'backupumask' and 'swapumask'? Or 'umaskbackup' and 'umaskswap'? +- When editing a readonly file, don't use a swap file but read parts from the + original file. Also do this when the file is huge (>'maxmem'). We do + need to load the file once to count the number of lines? Perhaps keep a + cached list of which line is where. +- When editing a file with ":edit" the output of :swapname is relative, + while editing it with "vim file" it is absolute. (#355) Which one should + it be? +- When recovering a file, put the swap file name in b:recovered_swapfile. + Then a command can delete it. +- In the ATTENTION message about an existing swap file, mention the name of + the process that is running. It might actually be some other program, + e.g. after a reboot. +- When running Vim in silent ex mode, an existing swapfile causes Vim to + wait for a user action without a prompt. (Maarten Billemont, 2012 Feb 3) + Do give the prompt? Quit with an error? +- After doing "su" $HOME can be the old user's home, thus ~root/file is not + correct. Don't use it in the swap file. +- In the swapfile dialog, add a H(elp) option that gives more info about + what each choice does. Similar to ":help swap-exists-choices" + + +Viminfo: +7 Can probably remove the code that checks for a writable viminfo file, + because we now do the chown() for root, and others can't overwrite someone + else's viminfo file. +8 When there is no .viminfo file and someone does "su", runs Vim, a + root-owned .viminfo file is created. Is there a good way to avoid this? + Perhaps check the owner of the directory. Only when root? +8 Add argument to keep the list of buffers when Vim is started with a file + name. (Schild) +8 Keep the last used directory of the file browser (File/Open menu). +8 Remember the last used register for "@@". +8 Remember the redo buffer, so that "." works after restarting. +8 Remember a list of last accessed files. To be used in the + "File.Open Recent" menu. Default is to remember 10 files or so. + Also remember which files have been read and written. How to display + this? +7 Also store the ". register (last inserted text). +7 Make it possible to store buffer names in viminfo file relative to some + directory, to make them portable over a network. (Aaron) +6 Store a snapshot of the currently opened windows. So that when quitting + Vim, and then starting again (without a file name argument), you see the + same files in the windows. Use ":mksession" code? +- Make marks present in .viminfo usable as file marks: Display a list of + "last visited files" and select one to jump to. +- Add the debug command line history to viminfo. +- Using "wviminfo /tmp/viminfo" does not store file marks that Vim knows + about, it only works when merging with an existing file. (Shougo, 2017 + Jun 19, #1781) +- Writing nested List and Dict in viminfo gives error message and can't be + read back. (Yukihiro Nakadaira, 2010 Nov 13) +- When a register contains illegal bytes, writing viminfo in utf-8 and + reading it back doesn't result in utf-8. (Devin Bayer) +8 With 'viminfo' set such that the ".viminfo" file is written on a FAT + filesystem, an illegal file name may be created: ".vim". +8 For each buffer that is opened, the viminfo file is opened and read to + check for file marks. This can be slow. +8 When write_viminfo() is used while there are many orphaned viminfo + tempfiles writing the viminfo file fails. Give a clear error message so + that the user knows the files have to be deleted. + + +Modelines: +8 Before trying to execute a modeline, check that it looks like one (valid + option names). If it's very wrong, silently ignore it. + Ignore a line that starts with "Subject: ". +- Add an option to whitelist options that are allowed in a modeline. This + would allow careful users to use modelines, e.g., only allowing + 'shiftwidth'. +- Add an option to let modelines only set local options, not global ones + such as 'encoding'. +- When an option value is coming from a modeline, do not carry it over to + another edited file? Would need to remember the value from before the + modeline setting. +- Allow setting a variable from a modeline? Only allow using fixed strings, + no function calls, to avoid a security problem. +- Allow ":doauto BufRead x.cpp" in modelines, to execute autocommands for + .cpp files. +- Support the "abbreviate" command in modelines (Kearns). Careful for + characters after <Esc>, that is a security leak. +- Add an option setting to ask the user if the modelines are to be executed + or not. Same for .exrc in local dir. + + +Sessions: +- Session file contains absolute paths when "curdir" is removed form + 'sessionoptions', making it impossible to have a session with a relative + path. (#4450) +- Session file only contains local option values for buffers that are in a + window, not other buffers. (#7532) +- Script generated by :mksession does not work well if there are windows + with modified buffers: + change "silent only" into "silent only!" + change "edit fname" of first buffer to "hide edit fname" + skip "badd fname" if "fname" is already in the buffer list + remove remark about unloading buffers from documentation +- When session file has name in argument list but the buffer was deleted, + the buffer is not deleted when using the session file. (#1393) Should add + the buffer in hidden state. +- When a session file is created and there are "nofile" buffers, these are + not filled. Need to trigger BufReadCmd autocommands. Also handle + deleting the initial empty buffer better. (ZyX, 2015 March 8) +- Setting the spell file in a session only reads the local additions, not + the normal spell file. (Enno Nagel, 2014 Mar 29) +- Directory wrong in session file, caused by ":lcd" in BufEnter autocommand. + (Felix Kater, 2009 Mar 3) +- Something wrong with session that has "cd" commands and "badd", in such a + way that Vim doesn't find the edited file in the buffer list, causing the + ATTENTION message? (Tony Mechelynck, 2008 Dec 1) Also: swap files are in + ~/tmp/ One has relative file name ".mozilla/...". +- Session file creation: 'autochdir' causes trouble. Keep it off until + after loading all files. +- Session file generates error upon loading, cause by --remote-silent-tab. + (7tommm (ytommm) 2010 Nov 24) +8 DOS/Windows: ":mksession" generates a "cd" command where "aa\#bb" means + directory "#bb" in "aa", but it's used as "aa#bb". (Ronald Hoellwarth) +7 When there is a "help.txt" window in a session file, restoring that + session will not get the "LOCAL ADDITIONS" back. +8 With ":mksession" always store the 'sessionoptions' option, even when + "options" isn't in it. (St-Amant) +8 When using ":mksession", also store a command to reset all options to + their default value, before setting the options that are not at their + default value. +7 With ":mksession" also store the tag stack and jump history. (Michal + Malecki) + + +Options: +7 ":with option=value | command": temporarily set an option value and + restore it after the command has executed. +8 Make "old" number options that really give a number of effects into string + options that are a comma-separated list. The old number values should + also be supported. +8 Add commands to save and restore an option, which also preserves the flag + that marks if the option was set. Useful to keep the effect of setting + 'compatible' after ":syntax on" has been used. +7 There is 'titleold', why is there no 'iconold'? (Chazelas) + + +External commands: +8 When filtering text, redirect stderr so that it can't mess up the screen + and Vim doesn't need to redraw it. Also for ":r !cmd". +4 Set separate shell for ":sh", piping "range!filter", reading text "r !ls" + and writing text "w !wc". (Deutsche) Allow arguments for fast start (e.g. + -f). +4 Allow direct execution, without using a shell. +4 Run an external command in the background. But how about I/O in the GUI? + Careful: don't turn Vim into a shell! +4 Add feature to disable using a shell or external commands. + + +Multiple Windows: +7 "vim -oO file ..." use both horizontal and vertical splits. +8 Add CTRL-W T: go to the top window in the column of the current window. + And CTRL-W B: go to bottom window. +7 Use CTRL-W <Tab>, like alt-tab, to switch between buffers. Repeat <Tab> + to select another buffer (only loaded ones?), <BS> to go back, <Enter> to + select buffer, <Esc> to go back to original buffer. +7 Make it possible to edit a new buffer in the preview window. A script can + then fill it with something. ":popen"? +7 Add a 'tool' window: behaves like a preview window but there can be + several. Don't count it in only_one_window(). (Alexei Alexandrov) +6 Add an option to resize the shell when splitting and/or closing a window. + ":vsp" would make the shell wider by as many columns as needed for the new + window. Specify a maximum size (or use the screen size). ":close" would + shrink the shell by as many columns as come available. (Demirel) +7 When starting Vim several times, instantiate a Vim server, that allows + communication between the different Vims. Feels like one Vim running with + multiple top-level windows. Esp. useful when Vim is started from an IDE + too. Requires some form of inter process communication. +- Support a connection to an external viewer. Could call the viewer + automatically after some seconds of non-activity, or with a command. + Allow some way of reporting scrolling and cursor positioning in the viewer + to Vim, so that the link between the viewed and edited text can be made. + + +Marks: +8 Add ten marks for last changed files: ':0, ':1, etc. One mark per file. +8 When cursor is first moved because of scrolling, set a mark at this + position. (Rimon Barr) Use '-. +8 Add a command to jump to a mark and make the motion inclusive. g'm and g`m? +8 The '" mark is set to the first line, even when doing ":next" a few times. + Only set the '" mark when the cursor was really moved in a file. +8 Make `` and '', which would position the new cursor position in the middle + of the window, restore the old topline (or relative position) from when + the mark was set. +7 Make a list of file marks in a separate window. For listing all buffers, + matching tags, errors, etc. Normal commands to move around. Add commands + to jump to the mark (in current window or new window). Start it with + ":browse marks"? +6 Add a menu that lists the Marks like ":marks". (Amerige) +7 For ":jumps", ":tags" and ":marks", for not loaded buffers, remember the + text at the mark. Highlight the column with the mark. +7 Highlight each mark in some way (With "Mark" highlight group). + Or display marks in a separate column, like 'number' does. +7 Use d"m to delete rectangular area from cursor to mark m (like Vile's \m + command). +7 Try to keep marks in the same position when: + - replacing with a line break, like in ":s/pat/^M/", move marks after the + line break column to the next line. (Acevedo) + - inserting/deleting characters in a line. +5 Include marks for start/end of the current word and section. Useful in + mappings. +6 Add "unnamed mark" feature: Like marks for the ":g" command, but place and + unplace them with commands before doing something with the lines. + Highlight the marked lines somehow. + + +Digraphs: +7 Make "ga" show the keymap for a character, if it exists. + Also show the code of the character after conversion to 'fileencoding'. +- Use digraph table to tell Vim about the collating sequence of special + characters? +8 Add command to remove one or more (all) digraphs. (Brown) +7 Support different sets of digraphs (depending on the character set?). At + least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32). + + +Writing files: +- In vim_rename(), should lock "from" file when deleting "to" file for + systems other than Amiga. Avoids problems with unexpected longname to + shortname conversion. +8 write mch_isdevice() for Amiga, Mac, VMS, etc. +8 When appending to a file, Vim should also make a backup and a 'patchmode' + file. +8 'backupskip' doesn't write a backup file at all, a bit dangerous for some + applications. Add 'backupelsewhere' to write a backup file in another + directory? Or add a flag to 'backupdir'? +6 Add an option to write a new, numbered, backup file each time. Like + 'patchmode', e.g., 'backupmode'. +6 Make it possible to write 'patchmode' files to a different directory. + E.g., ":set patchmode=~/backups/*.orig". (Thomas) +6 Add an option to prepend something to the backup file name. E.g., "#". + Or maybe allow a function to modify the backup file name? +8 Only make a backup when overwriting a file for the first time. Avoids + losing the original when writing twice. (Slootman) +7 On non-Unix machines, also overwrite the original file in some situations + (file system full, it's a link on an NFS partition). +7 When editing a file, check that it has been changed outside of Vim more + often, not only when writing over it. E.g., at the time the swap file is + flushed. Or every ten seconds or so (use the time of day, check it before + waiting for a character to be typed). +8 When a file was changed since editing started, show this in the status + line of the window, like "[time]". + Make it easier to reload all outdated files that don't have changes. + Automatic and/or with a command. + + +Substitute: +8 Substitute with hex/unicode number "\%xff" and "\%uabcd". Just like + "\%uabcd" in search pattern. +8 Make it easier to replace in all files in the argument list. E.g.: + ":argsub/oldword/newword/". Works like ":argdo %s/oldword/newword/g|w". +- :s///p prints the line after a substitution. +- With :s///c replace \&, ~, etc. when showing the replacement pattern. +8 With :s///c allow scrolling horizontally when 'nowrap' is effective. + Also allow a count before the scrolling keys. +- Add number option to ":s//2": replace second occurrence of string? Or: + :s///N substitutes N times. +- Add answers to ":substitute" with 'c' flag, used in a ":global", e.g.: + ":g/pat1/s/pat2/pat3/cg": 'A' do all remaining replacements, 'Q' don't do + any replacements, 'u' undo last substitution. +7 Substitute in a block of text. Use {line}.{column} notation in an Ex + range, e.g.: ":1.3,$.5s" means to substitute from line 1 column 3 to the + last line column 5. +5 Add commands to bookmark lines, display bookmarks, remove bookmarks, + operate on lines with bookmarks, etc. Like ":global" but with the + possibility to keep the bookmarks and use them with several commands. + (Stanislav Sitar) + + +Mouse support: +8 Add 'o' flag to 'mouse'? +7 Be able to set a 'mouseshape' for the popup menu. +8 Add 'mouse' flag, which sets a behavior like Visual mode, but automatic + yanking at the button-up event. Or like Select mode, but typing gets you + out of Select mode, instead of replacing the text. (Bhaskar) +- Implement mouse support for the Amiga console. +- Using right mouse button to extend a blockwise selection should attach to + the nearest corner of the rectangle (four possible corners). +- Precede mouse click by a number to simulate double clicks?!? +- When mouse click after 'r' command, get character that was pointed to. + + +Argument list: +6 Add command to put all filenames from the tag files in the argument list. + When given an argument, only use the files where that argument matches + (like `grep -l ident`) and jump to the first match. +6 Add command to form an args list from all the buffers? + + +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. +- When appending to a register, also report the total resulting number of + lines. Or just say "99 more lines yanked", add the "more". +- When inserting a register in Insert mode with CTRL-R, don't insert comment + leader when line wraps? +- The ":@r" commands should take a range and execute the register for each + line in the range. +- Add "P" command to insert contents of unnamed register, move selected text + to position of previous deleted (to swap foo and bar in " + foo") +8 Should be able to yank and delete into the "/ register. + How to take care of the flags (offset, magic)? +- In Select mode the deleted text always goes into the unnamed register. + Use CTRL-R to specify the register to use. (#9531) +- When "+ register is set then "" points to it. If another Vim grabs the "+ + register, then "" doesn't contain anything. Make it still follow "+. + (#6435) +- Pasting a register in Visual mode cannot be repeated. (Mahmoud Al-Qudsi, + 2018 Apr 26, #2849) +- Patch to add option that tells whether small deletes go into the numbered + registers. (Aryeh Leib Taurog, 2013 Nov 18) +- With "unamedplus" in 'clipboard' pasting in Visual mode causes error for + empty register. (Michael Seiwald, 2011 Jun 28) I can't reproduce it. +- Consider making YankRing or something else that keeps a list of yanked + text part of standard Vim. The "1 to "9 registers are not sufficient. +6 When yanking into the unnamed registers several times, somehow make the + previous contents also available (like it's done for deleting). What + register names to use? g"1, g"2, etc.? + Also do this for the small delete register "-. + + +Debug mode: +8 Add breakpoints for setting an option +8 Add breakpoints for assigning to a variable. +7 Store the history from debug mode in viminfo. +7 Make the debug mode history available with histget() et al. +- In debug mode, using CTRL-R = to evaluate a function causes stepping + through the function. (Hari Krishna Dara, 2006 Jun 28) + + +Various improvements: +7 Add plugins for formatting? Should be able to make a choice depending on + the language of a file (English/Korean/Japanese/etc.). + Setting the 'langformat' option to "chinese" would load the + "format/chinese.vim" plugin. + The plugin would set 'formatexpr' and define the function being called. + Edward L. Fox explains how it should be done for most Asian languages. + (2005 Nov 24) + Alternative: patch for utf-8 line breaking. (Yongwei Wu, 2008 Feb 23) +7 [t to move to previous xml/html tag (like "vatov"), ]t to move to next + ("vatv"). +7 [< to move to previous xml/html tag, e.g., previous <li>. ]< to move to + next <li>, ]< to next </li>, [< to previous </li>. +8 Add ":rename" command: rename the file of the current buffer and rename + the buffer. Buffer may be modified. +7 Instead of filtering errors with a shell script it should be possible to + do this with Vim script. A function that filters the raw text that comes + from the 'makeprg'? +7 Allow a window not to have a statusline. Makes it possible to use a + window as a buffer-tab selection. +8 Allow non-active windows to have a different statusline. (Yakov Lerner) +7 Add an invisible buffer which can be edited. For use in scripts that want + to manipulate text without changing the window layout. +8 Add a command to revert to the saved version of file; undo or redo until + all changes are gone. +6 "vim -q -" should read the list of errors from stdin. (Gautam Mudunuri) +8 Add "--remote-fail": When contacting the server fails, exit Vim. + Add "--remote-self": When contacting the server fails, do it in this Vim. + Overrules the default of "--remote-send" to fail and "--remote" to do it + in this Vim. +8 When Vim was started without a server, make it possible to start one, as + if the "--servername" argument was given. ":startserver <name>"? +8 No address range can be used before the command modifiers. This makes + them difficult to use in a menu for Visual mode. Accept the range and + have it apply to the following command. +8 Add the possibility to set 'fileformats' to force a format and strip other + CR characters. For example, for "dos" files remove CR characters at the + end of the line, so that a file with mixed line endings is cleaned up. + To just not display the CR characters: Add a flag to 'display'? +7 Some compilers give error messages in which the file name does not have a + path. Be able to specify that 'path' is used for these files. +7 Xterm sends <Esc>O3F for <M-End>. Similarly for other <M-Home>, <M-Left>, + etc. Combinations of Alt, Ctrl and Shift are also possible. Recognize + these to avoid inserting the raw byte sequence, handle like the key + without modifier (unless mapped). +6 Add "gG": like what "gj" is to "j": go to the N'th window line. +8 Add command like ":normal" that accepts <Key> notation like ":map". +9 Support ACLs on more systems. +7 Add ModeMsgVisual, ModeMsgInsert, etc. so that each mode message can be + highlighted differently. +7 Add a message area for the user. Set some option to reserve space (above + the command line?). Use an ":echouser" command to display the message + (truncated to fit in the space). +7 Add %s to 'keywordprg': replace with word under the cursor. (Zellner) +8 Support printing on Unix. Can use "lpansi.c" as an example. (Bookout) +8 Add put command that replaces the text under it. Esp. for blockwise + Visual mode. +7 Enhance termresponse stuff: Add t_CV(?): pattern of term response, use + regexp: "\e\[[>?][0-9;]*c", but only check just after sending t_RV. +7 Add "g|" command: move to N'th column from the left margin (after wrapping + and applying 'leftcol'). Works as "|" like what "g0" is to "0". +7 Support setting 'equalprg' to a user function name. +7 Highlight the characters after the end-of-line differently. +7 When 'whichwrap' contains "l", "$dl" should join lines? +8 Add an argument to configure to use $CFLAGS and not modify it? (Mooney) +8 Enabling features is a mix of configure arguments and defines in + feature.h. How to make this consistent? Feature.h is required for + non-unix systems. Perhaps let configure define CONF_XXX, and use #ifdef + CONF_XXX in feature.h? Then what should min-features and max-features do? +8 Add "g^E" and "g^Y", to scroll a screen-full line up and down. +8 Add ":confirm" handling in open_exfile(), for when file already exists. +8 When quitting with changed files, make the dialog list the changed file + and allow "write all", "discard all", "write some". The last one would + then ask "write" or "discard" for each changed file. Patch in HierAssist + does something like this. (Shah) +7 Use growarray for replace stack. +7 Have a look at viH (Hellenic or Greek version of Vim). But a solution + outside of Vim might be satisfactory (Haritsis). +3 Make "2d%" work like "d%d%" instead of "d2%"? +7 "g CTRL-O" jumps back to last used buffer. Skip CTRL-O jumps in the same + buffer. Make jumplist remember the last ten accessed buffers? +7 Make it possible to set the size of the jumplist (also to a smaller number + than the default). (Nikolai Weibull) +- Add code to disable the CAPS key when going from Insert to Normal mode. +- Set date/protection/etc. of the patchfile the same as the original file. +- Use growarray for termcodes[] in term.c +- Add <window-99>, like <cword> but use filename of 99'th window. +7 Add a way to change an operator to always work characterwise-inclusive + (like "v" makes the operator characterwise-exclusive). "x" could be used. +- Make a set of operations on list of names: expand wildcards, replace home + dir, append a string, delete a string, etc. +- Remove using mktemp() and use tmpname() only? Ctags does this. +- When replacing environment variables, and there is one that is not set, + turn it into an empty string? Only when expanding options? (Hiebert) +- Option to set command to be executed instead of producing a beep (e.g. to + call "play newbeep.au"). +- Add option to show the current function name in the status line. More or + less what you find with "[[k", like how 'cindent' recognizes a function. + (Bhatt). +- "[r" and "]r": like "p" and "P", but replace instead of insert (esp. for + blockwise registers). +- Add 'timecheck' option, on by default. Makes it possible to switch off the + timestamp warning and question. (Dodt). +- Add an option to set the time after which Vim should check the timestamps + of the files. Only check when an event occurs (e.g., character typed, + mouse moved). Useful for non-GUI versions where keyboard focus isn't + noticeable. +- Make 'smartcase' work even though 'ic' isn't set (Webb). +7 When formatting text, allow to break the line at a number of characters. + Use an option for this: 'breakchars'? Useful for formatting Fortran code. +- Add flag to 'formatoptions' to be able to format book-style paragraphs + (first line of paragraph has larger indent, no empty lines between + paragraphs). Complements the '2' flag. Use '>' flag when larger indent + starts a new paragraph, use '<' flag when smaller indent starts a new + paragraph. Both start a new paragraph on any indent change. +8 The 'a' flag in 'formatoptions' is too dangerous. In some way only do + auto-formatting in specific regions, e.g. defined by syntax highlighting. +8 Allow using a trailing space to signal a paragraph that continues on the + next line (MIME text/plain; format=flowed, RFC 2646). Can be used for + continuous formatting. Could use 'autoformat' option, which specifies a + regexp which triggers auto-formatting (for one line). + ":set autoformat=\\s$". +- Be able to redefine where a sentence stops. Use a regexp pattern? +- Support multibyte characters for sentences. Example from Ben Peterson. +7 Add command "g)" to go to the end of a sentence, "g(" to go back to the + end of a sentence. (Servatius Brandt) +- Be able to redefine where a paragraph starts. For "[[" where the '{' is + not in column 1. +6 Add ":cdprev": go back to the previous directory. Need to remember a + stack of previous directories. We also need ":cdnext". +7 Should ":cd" for MS-DOS go to $HOME, when it's defined? +- Make "gq<CR>" work on the last line in the file. Maybe for every operator? +- Add more redirecting of Ex commands: + :redir #> bufname + :redir #>> bufname (append) +- Give error message when starting :redir: twice or using END when no + redirection was active. +- Setting of options, specifically for a buffer or window, with + ":set window.option" or ":set buffer.option=val". Or use ":buffer.set". + Also: "buffer.map <F1> quit". +6 Would it be possible to change the color of the cursor in the Win32 + console? (Klaus Hast) +- Add :delcr command: + *:delcr* + :[range]delcr[!] Check [range] lines (default: whole buffer) for lines + ending in <CR>. If all lines end in <CR>, or [!] is + used, remove the <CR> at the end of lines in [range]. + A CTRL-Z at the end of the file is removed. If + [range] is omitted, or it is the whole file, and all + lines end in <CR> 'textmode' is set. +- Should integrate addstar() and file_pat_to_reg_pat(). +- When working over a serial line with 7 bit characters, remove meta + characters from 'isprint'. +- Use fchdir() in init_homedir(), like in FullName(). +- In win_update(), when the GUI is active, always use the scrolling area. + Avoid that the last status line is deleted and needs to be redrawn. +- That "cTx" fails when the cursor is just after 'x' is Vi compatible, but + may not be what you expect. Add a flag in 'cpoptions' for this? More + general: Add an option to allow "c" to work with a null motion. +- Give better error messages by using errno (strerror()). +- Give "Usage:" error message when command used with wrong arguments (like + Nvi). +- Make 'restorescreen' option also work for xterm (and others), replaces the + SAVE_XTERM_SCREEN define. +7 Support for ":winpos" In xterm: report the current window position. +- Give warning message when using ":set t_xx=asdf" for a termcap code that + Vim doesn't know about. Add flag in 'shortmess'? +6 Add ":che <file>", list all the include paths which lead to this file. +- For a commandline that has several commands (:s, :d, etc.) summarize the + changes all together instead of for each command (e.g. for the rot13 + macro). +- Add command like "[I" that also shows the tree of included files. +- ":set sm^L" results in ":set s", because short names of options are also + expanded. Is there a better way to do this? +- Add ":@!" command, to ":@" like what ":source!" is to ":source". +8 Add ":@:!": repeat last command with forceit set. +- Add 't_normal': Used whenever t_me, t_se, t_ue or t_Zr is empty. +- ":cab map test ^V| je", ":cunab map" doesn't work. This is vi compatible! +- CTRL-W CTRL-E and CTRL-W CTRL-Y should move the current window up or down + if it is not the first or last window. +- Include-file-search commands should look in the loaded buffer of a file (if + there is one) instead of the file itself. +7 Change 'nrformats' to include the leader for each format. Example: + nrformats=hex:$,binary:b,octal:0 + Add setting of 'nrformats' to syntax files. +- 'path' can become very long, don't use NameBuff for expansion. +- When unhiding a hidden buffer, put the same line at top of the window as + the one before hiding it. Or: keep the same relative cursor position (so + many percent down the windows). +- Make it possible for the 'showbreak' to be displayed at the end of the + line. Use a comma to separate the part at the end and the start of the + line? #754 Highlight the linebreak characters, add flag in 'highlight'. + Make 'showbreak' local to a window. +- Some string options should be expanded if they have wildcards, e.g. + 'dictionary' when it is "*.h". +- Use a specific type for number and boolean options, making it possible to + change it for specific machines (e.g. when a long is 64 bit). +- Add option for <Insert> in replace mode going to normal mode. (Nugent) +- Add a next/previous possibility to "[^I" and friends. +- Add possibility to change the HOME directory. Use the directory from the + passwd file? (Antwerpen) +8 Add commands to push and pop all or individual options. ":setpush tw", + ":setpop tw", ":setpush all". Maybe pushing/popping all options is + sufficient. ":setflush" resets the option stack? + How to handle an aborted mapping? Remember position in tag stack when + mapping starts, restore it when an error aborts the mapping? +- Change ":fixdel" into option 'fixdel', t_del will be adjusted each time + t_bs is set? (Webb) +- "gc": goto character, move absolute character positions forward, also + counting newlines. "gC" goes backwards (Weigert). +- When doing CTRL-^, redraw buffer with the same topline. (Demirel) Store + cursor row and window height to redraw cursor at same percentage of window + (Webb). +- Besides remembering the last used line number of a file, also remember the + column. Use it with CTRL-^ et. al. +- Check for non-digits when setting a number option (careful when entering + hex codes like 0xff). +- Add option to make "." redo the "@r" command, instead of the last command + executed by it. Also to make "." redo the whole mapping. Basically: redo + the last TYPED command. +- Support URL links for ^X^F in Insert mode, like for "gf". +- Support %name% expansion for "gf" on Windows. +- Make "gf" work on "file://c:/path/name". "file:/c:/" and "file:///c:/" + should also work? +- Add 'urlpath', used like 'path' for when "gf" used on a URL? +8 When using "gf" on an absolute file name, while editing a remote file + (starts with scp:// or http://) should prepend the method and machine + name. +- When finding a URL or file name, and it doesn't exist, try removing a + trailing '.'. +- Add ":path" command modifier. Should work for every command that takes a + file name argument, to search for the file name in 'path'. Use + find_file_in_path(). +- Highlight control characters on the screen: Shows the difference between + CTRL-X and "^" followed by "X" (Colon). +- Integrate parsing of cmdline command and parsing for expansion. +- Create a program that can translate a .swp file from any machine into a + form usable by Vim on the current machine. +- Add ":noro" command: Reset 'ro' flag for all buffers, except ones that have + a readonly file. ":noro!" will reset all 'ro' flags. +- Add a variant of CTRL-V that stops interpretation of more than one + character. For entering mappings on the command line where a key contains + several special characters, e.g. a trailing newline. +- Make '2' option in 'formatoptions' also work inside comments. +- Add 's' flag to 'formatoptions': Do not break when inside a string. (Dodt) +- When window size changed (with the mouse) and made too small, set it back + to the minimal size. +- Add "]>" and "[<", shift comment at end of line (command; /* comment */). +- Should not call cursorcmd() for each vgetc() in getcmdline(). +- ":split file1 file2" adds two more windows (Webb). +- Don't give message "Incomplete last line" when editing binary file. +- Add ":a", ":i" for preloading of named buffers. +- When entering text, keep other windows on same buffer updated (when a line + entered)? +- Check out how screen does output optimizing. Apparently this is possible + as an output filter. +- In dosub() regexec is called twice for the same line. Try to avoid this. +- Window updating from memline.c: insert/delete/replace line. +- Optimize ml_append() for speed, esp. for reading a file. +- V..c should keep indent when 'ai' is set, just like [count]cc. +- Updatescript() can be done faster with a string instead of a char. +- Screen updating is inefficient with CTRL-F and CTRL-B when there are long + lines. +- Uppercase characters in Ex commands can be made lowercase? +8 Add option to show characters in text not as "|A" but as decimal ("^129"), + hex ("\x81") or octal ("\201") or meta (M-x). Nvi has the 'octal' option + to switch from hex to octal. Vile can show unprintable characters in hex + or in octal. +7 Tighter integration with xxd to edit binary files. Make it more + easy/obvious to use. Command line argument? +- How does vi detect whether a filter has messed up the screen? Check source. + After ":w !command" a wait_return? +- Improve screen updating code for doput() (use s_ins()). +- With 'p' command on last line: scroll screen up (also for terminals without + insert line command). +- Use insert/delete char when terminal supports it. +- Optimize screen redraw for slow terminals. +- Optimize "dw" for long row of spaces (say, 30000). +- Add "-d null" for editing from a script file without displaying. +- In Insert mode: Remember the characters that were removed with backspace + and re-insert them one at a time with <key1>, all together with <key2>. +- Amiga: Add possibility to set a keymap. The code in amiga.c does not work + yet. +- Implement 'redraw' option. +- Add special code to 'sections' option to define something else but '{' or + '}' as the start of a section (e.g. one shiftwidth to the right). +7 Allow using Vim in a pipe: "ls | vim -u xxx.vim - | yyy". Only needs + implementing ":w" to stdout in the buffer that was read from stdin. + Perhaps writing to stdout will work, since stderr is used for the terminal + I/O. +8 Allow opening an unnamed buffer with ":e !cmd" and ":sp !cmd". Vile can + do it. +- Add commands like ]] and [[ that do not include the line jumped to. +- When :unab without matching "from" part and several matching "to" parts, + delete the entry that was used last, instead of the first in the list. +- Add text justification option. +- Set boolean options on/off with ":set paste=off", ":set paste=on". +- After "inv"ing an option show the value: ":set invpaste" gives "paste is + off". +- Check handling of CTRL-V and '\' for ":" commands that do not have TRLBAR. +- When a file cannot be opened but does exist, give error message. +- Amiga: When 'r' protection bit is not set, file can still be opened but + gives read errors. Check protection before opening. +- When writing check for file exists but no permission, "Permission denied". +- If file does not exist, check if directory exists. +- Settings edit mode: make file with ":set opt=xx", edit it, parse it as ex + commands. +- ":set -w all": list one option per line. +- Amiga: test for 'w' flag when reading a file. +- :table command (Webb) +- Add new operator: clear, make area white (replace with spaces): "g ". +- Add command to ":read" a file at a certain column (blockwise read?). +- Add sort of replace mode where case is taken from the old text (Goldfarb). +- Allow multiple arguments for ":read", read all the files. +- Support for tabs in specific columns: ":set tabcol=8,20,34,56" (Demirel). +- Add 'searchdir' option: Directories to search for file name being edited + (Demirel). +- Modifier for the put command: Change to linewise, charwise, blockwise, etc. +- Add commands for saving and restoring options ":set save" "set restore", + for use in macro's and the like. +- Keep output from listings in a window, so you can have a look at it while + working in another window. Put cmdline in a separate window? +- Add possibility to put output of Ex commands in a buffer or file, e.g. for + ":set all". ":r :set all"? +- When the 'equalalways' option is set, creating a new window should not + result in windows to become bigger. Deleting a window should not result in + a window to become smaller (Webb). +- When resizing the whole Vim window, the windows inside should be resized + proportionally (Webb). +- Include options directly in option table, no indirect pointers. Use + mkopttab to make option table? +- When doing ":w dir", where "dir" is a directory name, write the current + file into that directory, with the current file name (without the path)? +- Support for 'dictionary's that are sorted, makes access a lot faster + (Haritsis). +- Add "^Vrx" on the command line, replace with contents of register x. Used + instead of CTRL-R to make repeating possible. (Marinichev) +- Add "^Vb" on the command line, replace with word before or under the + cursor? +- Support mapping for replace mode and "r" command (Vi doesn't do this)? +8 Sorting of filenames for completion is wrong on systems that ignore + case of filenames. Add 'ignorefncase' option. When set, case in + filenames is ignored for sorting them. Patch by Mike Williams: + ~/vim/patches/ignorefncase. Also change what matches? Or use another + option name. +8 Should be able to compile Vim in another directory, with $(srcdir) set to + where the sources are. Add $(srcdir) in the Makefile in a lot of places. + (Netherton) +6 Make it configurable when "J" inserts a space or not. Should not add a + space after "(", for example. +5 When inserting spaces after the end-of-line for 'virtualedit', use tabs + when the user wants this (e.g., add a "tab" field to 'virtualedit'). + (Servatius Brandt) + + +From Elvis: +- Use "instman.sh" to install manpages? +- Add ":alias" command. +- Search patterns: + \@ match word under cursor. + but do: + \@w match the word under the cursor? + \@W match the WORD under the cursor? +8 ":window" command: + :win + next window (up) + :win ++ idem, wrapping + :win - previous window (down) + :win -- idem, wrapping + :win nr to window number "nr" + :win name to window editing buffer "name" +7 ":cc" compiles a single file (default: current one). 'ccprg' option is + program to use with ":cc". Use ":compile" instead of ":cc"? + + +From xvi: +- CTRL-_ : swap 8th bit of character. +- Add egrep-like regex type, like xvi (Ned Konz) or Perl (Emmanuel Mogenet) + + +From vile: +- When horizontal scrolling, use '>' for lines continuing right of a window. +- Support putting .swp files in /tmp: Command in rc.local to move .swp files + from /tmp to some directory before deleting files. + + +Far future and "big" extensions: +- Instead of using a Makefile and autoconf, use a simple shell script to + find the C compiler and do everything with C code. Translate something + like an Aap recipe and configure.ac to C. Avoids depending on Python, + thus will work everywhere. With batch file to find the C compiler it + would also work on MS-Windows. +- Make it easy to setup Vim for groups of users: novice vi users, novice + Vim users, C programmers, xterm users, GUI users,... +- Change layout of blocks in swap file: Text at the start, with '\n' in + between lines (just load the file without changes, except for Mac). + Indexes for lines are from the end of the block backwards. It's the + current layout mirrored. +- Make it possible to edit a register, in a window, like a buffer. +- Add stuff to syntax highlighting to change the text (upper-case keywords, + set indent, define other highlighting, etc.). +- Mode to keep C-code formatted all the time (sort of on-line indent). +- Several top-level windows in one Vim session. Be able to use a different + font in each top-level window. +- Allow editing above start and below end of buffer (flag in 'virtualedit'). +- Smart cut/paste: recognize words and adjust spaces before/after them. +- Add open mode, use it when terminal has no cursor positioning. +- Special "drawing mode": a line is drawn where the cursor is moved to. + Backspace deletes along the line (from jvim). +- Support for underlining (underscore-BS-char), bold (char-BS-char) and other + standout modes switched on/off with , 'overstrike' option (Reiter). +- Add vertical mode (Paul Jury, Demirel): "5vdw" deletes a word in five + lines, "3vitextESC" will insert "text" in three lines, etc.. +4 Recognize l, #, p as 'flags' to EX commands: + :g/RE/#l shall print lines with line numbers and in list format. + :g/RE/dp shall print lines that are deleted. + POSIX: Commands where flags shall apply to all lines written: list, + number, open, print, substitute, visual, &, z. For other commands, flags + shall apply to the current line after the command completes. Examples: + :7,10j #l Join the lines 7-10 and print the result in list +- Allow two or more users to edit the same file at the same time. Changes + are reflected in each Vim immediately. Could work with local files but + also over the internet. See http://www.codingmonkeys.de/subethaedit/. + +vim:tw=78:sw=4:sts=4:ts=8:noet:ft=help:norl: +vim: set fo+=n : diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt new file mode 100644 index 0000000..6b77050 --- /dev/null +++ b/runtime/doc/uganda.txt @@ -0,0 +1,259 @@ +*uganda.txt* For Vim version 9.1. Last change: 2022 Mar 02 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *uganda* *Uganda* *copying* *copyright* *license* +SUMMARY + *iccf* *ICCF* +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: + + https://iccf-holland.org/ + https://www.vim.org/iccf/ + https://www.iccf.nl/ + +You can also sponsor the development of Vim. Vim sponsors can vote for +features. See |sponsor|. The money goes to Uganda anyway. + +The Open Publication License applies to the Vim documentation, see +|manual-copyright|. + +=== begin of license === + +VIM LICENSE + +I) There are no restrictions on distributing unmodified copies of Vim except + that they must include this license text. You can also distribute + unmodified parts of Vim, likewise unrestricted except that they must + include this license text. You are also allowed to include executables + that you made from the unmodified Vim sources, plus your own usage + examples and Vim scripts. + +II) It is allowed to distribute a modified (or extended) version of Vim, + including executables and/or source code, when the following four + conditions are met: + 1) This license text must be included unmodified. + 2) The modified Vim must be distributed in one of the following five ways: + a) If you make changes to Vim yourself, you must clearly describe in + the distribution how to contact you. When the maintainer asks you + (in any way) for a copy of the modified Vim you distributed, you + must make your changes, including source code, available to the + maintainer without fee. The maintainer reserves the right to + include your changes in the official version of Vim. What the + 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. + 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 + text under a) applies to those changes. + c) Provide all the changes, including source code, with every copy of + the modified Vim you distribute. This may be done in the form of a + context diff. You can choose what license to use for new code you + add. The changes and their license must not restrict others from + making their own changes to the official version of Vim. + d) When you have a modified Vim which includes changes as mentioned + under c), you can distribute it without the source code for the + changes if the following three conditions are met: + - The license that applies to the changes permits you to distribute + the changes to the Vim maintainer without fee or restriction, and + permits the Vim maintainer to include the changes in the official + version of Vim without fee or restriction. + - You keep the changes for at least three years after last + distributing the corresponding modified Vim. When the maintainer + or someone who you distributed the modified Vim to asks you (in + any way) for the changes within this period, you must make them + available to him. + - You clearly describe in the distribution how to contact you. This + contact information must remain valid for at least three years + after last distributing the corresponding modified Vim, or as long + as possible. + e) When the GNU General Public License (GPL) applies to the changes, + you can distribute the modified Vim under the GNU GPL version 2 or + any later version. + 3) A message must be added, at least in the output of the ":version" + command and in the intro screen, such that the user of the modified Vim + is able to see that it was modified. When distributing as mentioned + under 2)e) adding the message is only required for as far as this does + not conflict with the license used for the changes. + 4) The contact information as required under 2)a) and 2)d) must not be + removed or changed, except that the person himself can make + corrections. + +III) If you distribute a modified version of Vim, you are encouraged to use + the Vim license for your changes and make them available to the + maintainer, including the source code. The preferred way to do this is + by e-mail or by uploading the files to a server and e-mailing the URL. + If the number of changes is small (e.g., a modified Makefile) e-mailing a + context diff will do. The e-mail address to be used is + <maintainer@vim.org> + +IV) It is not allowed to remove this license from the distribution of the Vim + sources, parts of it or from a modified version. You may use this + license for previous Vim releases instead of the license that they came + with, at your option. + +=== end of license === + +Note: + +- If you are happy with Vim, please express that by reading the rest of this + file and consider helping needy children in Uganda. + +- If you want to support further Vim development consider becoming a + |sponsor|. The money goes to Uganda anyway. + +- According to Richard Stallman the Vim license is GNU GPL compatible. + A few minor changes have been made since he checked it, but that should not + make a difference. + +- If you link Vim with a library that goes under the GNU GPL, this limits + further distribution to the GNU GPL. Also when you didn't actually change + anything in Vim. + +- Once a change is included that goes under the GNU GPL, this forces all + further changes to also be made under the GNU GPL or a compatible license. + +- If you distribute a modified version of Vim, you can include your name and + contact information with the "--with-modified-by" configure argument or the + MODIFIED_BY define. + +============================================================================== +Kibaale Children's Centre *kcc* *Kibaale* *charity* + +Kibaale Children's Centre (KCC) is located in Kibaale, a small town in the +south of Uganda, near Tanzania, in East Africa. The area is known as Rakai +District. The population is mostly farmers. Although people are poor, there +usually is enough food. But this district is suffering from AIDS more than +any other part of the world. Some say that it started there. Estimations are +that in the past 10 to 30% of the Ugandans are infected with HIV. Because +parents die, there are many orphans. In this district about 60,000 children +have lost one or both parents, out of a population of 350,000. Although AIDS +is now mostly under control, the problems are still continuing. + +The children need a lot of help. The KCC is working hard to provide the needy +with food, medical care and education. Food and medical care to keep them +healthy now, and education so that they can take care of themselves in the +future. KCC works on a Christian base, but help is given to children of any +religion. + +The key to solving the problems in this area is education. This has been +neglected in the past years with president Idi Amin and the following civil +wars. Now that the government is stable again, the children and parents have +to learn how to take care of themselves and how to avoid infections. There is +also help for people who are ill and hungry, but the primary goal is to +prevent people from getting ill and to teach them how to grow healthy food. + +Most of the orphans are living in an extended family. An uncle or older +sister is taking care of them. Because these families are big and the income +(if any) is low, a child is lucky if it gets healthy food. Clothes, medical +care and schooling is beyond its reach. To help these needy children, a +sponsorship program was put into place. A child can be financially adopted. +For a few dollars a month KCC sees to it that the child gets indispensable +items, is healthy, goes to school and KCC takes care of anything else that +needs to be done for the child and the family that supports it. + +Besides helping the child directly, the environment where the child grows up +needs to be improved. KCC helps schools to improve their teaching methods. +There is a demonstration school at the centre and teacher trainings are given. +Health workers are being trained, hygiene education is carried out and +households are stimulated to build a proper latrine. I helped setting up a +production site for cement slabs. These are used to build a good latrine. +They are sold below cost price. + +There is a clinic at the project, which provides children and their family +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 +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. + +If you have any further questions, send me e-mail: <Bram@vim.org>. + +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. + + +USA: The methods mentioned below can be used. + If you must send a check send it to our Canadian partner: + https://www.kuwasha.net/ + +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. + Please send me a note so that I know what has been donated + because of Vim. Look on their site for information about + sponsorship: 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. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt new file mode 100644 index 0000000..40edf2f --- /dev/null +++ b/runtime/doc/undo.txt @@ -0,0 +1,429 @@ +*undo.txt* For Vim version 9.1. Last change: 2022 Jun 02 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Undo and redo *undo-redo* + +The basics are explained in section |02.5| of the user manual. + +1. Undo and redo commands |undo-commands| +2. Two ways of undo |undo-two-ways| +3. Undo blocks |undo-blocks| +4. Undo branches |undo-branches| +5. Undo persistence |undo-persistence| +6. Remarks about undo |undo-remarks| + +============================================================================== +1. Undo and redo commands *undo-commands* + +<Undo> or *undo* *<Undo>* *u* +u Undo [count] changes. + + *:u* *:un* *:undo* +:u[ndo] Undo one change. + *E830* +:u[ndo] {N} Jump to after change number {N}. See |undo-branches| + for the meaning of {N}. + + *CTRL-R* +CTRL-R Redo [count] changes which were undone. + + *:red* *:redo* *redo* +:red[o] Redo one change which was undone. + + *U* +U Undo all latest changes on one line, the line where + the latest change was made. |U| itself also counts as + a change, and thus |U| undoes a previous |U|. + +The last changes are remembered. You can use the undo and redo commands above +to revert the text to how it was before each change. You can also apply the +changes again, getting back the text before the undo. + +The "U" command is treated by undo/redo just like any other command. Thus a +"u" command undoes a "U" command and a 'CTRL-R' command redoes it again. When +mixing "U", "u" and 'CTRL-R' you will notice that the "U" command will +restore the situation of a line to before the previous "U" command. This may +be confusing. Try it out to get used to it. +The "U" command will always mark the buffer as changed. When "U" changes the +buffer back to how it was without changes, it is still considered changed. +Use "u" to undo changes until the buffer becomes unchanged. + +============================================================================== +2. Two ways of undo *undo-two-ways* + +How undo and redo commands work depends on the 'u' flag in 'cpoptions'. +There is the Vim way ('u' excluded) and the Vi-compatible way ('u' included). +In the Vim way, "uu" undoes two changes. In the Vi-compatible way, "uu" does +nothing (undoes an undo). + +'u' excluded, the Vim way: +You can go back in time with the undo command. You can then go forward again +with the redo command. If you make a new change after the undo command, +the redo will not be possible anymore. + +'u' included, the Vi-compatible way: +The undo command undoes the previous change, and also the previous undo +command. The redo command repeats the previous undo command. It does NOT +repeat a change command, use "." for that. + +Examples Vim way Vi-compatible way ~ +"uu" two times undo no-op +"u CTRL-R" no-op two times undo + +Rationale: Nvi uses the "." command instead of CTRL-R. Unfortunately, this + is not Vi compatible. For example "dwdwu." in Vi deletes two + words, in Nvi it does nothing. + +============================================================================== +3. Undo blocks *undo-blocks* + +One undo command normally undoes a typed command, no matter how many changes +that command makes. This sequence of undo-able changes forms an undo block. +Thus if the typed key(s) call a function, all the commands in the function are +undone together. + +If you want to write a function or script that doesn't create a new undoable +change but joins in with the previous change use this command: + + *:undoj* *:undojoin* *E790* +:undoj[oin] Join further changes with the previous undo block. + Warning: Use with care, it may prevent the user from + properly undoing changes. Don't use this after undo + or redo. + +This is most useful when you need to prompt the user halfway through a change. +For example in a function that calls |getchar()|. Do make sure that there was +a related change before this that you must join with. + +This doesn't work by itself, because the next key press will start a new +change again. But you can do something like this: > + + :undojoin | delete + +After this a "u" command will undo the delete command and the previous +change. + *undo-break* *undo-close-block* +To do the opposite, use a new undo block for the next change, in Insert mode +use CTRL-G u. This is useful if you want an insert command to be undoable in +parts. E.g., for each sentence. |i_CTRL-G_u| + +Setting the value of 'undolevels' also closes the undo block. Even when the +new value is equal to the old value. Use `g:undolevels` to explicitly read +and write only the global value of 'undolevels'. In |Vim9| script: > + &g:undolevels = &g:undolevels +In legacy script: > + let &g:undolevels = &g:undolevels + +Note that the similar-looking assignment `let &undolevels=&undolevels` does not +preserve the global option value of 'undolevels' in the event that the local +option has been set to a different value. For example: > + " Start with different global and local values for 'undolevels'. + let &g:undolevels = 1000 + let &l:undolevels = 2000 + " This assignment changes the global option to 2000: + let &undolevels = &undolevels + +============================================================================== +4. Undo branches *undo-branches* *undo-tree* + +Above we only discussed one line of undo/redo. But it is also possible to +branch off. This happens when you undo a few changes and then make a new +change. The undone changes become a branch. You can go to that branch with +the following commands. + +This is explained in the user manual: |usr_32.txt|. + + *:undol* *:undolist* +:undol[ist] List the leafs in the tree of changes. Example: + number changes when saved ~ + 88 88 2010/01/04 14:25:53 + 108 107 08/07 12:47:51 + 136 46 13:33:01 7 + 166 164 3 seconds ago + + The "number" column is the change number. This number + continuously increases and can be used to identify a + specific undo-able change, see |:undo|. + The "changes" column is the number of changes to this + leaf from the root of the tree. + The "when" column is the date and time when this + change was made. The four possible formats are: + N seconds ago + HH:MM:SS hour, minute, seconds + MM/DD HH:MM:SS idem, with month and day + YYYY/MM/DD HH:MM:SS idem, with year + The "saved" column specifies, if this change was + written to disk and which file write it was. This can + be used with the |:later| and |:earlier| commands. + For more details use the |undotree()| function. + + *g-* +g- Go to older text state. With a count repeat that many + times. + *:ea* *:earlier* +:earlier {count} Go to older text state {count} times. +:earlier {N}s Go to older text state about {N} seconds before. +:earlier {N}m Go to older text state about {N} minutes before. +:earlier {N}h Go to older text state about {N} hours before. +:earlier {N}d Go to older text state about {N} days before. + +:earlier {N}f Go to older text state {N} file writes before. + When changes were made since the last write + ":earlier 1f" will revert the text to the state when + it was written. Otherwise it will go to the write + before that. + When at the state of the first file write, or when + the file was not written, ":earlier 1f" will go to + before the first change. + + *g+* +g+ Go to newer text state. With a count repeat that many + times. + *:lat* *:later* +:later {count} Go to newer text state {count} times. +:later {N}s Go to newer text state about {N} seconds later. +:later {N}m Go to newer text state about {N} minutes later. +:later {N}h Go to newer text state about {N} hours later. +:later {N}d Go to newer text state about {N} days later. + +:later {N}f Go to newer text state {N} file writes later. + When at the state of the last file write, ":later 1f" + will go to the newest text state. + + +Note that text states will become unreachable when undo information is cleared +for 'undolevels'. + +Don't be surprised when moving through time shows multiple changes to take +place at a time. This happens when moving through the undo tree and then +making a new change. + +EXAMPLE + +Start with this text: + one two three ~ + +Delete the first word by pressing "x" three times: + ne two three ~ + e two three ~ + two three ~ + +Now undo that by pressing "u" three times: + e two three ~ + ne two three ~ + one two three ~ + +Delete the second word by pressing "x" three times: + one wo three ~ + one o three ~ + one three ~ + +Now undo that by using "g-" three times: + one o three ~ + one wo three ~ + two three ~ + +You are now back in the first undo branch, after deleting "one". Repeating +"g-" will now bring you back to the original text: + e two three ~ + ne two three ~ + one two three ~ + +Jump to the last change with ":later 1h": + one three ~ + +And back to the start again with ":earlier 1h": + one two three ~ + + +Note that using "u" and CTRL-R will not get you to all possible text states +while repeating "g-" and "g+" does. + +============================================================================== +5. Undo persistence *undo-persistence* *persistent-undo* + +When unloading a buffer Vim normally destroys the tree of undos created for +that buffer. By setting the 'undofile' option, Vim will automatically save +your undo history when you write a file and restore undo history when you edit +the file again. + +The 'undofile' option is checked after writing a file, before the BufWritePost +autocommands. If you want to control what files to write undo information +for, you can use a BufWritePre autocommand: > + au BufWritePre /tmp/* setlocal noundofile + +Vim saves undo trees in a separate undo file, one for each edited file, using +a simple scheme that maps filesystem paths directly to undo files. Vim will +detect if an undo file is no longer synchronized with the file it was written +for (with a hash of the file contents) and ignore it when the file was changed +after the undo file was written, to prevent corruption. An undo file is also +ignored if its owner differs from the owner of the edited file, except when +the owner of the undo file is the current user. Set 'verbose' to get a +message about that when opening a file. + +Undo files are normally saved in the same directory as the file. This can be +changed with the 'undodir' option. + +When the file is encrypted, the text in the undo file is also encrypted. The +same key and method is used. |encryption| + +Note that text properties are not stored in the undo file. You can restore +text properties so long as a buffer is loaded, but you cannot restore them +from an undo file. Rationale: It would require the associated text property +types to be defined in exactly the same was as before, which cannot be +guaranteed. + +You can also save and restore undo histories by using ":wundo" and ":rundo" +respectively: + *:wundo* *:rundo* +:wundo[!] {file} + Write undo history to {file}. + When {file} exists and it does not look like an undo file + (the magic number at the start of the file is wrong), then + this fails, unless the ! was added. + If it exists and does look like an undo file it is + overwritten. If there is no undo-history, nothing will be + written. + Implementation detail: Overwriting happens by first deleting + the existing file and then creating a new file with the same + name. So it is not possible to overwrite an existing undofile + in a write-protected directory. + +:rundo {file} Read undo history from {file}. + +You can use these in autocommands to explicitly specify the name of the +history file. E.g.: > + + au BufReadPost * call ReadUndo() + au BufWritePost * call WriteUndo() + func ReadUndo() + if filereadable(expand('%:h') .. '/UNDO/' .. expand('%:t')) + rundo %:h/UNDO/%:t + endif + endfunc + func WriteUndo() + let dirname = expand('%:h') .. '/UNDO' + if !isdirectory(dirname) + call mkdir(dirname) + endif + wundo %:h/UNDO/%:t + endfunc + +You should keep 'undofile' off, otherwise you end up with two undo files for +every write. + +You can use the |undofile()| function to find out the file name that Vim would +use. + +Note that while reading/writing files and 'undofile' is set most errors will +be silent, unless 'verbose' is set. With :wundo and :rundo you will get more +error messages, e.g., when the file cannot be read or written. + +NOTE: undo files are never deleted by Vim. You need to delete them yourself. + +Reading an existing undo file may fail for several reasons: +*E822* It cannot be opened, because the file permissions don't allow it. +*E823* The magic number at the start of the file doesn't match. This usually + means it is not an undo file. +*E824* The version number of the undo file indicates that it's written by a + newer version of Vim. You need that newer version to open it. Don't + write the buffer if you want to keep the undo info in the file. +"File contents changed, cannot use undo info" + The file text differs from when the undo file was written. This means + the undo file cannot be used, it would corrupt the text. This also + happens when 'encoding' differs from when the undo file was written. +*E825* The undo file does not contain valid contents and cannot be used. +*E826* The undo file is encrypted but decryption failed. +*E827* The undo file is encrypted but this version of Vim does not support + encryption. Open the file with another Vim. +*E832* The undo file is encrypted but 'key' is not set, the text file is not + encrypted. This would happen if the text file was written by Vim + encrypted at first, and later overwritten by not encrypted text. + You probably want to delete this undo file. +"Not reading undo file, owner differs" + The undo file is owned by someone else than the owner of the text + file. For safety the undo file is not used. + +Writing an undo file may fail for these reasons: +*E828* The file to be written cannot be created. Perhaps you do not have + write permissions in the directory. +"Cannot write undo file in any directory in 'undodir'" + None of the directories in 'undodir' can be used. +"Will not overwrite with undo file, cannot read" + A file exists with the name of the undo file to be written, but it + cannot be read. You may want to delete this file or rename it. +"Will not overwrite, this is not an undo file" + A file exists with the name of the undo file to be written, but it + does not start with the right magic number. You may want to delete + this file or rename it. +"Skipping undo file write, nothing to undo" + There is no undo information to be written, nothing has been changed + or 'undolevels' is negative. +*E829* An error occurred while writing the undo file. You may want to try + again. + +============================================================================== +6. Remarks about undo *undo-remarks* + +The number of changes that are remembered is set with the 'undolevels' option. +If it is zero, the Vi-compatible way is always used. If it is negative no +undo is possible. Use this if you are running out of memory. + + *clear-undo* +When you set 'undolevels' to -1 the undo information is not immediately +cleared, this happens at the next change. To force clearing the undo +information you can use these commands: > + :let old_undolevels = &l:undolevels + :setlocal undolevels=-1 + :exe "normal a \<BS>\<Esc>" + :let &l:undolevels = old_undolevels + :unlet old_undolevels + +Note use of `&l:undolevels` to explicitly read the local value of 'undolevels' +and the use of `:setlocal` to change only the local option (which takes +precedence over the corresponding global option value). Saving the option value +via the use of `&undolevels` is unpredictable; it reads either the local value +(if one has been set) or the global value (otherwise). Also, if a local value +has been set, changing the option via `:set undolevels` will change both the +global and local values, requiring extra work to save and restore both values. + +Marks for the buffer ('a to 'z) are also saved and restored, together with the +text. + +When all changes have been undone, the buffer is not considered to be changed. +It is then possible to exit Vim with ":q" instead of ":q!". Note +that this is relative to the last write of the file. Typing "u" after ":w" +actually changes the buffer, compared to what was written, so the buffer is +considered changed then. + +When manual |folding| is being used, the folds are not saved and restored. +Only changes completely within a fold will keep the fold as it was, because +the first and last line of the fold don't change. + +The numbered registers can also be used for undoing deletes. Each time you +delete text, it is put into register "1. The contents of register "1 are +shifted to "2, etc. The contents of register "9 are lost. You can now get +back the most recent deleted text with the put command: '"1P'. (also, if the +deleted text was the result of the last delete or copy operation, 'P' or 'p' +also works as this puts the contents of the unnamed register). You can get +back the text of three deletes ago with '"3P'. + + *redo-register* +If you want to get back more than one part of deleted text, you can use a +special feature of the repeat command ".". It will increase the number of the +register used. So if you first do '"1P', the following "." will result in a +'"2P'. Repeating this will result in all numbered registers being inserted. + +Example: If you deleted text with 'dd....' it can be restored with + '"1P....'. + +If you don't know in which register the deleted text is, you can use the +:display command. An alternative is to try the first register with '"1P', and +if it is not what you want do 'u.'. This will remove the contents of the +first put, and repeat the put command for the second register. Repeat the +'u.' until you got what you want. + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/userfunc.txt b/runtime/doc/userfunc.txt new file mode 100644 index 0000000..f6d3d0a --- /dev/null +++ b/runtime/doc/userfunc.txt @@ -0,0 +1,554 @@ +*userfunc.txt* For Vim version 9.1. Last change: 2023 May 23 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Defining and using functions. + +This is introduced in section |41.7| of the user manual. + +1. Defining a function |define-function| +2. Calling a function |:call| +3. Cleaning up in a function |:defer| +4. Automatically loading functions |autoload-functions| + +============================================================================== + +1. Defining a function ~ + *define-function* +New functions can be defined. These can be called just like builtin +functions. The function executes a sequence of Ex commands. Normal mode +commands can be executed with the |:normal| command. + +The function name must start with an uppercase letter, to avoid confusion with +builtin functions. To prevent from using the same name in different scripts +make them script-local. If you do use a global function then avoid obvious, +short names. A good habit is to start the function name with the name of the +script, e.g., "HTMLcolor()". + +In legacy script it is also possible to use curly braces, see +|curly-braces-names|. + +The |autoload| facility is useful to define a function only when it's called. + + *local-function* +A function local to a legacy script must start with "s:". A local script +function can only be called from within the script and from functions, user +commands and autocommands defined in the script. It is also possible to call +the function from a mapping defined in the script, but then |<SID>| must be +used instead of "s:" when the mapping is expanded outside of the script. +There are only script-local functions, no buffer-local or window-local +functions. + +In |Vim9| script functions are local to the script by default, prefix "g:" to +define a global function. + + *:fu* *:function* *E128* *E129* *E123* *E454* +:fu[nction] List all functions and their arguments. + +:fu[nction] {name} List function {name}. + {name} can also be a |Dictionary| entry that is a + |Funcref|: > + :function dict.init +< Note that {name} is not an expression, you cannot use + a variable that is a function reference. You can use + this dirty trick to list the function referred to with + variable "Funcref": > + let g:MyFuncref = Funcref + func g:MyFuncref + unlet g:MyFuncref + +:fu[nction] /{pattern} List functions with a name matching {pattern}. + Example that lists all functions ending with "File": > + :function /File$ +< + *:function-verbose* +When 'verbose' is non-zero, listing a function will also display where it was +last defined. Example: > + + :verbose function SetFileTypeSH + function SetFileTypeSH(name) + Last set from /usr/share/vim/vim-7.0/filetype.vim +< +See |:verbose-cmd| for more information. + + *E124* *E125* *E853* *E884* +:fu[nction][!] {name}([arguments]) [range] [abort] [dict] [closure] + Define a new function by the name {name}. The body of + the function follows in the next lines, until the + 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). + + {name} can also be a |Dictionary| entry that is a + |Funcref|: > + :function dict.init(arg) +< "dict" must be an existing dictionary. The entry + "init" is added if it didn't exist yet. Otherwise [!] + is required to overwrite an existing function. The + result is a |Funcref| to a numbered function. The + function can only be used with a |Funcref| and will be + deleted if there are no more references to it. + *E127* *E122* + When a function by this name already exists and [!] is + not used an error message is given. There is one + exception: When sourcing a script again, a function + that was previously defined in that script will be + silently replaced. + When [!] is used, an existing function is silently + replaced. Unless it is currently being executed, that + is an error. + NOTE: Use ! wisely. If used without care it can cause + an existing function to be replaced unexpectedly, + which is hard to debug. + NOTE: In Vim9 script script-local functions cannot be + deleted or redefined. + + For the {arguments} see |function-argument|. + + *:func-range* *a:firstline* *a:lastline* + When the [range] argument is added, the function is + expected to take care of a range itself. The range is + passed as "a:firstline" and "a:lastline". If [range] + is excluded, ":{range}call" will call the function for + each line in the range, with the cursor on the start + of each line. See |function-range-example|. + The cursor is still moved to the first line of the + range, as is the case with all Ex commands. + *:func-abort* + When the [abort] argument is added, the function will + abort as soon as an error is detected. + *:func-dict* + When the [dict] argument is added, the function must + be invoked through an entry in a |Dictionary|. The + local variable "self" will then be set to the + dictionary. See |Dictionary-function|. + *:func-closure* *E932* + When the [closure] argument is added, the function + can access variables and arguments from the outer + scope. This is usually called a closure. In this + example Bar() uses "x" from the scope of Foo(). It + remains referenced even after Foo() returns: > + :function! Foo() + : let x = 0 + : function! Bar() closure + : let x += 1 + : return x + : endfunction + : return funcref('Bar') + :endfunction + + :let F = Foo() + :echo F() +< 1 > + :echo F() +< 2 > + :echo F() +< 3 + + *function-search-undo* + The last used search pattern and the redo command "." + will not be changed by the function. This also + implies that the effect of |:nohlsearch| is undone + when the function returns. + + *:endf* *:endfunction* *E126* *E193* *W22* *E1151* +:endf[unction] [argument] + The end of a function definition. Best is to put it + on a line by its own, without [argument]. + + [argument] can be: + | command command to execute next + \n command command to execute next + " comment always ignored + anything else ignored, warning given when + 'verbose' is non-zero + The support for a following command was added in Vim + 8.0.0654, before that any argument was silently + ignored. + + To be able to define a function inside an `:execute` + command, use line breaks instead of |:bar|: > + :exe "func Foo()\necho 'foo'\nendfunc" +< + *:delf* *:delfunction* *E131* *E933* *E1084* +:delf[unction][!] {name} + Delete function {name}. + {name} can also be a |Dictionary| entry that is a + |Funcref|: > + :delfunc dict.init +< This will remove the "init" entry from "dict". The + function is deleted if there are no more references to + it. + 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 + evaluated and returned as the result of the function. + If "[expr]" is not given, the number 0 is returned. + When a function ends without an explicit ":return", + the number 0 is returned. + + In a :def function *E1095* is given if unreachable + code follows after the `:return`. + In legacy script there is no check for unreachable + lines, thus there is no warning if commands follow + `:return`. Also, there is no check if the following + line contains a valid command. Forgetting the line + continuation backslash may go unnoticed: > + return 'some text' + .. ' some more text' +< Will happily return "some text" without an error. It + should have been: > + return 'some text' + \ .. ' some more text' +< + If the ":return" is used after a |:try| but before the + matching |:finally| (if present), the commands + following the ":finally" up to the matching |:endtry| + are executed first. This process applies to all + nested ":try"s inside the function. The function + returns at the outermost ":endtry". + + *function-argument* *a:var* +An argument can be defined by giving its name. In the function this can then +be used as "a:name" ("a:" for argument) (in a `:def` function "a:" is not +used). + *a:0* *a:1* *a:000* *E740* *...* +Up to 20 arguments can be given, separated by commas. After the named +arguments an argument "..." can be specified, which means that more arguments +may optionally be following. In the function the extra arguments can be used +as "a:1", "a:2", etc. "a:0" is set to the number of extra arguments (which +can be 0). "a:000" is set to a |List| that contains these arguments. Note +that "a:1" is the same as "a:000[0]". + *E742* *E1090* +The a: scope and the variables in it cannot be changed, they are fixed. +However, if a composite type is used, such as |List| or |Dictionary| , you can +change their contents. Thus you can pass a |List| to a function and have the +function add an item to it. If you want to make sure the function cannot +change a |List| or |Dictionary| use |:lockvar|. + +It is also possible to define a function without any arguments. You must +still supply the () then. + +It is allowed to define another function inside a function body. + + *optional-function-argument* +You can provide default values for positional named arguments. This makes +them optional for function calls. When a positional argument is not +specified at a call, the default expression is used to initialize it. +This only works for functions declared with `:function` or `:def`, not for +lambda expressions |expr-lambda|. + +Example: > + function Something(key, value = 10) + echo a:key .. ": " .. a:value + endfunction + call Something('empty') "empty: 10" + call Something('key', 20) "key: 20" + +The argument default expressions are evaluated at the time of the function +call, not when the function is defined. Thus it is possible to use an +expression which is invalid the moment the function is defined. The +expressions are also only evaluated when arguments are not specified during a +call. + *none-function_argument* +You can pass |v:none| to use the default expression. Note that this means you +cannot pass v:none as an ordinary value when an argument has a default +expression. + +Example: > + function Something(a = 10, b = 20, c = 30) + endfunction + call Something(1, v:none, 3) " b = 20 +< + *E989* +Optional arguments with default expressions must occur after any mandatory +arguments. You can use "..." after all optional named arguments. + +It is possible for later argument defaults to refer to prior arguments, +but not the other way around. They must be prefixed with "a:", as with all +arguments. + +Example that works: > + :function Okay(mandatory, optional = a:mandatory) + :endfunction +Example that does NOT work: > + :function NoGood(first = a:second, second = 10) + :endfunction +< +When not using "...", the number of arguments in a function call must be at +least equal to the number of mandatory named arguments. When using "...", the +number of arguments may be larger than the total of mandatory and optional +arguments. + + *local-variables* +Inside a function local variables can be used. These will disappear when the +function returns. Global variables need to be accessed with "g:". +Inside functions local variables are accessed without prepending anything. +But you can also prepend "l:" if you like. This is required for some reserved +names, such as "count". + +Example: > + :function Table(title, ...) + : echohl Title + : echo a:title + : echohl None + : echo a:0 .. " items:" + : for s in a:000 + : echon ' ' .. s + : endfor + :endfunction + +This function can then be called with: > + call Table("Table", "line1", "line2") + call Table("Empty Table") + +To return more than one value, return a |List|: > + :function Compute(n1, n2) + : if a:n2 == 0 + : return ["fail", 0] + : endif + : return ["ok", a:n1 / a:n2] + :endfunction + +This function can then be called with: > + :let [success, div] = Compute(102, 6) + :if success == "ok" + : echo div + :endif +< +============================================================================== + +2. Calling a function ~ + *:cal* *:call* *E107* +:[range]cal[l] {name}([arguments]) + Call a function. The name of the function and its arguments + are as specified with `:function`. Up to 20 arguments can be + used. The returned value is discarded. + In |Vim9| script using `:call` is optional, these two lines do + the same thing: > + call SomeFunc(arg) + SomeFunc(arg) +< Without a range and for functions that accept a range, the + function is called once. When a range is given the cursor is + positioned at the start of the first line before executing the + function. + When a range is given and the function doesn't handle it + itself, the function is executed for each line in the range, + with the cursor in the first column of that line. The cursor + is left at the last line (possibly moved by the last function + call). The arguments are re-evaluated for each line. Thus + this works: + *function-range-example* > + :function Mynumber(arg) + : echo line(".") .. " " .. a:arg + :endfunction + :1,5call Mynumber(getline(".")) +< + The "a:firstline" and "a:lastline" are defined anyway, they + can be used to do something different at the start or end of + the range. + + Example of a function that handles the range itself: > + + :function Cont() range + : execute (a:firstline + 1) .. "," .. a:lastline .. 's/^/\t\\ ' + :endfunction + :4,8call Cont() +< + This function inserts the continuation character "\" in front + of all the lines in the range, except the first one. + + When the function returns a composite value it can be further + dereferenced, but the range will not be used then. Example: > + :4,8call GetDict().method() +< Here GetDict() gets the range but method() does not. + + *E117* +When a function cannot be found the error "E117: Unknown function" will be +given. If the function was using an autoload path or an autoload import and +the script is a |Vim9| script, this may also be caused by the function not +being exported. + + *E132* +The recursiveness of user functions is restricted with the |'maxfuncdepth'| +option. + +It is also possible to use `:eval`. It does not support a range, but does +allow for method chaining, e.g.: > + eval GetList()->Filter()->append('$') + +A function can also be called as part of evaluating an expression or when it +is used as a method: > + let x = GetList() + let y = GetList()->Filter() + +============================================================================== + +3. Cleaning up in a function ~ + *:defer* +:defer {func}({args}) Call {func} when the current function is done. + {args} are evaluated here. + +Quite often a command in a function has a global effect, which must be undone +when the function finishes. Handling this in all kinds of situations can be a +hassle. Especially when an unexpected error is encountered. This can be done +with `try` / `finally` blocks, but this gets complicated when there is more +than one. + +A much simpler solution is using `defer`. It schedules a function call when +the function is returning, no matter if there is an error. Example: > + func Filter(text) abort + call writefile(a:text, 'Tempfile') + call system('filter < Tempfile > Outfile') + call Handle('Outfile') + call delete('Tempfile') + call delete('Outfile') + endfunc + +Here 'Tempfile' and 'Outfile' will not be deleted if something causes the +function to abort. `:defer` can be used to avoid that: > + func Filter(text) abort + call writefile(a:text, 'Tempfile') + defer delete('Tempfile') + defer delete('Outfile') + call system('filter < Tempfile > Outfile') + call Handle('Outfile') + endfunc + +Note that deleting "Outfile" is scheduled before calling `system()`, since it +can be created even when `system()` fails. + +The deferred functions are called in reverse order, the last one added is +executed first. A useless example: > + func Useless() abort + for s in range(3) + defer execute('echomsg "number ' .. s .. '"') + endfor + endfunc + +Now `:messages` shows: + number 2 + number 1 + number 0 + +Any return value of the deferred function is discarded. The function cannot +be followed by anything, such as "->func" or ".member". Currently `:defer +GetArg()->TheFunc()` does not work, it may work in a later version. + +Errors are reported but do not cause aborting execution of deferred functions +or altering execution outside of deferred functions. + +No range is accepted. The function can be a partial with extra arguments, but +not with a dictionary. *E1300* + +============================================================================== + +4. Automatically loading functions ~ + *autoload-functions* +When using many or large functions, it's possible to automatically define them +only when they are used. There are two methods: with an autocommand and with +the "autoload" directory in 'runtimepath'. + +In |Vim9| script there is also an autoload mechanism for imported scripts, see +|import-autoload|. + + +Using an autocommand ~ + +This is introduced in the user manual, section |51.4|. + +The autocommand is useful if you have a plugin that is a long Vim script file. +You can define the autocommand and quickly quit the script with `:finish`. +That makes Vim startup faster. The autocommand should then load the same file +again, setting a variable to skip the `:finish` command. + +Use the FuncUndefined autocommand event with a pattern that matches the +function(s) to be defined. Example: > + + :au FuncUndefined BufNet* source ~/vim/bufnetfuncs.vim + +The file "~/vim/bufnetfuncs.vim" should then define functions that start with +"BufNet". Also see |FuncUndefined|. + + +Using an autoload script ~ + *autoload* *E746* +This is introduced in the user manual, section |52.2|. + +Using a script in the "autoload" directory is simpler, but requires using +exactly the right file name. A function that can be autoloaded has a name +like this: > + + :call filename#funcname() + +These functions are always global, in Vim9 script "g:" needs to be used: > + :call g:filename#funcname() + +When such a function is called, and it is not defined yet, Vim will search the +"autoload" directories in 'runtimepath' for a script file called +"filename.vim". For example "~/.vim/autoload/filename.vim". That file should +then define the function like this: > + + function filename#funcname() + echo "Done!" + endfunction + +If the file doesn't exist, Vim will also search in 'packpath' (under "start") +to allow calling packages' functions from your .vimrc when the packages have +not been added to 'runtimepath' yet (see |packages|). + +The file name and the name used before the # in the function must match +exactly, and the defined function must have the name exactly as it will be +called. In Vim9 script the "g:" prefix must be used: > + function g:filename#funcname() + +or for a compiled function: > + def g:filename#funcname() + +It is possible to use subdirectories. Every # in the function name works like +a path separator. Thus when calling a function: > + + :call foo#bar#func() + +Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'. + +This also works when reading a variable that has not been set yet: > + + :let l = foo#bar#lvar + +However, when the autoload script was already loaded it won't be loaded again +for an unknown variable. + +When assigning a value to such a variable nothing special happens. This can +be used to pass settings to the autoload script before it's loaded: > + + :let foo#bar#toggle = 1 + :call foo#bar#func() + +Note that when you make a mistake and call a function that is supposed to be +defined in an autoload script, but the script doesn't actually define the +function, you will get an error message for the missing function. If you fix +the autoload script it won't be automatically loaded again. Either restart +Vim or manually source the script. + +Also note that if you have two script files, and one calls a function in the +other and vice versa, before the used function is defined, it won't work. +Avoid using the autoload functionality at the toplevel. + +In |Vim9| script you will get error *E1263* if you define a function with +a "#" character in the name. You should use a name without "#" and use +`:export`. + +Hint: If you distribute a bunch of scripts you can pack them together with the +|vimball| utility. Also read the user manual |distribute-script|. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt new file mode 100644 index 0000000..fafb242 --- /dev/null +++ b/runtime/doc/usr_01.txt @@ -0,0 +1,192 @@ +*usr_01.txt* For Vim version 9.1. Last change: 2023 May 12 + + VIM USER MANUAL - by Bram Moolenaar + + About the manuals + + +This chapter introduces the manuals available with Vim. Read this to know the +conditions under which the commands are explained. + +|01.1| Two manuals +|01.2| Vim installed +|01.3| Using the Vim tutor +|01.4| Copyright + + Next chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*01.1* Two manuals + +The Vim documentation consists of two parts: + +1. The User manual + Task oriented explanations, from simple to complex. Reads from start to + end like a book. + +2. The Reference manual + Precise description of how everything in Vim works. + +The notation used in these manuals is explained here: |notation| + + +JUMPING AROUND + +The text contains hyperlinks between the two parts, allowing you to quickly +jump between the description of an editing task and a precise explanation of +the commands and options used for it. Use these two commands: + + Press CTRL-] to jump to a subject under the cursor. + Press CTRL-O to jump back (repeat to go further back). + +Many links are in vertical bars, like this: |bars|. The bars themselves may +be hidden or invisible; see below. An option name, like 'number', a command +in double quotes like ":write" and any other word can also be used as a link. +Try it out: Move the cursor to CTRL-] and press CTRL-] on it. + +Other subjects can be found with the ":help" command; see |help.txt|. + +The bars and stars are usually hidden with the |conceal| feature. They also +use |hl-Ignore|, using the same color for the text as the background. You can +make them visible with: > + :set conceallevel=0 + :hi link HelpBar Normal + :hi link HelpStar Normal + +============================================================================== +*01.2* Vim installed + +Most of the manuals assume that Vim has been properly installed. If you +didn't do that yet, or if Vim doesn't run properly (e.g., files can't be found +or in the GUI the menus do not show up) first read the chapter on +installation: |usr_90.txt|. + *not-compatible* +The manuals often assume you are using Vim with Vi-compatibility switched +off. For most commands this doesn't matter, but sometimes it is important, +e.g., for multi-level undo. An easy way to make sure you are using a nice +setup is to copy the example vimrc file. By doing this inside Vim you don't +have to check out where it is located. How to do this depends on the system +you are using: + +Unix: > + :!cp -i $VIMRUNTIME/vimrc_example.vim ~/.vimrc +MS-Windows: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/_vimrc +Amiga: > + :!copy $VIMRUNTIME/vimrc_example.vim $VIM/.vimrc + +If the file already exists you probably want to keep it. + +If you start Vim now, the 'compatible' option should be off. You can check it +with this command: > + + :set compatible? + +If it responds with "nocompatible" you are doing well. If the response is +"compatible" you are in trouble. You will have to find out why the option is +still set. Perhaps the file you wrote above is not found. Use this command +to find out: > + + :scriptnames + +If your file is not in the list, check its location and name. If it is in the +list, there must be some other place where the 'compatible' option is switched +back on. + +For more info see |vimrc| and |compatible-default|. + + Note: + This manual is about using Vim in the normal way. There is an + alternative called "evim" (easy Vim). This is still Vim, but used in + a way that resembles a click-and-type editor like Notepad. It always + stays in Insert mode, thus it feels very different. It is not + explained in the user manual, since it should be mostly + self-explanatory. See |evim-keys| for details. + +============================================================================== +*01.3* Using the Vim tutor *tutor* *vimtutor* + +Instead of reading the text (boring!) you can use the vimtutor to learn your +first Vim commands. This is a 30-minute tutorial that teaches the most basic +Vim functionality hands-on. + +On Unix, if Vim has been properly installed, you can start it from the shell: +> + vimtutor + +On MS-Windows you can find it in the Program/Vim menu. Or execute +vimtutor.bat in the $VIMRUNTIME directory. + +This will make a copy of the tutor file, so that you can edit it without +the risk of damaging the original. + There are a few translated versions of the tutor. To find out if yours is +available, use the two-letter language code. For French: > + + vimtutor fr + +On Unix, if you prefer using the GUI version of Vim, use "gvimtutor" or +"vimtutor -g" instead of "vimtutor". + +For OpenVMS, if Vim has been properly installed, you can start vimtutor from a +VMS prompt with: > + + @VIM:vimtutor + +Optionally add the two-letter language code as above. + + +On other systems, you have to do a little work: + +1. Copy the tutor file. You can do this with Vim (it knows where to find it): +> + vim --clean -c 'e $VIMRUNTIME/tutor/tutor' -c 'w! TUTORCOPY' -c 'q' +< + This will write the file "TUTORCOPY" in the current directory. To use a +translated version of the tutor, append the two-letter language code to the +filename. For French: +> + vim --clean -c 'e $VIMRUNTIME/tutor/tutor.fr' -c 'w! TUTORCOPY' -c 'q' +< +2. Edit the copied file with Vim: +> + vim --clean TUTORCOPY +< + The --clean argument makes sure Vim is started with nice defaults. + +3. Delete the copied file when you are finished with it: +> + del TUTORCOPY +< +============================================================================== +*01.4* Copyright *manual-copyright* + +The Vim user manual and reference manual are Copyright (c) 1988 by Bram +Moolenaar. This material may be distributed only subject to the terms and +conditions set forth in the Open Publication License, v1.0 or later. The +latest version is presently available at: + http://www.opencontent.org/openpub/ + +People who contribute to the manuals must agree with the above copyright +notice. + *frombook* +Parts of the user manual come from the book "Vi IMproved - Vim" by Steve +Oualline (published by New Riders Publishing, ISBN: 0735710015). The Open +Publication License applies to this book. Only selected parts are included +and these have been modified (e.g., by removing the pictures, updating the +text for Vim 6.0 and later, fixing mistakes). The omission of the |frombook| +tag does not mean that the text does not come from the book. + +Many thanks to Steve Oualline and New Riders for creating this book and +publishing it under the OPL! It has been a great help while writing the user +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|. + +============================================================================== + +Next chapter: |usr_02.txt| The first steps in Vim + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt new file mode 100644 index 0000000..486426e --- /dev/null +++ b/runtime/doc/usr_02.txt @@ -0,0 +1,702 @@ +*usr_02.txt* For Vim version 9.1. Last change: 2021 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + The first steps in Vim + + +This chapter provides just enough information to edit a file with Vim. Not +well or fast, but you can edit. Take some time to practice with these +commands, they form the base for what follows. + +|02.1| Running Vim for the First Time +|02.2| Inserting text +|02.3| Moving around +|02.4| Deleting characters +|02.5| Undo and Redo +|02.6| Other editing commands +|02.7| Getting out +|02.8| Finding help + + Next chapter: |usr_03.txt| Moving around + Previous chapter: |usr_01.txt| About the manuals +Table of contents: |usr_toc.txt| + +============================================================================== +*02.1* Running Vim for the First Time + +To start Vim, enter this command: > + + gvim file.txt + +In UNIX you can type this at any command prompt. If you are running Microsoft +Windows, open a Command Prompt and enter the command. + In either case, Vim starts editing a file called file.txt. Because this +is a new file, you get a blank window. This is what your screen will look +like: + + +---------------------------------------+ + |# | + |~ | + |~ | + |~ | + |~ | + |"file.txt" [New file] | + +---------------------------------------+ + ('#' is the cursor position.) + +The tilde (~) lines indicate lines not in the file. In other words, when Vim +runs out of file to display, it displays tilde lines. At the bottom of the +screen, a message line indicates the file is named file.txt and shows that you +are creating a new file. The message information is temporary and other +information overwrites it. + + +THE VIM COMMAND + +The gvim command causes the editor to create a new window for editing. If you +use this command: > + + vim file.txt + +the editing occurs inside your command window. In other words, if you are +running inside an xterm, the editor uses your xterm window. If you are using +an MS-Windows command prompt window, the editing occurs inside this window. +The text in the window will look the same for both versions, but with gvim you +have extra features, like a menu bar. More about that later. + +============================================================================== +*02.2* Inserting text + +The Vim editor is a modal editor. That means that the editor behaves +differently, depending on which mode you are in. The two basic modes are +called Normal mode and Insert mode. In Normal mode the characters you type +are commands. In Insert mode the characters are inserted as text. + Since you have just started Vim it will be in Normal mode. To start Insert +mode you type the "i" command (i for Insert). Then you can enter +the text. It will be inserted into the file. Do not worry if you make +mistakes; you can correct them later. To enter the following programmer's +limerick, this is what you type: > + + iA very intelligent turtle + Found programming UNIX a hurdle + +After typing "turtle" you press the <Enter> key to start a new line. Finally +you press the <Esc> key to stop Insert mode and go back to Normal mode. You +now have two lines of text in your Vim window: + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +WHAT IS THE MODE? + +To be able to see what mode you are in, type this command: > + + :set showmode + +You will notice that when typing the colon Vim moves the cursor to the last +line of the window. That's where you type colon commands (commands that start +with a colon). Finish this command by pressing the <Enter> key (all commands +that start with a colon are finished this way). + Now, if you type the "i" command Vim will display --INSERT-- at the bottom +of the window. This indicates you are in Insert mode. + + +---------------------------------------+ + |A very intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + |-- INSERT -- | + +---------------------------------------+ + +If you press <Esc> to go back to Normal mode the last line will be made blank. + + +GETTING OUT OF TROUBLE + +One of the problems for Vim novices is mode confusion, which is caused by +forgetting which mode you are in or by accidentally typing a command that +switches modes. To get back to Normal mode, no matter what mode you are in, +press the <Esc> key. Sometimes you have to press it twice. If Vim beeps back +at you, you already are in Normal mode. + +============================================================================== +*02.3* Moving around + +After you return to Normal mode, you can move around by using these keys: + + h left *hjkl* + j down + k up + l right + +At first, it may appear that these commands were chosen at random. After all, +who ever heard of using l for right? But actually, there is a very good +reason for these choices: Moving the cursor is the most common thing you do in +an editor, and these keys are on the home row of your right hand. In other +words, these commands are placed where you can type them the fastest +(especially when you type with ten fingers). + + Note: + You can also move the cursor by using the arrow keys. If you do, + however, you greatly slow down your editing because to press the arrow + keys, you must move your hand from the text keys to the arrow keys. + Considering that you might be doing it hundreds of times an hour, this + can take a significant amount of time. + Also, there are keyboards which do not have arrow keys, or which + locate them in unusual places; therefore, knowing the use of the hjkl + keys helps in those situations. + +One way to remember these commands is that h is on the left, l is on the +right and j points down. In a picture: > + + k + h l + j + +The best way to learn these commands is by using them. Use the "i" command to +insert some more lines of text. Then use the hjkl keys to move around and +insert a word somewhere. Don't forget to press <Esc> to go back to Normal +mode. The |vimtutor| is also a nice way to learn by doing. + +For Japanese users, Hiroshi Iwatani suggested using this: + + Komsomolsk + ^ + | + Huan Ho <--- ---> Los Angeles + (Yellow river) | + v + Java (the island, not the programming language) + +============================================================================== +*02.4* Deleting characters + +To delete a character, move the cursor over it and type "x". (This is a +throwback to the old days of the typewriter, when you deleted things by typing +xxxx over them.) Move the cursor to the beginning of the first line, for +example, and type xxxxxxx (seven x's) to delete "A very ". The result should +look like this: + + +---------------------------------------+ + |intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + +Now you can insert new text, for example by typing: > + + iA young <Esc> + +This begins an insert (the i), inserts the words "A young", and then exits +insert mode (the final <Esc>). The result: + + +---------------------------------------+ + |A young intelligent turtle | + |Found programming UNIX a hurdle | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE + +To delete a whole line use the "dd" command. The following line will +then move up to fill the gap: + + +---------------------------------------+ + |Found programming UNIX a hurdle | + |~ | + |~ | + |~ | + | | + +---------------------------------------+ + + +DELETING A LINE BREAK + +In Vim you can join two lines together, which means that the line break +between them is deleted. The "J" command does this. + Take these two lines: + + A young intelligent ~ + turtle ~ + +Move the cursor to the first line and press "J": + + A young intelligent turtle ~ + +============================================================================== +*02.5* Undo and Redo + +Suppose you delete too much. Well, you can type it in again, but an easier +way exists. The "u" command undoes the last edit. Take a look at this in +action: After using "dd" to delete the first line, "u" brings it back. + Another one: Move the cursor to the A in the first line: + + A young intelligent turtle ~ + +Now type xxxxxxx to delete "A young". The result is as follows: + + intelligent turtle ~ + +Type "u" to undo the last delete. That delete removed the g, so the undo +restores the character. + + g intelligent turtle ~ + +The next "u" command restores the next-to-last character deleted: + + ng intelligent turtle ~ + +The next "u" command gives you the u, and so on: + + ung intelligent turtle ~ + oung intelligent turtle ~ + young intelligent turtle ~ + young intelligent turtle ~ + A young intelligent turtle ~ + + Note: + If you type "u" twice, and the result is that you get the same text + back, you have Vim configured to work Vi compatible. Look here to fix + this: |not-compatible|. + This text assumes you work "The Vim Way". You might prefer to use + the good old Vi way, but you will have to watch out for small + differences in the text then. + + +REDO + +If you undo too many times, you can press CTRL-R (redo) to reverse the +preceding command. In other words, it undoes the undo. To see this in +action, press CTRL-R twice. The character A and the space after it disappear: + + young intelligent turtle ~ + +There's a special version of the undo command, the "U" (undo line) command. +The undo line command undoes all the changes made on the last line that was +edited. Typing this command twice cancels the preceding "U". + + A very intelligent turtle ~ + xxxx Delete very + + A intelligent turtle ~ + xxxxxx Delete turtle + + A intelligent ~ + Restore line with "U" + A very intelligent turtle ~ + Undo "U" with "u" + A intelligent ~ + +The "U" command is a change by itself, which the "u" command undoes and CTRL-R +redoes. This might be a bit confusing. Don't worry, with "u" and CTRL-R you +can go to any of the situations you had. More about that in section |32.2|. + +============================================================================== +*02.6* Other editing commands + +Vim has a large number of commands to change the text. See |Q_in| and below. +Here are a few often used ones. + + +APPENDING + +The "i" command inserts a character before the character under the cursor. +That works fine; but what happens if you want to add stuff to the end of the +line? For that you need to insert text after the cursor. This is done with +the "a" (append) command. + For example, to change the line + + and that's not saying much for the turtle. ~ +to + and that's not saying much for the turtle!!! ~ + +move the cursor over to the dot at the end of the line. Then type "x" to +delete the period. The cursor is now positioned at the end of the line on the +e in turtle. Now type > + + a!!!<Esc> + +to append three exclamation points after the e in turtle: + + and that's not saying much for the turtle!!! ~ + + +OPENING UP A NEW LINE + +The "o" command creates a new, empty line below the cursor and puts Vim in +Insert mode. Then you can type the text for the new line. + Suppose the cursor is somewhere in the first of these two lines: + + A very intelligent turtle ~ + Found programming UNIX a hurdle ~ + +If you now use the "o" command and type new text: > + + oThat liked using Vim<Esc> + +The result is: + + A very intelligent turtle ~ + That liked using Vim ~ + Found programming UNIX a hurdle ~ + +The "O" command (uppercase) opens a line above the cursor. + + +USING A COUNT + +Suppose you want to move up nine lines. You can type "kkkkkkkkk" or you can +enter the command "9k". In fact, you can precede many commands with a number. +Earlier in this chapter, for instance, you added three exclamation points to +the end of a line by typing "a!!!<Esc>". Another way to do this is to use the +command "3a!<Esc>". The count of 3 tells the command that follows to triple +its effect. Similarly, to delete three characters, use the command "3x". The +count always comes before the command it applies to. + +============================================================================== +*02.7* Getting out + +To exit, use the "ZZ" command. This command writes the file and exits. + + Note: + Unlike many other editors, Vim does not automatically make a backup + file. If you type "ZZ", your changes are committed and there's no + turning back. You can configure the Vim editor to produce backup + files; see |07.4|. + + +DISCARDING CHANGES + +Sometimes you will make a sequence of changes and suddenly realize you were +better off before you started. Not to worry; Vim has a +quit-and-throw-things-away command. It is: > + + :q! + +Don't forget to press <Enter> to finish the command. + +For those of you interested in the details, the three parts of this command +are the colon (:), which enters Command-line mode; the q command, which tells +the editor to quit; and the override command modifier (!). + The override command modifier is needed because Vim is reluctant to throw +away changes. If you were to just type ":q", Vim would display an error +message and refuse to exit: + + E37: No write since last change (use ! to override) ~ + +By specifying the override, you are in effect telling Vim, "I know that what +I'm doing looks stupid, but I really want to do this." + +If you want to continue editing with Vim: The ":e!" command reloads the +original version of the file. + +============================================================================== +*02.8* Finding help + +Everything you always wanted to know can be found in the Vim help files. +Don't be afraid to ask! + +If you know what you are looking for, it is usually easier to search for it +using the help system, instead of using Google. Because the subjects follow +a certain style guide. + +Also the help has the advantage of belonging to your particular Vim version. +You won't see help for commands added later. These would not work for you. + +To get generic help use this command: > + + :help + +You could also use the first function key <F1>. If your keyboard has a <Help> +key it might work as well. + If you don't supply a subject, ":help" displays the general help window. +The creators of Vim did something very clever (or very lazy) with the help +system: They made the help window a normal editing window. You can use all +the normal Vim commands to move through the help information. Therefore h, j, +k, and l move left, down, up and right. + To get out of the help window, use the same command you use to get out of +the editor: "ZZ". This will only close the help window, not exit Vim. + +As you read the help text, you will notice some text enclosed in vertical bars +(for example, |help|). This indicates a hyperlink. If you position the +cursor anywhere between the bars and press CTRL-] (jump to tag), the help +system takes you to the indicated subject. (For reasons not discussed here, +the Vim terminology for a hyperlink is tag. So CTRL-] jumps to the location +of the tag given by the word under the cursor.) + After a few jumps, you might want to go back. CTRL-T (pop tag) takes you +back to the preceding position. CTRL-O (jump to older position) also works +nicely here. + At the top of the help screen, there is the notation *help.txt*. This name +between "*" characters is used by the help system to define a tag (hyperlink +destination). + See |29.1| for details about using tags. + +To get help on a given subject, use the following command: > + + :help {subject} + +To get help on the "x" command, for example, enter the following: > + + :help x + +To find out how to delete text, use this command: > + + :help deleting + +To get a complete index of all Vim commands, use the following command: > + + :help index + +When you need to get help for a control character command (for example, +CTRL-A), you need to spell it with the prefix "CTRL-". > + + :help CTRL-A + +The Vim editor has many different modes. By default, the help system displays +the normal-mode commands. For example, the following command displays help +for the normal-mode CTRL-H command: > + + :help CTRL-H + +To identify other modes, use a mode prefix. If you want the help for the +insert-mode version of a command, use "i_". For CTRL-H this gives you the +following command: > + + :help i_CTRL-H + +When you start the Vim editor, you can use several command-line arguments. +These all begin with a dash (-). To find what the -t argument does, for +example, use the command: > + + :help -t + +The Vim editor has a number of options that enable you to configure and +customize the editor. If you want help for an option, you need to enclose it +in single quotation marks. To find out what the 'number' option does, for +example, use the following command: > + + :help 'number' + +The table with all mode prefixes can be found below: |help-summary|. + +Special keys are enclosed in angle brackets. To find help on the up-arrow key +in Insert mode, for instance, use this command: > + + :help i_<Up> + +If you see an error message that you don't understand, for example: + + E37: No write since last change (use ! to override) ~ + +You can use the error ID at the start to find help about it: > + + :help E37 + + +Summary: *help-summary* > + +1) Use Ctrl-D after typing a topic and let Vim show all available topics. + Or press Tab to complete: > + :help some<Tab> +< More information on how to use the help: > + :help helphelp + +2) Follow the links in bars to related help. You can go from the detailed + help to the user documentation, which describes certain commands more from + a user perspective and less detailed. E.g. after: > + :help pattern.txt +< 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: > + :help 'list' +< If you only know you are looking for a certain option, you can also do: > + :help options.txt +< to open the help page which describes all option handling and then search + using regular expressions, e.g. textwidth. + Certain options have their own namespace, e.g.: > + :help cpo-<letter> +< for the corresponding flag of the 'cpoptions' settings, substitute <letter> + by a specific flag, e.g.: > + :help cpo-; +< And for the 'guioptions' flags: > + :help go-<letter> + +4) Normal mode commands do not have a prefix. To go to the help page for the + "gt" command: > + :help gt + +5) Insert mode commands start with i_. Help for deleting a word: > + :help i_CTRL-W + +6) Visual mode commands start with v_. Help for jumping to the other side of + the Visual area: > + :help v_o + +7) Command line editing and arguments start with c_. Help for using the + command argument %: > + :help c_% + +8) Ex-commands always start with ":", so to go to the ":s" command help: > + :help :s + +9) Commands specifically for debugging start with ">". To go to the help + for the "cont" debug command: > + :help >cont + +10) Key combinations. They usually start with a single letter indicating + the mode for which they can be used. E.g.: > + :help i_CTRL-X +< takes you to the family of CTRL-X commands for insert mode which can be + used to auto-complete different things. Note, that certain keys will + always be written the same, e.g. Control will always be CTRL. + For normal mode commands there is no prefix and the topic is available at + :h CTRL-<Letter>. E.g. > + :help CTRL-W +< In contrast > + :help c_CTRL-R +< will describe what the CTRL-R does when entering commands in the Command + line and > + :help v_CTRL-A +< talks about incrementing numbers in visual mode and > + :help g_CTRL-A +< talks about the "g<C-A>" command (e.g. you have to press "g" then + <CTRL-A>). Here the "g" stands for the normal command "g" which always + expects a second key before doing something similar to the commands + starting with "z". + +11) Regexp items always start with /. So to get help for the "\+" quantifier + in Vim regexes: > + :help /\+ +< If you need to know everything about regular expressions, start reading + at: > + :help pattern.txt + +12) Registers always start with "quote". To find out about the special ":" + register: > + :help quote: + +13) Vim script is available at > + :help eval.txt +< Certain aspects of the language are available at :h expr-X where "X" is a + single letter. E.g. > + :help expr-! +< will take you to the topic describing the "!" (Not) operator for Vim + script. + Also important is > + :help function-list +< to find a short description of all functions available. Help topics for + Vim script functions always include the "()", so: > + :help append() +< talks about the append Vim script function rather than how to append text + in the current buffer. + +14) Mappings are talked about in the help page :h |map.txt|. Use > + :help mapmode-i +< to find out about the |:imap| command. Also use :map-topic + to find out about certain subtopics particular for mappings. e.g: > + :help :map-local +< for buffer-local mappings or > + :help map-bar +< for how the '|' is handled in mappings. + +15) Command definitions are talked about :h command-topic, so use > + :help command-bar +< to find out about the '!' argument for custom commands. + +16) Window management commands always start with CTRL-W, so you find the + corresponding help at :h CTRL-W_letter. E.g. > + :help CTRL-W_p +< for moving the previous accessed window. You can also access > + :help windows.txt +< and read your way through if you are looking for window handling + commands. + +17) Use |:helpgrep| to search in all help pages (and also of any installed + plugins). See |:helpgrep| for how to use it. + To search for a topic: > + :helpgrep topic +< This takes you to the first match. To go to the next one: > + :cnext +< All matches are available in the quickfix window which can be opened + with: > + :copen +< Move around to the match you like and press Enter to jump to that help. + +18) The user manual. This describes help topics for beginners in a rather + friendly way. Start at |usr_toc.txt| to find the table of content (as you + might have guessed): > + :help usr_toc.txt +< Skim over the contents to find interesting topics. The "Digraphs" and + "Entering special characters" items are in chapter 24, so to go to that + particular help page: > + :help usr_24.txt +< Also if you want to access a certain chapter in the help, the chapter + number can be accessed directly like this: > + :help 10.1 +< which goes to chapter 10.1 in |usr_10.txt| and talks about recording + macros. + +19) Highlighting groups. Always start with hl-groupname. E.g. > + :help hl-WarningMsg +< talks about the WarningMsg highlighting group. + +20) Syntax highlighting is namespaced to :syn-topic. E.g. > + :help :syn-conceal +< talks about the conceal argument for the ":syn" command. + +21) Quickfix commands usually start with :c while location list commands + usually start with :l + +22) Autocommand events can be found by their name: > + :help BufWinLeave +< To see all possible events: > + :help autocommand-events + +23) Command-line switches always start with "-". So for the help of the -f + command switch of Vim use: > + :help -f + +24) Optional features always start with "+". To find out about the + conceal feature use: > + :help +conceal + +25) Documentation for included filetype specific functionality is usually + available in the form ft-<filetype>-<functionality>. So > + :help ft-c-syntax +< talks about the C syntax file and the option it provides. Sometimes, + additional sections for omni completion > + :help ft-php-omni +< or filetype plugins > + :help ft-tex-plugin +< are available. + +26) Error and Warning codes can be looked up directly in the help. So > + :help E297 +< takes you exactly to the description of the swap error message and > + :help W10 +< talks about the warning "Changing a readonly file". + Sometimes, however, those error codes are not described, but rather are + listed at the Vim command that usually causes this. So: > + :help E128 +< takes you to the |:function| command + + +============================================================================== + +Next chapter: |usr_03.txt| Moving around + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt new file mode 100644 index 0000000..eb9e311 --- /dev/null +++ b/runtime/doc/usr_03.txt @@ -0,0 +1,663 @@ +*usr_03.txt* For Vim version 9.1. Last change: 2023 Mar 13 + + VIM USER MANUAL - by Bram Moolenaar + + Moving around + + +Before you can insert or delete text the cursor has to be moved to the right +place. Vim has a large number of commands to position the cursor. This +chapter shows you how to use the most important ones. You can find a list of +these commands below |Q_lr|. + +|03.1| Word movement +|03.2| Moving to the start or end of a line +|03.3| Moving to a character +|03.4| Matching a parenthesis +|03.5| Moving to a specific line +|03.6| Telling where you are +|03.7| Scrolling around +|03.8| Simple searches +|03.9| Simple search patterns +|03.10| Using marks + + Next chapter: |usr_04.txt| Making small changes + Previous chapter: |usr_02.txt| The first steps in Vim +Table of contents: |usr_toc.txt| + +============================================================================== +*03.1* Word movement + +To move the cursor forward one word, use the "w" command. Like most Vim +commands, you can use a numeric prefix to move past multiple words. For +example, "3w" moves three words. This figure shows how it works (starting at +the position marked with "x"): + + This is a line with example text ~ + x-->-->->-----------------> + w w w 3w + +Notice that "w" moves to the start of the next word if it already is at the +start of a word. + The "b" command moves backward to the start of the previous word: + + This is a line with example text ~ + <----<--<-<---------<--x + b b b 2b b + +There is also the "e" command that moves to the next end of a word and "ge", +which moves to the previous end of a word: + + This is a line with example text ~ + <----<----x---->------------> + 2ge ge e 2e + +If you are at the last word of a line, the "w" command will take you to the +first word in the next line. Thus you can use this to move through a +paragraph, much faster than using "l". "b" does the same in the other +direction. + +A word ends at a non-word character, such as a ".", "-" or ")". To change +what Vim considers to be a word, see the 'iskeyword' option. If you try this +out in the help directly, 'iskeyword' needs to be reset for the examples to +work: > + :set iskeyword& +It is also possible to move by white-space separated WORDs. This is not a +word in the normal sense, that's why the uppercase is used. The commands for +moving by WORDs are also uppercase, as this figure shows: + + ge b w e + <- <- ---> ---> + This is-a line, with special/separated/words (and some more). ~ + <----- <----- --------------------> -----> + gE B W E + +With this mix of lowercase and uppercase commands, you can quickly move +forward and backward through a paragraph. + +============================================================================== +*03.2* Moving to the start or end of a line + +The "$" command moves the cursor to the end of a line. If your keyboard has +an <End> key it will do the same thing. + +The "^" command moves to the first non-blank character of the line. The "0" +command (zero) moves to the very first character of the line, and the <Home> +key does the same thing. In a picture ("." indicates a space): + + ^ + <-----------x + .....This is a line with example text ~ + <----------------x x--------------> + 0 $ + +(the "....." indicates blanks here) + + The "$" command takes a count, like most movement commands. But moving to +the end of the line several times doesn't make sense. Therefore it causes the +editor to move to the end of another line. For example, "1$" moves you to +the end of the first line (the one you're on), "2$" to the end of the next +line, and so on. + The "0" command doesn't take a count argument, because the "0" would be +part of the count. Unexpectedly, using a count with "^" doesn't have any +effect. + +============================================================================== +*03.3* Moving to a character + +One of the most useful movement commands is the single-character search +command. The command "fx" searches forward in the line for the single +character x. Hint: "f" stands for "Find". + For example, you are at the beginning of the following line. Suppose you +want to go to the h of human. Just execute the command "fh" and the cursor +will be positioned over the h: + + To err is human. To really foul up you need a computer. ~ + ---------->---------------> + fh fy + +This also shows that the command "fy" moves to the end of the word really. + You can specify a count; therefore, you can go to the "l" of "foul" with +"3fl": + + To err is human. To really foul up you need a computer. ~ + ---------------------> + 3fl + +The "F" command searches to the left: + + To err is human. To really foul up you need a computer. ~ + <--------------------- + Fh + +The "tx" command works like the "fx" command, except it stops one character +before the searched character. Hint: "t" stands for "To". The backward +version of this command is "Tx". + + To err is human. To really foul up you need a computer. ~ + <------------ -------------> + Th tn + +These four commands can be repeated with ";". "," repeats in the other +direction. The cursor is never moved to another line. Not even when the +sentence continues. + +Sometimes you will start a search, only to realize that you have typed the +wrong command. You type "f" to search backward, for example, only to realize +that you really meant "F". To abort a search, press <Esc>. So "f<Esc>" is an +aborted forward search and doesn't do anything. Note: <Esc> cancels most +operations, not just searches. + +============================================================================== +*03.4* Matching a parenthesis + +When writing a program you often end up with nested () constructs. Then the +"%" command is very handy: It moves to the matching paren. If the cursor is +on a "(" it will move to the matching ")". If it's on a ")" it will move to +the matching "(". + + % + <-----> + if (a == (b * c) / d) ~ + <----------------> + % + +This also works for [] and {} pairs. (This can be defined with the +'matchpairs' option.) + +When the cursor is not on a useful character, "%" will search forward to find +one. Thus if the cursor is at the start of the line of the previous example, +"%" will search forward and find the first "(". Then it moves to its match: + + if (a == (b * c) / d) ~ + ---+----------------> + % + +Other ways to move around code can be found in |usr_29.txt|. + +============================================================================== +*03.5* Moving to a specific line + +If you are a C or C++ programmer, you are familiar with error messages such as +the following: + + prog.c:33: j undeclared (first use in this function) ~ + +This tells you that you might want to fix something on line 33. So how do you +find line 33? One way is to do "9999k" to go to the top of the file and "32j" +to go down thirty-two lines. It is not a good way, but it works. A much +better way of doing things is to use the "G" command. With a count, this +command positions you at the given line number. For example, "33G" puts you +on line 33. (For a better way of going through a compiler's error list, see +|usr_30.txt|, for information on the :make command.) + With no argument, "G" positions you at the end of the file. A quick way to +go to the start of a file use "gg". "1G" will do the same, but is a tiny bit +more typing. + + | first line of a file ^ + | text text text text | + | text text text text | gg + 7G | text text text text | + | text text text text + | text text text text + V text text text text | + text text text text | G + text text text text | + last line of a file V + +Another way to move to a line is using the "%" command with a count. For +example "50%" moves you to halfway the file. "90%" goes to near the end. + +The previous assumes that you want to move to a line in the file, no matter if +it's currently visible or not. What if you want to move to one of the lines +you can see? This figure shows the three commands you can use: + + +---------------------------+ + H --> | text sample text | + | sample text | + | text sample text | + | sample text | + M --> | text sample text | + | sample text | + | text sample text | + | sample text | + L --> | text sample text | + +---------------------------+ + +Hints: "H" stands for Home, "M" for Middle and "L" for Last. Alternatively, +"H" for High, "M" for Middle and "L" for Low. + +============================================================================== +*03.6* Telling where you are + +To see where you are in a file, there are three ways: + +1. Use the CTRL-G command. You get a message like this (assuming the 'ruler' + option is off): + + "usr_03.txt" line 233 of 650 --35%-- col 45-52 ~ + + This shows the name of the file you are editing, the line number where the + cursor is, the total number of lines, the percentage of the way through + the file and the column of the cursor. + Sometimes you will see a split column number. For example, "col 2-9". + This indicates that the cursor is positioned on the second character, but + because character one is a tab, occupying eight spaces worth of columns, + the screen column is 9. + +2. Set the 'number' option. This will display a line number in front of + every line: > + + :set number +< + To switch this off again: > + + :set nonumber +< + Since 'number' is a boolean option, prepending "no" to its name has the + effect of switching it off. A boolean option has only these two values, + it is either on or off. + Vim has many options. Besides the boolean ones there are options with + a numerical value and string options. You will see examples of this where + they are used. + +3. Set the 'ruler' option. This will display the cursor position in the + lower right corner of the Vim window: > + + :set ruler + +Using the 'ruler' option has the advantage that it doesn't take much room, +thus there is more space for your text. + +============================================================================== +*03.7* Scrolling around + +The CTRL-U command scrolls down half a screen of text. Think of looking +through a viewing window at the text and moving this window up by half the +height of the window. Thus the window moves up over the text, which is +backward in the file. Don't worry if you have a little trouble remembering +which end is up. Most users have the same problem. + The CTRL-D command moves the viewing window down half a screen in the file, +thus scrolls the text up half a screen. + + +----------------+ + | some text | + | some text | + | some text | + +---------------+ | some text | + | some text | CTRL-U --> | | + | | | 123456 | + | 123456 | +----------------+ + | 7890 | + | | +----------------+ + | example | CTRL-D --> | 7890 | + +---------------+ | | + | example | + | example | + | example | + | example | + +----------------+ + +To scroll one line at a time use CTRL-E (scroll up) and CTRL-Y (scroll down). +Think of CTRL-E to give you one line Extra. (If you use MS-Windows compatible +key mappings CTRL-Y will redo a change instead of scroll.) + +To scroll forward by a whole screen (except for two lines) use CTRL-F. To +scroll backwards, use CTRL-B. These should be easy to remember: F for +Forwards and B for Backwards. + +A common issue is that after moving down many lines with "j" your cursor is at +the bottom of the screen. You would like to see the context of the line with +the cursor. That's done with the "zz" command. + + +------------------+ +------------------+ + | earlier text | | earlier text | + | earlier text | | earlier text | + | earlier text | | earlier text | + | earlier text | zz --> | line with cursor | + | earlier text | | later text | + | earlier text | | later text | + | line with cursor | | later text | + +------------------+ +------------------+ + +The "zt" command puts the cursor line at the top, "zb" at the bottom. There +are a few more scrolling commands, see |Q_sc|. To always keep a few lines of +context around the cursor, use the 'scrolloff' option. + +============================================================================== +*03.8* Simple searches + +To search for a string, use the "/string" command. To find the word include, +for example, use the command: > + + /include + +You will notice that when you type the "/" the cursor jumps to the last line +of the Vim window, like with colon commands. That is where you type the word. +You can press the backspace key (backarrow or <BS>) to make corrections. Use +the <Left> and <Right> cursor keys when necessary. + Pressing <Enter> executes the command. + + Note: + The characters .*[]^%/\?~$ have special meanings. If you want to use + them in a search you must put a \ in front of them. See below. + +To find the next occurrence of the same string use the "n" command. Use this +to find the first #include after the cursor: > + + /#include + +And then type "n" several times. You will move to each #include in the text. +You can also use a count if you know which match you want. Thus "3n" finds +the third match. You can also use a count with "/": "4/the" goes to the +fourth match of "the". + +The "?" command works like "/" but searches backwards: > + + ?word + +The "N" command repeats the last search the opposite direction. Thus using +"N" after a "/" command searches backwards, using "N" after "?" searches +forwards. + + +IGNORING CASE + +Normally you have to type exactly what you want to find. If you don't care +about upper or lowercase in a word, set the 'ignorecase' option: > + + :set ignorecase + +If you now search for "word", it will also match "Word" and "WORD". To match +case again: > + + :set noignorecase + + +HISTORY + +Suppose you do three searches: > + + /one + /two + /three + +Now let's start searching by typing a simple "/" without pressing <Enter>. If +you press <Up> (the cursor key), Vim puts "/three" on the command line. +Pressing <Enter> at this point searches for three. If you do not press +<Enter>, but press <Up> instead, Vim changes the prompt to "/two". Another +press of <Up> moves you to "/one". + You can also use the <Down> cursor key to move through the history of +search commands in the other direction. + +If you know what a previously used pattern starts with, and you want to use it +again, type that character before pressing <Up>. With the previous example, +you can type "/o<Up>" and Vim will put "/one" on the command line. + +The commands starting with ":" also have a history. That allows you to recall +a previous command and execute it again. These two histories are separate. + + +SEARCHING FOR A WORD IN THE TEXT + +Suppose you see the word "TheLongFunctionName" in the text and you want to +find the next occurrence of it. You could type "/TheLongFunctionName", but +that's a lot of typing. And when you make a mistake Vim won't find it. + There is an easier way: Position the cursor on the word and use the "*" +command. Vim will grab the word under the cursor and use it as the search +string. + The "#" command does the same in the other direction. You can prepend a +count: "3*" searches for the third occurrence of the word under the cursor. + + +SEARCHING FOR WHOLE WORDS + +If you type "/the" it will also match "there". To only find words that end +in "the" use: > + + /the\> + +The "\>" item is a special marker that only matches at the end of a word. +Similarly "\<" only matches at the beginning of a word. Thus to search for +the word "the" only: > + + /\<the\> + +This does not match "there" or "soothe". Notice that the "*" and "#" commands +use these start-of-word and end-of-word markers to only find whole words (you +can use "g*" and "g#" to match partial words). + + +HIGHLIGHTING MATCHES + +While editing a program you see a variable called "nr". You want to check +where it's used. You could move the cursor to "nr" and use the "*" command +and press "n" to go along all the matches. + There is another way. Type this command: > + + :set hlsearch + +If you now search for "nr", Vim will highlight all matches. That is a very +good way to see where the variable is used, without the need to type commands. + To switch this off: > + + :set nohlsearch + +Then you need to switch it on again if you want to use it for the next search +command. If you only want to remove the highlighting, use this command: > + + :nohlsearch + +This doesn't reset the option. Instead, it disables the highlighting. As +soon as you execute a search command, the highlighting will be used again. +Also for the "n" and "N" commands. + + +TUNING SEARCHES + +There are a few options that change how searching works. These are the +essential ones: +> + :set incsearch + +This makes Vim display the match for the string while you are still typing it. +Use this to check if the right match will be found. Then press <Enter> to +really jump to that location. Or type more to change the search string. +> + :set nowrapscan + +This stops the search at the end of the file. Or, when you are searching +backwards, it stops the search at the start of the file. The 'wrapscan' +option is on by default, thus searching wraps around the end of the file. + + +INTERMEZZO + +If you like one of the options mentioned before, and set it each time you use +Vim, you can put the command in your Vim startup file. + Edit the file, as mentioned at |not-compatible|. Or use this command to +find out where it is: > + + :scriptnames + +Edit the file, for example with: > + + :edit ~/.vimrc + +Then add a line with the command to set the option, just like you typed it in +Vim. Example: > + + Go:set hlsearch<Esc> + +"G" moves to the end of the file. "o" starts a new line, where you type the +":set" command. You end insert mode with <Esc>. Then write and close the +file: > + + ZZ + +If you now start Vim again, the 'hlsearch' option will already be set. + +============================================================================== +*03.9* Simple search patterns + +The Vim editor uses regular expressions to specify what to search for. +Regular expressions are an extremely powerful and compact way to specify a +search pattern. Unfortunately, this power comes at a price, because regular +expressions are a bit tricky to specify. + In this section we mention only a few essential ones. More about search +patterns and commands can be found in chapter 27 |usr_27.txt|. You can find +the full explanation here: |pattern|. + + +BEGINNING AND END OF A LINE + +The ^ character matches the beginning of a line. On an English-US keyboard +you find it above the 6. The pattern "include" matches the word include +anywhere on the line. But the pattern "^include" matches the word include +only if it is at the beginning of a line. + The $ character matches the end of a line. Therefore, "was$" matches the +word was only if it is at the end of a line. + +Let's mark the places where "/the" matches in this example line with "x"s: + + the solder holding one of the chips melted and the ~ + xxx xxx xxx + +Using "/the$" we find this match: + + the solder holding one of the chips melted and the ~ + xxx + +And with "/^the" we find this one: + the solder holding one of the chips melted and the ~ + xxx + +You can try searching with "/^the$"; it will only match a single line +consisting entirely of "the". White space does matter here, thus if a line +contains a space after the word, like "the ", the pattern will not match. + + +MATCHING ANY SINGLE CHARACTER + +The . (dot) character matches any existing character. For example, the +pattern "c.m" matches a string whose first character is a c, whose second +character is anything, and whose third character is m. Example: + + We use a computer that became the cummin winter. ~ + xxx xxx xxx + + +MATCHING SPECIAL CHARACTERS + +If you really want to match a dot, you must avoid its special meaning by +putting a backslash before it. + If you search for "ter.", you will find these matches: + + We use a computer that became the cummin winter. ~ + xxxx xxxx + +Searching for "ter\." only finds the second match. + +============================================================================== +*03.10* Using marks + +When you make a jump to a position with the "G" command, Vim remembers the +position from before this jump. This position is called a mark. To go back +where you came from, use this command: > + + `` + +This ` is a backtick or open single-quote character. + If you use the same command a second time you will jump back again. That's +because the "`" command is a jump itself, and the position from before this +jump is remembered. + +Generally, every time you do a command that can move the cursor further than +within the same line, this is called a jump. This includes the search +commands "/" and "n" (it doesn't matter how far away the match is). But not +the character searches with "fx" and "tx" or the word movements "w" and "e". + Also, "j" and "k" are not considered to be a jump, even when you use a +count to make them move the cursor quite a long way away. + +The "``" command jumps back and forth, between two points. The CTRL-O command +jumps to older positions (Hint: O for older). CTRL-I then jumps back to newer +positions (Hint: for many common keyboard layouts, I is just next to O). +Consider this sequence of commands: > + + 33G + /^The + CTRL-O + +You first jump to line 33, then search for a line that starts with "The". +Then with CTRL-O you jump back to line 33. Another CTRL-O takes you back to +where you started. If you now use CTRL-I you jump to line 33 again. And +to the match for "The" with another CTRL-I. + + + | example text ^ | + 33G | example text | CTRL-O | CTRL-I + | example text | | + V line 33 text ^ V + | example text | | + /^The | example text | CTRL-O | CTRL-I + V There you are | V + example text + + Note: + CTRL-I is the same as <Tab>. + +The ":jumps" command gives a list of positions you jumped to. The entry which +you used last is marked with a ">". + + +NAMED MARKS *bookmark* + +Vim enables you to place your own marks in the text. The command "ma" marks +the place under the cursor as mark a. You can place 26 marks (a through z) in +your text. You can't see them, it's just a position that Vim remembers. + To go to a mark, use the command `{mark}, where {mark} is the mark letter. +Thus to move to the a mark: +> + `a + +The command "'mark" (single quotation mark, or apostrophe) moves you to the +beginning of the line containing the mark. This differs from the "`mark" +command, which also moves you to the marked column. + +The marks can be very useful when working on two related parts in a file. +Suppose you have some text near the start of the file you need to look at, +while working on some text near the end of the file. + Move to the text at the start and place the s (start) mark there: > + + ms + +Then move to the text you want to work on and put the e (end) mark there: > + + me + +Now you can move around, and when you want to look at the start of the file, +you use this to jump there: > + + 's + +Then you can use '' to jump back to where you were, or 'e to jump to the text +you were working on at the end. + There is nothing special about using s for start and e for end, they are +just easy to remember. + +You can use this command to get a list of marks: > + + :marks + +You will notice a few special marks. These include: + + ' The cursor position before doing a jump + " The cursor position when last editing the file + [ Start of the last change + ] End of the last change + +============================================================================== + +Next chapter: |usr_04.txt| Making small changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_04.txt b/runtime/doc/usr_04.txt new file mode 100644 index 0000000..b81fccc --- /dev/null +++ b/runtime/doc/usr_04.txt @@ -0,0 +1,516 @@ +*usr_04.txt* For Vim version 9.1. Last change: 2021 Feb 22 + + VIM USER MANUAL - by Bram Moolenaar + + Making small changes + + +This chapter shows you several ways of making corrections and moving text +around. It teaches you the three basic ways to change text: operator-motion, +Visual mode and text objects. + +|04.1| Operators and motions +|04.2| Changing text +|04.3| Repeating a change +|04.4| Visual mode +|04.5| Moving text +|04.6| Copying text +|04.7| Using the clipboard +|04.8| Text objects +|04.9| Replace mode +|04.10| Conclusion + + Next chapter: |usr_05.txt| Set your settings + Previous chapter: |usr_03.txt| Moving around +Table of contents: |usr_toc.txt| + +============================================================================== +*04.1* Operators and motions + +In chapter 2 you learned the "x" command to delete a single character. And +using a count: "4x" deletes four characters. + The "dw" command deletes a word. You may recognize the "w" command as the +move word command. In fact, the "d" command may be followed by any motion +command, and it deletes from the current location to the place where the +cursor winds up. + The "4w" command, for example, moves the cursor over four words. The "d4w" +command deletes four words. + + To err is human. To really foul up you need a computer. ~ + ------------------> + d4w + + To err is human. you need a computer. ~ + +Vim only deletes up to the position where the motion takes the cursor. That's +because Vim knows that you probably don't want to delete the first character +of a word. If you use the "e" command to move to the end of a word, Vim +guesses that you do want to include that last character: + + To err is human. you need a computer. ~ + --------> + d2e + + To err is human. a computer. ~ + +Whether the character under the cursor is included depends on the command you +used to move to that character. The reference manual calls this "exclusive" +when the character isn't included and "inclusive" when it is. + +The "$" command moves to the end of a line. The "d$" command deletes from the +cursor to the end of the line. This is an inclusive motion, thus the last +character of the line is included in the delete operation: + + To err is human. a computer. ~ + ------------> + d$ + + To err is human ~ + +There is a pattern here: operator-motion. You first type an operator command. +For example, "d" is the delete operator. Then you type a motion command like +"4l" or "w". This way you can operate on any text you can move over. + +============================================================================== +*04.2* Changing text + +Another operator is "c", change. It acts just like the "d" operator, except +it leaves you in Insert mode. For example, "cw" changes a word. Or more +specifically, it deletes a word and then puts you in Insert mode. + + To err is human ~ + -------> + c2wbe<Esc> + + To be human ~ + +This "c2wbe<Esc>" contains these bits: + + c the change operator + 2w move two words (they are deleted and Insert mode started) + be insert this text + <Esc> back to Normal mode + +You will have noticed something strange: The space before "human" isn't +deleted. There is a saying that for every problem there is an answer that is +simple, clear, and wrong. That is the case with the example used here for the +"cw" command. The c operator works just like the d operator, with one +exception: "cw". It actually works like "ce", change to end of word. Thus +the space after the word isn't included. This is an exception that dates back +to the old Vi. Since many people are used to it now, the inconsistency has +remained in Vim. + + +MORE CHANGES + +Like "dd" deletes a whole line, "cc" changes a whole line. It keeps the +existing indent (leading white space) though. + +Just like "d$" deletes until the end of the line, "c$" changes until the end +of the line. It's like doing "d$" to delete the text and then "a" to start +Insert mode and append new text. + + +SHORTCUTS + +Some operator-motion commands are used so often that they have been given a +single-letter command: + + x stands for dl (delete character under the cursor) + X stands for dh (delete character left of the cursor) + D stands for d$ (delete to end of the line) + C stands for c$ (change to end of the line) + s stands for cl (change one character) + S stands for cc (change a whole line) + + +WHERE TO PUT THE COUNT + +The commands "3dw" and "d3w" delete three words. If you want to get really +picky about things, the first command, "3dw", deletes one word three times; +the command "d3w" deletes three words once. This is a difference without a +distinction. You can actually put in two counts, however. For example, +"3d2w" deletes two words, repeated three times, for a total of six words. + + +REPLACING WITH ONE CHARACTER + +The "r" command is not an operator. It waits for you to type a character, and +will replace the character under the cursor with it. You could do the same +with "cl" or with the "s" command, but with "r" you don't have to press <Esc> +to get back out of insert mode. + + there is somerhing grong here ~ + rT rt rw + + There is something wrong here ~ + +Using a count with "r" causes that many characters to be replaced with the +same character. Example: + + There is something wrong here ~ + 5rx + + There is something xxxxx here ~ + +To replace a character with a line break use "r<Enter>". This deletes one +character and inserts a line break. Using a count here only applies to the +number of characters deleted: "4r<Enter>" replaces four characters with one +line break. + +============================================================================== +*04.3* Repeating a change + +The "." command is one of the simplest yet powerful commands in Vim. It +repeats the last change. For instance, suppose you are editing an HTML file +and want to delete all the <B> tags. You position the cursor on the first < +and delete the <B> with the command "df>". You then go to the < of the next +</B> and delete it using the "." command. The "." command executes the last +change command (in this case, "df>"). To delete another tag, position the +cursor on the < and use the "." command. + + To <B>generate</B> a table of <B>contents ~ + f< find first < ---> + df> delete to > --> + f< find next < ---------> + . repeat df> ---> + f< find next < -------------> + . repeat df> --> + +The "." command works for all changes you make, except for "u" (undo), CTRL-R +(redo) and commands that start with a colon (:). + +Another example: You want to change the word "four" to "five". It appears +several times in your text. You can do this quickly with this sequence of +commands: + + /four<Enter> find the first string "four" + cwfive<Esc> change the word to "five" + n find the next "four" + . repeat the change to "five" + n find the next "four" + . repeat the change + etc. + +============================================================================== +*04.4* Visual mode + +To delete simple items the operator-motion changes work quite well. But often +it's not so easy to decide which command will move over the text you want to +change. Then you can use Visual mode. + +You start Visual mode by pressing "v". You move the cursor over the text you +want to work on. While you do this, the text is highlighted. Finally type +the operator command. + For example, to delete from the middle of one word to the middle of another +word: + + This is an examination sample of visual mode ~ + ----------> + velllld + + This is an example of visual mode ~ + +When doing this you don't really have to count how many times you have to +press "l" to end up in the right position. You can immediately see what text +will be deleted when you press "d". + +If at any time you decide you don't want to do anything with the highlighted +text, just press <Esc> and Visual mode will stop without doing anything. + + +SELECTING LINES + +If you want to work on whole lines, use "V" to start Visual mode. You will +see right away that the whole line is highlighted, without moving around. +When you move left or right nothing changes. When you move up or down the +selection is extended whole lines at a time. + For example, select three lines with "Vjj": + + +------------------------+ + | text more text | + >> | more text more text | | + selected lines >> | text text text | | Vjj + >> | text more | V + | more text more | + +------------------------+ + + +SELECTING BLOCKS + +If you want to work on a rectangular block of characters, use CTRL-V to start +Visual mode. This is very useful when working on tables. + + name Q1 Q2 Q3 + pierre 123 455 234 + john 0 90 39 + steve 392 63 334 + +To delete the middle "Q2" column, move the cursor to the "Q" of "Q2". Press +CTRL-V to start blockwise Visual mode. Now move the cursor three lines down +with "3j" and to the next word with "w". You can see the first character of +the last column is included. To exclude it, use "h". Now press "d" and the +middle column is gone. + + +GOING TO THE OTHER SIDE + +If you have selected some text in Visual mode, and discover that you need to +change the other end of the selection, use the "o" command (Hint: o for other +end). The cursor will go to the other end, and you can move the cursor to +change where the selection starts. Pressing "o" again brings you back to the +other end. + +When using blockwise selection, you have four corners. "o" only takes you to +one of the other corners, diagonally. Use "O" to move to the other corner in +the same line. + +Note that "o" and "O" in Visual mode work very differently from Normal mode, +where they open a new line below or above the cursor. + +============================================================================== +*04.5* Moving text + +When you delete something with "d", "x", or another command, the text is +saved. You can paste it back by using the "p" command. (The Vim name for +this is put). + Take a look at how this works. First you will delete an entire line, by +putting the cursor on the line you want to delete and typing "dd". Now you +move the cursor to where you want to put the line and use the "p" (put) +command. The line is inserted on the line below the cursor. + + a line a line a line + line 2 dd line 3 p line 3 + line 3 line 2 + +Because you deleted an entire line, the "p" command placed the text line below +the cursor. If you delete part of a line (a word, for instance), the "p" +command puts it just after the cursor. + + Some more boring try text to out commands. ~ + ----> + dw + + Some more boring text to out commands. ~ + -------> + welp + + Some more boring text to try out commands. ~ + + +MORE ON PUTTING + +The "P" command puts text like "p", but before the cursor. When you deleted a +whole line with "dd", "P" will put it back above the cursor. When you deleted +a word with "dw", "P" will put it back just before the cursor. + +You can repeat putting as many times as you like. The same text will be used. + +You can use a count with "p" and "P". The text will be repeated as many times +as specified with the count. Thus "dd" and then "3p" puts three copies of the +same deleted line. + + +SWAPPING TWO CHARACTERS + +Frequently when you are typing, your fingers get ahead of your brain (or the +other way around?). The result is a typo such as "teh" for "the". Vim +makes it easy to correct such problems. Just put the cursor on the e of "teh" +and execute the command "xp". This works as follows: "x" deletes the +character e and places it in a register. "p" puts the text after the cursor, +which is after the h. + + teh th the ~ + x p + +============================================================================== +*04.6* Copying text + +To copy text from one place to another, you could delete it, use "u" to undo +the deletion and then "p" to put it somewhere else. There is an easier way: +yanking. The "y" operator copies text into a register. Then a "p" command +can be used to put it. + Yanking is just a Vim name for copying. The "c" letter was already used +for the change operator, and "y" was still available. Calling this +operator "yank" made it easier to remember to use the "y" key. + +Since "y" is an operator, you use "yw" to yank a word. A count is possible as +usual. To yank two words use "y2w". Example: + + let sqr = LongVariable * ~ + --------------> + y2w + + let sqr = LongVariable * ~ + p + + let sqr = LongVariable * LongVariable ~ + +Notice that "yw" includes the white space after a word. If you don't want +this, use "ye". + +The "yy" command yanks a whole line, just like "dd" deletes a whole line. +Unexpectedly, while "D" deletes from the cursor to the end of the line, "Y" +works like "yy", it yanks the whole line. Watch out for this inconsistency! +Use "y$" to yank to the end of the line. + + a text line yy a text line a text line + line 2 line 2 p line 2 + last line last line a text line + last line + +============================================================================== +*04.7* Using the clipboard + +If you are using the GUI version of Vim (gvim), you can find the "Copy" item +in the "Edit" menu. First select some text with Visual mode, then use the +Edit/Copy menu item. The selected text is now copied to the clipboard. You +can paste the text in other programs. In Vim itself too. + +If you have copied text to the clipboard in another application, you can paste +it in Vim with the Edit/Paste menu item. This works in Normal mode and Insert +mode. In Visual mode the selected text is replaced with the pasted text. + +The "Cut" menu item deletes the text before it's put on the clipboard. The +"Copy", "Cut" and "Paste" items are also available in the popup menu (only +when there is a popup menu, of course). If your Vim has a toolbar, you can +also find these items there. + +If you are not using the GUI, or if you don't like using a menu, you have to +use another way. You use the normal "y" (yank) and "p" (put) commands, but +prepend "* (double-quote star) before it. To copy a line to the clipboard: > + + "*yy + +To put text from the clipboard back into the text: > + + "*p + +This only works on versions of Vim that include clipboard support. More about +the clipboard can be found in section |09.3| and here: |clipboard|. + +============================================================================== +*04.8* Text objects + +If the cursor is in the middle of a word and you want to delete that word, you +need to move back to its start before you can do "dw". There is a simpler way +to do this: "daw". + + this is some example text. ~ + daw + + this is some text. ~ + +The "d" of "daw" is the delete operator. "aw" is a text object. Hint: "aw" +stands for "A Word". Thus "daw" is "Delete A Word". To be precise, the white +space after the word is also deleted (or the white space before the word if at +the end of the line). + +Using text objects is the third way to make changes in Vim. We already had +operator-motion and Visual mode. Now we add operator-text object. + It is very similar to operator-motion, but instead of operating on the text +between the cursor position before and after a movement command, the text +object is used as a whole. It doesn't matter where in the object the cursor +was. + +To change a whole sentence use "cis". Take this text: + + Hello there. This ~ + is an example. Just ~ + some text. ~ + +Move to the start of the second line, on "is an". Now use "cis": + + Hello there. Just ~ + some text. ~ + +The cursor is in between the blanks in the first line. Now you type the new +sentence "Another line.": + + Hello there. Another line. Just ~ + some text. ~ + +"cis" consists of the "c" (change) operator and the "is" text object. This +stands for "Inner Sentence". There is also the "as" ("A Sentence") object. +The difference is that "as" includes the white space after the sentence and +"is" doesn't. If you would delete a sentence, you want to delete the white +space at the same time, thus use "das". If you want to type new text the +white space can remain, thus you use "cis". + +You can also use text objects in Visual mode. It will include the text object +in the Visual selection. Visual mode continues, thus you can do this several +times. For example, start Visual mode with "v" and select a sentence with +"as". Now you can repeat "as" to include more sentences. Finally you use an +operator to do something with the selected sentences. + +You can find a long list of text objects here: |text-objects|. + +============================================================================== +*04.9* Replace mode + +The "R" command causes Vim to enter replace mode. In this mode, each +character you type replaces the one under the cursor. This continues until +you type <Esc>. + In this example you start Replace mode on the first "t" of "text": + + This is text. ~ + Rinteresting.<Esc> + + This is interesting. ~ + +You may have noticed that this command replaced 5 characters in the line with +twelve others. The "R" command automatically extends the line if it runs out +of characters to replace. It will not continue on the next line. + +You can switch between Insert mode and Replace mode with the <Insert> key. + +When you use <BS> (backspace) to make a correction, you will notice that the +old text is put back. Thus it works like an undo command for the previously +typed character. + +============================================================================== +*04.10* Conclusion + +The operators, movement commands and text objects give you the possibility to +make lots of combinations. Now that you know how they work, you can use N +operators with M movement commands to make N * M commands! + +You can find a list of operators here: |operator|. + +For example, there are many other ways to delete pieces of text. Here are a +few common ones: + +x delete character under the cursor (short for "dl") +X delete character before the cursor (short for "dh") +D delete from cursor to end of line (short for "d$") +dw delete from cursor to next start of word +db delete from cursor to previous start of word +diw delete word under the cursor (excluding white space) +daw delete word under the cursor (including white space) +dG delete until the end of the file +dgg delete until the start of the file + +If you use "c" instead of "d" they become change commands. And with "y" you +yank the text. And so forth. + + +There are a few common commands to make changes that didn't fit somewhere +else: + + ~ Change case of the character under the cursor, and move the + cursor to the next character. This is not an operator (unless + 'tildeop' is set), thus you can't use it with a motion + command. It does work in Visual mode, where it changes case + for all the selected text. + + I Start Insert mode after moving the cursor to the first + non-blank in the line. + + A Start Insert mode after moving the cursor to the end of the + line. + +============================================================================== + +Next chapter: |usr_05.txt| Set your settings + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt new file mode 100644 index 0000000..05239ee --- /dev/null +++ b/runtime/doc/usr_05.txt @@ -0,0 +1,800 @@ +*usr_05.txt* For Vim version 9.1. Last change: 2023 Sep 12 + + VIM USER MANUAL - by Bram Moolenaar + + Set your settings + + +Vim can be tuned to work like you want it to. This chapter shows you how to +make Vim start with options set to different values. Add plugins to extend +Vim's capabilities. Or define your own macros. + +|05.1| The vimrc file +|05.2| The example vimrc file explained +|05.3| The defaults.vim file explained +|05.4| Simple mappings +|05.5| Adding a package +|05.6| Adding a plugin +|05.7| Adding a help file +|05.8| The option window +|05.9| Often used options + + Next chapter: |usr_06.txt| Using syntax highlighting + Previous chapter: |usr_04.txt| Making small changes +Table of contents: |usr_toc.txt| + +============================================================================== +*05.1* The vimrc file *vimrc-intro* + +You probably got tired of typing commands that you use very often. To start +Vim with all your favorite option settings and mappings, you write them in +what is called the vimrc file. Vim executes the commands in this file when it +starts up. + +If you already have a vimrc file (e.g., when your sysadmin has one setup for +you), you can edit it this way: > + + :edit $MYVIMRC + +If you don't have a vimrc file yet, see |vimrc| to find out where you can +create a vimrc file. Also, the ":version" command mentions the name of the +"user vimrc file" Vim looks for. + +For Unix and Macintosh this file is always used and is recommended: + + ~/.vimrc ~ + +For MS-Windows you can use one of these: + + $HOME/_vimrc ~ + $VIM/_vimrc ~ + +If you are creating the vimrc file for the first time, it is recommended to +put this line at the top: > + + source $VIMRUNTIME/defaults.vim + +This initializes Vim for new users (as opposed to traditional Vi users). See +|defaults.vim| for the details. + +The vimrc file can contain all the commands that you type after a colon. The +simplest ones are for setting options. For example, if you want Vim to always +start with the 'incsearch' option on, add this line your vimrc file: > + + set incsearch + +For this new line to take effect you need to exit Vim and start it again. +Later you will learn how to do this without exiting Vim. + +This chapter only explains the most basic items. For more information on how +to write a Vim script file: |usr_41.txt|. + +============================================================================== +*05.2* The example vimrc file explained *vimrc_example.vim* + +In the first chapter was explained how the example vimrc (included in the +Vim distribution) file can be used to make Vim startup in not-compatible mode +(see |not-compatible|). The file can be found here: + + $VIMRUNTIME/vimrc_example.vim ~ + +In this section we will explain the various commands used in this file. This +will give you hints about how to set up your own preferences. Not everything +will be explained though. Use the ":help" command to find out more. + +> + " Get the defaults that most users want. + source $VIMRUNTIME/defaults.vim + +This loads the "defaults.vim" file in the $VIMRUNTIME directory. This sets up +Vim for how most users like it. If you are one of the few that don't, then +comment out this line. The commands are explained below: +|defaults.vim-explained| + +> + if has("vms") + set nobackup + else + set backup + if has('persistent_undo') + set undofile + endif + endif + +This tells Vim to keep a backup copy of a file when overwriting it. But not +on the VMS system, since it keeps old versions of files already. The backup +file will have the same name as the original file with "~" added. See |07.4| + +This also sets the 'undofile' option, if available. This will store the +multi-level undo information in a file. The result is that when you change a +file, exit Vim, and then edit the file again, you can undo the changes made +previously. It's a very powerful and useful feature, at the cost of storing a +file. For more information see |undo-persistence|. + +The "if" command is very useful to set options +only when some condition is met. More about that in |usr_41.txt|. + +> + if &t_Co > 2 || has("gui_running") + set hlsearch + endif + +This switches on the 'hlsearch' option, telling Vim to highlight matches with +the last used search pattern. + +> + augroup vimrcEx + au! + autocmd FileType text setlocal textwidth=78 + augroup END + +This makes Vim break text to avoid lines getting longer than 78 characters. +But only for files that have been detected to be plain text. There are +actually two parts here. "autocmd FileType text" is an autocommand. This +defines that when the file type is set to "text" the following command is +automatically executed. "setlocal textwidth=78" sets the 'textwidth' option +to 78, but only locally in one file. + +The wrapper with "augroup vimrcEx" and "augroup END" makes it possible to +delete the autocommand with the "au!" command. See |:augroup|. + +> + if has('syntax') && has('eval') + packadd! matchit + endif + +This loads the "matchit" plugin if the required features are available. +It makes the |%| command more powerful. This is explained at +|matchit-install|. + + +============================================================================== +*05.3* The defaults.vim file explained *defaults.vim-explained* + +The |defaults.vim| file is loaded when the user has no vimrc file. When you +create a new vimrc file, add this line near the top to keep using it: > + + source $VIMRUNTIME/defaults.vim + +Or use the vimrc_example.vim file, as explained above. + +The following explains what defaults.vim is doing. + +> + if exists('skip_defaults_vim') + finish + endif + +Loading defaults.vim can be disabled with this command: > + let skip_defaults_vim = 1 +This has to be done in the system vimrc file. See |system-vimrc|. If you +have a user vimrc this is not needed, since defaults.vim will not be loaded +automatically. + +> + set nocompatible + +As mentioned in the first chapter, these manuals explain Vim working in an +improved way, thus not completely Vi compatible. Setting the 'compatible' +option off, thus 'nocompatible' takes care of this. + +> + set backspace=indent,eol,start + +This specifies where in Insert mode the <BS> is allowed to delete the +character in front of the cursor. The three items, separated by commas, tell +Vim to delete the white space at the start of the line, a line break and the +character before where Insert mode started. See 'backspace'. + +> + set history=200 + +Keep 200 commands and 200 search patterns in the history. Use another number +if you want to remember fewer or more lines. See 'history'. + +> + set ruler + +Always display the current cursor position in the lower right corner of the +Vim window. See 'ruler'. + +> + set showcmd + +Display an incomplete command in the lower right corner of the Vim window, +left of the ruler. For example, when you type "2f", Vim is waiting for you to +type the character to find and "2f" is displayed. When you press "w" next, +the "2fw" command is executed and the displayed "2f" is removed. + + +-------------------------------------------------+ + |text in the Vim window | + |~ | + |~ | + |-- VISUAL -- 2f 43,8 17% | + +-------------------------------------------------+ + ^^^^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ + 'showmode' 'showcmd' 'ruler' + + +> + set wildmenu + +Display completion matches in a status line. That is when you type <Tab> and +there is more than one match. See 'wildmenu'. + +> + set ttimeout + set ttimeoutlen=100 + +This makes typing Esc take effect more quickly. Normally Vim waits a second +to see if the Esc is the start of an escape sequence. If you have a very slow +remote connection, increase the number. See 'ttimeout'. + +> + set display=truncate + +Show @@@ in the last line if it is truncated, instead of hiding the whole +line. See 'display'. + +> + set incsearch + +Display the match for a search pattern when halfway typing it. See +'incsearch'. + +> + set nrformats-=octal + +Do not recognize numbers starting with a zero as octal. See 'nrformats'. + +> + map Q gq + +This defines a key mapping. More about that in the next section. This +defines the "Q" command to do formatting with the "gq" operator. This is how +it worked before Vim 5.0. Otherwise the "Q" command starts Ex mode, but you +will not need it. + +> + inoremap <C-U> <C-G>u<C-U> + +CTRL-U in insert mode deletes all entered text in the current line. Use +CTRL-G u to first break undo, so that you can undo CTRL-U after inserting a +line break. Revert with ":iunmap <C-U>". + +> + if has('mouse') + set mouse=a + endif + +Enable using the mouse if available. See 'mouse'. + +> + vnoremap _g y:exe "grep /" .. escape(@", '\\/') .. "/ *.c *.h"<CR> + +This mapping yanks the visually selected text and searches for it in C files. +You can see that a mapping can be used to do quite complicated things. Still, +it is just a sequence of commands that are executed like you typed them. + +> + syntax on + +Enable highlighting files in color. See |syntax|. + + *vimrc-filetype* > + filetype plugin indent on + +This switches on three very clever mechanisms: +1. Filetype detection. + Whenever you start editing a file, Vim will try to figure out what kind of + file this is. When you edit "main.c", Vim will see the ".c" extension and + recognize this as a "c" filetype. When you edit a file that starts with + "#!/bin/sh", Vim will recognize it as a "sh" filetype. + The filetype detection is used for syntax highlighting and the other two + items below. + See |filetypes|. + +2. Using filetype plugin files + Many different filetypes are edited with different options. For example, + when you edit a "c" file, it's very useful to set the 'cindent' option to + automatically indent the lines. These commonly useful option settings are + included with Vim in filetype plugins. You can also add your own, see + |write-filetype-plugin|. + +3. Using indent files + When editing programs, the indent of a line can often be computed + automatically. Vim comes with these indent rules for a number of + filetypes. See |:filetype-indent-on| and 'indentexpr'. + + + *restore-cursor* *last-position-jump* > + augroup RestoreCursor + autocmd! + autocmd BufReadPost * + \ let line = line("'\"") + \ | if line >= 1 && line <= line("$") && &filetype !~# 'commit' + \ && index(['xxd', 'gitrebase'], &filetype) == -1 + \ | execute "normal! g`\"" + \ | endif + augroup END + +Another autocommand. This time it is used after reading any file. The +complicated stuff after it checks if the '" mark is defined, and jumps to it +if so. It doesn't do that for a commit or rebase message, which are likely +a different one than last time, and when using xxd(1) to filter and edit +binary files, which transforms input files back and forth, causing them to +have dual nature, so to speak. See also |using-xxd|. + +The backslash at the start of a line is used to continue the command from the +previous line. That avoids a line getting very long. See |line-continuation|. +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 + +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|. + +> + set nolangremap + +Prevent that the langmap option applies to characters that result from a +mapping. If set (default), this may break plugins (but it's backward +compatible). See 'langremap'. + +============================================================================== +*05.4* Simple mappings + +A mapping enables you to bind a set of Vim commands to a single key. Suppose, +for example, that you need to surround certain words with curly braces. In +other words, you need to change a word such as "amount" into "{amount}". With +the :map command, you can tell Vim that the F5 key does this job. The command +is as follows: > + + :map <F5> i{<Esc>ea}<Esc> +< + Note: + When entering this command, you must enter <F5> by typing four + characters. Similarly, <Esc> is not entered by pressing the <Esc> + key, but by typing five characters. Watch out for this difference + when reading the manual! + +Let's break this down: + <F5> The F5 function key. This is the trigger key that causes the + command to be executed as the key is pressed. + + i{<Esc> Insert the { character. The <Esc> key ends Insert mode. + + e Move to the end of the word. + + a}<Esc> Append the } to the word. + +After you execute the ":map" command, all you have to do to put {} around a +word is to put the cursor on the first character and press F5. + +In this example, the trigger is a single key; it can be any string. But when +you use an existing Vim command, that command will no longer be available. +You better avoid that. + One key that can be used with mappings is the backslash. Since you +probably want to define more than one mapping, add another character. You +could map "\p" to add parentheses around a word, and "\c" to add curly braces, +for example: > + + :map \p i(<Esc>ea)<Esc> + :map \c i{<Esc>ea}<Esc> + +You need to type the \ and the p quickly after another, so that Vim knows they +belong together. + +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* + +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 +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). + +To start using the matchit plugin, add one line to your vimrc file: > + packadd! matchit + +That's all! After restarting Vim you can find help about this plugin: > + :help matchit + +This works, because when `:packadd` loaded the plugin it also added the +package directory in 'runtimepath', so that the help file can be found. + +You can find packages on the Internet in various places. It usually comes as +an archive or as a repository. For an archive you can follow these steps: + 1. create the package directory: > + mkdir -p ~/.vim/pack/fancy +< "fancy" can be any name of your liking. Use one that describes the + package. + 2. unpack the archive in that directory. This assumes the top + directory in the archive is "start": > + cd ~/.vim/pack/fancy + unzip /tmp/fancy.zip +< If the archive layout is different make sure that you end up with a + path like this: + ~/.vim/pack/fancy/start/fancytext/plugin/fancy.vim ~ + Here "fancytext" is the name of the package, it can be anything + else. + +Adding the editorconfig package *editorconfig-install* + +Similar to the matchit package, to load the distributed editorconfig plugin +when Vim starts, add the following line to your vimrc file: > + packadd! editorconfig + +After restarting your Vim, the plugin is active and you can read about it at: > + :h editorconfig.txt + +More information about packages can be found here: |packages|. + +============================================================================== +*05.6* Adding a plugin *add-plugin* *plugin* + +Vim's functionality can be extended by adding plugins. A plugin is nothing +more than a Vim script file that is loaded automatically when Vim starts. You +can add a plugin very easily by dropping it in your plugin directory. +{not available when Vim was compiled without the |+eval| feature} + +There are two types of plugins: + + global plugin: Used for all kinds of files + filetype plugin: Only used for a specific type of file + +The global plugins will be discussed first, then the filetype ones +|add-filetype-plugin|. + + +GLOBAL PLUGINS *standard-plugin* *distributed-plugins* + +When you start Vim, it will automatically load a number of global plugins. +You don't have to do anything for this. They add functionality that most +people will want to use, but which was implemented as a Vim script instead of +being compiled into Vim. You can find them listed in the help index +|standard-plugin-list|. + +For locally installed plugins and packages (which come with a separated help +file) a similar list can be found in the help section |local-additions|. + +Also see |load-plugins|. + + *add-global-plugin* +You can add a global plugin to add functionality that will always be present +when you use Vim. There are only two steps for adding a global plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A GLOBAL PLUGIN + +Where can you find plugins? +- 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. +- They are sometimes posted in a Vim |maillist|. +- You could write one yourself, see |write-plugin|. + +Some plugins come as a vimball archive, see |vimball|. +Some plugins can be updated automatically, see |getscript|. + + +USING A GLOBAL PLUGIN + +First read the text in the plugin itself to check for any special conditions. +Then copy the file to your plugin directory: + + system plugin directory ~ + Unix ~/.vim/plugin/ + PC $HOME/vimfiles/plugin or $VIM/vimfiles/plugin + Amiga s:vimfiles/plugin + Macintosh $VIM:vimfiles:plugin + Mac OS X ~/.vim/plugin/ + +Example for Unix (assuming you didn't have a plugin directory yet): > + + mkdir ~/.vim + mkdir ~/.vim/plugin + cp /tmp/yourplugin.vim ~/.vim/plugin + +That's all! Now you can use the commands defined in this plugin. + +Instead of putting plugins directly into the plugin/ directory, you may +better organize them by putting them into subdirectories under plugin/. +As an example, consider using "~/.vim/plugin/perl/*.vim" for all your Perl +plugins. + + +FILETYPE PLUGINS *add-filetype-plugin* *ftplugins* + +The Vim distribution comes with a set of plugins for different filetypes that +you can start using with this command: > + + :filetype plugin on + +That's all! See |vimrc-filetype|. + +If you are missing a plugin for a filetype you are using, or you found a +better one, you can add it. There are two steps for adding a filetype plugin: +1. Get a copy of the plugin. +2. Drop it in the right directory. + + +GETTING A FILETYPE PLUGIN + +You can find them in the same places as the global plugins. Watch out if the +type of file is mentioned, then you know if the plugin is a global or a +filetype one. The scripts in $VIMRUNTIME/macros are global ones, the filetype +plugins are in $VIMRUNTIME/ftplugin. + + +USING A FILETYPE PLUGIN *ftplugin-name* + +You can add a filetype plugin by dropping it in the right directory. The +name of this directory is in the same directory mentioned above for global +plugins, but the last part is "ftplugin". Suppose you have found a plugin for +the "stuff" filetype, and you are on Unix. Then you can move this file to the +ftplugin directory: > + + mv thefile ~/.vim/ftplugin/stuff.vim + +If that file already exists you already have a plugin for "stuff". You might +want to check if the existing plugin doesn't conflict with the one you are +adding. If it's OK, you can give the new one another name: > + + mv thefile ~/.vim/ftplugin/stuff_too.vim + +The underscore is used to separate the name of the filetype from the rest, +which can be anything. If you use "otherstuff.vim" it wouldn't work, it would +be loaded for the "otherstuff" filetype. + +On MS-DOS like filesystems you cannot use long filenames. You would run into +trouble if you add a second plugin and the filetype has more than six +characters. You can use an extra directory to get around this: > + + mkdir $VIM/vimfiles/ftplugin/fortran + copy thefile $VIM/vimfiles/ftplugin/fortran/too.vim + +The generic names for the filetype plugins are: > + + ftplugin/<filetype>.vim + ftplugin/<filetype>_<name>.vim + ftplugin/<filetype>/<name>.vim + +Here "<name>" can be any name that you prefer. +Examples for the "stuff" filetype on Unix: > + + ~/.vim/ftplugin/stuff.vim + ~/.vim/ftplugin/stuff_def.vim + ~/.vim/ftplugin/stuff/header.vim + +The <filetype> part is the name of the filetype the plugin is to be used for. +Only files of this filetype will use the settings from the plugin. The <name> +part of the plugin file doesn't matter, you can use it to have several plugins +for the same filetype. Note that it must end in ".vim". + + +Further reading: +|filetype-plugins| Documentation for the filetype plugins and information + about how to avoid that mappings cause problems. +|load-plugins| When the global plugins are loaded during startup. +|ftplugin-overrule| Overruling the settings from a global plugin. +|write-plugin| How to write a plugin script. +|plugin-details| For more information about using plugins or when your + plugin doesn't work. +|new-filetype| How to detect a new file type. + +============================================================================== +*05.7* Adding a help file *add-local-help* + +If you are lucky, the plugin you installed also comes with a help file. We +will explain how to install the help file, so that you can easily find help +for your new plugin. + Let us use the "doit.vim" plugin as an example. This plugin comes with +documentation: "doit.txt". Let's first copy the plugin to the right +directory. This time we will do it from inside Vim. (You may skip some of +the "mkdir" commands if you already have the directory.) > + + :!mkdir ~/.vim + :!mkdir ~/.vim/plugin + :!cp /tmp/doit.vim ~/.vim/plugin + +The "cp" command is for Unix, on MS-Windows you can use "copy". + +Now create a "doc" directory in one of the directories in 'runtimepath'. > + + :!mkdir ~/.vim/doc + +Copy the help file to the "doc" directory. > + + :!cp /tmp/doit.txt ~/.vim/doc + +Now comes the trick, which allows you to jump to the subjects in the new help +file: Generate the local tags file with the |:helptags| command. > + + :helptags ~/.vim/doc + +Now you can use the > + + :help doit + +command to find help for "doit" in the help file you just added. You can see +an entry for the local help file when you do: > + + :help local-additions + +The title lines from the local help files are automagically added to this +section. There you can see which local help files have been added and jump to +them through the tag. + +For writing a local help file, see |write-local-help|. + +============================================================================== +*05.8* The option window + +If you are looking for an option that does what you want, you can search in +the help files here: |options|. Another way is by using this command: > + + :options + +This opens a new window, with a list of options with a one-line explanation. +The options are grouped by subject. Move the cursor to a subject and press +<Enter> to jump there. Press <Enter> again to jump back. Or use CTRL-O. + +You can change the value of an option. For example, move to the "displaying +text" subject. Then move the cursor down to this line: + + set wrap nowrap ~ + +When you hit <Enter>, the line will change to: + + set nowrap wrap ~ + +The option has now been switched off. + +Just above this line is a short description of the 'wrap' option. Move the +cursor one line up to place it in this line. Now hit <Enter> and you jump to +the full help on the 'wrap' option. + +For options that take a number or string argument you can edit the value. +Then press <Enter> to apply the new value. For example, move the cursor a few +lines up to this line: + + set so=0 ~ + +Position the cursor on the zero with "$". Change it into a five with "r5". +Then press <Enter> to apply the new value. When you now move the cursor +around you will notice that the text starts scrolling before you reach the +border. This is what the 'scrolloff' option does, it specifies an offset +from the window border where scrolling starts. + +============================================================================== +*05.9* Often used options + +There are an awful lot of options. Most of them you will hardly ever use. +Some of the more useful ones will be mentioned here. Don't forget you can +find more help on these options with the ":help" command, with single quotes +before and after the option name. For example: > + + :help 'wrap' + +In case you have messed up an option value, you can set it back to the +default by putting an ampersand (&) after the option name. Example: > + + :set iskeyword& + + +NOT WRAPPING LINES + +Vim normally wraps long lines, so that you can see all of the text. Sometimes +it's better to let the text continue right of the window. Then you need to +scroll the text left-right to see all of a long line. Switch wrapping off +with this command: > + + :set nowrap + +Vim will automatically scroll the text when you move to text that is not +displayed. To see a context of ten characters, do this: > + + :set sidescroll=10 + +This doesn't change the text in the file, only the way it is displayed. + + +WRAPPING MOVEMENT COMMANDS + +Most commands for moving around will stop moving at the start and end of a +line. You can change that with the 'whichwrap' option. This sets it to the +default value: > + + :set whichwrap=b,s + +This allows the <BS> key, when used in the first position of a line, to move +the cursor to the end of the previous line. And the <Space> key moves from +the end of a line to the start of the next one. + +To allow the cursor keys <Left> and <Right> to also wrap, use this command: > + + :set whichwrap=b,s,<,> + +This is still only for Normal mode. To let <Left> and <Right> do this in +Insert mode as well: > + + :set whichwrap=b,s,<,>,[,] + +There are a few other flags that can be added, see 'whichwrap'. + + +VIEWING TABS + +When there are tabs in a file, you cannot see where they are. To make them +visible: > + + :set list + +Now every tab is displayed as ^I. And a $ is displayed at the end of each +line, so that you can spot trailing spaces that would otherwise go unnoticed. + A disadvantage is that this looks ugly when there are many Tabs in a file. +If you have a color terminal, or are using the GUI, Vim can show the spaces +and tabs as highlighted characters. Use the 'listchars' option: > + + :set listchars=tab:>-,trail:- + +Now every tab will be displayed as ">---" (with more or less "-") and trailing +white space as "-". Looks a lot better, doesn't it? + + +KEYWORDS + +The 'iskeyword' option specifies which characters can appear in a word: > + + :set iskeyword +< iskeyword=@,48-57,_,192-255 ~ + +The "@" stands for all alphabetic letters. "48-57" stands for ASCII +characters 48 to 57, which are the numbers 0 to 9. "192-255" are the +printable latin characters. + Sometimes you will want to include a dash in keywords, so that commands +like "w" consider "upper-case" to be one word. You can do it like this: > + + :set iskeyword+=- + :set iskeyword +< iskeyword=@,48-57,_,192-255,- ~ + +If you look at the new value, you will see that Vim has added a comma for you. + To remove a character use "-=". For example, to remove the underscore: > + + :set iskeyword-=_ + :set iskeyword +< iskeyword=@,48-57,192-255,- ~ + +This time a comma is automatically deleted. + + +ROOM FOR MESSAGES + +When Vim starts there is one line at the bottom that is used for messages. +When a message is long, it is either truncated, thus you can only see part of +it, or the text scrolls and you have to press <Enter> to continue. + You can set the 'cmdheight' option to the number of lines used for +messages. Example: > + + :set cmdheight=3 + +This does mean there is less room to edit text, thus it's a compromise. + +============================================================================== + +Next chapter: |usr_06.txt| Using syntax highlighting + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_06.txt b/runtime/doc/usr_06.txt new file mode 100644 index 0000000..6d76c53 --- /dev/null +++ b/runtime/doc/usr_06.txt @@ -0,0 +1,302 @@ +*usr_06.txt* For Vim version 9.1. Last change: 2021 Nov 07 + + VIM USER MANUAL - by Bram Moolenaar + + Using syntax highlighting + + +Black and white text is boring. With colors your file comes to life. This +not only looks nice, it also speeds up your work. Change the colors used for +the different sorts of text. Print your text, with the colors you see on the +screen. + +|06.1| Switching it on +|06.2| No or wrong colors? +|06.3| Different colors +|06.4| With colors or without colors +|06.5| Printing with colors +|06.6| Further reading + + Next chapter: |usr_07.txt| Editing more than one file + Previous chapter: |usr_05.txt| Set your settings +Table of contents: |usr_toc.txt| + +============================================================================== +*06.1* Switching it on + +It all starts with one simple command: > + + :syntax enable + +That should work in most situations to get color in your files. Vim will +automagically detect the type of file and load the right syntax highlighting. +Suddenly comments are blue, keywords brown and strings red. This makes it +easy to overview the file. After a while you will find that black&white text +slows you down! + +If you always want to use syntax highlighting, put the ":syntax enable" +command in your |vimrc| file. + +If you want syntax highlighting only when the terminal supports colors, you +can put this in your |vimrc| file: > + + if &t_Co > 1 + syntax enable + endif + +If you want syntax highlighting only in the GUI version, put the ":syntax +enable" command in your |gvimrc| file. + +============================================================================== +*06.2* No or wrong colors? + +There can be a number of reasons why you don't see colors: + +- Your terminal does not support colors. + Vim will use bold, italic and underlined text, but this doesn't look + very nice. You probably will want to try to get a terminal with + colors. For Unix, I recommend the xterm from the XFree86 project: + |xfree-xterm|. + +- Your terminal does support colors, but Vim doesn't know this. + Make sure your $TERM setting is correct. For example, when using an + xterm that supports colors: > + + setenv TERM xterm-color +< + or (depending on your shell): > + + TERM=xterm-color; export TERM + +< The terminal name must match the terminal you are using. If it + still doesn't work, have a look at |xterm-color|, which shows a few + ways to make Vim display colors (not only for an xterm). + +- The file type is not recognized. + Vim doesn't know all file types, and sometimes it's near to impossible + to tell what language a file uses. Try this command: > + + :set filetype +< + If the result is "filetype=" then the problem is indeed that Vim + doesn't know what type of file this is. You can set the type + manually: > + + :set filetype=fortran + +< To see which types are available, look in the directory + $VIMRUNTIME/syntax. For the GUI you can use the Syntax menu. + Setting the filetype can also be done with a |modeline|, so that the + file will be highlighted each time you edit it. For example, this + line can be used in a Makefile (put it near the start or end of the + file): > + + # vim: syntax=make + +< You might know how to detect the file type yourself. Often the file + name extension (after the dot) can be used. + See |new-filetype| for how to tell Vim to detect that file type. + +- There is no highlighting for your file type. + You could try using a similar file type by manually setting it as + mentioned above. If that isn't good enough, you can write your own + syntax file, see |mysyntaxfile|. + + +Or the colors could be wrong: + +- The colored text is very hard to read. + Vim guesses the background color that you are using. If it is black + (or another dark color) it will use light colors for text. If it is + white (or another light color) it will use dark colors for text. If + Vim guessed wrong the text will be hard to read. To solve this, set + the 'background' option. For a dark background: > + + :set background=dark + +< And for a light background: > + + :set background=light + +< Make sure you put this _before_ the ":syntax enable" command, + otherwise the colors will already have been set. You could do + ":syntax reset" after setting 'background' to make Vim set the default + colors again. + +- The colors are wrong when scrolling bottom to top. + Vim doesn't read the whole file to parse the text. It starts parsing + wherever you are viewing the file. That saves a lot of time, but + sometimes the colors are wrong. A simple fix is hitting CTRL-L. Or + scroll back a bit and then forward again. + For a real fix, see |:syn-sync|. Some syntax files have a way to make + it look further back, see the help for the specific syntax file. For + example, |tex.vim| for the TeX syntax. + +============================================================================== +*06.3* Different colors *:syn-default-override* + +If you don't like the default colors, you can select another color scheme. In +the GUI use the Edit/Color Scheme menu. You can also type the command: > + + :colorscheme evening + +"evening" is the name of the color scheme. There are several others you might +want to try out. Look in the directory $VIMRUNTIME/colors. + +When you found the color scheme that you like, add the ":colorscheme" command +to your |vimrc| file. + +You could also write your own color scheme. This is how you do it: + +1. Select a color scheme that comes close. Copy this file to your own Vim + directory. For Unix, this should work: > + + !mkdir ~/.vim/colors + !cp $VIMRUNTIME/colors/morning.vim ~/.vim/colors/mine.vim +< + This is done from Vim, because it knows the value of $VIMRUNTIME. + +2. Edit the color scheme file. These entries are useful: + + term attributes in a B&W terminal + cterm attributes in a color terminal + ctermfg foreground color in a color terminal + ctermbg background color in a color terminal + gui attributes in the GUI + guifg foreground color in the GUI + guibg background color in the GUI + + For example, to make comments green: > + + :highlight Comment ctermfg=green guifg=green +< + Attributes you can use for "cterm" and "gui" are "bold" and "underline". + If you want both, use "bold,underline". For details see the |:highlight| + command. + +3. Tell Vim to always use your color scheme. Put this line in your |vimrc|: > + + colorscheme mine + +If you want to see what the most often used color combinations look like, use +this command: > + + :runtime syntax/colortest.vim + +You will see text in various color combinations. You can check which ones are +readable and look nice. These aren't the only colors available to you though. +You can specify #rrggbb hex colors and you can define new names for hex +colors in |v:colornames| like so: > + + let v:colornames['mine_red'] = '#aa0000' + +If you are authoring a color scheme for others to use, it is important +to define these colors only when they do not exist: > + + call extend(v:colornames, {'mine_red': '#aa0000'}, 'keep') + +This allows users of the color scheme to override the precise definition of +that color prior to loading your color scheme. For example, in a |.vimrc| +file: > + + runtime colors/lists/css_colors.vim + let v:colornames['your_red'] = v:colornames['css_red'] + colorscheme yourscheme + +As a color scheme author, you should be able to rely on some color names for +GUI colors. These are defined in `colors/lists/default.vim`. All such files +found on the |'runtimepath'| are loaded each time the colorscheme command is +run. A canonical list is provided by the vim distribution, which should +include all X11 colors (previously defined in rgb.txt). + +============================================================================== +*06.4* With colors or without colors + +Displaying text in color takes a lot of effort. If you find the displaying +too slow, you might want to disable syntax highlighting for a moment: > + + :syntax clear + +When editing another file (or the same one) the colors will come back. + +If you want to stop highlighting completely use: > + + :syntax off + +This will completely disable syntax highlighting and remove it immediately for +all buffers. See |:syntax-off| for more details. + + *:syn-manual* +If you want syntax highlighting only for specific files, use this: > + + :syntax manual + +This will enable the syntax highlighting, but not switch it on automatically +when starting to edit a buffer. To switch highlighting on for the current +buffer, set the 'syntax' option: > + + :set syntax=ON +< +============================================================================== +*06.5* Printing with colors *syntax-printing* + +In the MS-Windows version you can print the current file with this command: > + + :hardcopy + +You will get the usual printer dialog, where you can select the printer and a +few settings. If you have a color printer, the paper output should look the +same as what you see inside Vim. But when you use a dark background the +colors will be adjusted to look good on white paper. + +There are several options that change the way Vim prints: + 'printdevice' + 'printheader' + 'printfont' + 'printoptions' + +To print only a range of lines, use Visual mode to select the lines and then +type the command: > + + v100j:hardcopy + +"v" starts Visual mode. "100j" moves a hundred lines down, they will be +highlighted. Then ":hardcopy" will print those lines. You can use other +commands to move in Visual mode, of course. + +This also works on Unix, if you have a PostScript printer. Otherwise, you +will have to do a bit more work. You need to convert the text to HTML first, +and then print it from a web browser. + +Convert the current file to HTML with this command: > + + :TOhtml + +In case that doesn't work: > + + :source $VIMRUNTIME/syntax/2html.vim + +You will see it crunching away, this can take quite a while for a large file. +Some time later another window shows the HTML code. Now write this somewhere +(doesn't matter where, you throw it away later): +> + :write main.c.html + +Open this file in your favorite browser and print it from there. If all goes +well, the output should look exactly as it does in Vim. See |2html.vim| for +details. Don't forget to delete the HTML file when you are done with it. + +Instead of printing, you could also put the HTML file on a web server, and let +others look at the colored text. + +============================================================================== +*06.6* Further reading + +|usr_44.txt| Your own syntax highlighted. +|syntax| All the details. + +============================================================================== + +Next chapter: |usr_07.txt| Editing more than one file + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_07.txt b/runtime/doc/usr_07.txt new file mode 100644 index 0000000..ea4875e --- /dev/null +++ b/runtime/doc/usr_07.txt @@ -0,0 +1,479 @@ +*usr_07.txt* For Vim version 9.1. Last change: 2020 Mar 23 + + VIM USER MANUAL - by Bram Moolenaar + + Editing more than one file + + +No matter how many files you have, you can edit them without leaving Vim. +Define a list of files to work on and jump from one to the other. Copy text +from one file and put it in another one. + +|07.1| Edit another file +|07.2| A list of files +|07.3| Jumping from file to file +|07.4| Backup files +|07.5| Copy text between files +|07.6| Viewing a file +|07.7| Changing the file name + + Next chapter: |usr_08.txt| Splitting windows + Previous chapter: |usr_06.txt| Using syntax highlighting +Table of contents: |usr_toc.txt| + +============================================================================== +*07.1* Edit another file + +So far you had to start Vim for every file you wanted to edit. There is a +simpler way. To start editing another file, use this command: > + + :edit foo.txt + +You can use any file name instead of "foo.txt". Vim will close the current +file and open the new one. If the current file has unsaved changes, however, +Vim displays an error message and does not open the new file: + + E37: No write since last change (use ! to override) ~ + + Note: + Vim puts an error ID at the start of each error message. If you do + not understand the message or what caused it, look in the help system + for this ID. In this case: > + + :help E37 + +At this point, you have a number of alternatives. You can write the file +using this command: > + + :write + +Or you can force Vim to discard your changes and edit the new file, using the +force (!) character: > + + :edit! foo.txt + +If you want to edit another file, but not write the changes in the current +file yet, you can make it hidden: > + + :hide edit foo.txt + +The text with changes is still there, but you can't see it. This is further +explained in section |22.4|: The buffer list. + +============================================================================== +*07.2* A list of files + +You can start Vim to edit a sequence of files. For example: > + + vim one.c two.c three.c + +This command starts Vim and tells it that you will be editing three files. +Vim displays just the first file. After you have done your thing in this +file, to edit the next file you use this command: > + + :next + +If you have unsaved changes in the current file, you will get an error +message and the ":next" will not work. This is the same problem as with +":edit" mentioned in the previous section. To abandon the changes: > + + :next! + +But mostly you want to save the changes and move on to the next file. There +is a special command for this: > + + :wnext + +This does the same as using two separate commands: > + + :write + :next + + +WHERE AM I? + +To see which file in the argument list you are editing, look in the window +title. It should show something like "(2 of 3)". This means you are editing +the second file out of three files. + If you want to see the list of files, use this command: > + + :args + +This is short for "arguments". The output might look like this: + + one.c [two.c] three.c ~ + +These are the files you started Vim with. The one you are currently editing, +"two.c", is in square brackets. + + +MOVING TO OTHER ARGUMENTS + +To go back one file: > + + :previous + +This is just like the ":next" command, except that it moves in the other +direction. Again, there is a shortcut command for when you want to write the +file first: > + + :wprevious + +To move to the very last file in the list: > + + :last + +And to move back to the first one again: > + + :first + +There is no ":wlast" or ":wfirst" command though! + +You can use a count for ":next" and ":previous". To skip two files forward: > + + :2next + + +AUTOMATIC WRITING + +When moving around the files and making changes, you have to remember to use +":write". Otherwise you will get an error message. If you are sure you +always want to write modified files, you can tell Vim to automatically write +them: > + + :set autowrite + +When you are editing a file which you may not want to write, switch it off +again: > + + :set noautowrite + + +EDITING ANOTHER LIST OF FILES + +You can redefine the list of files without the need to exit Vim and start it +again. Use this command to edit three other files: > + + :args five.c six.c seven.h + +Or use a wildcard, like it's used in the shell: > + + :args *.txt + +Vim will take you to the first file in the list. Again, if the current file +has changes, you can either write the file first, or use ":args!" (with ! +added) to abandon the changes. + + +DID YOU EDIT THE LAST FILE? + *arglist-quit* +When you use a list of files, Vim assumes you want to edit them all. To +protect you from exiting too early, you will get this error when you didn't +edit the last file in the list yet: + + E173: 46 more files to edit ~ + +If you really want to exit, just do it again. Then it will work (but not when +you did other commands in between). + +============================================================================== +*07.3* Jumping from file to file + +To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ +is above the 6 key). Example: > + + :args one.c two.c three.c + +You are now in one.c. > + + :next + +Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and +you are back in two.c. Another CTRL-^ and you are in one.c again. If you now +do: > + + :next + +You are in three.c. Notice that the CTRL-^ command does not change the idea +of where you are in the list of files. Only commands like ":next" and +":previous" do that. + +The file you were previously editing is called the "alternate" file. When you +just started Vim CTRL-^ will not work, since there isn't a previous file. + + +PREDEFINED MARKS + +After jumping to another file, you can use two predefined marks which are very +useful: > + + `" + +This takes you to the position where the cursor was when you left the file. +Another mark that is remembered is the position where you made the last +change: > + + `. + +Suppose you are editing the file "one.txt". Somewhere halfway through the +file you use "x" to delete a character. Then you go to the last line with "G" +and write the file with ":w". You edit several other files, and then use +":edit one.txt" to come back to "one.txt". If you now use `" Vim jumps to the +last line of the file. Using `. takes you to the position where you deleted +the character. Even when you move around in the file `" and `. will take you +to the remembered position. At least until you make another change or leave +the file. + + +FILE MARKS + +In section |03.10| was explained how you can place a mark in a file with "mx" +and jump to that position with "`x". That works within one file. If you edit +another file and place marks there, these are specific for that file. Thus +each file has its own set of marks, they are local to the file. + So far we were using marks with a lowercase letter. There are also marks +with an uppercase letter. These are global, they can be used from any file. +For example suppose that we are editing the file "foo.txt". Go to halfway +down the file ("50%") and place the F mark there (F for foo): > + + 50%mF + +Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: +> + GmB + +Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet +another file, type "'B" and you are at the end of bar.txt again. + +The file marks are remembered until they are placed somewhere else. Thus you +can place the mark, do hours of editing and still be able to jump back to that +mark. + It's often useful to think of a simple connection between the mark letter +and where it is placed. For example, use the H mark in a header file, M in +a Makefile and C in a C code file. + +To see where a specific mark is, give an argument to the ":marks" command: > + + :marks M + +You can also give several arguments: > + + :marks MCP + +Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer +positions without placing marks there. + +============================================================================== +*07.4* Backup files + +Usually Vim does not produce a backup file. If you want to have one, all you +need to do is execute the following command: > + + :set backup + +The name of the backup file is the original file with a ~ added to the end. +If your file is named data.txt, for example, the backup file name is +data.txt~. + If you do not like the fact that the backup files end with ~, you can +change the extension: > + + :set backupext=.bak + +This will use data.txt.bak instead of data.txt~. + Another option that matters here is 'backupdir'. It specifies where the +backup file is written. The default, to write the backup in the same +directory as the original file, will mostly be the right thing. + + Note: + When the 'backup' option isn't set but the 'writebackup' is, Vim will + still create a backup file. However, it is deleted as soon as writing + the file was completed successfully. This functions as a safety + against losing your original file when writing fails in some way (disk + full is the most common cause; being hit by lightning might be + another, although less common). + + +KEEPING THE ORIGINAL FILE + +If you are editing source files, you might want to keep the file before you +make any changes. But the backup file will be overwritten each time you write +the file. Thus it only contains the previous version, not the first one. + To make Vim keep the original file, set the 'patchmode' option. This +specifies the extension used for the first backup of a changed file. Usually +you would do this: > + + :set patchmode=.orig + +When you now edit the file data.txt for the first time, make changes and write +the file, Vim will keep a copy of the unchanged file under the name +"data.txt.orig". + If you make further changes to the file, Vim will notice that +"data.txt.orig" already exists and leave it alone. Further backup files will +then be called "data.txt~" (or whatever you specified with 'backupext'). + If you leave 'patchmode' empty (that is the default), the original file +will not be kept. + +============================================================================== +*07.5* Copy text between files + +This explains how to copy text from one file to another. Let's start with a +simple example. Edit the file that contains the text you want to copy. Move +the cursor to the start of the text and press "v". This starts Visual mode. +Now move the cursor to the end of the text and press "y". This yanks (copies) +the selected text. + To copy the above paragraph, you would do: > + + :edit thisfile + /This + vjjjj$y + +Now edit the file you want to put the text in. Move the cursor to the +character where you want the text to appear after. Use "p" to put the text +there. > + :edit otherfile + /There + p + +Of course you can use many other commands to yank the text. For example, to +select whole lines start Visual mode with "V". Or use CTRL-V to select a +rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, +etc. + The "p" command puts the text after the cursor. Use "P" to put the text +before the cursor. Notice that Vim remembers if you yanked a whole line or a +block, and puts it back that way. + + +USING REGISTERS + +When you want to copy several pieces of text from one file to another, having +to switch between the files and writing the target file takes a lot of time. +To avoid this, copy each piece of text to its own register. + A register is a place where Vim stores text. Here we will use the +registers named a to z (later you will find out there are others). Let's copy +a sentence to the f register (f for First): > + + "fyas + +The "yas" command yanks a sentence like before. It's the "f that tells Vim +the text should be placed in the f register. This must come just before the +yank command. + Now yank three whole lines to the l register (l for line): > + + "l3Y + +The count could be before the "l just as well. To yank a block of text to the +b (for block) register: > + + CTRL-Vjjww"by + +Notice that the register specification "b is just before the "y" command. +This is required. If you would have put it before the "w" command, it would +not have worked. + Now you have three pieces of text in the f, l and b registers. Edit +another file, move around and place the text where you want it: > + + "fp + +Again, the register specification "f comes before the "p" command. + You can put the registers in any order. And the text stays in the register +until you yank something else into it. Thus you can put it as many times as +you like. + +When you delete text, you can also specify a register. Use this to move +several pieces of text around. For example, to delete-a-word and write it in +the w register: > + + "wdaw + +Again, the register specification comes before the delete command "d". + + +APPENDING TO A FILE + +When collecting lines of text into one file, you can use this command: > + + :write >> logfile + +This will write the text of the current file to the end of "logfile". Thus it +is appended. This avoids that you have to copy the lines, edit the log file +and put them there. Thus you save two steps. But you can only append to the +end of a file. + To append only a few lines, select them in Visual mode before typing +":write". In chapter 10 you will learn other ways to select a range of lines. + +============================================================================== +*07.6* Viewing a file + +Sometimes you only want to see what a file contains, without the intention to +ever write it back. There is the risk that you type ":w" without thinking and +overwrite the original file anyway. To avoid this, edit the file read-only. + To start Vim in readonly mode, use this command: > + + vim -R file + +On Unix this command should do the same thing: > + + view file + +You are now editing "file" in read-only mode. When you try using ":w" you +will get an error message and the file won't be written. + When you try to make a change to the file Vim will give you a warning: + + W10: Warning: Changing a readonly file ~ + +The change will be done though. This allows for formatting the file, for +example, to be able to read it easily. + If you make changes to a file and forgot that it was read-only, you can +still write it. Add the ! to the write command to force writing. + +If you really want to forbid making changes in a file, do this: > + + vim -M file + +Now every attempt to change the text will fail. The help files are like this, +for example. If you try to make a change you get this error message: + + E21: Cannot make changes, 'modifiable' is off ~ + +You could use the -M argument to setup Vim to work in a viewer mode. This is +only voluntary though, since these commands will remove the protection: > + + :set modifiable + :set write + +============================================================================== +*07.7* Changing the file name + +A clever way to start editing a new file is by using an existing file that +contains most of what you need. For example, you start writing a new program +to move a file. You know that you already have a program that copies a file, +thus you start with: > + + :edit copy.c + +You can delete the stuff you don't need. Now you need to save the file under +a new name. The ":saveas" command can be used for this: > + + :saveas move.c + +Vim will write the file under the given name, and edit that file. Thus the +next time you do ":write", it will write "move.c". "copy.c" remains +unmodified. + When you want to change the name of the file you are editing, but don't +want to write the file, you can use this command: > + + :file move.c + +Vim will mark the file as "not edited". This means that Vim knows this is not +the file you started editing. When you try to write the file, you might get +this message: + + E13: File exists (use ! to override) ~ + +This protects you from accidentally overwriting another file. + +============================================================================== + +Next chapter: |usr_08.txt| Splitting windows + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt new file mode 100644 index 0000000..a24473b --- /dev/null +++ b/runtime/doc/usr_08.txt @@ -0,0 +1,601 @@ +*usr_08.txt* For Vim version 9.1. Last change: 2021 May 20 + + VIM USER MANUAL - by Bram Moolenaar + + Splitting windows + + +Display two different files above each other. Or view two locations in the +file at the same time. See the difference between two files by putting them +side by side. All this is possible with split windows. + +|08.1| Split a window +|08.2| Split a window on another file +|08.3| Window size +|08.4| Vertical splits +|08.5| Moving windows +|08.6| Commands for all windows +|08.7| Viewing differences with vimdiff +|08.8| Various +|08.9| Tab pages + + Next chapter: |usr_09.txt| Using the GUI + Previous chapter: |usr_07.txt| Editing more than one file +Table of contents: |usr_toc.txt| + +============================================================================== +*08.1* Split a window + +The easiest way to open a new window is to use the following command: > + + :split + +This command splits the screen into two windows and leaves the cursor in the +top one: + + +----------------------------------+ + |/* file one.c */ | + |~ | + |~ | + |one.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +What you see here is two windows on the same file. The line with "====" is +the status line. It displays information about the window above it. (In +practice the status line will be in reverse video.) + The two windows allow you to view two parts of the same file. For example, +you could make the top window show the variable declarations of a program, and +the bottom one the code that uses these variables. + +The CTRL-W w command can be used to jump between the windows. If you are in +the top window, CTRL-W w jumps to the window below it. If you are in the +bottom window it will jump to the first window. (CTRL-W CTRL-W does the same +thing, in case you let go of the CTRL key a bit later.) + + +CLOSE THE WINDOW + +To close a window, use the command: > + + :close + +Actually, any command that quits editing a file works, like ":quit" and "ZZ". +But ":close" prevents you from accidentally exiting Vim when you close the +last window. + + +CLOSING ALL OTHER WINDOWS + +If you have opened a whole bunch of windows, but now want to concentrate on +one of them, this command will be useful: > + + :only + +This closes all windows, except for the current one. If any of the other +windows has changes, you will get an error message and that window won't be +closed. + +============================================================================== +*08.2* Split a window on another file + +The following command opens a second window and starts editing the given file: +> + :split two.c + +If you were editing one.c, then the result looks like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +To open a window on a new, empty file, use this: > + + :new + +You can repeat the ":split" and ":new" commands to create as many windows as +you like. + +============================================================================== +*08.3* Window size + +The ":split" command can take a number argument. If specified, this will be +the height of the new window. For example, the following opens a new window +three lines high and starts editing the file alpha.c: > + + :3split alpha.c + +For existing windows you can change the size in several ways. When you have a +working mouse, it is easy: Move the mouse pointer to the status line that +separates two windows, and drag it up or down. + +To increase the size of a window: > + + CTRL-W + + +To decrease it: > + + CTRL-W - + +Both of these commands take a count and increase or decrease the window size +by that many lines. Thus "4 CTRL-W +" make the window four lines higher. + +To set the window height to a specified number of lines: > + + {height}CTRL-W _ + +That's: a number {height}, CTRL-W and then an underscore (the - key with Shift +on English-US keyboards). + To make a window as high as it can be, use the CTRL-W _ command without a +count. + + +USING THE MOUSE + +In Vim you can do many things very quickly from the keyboard. Unfortunately, +the window resizing commands require quite a bit of typing. In this case, +using the mouse is faster. Position the mouse pointer on a status line. Now +press the left mouse button and drag. The status line will move, thus making +the window on one side higher and the other smaller. + + +OPTIONS + +The 'winheight' option can be set to a minimal desired height of a window and +'winminheight' to a hard minimum height. + Likewise, there is 'winwidth' for the minimal desired width and +'winminwidth' for the hard minimum width. + The 'equalalways' option, when set, makes Vim equalize the windows sizes +when a window is closed or opened. + +============================================================================== +*08.4* Vertical splits + +The ":split" command creates the new window above the current one. To make +the window appear at the left side, use: > + + :vsplit + +or: > + :vsplit two.c + +The result looks something like this: + + +--------------------------------------+ + |/* file two.c */ |/* file one.c */ | + |~ |~ | + |~ |~ | + |~ |~ | + |two.c===============one.c=============| + | | + +--------------------------------------+ + +Actually, the | lines in the middle will be in reverse video. This is called +the vertical separator. It separates the two windows left and right of it. + +There is also the ":vnew" command, to open a vertically split window on a new, +empty file. Another way to do this: > + + :vertical new + +The ":vertical" command can be inserted before another command that splits a +window. This will cause that command to split the window vertically instead +of horizontally. (If the command doesn't split a window, it works +unmodified.) + + +MOVING BETWEEN WINDOWS + +Since you can split windows horizontally and vertically as much as you like, +you can create almost any layout of windows. Then you can use these commands +to move between them: + + CTRL-W h move to the window on the left + CTRL-W j move to the window below + CTRL-W k move to the window above + CTRL-W l move to the window on the right + + CTRL-W t move to the TOP window + CTRL-W b move to the BOTTOM window + +You will notice the same letters as used for moving the cursor. And the +cursor keys can also be used, if you like. + More commands to move to other windows: |Q_wi|. + +============================================================================== +*08.5* Moving windows + +You have split a few windows, but now they are in the wrong place. Then you +need a command to move the window somewhere else. For example, you have three +windows like this: + + +----------------------------------+ + |/* file two.c */ | + |~ | + |~ | + |two.c=============================| + |/* file three.c */ | + |~ | + |~ | + |three.c===========================| + |/* file one.c */ | + |~ | + |one.c=============================| + | | + +----------------------------------+ + +Clearly the last one should be at the top. Go to that window (using CTRL-W w) +and then type this command: > + + CTRL-W K + +This uses the uppercase letter K. What happens is that the window is moved to +the very top. You will notice that K is again used for moving upwards. + When you have vertical splits, CTRL-W K will move the current window to the +top and make it occupy the full width of the Vim window. If this is your +layout: + + +-------------------------------------------+ + |/* two.c */ |/* three.c */ |/* one.c */ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |~ |~ |~ | + |two.c=========three.c=========one.c========| + | | + +-------------------------------------------+ + +Then using CTRL-W K in the middle window (three.c) will result in: + + +-------------------------------------------+ + |/* three.c */ | + |~ | + |~ | + |three.c====================================| + |/* two.c */ |/* one.c */ | + |~ |~ | + |two.c==================one.c===============| + | | + +-------------------------------------------+ + +The other three similar commands (you can probably guess these now): + + CTRL-W H move window to the far left + CTRL-W J move window to the bottom + CTRL-W L move window to the far right + +============================================================================== +*08.6* Commands for all windows + +When you have several windows open and you want to quit Vim, you can close +each window separately. A quicker way is using this command: > + + :qall + +This stands for "quit all". If any of the windows contain changes, Vim will +not exit. The cursor will automatically be positioned in a window with +changes. You can then either use ":write" to save the changes, or ":quit!" to +throw them away. + +If you know there are windows with changes, and you want to save all these +changes, use this command: > + + :wall + +This stands for "write all". But actually, it only writes files with +changes. Vim knows it doesn't make sense to write files that were not +changed. + And then there is the combination of ":qall" and ":wall": the "write and +quit all" command: > + + :wqall + +This writes all modified files and quits Vim. + Finally, there is a command that quits Vim and throws away all changes: > + + :qall! + +Be careful, there is no way to undo this command! + + +OPENING A WINDOW FOR ALL ARGUMENTS + +To make Vim open a window for each file, start it with the "-o" argument: > + + vim -o one.txt two.txt three.txt + +This results in: + + +-------------------------------+ + |file one.txt | + |~ | + |one.txt========================| + |file two.txt | + |~ | + |two.txt========================| + |file three.txt | + |~ | + |three.txt======================| + | | + +-------------------------------+ + +The "-O" argument is used to get vertically split windows. + When Vim is already running, the ":all" command opens a window for each +file in the argument list. ":vertical all" does it with vertical splits. + +============================================================================== +*08.7* Viewing differences with vimdiff + +There is a special way to start Vim, which shows the differences between two +files. Let's take a file "main.c" and insert a few characters in one line. +Write this file with the 'backup' option set, so that the backup file +"main.c~" will contain the previous version of the file. + Type this command in a shell (not in Vim): > + + vimdiff main.c~ main.c + +Vim will start, with two windows side by side. You will only see the line +in which you added characters, and a few lines above and below it. + + VV VV + +-----------------------------------------+ + |+ +--123 lines: /* a|+ +--123 lines: /* a| <- fold + | text | text | + | text | text | + | text | text | + | text | changed text | <- changed line + | text | text | + | text | ------------------| <- deleted line + | text | text | + | text | text | + | text | text | + |+ +--432 lines: text|+ +--432 lines: text| <- fold + | ~ | ~ | + | ~ | ~ | + |main.c~==============main.c==============| + | | + +-----------------------------------------+ + +(This picture doesn't show the highlighting, use the vimdiff command for a +better look.) + +The lines that were not modified have been collapsed into one line. This is +called a closed fold. They are indicated in the picture with "<- fold". Thus +the single fold line at the top stands for 123 text lines. These lines are +equal in both files. + The line marked with "<- changed line" is highlighted, and the inserted +text is displayed with another color. This clearly shows what the difference +is between the two files. + The line that was deleted is displayed with "---" in the main.c window. +See the "<- deleted line" marker in the picture. These characters are not +really there. They just fill up main.c, so that it displays the same number +of lines as the other window. + + +THE FOLD COLUMN + +Each window has a column on the left with a slightly different background. In +the picture above these are indicated with "VV". You notice there is a plus +character there, in front of each closed fold. Move the mouse pointer to that +plus and click the left button. The fold will open, and you can see the text +that it contains. + The fold column contains a minus sign for an open fold. If you click on +this -, the fold will close. + Obviously, this only works when you have a working mouse. You can also use +"zo" to open a fold and "zc" to close it. + + +DIFFING IN VIM + +Another way to start in diff mode can be done from inside Vim. Edit the +"main.c" file, then make a split and show the differences: > + + :edit main.c + :vertical diffsplit main.c~ + +The ":vertical" command is used to make the window split vertically. If you +omit this, you will get a horizontal split. + +If you have a patch or diff file, you can use the third way to start diff +mode. First edit the file to which the patch applies. Then tell Vim the name +of the patch file: > + + :edit main.c + :vertical diffpatch main.c.diff + +WARNING: The patch file must contain only one patch, for the file you are +editing. Otherwise you will get a lot of error messages, and some files might +be patched unexpectedly. + The patching will only be done to the copy of the file in Vim. The file on +your harddisk will remain unmodified (until you decide to write the file). + + +SCROLL BINDING + +When the files have more changes, you can scroll in the usual way. Vim will +try to keep both the windows start at the same position, so you can easily see +the differences side by side. + When you don't want this for a moment, use this command: > + + :set noscrollbind + + +JUMPING TO CHANGES + +When you have disabled folding in some way, it may be difficult to find the +changes. Use this command to jump forward to the next change: > + + ]c + +To go the other way use: > + + [c + +Prepended a count to jump further away. + + +REMOVING CHANGES + +You can move text from one window to the other. This either removes +differences or adds new ones. Vim doesn't keep the highlighting updated in +all situations. To update it use this command: > + + :diffupdate + +To remove a difference, you can move the text in a highlighted block from one +window to another. Take the "main.c" and "main.c~" example above. Move the +cursor to the left window, on the line that was deleted in the other window. +Now type this command: > + + dp + +The change will be removed by putting the text of the current window in the +other window. "dp" stands for "diff put". + You can also do it the other way around. Move the cursor to the right +window, to the line where "changed" was inserted. Now type this command: > + + do + +The change will now be removed by getting the text from the other window. +Since there are no changes left now, Vim puts all text in a closed fold. +"do" stands for "diff obtain". "dg" would have been better, but that already +has a different meaning ("dgg" deletes from the cursor until the first line). + +For details about diff mode, see |vimdiff|. + +============================================================================== +*08.8* Various + +The 'laststatus' option can be used to specify when the last window has a +statusline: + + 0 never + 1 only when there are split windows (the default) + 2 always + +Many commands that edit another file have a variant that splits the window. +For Command-line commands this is done by prepending an "s". For example: +":tag" jumps to a tag, ":stag" splits the window and jumps to a +tag. + For Normal mode commands a CTRL-W is prepended. CTRL-^ jumps to the +alternate file, CTRL-W CTRL-^ splits the window and edits the alternate file. + +The 'splitbelow' option can be set to make a new window appear below the +current window. The 'splitright' option can be set to make a vertically split +window appear right of the current window. + +When splitting a window you can prepend a modifier command to tell where the +window is to appear: + + :leftabove {cmd} left or above the current window + :aboveleft {cmd} idem + :rightbelow {cmd} right or below the current window + :belowright {cmd} idem + :topleft {cmd} at the top or left of the Vim window + :botright {cmd} at the bottom or right of the Vim window + + +============================================================================== +*08.9* Tab pages + +You will have noticed that windows never overlap. That means you quickly run +out of screen space. The solution for this is called Tab pages. + +Assume you are editing "thisfile". To create a new tab page use this command: > + + :tabedit thatfile + +This will edit the file "thatfile" in a window that occupies the whole Vim +window. And you will notice a bar at the top with the two file names: + + +----------------------------------+ + | thisfile | /thatfile/ __________X| (thatfile is bold) + |/* thatfile */ | + |that | + |that | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +You now have two tab pages. The first one has a window for "thisfile" and the +second one a window for "thatfile". It's like two pages that are on top of +each other, with a tab sticking out of each page showing the file name. + +Now use the mouse to click on "thisfile" in the top line. The result is + + +----------------------------------+ + | /thisfile/ | thatfile __________X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +----------------------------------+ + +Thus you can switch between tab pages by clicking on the label in the top +line. If you don't have a mouse or don't want to use it, you can use the "gt" +command. Mnemonic: Goto Tab. + +Now let's create another tab page with the command: > + + :tab split + +This makes a new tab page with one window that is editing the same buffer as +the window we were in: + + +-------------------------------------+ + | thisfile | /thisfile/ | thatfile __X| (thisfile is bold) + |/* thisfile */ | + |this | + |this | + |~ | + |~ | + |~ | + | | + +-------------------------------------+ + +You can put ":tab" before any Ex command that opens a window. The window will +be opened in a new tab page. Another example: > + + :tab help gt + +Will show the help text for "gt" in a new tab page. + +A few more things you can do with tab pages: + +- click with the mouse in the space after the last label + The next tab page will be selected, like with "gt". + +- click with the mouse on the "X" in the top right corner + The current tab page will be closed. Unless there are unsaved + changes in the current tab page. + +- double click with the mouse in the top line + A new tab page will be created. + +- the "tabonly" command + Closes all tab pages except the current one. Unless there are unsaved + changes in other tab pages. + +For more information about tab pages see |tab-page|. + +============================================================================== + +Next chapter: |usr_09.txt| Using the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt new file mode 100644 index 0000000..6fac5c2 --- /dev/null +++ b/runtime/doc/usr_09.txt @@ -0,0 +1,290 @@ +*usr_09.txt* For Vim version 9.1. Last change: 2017 Aug 11 + + VIM USER MANUAL - by Bram Moolenaar + + Using the GUI + + +Vim works in an ordinary terminal, while gVim has a Graphical User Interface +(GUI). It can do the same things and a few more. The GUI offers menus, a +toolbar, scrollbars and other items. This chapter is about these extra things +that the GUI offers. + +|09.1| Parts of the GUI +|09.2| Using the mouse +|09.3| The clipboard +|09.4| Select mode + + Next chapter: |usr_10.txt| Making big changes + Previous chapter: |usr_08.txt| Splitting windows +Table of contents: |usr_toc.txt| + +============================================================================== +*09.1* Parts of the GUI + +You might have an icon on your desktop that starts gvim. Otherwise, one of +these commands should do it: > + + gvim file.txt + vim -g file.txt + +If this doesn't work you don't have a version of Vim with GUI support. You +will have to install one first. + Vim will open a window and display "file.txt" in it. What the window looks +like depends on the version of Vim. It should resemble the following picture +(for as far as this can be shown in ASCII!). + + +----------------------------------------------------+ + | file.txt + (~/dir) - VIM X | <- window title + +----------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | <- menubar + +----------------------------------------------------+ + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | <- toolbar + | aaa bbb ccc ddd eee fff ggg hhh iii jjj | + +----------------------------------------------------+ + | file text | ^ | + | ~ | # | + | ~ | # | <- scrollbar + | ~ | # | + | ~ | # | + | ~ | # | + | | V | + +----------------------------------------------------+ + +The largest space is occupied by the file text. This shows the file in the +same way as in a terminal. With some different colors and another font +perhaps. + + +THE WINDOW TITLE + +At the very top is the window title. This is drawn by your window system. +Vim will set the title to show the name of the current file. First comes the +name of the file. Then some special characters and the directory of the file +in parens. These special characters can be present: + + - The file cannot be modified (e.g., a help file) + + The file contains changes + = The file is read-only + =+ The file is read-only, contains changes anyway + +If nothing is shown you have an ordinary, unchanged file. + + +THE MENUBAR + +You know how menus work, right? Vim has the usual items, plus a few more. +Browse them to get an idea of what you can use them for. A relevant submenu +is Edit/Global Settings. You will find these entries: + + Toggle Toolbar make the toolbar appear/disappear + Toggle Bottom Scrollbar make a scrollbar appear/disappear at the bottom + Toggle Left Scrollbar make a scrollbar appear/disappear at the left + Toggle Right Scrollbar make a scrollbar appear/disappear at the right + +On most systems you can tear-off the menus. Select the top item of the menu, +the one that looks like a dashed line. You will get a separate window with +the items of the menu. It will hang around until you close the window. + + +THE TOOLBAR + +This contains icons for the most often used actions. Hopefully the icons are +self-explanatory. There are tooltips to get an extra hint (move the mouse +pointer to the icon without clicking and don't move it for a second). + +The "Edit/Global Settings/Toggle Toolbar" menu item can be used to make the +toolbar disappear. If you never want a toolbar, use this command in your +vimrc file: > + + :set guioptions-=T + +This removes the 'T' flag from the 'guioptions' option. Other parts of the +GUI can also be enabled or disabled with this option. See the help for it. + + +THE SCROLLBARS + +By default there is one scrollbar on the right. It does the obvious thing. +When you split the window, each window will get its own scrollbar. + You can make a horizontal scrollbar appear with the menu item +Edit/Global Settings/Toggle Bottom Scrollbar. This is useful in diff mode, or +when the 'wrap' option has been reset (more about that later). + +When there are vertically split windows, only the windows on the right side +will have a scrollbar. However, when you move the cursor to a window on the +left, it will be this one that the scrollbar controls. This takes a bit of +time to get used to. + When you work with vertically split windows, consider adding a scrollbar on +the left. This can be done with a menu item, or with the 'guioptions' option: +> + :set guioptions+=l + +This adds the 'l' flag to 'guioptions'. + +============================================================================== +*09.2* Using the mouse + +Standards are wonderful. In Microsoft Windows, you can use the mouse to +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: > + + :behave xterm + +The following command makes the mouse work like a Microsoft Windows mouse: > + + :behave mswin + +The default behavior of the mouse on UNIX systems is xterm. The default +behavior on a Microsoft Windows system is selected during the installation +process. For details about what the two behaviors are, see |:behave|. Here +follows a summary. + + +XTERM MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Visual mode +Middle mouse click paste text from the clipboard +Right mouse click extend the selected text until the mouse + pointer + + +MSWIN MOUSE BEHAVIOR + +Left mouse click position the cursor +Left mouse drag select text in Select mode (see |09.4|) +Left mouse click, with Shift extend the selected text until the mouse + pointer +Middle mouse click paste text from the clipboard +Right mouse click display a pop-up menu + + +The mouse can be further tuned. Check out these options if you want to change +the way how the mouse works: + + 'mouse' in which mode the mouse is used by Vim + 'mousemodel' what effect a mouse click has + 'mousetime' time between clicks for a double-click + 'mousehide' hide the mouse while typing + 'selectmode' whether the mouse starts Visual or Select mode + +============================================================================== +*09.3* The clipboard + +In section |04.7| the basic use of the clipboard was explained. There is one +essential thing to explain about X-windows: There are actually two places to +exchange text between programs. MS-Windows doesn't have this. + +In X-Windows there is the "current selection". This is the text that is +currently highlighted. In Vim this is the Visual area (this assumes you are +using the default option settings). You can paste this selection in another +application without any further action. + For example, in this text select a few words with the mouse. Vim will +switch to Visual mode and highlight the text. Now start another gvim, without +a file name argument, so that it displays an empty window. Click the middle +mouse button. The selected text will be inserted. + +The "current selection" will only remain valid until some other text is +selected. After doing the paste in the other gvim, now select some characters +in that window. You will notice that the words that were previously selected +in the other gvim window are displayed differently. This means that it no +longer is the current selection. + +You don't need to select text with the mouse, using the keyboard commands for +Visual mode works just as well. + + +THE REAL CLIPBOARD + +Now for the other place with which text can be exchanged. We call this the +"real clipboard", to avoid confusion. Often both the "current selection" and +the "real clipboard" are called clipboard, you'll have to get used to that. + To put text on the real clipboard, select a few different words in one of +the gvims you have running. Then use the Edit/Copy menu entry. Now the text +has been copied to the real clipboard. You can't see this, unless you have +some application that shows the clipboard contents (e.g., KDE's Klipper). + Now select the other gvim, position the cursor somewhere and use the +Edit/Paste menu. You will see the text from the real clipboard is inserted. + + +USING BOTH + +This use of both the "current selection" and the "real clipboard" might sound +a bit confusing. But it is very useful. Let's show this with an example. +Use one gvim with a text file and perform these actions: + +- Select two words in Visual mode. +- Use the Edit/Copy menu to get these words onto the clipboard. +- Select one other word in Visual mode. +- Use the Edit/Paste menu item. What will happen is that the single selected + word is replaced with the two words from the clipboard. +- Move the mouse pointer somewhere else and click the middle button. You + will see that the word you just overwrote with the clipboard is inserted + here. + +If you use the "current selection" and the "real clipboard" with care, you can +do a lot of useful editing with them. + + +USING THE KEYBOARD + +If you don't like using the mouse, you can access the current selection and +the real clipboard with two registers. The "* register is for the current +selection. + To make text become the current selection, use Visual mode. For example, +to select a whole line just press "V". + To insert the current selection before the cursor: > + + "*P + +Notice the uppercase "P". The lowercase "p" puts the text after the cursor. + +The "+ register is used for the real clipboard. For example, to copy the text +from the cursor position until the end of the line to the clipboard: > + + "+y$ + +Remember, "y" is yank, which is Vim's copy command. + To insert the contents of the real clipboard before the cursor: > + + "+P + +It's the same as for the current selection, but uses the plus (+) register +instead of the star (*) register. + +============================================================================== +*09.4* Select mode + +And now something that is used more often on MS-Windows than on X-Windows. +But both can do it. You already know about Visual mode. Select mode is like +Visual mode, because it is also used to select text. But there is an obvious +difference: When typing text, the selected text is deleted and the typed text +replaces it. + +To start working with Select mode, you must first enable it (for MS-Windows +it is probably already enabled, but you can do this anyway): > + + :set selectmode+=mouse + +Now use the mouse to select some text. It is highlighted like in Visual mode. +Now press a letter. The selected text is deleted, and the single letter +replaces it. You are in Insert mode now, thus you can continue typing. + +Since typing normal text causes the selected text to be deleted, you can not +use the normal movement commands "hjkl", "w", etc. Instead, use the shifted +function keys. <S-Left> (shifted cursor left key) moves the cursor left. The +selected text is changed like in Visual mode. The other shifted cursor keys +do what you expect. <S-End> and <S-Home> also work. + +You can tune the way Select mode works with the 'selectmode' option. + +============================================================================== + +Next chapter: |usr_10.txt| Making big changes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt new file mode 100644 index 0000000..4ffd235 --- /dev/null +++ b/runtime/doc/usr_10.txt @@ -0,0 +1,825 @@ +*usr_10.txt* For Vim version 9.1. Last change: 2019 Nov 22 + + VIM USER MANUAL - by Bram Moolenaar + + Making big changes + + +In chapter 4 several ways to make small changes were explained. This chapter +goes into making changes that are repeated or can affect a large amount of +text. The Visual mode allows doing various things with blocks of text. Use +an external program to do really complicated things. + +|10.1| Record and playback commands +|10.2| Substitution +|10.3| Command ranges +|10.4| The global command +|10.5| Visual block mode +|10.6| Reading and writing part of a file +|10.7| Formatting text +|10.8| Changing case +|10.9| Using an external program + + Next chapter: |usr_11.txt| Recovering from a crash + Previous chapter: |usr_09.txt| Using the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*10.1* Record and playback commands + +The "." command repeats the preceding change. But what if you want to do +something more complex than a single change? That's where command recording +comes in. There are three steps: + +1. The "q{register}" command starts recording keystrokes into the register + named {register}. The register name must be between a and z. +2. Type your commands. +3. To finish recording, press q (without any extra character). + +You can now execute the macro by typing the command "@{register}". + +Take a look at how to use these commands in practice. You have a list of +filenames that look like this: + + stdio.h ~ + fcntl.h ~ + unistd.h ~ + stdlib.h ~ + +And what you want is the following: + + #include "stdio.h" ~ + #include "fcntl.h" ~ + #include "unistd.h" ~ + #include "stdlib.h" ~ + +You start by moving to the first character of the first line. Next you +execute the following commands: + + qa Start recording a macro in register a. + ^ Move to the beginning of the line. + i#include "<Esc> Insert the string #include " at the beginning + of the line. + $ Move to the end of the line. + a"<Esc> Append the character double quotation mark (") + to the end of the line. + j Go to the next line. + q Stop recording the macro. + +Now that you have done the work once, you can repeat the change by typing the +command "@a" three times. + The "@a" command can be preceded by a count, which will cause the macro to +be executed that number of times. In this case you would type: > + + 3@a + + +MOVE AND EXECUTE + +You might have the lines you want to change in various places. Just move the +cursor to each location and use the "@a" command. If you have done that once, +you can do it again with "@@". That's a bit easier to type. If you now +execute register b with "@b", the next "@@" will use register b. + If you compare the playback method with using ".", there are several +differences. First of all, "." can only repeat one change. As seen in the +example above, "@a" can do several changes, and move around as well. +Secondly, "." can only remember the last change. Executing a register allows +you to make any changes and then still use "@a" to replay the recorded +commands. Finally, you can use 26 different registers. Thus you can remember +26 different command sequences to execute. + + +USING REGISTERS + +The registers used for recording are the same ones you used for yank and +delete commands. This allows you to mix recording with other commands to +manipulate the registers. + Suppose you have recorded a few commands in register n. When you execute +this with "@n" you notice you did something wrong. You could try recording +again, but perhaps you will make another mistake. Instead, use this trick: + + G Go to the end of the file. + o<Esc> Create an empty line. + "np Put the text from the n register. You now see + the commands you typed as text in the file. + {edits} Change the commands that were wrong. This is + just like editing text. + 0 Go to the start of the line. + "ny$ Yank the corrected commands into the n + register. + dd Delete the scratch line. + +Now you can execute the corrected commands with "@n". (If your recorded +commands include line breaks, adjust the last two items in the example to +include all the lines.) + + +APPENDING TO A REGISTER + +So far we have used a lowercase letter for the register name. To append to a +register, use an uppercase letter. + Suppose you have recorded a command to change a word to register c. It +works properly, but you would like to add a search for the next word to +change. This can be done with: > + + qC/word<Enter>q + +You start with "qC", which records to the c register and appends. Thus +writing to an uppercase register name means to append to the register with +the same letter, but lowercase. + +This works both with recording and with yank and delete commands. For +example, you want to collect a sequence of lines into the a register. Yank +the first line with: > + + "aY + +Now move to the second line, and type: > + + "AY + +Repeat this command for all lines. The a register now contains all those +lines, in the order you yanked them. + +============================================================================== +*10.2* Substitution *find-replace* + +The ":substitute" command enables you to perform string replacements on a +whole range of lines. The general form of this command is as follows: > + + :[range]substitute/from/to/[flags] + +This command changes the "from" string to the "to" string in the lines +specified with [range]. For example, you can change "Professor" to "Teacher" +in all lines with the following command: > + + :%substitute/Professor/Teacher/ +< + Note: + The ":substitute" command is almost never spelled out completely. + Most of the time, people use the abbreviated version ":s". From here + on the abbreviation will be used. + +The "%" before the command specifies the command works on all lines. Without +a range, ":s" only works on the current line. More about ranges in the next +section |10.3|. + +By default, the ":substitute" command changes only the first occurrence on +each line. For example, the preceding command changes the line: + + Professor Smith criticized Professor Johnson today. ~ + +to: + + Teacher Smith criticized Professor Johnson today. ~ + +To change every occurrence on the line, you need to add the g (global) flag. +The command: > + + :%s/Professor/Teacher/g + +results in (starting with the original line): + + Teacher Smith criticized Teacher Johnson today. ~ + +Other flags include p (print), which causes the ":substitute" command to print +out the last line it changes. The c (confirm) flag tells ":substitute" to ask +you for confirmation before it performs each substitution. Enter the +following: > + + :%s/Professor/Teacher/c + +Vim finds the first occurrence of "Professor" and displays the text it is +about to change. You get the following prompt: > + + replace with Teacher (y/n/a/q/l/^E/^Y)? + +At this point, you must enter one of the following answers: + + y Yes; make this change. + n No; skip this match. + a All; make this change and all remaining ones without + further confirmation. + q Quit; don't make any more changes. + l Last; make this change and then quit. + CTRL-E Scroll the text one line up. + CTRL-Y Scroll the text one line down. + + +The "from" part of the substitute command is actually a pattern. The same +kind as used for the search command. For example, this command only +substitutes "the" when it appears at the start of a line: > + + :s/^the/these/ + +If you are substituting with a "from" or "to" part that includes a slash, you +need to put a backslash before it. A simpler way is to use another character +instead of the slash. A plus, for example: > + + :s+one/two+one or two+ + +============================================================================== +*10.3* Command ranges + +The ":substitute" command, and many other : commands, can be applied to a +selection of lines. This is called a range. + The simple form of a range is {number},{number}. For example: > + + :1,5s/this/that/g + +Executes the substitute command on the lines 1 to 5. Line 5 is included. +The range is always placed before the command. + +A single number can be used to address one specific line: > + + :54s/President/Fool/ + +Some commands work on the whole file when you do not specify a range. To make +them work on the current line the "." address is used. The ":write" command +works like that. Without a range, it writes the whole file. To make it write +only the current line into a file: > + + :.write otherfile + +The first line always has number one. How about the last line? The "$" +character is used for this. For example, to substitute in the lines from the +cursor to the end: > + + :.,$s/yes/no/ + +The "%" range that we used before, is actually a short way to say "1,$", from +the first to the last line. + + +USING A PATTERN IN A RANGE + +Suppose you are editing a chapter in a book, and want to replace all +occurrences of "grey" with "gray". But only in this chapter, not in the next +one. You know that only chapter boundaries have the word "Chapter" in the +first column. This command will work then: > + + :?^Chapter?,/^Chapter/s=grey=gray=g + +You can see a search pattern is used twice. The first "?^Chapter?" finds the +line above the current position that matches this pattern. Thus the ?pattern? +range is used to search backwards. Similarly, "/^Chapter/" is used to search +forward for the start of the next chapter. + To avoid confusion with the slashes, the "=" character was used in the +substitute command here. A slash or another character would have worked as +well. + + +ADD AND SUBTRACT + +There is a slight error in the above command: If the title of the next chapter +had included "grey" it would be replaced as well. Maybe that's what you +wanted, but what if you didn't? Then you can specify an offset. + To search for a pattern and then use the line above it: > + + /Chapter/-1 + +You can use any number instead of the 1. To address the second line below the +match: > + + /Chapter/+2 + +The offsets can also be used with the other items in a range. Look at this +one: > + + :.+3,$-5 + +This specifies the range that starts three lines below the cursor and ends +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. + 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): > + + :'t,'b + + +VISUAL MODE AND RANGES + +You can select text with Visual mode. If you then press ":" to start a colon +command, you will see this: > + + :'<,'> + +Now you can type the command and it will be applied to the range of lines that +was visually selected. + + Note: + When using Visual mode to select part of a line, or using CTRL-V to + select a block of text, the colon commands will still apply to whole + lines. This might change in a future version of Vim. + +The '< and '> are actually marks, placed at the start and end of the Visual +selection. The marks remain at their position until another Visual selection +is made. Thus you can use the "'<" command to jump to position where the +Visual area started. And you can mix the marks with other items: > + + :'>,$ + +This addresses the lines from the end of the Visual area to the end of the +file. + + +A NUMBER OF LINES + +When you know how many lines you want to change, you can type the number and +then ":". For example, when you type "5:", you will get: > + + :.,.+4 + +Now you can type the command you want to use. It will use the range "." +(current line) until ".+4" (four lines down). Thus it spans five lines. + +============================================================================== +*10.4* The global command + +The ":global" command is one of the more powerful features of Vim. It allows +you to find a match for a pattern and execute a command there. The general +form is: > + + :[range]global/{pattern}/{command} + +This is similar to the ":substitute" command. But, instead of replacing the +matched text with other text, the command {command} is executed. + + Note: + The command executed for ":global" must be one that starts with a + colon. Normal mode commands can not be used directly. The |:normal| + command can do this for you. + +Suppose you want to change "foobar" to "barfoo", but only in C++ style +comments. These comments start with "//". Use this command: > + + :g+//+s/foobar/barfoo/g + +This starts with ":g". That is short for ":global", just like ":s" is short +for ":substitute". Then the pattern, enclosed in plus characters. Since the +pattern we are looking for contains a slash, this uses the plus character to +separate the pattern. Next comes the substitute command that changes "foobar" +into "barfoo". + The default range for the global command is the whole file. Thus no range +was specified in this example. This is different from ":substitute", which +works on one line without a range. + The command isn't perfect, since it also matches lines where "//" appears +halfway through a line, and the substitution will also take place before the +"//". + +Just like with ":substitute", any pattern can be used. When you learn more +complicated patterns later, you can use them here. + +============================================================================== +*10.5* Visual block mode + +With CTRL-V you can start selection of a rectangular area of text. There are +a few commands that do something special with the text block. + +There is something special about using the "$" command in Visual block mode. +When the last motion command used was "$", all lines in the Visual selection +will extend until the end of the line, also when the line with the cursor is +shorter. This remains effective until you use a motion command that moves the +cursor horizontally. Thus using "j" keeps it, "h" stops it. + + +INSERTING TEXT + +The command "I{string}<Esc>" inserts the text {string} in each line, just +left of the visual block. You start by pressing CTRL-V to enter visual block +mode. Now you move the cursor to define your block. Next you type I to enter +Insert mode, followed by the text to insert. As you type, the text appears on +the first line only. + After you press <Esc> to end the insert, the text will magically be +inserted in the rest of the lines contained in the visual selection. Example: + + include one ~ + include two ~ + include three ~ + include four ~ + +Move the cursor to the "o" of "one" and press CTRL-V. Move it down with "3j" +to "four". You now have a block selection that spans four lines. Now type: > + + Imain.<Esc> + +The result: + + include main.one ~ + include main.two ~ + include main.three ~ + include main.four ~ + +If the block spans short lines that do not extend into the block, the text is +not inserted in that line. For example, make a Visual block selection that +includes the word "long" in the first and last line of this text, and thus has +no text selected in the second line: + + This is a long line ~ + short ~ + Any other long line ~ + + ^^^^ selected block + +Now use the command "Ivery <Esc>". The result is: + + This is a very long line ~ + short ~ + Any other very long line ~ + +In the short line no text was inserted. + +If the string you insert contains a newline, the "I" acts just like a Normal +insert command and affects only the first line of the block. + +The "A" command works the same way, except that it appends after the right +side of the block. And it does insert text in a short line. Thus you can +make a choice whether you do or don't want to append text to a short line. + There is one special case for "A": Select a Visual block and then use "$" +to make the block extend to the end of each line. Using "A" now will append +the text to the end of each line. + Using the same example from above, and then typing "$A XXX<Esc>, you get +this result: + + This is a long line XXX ~ + short XXX ~ + Any other long line XXX ~ + +This really requires using the "$" command. Vim remembers that it was used. +Making the same selection by moving the cursor to the end of the longest line +with other movement commands will not have the same result. + + +CHANGING TEXT + +The Visual block "c" command deletes the block and then throws you into Insert +mode to enable you to type in a string. The string will be inserted in each +line in the block. + Starting with the same selection of the "long" words as above, then typing +"c_LONG_<Esc>", you get this: + + This is a _LONG_ line ~ + short ~ + Any other _LONG_ line ~ + +Just like with "I" the short line is not changed. Also, you can't enter a +newline in the new text. + +The "C" command deletes text from the left edge of the block to the end of +line. It then puts you in Insert mode so that you can type in a string, +which is added to the end of each line. + Starting with the same text again, and typing "Cnew text<Esc>" you get: + + This is a new text ~ + short ~ + Any other new text ~ + +Notice that, even though only the "long" word was selected, the text after it +is deleted as well. Thus only the location of the left edge of the visual +block really matters. + Again, short lines that do not reach into the block are excluded. + +Other commands that change the characters in the block: + + ~ swap case (a -> A and A -> a) + U make uppercase (a -> A and A -> A) + u make lowercase (a -> a and A -> a) + + +FILLING WITH A CHARACTER + +To fill the whole block with one character, use the "r" command. Again, +starting with the same example text from above, and then typing "rx": + + This is a xxxx line ~ + short ~ + Any other xxxx line ~ + + + Note: + If you want to include characters beyond the end of the line in the + block, check out the 'virtualedit' feature in chapter 25. + + +SHIFTING + +The command ">" shifts the selected text to the right one shift amount, +inserting whitespace. The starting point for this shift is the left edge of +the visual block. + With the same example again, ">" gives this result: + + This is a long line ~ + short ~ + Any other long line ~ + +The shift amount is specified with the 'shiftwidth' option. To change it to +use 4 spaces: > + + :set shiftwidth=4 + +The "<" command removes one shift amount of whitespace at the left +edge of the block. This command is limited by the amount of text that is +there; so if there is less than a shift amount of whitespace available, it +removes what it can. + + +JOINING LINES + +The "J" command joins all selected lines together into one line. Thus it +removes the line breaks. Actually, the line break, leading white space and +trailing white space is replaced by one space. Two spaces are used after a +line ending (that can be changed with the 'joinspaces' option). + Let's use the example that we got so familiar with now. The result of +using the "J" command: + + This is a long line short Any other long line ~ + +The "J" command doesn't require a blockwise selection. It works with "v" and +"V" selection in exactly the same way. + +If you don't want the white space to be changed, use the "gJ" command. + +============================================================================== +*10.6* Reading and writing part of a file + +When you are writing an e-mail message, you may want to include another file. +This can be done with the ":read {filename}" command. The text of the file is +put below the cursor line. + Starting with this text: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + Bye, Pierre. ~ + +Move the cursor to the second line and type: > + + :read patch + +The file named "patch" will be inserted, with this result: + + Hi John, ~ + Here is the diff that fixes the bug: ~ + 2c2 ~ + < for (i = 0; i <= length; ++i) ~ + --- ~ + > for (i = 0; i < length; ++i) ~ + Bye, Pierre. ~ + +The ":read" command accepts a range. The file will be put below the last line +number of this range. Thus ":$r patch" appends the file "patch" at the end of +the file. + What if you want to read the file above the first line? This can be done +with the line number zero. This line doesn't really exist, you will get an +error message when using it with most commands. But this command is allowed: +> + :0read patch + +The file "patch" will be put above the first line of the file. + + +WRITING A RANGE OF LINES + +To write a range of lines to a file, the ":write" command can be used. +Without a range it writes the whole file. With a range only the specified +lines are written: > + + :.,$write tempo + +This writes the lines from the cursor until the end of the file into the file +"tempo". If this file already exists you will get an error message. Vim +protects you from accidentally overwriting an existing file. If you know what +you are doing and want to overwrite the file, append !: > + + :.,$write! tempo + +CAREFUL: The ! must follow the ":write" command immediately, without white +space. Otherwise it becomes a filter command, which is explained later in +this chapter. + + +APPENDING TO A FILE + +In the first section of this chapter was explained how to collect a number of +lines into a register. The same can be done to collect lines in a file. +Write the first line with this command: > + + :.write collection + +Now move the cursor to the second line you want to collect, and type this: > + + :.write >>collection + +The ">>" tells Vim the "collection" file is not to be written as a new file, +but the line must be appended at the end. You can repeat this as many times +as you like. + +============================================================================== +*10.7* Formatting text + +When you are typing plain text, it's nice if the length of each line is +automatically trimmed to fit in the window. To make this happen while +inserting text, set the 'textwidth' option: > + + :set textwidth=72 + +You might remember that in the example vimrc file this command was used for +every text file. Thus if you are using that vimrc file, you were already +using it. To check the current value of 'textwidth': > + + :set textwidth + +Now lines will be broken to take only up to 72 characters. But when you +insert text halfway through a line, or when you delete a few words, the lines +will get too long or too short. Vim doesn't automatically reformat the text. + To tell Vim to format the current paragraph: > + + gqap + +This starts with the "gq" command, which is an operator. Following is "ap", +the text object that stands for "a paragraph". A paragraph is separated from +the next paragraph by an empty line. + + Note: + A blank line, which contains white space, does NOT separate + paragraphs. This is hard to notice! + +Instead of "ap" you could use any motion or text object. If your paragraphs +are properly separated, you can use this command to format the whole file: > + + gggqG + +"gg" takes you to the first line, "gq" is the format operator and "G" the +motion that jumps to the last line. + +In case your paragraphs aren't clearly defined, you can format just the lines +you manually select. Move the cursor to the first line you want to format. +Start with the command "gqj". This formats the current line and the one below +it. If the first line was short, words from the next line will be appended. +If it was too long, words will be moved to the next line. The cursor moves to +the second line. Now you can use "." to repeat the command. Keep doing this +until you are at the end of the text you want to format. + +============================================================================== +*10.8* Changing case + +You have text with section headers in lowercase. You want to make the word +"section" all uppercase. Do this with the "gU" operator. Start with the +cursor in the first column: > + + gUw +< section header ----> SECTION header + +The "gu" operator does exactly the opposite: > + + guw +< SECTION header ----> section header + +You can also use "g~" to swap case. All these are operators, thus they work +with any motion command, with text objects and in Visual mode. + To make an operator work on lines you double it. The delete operator is +"d", thus to delete a line you use "dd". Similarly, "gugu" makes a whole line +lowercase. This can be shortened to "guu". "gUgU" is shortened to "gUU" and +"g~g~" to "g~~". Example: > + + g~~ +< Some GIRLS have Fun ----> sOME girls HAVE fUN ~ + +============================================================================== +*10.9* Using an external program + +Vim has a very powerful set of commands, it can do anything. But there may +still be something that an external command can do better or faster. + The command "!{motion}{program}" takes a block of text and filters it +through an external program. In other words, it runs the system command +represented by {program}, giving it the block of text represented by {motion} +as input. The output of this command then replaces the selected block. + Because this summarizes badly if you are unfamiliar with UNIX filters, take +a look at an example. The sort command sorts a file. If you execute the +following command, the unsorted file input.txt will be sorted and written to +output.txt. (This works on both UNIX and Microsoft Windows.) > + + sort <input.txt >output.txt + +Now do the same thing in Vim. You want to sort lines 1 through 5 of a file. +You start by putting the cursor on line 1. Next you execute the following +command: > + + !5G + +The "!" tells Vim that you are performing a filter operation. The Vim editor +expects a motion command to follow, indicating which part of the file to +filter. The "5G" command tells Vim to go to line 5, so it now knows that it +is to filter lines 1 (the current line) through 5. + In anticipation of the filtering, the cursor drops to the bottom of the +screen and a ! prompt displays. You can now type in the name of the filter +program, in this case "sort". Therefore, your full command is as follows: > + + !5Gsort<Enter> + +The result is that the sort program is run on the first 5 lines. The output +of the program replaces these lines. + + line 55 line 11 + line 33 line 22 + line 11 --> line 33 + line 22 line 44 + 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<Enter>" replaces the current +line with the output of "date". This is useful to add a timestamp to a file. + + +WHEN IT DOESN'T WORK + +Starting a shell, sending it text and capturing the output requires that Vim +knows how the shell works exactly. When you have problems with filtering, +check the values of these options: + + 'shell' specifies the program that Vim uses to execute + external programs. + 'shellcmdflag' argument to pass a command to the shell + 'shellquote' quote to be used around the command + 'shellxquote' quote to be used around the command and redirection + 'shelltype' kind of shell (only for the Amiga) + 'shellslash' use forward slashes in the command (only for + MS-Windows and alikes) + 'shellredir' string used to write the command output into a file + +On Unix this is hardly ever a problem, because there are two kinds of shells: +"sh" like and "csh" like. Vim checks the 'shell' option and sets related +options automatically, depending on whether it sees "csh" somewhere in +'shell'. + On MS-Windows, however, there are many different shells and you might have +to tune the options to make filtering work. Check the help for the options +for more information. + + +READING COMMAND OUTPUT + +To read the contents of the current directory into the file, use this: + +on Unix: > + :read !ls +on MS-Windows: > + :read !dir + +The output of the "ls" or "dir" command is captured and inserted in the text, +below the cursor. This is similar to reading a file, except that the "!" is +used to tell Vim that a command follows. + The command may have arguments. And a range can be used to tell where Vim +should put the lines: > + + :0read !date -u + +This inserts the current time and date in UTC format at the top of the file. +(Well, if you have a date command that accepts the "-u" argument.) Note the +difference with using "!!date": that replaced a line, while ":read !date" will +insert a line. + + +WRITING TEXT TO A COMMAND + +The Unix command "wc" counts words. To count the words in the current file: > + + :write !wc + +This is the same write command as before, but instead of a file name the "!" +character is used and the name of an external command. The written text will +be passed to the specified command as its standard input. The output could +look like this: + + 4 47 249 ~ + +The "wc" command isn't verbose. This means you have 4 lines, 47 words and 249 +characters. + +Watch out for this mistake: > + + :write! wc + +This will write the file "wc" in the current directory, with force. White +space is important here! + + +REDRAWING THE SCREEN + +If the external command produced an error message, the display may have been +messed up. Vim is very efficient and only redraws those parts of the screen +that it knows need redrawing. But it can't know about what another program +has written. To tell Vim to redraw the screen: > + + CTRL-L + +============================================================================== + +Next chapter: |usr_11.txt| Recovering from a crash + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt new file mode 100644 index 0000000..9ba6f44 --- /dev/null +++ b/runtime/doc/usr_11.txt @@ -0,0 +1,318 @@ +*usr_11.txt* For Vim version 9.1. Last change: 2020 Oct 25 + + VIM USER MANUAL - by Bram Moolenaar + + Recovering from a crash + + +Did your computer crash? And you just spent hours editing? Don't panic! Vim +stores enough information to be able to restore most of your work. This +chapter shows you how to get your work back and explains how the swap file is +used. + +|11.1| Basic recovery +|11.2| Where is the swap file? +|11.3| Crashed or not? +|11.4| Further reading + + Next chapter: |usr_12.txt| Clever tricks + Previous chapter: |usr_10.txt| Making big changes +Table of contents: |usr_toc.txt| + +============================================================================== +*11.1* Basic recovery + +In most cases recovering a file is quite simple, assuming you know which file +you were editing (and the harddisk is still working). Start Vim on the file, +with the "-r" argument added: > + + vim -r help.txt + +Vim will read the swap file (used to store text you were editing) and may read +bits and pieces of the original file. If Vim recovered your changes you will +see these messages (with different file names, of course): + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. You should check if everything is OK. ~ + (You might want to write out this file under another name ~ + and run diff with the original file to check for changes) ~ + You may want to delete the .swp file now. ~ + +To be on the safe side, write this file under another name: > + + :write help.txt.recovered + +Compare the file with the original file to check if you ended up with what you +expected. Vimdiff is very useful for this |08.7|. For example: > + + :write help.txt.recovered + :edit # + :diffsp help.txt + +Watch out for the original file to contain a more recent version (you saved +the file just before the computer crashed). And check that no lines are +missing (something went wrong that Vim could not recover). + If Vim produces warning messages when recovering, read them carefully. +This is rare though. + +If the recovery resulted in text that is exactly the same as the file +contents, you will get this message: + + Using swap file ".help.txt.swp" ~ + Original file "~/vim/runtime/doc/help.txt" ~ + Recovery completed. Buffer contents equals file contents. ~ + You may want to delete the .swp file now. ~ + +This usually happens if you already recovered your changes, or you wrote the +file after making changes. It is safe to delete the swap file now. + +It is normal that the last few changes can not be recovered. Vim flushes the +changes to disk when you don't type for about four seconds, or after typing +about two hundred characters. This is set with the 'updatetime' and +'updatecount' options. Thus when Vim didn't get a chance to save itself when +the system went down, the changes after the last flush will be lost. + +If you were editing without a file name, give an empty string as argument: > + + vim -r "" + +You must be in the right directory, otherwise Vim can't find the swap file. + +============================================================================== +*11.2* Where is the swap file? + +Vim can store the swap file in several places. Normally it is in the same +directory as the original file. To find it, change to the directory of the +file, and use: > + + vim -r + +Vim will list the swap files that it can find. It will also look in other +directories where the swap file for files in the current directory may be +located. It will not find swap files in any other directories though, it +doesn't search the directory tree. + The output could look like this: + + Swap files found: ~ + In current directory: ~ + 1. .main.c.swp ~ + owned by: mool dated: Tue May 29 21:00:25 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: YES ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12525 ~ + In directory ~/tmp: ~ + -- none -- ~ + In directory /var/tmp: ~ + -- none -- ~ + In directory /tmp: ~ + -- none -- ~ + +If there are several swap files that look like they may be the one you want to +use, a list is given of these swap files and you are requested to enter the +number of the one you want to use. Carefully look at the dates to decide +which one you want to use. + In case you don't know which one to use, just try them one by one and check +the resulting files if they are what you expected. + + +USING A SPECIFIC SWAP FILE + +If you know which swap file needs to be used, you can recover by giving the +swap file name. Vim will then find out the name of the original file from +the swap file. + +Example: > + vim -r .help.txt.swo + +This is also handy when the swap file is in another directory than expected. +Vim recognizes files with the pattern *.s[uvw][a-z] as swap files. + +If this still does not work, see what file names Vim reports and rename the +files accordingly. Check the 'directory' option to see where Vim may have +put the swap file. + + Note: + Vim tries to find the swap file by searching the directories in the + 'dir' option, looking for files that match "filename.sw?". If + wildcard expansion doesn't work (e.g., when the 'shell' option is + invalid), Vim does a desperate try to find the file "filename.swp". + If that fails too, you will have to give the name of the swapfile + itself to be able to recover the file. + +============================================================================== +*11.3* Crashed or not? *ATTENTION* *E325* + +Vim tries to protect you from doing stupid things. Suppose you innocently +start editing a file, expecting the contents of the file to show up. Instead, +Vim produces a very long message: + + E325: ATTENTION ~ + Found a swap file by the name ".main.c.swp" ~ + owned by: mool dated: Tue May 29 21:09:28 2001 ~ + file name: ~mool/vim/vim6/src/main.c ~ + modified: no ~ + user name: mool host name: masaka.moolenaar.net ~ + process ID: 12559 (still running) ~ + While opening file "main.c" ~ + dated: Tue May 29 19:46:12 2001 ~ + ~ + (1) Another program may be editing the same file. ~ + If this is the case, be careful not to end up with two ~ + different instances of the same file when making changes. ~ + Quit, or continue with caution. ~ + ~ + (2) An edit session for this file crashed. ~ + If this is the case, use ":recover" or "vim -r main.c" ~ + to recover the changes (see ":help recovery"). ~ + If you did this already, delete the swap file ".main.c.swp" ~ + to avoid this message. ~ + +You get this message, because, when starting to edit a file, Vim checks if a +swap file already exists for that file. If there is one, there must be +something wrong. It may be one of these two situations. + +1. Another edit session is active on this file. Look in the message for the + line with "process ID". It might look like this: + + process ID: 12559 (still running) ~ + + The text "(still running)" indicates that the process editing this file + runs on the same computer. When working on a non-Unix system you will not + get this extra hint. When editing a file over a network, you may not see + the hint, because the process might be running on another computer. In + those two cases you must find out what the situation is yourself. + If there is another Vim editing the same file, continuing to edit will + result in two versions of the same file. The one that is written last will + overwrite the other one, resulting in loss of changes. You better quit + this Vim. + +2. The swap file might be the result from a previous crash of Vim or the + computer. Check the dates mentioned in the message. If the date of the + swap file is newer than the file you were editing, and this line appears: + + modified: YES ~ + + Then you very likely have a crashed edit session that is worth recovering. + If the date of the file is newer than the date of the swap file, then + either it was changed after the crash (perhaps you recovered it earlier, + but didn't delete the swap file?), or else the file was saved before the + crash but after the last write of the swap file (then you're lucky: you + don't even need that old swap file). Vim will warn you for this with this + extra line: + + NEWER than swap file! ~ + + +NOTE that in the following situation Vim knows the swap file is not useful and +will automatically delete it: +- The file is a valid swap file (Magic number is correct). +- The flag that the file was modified is not set. +- The process is not running. + +You can programmatically deal with this situation with the |FileChangedShell| +autocommand event. + + +UNREADABLE SWAP FILE ~ + +Sometimes the line + + [cannot be read] ~ + +will appear under the name of the swap file. This can be good or bad, +depending on circumstances. + +It is good if a previous editing session crashed without having made any +changes to the file. Then a directory listing of the swap file will show +that it has zero bytes. You may delete it and proceed. + +It is slightly bad if you don't have read permission for the swap file. You +may want to view the file read-only, or quit. On multi-user systems, if you +yourself did the last changes under a different login name, a logout +followed by a login under that other name might cure the "read error". Or +else you might want to find out who last edited (or is editing) the file and +have a talk with them. + +It is very bad if it means there is a physical read error on the disk +containing the swap file. Fortunately, this almost never happens. +You may want to view the file read-only at first (if you can), to see the +extent of the changes that were "forgotten". If you are the one in charge of +that file, be prepared to redo your last changes. + + +WHAT TO DO? *swap-exists-choices* + +If dialogs are supported you will be asked to select one of six choices: + + Swap file ".main.c.swp" already exists! ~ + [O]pen Read-Only, (E)dit anyway, (R)ecover, (Q)uit, (A)bort, (D)elete it: ~ + +O Open the file readonly. Use this when you just want to view the file and + don't need to recover it. You might want to use this when you know someone + else is editing the file, but you just want to look in it and not make + changes. + +E Edit the file anyway. Use this with caution! If the file is being edited + in another Vim, you might end up with two versions of the file. Vim will + try to warn you when this happens, but better be safe than sorry. + +R Recover the file from the swap file. Use this if you know that the swap + file contains changes that you want to recover. + +Q Quit. This avoids starting to edit the file. Use this if there is another + Vim editing the same file. + When you just started Vim, this will exit Vim. When starting Vim with + files in several windows, Vim quits only if there is a swap file for the + first one. When using an edit command, the file will not be loaded and you + are taken back to the previously edited file. + +A Abort. Like Quit, but also abort further commands. This is useful when + loading a script that edits several files, such as a session with multiple + windows. + +D Delete the swap file. Use this when you are sure you no longer need it. + For example, when it doesn't contain changes, or when the file itself is + newer than the swap file. + On Unix this choice is only offered when the process that created the + swap file does not appear to be running. + +If you do not get the dialog (you are running a version of Vim that does not +support it), you will have to do it manually. To recover the file, use this +command: > + + :recover + + +Vim cannot always detect that a swap file already exists for a file. This is +the case when the other edit session puts the swap files in another directory +or when the path name for the file is different when editing it on different +machines. Therefore, don't rely on Vim always warning you. + +If you really don't want to see this message, you can add the 'A' flag to the +'shortmess' option. But it's very unusual that you need this. + +For remarks about encryption and the swap file, see |:recover-crypt|. +For programmatic access to the swap file, see |swapinfo()|. + +============================================================================== +*11.4* Further reading + +|swap-file| An explanation about where the swap file will be created and + what its name is. +|:preserve| Manually flushing the swap file to disk. +|:swapname| See the name of the swap file for the current file. +'updatecount' Number of key strokes after which the swap file is flushed to + disk. +'updatetime' Timeout after which the swap file is flushed to disk. +'swapsync' Whether the disk is synced when the swap file is flushed. +'directory' List of directory names where to store the swap file. +'maxmem' Limit for memory usage before writing text to the swap file. +'maxmemtot' Same, but for all files in total. + +============================================================================== + +Next chapter: |usr_12.txt| Clever tricks + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt new file mode 100644 index 0000000..fb90c61 --- /dev/null +++ b/runtime/doc/usr_12.txt @@ -0,0 +1,358 @@ +*usr_12.txt* For Vim version 9.1. Last change: 2022 Nov 19 + + VIM USER MANUAL - by Bram Moolenaar + + Clever tricks + + +By combining several commands you can make Vim do nearly everything. In this +chapter a number of useful combinations will be presented. This uses the +commands introduced in the previous chapters and a few more. + +|12.1| Replace a word +|12.2| Change "Last, First" to "First Last" +|12.3| Sort a list +|12.4| Reverse line order +|12.5| Count words +|12.6| Find a man page +|12.7| Trim blanks +|12.8| Find where a word is used + + Next chapter: |usr_20.txt| Typing command-line commands quickly + Previous chapter: |usr_11.txt| Recovering from a crash +Table of contents: |usr_toc.txt| + +============================================================================== +*12.1* Replace a word + +The substitute command can be used to replace all occurrences of a word with +another word: > + + :%s/four/4/g + +The "%" range means to replace in all lines. The "g" flag at the end causes +all words in a line to be replaced. + This will not do the right thing if your file also contains "thirtyfour". +It would be replaced with "thirty4". To avoid this, use the "\<" item to +match the start of a word: > + + :%s/\<four/4/g + +Obviously, this still goes wrong on "fourteen". Use "\>" to match the end of +a word: > + + :%s/\<four\>/4/g + +If you are programming, you might want to replace "four" in comments, but not +in the code. Since this is difficult to specify, add the "c" flag to have the +substitute command prompt you for each replacement: > + + + :%s/\<four\>/4/gc + + +REPLACING IN SEVERAL FILES + +Suppose you want to replace a word in more than one file. You could edit each +file and type the command manually. It's a lot faster to use record and +playback. + Let's assume you have a directory with C++ files, all ending in ".cpp". +There is a function called "GetResp" that you want to rename to "GetAnswer". + + vim *.cpp Start Vim, defining the argument list to + contain all the C++ files. You are now in the + first file. + qq Start recording into the q register + :%s/\<GetResp\>/GetAnswer/g + Do the replacements in the first file. + :wnext Write this file and move to the next one. + q Stop recording. + @q Execute the q register. This will replay the + substitution and ":wnext". You can verify + that this doesn't produce an error message. + 999@q Execute the q register on the remaining files. + +At the last file you will get an error message, because ":wnext" cannot move +to the next file. This stops the execution, and everything is done. + + Note: + When playing back a recorded sequence, an error stops the execution. + Therefore, make sure you don't get an error message when recording. + +There is one catch: If one of the .cpp files does not contain the word +"GetResp", you will get an error and replacing will stop. To avoid this, add +the "e" flag to the substitute command: > + + :%s/\<GetResp\>/GetAnswer/ge + +The "e" flag tells ":substitute" that not finding a match is not an error. + +============================================================================== +*12.2* Change "Last, First" to "First Last" + +You have a list of names in this form: + + Doe, John ~ + Smith, Peter ~ + +You want to change that to: + + John Doe ~ + Peter Smith ~ + +This can be done with just one command: > + + :%s/\([^,]*\), \(.*\)/\2 \1/ + +Let's break this down in parts. Obviously it starts with a substitute +command. The "%" is the line range, which stands for the whole file. Thus +the substitution is done in every line in the file. + The arguments for the substitute command are "/from/to/". The slashes +separate the "from" pattern and the "to" string. This is what the "from" +pattern contains: + \([^,]*\), \(.*\) ~ + + The first part between \( \) matches "Last" \( \) + match anything but a comma [^,] + any number of times * + matches ", " literally , + The second part between \( \) matches "First" \( \) + any character . + any number of times * + +In the "to" part we have "\2" and "\1". These are called backreferences. +They refer to the text matched by the "\( \)" parts in the pattern. "\2" +refers to the text matched by the second "\( \)", which is the "First" name. +"\1" refers to the first "\( \)", which is the "Last" name. + You can use up to nine backreferences in the "to" part of a substitute +command. "\0" stands for the whole matched pattern. There are a few more +special items in a substitute command, see |sub-replace-special|. + +============================================================================== +*12.3* Sort a list + +In a Makefile you often have a list of files. For example: + + OBJS = \ ~ + version.o \ ~ + pch.o \ ~ + getopt.o \ ~ + util.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + backup.o ~ + +To sort this list, filter the text through the external sort command: > + + /^OBJS + j + :.,/^$/-1!sort + +This goes to the first line, where "OBJS" is the first thing in the line. +Then it goes one line down and filters the lines until the next empty line. +You could also select the lines in Visual mode and then use "!sort". That's +easier to type, but more work when there are many lines. + The result is this: + + OBJS = \ ~ + backup.o ~ + getopt.o \ ~ + getopt1.o \ ~ + inp.o \ ~ + patch.o \ ~ + pch.o \ ~ + util.o \ ~ + version.o \ ~ + + +Notice that a backslash at the end of each line is used to indicate the line +continues. After sorting, this is wrong! The "backup.o" line that was at +the end didn't have a backslash. Now that it sorts to another place, it +must have a backslash. + The simplest solution is to add the backslash with "A \<Esc>". You can +keep the backslash in the last line, if you make sure an empty line comes +after it. That way you don't have this problem again. + +============================================================================== +*12.4* Reverse line order + +The |:global| command can be combined with the |:move| command to move all the +lines before the first line, resulting in a reversed file. The command is: > + + :global/^/move 0 + +Abbreviated: > + + :g/^/m 0 + +The "^" regular expression matches the beginning of the line (even if the line +is blank). The |:move| command moves the matching line to after the imaginary +zeroth line, so the current matching line becomes the first line of the file. +As the |:global| command is not confused by the changing line numbering, +|:global| proceeds to match all remaining lines of the file and puts each as +the first. + +This also works on a range of lines. First move to above the first line and +mark it with "mt". Then move the cursor to the last line in the range and +type: > + + :'t+1,.g/^/m 't + +============================================================================== +*12.5* Count words + +Sometimes you have to write a text with a maximum number of words. Vim can +count the words for you. + When the whole file is what you want to count the words in, use this +command: > + + g CTRL-G + +Do not type a space after the g, this is just used here to make the command +easy to read. + The output looks like this: + + Col 1 of 0; Line 141 of 157; Word 748 of 774; Byte 4489 of 4976 ~ + +You can see on which word you are (748), and the total number of words in the +file (774). + +When the text is only part of a file, you could move to the start of the text, +type "g CTRL-G", move to the end of the text, type "g CTRL-G" again, and then +use your brain to compute the difference in the word position. That's a good +exercise, but there is an easier way. With Visual mode, select the text you +want to count words in. Then type g CTRL-G. The result: + + Selected 5 of 293 Lines; 70 of 1884 Words; 359 of 10928 Bytes ~ + +For other ways to count words, lines and other items, see |count-items|. + +============================================================================== +*12.6* Find a man page *find-manpage* + +While editing a shell script or C program, you are using a command or function +that you want to find the man page for (this is on Unix). Let's first use a +simple way: Move the cursor to the word you want to find help on and press > + + K + +Vim will run the external "man" program on the word. If the man page is +found, it is displayed. This uses the normal pager to scroll through the text +(mostly the "more" program). When you get to the end pressing <Enter> will +get you back into Vim. + +A disadvantage is that you can't see the man page and the text you are working +on at the same time. There is a trick to make the man page appear in a Vim +window. First, load the man filetype plugin: > + + :runtime! ftplugin/man.vim + +Put this command in your vimrc file if you intend to do this often. Now you +can use the ":Man" command to open a window on a man page: > + + :Man csh + +You can scroll around and the text is highlighted. This allows you to find +the help you were looking for. Use CTRL-W w to jump to the window with the +text you were working on. + To find a man page in a specific section, put the section number first. +For example, to look in section 3 for "echo": > + + :Man 3 echo + +To jump to another man page, which is in the text with the typical form +"word(1)", press CTRL-] on it. Further ":Man" commands will use the same +window. + +To display a man page for the word under the cursor, use this: > + + \K + +(If you redefined the <Leader>, use it instead of the backslash). +For example, you want to know the return value of "strstr()" while editing +this line: + + if ( strstr (input, "aap") == ) ~ + +Move the cursor to somewhere on "strstr" and type "\K". A window will open +to display the man page for strstr(). + +============================================================================== +*12.7* Trim blanks + +Some people find spaces and tabs at the end of a line useless, wasteful, and +ugly. To remove whitespace at the end of every line, execute the following +command: > + + :%s/\s\+$// + +The line range "%" is used, thus this works on the whole file. The pattern +that the ":substitute" command matches with is "\s\+$". This finds white +space characters (\s), 1 or more of them (\+), before the end-of-line ($). +Later will be explained how you write patterns like this, see |usr_27.txt|. + The "to" part of the substitute command is empty: "//". Thus it replaces +with nothing, effectively deleting the matched white space. + +Another wasteful use of spaces is placing them before a tab. Often these can +be deleted without changing the amount of white space. But not always! +Therefore, you can best do this manually. Use this search command: > + + / + +You cannot see it, but there is a space before a tab in this command. Thus +it's "/<Space><Tab>". Now use "x" to delete the space and check that the +amount of white space doesn't change. You might have to insert a tab if it +does change. Type "n" to find the next match. Repeat this until no more +matches can be found. + +============================================================================== +*12.8* Find where a word is used + +If you are a UNIX user, you can use a combination of Vim and the grep command +to edit all the files that contain a given word. This is extremely useful if +you are working on a program and want to view or edit all the files that +contain a specific variable. + For example, suppose you want to edit all the C program files that contain +the word "frame_counter". To do this you use the command: > + + vim `grep -l frame_counter *.c` + +Let's look at this command in detail. The grep command searches through a set +of files for a given word. Because the -l argument is specified, the command +will only list the files containing the word and not print the matching lines. +The word it is searching for is "frame_counter". Actually, this can be any +regular expression. (Note: What grep uses for regular expressions is not +exactly the same as what Vim uses.) + The entire command is enclosed in backticks (`). This tells the UNIX shell +to run this command and pretend that the results were typed on the command +line. So what happens is that the grep command is run and produces a list of +files, these files are put on the Vim command line. This results in Vim +editing the file list that is the output of grep. You can then use commands +like ":next" and ":first" to browse through the files. + + +FINDING EACH LINE + +The above command only finds the files in which the word is found. You still +have to find the word within the files. + Vim has a built-in command that you can use to search a set of files for a +given string. If you want to find all occurrences of "error_string" in all C +program files, for example, enter the following command: > + + :grep error_string *.c + +This causes Vim to search for the string "error_string" in all the specified +files (*.c). The editor will now open the first file where a match is found +and position the cursor on the first matching line. To go to the next +matching line (no matter in what file it is), use the ":cnext" command. To go +to the previous match, use the ":cprev" command. Use ":clist" to see all the +matches and where they are. + The ":grep" command uses the external commands grep (on Unix) or findstr +(on Windows). You can change this by setting the option 'grepprg'. + +============================================================================== + +Next chapter: |usr_20.txt| Typing command-line commands quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_20.txt b/runtime/doc/usr_20.txt new file mode 100644 index 0000000..486f18f --- /dev/null +++ b/runtime/doc/usr_20.txt @@ -0,0 +1,384 @@ +*usr_20.txt* For Vim version 9.1. Last change: 2021 Nov 18 + + VIM USER MANUAL - by Bram Moolenaar + + Typing command-line commands quickly + + +Vim has a few generic features that makes it easier to enter commands. Colon +commands can be abbreviated, edited and repeated. Completion is available for +nearly everything. + +|20.1| Command line editing +|20.2| Command line abbreviations +|20.3| Command line completion +|20.4| Command line history +|20.5| Command line window + + Next chapter: |usr_21.txt| Go away and come back + Previous chapter: |usr_12.txt| Clever tricks +Table of contents: |usr_toc.txt| + +============================================================================== +*20.1* Command line editing + +When you use a colon (:) command or search for a string with / or ?, Vim puts +the cursor on the bottom of the screen. There you type the command or search +pattern. This is called the Command line. Also when it's used for entering a +search command. + +The most obvious way to edit the command you type is by pressing the <BS> key. +This erases the character before the cursor. To erase another character, +typed earlier, first move the cursor with the cursor keys. + For example, you have typed this: > + + :s/col/pig/ + +Before you hit <Enter>, you notice that "col" should be "cow". To correct +this, you type <Left> five times. The cursor is now just after "col". Type +<BS> and "w" to correct: > + + :s/cow/pig/ + +Now you can press <Enter> directly. You don't have to move the cursor to the +end of the line before executing the command. + +The most often used keys to move around in the command line: + + <Left> one character left + <Right> one character right + <S-Left> or <C-Left> one word left + <S-Right> or <C-Right> one word right + CTRL-B or <Home> to begin of command line + CTRL-E or <End> to end of command line + + Note: + <S-Left> (cursor left key with Shift key pressed) and <C-Left> (cursor + left key with Control pressed) will not work on all keyboards. Same + for the other Shift and Control combinations. + +You can also use the mouse to move the cursor. + + +DELETING + +As mentioned, <BS> deletes the character before the cursor. To delete a whole +word use CTRL-W. + + /the fine pig ~ + + CTRL-W + + /the fine ~ + +CTRL-U removes all text, thus allows you to start all over again. + + +OVERSTRIKE + +The <Insert> key toggles between inserting characters and replacing the +existing ones. Start with this text: + + /the fine pig ~ + +Move the cursor to the start of "fine" with <S-Left> twice (or <Left> eight +times, if <S-Left> doesn't work). Now press <Insert> to switch to overstrike +and type "great": + + /the greatpig ~ + +Oops, we lost the space. Now, don't use <BS>, because it would delete the +"t" (this is different from Replace mode). Instead, press <Insert> to switch +from overstrike to inserting, and type the space: + + /the great pig ~ + + +CANCELLING + +You thought of executing a : or / command, but changed your mind. To get rid +of what you already typed, without executing it, press CTRL-C or <Esc>. + + Note: + <Esc> is the universal "get out" key. Unfortunately, in the good old + Vi pressing <Esc> in a command line executed the command! Since that + might be considered to be a bug, Vim uses <Esc> to cancel the command. + But with the 'cpoptions' option it can be made Vi compatible. And + when using a mapping (which might be written for Vi) <Esc> also works + Vi compatible. Therefore, using CTRL-C is a method that always works. + +If you are at the start of the command line, pressing <BS> will cancel the +command. It's like deleting the ":" or "/" that the line starts with. + +============================================================================== +*20.2* Command line abbreviations + +Some of the ":" commands are really long. We already mentioned that +":substitute" can be abbreviated to ":s". This is a generic mechanism, all +":" commands can be abbreviated. + +How short can a command get? There are 26 letters, and many more commands. +For example, ":set" also starts with ":s", but ":s" doesn't start a ":set" +command. Instead ":set" can be abbreviated to ":se". + When the shorter form of a command could be used for two commands, it +stands for only one of them. There is no logic behind which one, you have to +learn them. In the help files the shortest form that works is mentioned. For +example: > + + :s[ubstitute] + +This means that the shortest form of ":substitute" is ":s". The following +characters are optional. Thus ":su" and ":sub" also work. + +In the user manual we will either use the full name of command, or a short +version that is still readable. For example, ":function" can be abbreviated +to ":fu". But since most people don't understand what that stands for, we +will use ":fun". (Vim doesn't have a ":funny" command, otherwise ":fun" would +be confusing too.) + +It is recommended that in Vim scripts you write the full command name. That +makes it easier to read back when you make later changes. Except for some +often used commands like ":w" (":write") and ":r" (":read"). + A particularly confusing one is ":end", which could stand for ":endif", +":endwhile" or ":endfunction". Therefore, always use the full name. + + +SHORT OPTION NAMES + +In the user manual the long version of the option names is used. Many options +also have a short name. Unlike ":" commands, there is only one short name +that works. For example, the short name of 'autoindent' is 'ai'. Thus these +two commands do the same thing: > + + :set autoindent + :set ai + +You can find the full list of long and short names here: |option-list|. + +============================================================================== +*20.3* Command line completion + +This is one of those Vim features that, by itself, is a reason to switch from +Vi to Vim. Once you have used this, you can't do without. + +Suppose you have a directory that contains these files: + + info.txt + intro.txt + bodyofthepaper.txt + +To edit the last one, you use the command: > + + :edit bodyofthepaper.txt + +It's easy to type this wrong. A much quicker way is: > + + :edit b<Tab> + +Which will result in the same command. What happened? The <Tab> key does +completion of the word before the cursor. In this case "b". Vim looks in the +directory and finds only one file that starts with a "b". That must be the +one you are looking for, thus Vim completes the file name for you. + +Now type: > + + :edit i<Tab> + +Vim will beep, and give you: > + + :edit info.txt + +The beep means that Vim has found more than one match. It then uses the first +match it found (alphabetically). If you press <Tab> again, you get: > + + :edit intro.txt + +Thus, if the first <Tab> doesn't give you the file you were looking for, press +it again. If there are more matches, you will see them all, one at a time. + If you press <Tab> on the last matching entry, you will go back to what you +first typed: > + + :edit i + +Then it starts all over again. Thus Vim cycles through the list of matches. +Use CTRL-P to go through the list in the other direction: + + <------------------- <Tab> -------------------------+ + | + <Tab> --> <Tab> --> + :edit i :edit info.txt :edit intro.txt + <-- CTRL-P <-- CTRL-P + | + +---------------------- CTRL-P ------------------------> + + +CONTEXT + +When you type ":set i" instead of ":edit i" and press <Tab> you get: > + + :set icon + +Hey, why didn't you get ":set info.txt"? That's because Vim has context +sensitive completion. The kind of words Vim will look for depends on the +command before it. Vim knows that you cannot use a file name just after a +":set" command, but you can use an option name. + Again, if you repeat typing the <Tab>, Vim will cycle through all matches. +There are quite a few, it's better to type more characters first: > + + :set isk<Tab> + +Gives: > + + :set iskeyword + +Now type "=" and press <Tab>: > + + :set iskeyword=@,48-57,_,192-255 + +What happens here is that Vim inserts the old value of the option. Now you +can edit it. + What is completed with <Tab> is what Vim expects in that place. Just try +it out to see how it works. In some situations you will not get what you +want. That's either because Vim doesn't know what you want, or because +completion was not implemented for that situation. In that case you will get +a <Tab> inserted (displayed as ^I). + + +LIST MATCHES + +When there are many matches, you would like to see an overview. Do this by +pressing CTRL-D. For example, pressing CTRL-D after: > + + :set is + +results in: > + + :set is + incsearch isfname isident iskeyword isprint + :set is + +Vim lists the matches and then comes back with the text you typed. You can +now check the list for the item you wanted. If it isn't there, you can use +<BS> to correct the word. If there are many matches, type a few more +characters before pressing <Tab> to complete the rest. + If you have watched carefully, you will have noticed that "incsearch" +doesn't start with "is". In this case "is" stands for the short name of +"incsearch". (Many options have a short and a long name.) Vim is clever +enough to know that you might have wanted to expand the short name of the +option into the long name. + + +THERE IS MORE + +The CTRL-L command completes the word to the longest unambiguous string. If +you type ":edit i" and there are files "info.txt" and "info_backup.txt" you +will get ":edit info". + +The 'wildmode' option can be used to change the way completion works. +The 'wildmenu' option can be used to get a menu-like list of matches. +Use the 'suffixes' option to specify files that are less important and appear +at the end of the list of files. +The 'wildignore' option specifies files that are not listed at all. + +More about all of this here: |cmdline-completion| + +============================================================================== +*20.4* Command line history + +In chapter 3 we briefly mentioned the history. The basics are that you can +use the <Up> key to recall an older command line. <Down> then takes you back +to newer commands. + +There are actually five histories. The ones we will mention here are for ":" +commands and for "/" and "?" search commands. The "/" and "?" commands share +the same history, because they are both search commands. The three other +histories are for expressions, debug mode commands and input lines for the +input() function. |cmdline-history| + +Suppose you have done a ":set" command, typed ten more colon commands and then +want to repeat that ":set" command again. You could press ":" and then ten +times <Up>. There is a quicker way: > + + :se<Up> + +Vim will now go back to the previous command that started with "se". You have +a good chance that this is the ":set" command you were looking for. At least +you should not have to press <Up> very often (unless ":set" commands is all +you have done). + +The <Up> key will use the text typed so far and compare it with the lines in +the history. Only matching lines will be used. + If you do not find the line you were looking for, use <Down> to go back to +what you typed and correct that. Or use CTRL-U to start all over again. + +To see all the lines in the history: > + + :history + +That's the history of ":" commands. The search history is displayed with this +command: > + + :history / + +CTRL-P will work like <Up>, except that it doesn't matter what you already +typed. Similarly for CTRL-N and <Down>. CTRL-P stands for previous, CTRL-N +for next. + +============================================================================== +*20.5* Command line window + +Typing the text in the command line works differently from typing text in +Insert mode. It doesn't allow many commands to change the text. For most +commands that's OK, but sometimes you have to type a complicated command. +That's where the command line window is useful. + +Open the command line window with this command: > + + q: + +Vim now opens a (small) window at the bottom. It contains the command line +history, and an empty line at the end: + + +-------------------------------------+ + |other window | + |~ | + |file.txt=============================| + |:e c | + |:e config.h.in | + |:set path=.,/usr/include,, | + |:set iskeyword=@,48-57,_,192-255 | + |:set is | + |:q | + |: | + |command-line=========================| + | | + +-------------------------------------+ + +You are now in Normal mode. You can use the "hjkl" keys to move around. For +example, move up with "5k" to the ":e config.h.in" line. Type "$h" to go to +the "i" of "in" and type "cwout". Now you have changed the line to: + + :e config.h.out ~ + +Now press <Enter> and this command will be executed. The command line window +will close. + The <Enter> command will execute the line under the cursor. It doesn't +matter whether Vim is in Insert mode or in Normal mode. + Changes in the command line window are lost. They do not result in the +history to be changed. Except that the command you execute will be added to +the end of the history, like with all executed commands. + +The command line window is very useful when you want to have overview of the +history, lookup a similar command, change it a bit and execute it. A search +command can be used to find something. + In the previous example the "?config" search command could have been used +to find the previous command that contains "config". It's a bit strange, +because you are using a command line to search in the command line window. +While typing that search command you can't open another command line window, +there can be only one. + +============================================================================== + +Next chapter: |usr_21.txt| Go away and come back + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt new file mode 100644 index 0000000..95ded58 --- /dev/null +++ b/runtime/doc/usr_21.txt @@ -0,0 +1,502 @@ +*usr_21.txt* For Vim version 9.1. Last change: 2019 Apr 25 + + VIM USER MANUAL - by Bram Moolenaar + + Go away and come back + + +This chapter goes into mixing the use of other programs with Vim. Either by +executing program from inside Vim or by leaving Vim and coming back later. +Furthermore, this is about the ways to remember the state of Vim and restore +it later. + +|21.1| Suspend and resume +|21.2| Executing shell commands +|21.3| Remembering information; viminfo +|21.4| Sessions +|21.5| Views +|21.6| Modelines + + Next chapter: |usr_22.txt| Finding the file to edit + Previous chapter: |usr_20.txt| Typing command-line commands quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*21.1* Suspend and resume + +Like most Unix programs Vim can be suspended by pressing CTRL-Z. This stops +Vim and takes you back to the shell it was started in. You can then do any +other commands until you are bored with them. Then bring back Vim with the +"fg" command. > + + CTRL-Z + {any sequence of shell commands} + fg + +You are right back where you left Vim, nothing has changed. + In case pressing CTRL-Z doesn't work, you can also use ":suspend". +Don't forget to bring Vim back to the foreground, you would lose any changes +that you made! + +Only Unix has support for this. On other systems Vim will start a shell for +you. This also has the functionality of being able to execute shell commands. +But it's a new shell, not the one that you started Vim from. + When you are running the GUI you can't go back to the shell where Vim was +started. CTRL-Z will minimize the Vim window instead. + +============================================================================== +*21.2* Executing shell commands + +To execute a single shell command from Vim use ":!{command}". For example, to +see a directory listing: > + + :!ls + :!dir + +The first one is for Unix, the second one for MS-Windows. + Vim will execute the program. When it ends you will get a prompt to hit +<Enter>. This allows you to have a look at the output from the command before +returning to the text you were editing. + The "!" is also used in other places where a program is run. Let's take +a look at an overview: + + :!{program} execute {program} + :r !{program} execute {program} and read its output + :w !{program} execute {program} and send text to its input + :[range]!{program} filter text through {program} + +Notice that the presence of a range before "!{program}" makes a big +difference. Without it executes the program normally, with the range a number +of text lines is filtered through the program. + +Executing a whole row of programs this way is possible. But a shell is much +better at it. You can start a new shell this way: > + + :shell + +This is similar to using CTRL-Z to suspend Vim. The difference is that a new +shell is started. + +When using the GUI the shell will be using the Vim window for its input and +output. Since Vim is not a terminal emulator, this will not work perfectly. +If you have trouble, try toggling the 'guipty' option. If this still doesn't +work well enough, start a new terminal to run the shell in. For example with: +> + :!xterm& + +============================================================================== +*21.3* Remembering information; viminfo + +After editing for a while you will have text in registers, marks in various +files, a command line history filled with carefully crafted commands. When +you exit Vim all of this is lost. But you can get it back! + +The viminfo file is designed to store status information: + + Command-line and Search pattern history + Text in registers + Marks for various files + The buffer list + Global variables + +Each time you exit Vim it will store this information in a file, the viminfo +file. When Vim starts again, the viminfo file is read and the information +restored. + +The 'viminfo' option is set by default to restore a limited number of items. +You might want to set it to remember more information. This is done through +the following command: > + + :set viminfo=string + +The string specifies what to save. The syntax of this string is an option +character followed by an argument. The option/argument pairs are separated by +commas. + Take a look at how you can build up your own viminfo string. First, the ' +option is used to specify how many files for which you save marks (a-z). Pick +a nice even number for this option (1000, for instance). Your command now +looks like this: > + + :set viminfo='1000 + +The f option controls whether global marks (A-Z and 0-9) are stored. If this +option is 0, none are stored. If it is 1 or you do not specify an f option, +the marks are stored. You want this feature, so now you have this: > + + :set viminfo='1000,f1 + +The < option controls how many lines are saved for each of the registers. By +default, all the lines are saved. If 0, nothing is saved. To avoid adding +thousands of lines to your viminfo file (which might never get used and makes +starting Vim slower) you use a maximum of 500 lines: > + + :set viminfo='1000,f1,<500 +< +Other options you might want to use: + : number of lines to save from the command line history + @ number of lines to save from the input line history + / number of lines to save from the search history + r removable media, for which no marks will be stored (can be + used several times) + ! global variables that start with an uppercase letter and + don't contain lowercase letters + h disable 'hlsearch' highlighting when starting + % the buffer list (only restored when starting Vim without file + arguments) + c convert the text using 'encoding' + n name used for the viminfo file (must be the last option) + +See the 'viminfo' option and |viminfo-file| for more information. + +When you run Vim multiple times, the last one exiting will store its +information. This may cause information that previously exiting Vims stored +to be lost. Each item can be remembered only once. + + +GETTING BACK TO WHERE YOU STOPPED VIM + +You are halfway editing a file and it's time to leave for holidays. You exit +Vim and go enjoy yourselves, forgetting all about your work. After a couple +of weeks you start Vim, and type: +> + '0 + +And you are right back where you left Vim. So you can get on with your work. + Vim creates a mark each time you exit Vim. The last one is '0. The +position that '0 pointed to is made '1. And '1 is made to '2, and so forth. +Mark '9 is lost. + The |:marks| command is useful to find out where '0 to '9 will take you. + + +GETTING BACK TO SOME FILE + +If you want to go back to a file that you edited recently, but not when +exiting Vim, there is a slightly more complicated way. You can see a list of +files by typing the command: > + + :oldfiles +< 1: ~/.viminfo ~ + 2: ~/text/resume.txt ~ + 3: /tmp/draft ~ + +Now you would like to edit the second file, which is in the list preceded by +"2:". You type: > + + :e #<2 + +Instead of ":e" you can use any command that has a file name argument, the +"#<2" item works in the same place as "%" (current file name) and "#" +(alternate file name). So you can also split the window to edit the third +file: > + + :split #<3 + +That #<123 thing is a bit complicated when you just want to edit a file. +Fortunately there is a simpler way: > + + :browse oldfiles +< 1: ~/.viminfo ~ + 2: ~/text/resume.txt ~ + 3: /tmp/draft ~ + -- More -- + +You get the same list of files as with |:oldfiles|. If you want to edit +"resume.txt" first press "q" to stop the listing. You will get a prompt: + + Type number and <Enter> (empty cancels): ~ + +Type "2" and press <Enter> to edit the second file. + +More info at |:oldfiles|, |v:oldfiles| and |c_#<|. + + +MOVE INFO FROM ONE VIM TO ANOTHER + +You can use the ":wviminfo" and ":rviminfo" commands to save and restore the +information while still running Vim. This is useful for exchanging register +contents between two instances of Vim, for example. In the first Vim do: > + + :wviminfo! ~/tmp/viminfo + +And in the second Vim do: > + + :rviminfo! ~/tmp/viminfo + +Obviously, the "w" stands for "write" and the "r" for "read". + The ! character is used by ":wviminfo" to forcefully overwrite an existing +file. When it is omitted, and the file exists, the information is merged into +the file. + The ! character used for ":rviminfo" means that all the information is +used, this may overwrite existing information. Without the ! only information +that wasn't set is used. + These commands can also be used to store info and use it again later. You +could make a directory full of viminfo files, each containing info for a +different purpose. + +============================================================================== +*21.4* Sessions + +Suppose you are editing along, and it is the end of the day. You want to quit +work and pick up where you left off the next day. You can do this by saving +your editing session and restoring it the next day. + A Vim session contains all the information about what you are editing. +This includes things such as the file list, window layout, global variables, +options and other information. (Exactly what is remembered is controlled by +the 'sessionoptions' option, described below.) + The following command creates a session file: > + + :mksession vimbook.vim + +Later if you want to restore this session, you can use this command: > + + :source vimbook.vim + +If you want to start Vim and restore a specific session, you can use the +following command: > + + vim -S vimbook.vim + +This tells Vim to read a specific file on startup. The 'S' stands for +session (actually, you can source any Vim script with -S, thus it might as +well stand for "source"). + +The windows that were open are restored, with the same position and size as +before. Mappings and option values are like before. + What exactly is restored depends on the 'sessionoptions' option. The +default value is: +"blank,buffers,curdir,folds,help,options,tabpages,winsize,terminal". + + blank keep empty windows + buffers all buffers, not only the ones in a window + curdir the current directory + folds folds, also manually created ones + help the help window + options all options and mappings + tabpages all tab pages + winsize window sizes + terminal include terminal windows + +Change this to your liking. To also restore the size of the Vim window, for +example, use: > + + :set sessionoptions+=resize + + +SESSION HERE, SESSION THERE + +The obvious way to use sessions is when working on different projects. +Suppose you store your session files in the directory "~/.vim". You are +currently working on the "secret" project and have to switch to the "boring" +project: > + + :wall + :mksession! ~/.vim/secret.vim + :source ~/.vim/boring.vim + +This first uses ":wall" to write all modified files. Then the current session +is saved, using ":mksession!". This overwrites the previous session. The +next time you load the secret session you can continue where you were at this +point. And finally you load the new "boring" session. + +If you open help windows, split and close various windows, and generally mess +up the window layout, you can go back to the last saved session: > + + :source ~/.vim/boring.vim + +Thus you have complete control over whether you want to continue next time +where you are now, by saving the current setup in a session, or keep the +session file as a starting point. + Another way of using sessions is to create a window layout that you like to +use, and save this in a session. Then you can go back to this layout whenever +you want. + For example, this is a nice layout to use: + + +----------------------------------------+ + | VIM - main help file | + | | + |Move around: Use the cursor keys, or "h| + |help.txt================================| + |explorer | | + |dir |~ | + |dir |~ | + |file |~ | + |file |~ | + |file |~ | + |file |~ | + |~/=========|[No File]===================| + | | + +----------------------------------------+ + +This has a help window at the top, so that you can read this text. The narrow +vertical window on the left contains a file explorer. This is a Vim plugin +that lists the contents of a directory. You can select files to edit there. +More about this in the next chapter. + Create this from a just started Vim with: > + + :help + CTRL-W w + :vertical split ~/ + +You can resize the windows a bit to your liking. Then save the session with: +> + :mksession ~/.vim/mine.vim + +Now you can start Vim with this layout: > + + vim -S ~/.vim/mine.vim + +Hint: To open a file you see listed in the explorer window in the empty +window, move the cursor to the filename and press "O". Double clicking with +the mouse will also do this. + + +UNIX AND MS-WINDOWS + +Some people have to do work on MS-Windows systems one day and on Unix another +day. If you are one of them, consider adding "slash" and "unix" to +'sessionoptions'. The session files will then be written in a format that can +be used on both systems. This is the command to put in your vimrc file: > + + :set sessionoptions+=unix,slash + +Vim will use the Unix format then, because the MS-Windows Vim can read and +write Unix files, but Unix Vim can't read MS-Windows format session files. +Similarly, MS-Windows Vim understands file names with / to separate names, but +Unix Vim doesn't understand \. + + +SESSIONS AND VIMINFO + +Sessions store many things, but not the position of marks, contents of +registers and the command line history. You need to use the viminfo feature +for these things. + In most situations you will want to use sessions separately from viminfo. +This can be used to switch to another session, but keep the command line +history. And yank text into registers in one session, and paste it back in +another session. + You might prefer to keep the info with the session. You will have to do +this yourself then. Example: > + + :mksession! ~/.vim/secret.vim + :wviminfo! ~/.vim/secret.viminfo + +And to restore this again: > + + :source ~/.vim/secret.vim + :rviminfo! ~/.vim/secret.viminfo + +============================================================================== +*21.5* Views + +A session stores the looks of the whole of Vim. When you want to store the +properties for one window only, use a view. + The use of a view is for when you want to edit a file in a specific way. +For example, you have line numbers enabled with the 'number' option and +defined a few folds. Just like with sessions, you can remember this view on +the file and restore it later. Actually, when you store a session, it stores +the view of each window. + There are two basic ways to use views. The first is to let Vim pick a name +for the view file. You can restore the view when you later edit the same +file. To store the view for the current window: > + + :mkview + +Vim will decide where to store the view. When you later edit the same file +you get the view back with this command: > + + :loadview + +That's easy, isn't it? + Now you want to view the file without the 'number' option on, or with all +folds open, you can set the options to make the window look that way. Then +store this view with: > + + :mkview 1 + +Obviously, you can get this back with: > + + :loadview 1 + +Now you can switch between the two views on the file by using ":loadview" with +and without the "1" argument. + You can store up to ten views for the same file this way, one unnumbered +and nine numbered 1 to 9. + + +A VIEW WITH A NAME + +The second basic way to use views is by storing the view in a file with a name +you choose. This view can be loaded while editing another file. Vim will +then switch to editing the file specified in the view. Thus you can use this +to quickly switch to editing another file, with all its options set as you +saved them. + For example, to save the view of the current file: > + + :mkview ~/.vim/main.vim + +You can restore it with: > + + :source ~/.vim/main.vim + +============================================================================== +*21.6* Modelines + +When editing a specific file, you might set options specifically for that +file. Typing these commands each time is boring. Using a session or view for +editing a file doesn't work when sharing the file between several people. + The solution for this situation is adding a modeline to the file. This is +a line of text that tells Vim the values of options, to be used in this file +only. + A typical example is a C program where you make indents by a multiple of 4 +spaces. This requires setting the 'shiftwidth' option to 4. This modeline +will do that: + + /* vim:set shiftwidth=4: */ ~ + +Put this line as one of the first or last five lines in the file. When +editing the file, you will notice that 'shiftwidth' will have been set to +four. When editing another file, it's set back to the default value of eight. + For some files the modeline fits well in the header, thus it can be put at +the top of the file. For text files and other files where the modeline gets +in the way of the normal contents, put it at the end of the file. + +The 'modelines' option specifies how many lines at the start and end of the +file are inspected for containing a modeline. To inspect ten lines: > + + :set modelines=10 + +The 'modeline' option can be used to switch this off. Do this when you are +working as root on Unix or Administrator on MS-Windows, or when you don't +trust the files you are editing: > + + :set nomodeline + +Use this format for the modeline: + + any-text vim:set {option}={value} ... : any-text ~ + +The "any-text" indicates that you can put any text before and after the part +that Vim will use. This allows making it look like a comment, like what was +done above with /* and */. + The " vim:" part is what makes Vim recognize this line. There must be +white space before "vim", or "vim" must be at the start of the line. Thus +using something like "gvim:" will not work. + The part between the colons is a ":set" command. It works the same way as +typing the ":set" command, except that you need to insert a backslash before a +colon (otherwise it would be seen as the end of the modeline). + +Another example: + + // vim:set textwidth=72 dir=c\:\tmp: use c:\tmp here ~ + +There is an extra backslash before the first colon, so that it's included in +the ":set" command. The text after the second colon is ignored, thus a remark +can be placed there. + +For more details see |modeline|. + +============================================================================== + +Next chapter: |usr_22.txt| Finding the file to edit + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt new file mode 100644 index 0000000..57862ed --- /dev/null +++ b/runtime/doc/usr_22.txt @@ -0,0 +1,414 @@ +*usr_22.txt* For Vim version 9.1. Last change: 2020 Mar 28 + + VIM USER MANUAL - by Bram Moolenaar + + Finding the file to edit + + +Files can be found everywhere. So how do you find them? Vim offers various +ways to browse the directory tree. There are commands to jump to a file that +is mentioned in another. And Vim remembers which files have been edited +before. + +|22.1| The file browser +|22.2| The current directory +|22.3| Finding a file +|22.4| The buffer list + + Next chapter: |usr_23.txt| Editing other files + Previous chapter: |usr_21.txt| Go away and come back +Table of contents: |usr_toc.txt| + +============================================================================== +*22.1* The file browser + +Vim has a plugin that makes it possible to edit a directory. Try this: > + + :edit . + +Through the magic of autocommands and Vim scripts, the window will be filled +with the contents of the directory. It looks like this: + +" ============================================================================ ~ +" Netrw Directory Listing (netrw v109) ~ +" Sorted by name ~ +" Sort sequence: [\/]$,\.h$,\.c$,\.cpp$,*,\.info$,\.swp$,\.o$\.obj$,\.bak$ ~ +" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:exec ~ +" ============================================================================ ~ +../ ~ +./ ~ +check/ ~ +Makefile ~ +autocmd.txt ~ +change.txt ~ +eval.txt~ ~ +filetype.txt~ ~ +help.txt.info ~ + +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 <F1> key), and an abbreviated listing + of available commands +6. A listing of files, including "../", which allows one to list + the parent directory. + +If you have syntax highlighting enabled, the different parts are highlighted +so as to make it easier to spot them. + +You can use Normal mode Vim commands to move around in the text. For example, +move the cursor atop a file and press <Enter>; you will then be editing that +file. To go back to the browser use ":edit ." again, or use ":Explore". +CTRL-O also works. + +Try using <Enter> while the cursor is atop a directory name. The result is +that the file browser moves into that directory and displays the items found +there. Pressing <Enter> on the first directory "../" moves you one level +higher. Pressing "-" does the same thing, without the need to move to the +"../" item first. + +You can press <F1> to get help on the things you can do in the netrw file +browser. This is what you get: > + + 9. Directory Browsing netrw-browse netrw-dir netrw-list netrw-help + + MAPS netrw-maps + <F1>.............Help.......................................|netrw-help| + <cr>.............Browsing...................................|netrw-cr| + <del>............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| + <c-h>............Edit File/Directory Hiding List............|netrw-ctrl-h| + i................Change Listing Style.......................|netrw-i| + <c-l>............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) + +The <F1> 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) + + <enter> 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| + +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. + +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 + + +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 ftp://somehost/path/to/dir/ + :e scp://somehost/path/to/dir/ + +See |netrw-browse| for more. + +============================================================================== +*22.2* The current directory + +Just like the shell, Vim has the concept of a current directory. Suppose you +are in your home directory and want to edit several files in a directory +"VeryLongFileName". You could do: > + + :edit VeryLongFileName/file1.txt + :edit VeryLongFileName/file2.txt + :edit VeryLongFileName/file3.txt + +To avoid much of the typing, do this: > + + :cd VeryLongFileName + :edit file1.txt + :edit file2.txt + :edit file3.txt + +The ":cd" command changes the current directory. You can see what the current +directory is with the ":pwd" command: > + + :pwd + /home/Bram/VeryLongFileName + +Vim remembers the last directory that you used. Use "cd -" to go back to it. +Example: > + + :pwd + /home/Bram/VeryLongFileName + :cd /etc + :pwd + /etc + :cd - + :pwd + /home/Bram/VeryLongFileName + :cd - + :pwd + /etc + + +WINDOW LOCAL DIRECTORY + +When you split a window, both windows use the same current directory. When +you want to edit a number of files somewhere else in the new window, you can +make it use a different directory, without changing the current directory in +the other window. This is called a local directory. > + + :pwd + /home/Bram/VeryLongFileName + :split + :lcd /etc + :pwd + /etc + CTRL-W w + :pwd + /home/Bram/VeryLongFileName + +So long as no `:lcd` command has been used, all windows share the same current +directory. Doing a `:cd` command in one window will also change the current +directory of the other window. + For a window where `:lcd` has been used a different current directory is +remembered. Using `:cd` or `:lcd` in other windows will not change it. + When using a `:cd` command in a window that uses a different current +directory, it will go back to using the shared directory. + + +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. 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. +When the global working directory is changed using the `:cd` command in a tab +page, it will also change the current tab page working directory. + + +============================================================================== +*22.3* Finding a file + +You are editing a C program that contains this line: + + #include "inits.h" ~ + +You want to see what is in that "inits.h" file. Move the cursor on the name +of the file and type: > + + gf + +Vim will find the file and edit it. + What if the file is not in the current directory? Vim will use the 'path' +option to find the file. This option is a list of directory names where to +look for your file. + Suppose you have your include files located in "c:/prog/include". This +command will add it to the 'path' option: > + + :set path+=c:/prog/include + +This directory is an absolute path. No matter where you are, it will be the +same place. What if you have located files in a subdirectory, below where the +file is? Then you can specify a relative path name. This starts with a dot: +> + :set path+=./proto + +This tells Vim to look in the directory "proto", below the directory where the +file in which you use "gf" is. Thus using "gf" on "inits.h" will make Vim +look for "proto/inits.h", starting in the directory of the file. + Without the "./", thus "proto", Vim would look in the "proto" directory +below the current directory. And the current directory might not be where the +file that you are editing is located. + +The 'path' option allows specifying the directories where to search for files +in many more ways. See the help on the 'path' option. + The 'isfname' option is used to decide which characters are included in the +file name, and which ones are not (e.g., the " character in the example +above). + +When you know the file name, but it's not to be found in the file, you can +type it: > + + :find inits.h + +Vim will then use the 'path' option to try and locate the file. This is the +same as the ":edit" command, except for the use of 'path'. + +To open the found file in a new window use CTRL-W f instead of "gf", or use +":sfind" instead of ":find". + + +A nice way to directly start Vim to edit a file somewhere in the 'path': > + + vim "+find stdio.h" + +This finds the file "stdio.h" in your value of 'path'. The quotes are +necessary to have one argument |-+c|. + +============================================================================== +*22.4* The buffer list + +The Vim editor uses the term buffer to describe a file being edited. +Actually, a buffer is a copy of the file that you edit. When you finish +changing the buffer, you write the contents of the buffer to the file. +Buffers not only contain file contents, but also all the marks, settings, and +other stuff that goes with it. + + +HIDDEN BUFFERS + +Suppose you are editing the file one.txt and need to edit the file two.txt. +You could simply use ":edit two.txt", but since you made changes to one.txt +that won't work. You also don't want to write one.txt yet. Vim has a +solution for you: > + + :hide edit two.txt + +The buffer "one.txt" disappears from the screen, but Vim still knows that you +are editing this buffer, so it keeps the modified text. This is called a +hidden buffer: The buffer contains text, but you can't see it. + The argument of ":hide" is another command. ":hide" makes that command +behave as if the 'hidden' option was set. You could also set this option +yourself. The effect is that when any buffer is abandoned, it becomes hidden. + Be careful! When you have hidden buffers with changes, don't exit Vim +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 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. + +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 +which files you have edited. And edit them again. + + +LISTING BUFFERS + +View the buffer list with this command: > + + :buffers + +A command which does the same, is not so obvious to list buffers, but is much +shorter to type: > + + :ls + +The output could look like this: + + 1 #h "help.txt" line 62 ~ + 2 %a + "usr_21.txt" line 1 ~ + 3 "usr_toc.txt" line 1 ~ + +The first column contains the buffer number. You can use this to edit the +buffer without having to type the name, see below. + After the buffer number come the flags. Then the name of the file +and the line number where the cursor was the last time. + The flags that can appear are these (from left to right): + + u Buffer is unlisted |unlisted-buffer|. + % Current buffer. + # Alternate buffer. + a Buffer is loaded and displayed. + h Buffer is loaded but hidden. + = Buffer is read-only. + - Buffer is not modifiable, the 'modifiable' option is off. + + Buffer has been modified. + + +EDITING A BUFFER + +You can edit a buffer by its number. That avoids having to type the file +name: > + + :buffer 2 + +But the only way to know the number is by looking in the buffer list. You can +use the name, or part of it, instead: > + + :buffer help + +Vim will find the best match for the name you type. If there is only one +buffer that matches the name, it will be used. In this case "help.txt". + To open a buffer in a new window: > + + :sbuffer 3 + +This works with a name as well. + + +USING THE BUFFER LIST + +You can move around in the buffer list with these commands: + + :bnext go to next buffer + :bprevious go to previous buffer + :bfirst go to the first buffer + :blast go to the last buffer + +To remove a buffer from the list, use this command: > + + :bdelete 3 + +Again, this also works with a name. + If you delete a buffer that was active (visible in a window), that window +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. + +============================================================================== + +Next chapter: |usr_23.txt| Editing other files + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt new file mode 100644 index 0000000..016f742 --- /dev/null +++ b/runtime/doc/usr_23.txt @@ -0,0 +1,345 @@ +*usr_23.txt* For Vim version 9.1. Last change: 2020 Dec 19 + + VIM USER MANUAL - by Bram Moolenaar + + Editing other files + + +This chapter is about editing files that are not ordinary files. With Vim you +can edit files that are compressed or encrypted. Some files need to be +accessed over the internet. With some restrictions, binary files can be +edited as well. + +|23.1| DOS, Mac and Unix files +|23.2| Files on the internet +|23.3| Encryption +|23.4| Binary files +|23.5| Compressed files + + Next chapter: |usr_24.txt| Inserting quickly + Previous chapter: |usr_22.txt| Finding the file to edit +Table of contents: |usr_toc.txt| + +============================================================================== +*23.1* DOS, Mac and Unix files + +Back in the early days, the old Teletype machines used two characters to +start a new line. One to move the carriage back to the first position +(carriage return, <CR>), another to move the paper up (line feed, <LF>). + When computers came out, storage was expensive. Some people decided that +they did not need two characters for end-of-line. The UNIX people decided +they could use <New Line> or <NL> only for end-of-line. The Apple people +standardized on <CR>. The Microsoft Windows folks decided to keep the old +<CR><NL> (we use <NL> for line feed in the help text). + This means that if you try to move a file from one system to another, you +have line-break problems. The Vim editor automatically recognizes the +different file formats and handles things properly behind your back. + The option 'fileformats' contains the various formats that will be tried +when a new file is edited. The following command, for example, tells Vim to +try UNIX format first and MS-DOS format second: > + + :set fileformats=unix,dos + +You will notice the format in the message you get when editing a file. You +don't see anything if you edit a native file format. Thus editing a Unix file +on Unix won't result in a remark. But when you edit a dos file, Vim will +notify you of this: + + "/tmp/test" [dos] 3L, 71C ~ + +For a Mac file you would see "[mac]". + The detected file format is stored in the 'fileformat' option. To see +which format you have, execute the following command: > + + :set fileformat? + +The three names that Vim uses are: + + unix <NL> + dos <CR><NL> + mac <CR> + + +USING THE MAC FORMAT + +On Unix, <NL> is used to break a line. It's not unusual to have a <CR> +character halfway a line. Incidentally, this happens quite often in Vi (and +Vim) scripts. + On the Macintosh, where <CR> is the line break character, it's possible to +have a <NL> character halfway a line. + The result is that it's not possible to be 100% sure whether a file +containing both <CR> and <NL> characters is a Mac or a Unix file. Therefore, +Vim assumes that on Unix you probably won't edit a Mac file, and doesn't check +for this type of file. To check for this format anyway, add "mac" to +'fileformats': > + + :set fileformats+=mac + +Then Vim will take a guess at the file format. Watch out for situations where +Vim guesses wrong. + + +OVERRULING THE FORMAT + +If you use the good old Vi and try to edit an MS-DOS format file, you will +find that each line ends with a ^M character. (^M is <CR>). The automatic +detection avoids this. Suppose you do want to edit the file that way? Then +you need to overrule the format: > + + :edit ++ff=unix file.txt + +The "++" string is an item that tells Vim that an option name follows, which +overrules the default for this single command. "++ff" is used for +'fileformat'. You could also use "++ff=mac" or "++ff=dos". + This doesn't work for any option, only "++ff" and "++enc" are currently +implemented. The full names "++fileformat" and "++encoding" also work. + + +CONVERSION + +You can use the 'fileformat' option to convert from one file format to +another. Suppose, for example, that you have an MS-DOS file named README.TXT +that you want to convert to UNIX format. Start by editing the MS-DOS format +file: > + vim README.TXT + +Vim will recognize this as a dos format file. Now change the file format to +UNIX: > + + :set fileformat=unix + :write + +The file is written in Unix format. + +============================================================================== +*23.2* Files on the internet + +Someone sends you an e-mail message, which refers to a file by its URL. For +example: + + You can find the information here: ~ + ftp://ftp.vim.org/pub/vim/README ~ + +You could start a program to download the file, save it on your local disk and +then start Vim to edit it. + There is a much simpler way. Move the cursor to any character of the URL. +Then use this command: > + + gf + +With a bit of luck, Vim will figure out which program to use for downloading +the file, download it and edit the copy. To open the file in a new window use +CTRL-W f. + If something goes wrong you will get an error message. It's possible that +the URL is wrong, you don't have permission to read it, the network connection +is down, etc. Unfortunately, it's hard to tell the cause of the error. You +might want to try the manual way of downloading the file. + +Accessing files over the internet works with the netrw plugin. Currently URLs +with these formats are recognized: + + ftp:// uses ftp + rcp:// uses rcp + scp:// uses scp + http:// uses wget (reading only) + +Vim doesn't do the communication itself, it relies on the mentioned programs +to be available on your computer. On most Unix systems "ftp" and "rcp" will +be present. "scp" and "wget" might need to be installed. + +Vim detects these URLs for each command that starts editing a new file, also +with ":edit" and ":split", for example. Write commands also work, except for +http://. + +For more information, also about passwords, see |netrw|. + +============================================================================== +*23.3* Encryption + +Some information you prefer to keep to yourself. For example, when writing +a test on a computer that students also use. You don't want clever students +to figure out a way to read the questions before the exam starts. Vim can +encrypt the file for you, which gives you some protection. + To start editing a new file with encryption, use the "-x" argument to start +Vim. Example: > + + vim -x exam.txt + +Vim prompts you for a key used for encrypting and decrypting the file: + + Enter encryption key: ~ + +Carefully type the secret key now. You cannot see the characters you type, +they will be replaced by stars. To avoid the situation that a typing mistake +will cause trouble, Vim asks you to enter the key again: + + Enter same key again: ~ + +You can now edit this file normally and put in all your secrets. When you +finish editing the file and tell Vim to exit, the file is encrypted and +written. + When you edit the file with Vim, it will ask you to enter the same key +again. You don't need to use the "-x" argument. You can also use the normal +":edit" command. Vim adds a magic string to the file by which it recognizes +that the file was encrypted. + If you try to view this file using another program, all you get is garbage. +Also, if you edit the file with Vim and enter the wrong key, you get garbage. +Vim does not have a mechanism to check if the key is the right one (this makes +it much harder to break the key). + + +SWITCHING ENCRYPTION ON AND OFF + +To disable the encryption of a file, set the 'key' option to an empty string: +> + :set key= + +The next time you write the file this will be done without encryption. + Setting the 'key' option to enable encryption is not a good idea, because +the password appears in the clear. Anyone shoulder-surfing can read your +password. + To avoid this problem, the ":X" command was created. It asks you for an +encryption key, just like the "-x" argument did: > + + :X + Enter encryption key: ****** + Enter same key again: ****** + + +LIMITS ON ENCRYPTION + +The encryption algorithm used by Vim is not very strong. It is good enough to +keep out the casual prowler, but not good enough to keep out a cryptology +expert with lots of time on his hands. The text in the swap file and the undo +file is also encrypted. However, this is done block-by-block and may reduce +the time needed to crack a password. You can disable the swap file, but then +a crash will cause you to lose your work, since Vim keeps all the text in +memory only. The undo file can be disabled with the only disadvantage that +you can't undo after unloading the buffer. + To avoid using a swap file, supply the -n argument on the command line. +For example, to edit the encrypted file "file.txt" without a swap file use the +following command: > + + vim -x -n file.txt + +When already editing a file, the swapfile can be disabled with: > + + :setlocal noswapfile + +Since there is no swapfile, recovery will be impossible. Save the file a bit +more often to avoid the risk of losing your changes. + +While the file is in memory, it is in plain text. Anyone with privilege can +look in the editor's memory and discover the contents of the file. + If you use a viminfo file, be aware that the contents of text registers are +written out in the clear as well. + If you really want to secure the contents of a file, edit it only on a +portable computer not connected to a network, use good encryption tools, and +keep the computer locked up in a big safe when not in use. + +============================================================================== +*23.4* Binary files + +You can edit binary files with Vim. Vim wasn't really made for this, thus +there are a few restrictions. But you can read a file, change a character and +write it back, with the result that only that one character was changed and +the file is identical otherwise. + To make sure that Vim does not use its clever tricks in the wrong way, add +the "-b" argument when starting Vim: > + + vim -b datafile + +This sets the 'binary' option. The effect of this is that unexpected side +effects are turned off. For example, 'textwidth' is set to zero, to avoid +automatic formatting of lines. And files are always read in Unix file format. + +Binary mode can be used to change a message in a program. Be careful not to +insert or delete any characters, it would stop the program from working. Use +"R" to enter replace mode. + +Many characters in the file will be unprintable. To see them in Hex format: > + + :set display=uhex + +Otherwise, the "ga" command can be used to see the value of the character +under the cursor. The output, when the cursor is on an <Esc>, looks like +this: + + <^[> 27, Hex 1b, Octal 033 ~ + +There might not be many line breaks in the file. To get some overview switch +the 'wrap' option off: > + + :set nowrap + + +BYTE POSITION + +To see on which byte you are in the file use this command: > + + g CTRL-G + +The output is verbose: + + Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206 ~ + +The last two numbers are the byte position in the file and the total number of +bytes. This takes into account how 'fileformat' changes the number of bytes +that a line break uses. + To move to a specific byte in the file, use the "go" command. For +example, to move to byte 2345: > + + 2345go + + +USING XXD + +A real binary editor shows the text in two ways: as it is and in hex format. +You can do this in Vim by first converting the file with the "xxd" program. +This comes with Vim. + First edit the file in binary mode: > + + vim -b datafile + +Now convert the file to a hex dump with xxd: > + + :%!xxd + +The text will look like this: + + 0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI ~ + 0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0 ~ + 0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59. ~ + +You can now view and edit the text as you like. Vim treats the information as +ordinary text. Changing the hex does not cause the printable character to be +changed, or the other way around. + Finally convert it back with: +> + :%!xxd -r + +Only changes in the hex part are used. Changes in the printable text part on +the right are ignored. + +See the manual page of xxd for more information. + +============================================================================== +*23.5* Compressed files + +This is easy: You can edit a compressed file just like any other file. The +"gzip" plugin takes care of decompressing the file when you edit it. And +compressing it again when you write it. + These compression methods are currently supported: + + .Z compress + .gz gzip + .bz2 bzip2 + +Vim uses the mentioned programs to do the actual compression and +decompression. You might need to install the programs first. + +============================================================================== + +Next chapter: |usr_24.txt| Inserting quickly + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt new file mode 100644 index 0000000..72f43f0 --- /dev/null +++ b/runtime/doc/usr_24.txt @@ -0,0 +1,606 @@ +*usr_24.txt* For Vim version 9.1. Last change: 2018 Mar 18 + + VIM USER MANUAL - by Bram Moolenaar + + Inserting quickly + + +When entering text, Vim offers various ways to reduce the number of keystrokes +and avoid typing mistakes. Use Insert mode completion to repeat previously +typed words. Abbreviate long words to short ones. Type characters that +aren't on your keyboard. + +|24.1| Making corrections +|24.2| Showing matches +|24.3| Completion +|24.4| Repeating an insert +|24.5| Copying from another line +|24.6| Inserting a register +|24.7| Abbreviations +|24.8| Entering special characters +|24.9| Digraphs +|24.10| Normal mode commands + + Next chapter: |usr_25.txt| Editing formatted text + Previous chapter: |usr_23.txt| Editing other files +Table of contents: |usr_toc.txt| + +============================================================================== +*24.1* Making corrections + +The <BS> key was already mentioned. It deletes the character just before the +cursor. The <Del> key does the same for the character under (after) the +cursor. + When you typed a whole word wrong, use CTRL-W: + + The horse had fallen to the sky ~ + CTRL-W + The horse had fallen to the ~ + +If you really messed up a line and want to start over, use CTRL-U to delete +it. This keeps the text after the cursor and the indent. Only the text from +the first non-blank to the cursor is deleted. With the cursor on the "f" of +"fallen" in the next line pressing CTRL-U does this: + + The horse had fallen to the ~ + CTRL-U + fallen to the ~ + +When you spot a mistake a few words back, you need to move the cursor there to +correct it. For example, you typed this: + + The horse had follen to the ground ~ + +You need to change "follen" to "fallen". With the cursor at the end, you +would type this to correct it: > + + <Esc>4blraA + +< get out of Insert mode <Esc> + four words back 4b + move on top of the "o" l + replace with "a" ra + restart Insert mode A + +Another way to do this: > + + <C-Left><C-Left><C-Left><C-Left><Right><Del>a<End> + +< four words back <C-Left><C-Left><C-Left><C-Left> + move on top of the "o" <Right> + delete the "o" <Del> + insert an "a" a + go to end of the line <End> + +This uses special keys to move around, while remaining in Insert mode. This +resembles what you would do in a modeless editor. It's easier to remember, +but takes more time (you have to move your hand from the letters to the cursor +keys, and the <End> key is hard to press without looking at the keyboard). + These special keys are most useful when writing a mapping that doesn't +leave Insert mode. The extra typing doesn't matter then. + An overview of the keys you can use in Insert mode: + + <C-Home> to start of the file + <PageUp> a whole screenful up + <Home> to start of line + <S-Left> one word left + <C-Left> one word left + <S-Right> one word right + <C-Right> one word right + <End> to end of the line + <PageDown> a whole screenful down + <C-End> to end of the file + +There are a few more, see |ins-special-special|. + +============================================================================== +*24.2* Showing matches + +When you type a ) it would be nice to see with which ( it matches. To make +Vim do that use this command: > + + :set showmatch + +When you now type a text like "(example)", as soon as you type the ) Vim will +briefly move the cursor to the matching (, keep it there for half a second, +and move back to where you were typing. + In case there is no matching (, Vim will beep. Then you know that you +might have forgotten the ( somewhere, or typed a ) too many. + The match will also be shown for [] and {} pairs. You don't have to wait +with typing the next character, as soon as Vim sees it the cursor will move +back and inserting continues as before. + You can change the time Vim waits with the 'matchtime' option. For +example, to make Vim wait one and a half second: > + + :set matchtime=15 + +The time is specified in tenths of a second. + +============================================================================== +*24.3* Completion + +Vim can automatically complete words on insertion. You type the first part of +a word, press CTRL-P, and Vim guesses the rest. + Suppose, for example, that you are creating a C program and want to type in +the following: + + total = ch_array[0] + ch_array[1] + ch_array[2]; ~ + +You start by entering the following: + + total = ch_array[0] + ch_ ~ + +At this point, you tell Vim to complete the word using the command CTRL-P. +Vim searches for a word that starts with what's in front of the cursor. In +this case, it is "ch_", which matches with the word ch_array. So typing +CTRL-P gives you the following: + + total = ch_array[0] + ch_array ~ + +After a little more typing, you get this (ending in a space): + + total = ch_array[0] + ch_array[1] + ~ + +If you now type CTRL-P Vim will search again for a word that completes the +word before the cursor. Since there is nothing in front of the cursor, it +finds the first word backwards, which is "ch_array". Typing CTRL-P again +gives you the next word that matches, in this case "total". A third CTRL-P +searches further back. If there is nothing else, it causes the editor to run +out of words, so it returns to the original text, which is nothing. A fourth +CTRL-P causes the editor to start over again with "ch_array". + +To search forward, use CTRL-N. Since the search wraps around the end of the +file, CTRL-N and CTRL-P will find the same matches, but in a different +sequence. Hint: CTRL-N is Next-match and CTRL-P is Previous-match. + +The Vim editor goes through a lot of effort to find words to complete. By +default, it searches the following places: + + 1. Current file + 2. Files in other windows + 3. Other loaded files (hidden buffers) + 4. Files which are not loaded (inactive buffers) + 5. Tag files + 6. All files #included by the current file + + +OPTIONS + +You can customize the search order with the 'complete' option. + +The 'ignorecase' option is used. When it is set, case differences are ignored +when searching for matches. + +A special option for completion is 'infercase'. This is useful to find +matches while ignoring case ('ignorecase' must be set) but still using the +case of the word typed so far. Thus if you type "For" and Vim finds a match +"fortunately", it will result in "Fortunately". + + +COMPLETING SPECIFIC ITEMS + +If you know what you are looking for, you can use these commands to complete +with a certain type of item: + + CTRL-X CTRL-F file names + CTRL-X CTRL-L whole lines + CTRL-X CTRL-D macro definitions (also in included files) + CTRL-X CTRL-I current and included files + CTRL-X CTRL-K words from a dictionary + CTRL-X CTRL-T words from a thesaurus + CTRL-X CTRL-] tags + CTRL-X CTRL-V Vim command line + +After each of them CTRL-N can be used to find the next match, CTRL-P to find +the previous match. + More information for each of these commands here: |ins-completion|. + + +COMPLETING FILE NAMES + +Let's take CTRL-X CTRL-F as an example. This will find file names. It scans +the current directory for files and displays each one that matches the word in +front of the cursor. + Suppose, for example, that you have the following files in the current +directory: + + main.c sub_count.c sub_done.c sub_exit.c + +Now enter Insert mode and start typing: + + The exit code is in the file sub ~ + +At this point, you enter the command CTRL-X CTRL-F. Vim now completes the +current word "sub" by looking at the files in the current directory. The +first match is sub_count.c. This is not the one you want, so you match the +next file by typing CTRL-N. This match is sub_done.c. Typing CTRL-N again +takes you to sub_exit.c. The results: + + The exit code is in the file sub_exit.c ~ + +If the file name starts with / (Unix) or C:\ (MS-Windows) you can find all +files in the file system. For example, type "/u" and CTRL-X CTRL-F. This +will match "/usr" (this is on Unix): + + the file is found in /usr/ ~ + +If you now press CTRL-N you go back to "/u". Instead, to accept the "/usr/" +and go one directory level deeper, use CTRL-X CTRL-F again: + + the file is found in /usr/X11R6/ ~ + +The results depend on what is found in your file system, of course. The +matches are sorted alphabetically. + + +COMPLETING IN SOURCE CODE + +Source code files are well structured. That makes it possible to do +completion in an intelligent way. In Vim this is called Omni completion. In +some other editors it's called intellisense, but that is a trademark. + +The key to Omni completion is CTRL-X CTRL-O. Obviously the O stands for Omni +here, so that you can remember it easier. Let's use an example for editing C +source: + + { ~ + struct foo *p; ~ + p-> ~ + +The cursor is after "p->". Now type CTRL-X CTRL-O. Vim will offer you a list +of alternatives, which are the items that "struct foo" contains. That is +quite different from using CTRL-P, which would complete any word, while only +members of "struct foo" are valid here. + +For Omni completion to work you may need to do some setup. At least make sure +filetype plugins are enabled. Your vimrc file should contain a line like +this: > + filetype plugin on +Or: > + filetype plugin indent on + +For C code you need to create a tags file and set the 'tags' option. That is +explained |ft-c-omni|. For other filetypes you may need to do something +similar, look below |compl-omni-filetypes|. It only works for specific +filetypes. Check the value of the 'omnifunc' option to find out if it would +work. + +============================================================================== +*24.4* Repeating an insert + +If you press CTRL-A, the editor inserts the text you typed the last time you +were in Insert mode. + Assume, for example, that you have a file that begins with the following: + + "file.h" ~ + /* Main program begins */ ~ + +You edit this file by inserting "#include " at the beginning of the first +line: + + #include "file.h" ~ + /* Main program begins */ ~ + +You go down to the beginning of the next line using the commands "j^". You +now start to insert a new "#include" line. So you type: > + + i CTRL-A + +The result is as follows: + + #include "file.h" ~ + #include /* Main program begins */ ~ + +The "#include " was inserted because CTRL-A inserts the text of the previous +insert. Now you type "main.h"<Enter> to finish the line: + + + #include "file.h" ~ + #include "main.h" ~ + /* Main program begins */ ~ + +The CTRL-@ command does a CTRL-A and then exits Insert mode. That's a quick +way of doing exactly the same insertion again. + +============================================================================== +*24.5* Copying from another line + +The CTRL-Y command inserts the character above the cursor. This is useful +when you are duplicating a previous line. For example, you have this line of +C code: + + b_array[i]->s_next = a_array[i]->s_next; ~ + +Now you need to type the same line, but with "s_prev" instead of "s_next". +Start the new line, and press CTRL-Y 14 times, until you are at the "n" of +"next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_ ~ + +Now you type "prev": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev ~ + +Continue pressing CTRL-Y until the following "next": + + b_array[i]->s_next = a_array[i]->s_next; ~ + b_array[i]->s_prev = a_array[i]->s_ ~ + +Now type "prev;" to finish it off. + +The CTRL-E command acts like CTRL-Y except it inserts the character below the +cursor. + +============================================================================== +*24.6* Inserting a register + +The command CTRL-R {register} inserts the contents of the register. This is +useful to avoid having to type a long word. For example, you need to type +this: + + r = VeryLongFunction(a) + VeryLongFunction(b) + VeryLongFunction(c) ~ + +The function name is defined in a different file. Edit that file and move the +cursor on top of the function name there, and yank it into register v: > + + "vyiw + +"v is the register specification, "yiw" is yank-inner-word. Now edit the file +where the new line is to be inserted, and type the first letters: + + r = ~ + +Now use CTRL-R v to insert the function name: + + r = VeryLongFunction ~ + +You continue to type the characters in between the function name, and use +CTRL-R v two times more. + You could have done the same with completion. Using a register is useful +when there are many words that start with the same characters. + +If the register contains characters such as <BS> or other special characters, +they are interpreted as if they had been typed from the keyboard. If you do +not want this to happen (you really want the <BS> to be inserted in the text), +use the command CTRL-R CTRL-R {register}. + +============================================================================== +*24.7* Abbreviations + +An abbreviation is a short word that takes the place of a long one. For +example, "ad" stands for "advertisement". Vim enables you to type an +abbreviation and then will automatically expand it for you. + To tell Vim to expand "ad" into "advertisement" every time you insert it, +use the following command: > + + :iabbrev ad advertisement + +Now, when you type "ad", the whole word "advertisement" will be inserted into +the text. This is triggered by typing a character that can't be part of a +word, for example a space: + + What Is Entered What You See + I saw the a I saw the a ~ + I saw the ad I saw the ad ~ + I saw the ad<Space> I saw the advertisement<Space> ~ + +The expansion doesn't happen when typing just "ad". That allows you to type a +word like "add", which will not get expanded. Only whole words are checked +for abbreviations. + + +ABBREVIATING SEVERAL WORDS + +It is possible to define an abbreviation that results in multiple words. For +example, to define "JB" as "Jack Benny", use the following command: > + + :iabbrev JB Jack Benny + +As a programmer, I use two rather unusual abbreviations: > + + :iabbrev #b /**************************************** + :iabbrev #e <Space>****************************************/ + +These are used for creating boxed comments. The comment starts with #b, which +draws the top line. I then type the comment text and use #e to draw the +bottom line. + Notice that the #e abbreviation begins with a space. In other words, the +first two characters are space-star. Usually Vim ignores spaces between the +abbreviation and the expansion. To avoid that problem, I spell space as seven +characters: <, S, p, a, c, e, >. + + Note: + ":iabbrev" is a long word to type. ":iab" works just as well. + That's abbreviating the abbreviate command! + + +FIXING TYPING MISTAKES + +It's very common to make the same typing mistake every time. For example, +typing "teh" instead of "the". You can fix this with an abbreviation: > + + :abbreviate teh the + +You can add a whole list of these. Add one each time you discover a common +mistake. + + +LISTING ABBREVIATIONS + +The ":abbreviate" command lists the abbreviations: + + :abbreviate + i #e ****************************************/ + i #b /**************************************** + i JB Jack Benny + i ad advertisement + ! teh the + +The "i" in the first column indicates Insert mode. These abbreviations are +only active in Insert mode. Other possible characters are: + + c Command-line mode :cabbrev + ! both Insert and Command-line mode :abbreviate + +Since abbreviations are not often useful in Command-line mode, you will mostly +use the ":iabbrev" command. That avoids, for example, that "ad" gets expanded +when typing a command like: > + + :edit ad + + +DELETING ABBREVIATIONS + +To get rid of an abbreviation, use the ":unabbreviate" command. Suppose you +have the following abbreviation: > + + :abbreviate @f fresh + +You can remove it with this command: > + + :unabbreviate @f + +While you type this, you will notice that @f is expanded to "fresh". Don't +worry about this, Vim understands it anyway (except when you have an +abbreviation for "fresh", but that's very unlikely). + To remove all the abbreviations: > + + :abclear + +":unabbreviate" and ":abclear" also come in the variants for Insert mode +(":iunabbreviate and ":iabclear") and Command-line mode (":cunabbreviate" and +":cabclear"). + + +REMAPPING ABBREVIATIONS + +There is one thing to watch out for when defining an abbreviation: The +resulting string should not be mapped. For example: > + + :abbreviate @a adder + :imap dd disk-door + +When you now type @a, you will get "adisk-doorer". That's not what you want. +To avoid this, use the ":noreabbrev" command. It does the same as +":abbreviate", but avoids that the resulting string is used for mappings: > + + :noreabbrev @a adder + +Fortunately, it's unlikely that the result of an abbreviation is mapped. + +============================================================================== +*24.8* Entering special characters + +The CTRL-V command is used to insert the next character literally. In other +words, any special meaning the character has, it will be ignored. For +example: > + + CTRL-V <Esc> + +Inserts an escape character. Thus you don't leave Insert mode. (Don't type +the space after CTRL-V, it's only to make this easier to read). + + Note: + On MS-Windows CTRL-V is used to paste text. Use CTRL-Q instead of + CTRL-V. On Unix, on the other hand, CTRL-Q does not work on some + terminals, because it has a special meaning. + +You can also use the command CTRL-V {digits} to insert a character with the +decimal number {digits}. For example, the character number 127 is the <Del> +character (but not necessarily the <Del> key!). To insert <Del> type: > + + CTRL-V 127 + +You can enter characters up to 255 this way. When you type fewer than two +digits, a non-digit will terminate the command. To avoid the need of typing a +non-digit, prepend one or two zeros to make three digits. + All the next commands insert a <Tab> and then a dot: + + CTRL-V 9. + CTRL-V 09. + CTRL-V 009. + +To enter a character in hexadecimal, use an "x" after the CTRL-V: > + + CTRL-V x7f + +This also goes up to character 255 (CTRL-V xff). You can use "o" to type a +character as an octal number and two more methods allow you to type up to +a 16 bit and a 32 bit number (e.g., for a Unicode character): > + + CTRL-V o123 + CTRL-V u1234 + CTRL-V U12345678 + +============================================================================== +*24.9* Digraphs + +Some characters are not on the keyboard. For example, the copyright character +(漏). To type these characters in Vim, you use digraphs, where two characters +represent one. To enter a 漏, for example, you press three keys: > + + CTRL-K Co + +To find out what digraphs are available, use the following command: > + + :digraphs + +Vim will display the digraph table. Here are three lines of it: + + AC ~_ 159 NS | 160 !I 隆 161 Ct 垄 162 Pd 拢 163 Cu 陇 164 Ye 楼 165 ~ + BB 娄 166 SE 搂 167 ': 篓 168 Co 漏 169 -a 陋 170 << 芦 171 NO 卢 172 ~ + -- 颅 173 Rg 庐 174 'm 炉 175 DG 掳 176 +- 卤 177 2S 虏 178 3S 鲁 179 ~ + +This shows, for example, that the digraph you get by typing CTRL-K Pd is the +character (拢). This is character number 163 (decimal). + Pd is short for Pound. Most digraphs are selected to give you a hint about +the character they will produce. If you look through the list you will +understand the logic. + You can exchange the first and second character, if there is no digraph for +that combination. Thus CTRL-K dP also works. Since there is no digraph for +"dP" Vim will also search for a "Pd" digraph. + + Note: + The digraphs depend on the character set that Vim assumes you are + using. Always use ":digraphs" to find out which digraphs are currently + available. + +You can define your own digraphs. Example: > + + :digraph a" 盲 + +This defines that CTRL-K a" inserts an 盲 character. You can also specify the +character with a decimal number. This defines the same digraph: > + + :digraph a" 228 + +More information about digraphs here: |digraphs| + Another way to insert special characters is with a keymap. More about that +here: |45.5| + +============================================================================== +*24.10* Normal mode commands + +Insert mode offers a limited number of commands. In Normal mode you have many +more. When you want to use one, you usually leave Insert mode with <Esc>, +execute the Normal mode command, and re-enter Insert mode with "i" or "a". + There is a quicker way. With CTRL-O {command} you can execute any Normal +mode command from Insert mode. For example, to delete from the cursor to the +end of the line: > + + CTRL-O D + +You can execute only one Normal mode command this way. But you can specify a +register or a count. A more complicated example: > + + CTRL-O "g3dw + +This deletes up to the third word into register g. + +============================================================================== + +Next chapter: |usr_25.txt| Editing formatted text + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt new file mode 100644 index 0000000..af013bc --- /dev/null +++ b/runtime/doc/usr_25.txt @@ -0,0 +1,583 @@ +*usr_25.txt* For Vim version 9.1. Last change: 2016 Mar 28 + + VIM USER MANUAL - by Bram Moolenaar + + Editing formatted text + + +Text hardly ever comes in one sentence per line. This chapter is about +breaking sentences to make them fit on a page and other formatting. +Vim also has useful features for editing single-line paragraphs and tables. + +|25.1| Breaking lines +|25.2| Aligning text +|25.3| Indents and tabs +|25.4| Dealing with long lines +|25.5| Editing tables + + Next chapter: |usr_26.txt| Repeating + Previous chapter: |usr_24.txt| Inserting quickly +Table of contents: |usr_toc.txt| + +============================================================================== +*25.1* Breaking lines + +Vim has a number of functions that make dealing with text easier. By default, +the editor does not perform automatic line breaks. In other words, you have +to press <Enter> yourself. This is useful when you are writing programs where +you want to decide where the line ends. It is not so good when you are +creating documentation and want the text to be at most 70 character wide. + If you set the 'textwidth' option, Vim automatically inserts line breaks. +Suppose, for example, that you want a very narrow column of only 30 +characters. You need to execute the following command: > + + :set textwidth=30 + +Now you start typing (ruler added): + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a whi ~ + +If you type "l" next, this makes the line longer than the 30-character limit. +When Vim sees this, it inserts a line break and you get the following: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + whil ~ + +Continuing on, you can type in the rest of the paragraph: + + 1 2 3 + 12345678901234567890123456789012345 + I taught programming for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +You do not have to type newlines; Vim puts them in automatically. + + Note: + The 'wrap' option makes Vim display lines with a line break, but this + doesn't insert a line break in the file. + + +REFORMATTING + +The Vim editor is not a word processor. In a word processor, if you delete +something at the beginning of the paragraph, the line breaks are reworked. In +Vim they are not; so if you delete the word "programming" from the first line, +all you get is a short line: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a ~ + while. One time, I was stopped ~ + by the Fort Worth police, ~ + because my homework was too ~ + hard. True story. ~ + +This does not look good. To get the paragraph into shape you use the "gq" +operator. + Let's first use this with a Visual selection. Starting from the first +line, type: > + + v4jgq + +"v" to start Visual mode, "4j" to move to the end of the paragraph and then +the "gq" operator. The result is: + + 1 2 3 + 12345678901234567890123456789012345 + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +Note: there is a way to do automatic formatting for specific types of text +layouts, see |auto-format|. + +Since "gq" is an operator, you can use one of the three ways to select the +text it works on: With Visual mode, with a movement and with a text object. + The example above could also be done with "gq4j". That's less typing, but +you have to know the line count. A more useful motion command is "}". This +moves to the end of a paragraph. Thus "gq}" formats from the cursor to the +end of the current paragraph. + A very useful text object to use with "gq" is the paragraph. Try this: > + + gqap + +"ap" stands for "a-paragraph". This formats the text of one paragraph +(separated by empty lines). Also the part before the cursor. + If you have your paragraphs separated by empty lines, you can format the +whole file by typing this: > + + gggqG + +"gg" to move to the first line, "gqG" to format until the last line. + Warning: If your paragraphs are not properly separated, they will be joined +together. A common mistake is to have a line with a space or tab. That's a +blank line, but not an empty line. + +Vim is able to format more than just plain text. See |fo-table| for how to +change this. See the 'joinspaces' option to change the number of spaces used +after a full stop. + It is possible to use an external program for formatting. This is useful +if your text can't be properly formatted with Vim's builtin command. See the +'formatprg' option. + +============================================================================== +*25.2* Aligning text + +To center a range of lines, use the following command: > + + :{range}center [width] + +{range} is the usual command-line range. [width] is an optional line width to +use for centering. If [width] is not specified, it defaults to the value of +'textwidth'. (If 'textwidth' is 0, the default is 80.) + For example: > + + :1,5center 40 + +results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +RIGHT ALIGNMENT + +Similarly, the ":right" command right-justifies the text: > + + :1,5right 37 + +gives this result: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + +LEFT ALIGNMENT + +Finally there is this command: > + + :{range}left [margin] + +Unlike ":center" and ":right", however, the argument to ":left" is not the +length of the line. Instead it is the left margin. If it is omitted, the +text will be put against the left side of the screen (using a zero margin +would do the same). If it is 5, the text will be indented 5 spaces. For +example, use these commands: > + + :1left 5 + :2,5left + +This results in the following: + + I taught for a while. One ~ + time, I was stopped by the ~ + Fort Worth police, because my ~ + homework was too hard. True ~ + story. ~ + + +JUSTIFYING TEXT + +Vim has no built-in way of justifying text. However, there is a neat macro +package that does the job. To use this package, execute the following +command: > + + :packadd justify + +Or put this line in your |vimrc|: > + + packadd! justify + +This Vim script file defines a new visual command "_j". To justify a block of +text, highlight the text in Visual mode and then execute "_j". + Look in the file for more explanations. To go there, do "gf" on this name: +$VIMRUNTIME/pack/dist/opt/justify/plugin/justify.vim. + +An alternative is to filter the text through an external program. Example: > + + :%!fmt + +============================================================================== +*25.3* Indents and tabs + +Indents can be used to make text stand out from the rest. The example texts +in this manual, for example, are indented by eight spaces or a tab. You would +normally enter this by typing a tab at the start of each line. Take this +text: + the first line ~ + the second line ~ + +This is entered by typing a tab, some text, <Enter>, tab and more text. + The 'autoindent' option inserts indents automatically: > + + :set autoindent + +When a new line is started it gets the same indent as the previous line. In +the above example, the tab after the <Enter> is not needed anymore. + + +INCREASING INDENT + +To increase the amount of indent in a line, use the ">" operator. Often this +is used as ">>", which adds indent to the current line. + The amount of indent added is specified with the 'shiftwidth' option. The +default value is 8. To make ">>" insert four spaces worth of indent, for +example, type this: > + + :set shiftwidth=4 + +When used on the second line of the example text, this is what you get: + + the first line ~ + the second line ~ + +"4>>" will increase the indent of four lines. + + +TABSTOP + +If you want to make indents a multiple of 4, you set 'shiftwidth' to 4. But +when pressing a <Tab> you still get 8 spaces worth of indent. To change this, +set the 'softtabstop' option: > + + :set softtabstop=4 + +This will make the <Tab> key insert 4 spaces worth of indent. If there are +already four spaces, a <Tab> character is used (saving seven characters in the +file). (If you always want spaces and no tab characters, set the 'expandtab' +option.) + + Note: + You could set the 'tabstop' option to 4. However, if you edit the + file another time, with 'tabstop' set to the default value of 8, it + will look wrong. In other programs and when printing the indent will + also be wrong. Therefore it is recommended to keep 'tabstop' at eight + all the time. That's the standard value everywhere. + + +CHANGING TABS + +You edit a file which was written with a tabstop of 3. In Vim it looks ugly, +because it uses the normal tabstop value of 8. You can fix this by setting +'tabstop' to 3. But you have to do this every time you edit this file. + Vim can change the use of tabstops in your file. First, set 'tabstop' to +make the indents look good, then use the ":retab" command: > + + :set tabstop=3 + :retab 8 + +The ":retab" command will change 'tabstop' to 8, while changing the text such +that it looks the same. It changes spans of white space into tabs and spaces +for this. You can now write the file. Next time you edit it the indents will +be right without setting an option. + Warning: When using ":retab" on a program, it may change white space inside +a string constant. Therefore it's a good habit to use "\t" instead of a +real tab. + +============================================================================== +*25.4* Dealing with long lines + +Sometimes you will be editing a file that is wider than the number of columns +in the window. When that occurs, Vim wraps the lines so that everything fits +on the screen. + If you switch the 'wrap' option off, each line in the file shows up as one +line on the screen. Then the ends of the long lines disappear off the screen +to the right. + When you move the cursor to a character that can't be seen, Vim will scroll +the text to show it. This is like moving a viewport over the text in the +horizontal direction. + By default, Vim does not display a horizontal scrollbar in the GUI. If you +want to enable one, use the following command: > + + :set guioptions+=b + +One horizontal scrollbar will appear at the bottom of the Vim window. + +If you don't have a scrollbar or don't want to use it, use these commands to +scroll the text. The cursor will stay in the same place, but it's moved back +into the visible text if necessary. + + zh scroll right + 4zh scroll four characters right + zH scroll half a window width right + ze scroll right to put the cursor at the end + zl scroll left + 4zl scroll four characters left + zL scroll half a window width left + zs scroll left to put the cursor at the start + +Let's attempt to show this with one line of text. The cursor is on the "w" of +"which". The "current window" above the line indicates the text that is +currently visible. The "window"s below the text indicate the text that is +visible after the command left of it. + + |<-- current window -->| + some long text, part of which is visible in the window ~ + ze |<-- window -->| + zH |<-- window -->| + 4zh |<-- window -->| + zh |<-- window -->| + zl |<-- window -->| + 4zl |<-- window -->| + zL |<-- window -->| + zs |<-- window -->| + + +MOVING WITH WRAP OFF + +When 'wrap' is off and the text has scrolled horizontally, you can use the +following commands to move the cursor to a character you can see. Thus text +left and right of the window is ignored. These never cause the text to +scroll: + + g0 to first visible character in this line + g^ to first non-blank visible character in this line + gm to middle of screen line + gM to middle of the text in this line + g$ to last visible character in this line + + |<-- window -->| + some long text, part of which is visible in one line ~ + g0 g^ gm gM g$ + + +BREAKING AT WORDS *edit-no-break* + +When preparing text for use by another program, you might have to make +paragraphs without a line break. A disadvantage of using 'nowrap' is that you +can't see the whole sentence you are working on. When 'wrap' is on, words are +broken halfway, which makes them hard to read. + A good solution for editing this kind of paragraph is setting the +'linebreak' option. Vim then breaks lines at an appropriate place when +displaying the line. The text in the file remains unchanged. + Without 'linebreak' text might look like this: + + +---------------------------------+ + |letter generation program for a b| + |ank. They wanted to send out a s| + |pecial, personalized letter to th| + |eir richest 1000 customers. Unfo| + |rtunately for the programmer, he | + +---------------------------------+ +After: > + + :set linebreak + +it looks like this: + + +---------------------------------+ + |letter generation program for a | + |bank. They wanted to send out a | + |special, personalized letter to | + |their richest 1000 customers. | + |Unfortunately for the programmer,| + +---------------------------------+ + +Related options: +'breakat' specifies the characters where a break can be inserted. +'showbreak' specifies a string to show at the start of broken line. +Set 'textwidth' to zero to avoid a paragraph to be split. + + +MOVING BY VISIBLE LINES + +The "j" and "k" commands move to the next and previous lines. When used on +a long line, this means moving a lot of screen lines at once. + To move only one screen line, use the "gj" and "gk" commands. When a line +doesn't wrap they do the same as "j" and "k". When the line does wrap, they +move to a character displayed one line below or above. + You might like to use these mappings, which bind these movement commands to +the cursor keys: > + + :map <Up> gk + :map <Down> gj + + +TURNING A PARAGRAPH INTO ONE LINE *edit-paragraph-join* + +If you want to import text into a program like MS-Word, each paragraph should +be a single line. If your paragraphs are currently separated with empty +lines, this is how you turn each paragraph into a single line: > + + :g/./,/^$/join + +That looks complicated. Let's break it up in pieces: + + :g/./ A ":global" command that finds all lines that contain + at least one character. + ,/^$/ A range, starting from the current line (the non-empty + line) until an empty line. + join The ":join" command joins the range of lines together + into one line. + +Starting with this text, containing eight lines broken at column 30: + + +----------------------------------+ + |A letter generation program | + |for a bank. They wanted to | + |send out a special, | + |personalized letter. | + | | + |To their richest 1000 | + |customers. Unfortunately for | + |the programmer, | + +----------------------------------+ + +You end up with two lines: + + +----------------------------------+ + |A letter generation program for a | + |bank. They wanted to send out a s| + |pecial, personalized letter. | + |To their richest 1000 customers. | + |Unfortunately for the programmer, | + +----------------------------------+ + +Note that this doesn't work when the separating line is blank but not empty; +when it contains spaces and/or tabs. This command does work with blank lines: +> + :g/\S/,/^\s*$/join + +This still requires a blank or empty line at the end of the file for the last +paragraph to be joined. + +============================================================================== +*25.5* Editing tables + +Suppose you are editing a table with four columns: + + nice table test 1 test 2 test 3 ~ + input A 0.534 ~ + input B 0.913 ~ + +You need to enter numbers in the third column. You could move to the second +line, use "A", enter a lot of spaces and type the text. + For this kind of editing there is a special option: > + + set virtualedit=all + +Now you can move the cursor to positions where there isn't any text. This is +called "virtual space". Editing a table is a lot easier this way. + Move the cursor by searching for the header of the last column: > + + /test 3 + +Now press "j" and you are right where you can enter the value for "input A". +Typing "0.693" results in: + + nice table test 1 test 2 test 3 ~ + input A 0.534 0.693 ~ + input B 0.913 ~ + +Vim has automatically filled the gap in front of the new text for you. Now, +to enter the next field in this column use "Bj". "B" moves back to the start +of a white space separated word. Then "j" moves to the place where the next +field can be entered. + + Note: + You can move the cursor anywhere in the display, also beyond the end + of a line. But Vim will not insert spaces there, until you insert a + character in that position. + + +COPYING A COLUMN + +You want to add a column, which should be a copy of the third column and +placed before the "test 1" column. Do this in seven steps: +1. Move the cursor to the left upper corner of this column, e.g., with + "/test 3". +2. Press CTRL-V to start blockwise Visual mode. +3. Move the cursor down two lines with "2j". You are now in "virtual space": + the "input B" line of the "test 3" column. +4. Move the cursor right, to include the whole column in the selection, plus + the space that you want between the columns. "9l" should do it. +5. Yank the selected rectangle with "y". +6. Move the cursor to "test 1", where the new column must be placed. +7. Press "P". + +The result should be: + + nice table test 3 test 1 test 2 test 3 ~ + input A 0.693 0.534 0.693 ~ + input B 0.913 ~ + +Notice that the whole "test 1" column was shifted right, also the line where +the "test 3" column didn't have text. + +Go back to non-virtual cursor movements with: > + + :set virtualedit= + + +VIRTUAL REPLACE MODE + +The disadvantage of using 'virtualedit' is that it "feels" different. You +can't recognize tabs or spaces beyond the end of line when moving the cursor +around. Another method can be used: Virtual Replace mode. + Suppose you have a line in a table that contains both tabs and other +characters. Use "rx" on the first tab: + + inp 0.693 0.534 0.693 ~ + + | + rx | + V + + inpx0.693 0.534 0.693 ~ + +The layout is messed up. To avoid that, use the "gr" command: + + inp 0.693 0.534 0.693 ~ + + | + grx | + V + + inpx 0.693 0.534 0.693 ~ + +What happens is that the "gr" command makes sure the new character takes the +right amount of screen space. Extra spaces or tabs are inserted to fill the +gap. Thus what actually happens is that a tab is replaced by "x" and then +blanks added to make the text after it keep its place. In this case a +tab is inserted. + When you need to replace more than one character, you use the "R" command +to go to Replace mode (see |04.9|). This messes up the layout and replaces +the wrong characters: + + inp 0 0.534 0.693 ~ + + | + R0.786 | + V + + inp 0.78634 0.693 ~ + +The "gR" command uses Virtual Replace mode. This preserves the layout: + + inp 0 0.534 0.693 ~ + + | + gR0.786 | + V + + inp 0.786 0.534 0.693 ~ + +============================================================================== + +Next chapter: |usr_26.txt| Repeating + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_26.txt b/runtime/doc/usr_26.txt new file mode 100644 index 0000000..81345f4 --- /dev/null +++ b/runtime/doc/usr_26.txt @@ -0,0 +1,221 @@ +*usr_26.txt* For Vim version 9.1. Last change: 2006 Apr 24 + + VIM USER MANUAL - by Bram Moolenaar + + Repeating + + +An editing task is hardly ever unstructured. A change often needs to be made +several times. In this chapter a number of useful ways to repeat a change +will be explained. + +|26.1| Repeating with Visual mode +|26.2| Add and subtract +|26.3| Making a change in many files +|26.4| Using Vim from a shell script + + Next chapter: |usr_27.txt| Search commands and patterns + Previous chapter: |usr_25.txt| Editing formatted text +Table of contents: |usr_toc.txt| + +============================================================================== +*26.1* Repeating with Visual mode + +Visual mode is very handy for making a change in any sequence of lines. You +can see the highlighted text, thus you can check if the correct lines are +changed. But making the selection takes some typing. The "gv" command +selects the same area again. This allows you to do another operation on the +same text. + Suppose you have some lines where you want to change "2001" to "2002" and +"2000" to "2001": + + The financial results for 2001 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +First change "2001" to "2002". Select the lines in Visual mode, and use: > + + :s/2001/2002/g + +Now use "gv" to reselect the same text. It doesn't matter where the cursor +is. Then use ":s/2000/2001/g" to make the second change. + Obviously, you can repeat these changes several times. + +============================================================================== +*26.2* Add and subtract + +When repeating the change of one number into another, you often have a fixed +offset. In the example above, one was added to each year. Instead of typing +a substitute command for each year that appears, the CTRL-A command can be +used. + Using the same text as above, search for a year: > + + /19[0-9][0-9]\|20[0-9][0-9] + +Now press CTRL-A. The year will be increased by one: + + The financial results for 2002 are better ~ + than for 2000. The income increased by 50%, ~ + even though 2001 had more rain than 2000. ~ + 2000 2001 ~ + income 45,403 66,234 ~ + +Use "n" to find the next year, and press "." to repeat the CTRL-A ("." is a +bit quicker to type). Repeat "n" and "." for all years that appear. + Hint: set the 'hlsearch' option to see the matches you are going to change, +then you can look ahead and do it faster. + +Adding more than one can be done by prepending the number to CTRL-A. Suppose +you have this list: + + 1. item four ~ + 2. item five ~ + 3. item six ~ + +Move the cursor to "1." and type: > + + 3 CTRL-A + +The "1." will change to "4.". Again, you can use "." to repeat this on the +other numbers. + +Another example: + + 006 foo bar ~ + 007 foo bar ~ + +Using CTRL-A on these numbers results in: + + 007 foo bar ~ + 010 foo bar ~ + +7 plus one is 10? What happened here is that Vim recognized "007" as an octal +number, because there is a leading zero. This notation is often used in C +programs. If you do not want a number with leading zeros to be handled as +octal, use this: > + + :set nrformats-=octal + +The CTRL-X command does subtraction in a similar way. + +============================================================================== +*26.3* Making a change in many files + +Suppose you have a variable called "x_cnt" and you want to change it to +"x_counter". This variable is used in several of your C files. You need to +change it in all files. This is how you do it. + Put all the relevant files in the argument list: > + + :args *.c +< +This finds all C files and edits the first one. Now you can perform a +substitution command on all these files: > + + :argdo %s/\<x_cnt\>/x_counter/ge | update + +The ":argdo" command takes an argument that is another command. That command +will be executed on all files in the argument list. + The "%s" substitute command that follows works on all lines. It finds the +word "x_cnt" with "\<x_cnt\>". The "\<" and "\>" are used to match the whole +word only, and not "px_cnt" or "x_cnt2". + The flags for the substitute command include "g" to replace all occurrences +of "x_cnt" in the same line. The "e" flag is used to avoid an error message +when "x_cnt" does not appear in the file. Otherwise ":argdo" would abort on +the first file where "x_cnt" was not found. + The "|" separates two commands. The following "update" command writes the +file only if it was changed. If no "x_cnt" was changed to "x_counter" nothing +happens. + +There is also the ":windo" command, which executes its argument in all +windows. And ":bufdo" executes its argument on all buffers. Be careful with +this, because you might have more files in the buffer list than you think. +Check this with the ":buffers" command (or ":ls"). + +============================================================================== +*26.4* Using Vim from a shell script + +Suppose you have a lot of files in which you need to change the string +"-person-" to "Jones" and then print it. How do you do that? One way is to +do a lot of typing. The other is to write a shell script to do the work. + The Vim editor does a superb job as a screen-oriented editor when using +Normal mode commands. For batch processing, however, Normal mode commands do +not result in clear, commented command files; so here you will use Ex mode +instead. This mode gives you a nice command-line interface that makes it easy +to put into a batch file. ("Ex command" is just another name for a +command-line (:) command.) + The Ex mode commands you need are as follows: > + + %s/-person-/Jones/g + write tempfile + quit + +You put these commands in the file "change.vim". Now to run the editor in +batch mode, use this shell script: > + + for file in *.txt; do + vim -e -s $file < change.vim + lpr -r tempfile + done + +The for-done loop is a shell construct to repeat the two lines in between, +while the $file variable is set to a different file name each time. + The second line runs the Vim editor in Ex mode (-e argument) on the file +$file and reads commands from the file "change.vim". The -s argument tells +Vim to operate in silent mode. In other words, do not keep outputting the +:prompt, or any other prompt for that matter. + The "lpr -r tempfile" command prints the resulting "tempfile" and deletes +it (that's what the -r argument does). + + +READING FROM STDIN + +Vim can read text on standard input. Since the normal way is to read commands +there, you must tell Vim to read text instead. This is done by passing the +"-" argument in place of a file. Example: > + + ls | vim - + +This allows you to edit the output of the "ls" command, without first saving +the text in a file. + If you use the standard input to read text from, you can use the "-S" +argument to read a script: > + + producer | vim -S change.vim - + + +NORMAL MODE SCRIPTS + +If you really want to use Normal mode commands in a script, you can use it +like this: > + + vim -s script file.txt ... +< + Note: + "-s" has a different meaning when it is used without "-e". Here it + means to source the "script" as Normal mode commands. When used with + "-e" it means to be silent, and doesn't use the next argument as a + file name. + +The commands in "script" are executed like you typed them. Don't forget that +a line break is interpreted as pressing <Enter>. In Normal mode that moves +the cursor to the next line. + To create the script you can edit the script file and type the commands. +You need to imagine what the result would be, which can be a bit difficult. +Another way is to record the commands while you perform them manually. This +is how you do that: > + + vim -w script file.txt ... + +All typed keys will be written to "script". If you make a small mistake you +can just continue and remember to edit the script later. + The "-w" argument appends to an existing script. That is good when you +want to record the script bit by bit. If you want to start from scratch and +start all over, use the "-W" argument. It overwrites any existing file. + +============================================================================== + +Next chapter: |usr_27.txt| Search commands and patterns + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt new file mode 100644 index 0000000..bb5b565 --- /dev/null +++ b/runtime/doc/usr_27.txt @@ -0,0 +1,563 @@ +*usr_27.txt* For Vim version 9.1. Last change: 2019 Jul 14 + + VIM USER MANUAL - by Bram Moolenaar + + Search commands and patterns + + +In chapter 3 a few simple search patterns were mentioned |03.9|. Vim can do +much more complex searches. This chapter explains the most often used ones. +A detailed specification can be found here: |pattern| + +|27.1| Ignoring case +|27.2| Wrapping around the file end +|27.3| Offsets +|27.4| Matching multiple times +|27.5| Alternatives +|27.6| Character ranges +|27.7| Character classes +|27.8| Matching a line break +|27.9| Examples + + Next chapter: |usr_28.txt| Folding + Previous chapter: |usr_26.txt| Repeating +Table of contents: |usr_toc.txt| + +============================================================================== +*27.1* Ignoring case + +By default, Vim's searches are case sensitive. Therefore, "include", +"INCLUDE", and "Include" are three different words and a search will match +only one of them. + Now switch on the 'ignorecase' option: > + + :set ignorecase + +Search for "include" again, and now it will match "Include", "INCLUDE" and +"InClUDe". (Set the 'hlsearch' option to quickly see where a pattern +matches.) + You can switch this off again with: > + + :set noignorecase + +But let's keep it set, and search for "INCLUDE". It will match exactly the +same text as "include" did. Now set the 'smartcase' option: > + + :set ignorecase smartcase + +If you have a pattern with at least one uppercase character, the search +becomes case sensitive. The idea is that you didn't have to type that +uppercase character, so you must have done it because you wanted case to +match. That's smart! + With these two options set you find the following matches: + + pattern matches ~ + word word, Word, WORD, WoRd, etc. + Word Word + WORD WORD + WoRd WoRd + + +CASE IN ONE PATTERN + +If you want to ignore case for one specific pattern, you can do this by +prepending the "\c" string. Using "\C" will make the pattern to match case. +This overrules the 'ignorecase' and 'smartcase' options, when "\c" or "\C" is +used their value doesn't matter. + + pattern matches ~ + \Cword word + \CWord Word + \cword word, Word, WORD, WoRd, etc. + \cWord word, Word, WORD, WoRd, etc. + +A big advantage of using "\c" and "\C" is that it sticks with the pattern. +Thus if you repeat a pattern from the search history, the same will happen, no +matter if 'ignorecase' or 'smartcase' was changed. + + Note: + The use of "\" items in search patterns depends on the 'magic' option. + In this chapter we will assume 'magic' is on, because that is the + standard and recommended setting. If you would change 'magic', many + search patterns would suddenly become invalid. + + Note: + If your search takes much longer than you expected, you can interrupt + it with CTRL-C on Unix and CTRL-Break on MS-Windows. + +============================================================================== +*27.2* Wrapping around the file end + +By default, a forward search starts searching for the given string at the +current cursor location. It then proceeds to the end of the file. If it has +not found the string by that time, it starts from the beginning and searches +from the start of the file to the cursor location. + Keep in mind that when repeating the "n" command to search for the next +match, you eventually get back to the first match. If you don't notice this +you keep searching forever! To give you a hint, Vim displays this message: + + search hit BOTTOM, continuing at TOP ~ + +If you use the "?" command, to search in the other direction, you get this +message: + + search hit TOP, continuing at BOTTOM ~ + +Still, you don't know when you are back at the first match. One way to see +this is by switching on the 'ruler' option: > + + :set ruler + +Vim will display the cursor position in the lower righthand corner of the +window (in the status line if there is one). It looks like this: + + 101,29 84% ~ + +The first number is the line number of the cursor. Remember the line number +where you started, so that you can check if you passed this position again. + + +NOT WRAPPING + +To turn off search wrapping, use the following command: > + + :set nowrapscan + +Now when the search hits the end of the file, an error message displays: + + E385: search hit BOTTOM without match for: forever ~ + +Thus you can find all matches by going to the start of the file with "gg" and +keep searching until you see this message. + If you search in the other direction, using "?", you get: + + E384: search hit TOP without match for: forever ~ + +============================================================================== +*27.3* Offsets + +By default, the search command leaves the cursor positioned on the beginning +of the pattern. You can tell Vim to leave it some other place by specifying +an offset. For the forward search command "/", the offset is specified by +appending a slash (/) and the offset: > + + /default/2 + +This command searches for the pattern "default" and then moves to the +beginning of the second line past the pattern. Using this command on the +paragraph above, Vim finds the word "default" in the first line. Then the +cursor is moved two lines down and lands on "an offset". + +If the offset is a simple number, the cursor will be placed at the beginning +of the line that many lines from the match. The offset number can be positive +or negative. If it is positive, the cursor moves down that many lines; if +negative, it moves up. + + +CHARACTER OFFSETS + +The "e" offset indicates an offset from the end of the match. It moves the +cursor onto the last character of the match. The command: > + + /const/e + +puts the cursor on the "t" of "const". + From that position, adding a number moves forward that many characters. +This command moves to the character just after the match: > + + /const/e+1 + +A positive number moves the cursor to the right, a negative number moves it to +the left. For example: > + + /const/e-1 + +moves the cursor to the "s" of "const". + +If the offset begins with "b", the cursor moves to the beginning of the +pattern. That's not very useful, since leaving out the "b" does the same +thing. It does get useful when a number is added or subtracted. The cursor +then goes forward or backward that many characters. For example: > + + /const/b+2 + +Moves the cursor to the beginning of the match and then two characters to the +right. Thus it lands on the "n". + + +REPEATING + +To repeat searching for the previously used search pattern, but with a +different offset, leave out the pattern: > + + /that + //e + +Is equal to: > + + /that/e + +To repeat with the same offset: > + + / + +"n" does the same thing. To repeat while removing a previously used offset: > + + // + + +SEARCHING BACKWARDS + +The "?" command uses offsets in the same way, but you must use "?" to separate +the offset from the pattern, instead of "/": > + + ?const?e-2 + +The "b" and "e" keep their meaning, they don't change direction with the use +of "?". + + +START POSITION + +When starting a search, it normally starts at the cursor position. When you +specify a line offset, this can cause trouble. For example: > + + /const/-2 + +This finds the next word "const" and then moves two lines up. If you +use "n" to search again, Vim could start at the current position and find the +same "const" match. Then using the offset again, you would be back where you +started. You would be stuck! + It could be worse: Suppose there is another match with "const" in the next +line. Then repeating the forward search would find this match and move two +lines up. Thus you would actually move the cursor back! + +When you specify a character offset, Vim will compensate for this. Thus the +search starts a few characters forward or backward, so that the same match +isn't found again. + +============================================================================== +*27.4* Matching multiple times + +The "*" item specifies that the item before it can match any number of times. +Thus: > + + /a* + +matches "a", "aa", "aaa", etc. But also "" (the empty string), because zero +times is included. + The "*" only applies to the item directly before it. Thus "ab*" matches +"a", "ab", "abb", "abbb", etc. To match a whole string multiple times, it +must be grouped into one item. This is done by putting "\(" before it and +"\)" after it. Thus this command: > + + /\(ab\)* + +Matches: "ab", "abab", "ababab", etc. And also "". + +To avoid matching the empty string, use "\+". This makes the previous item +match one or more times. > + + /ab\+ + +Matches "ab", "abb", "abbb", etc. It does not match "a" when no "b" follows. + +To match an optional item, use "\=". Example: > + + /folders\= + +Matches "folder" and "folders". + + +SPECIFIC COUNTS + +To match a specific number of items use the form "\{n,m}". "n" and "m" are +numbers. The item before it will be matched "n" to "m" times |inclusive|. +Example: > + + /ab\{3,5} + +matches "abbb", "abbbb" and "abbbbb". + When "n" is omitted, it defaults to zero. When "m" is omitted it defaults +to infinity. When ",m" is omitted, it matches exactly "n" times. +Examples: + + pattern match count ~ + \{,4} 0, 1, 2, 3 or 4 + \{3,} 3, 4, 5, etc. + \{0,1} 0 or 1, same as \= + \{0,} 0 or more, same as * + \{1,} 1 or more, same as \+ + \{3} 3 + + +MATCHING AS LITTLE AS POSSIBLE + +The items so far match as many characters as they can find. To match as few +as possible, use "\{-n,m}". It works the same as "\{n,m}", except that the +minimal amount possible is used. + For example, use: > + + /ab\{-1,3} + +Will match "ab" in "abbb". Actually, it will never match more than one b, +because there is no reason to match more. It requires something else to force +it to match more than the lower limit. + The same rules apply to removing "n" and "m". It's even possible to remove +both of the numbers, resulting in "\{-}". This matches the item before it +zero or more times, as few as possible. The item by itself always matches +zero times. It is useful when combined with something else. Example: > + + /a.\{-}b + +This matches "axb" in "axbxb". If this pattern would be used: > + + /a.*b + +It would try to match as many characters as possible with ".*", thus it +matches "axbxb" as a whole. + +============================================================================== +*27.5* Alternatives + +The "or" operator in a pattern is "\|". Example: > + + /foo\|bar + +This matches "foo" or "bar". More alternatives can be concatenated: > + + /one\|two\|three + +Matches "one", "two" and "three". + To match multiple times, the whole thing must be placed in "\(" and "\)": > + + /\(foo\|bar\)\+ + +This matches "foo", "foobar", "foofoo", "barfoobar", etc. + Another example: > + + /end\(if\|while\|for\) + +This matches "endif", "endwhile" and "endfor". + +A related item is "\&". This requires that both alternatives match in the +same place. The resulting match uses the last alternative. Example: > + + /forever\&... + +This matches "for" in "forever". It will not match "fortuin", for example. + +============================================================================== +*27.6* Character ranges + +To match "a", "b" or "c" you could use "/a\|b\|c". When you want to match all +letters from "a" to "z" this gets very long. There is a shorter method: > + + /[a-z] + +The [] construct matches a single character. Inside you specify which +characters to match. You can include a list of characters, like this: > + + /[0123456789abcdef] + +This will match any of the characters included. For consecutive characters +you can specify the range. "0-3" stands for "0123". "w-z" stands for "wxyz". +Thus the same command as above can be shortened to: > + + /[0-9a-f] + +To match the "-" character itself make it the first or last one in the range. +These special characters are accepted to make it easier to use them inside a +[] range (they can actually be used anywhere in the search pattern): + + \e <Esc> + \t <Tab> + \r <CR> + \b <BS> + +There are a few more special cases for [] ranges, see |/[]| for the whole +story. + + +COMPLEMENTED RANGE + +To avoid matching a specific character, use "^" at the start of the range. +The [] item then matches everything but the characters included. Example: > + + /"[^"]*" +< + " a double quote + [^"] any character that is not a double quote + * as many as possible + " a double quote again + +This matches "foo" and "3!x", including the double quotes. + + +PREDEFINED RANGES + +A number of ranges are used very often. Vim provides a shortcut for these. +For example: > + + /\a + +Finds alphabetic characters. This is equal to using "/[a-zA-Z]". Here are a +few more of these: + + item matches equivalent ~ + \d digit [0-9] + \D non-digit [^0-9] + \x hex digit [0-9a-fA-F] + \X non-hex digit [^0-9a-fA-F] + \s white space [ ] (<Tab> and <Space>) + \S non-white characters [^ ] (not <Tab> and <Space>) + \l lowercase alpha [a-z] + \L non-lowercase alpha [^a-z] + \u uppercase alpha [A-Z] + \U non-uppercase alpha [^A-Z] + + Note: + Using these predefined ranges works a lot faster than the character + range it stands for. + These items can not be used inside []. Thus "[\d\l]" does NOT work to + match a digit or lowercase alpha. Use "\(\d\|\l\)" instead. + +See |/\s| for the whole list of these ranges. + +============================================================================== +*27.7* Character classes + +The character range matches a fixed set of characters. A character class is +similar, but with an essential difference: The set of characters can be +redefined without changing the search pattern. + For example, search for this pattern: > + + /\f\+ + +The "\f" item stands for file name characters. Thus this matches a sequence +of characters that can be a file name. + Which characters can be part of a file name depends on the system you are +using. On MS-Windows, the backslash is included, on Unix it is not. This is +specified with the 'isfname' option. The default value for Unix is: > + + :set isfname + isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,= + +For other systems the default value is different. Thus you can make a search +pattern with "\f" to match a file name, and it will automatically adjust to +the system you are using it on. + + Note: + Actually, Unix allows using just about any character in a file name, + including white space. Including these characters in 'isfname' would + be theoretically correct. But it would make it impossible to find the + end of a file name in text. Thus the default value of 'isfname' is a + compromise. + +The character classes are: + + item matches option ~ + \i identifier characters 'isident' + \I like \i, excluding digits + \k keyword characters 'iskeyword' + \K like \k, excluding digits + \p printable characters 'isprint' + \P like \p, excluding digits + \f file name characters 'isfname' + \F like \f, excluding digits + +============================================================================== +*27.8* Matching a line break + +Vim can find a pattern that includes a line break. You need to specify where +the line break happens, because all items mentioned so far don't match a line +break. + To check for a line break in a specific place, use the "\n" item: > + + /one\ntwo + +This will match at a line that ends in "one" and the next line starts with +"two". To match "one two" as well, you need to match a space or a line +break. The item to use for it is "\_s": > + + /one\_stwo + +To allow any amount of white space: > + + /one\_s\+two + +This also matches when "one " is at the end of a line and " two" at the +start of the next one. + +"\s" matches white space, "\_s" matches white space or a line break. +Similarly, "\a" matches an alphabetic character, and "\_a" matches an +alphabetic character or a line break. The other character classes and ranges +can be modified in the same way by inserting a "_". + +Many other items can be made to match a line break by prepending "\_". For +example: "\_." matches any character or a line break. + + Note: + "\_.*" matches everything until the end of the file. Be careful with + this, it can make a search command very slow. + +Another example is "\_[]", a character range that includes a line break: > + + /"\_[^"]*" + +This finds a text in double quotes that may be split up in several lines. + +============================================================================== +*27.9* Examples + +Here are a few search patterns you might find useful. This shows how the +items mentioned above can be combined. + + +FINDING A CALIFORNIA LICENSE PLATE + +A sample license plate number is "1MGU103". It has one digit, three uppercase +letters and three digits. Directly putting this into a search pattern: > + + /\d\u\u\u\d\d\d + +Another way is to specify that there are three digits and letters with a +count: > + + /\d\u\{3}\d\{3} + +Using [] ranges instead: > + + /[0-9][A-Z]\{3}[0-9]\{3} + +Which one of these you should use? Whichever one you can remember. The +simple way you can remember is much faster than the fancy way that you can't. +If you can remember them all, then avoid the last one, because it's both more +typing and slower to execute. + + +FINDING AN IDENTIFIER + +In C programs (and many other computer languages) an identifier starts with a +letter and further consists of letters and digits. Underscores can be used +too. This can be found with: > + + /\<\h\w*\> + +"\<" and "\>" are used to find only whole words. "\h" stands for "[A-Za-z_]" +and "\w" for "[0-9A-Za-z_]". + + Note: + "\<" and "\>" depend on the 'iskeyword' option. If it includes "-", + for example, then "ident-" is not matched. In this situation use: > + + /\w\@<!\h\w*\w\@! +< + This checks if "\w" does not match before or after the identifier. + See |/\@<!| and |/\@!|. + +============================================================================== + +Next chapter: |usr_28.txt| Folding + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_28.txt b/runtime/doc/usr_28.txt new file mode 100644 index 0000000..5411166 --- /dev/null +++ b/runtime/doc/usr_28.txt @@ -0,0 +1,426 @@ +*usr_28.txt* For Vim version 9.1. Last change: 2008 Jun 14 + + VIM USER MANUAL - by Bram Moolenaar + + Folding + + +Structured text can be separated in sections. And sections in sub-sections. +Folding allows you to display a section as one line, providing an overview. +This chapter explains the different ways this can be done. + +|28.1| What is folding? +|28.2| Manual folding +|28.3| Working with folds +|28.4| Saving and restoring folds +|28.5| Folding by indent +|28.6| Folding with markers +|28.7| Folding by syntax +|28.8| Folding by expression +|28.9| Folding unchanged lines +|28.10| Which fold method to use? + + Next chapter: |usr_29.txt| Moving through programs + Previous chapter: |usr_27.txt| Search commands and patterns +Table of contents: |usr_toc.txt| + +============================================================================== +*28.1* What is folding? + +Folding is used to show a range of lines in the buffer as a single line on the +screen. Like a piece of paper which is folded to make it shorter: + + +------------------------+ + | line 1 | + | line 2 | + | line 3 | + |_______________________ | + \ \ + \________________________\ + / folded lines / + /________________________/ + | line 12 | + | line 13 | + | line 14 | + +------------------------+ + +The text is still in the buffer, unchanged. Only the way lines are displayed +is affected by folding. + +The advantage of folding is that you can get a better overview of the +structure of text, by folding lines of a section and replacing it with a line +that indicates that there is a section. + +============================================================================== +*28.2* Manual folding + +Try it out: Position the cursor in a paragraph and type: > + + zfap + +You will see that the paragraph is replaced by a highlighted line. You have +created a fold. |zf| is an operator and |ap| a text object selection. You +can use the |zf| operator with any movement command to create a fold for the +text that it moved over. |zf| also works in Visual mode. + +To view the text again, open the fold by typing: > + + zo + +And you can close the fold again with: > + + zc + +All the folding commands start with "z". With some fantasy, this looks like a +folded piece of paper, seen from the side. The letter after the "z" has a +mnemonic meaning to make it easier to remember the commands: + + zf F-old creation + zo O-pen a fold + zc C-lose a fold + +Folds can be nested: A region of text that contains folds can be folded +again. For example, you can fold each paragraph in this section, and then +fold all the sections in this chapter. Try it out. You will notice that +opening the fold for the whole chapter will restore the nested folds as they +were, some may be open and some may be closed. + +Suppose you have created several folds, and now want to view all the text. +You could go to each fold and type "zo". To do this faster, use this command: > + + zr + +This will R-educe the folding. The opposite is: > + + zm + +This folds M-ore. You can repeat "zr" and "zm" to open and close nested folds +of several levels. + +If you have nested several levels deep, you can open all of them with: > + + zR + +This R-educes folds until there are none left. And you can close all folds +with: > + + zM + +This folds M-ore and M-ore. + +You can quickly disable the folding with the |zn| command. Then |zN| brings +back the folding as it was. |zi| toggles between the two. This is a useful +way of working: +- create folds to get overview on your file +- move around to where you want to do your work +- do |zi| to look at the text and edit it +- do |zi| again to go back to moving around + +More about manual folding in the reference manual: |fold-manual| + +============================================================================== +*28.3* Working with folds + +When some folds are closed, movement commands like "j" and "k" move over a +fold like it was a single, empty line. This allows you to quickly move around +over folded text. + +You can yank, delete and put folds as if it was a single line. This is very +useful if you want to reorder functions in a program. First make sure that +each fold contains a whole function (or a bit less) by selecting the right +'foldmethod'. Then delete the function with "dd", move the cursor and put it +with "p". If some lines of the function are above or below the fold, you can +use Visual selection: +- put the cursor on the first line to be moved +- hit "V" to start Visual mode +- put the cursor on the last line to be moved +- hit "d" to delete the selected lines. +- move the cursor to the new position and "p"ut the lines there. + +It is sometimes difficult to see or remember where a fold is located, thus +where a |zo| command would actually work. To see the defined folds: > + + :set foldcolumn=4 + +This will show a small column on the left of the window to indicate folds. +A "+" is shown for a closed fold. A "-" is shown at the start of each open +fold and "|" at following lines of the fold. + +You can use the mouse to open a fold by clicking on the "+" in the foldcolumn. +Clicking on the "-" or a "|" below it will close an open fold. + +To open all folds at the cursor line use |zO|. +To close all folds at the cursor line use |zC|. +To delete a fold at the cursor line use |zd|. +To delete all folds at the cursor line use |zD|. + +When in Insert mode, the fold at the cursor line is never closed. That allows +you to see what you type! + +Folds are opened automatically when jumping around or moving the cursor left +or right. For example, the "0" command opens the fold under the cursor +(if 'foldopen' contains "hor", which is the default). The 'foldopen' option +can be changed to open folds for specific commands. If you want the line +under the cursor always to be open, do this: > + + :set foldopen=all + +Warning: You won't be able to move onto a closed fold then. You might want to +use this only temporarily and then set it back to the default: > + + :set foldopen& + +You can make folds close automatically when you move out of it: > + + :set foldclose=all + +This will re-apply 'foldlevel' to all folds that don't contain the cursor. +You have to try it out if you like how this feels. Use |zm| to fold more and +|zr| to fold less (reduce folds). + +The folding is local to the window. This allows you to open two windows on +the same buffer, one with folds and one without folds. Or one with all folds +closed and one with all folds open. + +============================================================================== +*28.4* Saving and restoring folds + +When you abandon a file (starting to edit another one), the state of the folds +is lost. If you come back to the same file later, all manually opened and +closed folds are back to their default. When folds have been created +manually, all folds are gone! To save the folds use the |:mkview| command: > + + :mkview + +This will store the settings and other things that influence the view on the +file. You can change what is stored with the 'viewoptions' option. +When you come back to the same file later, you can load the view again: > + + :loadview + +You can store up to ten views on one file. For example, to save the current +setup as the third view and load the second view: > + + :mkview 3 + :loadview 2 + +Note that when you insert or delete lines the views might become invalid. +Also check out the 'viewdir' option, which specifies where the views are +stored. You might want to delete old views now and then. + +============================================================================== +*28.5* Folding by indent + +Defining folds with |zf| is a lot of work. If your text is structured by +giving lower level items a larger indent, you can use the indent folding +method. This will create folds for every sequence of lines with the same +indent. Lines with a larger indent will become nested folds. This works well +with many programming languages. + +Try this by setting the 'foldmethod' option: > + + :set foldmethod=indent + +Then you can use the |zm| and |zr| commands to fold more and reduce folding. +It's easy to see on this example text: + +This line is not indented + This line is indented once + This line is indented twice + This line is indented twice + This line is indented once +This line is not indented + This line is indented once + This line is indented once + +Note that the relation between the amount of indent and the fold depth depends +on the 'shiftwidth' option. Each 'shiftwidth' worth of indent adds one to the +depth of the fold. This is called a fold level. + +When you use the |zr| and |zm| commands you actually increase or decrease the +'foldlevel' option. You could also set it directly: > + + :set foldlevel=3 + +This means that all folds with three times a 'shiftwidth' indent or more will +be closed. The lower the foldlevel, the more folds will be closed. When +'foldlevel' is zero, all folds are closed. |zM| does set 'foldlevel' to zero. +The opposite command |zR| sets 'foldlevel' to the deepest fold level that is +present in the file. + +Thus there are two ways to open and close the folds: +(A) By setting the fold level. + This gives a very quick way of "zooming out" to view the structure of the + text, move the cursor, and "zoom in" on the text again. + +(B) By using |zo| and |zc| commands to open or close specific folds. + This allows opening only those folds that you want to be open, while other + folds remain closed. + +This can be combined: You can first close most folds by using |zm| a few times +and then open a specific fold with |zo|. Or open all folds with |zR| and +then close specific folds with |zc|. + +But you cannot manually define folds when 'foldmethod' is "indent", as that +would conflict with the relation between the indent and the fold level. + +More about folding by indent in the reference manual: |fold-indent| + +============================================================================== +*28.6* Folding with markers + +Markers in the text are used to specify the start and end of a fold region. +This gives precise control over which lines are included in a fold. The +disadvantage is that the text needs to be modified. + +Try it: > + + :set foldmethod=marker + +Example text, as it could appear in a C program: + + /* foobar () {{{ */ + int foobar() + { + /* return a value {{{ */ + return 42; + /* }}} */ + } + /* }}} */ + +Notice that the folded line will display the text before the marker. This is +very useful to tell what the fold contains. + +It's quite annoying when the markers don't pair up correctly after moving some +lines around. This can be avoided by using numbered markers. Example: + + /* global variables {{{1 */ + int varA, varB; + + /* functions {{{1 */ + /* funcA() {{{2 */ + void funcA() {} + + /* funcB() {{{2 */ + void funcB() {} + /* }}}1 */ + +At every numbered marker a fold at the specified level begins. This will make +any fold at a higher level stop here. You can just use numbered start markers +to define all folds. Only when you want to explicitly stop a fold before +another starts you need to add an end marker. + +More about folding with markers in the reference manual: |fold-marker| + +============================================================================== +*28.7* Folding by syntax + +For each language Vim uses a different syntax file. This defines the colors +for various items in the file. If you are reading this in Vim, in a terminal +that supports colors, the colors you see are made with the "help" syntax file. + In the syntax files it is possible to add syntax items that have the "fold" +argument. These define a fold region. This requires writing a syntax file +and adding these items in it. That's not so easy to do. But once it's done, +all folding happens automatically. + Here we'll assume you are using an existing syntax file. Then there is +nothing more to explain. You can open and close folds as explained above. +The folds will be created and deleted automatically when you edit the file. + +More about folding by syntax in the reference manual: |fold-syntax| + +============================================================================== +*28.8* Folding by expression + +This is similar to folding by indent, but instead of using the indent of a +line a user function is called to compute the fold level of a line. You can +use this for text where something in the text indicates which lines belong +together. An example is an e-mail message where the quoted text is indicated +by a ">" before the line. To fold these quotes use this: > + + :set foldmethod=expr + :set foldexpr=strlen(substitute(substitute(getline(v:lnum),'\\s','',\"g\"),'[^>].*','','')) + +You can try it out on this text: + +> quoted text he wrote +> quoted text he wrote +> > double quoted text I wrote +> > double quoted text I wrote + +Explanation for the 'foldexpr' used in the example (inside out): + getline(v:lnum) gets the current line + substitute(...,'\\s','','g') removes all white space from the line + substitute(...,'[^>].*','','') removes everything after leading '>'s + strlen(...) counts the length of the string, which + is the number of '>'s found + +Note that a backslash must be inserted before every space, double quote and +backslash for the ":set" command. If this confuses you, do > + + :set foldexpr + +to check the actual resulting value. To correct a complicated expression, use +the command-line completion: > + + :set foldexpr=<Tab> + +Where <Tab> is a real Tab. Vim will fill in the previous value, which you can +then edit. + +When the expression gets more complicated you should put it in a function and +set 'foldexpr' to call that function. + +More about folding by expression in the reference manual: |fold-expr| + +============================================================================== +*28.9* Folding unchanged lines + +This is useful when you set the 'diff' option in the same window. The +|vimdiff| command does this for you. Example: > + + :setlocal diff foldmethod=diff scrollbind nowrap foldlevel=1 + +Do this in every window that shows a different version of the same file. You +will clearly see the differences between the files, while the text that didn't +change is folded. + +For more details see |fold-diff|. + +============================================================================== +*28.10* Which fold method to use? + +All these possibilities make you wonder which method you should choose. +Unfortunately, there is no golden rule. Here are some hints. + +If there is a syntax file with folding for the language you are editing, that +is probably the best choice. If there isn't one, you might try to write it. +This requires a good knowledge of search patterns. It's not easy, but when +it's working you will not have to define folds manually. + +Typing commands to manually fold regions can be used for unstructured text. +Then use the |:mkview| command to save and restore your folds. + +The marker method requires you to change the file. If you are sharing the +files with other people or you have to meet company standards, you might not +be allowed to add them. + The main advantage of markers is that you can put them exactly where you +want them. That avoids that a few lines are missed when you cut and paste +folds. And you can add a comment about what is contained in the fold. + +Folding by indent is something that works in many files, but not always very +well. Use it when you can't use one of the other methods. However, it is +very useful for outlining. Then you specifically use one 'shiftwidth' for +each nesting level. + +Folding with expressions can make folds in almost any structured text. It is +quite simple to specify, especially if the start and end of a fold can easily +be recognized. + If you use the "expr" method to define folds, but they are not exactly how +you want them, you could switch to the "manual" method. This will not remove +the defined folds. Then you can delete or add folds manually. + +============================================================================== + +Next chapter: |usr_29.txt| Moving through programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt new file mode 100644 index 0000000..a534c6f --- /dev/null +++ b/runtime/doc/usr_29.txt @@ -0,0 +1,614 @@ +*usr_29.txt* For Vim version 9.1. Last change: 2022 Mar 13 + + VIM USER MANUAL - by Bram Moolenaar + + Moving through programs + + +The creator of Vim is a computer programmer. It's no surprise that Vim +contains many features to aid in writing programs. Jump around to find where +identifiers are defined and used. Preview declarations in a separate window. +There is more in the next chapter. + +|29.1| Using tags +|29.2| The preview window +|29.3| Moving through a program +|29.4| Finding global identifiers +|29.5| Finding local identifiers + + Next chapter: |usr_30.txt| Editing programs + Previous chapter: |usr_28.txt| Folding +Table of contents: |usr_toc.txt| + +============================================================================== +*29.1* Using tags + +What is a tag? It is a location where an identifier is defined. An example +is a function definition in a C or C++ program. A list of tags is kept in a +tags file. This can be used by Vim to directly jump from any place to the +tag, the place where an identifier is defined. + To generate the tags file for all C files in the current directory, use the +following command: > + + ctags *.c + +"ctags" is a separate program. Most Unix systems already have it installed. +If you do not have it yet, you can find Universal/Exuberant ctags at: + http://ctags.io ~ + http://ctags.sf.net ~ + +Universal ctags is preferred, Exuberant ctags is no longer being developed. + +Now when you are in Vim and you want to go to a function definition, you can +jump to it by using the following command: > + + :tag startlist + +This command will find the function "startlist" even if it is in another file. + The CTRL-] command jumps to the tag of the word that is under the cursor. +This makes it easy to explore a tangle of C code. Suppose, for example, that +you are in the function "write_block". You can see that it calls +"write_line". But what does "write_line" do? By placing the cursor on the +call to "write_line" and pressing CTRL-], you jump to the definition of this +function. + The "write_line" function calls "write_char". You need to figure out what +it does. So you position the cursor over the call to "write_char" and press +CTRL-]. Now you are at the definition of "write_char". + + +-------------------------------------+ + |void write_block(char **s; int cnt) | + |{ | + | int i; | + | for (i = 0; i < cnt; ++i) | + | write_line(s[i]); | + |} | | + +-----------|-------------------------+ + | + CTRL-] | + | +----------------------------+ + +--> |void write_line(char *s) | + |{ | + | while (*s != 0) | + | write_char(*s++); | + |} | | + +--------|-------------------+ + | + CTRL-] | + | +------------------------------------+ + +--> |void write_char(char c) | + |{ | + | putchar((int)(unsigned char)c); | + |} | + +------------------------------------+ + +The ":tags" command shows the list of tags that you traversed through: + + :tags + # TO tag FROM line in file/text ~ + 1 1 write_line 8 write_block.c ~ + 2 1 write_char 7 write_line.c ~ + > ~ +> +Now to go back. The CTRL-T command goes to the preceding tag. In the example +above you get back to the "write_line" function, in the call to "write_char". + This command takes a count argument that indicates how many tags to jump +back. You have gone forward, and now back. Let's go forward again. The +following command goes to the tag on top of the list: > + + :tag + +You can prefix it with a count and jump forward that many tags. For example: +":3tag". CTRL-T also can be preceded with a count. + These commands thus allow you to go down a call tree with CTRL-] and back +up again with CTRL-T. Use ":tags" to find out where you are. + + +SPLIT WINDOWS + +The ":tag" command replaces the file in the current window with the one +containing the new function. But suppose you want to see not only the old +function but also the new one? You can split the window using the ":split" +command followed by the ":tag" command. Vim has a shorthand command that does +both: > + :stag tagname + +To split the current window and jump to the tag under the cursor use this +command: > + + CTRL-W ] + +If a count is specified, the new window will be that many lines high. + + +MORE TAGS FILES + +When you have files in many directories, you can create a tags file in each of +them. Vim will then only be able to jump to tags within that directory. + To find more tags files, set the 'tags' option to include all the relevant +tags files. Example: > + + :set tags=./tags,./../tags,./*/tags + +This finds a tags file in the same directory as the current file, one +directory level higher and in all subdirectories. + This is quite a number of tags files, but it may still not be enough. For +example, when editing a file in "~/proj/src", you will not find the tags file +"~/proj/sub/tags". For this situation Vim offers to search a whole directory +tree for tags files. Example: > + + :set tags=~/proj/**/tags + + +ONE TAGS FILE + +When Vim has to search many places for tags files, you can hear the disk +rattling. It may get a bit slow. In that case it's better to spend this +time while generating one big tags file. You might do this overnight. + This requires the Universal or Exuberant ctags program, mentioned above. +It offers an argument to search a whole directory tree: > + + cd ~/proj + ctags -R . + +The nice thing about this is that Universal/Exuberant ctags recognizes various +file types. Thus this doesn't work just for C and C++ programs, also for +Eiffel and even Vim scripts. See the ctags documentation to tune this. + Now you only need to tell Vim where your big tags file is: > + + :set tags=~/proj/tags + + +MULTIPLE MATCHES + +When a function is defined multiple times (or a method in several classes), +the ":tag" command will jump to the first one. If there is a match in the +current file, that one is used first. + You can now jump to other matches for the same tag with: > + + :tnext + +Repeat this to find further matches. If there are many, you can select which +one to jump to: > + + :tselect tagname + +Vim will present you with a list of choices: + + # pri kind tag file ~ + 1 F f mch_init os_amiga.c ~ + mch_init() ~ + 2 F f mch_init os_mac.c ~ + mch_init() ~ + 3 F f mch_init os_msdos.c ~ + mch_init(void) ~ + 4 F f mch_init os_riscos.c ~ + mch_init() ~ + Enter nr of choice (<CR> to abort): ~ + +You can now enter the number (in the first column) of the match that you would +like to jump to. The information in the other columns give you a good idea of +where the match is defined. + +To move between the matching tags, these commands can be used: + + :tfirst go to first match + :[count]tprevious go to [count] previous match + :[count]tnext go to [count] next match + :tlast go to last match + +If [count] is omitted then one is used. + + +GUESSING TAG NAMES + +Command line completion is a good way to avoid typing a long tag name. Just +type the first bit and press <Tab>: > + + :tag write_<Tab> + +You will get the first match. If it's not the one you want, press <Tab> until +you find the right one. + Sometimes you only know part of the name of a function. Or you have many +tags that start with the same string, but end differently. Then you can tell +Vim to use a pattern to find the tag. + Suppose you want to jump to a tag that contains "block". First type +this: > + + :tag /block + +Now use command line completion: press <Tab>. Vim will find all tags that +contain "block" and use the first match. + The "/" before a tag name tells Vim that what follows is not a literal tag +name, but a pattern. You can use all the items for search patterns here. For +example, suppose you want to select a tag that starts with "write_": > + + :tselect /^write_ + +The "^" specifies that the tag starts with "write_". Otherwise it would also +be found halfway a tag name. Similarly "$" at the end makes sure the pattern +matches until the end of a tag. + + +A TAGS BROWSER + +Since CTRL-] takes you to the definition of the identifier under the cursor, +you can use a list of identifier names as a table of contents. Here is an +example. + First create a list of identifiers (this requires Universal or Exuberant +ctags): > + + ctags --c-types=f -f functions *.c + +Now start Vim without a file, and edit this file in Vim, in a vertically split +window: > + + vim + :vsplit functions + +The window contains a list of all the functions. There is some more stuff, +but you can ignore that. Do ":setlocal ts=99" to clean it up a bit. + In this window, define a mapping: > + + :nnoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR> + +Move the cursor to the line that contains the function you want to go to. +Now press <Enter>. Vim will go to the other window and jump to the selected +function. + + +RELATED ITEMS + +To make case in tag names be ignored, you can set 'ignorecase' while leaving +'tagcase' as "followic", or set 'tagcase' to "ignore". + +The 'tagbsearch' option tells if the tags file is sorted or not. The default +is to assume a sorted tags file, which makes a tags search a lot faster, but +doesn't work if the tags file isn't sorted. + +The 'taglength' option can be used to tell Vim the number of significant +characters in a tag. + +Cscope is a free program. It does not only find places where an identifier is +declared, but also where it is used. See |cscope|. + +============================================================================== +*29.2* The preview window + +When you edit code that contains a function call, you need to use the correct +arguments. To know what values to pass you can look at how the function is +defined. The tags mechanism works very well for this. Preferably the +definition is displayed in another window. For this the preview window can be +used. + To open a preview window to display the function "write_char": > + + :ptag write_char + +Vim will open a window, and jumps to the tag "write_char". Then it takes you +back to the original position. Thus you can continue typing without the need +to use a CTRL-W command. + If the name of a function appears in the text, you can get its definition +in the preview window with: > + + CTRL-W } + +There is a script that automatically displays the text where the word under +the cursor was defined. See |CursorHold-example|. + +To close the preview window use this command: > + + :pclose + +To edit a specific file in the preview window, use ":pedit". This can be +useful to edit a header file, for example: > + + :pedit defs.h + +Finally, ":psearch" can be used to find a word in the current file and any +included files and display the match in the preview window. This is +especially useful when using library functions, for which you do not have a +tags file. Example: > + + :psearch popen + +This will show the "stdio.h" file in the preview window, with the function +prototype for popen(): + + FILE *popen __P((const char *, const char *)); ~ + +You can specify the height of the preview window, when it is opened, with the +'previewheight' option. + +============================================================================== +*29.3* Moving through a program + +Since a program is structured, Vim can recognize items in it. Specific +commands can be used to move around. + C programs often contain constructs like this: + + #ifdef USE_POPEN ~ + fd = popen("ls", "r") ~ + #else ~ + fd = fopen("tmp", "w") ~ + #endif ~ + +But then much longer, and possibly nested. Position the cursor on the +"#ifdef" and press %. Vim will jump to the "#else". Pressing % again takes +you to the "#endif". Another % takes you to the "#ifdef" again. + When the construct is nested, Vim will find the matching items. This is a +good way to check if you didn't forget an "#endif". + When you are somewhere inside a "#if" - "#endif", you can jump to the start +of it with: > + + [# + +If you are not after a "#if" or "#ifdef" Vim will beep. To jump forward to +the next "#else" or "#endif" use: > + + ]# + +These two commands skip any "#if" - "#endif" blocks that they encounter. +Example: + + #if defined(HAS_INC_H) ~ + a = a + inc(); ~ + # ifdef USE_THEME ~ + a += 3; ~ + # endif ~ + set_width(a); ~ + +With the cursor in the last line, "[#" moves to the first line. The "#ifdef" +- "#endif" block in the middle is skipped. + + +MOVING IN CODE BLOCKS + +In C code blocks are enclosed in {}. These can get pretty long. To move to +the start of the outer block use the "[[" command. Use "][" to find the end. +This assumes that the "{" and "}" are in the first column. + The "[{" command moves to the start of the current block. It skips over +pairs of {} at the same level. "]}" jumps to the end. + An overview: + + function(int a) + +-> { + | if (a) + | +-> { + [[ | | for (;;) --+ + | | +-> { | + | [{ | | foo(32); | --+ + | | [{ | if (bar(a)) --+ | ]} | + +-- | +-- break; | ]} | | + | } <-+ | | ][ + +-- foobar(a) | | + } <-+ | + } <-+ + +When writing C++ or Java, the outer {} block is for the class. The next level +of {} is for a method. When somewhere inside a class use "[m" to find the +previous start of a method. "]m" finds the next start of a method. + +Additionally, "[]" moves backward to the end of a function and "]]" moves +forward to the start of the next function. The end of a function is defined +by a "}" in the first column. + + int func1(void) + { + return 1; + +----------> } + | + [] | int func2(void) + | +-> { + | [[ | if (flag) + start +-- +-- return flag; + | ][ | return 2; + | +-> } + ]] | + | int func3(void) + +----------> { + return 3; + } + +Don't forget you can also use "%" to move between matching (), {} and []. +That also works when they are many lines apart. + + +MOVING IN BRACES + +The "[(" and "])" commands work similar to "[{" and "]}", except that they +work on () pairs instead of {} pairs. +> + [( +< <-------------------------------- + <------- + if (a == b && (c == d || (e > f)) && x > y) ~ + --------------> + --------------------------------> > + ]) + +MOVING IN COMMENTS + +To move back to the start of a comment use "[/". Move forward to the end of a +comment with "]/". This only works for /* - */ comments. + + +-> +-> /* + | [/ | * A comment about --+ + [/ | +-- * wonderful life. | ]/ + | */ <-+ + | + +-- foo = bar * 3; --+ + | ]/ + /* a short comment */ <-+ + +============================================================================== +*29.4* Finding global identifiers + +You are editing a C program and wonder if a variable is declared as "int" or +"unsigned". A quick way to find this is with the "[I" command. + Suppose the cursor is on the word "column". Type: > + + [I + +Vim will list the matching lines it can find. Not only in the current file, +but also in all included files (and files included in them, etc.). The result +looks like this: + + structs.h ~ + 1: 29 unsigned column; /* column number */ ~ + +The advantage over using tags or the preview window is that included files are +searched. In most cases this results in the right declaration to be found. +Also when the tags file is out of date. Also when you don't have tags for the +included files. + However, a few things must be right for "[I" to do its work. First of all, +the 'include' option must specify how a file is included. The default value +works for C and C++. For other languages you will have to change it. + + +LOCATING INCLUDED FILES + + Vim will find included files in the places specified with the 'path' +option. If a directory is missing, some include files will not be found. You +can discover this with this command: > + + :checkpath + +It will list the include files that could not be found. Also files included +by the files that could be found. An example of the output: + + --- Included files not found in path --- ~ + <io.h> ~ + vim.h --> ~ + <functions.h> ~ + <clib/exec_protos.h> ~ + +The "io.h" file is included by the current file and can't be found. "vim.h" +can be found, thus ":checkpath" goes into this file and checks what it +includes. The "functions.h" and "clib/exec_protos.h" files, included by +"vim.h" are not found. + + Note: + Vim is not a compiler. It does not recognize "#ifdef" statements. + This means every "#include" statement is used, also when it comes + after "#if NEVER". + +To fix the files that could not be found, add a directory to the 'path' +option. A good place to find out about this is the Makefile. Look out for +lines that contain "-I" items, like "-I/usr/local/X11". To add this directory +use: > + + :set path+=/usr/local/X11 + +When there are many subdirectories, you can use the "*" wildcard. Example: > + + :set path+=/usr/*/include + +This would find files in "/usr/local/include" as well as "/usr/X11/include". + +When working on a project with a whole nested tree of included files, the "**" +items is useful. This will search down in all subdirectories. Example: > + + :set path+=/projects/invent/**/include + +This will find files in the directories: + + /projects/invent/include ~ + /projects/invent/main/include ~ + /projects/invent/main/os/include ~ + etc. + +There are even more possibilities. Check out the 'path' option for info. + If you want to see which included files are actually found, use this +command: > + + :checkpath! + +You will get a (very long) list of included files, the files they include, and +so on. To shorten the list a bit, Vim shows "(Already listed)" for files that +were found before and doesn't list the included files in there again. + + +JUMPING TO A MATCH + +"[I" produces a list with only one line of text. When you want to have a +closer look at the first item, you can jump to that line with the command: > + + [<Tab> + +You can also use "[ CTRL-I", since CTRL-I is the same as pressing <Tab>. + +The list that "[I" produces has a number at the start of each line. When you +want to jump to another item than the first one, type the number first: > + + 3[<Tab> + +Will jump to the third item in the list. Remember that you can use CTRL-O to +jump back to where you started from. + + +RELATED COMMANDS + + [i only lists the first match + ]I only lists items below the cursor + ]i only lists the first item below the cursor + + +FINDING DEFINED IDENTIFIERS + +The "[I" command finds any identifier. To find only macros, defined with +"#define" use: > + + [D + +Again, this searches in included files. The 'define' option specifies what a +line looks like that defines the items for "[D". You could change it to make +it work with other languages than C or C++. + The commands related to "[D" are: + + [d only lists the first match + ]D only lists items below the cursor + ]d only lists the first item below the cursor + +============================================================================== +*29.5* Finding local identifiers + +The "[I" command searches included files. To search in the current file only, +and jump to the first place where the word under the cursor is used: > + + gD + +Hint: Goto Definition. This command is very useful to find a variable or +function that was declared locally ("static", in C terms). Example (cursor on +"counter"): + + +-> static int counter = 0; + | + | int get_counter(void) + gD | { + | ++counter; + +-- return counter; + } + +To restrict the search even further, and look only in the current function, +use this command: > + + gd + +This will go back to the start of the current function and find the first +occurrence of the word under the cursor. Actually, it searches backwards to +an empty line above a "{" in the first column. From there it searches forward +for the identifier. Example (cursor on "idx"): + + int find_entry(char *name) + { + +-> int idx; + | + gd | for (idx = 0; idx < table_len; ++idx) + | if (strcmp(table[idx].name, name) == 0) + +-- return idx; + } + +============================================================================== + +Next chapter: |usr_30.txt| Editing programs + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt new file mode 100644 index 0000000..19a1259 --- /dev/null +++ b/runtime/doc/usr_30.txt @@ -0,0 +1,643 @@ +*usr_30.txt* For Vim version 9.1. Last change: 2007 Nov 10 + + VIM USER MANUAL - by Bram Moolenaar + + Editing programs + + +Vim has various commands that aid in writing computer programs. Compile a +program and directly jump to reported errors. Automatically set the indent +for many languages and format comments. + +|30.1| Compiling +|30.2| Indenting C files +|30.3| Automatic indenting +|30.4| Other indenting +|30.5| Tabs and spaces +|30.6| Formatting comments + + Next chapter: |usr_31.txt| Exploiting the GUI + Previous chapter: |usr_29.txt| Moving through programs +Table of contents: |usr_toc.txt| + +============================================================================== +*30.1* Compiling + +Vim has a set of so called "quickfix" commands. They enable you to compile a +program from within Vim and then go through the errors generated and fix them +(hopefully). You can then recompile and fix any new errors that are found +until finally your program compiles without any error. + +The following command runs the program "make" (supplying it with any argument +you give) and captures the results: > + + :make {arguments} + +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: + + :!make | &tee /tmp/vim215953.err ~ + gcc -g -Wall -o prog main.c sub.c ~ + main.c: In function 'main': ~ + main.c:6: too many arguments to function 'do_sub' ~ + main.c: At top level: ~ + main.c:10: parse error before '}' ~ + make: *** [prog] Error 1 ~ + + 2 returned ~ + "main.c" 11L, 111C ~ + (3 of 6): too many arguments to function 'do_sub' ~ + Press ENTER or type command to continue ~ + +From this you can see that you have errors in the file "main.c". When you +press <Enter>, Vim displays the file "main.c", with the cursor positioned on +line 6, the first line with an error. You did not need to specify the file or +the line number, Vim knew where to go by looking in the error messages. + + +---------------------------------------------------+ + |int main() | + |{ | + | int i=3; | + cursor -> | do_sub("foo"); | + | ++i; | + | return (0); | + |} | + |} | + | ~ | + |(3 of 12): too many arguments to function 'do_sub' | + +---------------------------------------------------+ + +The following command goes to where the next error occurs: > + + :cnext + +Vim jumps to line 10, the last line in the file, where there is an extra '}'. + When there is not enough room, Vim will shorten the error message. To see +the whole message use: > + + :cc + +You can get an overview of all the error messages with the ":clist" command. +The output looks like this: > + + :clist +< 3 main.c: 6:too many arguments to function 'do_sub' ~ + 5 main.c: 10:parse error before '}' ~ + +Only the lines where Vim recognized a file name and line number are listed +here. It assumes those are the interesting lines and the rest is just boring +messages. However, sometimes unrecognized lines do contain something you want +to see. Output from the linker, for example, about an undefined function. +To see all the messages add a "!" to the command: > + + :clist! +< 1 gcc -g -Wall -o prog main.c sub.c ~ + 2 main.c: In function 'main': ~ + 3 main.c:6: too many arguments to function 'do_sub' ~ + 4 main.c: At top level: ~ + 5 main.c:10: parse error before '}' ~ + 6 make: *** [prog] Error 1 ~ + +Vim will highlight the current error. To go back to the previous error, use: +> + :cprevious + +Other commands to move around in the error list: + + :cfirst to first error + :clast to last error + :cc 3 to error nr 3 + + +USING ANOTHER COMPILER + +The name of the program to run when the ":make" command is executed is defined +by the 'makeprg' option. Usually this is set to "make", but Visual C++ users +should set this to "nmake" by executing the following command: > + + :set makeprg=nmake + +You can also include arguments in this option. Special characters need to +be escaped with a backslash. Example: > + + :set makeprg=nmake\ -f\ project.mak + +You can include special Vim keywords in the command specification. The % +character expands to the name of the current file. So if you execute the +command: > + :set makeprg=make\ %:S + +When you are editing main.c, then ":make" executes the following command: > + + make main.c + +This is not too useful, so you will refine the command a little and use the :r +(root) modifier: > + + :set makeprg=make\ %:r:S.o + +Now the command executed is as follows: > + + make main.o + +More about these modifiers here: |filename-modifiers|. + + +OLD ERROR LISTS + +Suppose you ":make" a program. There is a warning message in one file and an +error message in another. You fix the error and use ":make" again to check if +it was really fixed. Now you want to look at the warning message. It doesn't +show up in the last error list, since the file with the warning wasn't +compiled again. You can go back to the previous error list with: > + + :colder + +Then use ":clist" and ":cc {nr}" to jump to the place with the warning. + To go forward to the next error list: > + + :cnewer + +Vim remembers ten error lists. + + +SWITCHING COMPILERS + +You have to tell Vim what format the error messages are that your compiler +produces. This is done with the 'errorformat' option. The syntax of this +option is quite complicated and it can be made to fit almost any compiler. +You can find the explanation here: |errorformat|. + +You might be using various different compilers. Setting the 'makeprg' option, +and especially the 'errorformat' each time is not easy. Vim offers a simple +method for this. For example, to switch to using the Microsoft Visual C++ +compiler: > + + :compiler msvc + +This will find the Vim script for the "msvc" compiler and set the appropriate +options. + You can write your own compiler files. See |write-compiler-plugin|. + + +OUTPUT REDIRECTION + +The ":make" command redirects the output of the executed program to an error +file. How this works depends on various things, such as the 'shell'. If your +":make" command doesn't capture the output, check the 'makeef' and +'shellpipe' options. The 'shellquote' and 'shellxquote' options might also +matter. + +In case you can't get ":make" to redirect the file for you, an alternative is +to compile the program in another window and redirect the output into a file. +Then have Vim read this file with: > + + :cfile {filename} + +Jumping to errors will work like with the ":make" command. + +============================================================================== +*30.2* Indenting C style text + +A program is much easier to understand when the lines have been properly +indented. Vim offers various ways to make this less work. For C or C style +programs like Java or C++, set the 'cindent' option. Vim knows a lot about C +programs and will try very hard to automatically set the indent for you. Set +the 'shiftwidth' option to the amount of spaces you want for a deeper level. +Four spaces will work fine. One ":set" command will do it: > + + :set cindent shiftwidth=4 + +With this option enabled, when you type something such as "if (x)", the next +line will automatically be indented an additional level. + + if (flag) + Automatic indent ---> do_the_work(); + Automatic unindent <-- if (other_flag) { + Automatic indent ---> do_file(); + keep indent do_some_more(); + Automatic unindent <-- } + +When you type something in curly braces ({}), the text will be indented at the +start and unindented at the end. The unindenting will happen after typing the +'}', since Vim can't guess what you are going to type. + +One side effect of automatic indentation is that it helps you catch errors in +your code early. When you type a } to finish a function, only to find that +the automatic indentation gives it more indent than what you expected, there +is probably a } missing. Use the "%" command to find out which { matches the +} you typed. + A missing ) and ; also cause extra indent. Thus if you get more white +space than you would expect, check the preceding lines. + +When you have code that is badly formatted, or you inserted and deleted lines, +you need to re-indent the lines. The "=" operator does this. The simplest +form is: > + + == + +This indents the current line. Like with all operators, there are three ways +to use it. In Visual mode "=" indents the selected lines. A useful text +object is "a{". This selects the current {} block. Thus, to re-indent the +code block the cursor is in: > + + =a{ + +I you have really badly indented code, you can re-indent the whole file with: +> + gg=G + +However, don't do this in files that have been carefully indented manually. +The automatic indenting does a good job, but in some situations you might want +to overrule it. + + +SETTING INDENT STYLE + +Different people have different styles of indentation. By default Vim does a +pretty good job of indenting in a way that 90% of programmers do. There are +different styles, however; so if you want to, you can customize the +indentation style with the 'cinoptions' option. + By default 'cinoptions' is empty and Vim uses the default style. You can +add various items where you want something different. For example, to make +curly braces be placed like this: + + if (flag) ~ + { ~ + i = 8; ~ + j = 0; ~ + } ~ + +Use this command: > + + :set cinoptions+={2 + +There are many of these items. See |cinoptions-values|. + +============================================================================== +*30.3* Automatic indenting + +You don't want to switch on the 'cindent' option manually every time you edit +a C file. This is how you make it work automatically: > + + :filetype indent on + +Actually, this does a lot more than switching on 'cindent' for C files. First +of all, it enables detecting the type of a file. That's the same as what is +used for syntax highlighting. + When the filetype is known, Vim will search for an indent file for this +type of file. The Vim distribution includes a number of these for various +programming languages. This indent file will then prepare for automatic +indenting specifically for this file. + +If you don't like the automatic indenting, you can switch it off again: > + + :filetype indent off + +If you don't like the indenting for one specific type of file, this is how you +avoid it. Create a file with just this one line: > + + :let b:did_indent = 1 + +Now you need to write this in a file with a specific name: + + {directory}/indent/{filetype}.vim + +The {filetype} is the name of the file type, such as "cpp" or "java". You can +see the exact name that Vim detected with this command: > + + :set filetype + +In this file the output is: + + filetype=help ~ + +Thus you would use "help" for {filetype}. + For the {directory} part you need to use your runtime directory. Look at +the output of this command: > + + set runtimepath + +Now use the first item, the name before the first comma. Thus if the output +looks like this: + + runtimepath=~/.vim,/usr/local/share/vim/vim60/runtime,~/.vim/after ~ + +You use "~/.vim" for {directory}. Then the resulting file name is: + + ~/.vim/indent/help.vim ~ + +Instead of switching the indenting off, you could write your own indent file. +How to do that is explained here: |indent-expression|. + +============================================================================== +*30.4* Other indenting + +The simplest form of automatic indenting is with the 'autoindent' option. +It uses the indent from the previous line. A bit smarter is the 'smartindent' +option. This is useful for languages where no indent file is available. +'smartindent' is not as smart as 'cindent', but smarter than 'autoindent'. + With 'smartindent' set, an extra level of indentation is added for each { +and removed for each }. An extra level of indentation will also be added for +any of the words in the 'cinwords' option. Lines that begin with # are +treated specially: all indentation is removed. This is done so that +preprocessor directives will all start in column 1. The indentation is +restored for the next line. + + +CORRECTING INDENTS + +When you are using 'autoindent' or 'smartindent' to get the indent of the +previous line, there will be many times when you need to add or remove one +'shiftwidth' worth of indent. A quick way to do this is using the CTRL-D and +CTRL-T commands in Insert mode. + For example, you are typing a shell script that is supposed to look like +this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +Start off by setting these options: > + + :set autoindent shiftwidth=3 + +You start by typing the first line, <Enter> and the start of the second line: + + if test -n a; then ~ + echo ~ + +Now you see that you need an extra indent. Type CTRL-T. The result: + + if test -n a; then ~ + echo ~ + +The CTRL-T command, in Insert mode, adds one 'shiftwidth' to the indent, no +matter where in the line you are. + You continue typing the second line, <Enter> and the third line. This time +the indent is OK. Then <Enter> and the last line. Now you have this: + + if test -n a; then ~ + echo a ~ + echo "-------" ~ + fi ~ + +To remove the superfluous indent in the last line press CTRL-D. This deletes +one 'shiftwidth' worth of indent, no matter where you are in the line. + When you are in Normal mode, you can use the ">>" and "<<" commands to +shift lines. ">" and "<" are operators, thus you have the usual three ways to +specify the lines you want to indent. A useful combination is: > + + >i{ + +This adds one indent to the current block of lines, inside {}. The { and } +lines themselves are left unmodified. ">a{" includes them. In this example +the cursor is on "printf": + + original text after ">i{" after ">a{" + + if (flag) if (flag) if (flag) ~ + { { { ~ + printf("yes"); printf("yes"); printf("yes"); ~ + flag = 0; flag = 0; flag = 0; ~ + } } } ~ + +============================================================================== +*30.5* Tabs and spaces + +'tabstop' is set to eight by default. Although you can change it, you quickly +run into trouble later. Other programs won't know what tabstop value you +used. They probably use the default value of eight, and your text suddenly +looks very different. Also, most printers use a fixed tabstop value of eight. +Thus it's best to keep 'tabstop' alone. (If you edit a file which was written +with a different tabstop setting, see |25.3| for how to fix that.) + For indenting lines in a program, using a multiple of eight spaces makes +you quickly run into the right border of the window. Using a single space +doesn't provide enough visual difference. Many people prefer to use four +spaces, a good compromise. + Since a <Tab> is eight spaces and you want to use an indent of four spaces, +you can't use a <Tab> character to make your indent. There are two ways to +handle this: + +1. Use a mix of <Tab> and space characters. Since a <Tab> takes the place of + eight spaces, you have fewer characters in your file. Inserting a <Tab> + is quicker than eight spaces. Backspacing works faster as well. + +2. Use spaces only. This avoids the trouble with programs that use a + different tabstop value. + +Fortunately, Vim supports both methods quite well. + + +SPACES AND TABS + +If you are using a combination of tabs and spaces, you just edit normally. +The Vim defaults do a fine job of handling things. + You can make life a little easier by setting the 'softtabstop' option. +This option tells Vim to make the <Tab> key look and feel as if tabs were set +at the value of 'softtabstop', but actually use a combination of tabs and +spaces. + After you execute the following command, every time you press the <Tab> key +the cursor moves to the next 4-column boundary: > + + :set softtabstop=4 + +When you start in the first column and press <Tab>, you get 4 spaces inserted +in your text. The second time, Vim takes out the 4 spaces and puts in a <Tab> +(thus taking you to column 8). Thus Vim uses as many <Tab>s as possible, and +then fills up with spaces. + When backspacing it works the other way around. A <BS> will always delete +the amount specified with 'softtabstop'. Then <Tab>s are used as many as +possible and spaces to fill the gap. + The following shows what happens pressing <Tab> a few times, and then using +<BS>. A "." stands for a space and "------->" for a <Tab>. + + type result ~ + <Tab> .... + <Tab><Tab> -------> + <Tab><Tab><Tab> ------->.... + <Tab><Tab><Tab><BS> -------> + <Tab><Tab><Tab><BS><BS> .... + +An alternative is to use the 'smarttab' option. When it's set, Vim uses +'shiftwidth' for a <Tab> typed in the indent of a line, and a real <Tab> when +typed after the first non-blank character. However, <BS> doesn't work like +with 'softtabstop'. + + +JUST SPACES + +If you want absolutely no tabs in your file, you can set the 'expandtab' +option: > + + :set expandtab + +When this option is set, the <Tab> key inserts a series of spaces. Thus you +get the same amount of white space as if a <Tab> character was inserted, but +there isn't a real <Tab> character in your file. + The backspace key will delete each space by itself. Thus after typing one +<Tab> you have to press the <BS> key up to eight times to undo it. If you are +in the indent, pressing CTRL-D will be a lot quicker. + + +CHANGING TABS IN SPACES (AND BACK) + +Setting 'expandtab' does not affect any existing tabs. In other words, any +tabs in the document remain tabs. If you want to convert tabs to spaces, use +the ":retab" command. Use these commands: > + + :set expandtab + :%retab + +Now Vim will have changed all indents to use spaces instead of tabs. However, +all tabs that come after a non-blank character are kept. If you want these to +be converted as well, add a !: > + + :%retab! + +This is a little bit dangerous, because it can also change tabs inside a +string. To check if these exist, you could use this: > + + /"[^"\t]*\t[^"]*" + +It's recommended not to use hard tabs inside a string. Replace them with +"\t" to avoid trouble. + +The other way around works just as well: > + + :set noexpandtab + :%retab! + +============================================================================== +*30.6* Formatting comments + +One of the great things about Vim is that it understands comments. You can +ask Vim to format a comment and it will do the right thing. + Suppose, for example, that you have the following comment: + + /* ~ + * This is a test ~ + * of the text formatting. ~ + */ ~ + +You then ask Vim to format it by positioning the cursor at the start of the +comment and type: > + + gq]/ + +"gq" is the operator to format text. "]/" is the motion that takes you to the +end of a comment. The result is: + + /* ~ + * This is a test of the text formatting. ~ + */ ~ + +Notice that Vim properly handled the beginning of each line. + An alternative is to select the text that is to be formatted in Visual mode +and type "gq". + +To add a new line to the comment, position the cursor on the middle line and +press "o". The result looks like this: + + /* ~ + * This is a test of the text formatting. ~ + * ~ + */ ~ + +Vim has automatically inserted a star and a space for you. Now you can type +the comment text. When it gets longer than 'textwidth', Vim will break the +line. Again, the star is inserted automatically: + + /* ~ + * This is a test of the text formatting. ~ + * Typing a lot of text here will make Vim ~ + * break ~ + */ ~ + +For this to work some flags must be present in 'formatoptions': + + r insert the star when typing <Enter> in Insert mode + o insert the star when using "o" or "O" in Normal mode + c break comment text according to 'textwidth' + +See |fo-table| for more flags. + + +DEFINING A COMMENT + +The 'comments' option defines what a comment looks like. Vim distinguishes +between a single-line comment and a comment that has a different start, end +and middle part. + Many single-line comments start with a specific character. In C++ // is +used, in Makefiles #, in Vim scripts ". For example, to make Vim understand +C++ comments: > + + :set comments=:// + +The colon separates the flags of an item from the text by which the comment is +recognized. The general form of an item in 'comments' is: + + {flags}:{text} + +The {flags} part can be empty, as in this case. + Several of these items can be concatenated, separated by commas. This +allows recognizing different types of comments at the same time. For example, +let's edit an e-mail message. When replying, the text that others wrote is +preceded with ">" and "!" characters. This command would work: > + + :set comments=n:>,n:! + +There are two items, one for comments starting with ">" and one for comments +that start with "!". Both use the flag "n". This means that these comments +nest. Thus a line starting with ">" may have another comment after the ">". +This allows formatting a message like this: + + > ! Did you see that site? ~ + > ! It looks really great. ~ + > I don't like it. The ~ + > colors are terrible. ~ + What is the URL of that ~ + site? ~ + +Try setting 'textwidth' to a different value, e.g., 80, and format the text by +Visually selecting it and typing "gq". The result is: + + > ! Did you see that site? It looks really great. ~ + > I don't like it. The colors are terrible. ~ + What is the URL of that site? ~ + +You will notice that Vim did not move text from one type of comment to +another. The "I" in the second line would have fit at the end of the first +line, but since that line starts with "> !" and the second line with ">", Vim +knows that this is a different kind of comment. + + +A THREE PART COMMENT + +A C comment starts with "/*", has "*" in the middle and "*/" at the end. The +entry in 'comments' for this looks like this: > + + :set comments=s1:/*,mb:*,ex:*/ + +The start is defined with "s1:/*". The "s" indicates the start of a +three-piece comment. The colon separates the flags from the text by which the +comment is recognized: "/*". There is one flag: "1". This tells Vim that the +middle part has an offset of one space. + The middle part "mb:*" starts with "m", which indicates it is a middle +part. The "b" flag means that a blank must follow the text. Otherwise Vim +would consider text like "*pointer" also to be the middle of a comment. + The end part "ex:*/" has the "e" for identification. The "x" flag has a +special meaning. It means that after Vim automatically inserted a star, +typing / will remove the extra space. + +For more details see |format-comments|. + +============================================================================== + +Next chapter: |usr_31.txt| Exploiting the GUI + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt new file mode 100644 index 0000000..5e4a261 --- /dev/null +++ b/runtime/doc/usr_31.txt @@ -0,0 +1,272 @@ +*usr_31.txt* For Vim version 9.1. Last change: 2020 Jul 28 + + VIM USER MANUAL - by Bram Moolenaar + + Exploiting the GUI + + +Vim works well in a terminal, but the GUI has a few extra items. A file +browser can be used for commands that use a file. A dialog to make a choice +between alternatives. Use keyboard shortcuts to access menu items quickly. + +|31.1| The file browser +|31.2| Confirmation +|31.3| Menu shortcuts +|31.4| Vim window position and size +|31.5| Various + + Next chapter: |usr_32.txt| The undo tree + Previous chapter: |usr_30.txt| Editing programs +Table of contents: |usr_toc.txt| + +============================================================================== +*31.1* The file browser + +When using the File/Open... menu you get a file browser. This makes it easier +to find the file you want to edit. But what if you want to split a window to +edit another file? There is no menu entry for this. You could first use +Window/Split and then File/Open..., but that's more work. + Since you are typing most commands in Vim, opening the file browser with a +typed command is possible as well. To make the split command use the file +browser, prepend "browse": > + + :browse split + +Select a file and then the ":split" command will be executed with it. If you +cancel the file dialog nothing happens, the window isn't split. + You can also specify a file name argument. This is used to tell the file +browser where to start. Example: > + + :browse split /etc + +The file browser will pop up, starting in the directory "/etc". + +The ":browse" command can be prepended to just about any command that opens a +file. + If no directory is specified, Vim will decide where to start the file +browser. By default it uses the same directory as the last time. Thus when +you used ":browse split" and selected a file in "/usr/local/share", the next +time you use a ":browse" it will start in "/usr/local/share" again. + This can be changed with the 'browsedir' option. It can have one of three +values: + + last Use the last directory browsed (default) + buffer Use the same directory as the current buffer + current use the current directory + +For example, when you are in the directory "/usr", editing the file +"/usr/local/share/readme", then the command: > + + :set browsedir=buffer + :browse edit + +Will start the browser in "/usr/local/share". Alternatively: > + + :set browsedir=current + :browse edit + +Will start the browser in "/usr". + + Note: + To avoid using the mouse, most file browsers offer using key presses + to navigate. Since this is different for every system, it is not + explained here. Vim uses a standard browser when possible, your + system documentation should contain an explanation on the keyboard + shortcuts somewhere. + +When you are not using the GUI version, you could use the file explorer window +to select files like in a file browser. However, this doesn't work for the +":browse" command. See |netrw-browse|. + +============================================================================== +*31.2* Confirmation + +Vim protects you from accidentally overwriting a file and other ways to lose +changes. If you do something that might be a bad thing to do, Vim produces an +error message and suggests appending ! if you really want to do it. + To avoid retyping the command with the !, you can make Vim give you a +dialog. You can then press "OK" or "Cancel" to tell Vim what you want. + For example, you are editing a file and made changes to it. You start +editing another file with: > + + :confirm edit foo.txt + +Vim will pop up a dialog that looks something like this: + + +-----------------------------------+ + | | + | ? Save changes to "bar.txt"? | + | | + | YES NO CANCEL | + +-----------------------------------+ + +Now make your choice. If you do want to save the changes, select "YES". If +you want to lose the changes for ever: "NO". If you forgot what you were +doing and want to check what really changed use "CANCEL". You will be back in +the same file, with the changes still there. + +Just like ":browse", the ":confirm" command can be prepended to most commands +that edit another file. They can also be combined: > + + :confirm browse edit + +This will produce a dialog when the current buffer was changed. Then it will +pop up a file browser to select the file to edit. + + Note: + In the dialog you can use the keyboard to select the choice. + Typically the <Tab> key and the cursor keys change the choice. + Pressing <Enter> selects the choice. This depends on the system + though. + +When you are not using the GUI, the ":confirm" command works as well. Instead +of popping up a dialog, Vim will print the message at the bottom of the Vim +window and ask you to press a key to make a choice. > + + :confirm edit main.c +< Save changes to "Untitled"? ~ + [Y]es, (N)o, (C)ancel: ~ + +You can now press the single key for the choice. You don't have to press +<Enter>, unlike other typing on the command line. + +============================================================================== +*31.3* Menu shortcuts + +The keyboard is used for all Vim commands. The menus provide a simple way to +select commands, without knowing what they are called. But you have to move +your hand from the keyboard and grab the mouse. + Menus can often be selected with keys as well. This depends on your +system, but most often it works this way. Use the <Alt> key in combination +with the underlined letter of a menu. For example, <A-w> (<Alt> and w) pops +up the Window menu. + In the Window menu, the "split" item has the p underlined. To select it, +let go of the <Alt> key and press p. + +After the first selection of a menu with the <Alt> key, you can use the cursor +keys to move through the menus. <Right> selects a submenu and <left> closes +it. <Esc> also closes a menu. <Enter> selects a menu item. + +There is a conflict between using the <Alt> key to select menu items, and +using <Alt> key combinations for mappings. The 'winaltkeys' option tells Vim +what it should do with the <Alt> key. + The default value "menu" is the smart choice: If the key combination is a +menu shortcut it can't be mapped. All other keys are available for mapping. + The value "no" doesn't use any <Alt> keys for the menus. Thus you must use +the mouse for the menus, and all <Alt> keys can be mapped. + The value "yes" means that Vim will use any <Alt> keys for the menus. Some +<Alt> key combinations may also do other things than selecting a menu. + +============================================================================== +*31.4* Vim window position and size + +To see the current Vim window position on the screen use: > + + :winpos + +This will only work in the GUI. The output may look like this: + + Window position: X 272, Y 103 ~ + +The position is given in screen pixels. Now you can use the numbers to move +Vim somewhere else. For example, to move it to the left a hundred pixels: > + + :winpos 172 103 +< + Note: + There may be a small offset between the reported position and where + the window moves. This is because of the border around the window. + This is added by the window manager. + +You can use this command in your startup script to position the window at a +specific position. + +The size of the Vim window is computed in characters. Thus this depends on +the size of the font being used. You can see the current size with this +command: > + + :set lines columns + +To change the size set the 'lines' and/or 'columns' options to a new value: > + + :set lines=50 + :set columns=80 + +Obtaining the size works in a terminal just like in the GUI. Setting the size +is not possible in most terminals. + +You can start the X-Windows version of gvim with an argument to specify the +size and position of the window: > + + gvim -geometry {width}x{height}+{x-offset}+{y-offset} + +{width} and {height} are in characters, {x-offset} and {y-offset} are in +pixels. Example: > + + gvim -geometry 80x25+100+300 + +============================================================================== +*31.5* Various + +You can use gvim to edit an e-mail message. In your e-mail program you must +select gvim to be the editor for messages. When you try that, you will +see that it doesn't work: The mail program thinks that editing is finished, +while gvim is still running! + What happens is that gvim disconnects from the shell it was started in. +That is fine when you start gvim in a terminal, so that you can do other work +in that terminal. But when you really want to wait for gvim to finish, you +must prevent it from disconnecting. The "-f" argument does this: > + + gvim -f file.txt + +The "-f" stands for foreground. Now Vim will block the shell it was started +in until you finish editing and exit. + + +DELAYED START OF THE GUI + +On Unix it's possible to first start Vim in a terminal. That's useful if you +do various tasks in the same shell. If you are editing a file and decide you +want to use the GUI after all, you can start it with: > + + :gui + +Vim will open the GUI window and no longer use the terminal. You can continue +using the terminal for something else. The "-f" argument is used here to run +the GUI in the foreground. You can also use ":gui -f". + + +THE GVIM STARTUP FILE + +When gvim starts, it reads the gvimrc file. That's similar to the vimrc file +used when starting Vim. The gvimrc file can be used for settings and commands +that are only to be used when the GUI is going to be started. For example, +you can set the 'lines' option to set a different window size: > + + :set lines=55 + +You don't want to do this in a terminal, since its size is fixed (except for +an xterm that supports resizing). + The gvimrc file is searched for in the same locations as the vimrc file. +Normally its name is "~/.gvimrc" for Unix and "$VIM/_gvimrc" for MS-Windows. +The $MYGVIMRC environment variable is set to it, thus you can use this command +to edit the file, if you have one: > + + :edit $MYGVIMRC +< + If for some reason you don't want to use the normal gvimrc file, you can +specify another one with the "-U" argument: > + + gvim -U thisrc ... + +That allows starting gvim for different kinds of editing. You could set +another font size, for example. + To completely skip reading a gvimrc file: > + + gvim -U NONE ... + +============================================================================== + +Next chapter: |usr_32.txt| The undo tree + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_32.txt b/runtime/doc/usr_32.txt new file mode 100644 index 0000000..6ab8962 --- /dev/null +++ b/runtime/doc/usr_32.txt @@ -0,0 +1,180 @@ +*usr_32.txt* For Vim version 9.1. Last change: 2010 Jul 20 + + VIM USER MANUAL - by Bram Moolenaar + + The undo tree + + +Vim provides multi-level undo. If you undo a few changes and then make a new +change you create a branch in the undo tree. This text is about moving +through the branches. + +|32.1| Undo up to a file write +|32.2| Numbering changes +|32.3| Jumping around the tree +|32.4| Time travelling + + Next chapter: |usr_40.txt| Make new commands + Previous chapter: |usr_31.txt| Exploiting the GUI +Table of contents: |usr_toc.txt| + +============================================================================== +*32.1* Undo up to a file write + +Sometimes you make several changes, and then discover you want to go back to +when you have last written the file. You can do that with this command: > + + :earlier 1f + +The "f" stands for "file" here. + +You can repeat this command to go further back in the past. Or use a count +different from 1 to go back faster. + +If you go back too far, go forward again with: > + + :later 1f + +Note that these commands really work in time sequence. This matters if you +made changes after undoing some changes. It's explained in the next section. + +Also note that we are talking about text writes here. For writing the undo +information in a file see |undo-persistence|. + +============================================================================== +*32.2* Numbering changes + +In section |02.5| we only discussed one line of undo/redo. But it is also +possible to branch off. This happens when you undo a few changes and then +make a new change. The new changes become a branch in the undo tree. + +Let's start with the text "one". The first change to make is to append +" too". And then move to the first 'o' and change it into 'w'. We then have +two changes, numbered 1 and 2, and three states of the text: + + one ~ + | + change 1 + | + one too ~ + | + change 2 + | + one two ~ + +If we now undo one change, back to "one too", and change "one" to "me" we +create a branch in the undo tree: + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + +You can now use the |u| command to undo. If you do this twice you get to +"one". Use |CTRL-R| to redo, and you will go to "one too". One more |CTRL-R| +takes you to "me too". Thus undo and redo go up and down in the tree, using +the branch that was last used. + +What matters here is the order in which the changes are made. Undo and redo +are not considered changes in this context. After each change you have a new +state of the text. + +Note that only the changes are numbered, the text shown in the tree above has +no identifier. They are mostly referred to by the number of the change above +it. But sometimes by the number of one of the changes below it, especially +when moving up in the tree, so that you know which change was just undone. + +============================================================================== +*32.3* Jumping around the tree + +So how do you get to "one two" now? You can use this command: > + + :undo 2 + +The text is now "one two", you are below change 2. You can use the |:undo| +command to jump to below any change in the tree. + +Now make another change: change "one" to "not": + + one ~ + | + change 1 + | + one too ~ + / \ + change 2 change 3 + | | + one two me too ~ + | + change 4 + | + not two ~ + +Now you change your mind and want to go back to "me too". Use the |g-| +command. This moves back in time. Thus it doesn't walk the tree upwards or +downwards, but goes to the change made before. + +You can repeat |g-| and you will see the text change: + me too ~ + one two ~ + one too ~ + one ~ + +Use |g+| to move forward in time: + one ~ + one too ~ + one two ~ + me too ~ + not two ~ + +Using |:undo| is useful if you know what change you want to jump to. |g-| and +|g+| are useful if you don't know exactly what the change number is. + +You can type a count before |g-| and |g+| to repeat them. + +============================================================================== +*32.4* Time travelling + +When you have been working on text for a while the tree grows to become big. +Then you may want to go to the text of some minutes ago. + +To see what branches there are in the undo tree use this command: > + + :undolist +< number changes time ~ + 3 2 16 seconds ago + 4 3 5 seconds ago + +Here you can see the number of the leaves in each branch and when the change +was made. Assuming we are below change 4, at "not two", you can go back ten +seconds with this command: > + + :earlier 10s + +Depending on how much time you took for the changes you end up at a certain +position in the tree. The |:earlier| command argument can be "m" for minutes, +"h" for hours and "d" for days. To go all the way back use a big number: > + + :earlier 100d + +To travel forward in time again use the |:later| command: > + + :later 1m + +The arguments are "s", "m" and "h", just like with |:earlier|. + +If you want even more details, or want to manipulate the information, you can +use the |undotree()| function. To see what it returns: > + + :echo undotree() + +============================================================================== + +Next chapter: |usr_40.txt| Make new commands + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt new file mode 100644 index 0000000..b8dfae6 --- /dev/null +++ b/runtime/doc/usr_40.txt @@ -0,0 +1,668 @@ +*usr_40.txt* For Vim version 9.1. Last change: 2022 Jun 23 + + VIM USER MANUAL - by Bram Moolenaar + + Make new commands + + +Vim is an extensible editor. You can take a sequence of commands you use +often and turn it into a new command. Or redefine an existing command. +Autocommands make it possible to execute commands automatically. + +|40.1| Key mapping +|40.2| Defining command-line commands +|40.3| Autocommands + + Next chapter: |usr_41.txt| Write a Vim script + Previous chapter: |usr_32.txt| The undo tree +Table of contents: |usr_toc.txt| + +============================================================================== +*40.1* Key mapping + +A simple mapping was explained in section |05.4|. The principle is that one +sequence of key strokes is translated into another sequence of key strokes. +This is a simple, yet powerful mechanism. + The simplest form is that one key is mapped to a sequence of keys. Since +the function keys, except <F1>, have no predefined meaning in Vim, these are +good choices to map. Example: > + + :map <F2> GoDate: <Esc>:read !date<CR>kJ + +This shows how three modes are used. After going to the last line with "G", +the "o" command opens a new line and starts Insert mode. The text "Date: " is +inserted and <Esc> takes you out of insert mode. + Notice the use of special keys inside <>. This is called angle bracket +notation. You type these as separate characters, not by pressing the key +itself. This makes the mappings better readable and you can copy and paste +the text without problems. + The ":" character takes Vim to the command line. The ":read !date" command +reads the output from the "date" command and appends it below the current +line. The <CR> is required to execute the ":read" command. + At this point of execution the text looks like this: + + Date: ~ + Fri Jun 15 12:54:34 CEST 2001 ~ + +Now "kJ" moves the cursor up and joins the lines together. + To decide which key or keys you use for mapping, see |map-which-keys|. + + +MAPPING AND MODES + +The ":map" command defines remapping for keys in Normal mode. You can also +define mappings for other modes. For example, ":imap" applies to Insert mode. +You can use it to insert a date below the cursor: > + + :imap <F2> <CR>Date: <Esc>:read !date<CR>kJ + +It looks a lot like the mapping for <F2> in Normal mode, only the start is +different. The <F2> mapping for Normal mode is still there. Thus you can map +the same key differently for each mode. + Notice that, although this mapping starts in Insert mode, it ends in Normal +mode. If you want it to continue in Insert mode, append an "a" to the +mapping. + +Here is an overview of map commands and in which mode they work: + + :map Normal, Visual and Operator-pending + :vmap Visual + :nmap Normal + :omap Operator-pending + :map! Insert and Command-line + :imap Insert + :cmap Command-line + +Operator-pending mode is when you typed an operator character, such as "d" or +"y", and you are expected to type the motion command or a text object. Thus +when you type "dw", the "w" is entered in operator-pending mode. + +Suppose that you want to define <F7> so that the command d<F7> deletes a C +program block (text enclosed in curly braces, {}). Similarly y<F7> would yank +the program block into the unnamed register. Therefore, what you need to do +is to define <F7> to select the current program block. You can do this with +the following command: > + + :omap <F7> a{ + +This causes <F7> to perform a select block "a{" in operator-pending mode, just +like you typed it. This mapping is useful if typing a { on your keyboard is a +bit difficult. + + +LISTING MAPPINGS + +To see the currently defined mappings, use ":map" without arguments. Or one +of the variants that include the mode in which they work. The output could +look like this: + + _g :call MyGrep(1)<CR> ~ + v <F2> :s/^/> /<CR>:noh<CR>`` ~ + n <F2> :.,$s/^/> /<CR>:noh<CR>`` ~ + <xHome> <Home> + <xEnd> <End> + + +The first column of the list shows in which mode the mapping is effective. +This is "n" for Normal mode, "i" for Insert mode, etc. A blank is used for a +mapping defined with ":map", thus effective in both Normal and Visual mode. + One useful purpose of listing the mapping is to check if special keys in <> +form have been recognized (this only works when color is supported). For +example, when <Esc> is displayed in color, it stands for the escape character. +When it has the same color as the other text, it is five characters. + + +REMAPPING + +The result of a mapping is inspected for other mappings in it. For example, +the mappings for <F2> above could be shortened to: > + + :map <F2> G<F3> + :imap <F2> <Esc><F3> + :map <F3> oDate: <Esc>:read !date<CR>kJ + +For Normal mode <F2> is mapped to go to the last line, and then behave like +<F3> was pressed. In Insert mode <F2> stops Insert mode with <Esc> and then +also uses <F3>. Then <F3> is mapped to do the actual work. + +Suppose you hardly ever use Ex mode, and want to use the "Q" command to format +text (this was so in old versions of Vim). This mapping will do it: > + + :map Q gq + +But, in rare cases you need to use Ex mode anyway. Let's map "gQ" to Q, so +that you can still go to Ex mode: > + + :map gQ Q + +What happens now is that when you type "gQ" it is mapped to "Q". So far so +good. But then "Q" is mapped to "gq", thus typing "gQ" results in "gq", and +you don't get to Ex mode at all. + To avoid keys to be mapped again, use the ":noremap" command: > + + :noremap gQ Q + +Now Vim knows that the "Q" is not to be inspected for mappings that apply to +it. There is a similar command for every mode: + + :noremap Normal, Visual and Operator-pending + :vnoremap Visual + :nnoremap Normal + :onoremap Operator-pending + :noremap! Insert and Command-line + :inoremap Insert + :cnoremap Command-line + + +RECURSIVE MAPPING + +When a mapping triggers itself, it will run forever. This can be used to +repeat an action an unlimited number of times. + For example, you have a list of files that contain a version number in the +first line. You edit these files with "vim *.txt". You are now editing the +first file. Define this mapping: > + + :map ,, :s/5.1/5.2/<CR>:wnext<CR>,, + +Now you type ",,". This triggers the mapping. It replaces "5.1" with "5.2" +in the first line. Then it does a ":wnext" to write the file and edit the +next one. The mapping ends in ",,". This triggers the same mapping again, +thus doing the substitution, etc. + This continues until there is an error. In this case it could be a file +where the substitute command doesn't find a match for "5.1". You can then +make a change to insert "5.1" and continue by typing ",," again. Or the +":wnext" fails, because you are in the last file in the list. + When a mapping runs into an error halfway, the rest of the mapping is +discarded. CTRL-C interrupts the mapping (CTRL-Break on MS-Windows). + + +DELETE A MAPPING + +To remove a mapping use the ":unmap" command. Again, the mode the unmapping +applies to depends on the command used: + + :unmap Normal, Visual and Operator-pending + :vunmap Visual + :nunmap Normal + :ounmap Operator-pending + :unmap! Insert and Command-line + :iunmap Insert + :cunmap Command-line + +There is a trick to define a mapping that works in Normal and Operator-pending +mode, but not in Visual mode. First define it for all three modes, then +delete it for Visual mode: > + + :map <C-A> /---><CR> + :vunmap <C-A> + +Notice that the five characters "<C-A>" stand for the single key CTRL-A. + +To remove all mappings use the |:mapclear| command. You can guess the +variations for different modes by now. Be careful with this command, it can't +be undone. + + +SPECIAL CHARACTERS + +The ":map" command can be followed by another command. A | character +separates the two commands. This also means that a | character can't be used +inside a map command. To include one, use <Bar> (five characters). Example: +> + :map <F8> :write <Bar> !checkin %:S<CR> + +The same problem applies to the ":unmap" command, with the addition that you +have to watch out for trailing white space. These two commands are different: +> + :unmap a | unmap b + :unmap a| unmap b + +The first command tries to unmap "a ", with a trailing space. + +When using a space inside a mapping, use <Space> (seven characters): > + + :map <Space> W + +This makes the spacebar move a blank-separated word forward. + +It is not possible to put a comment directly after a mapping, because the " +character is considered to be part of the mapping. You can use |", this +starts a new, empty command with a comment. Example: > + + :map <Space> W| " Use spacebar to move forward a word + + +MAPPINGS AND ABBREVIATIONS + +Abbreviations are a lot like Insert mode mappings. The arguments are handled +in the same way. The main difference is the way they are triggered. An +abbreviation is triggered by typing a non-word character after the word. A +mapping is triggered when typing the last character. + Another difference is that the characters you type for an abbreviation are +inserted in the text while you type them. When the abbreviation is triggered +these characters are deleted and replaced by what the abbreviation produces. +When typing the characters for a mapping, nothing is inserted until you type +the last character that triggers it. If the 'showcmd' option is set, the +typed characters are displayed in the last line of the Vim window. + An exception is when a mapping is ambiguous. Suppose you have done two +mappings: > + + :imap aa foo + :imap aaa bar + +Now, when you type "aa", Vim doesn't know if it should apply the first or the +second mapping. It waits for another character to be typed. If it is an "a", +the second mapping is applied and results in "bar". If it is a space, for +example, the first mapping is applied, resulting in "foo", and then the space +is inserted. + + +ADDITIONALLY... + +The <script> keyword can be used to make a mapping local to a script. See +|:map-<script>|. + +The <buffer> keyword can be used to make a mapping local to a specific buffer. +See |:map-<buffer>| + +The <unique> keyword can be used to make defining a new mapping fail when it +already exists. Otherwise a new mapping simply overwrites the old one. See +|:map-<unique>|. + +To make a key do nothing, map it to <Nop> (five characters). This will make +the <F7> key do nothing at all: > + + :map <F7> <Nop>| map! <F7> <Nop> + +There must be no space after <Nop>. + +============================================================================== +*40.2* Defining command-line commands + +The Vim editor enables you to define your own commands. You execute these +commands just like any other Command-line mode command. + To define a command, use the ":command" command, as follows: > + + :command DeleteFirst 1delete + +Now when you execute the command ":DeleteFirst" Vim executes ":1delete", which +deletes the first line. + + Note: + User-defined commands must start with a capital letter. You cannot + use ":X", ":Next" and ":Print". The underscore cannot be used! You + can use digits, but this is discouraged. + +To list the user-defined commands, execute the following command: > + + :command + +Just like with the builtin commands, the user defined commands can be +abbreviated. You need to type just enough to distinguish the command from +another. Command line completion can be used to get the full name. + + +NUMBER OF ARGUMENTS + +User-defined commands can take a series of arguments. The number of arguments +must be specified by the -nargs option. For instance, the example +:DeleteFirst command takes no arguments, so you could have defined it as +follows: > + + :command -nargs=0 DeleteFirst 1delete + +However, because zero arguments is the default, you do not need to add +"-nargs=0". The other values of -nargs are as follows: + + -nargs=0 No arguments + -nargs=1 One argument + -nargs=* Any number of arguments + -nargs=? Zero or one argument + -nargs=+ One or more arguments + + +USING THE ARGUMENTS + +Inside the command definition, the arguments are represented by the +<args> keyword. For example: > + + :command -nargs=+ Say :echo "<args>" + +Now when you type > + + :Say Hello World + +Vim echoes "Hello World". However, if you add a double quote, it won't work. +For example: > + + :Say he said "hello" + +To get special characters turned into a string, properly escaped to use as an +expression, use "<q-args>": > + + :command -nargs=+ Say :echo <q-args> + +Now the above ":Say" command will result in this to be executed: > + + :echo "he said \"hello\"" + +The <f-args> keyword contains the same information as the <args> keyword, +except in a format suitable for use as function call arguments. For example: +> + :command -nargs=* DoIt :call AFunction(<f-args>) + :DoIt a b c + +Executes the following command: > + + :call AFunction("a", "b", "c") + + +LINE RANGE + +Some commands take a range as their argument. To tell Vim that you are +defining such a command, you need to specify a -range option. The values for +this option are as follows: + + -range Range is allowed; default is the current line. + -range=% Range is allowed; default is the whole file. + -range={count} Range is allowed; the last number in it is used as a + single number whose default is {count}. + +When a range is specified, the keywords <line1> and <line2> get the values of +the first and last line in the range. For example, the following command +defines the SaveIt command, which writes out the specified range to the file +"save_file": > + + :command -range=% SaveIt :<line1>,<line2>write! save_file + + +OTHER OPTIONS + +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 <count> keyword. + -bang You can use a !. If present, using <bang> will + result in a !. + -register You can specify a register. (The default is + the unnamed register.) + The register specification is available as + <reg> (a.k.a. <register>). + -complete={type} Type of command-line completion used. See + |:command-completion| for the list of possible + values. + -bar The command can be followed by | and another + command, or " and a comment. + -buffer The command is only available for the current + buffer. + +Finally, you have the <lt> keyword. It stands for the character <. Use this +to escape the special meaning of the <> items mentioned. + + +REDEFINING AND DELETING + +To redefine the same command use the ! argument: > + + :command -nargs=+ Say :echo "<args>" + :command! -nargs=+ Say :echo <q-args> + +To delete a user command use ":delcommand". It takes a single argument, which +is the name of the command. Example: > + + :delcommand SaveIt + +To delete all the user commands: > + + :comclear + +Careful, this can't be undone! + +More details about all this in the reference manual: |user-commands|. + +============================================================================== +*40.3* Autocommands + +An autocommand is a command that is executed automatically in response to some +event, such as a file being read or written or a buffer change. Through the +use of autocommands you can train Vim to edit compressed files, for example. +That is used in the |gzip| plugin. + Autocommands are very powerful. Use them with care and they will help you +avoid typing many commands. Use them carelessly and they will cause a lot of +trouble. + +Suppose you want to replace a datestamp on the end of a file every time it is +written. First you define a function: > + + :function DateInsert() + : $delete + : read !date + :endfunction + +You want this function to be called each time, just before a buffer is written +to a file. This will make that happen: > + + :autocmd BufWritePre * call DateInsert() + +"BufWritePre" is the event for which this autocommand is triggered: Just +before (pre) writing a buffer to a file. The "*" is a pattern to match with +the file name. In this case it matches all files. + With this command enabled, when you do a ":write", Vim checks for any +matching BufWritePre autocommands and executes them, and then it +performs the ":write". + The general form of the :autocmd command is as follows: > + + :autocmd [group] {events} {file-pattern} [++nested] {command} + +The [group] name is optional. It is used in managing and calling the commands +(more on this later). The {events} parameter is a list of events (comma +separated) that trigger the command. + {file-pattern} is a filename, usually with wildcards. For example, using +"*.txt" makes the autocommand be used for all files whose name end in ".txt". +The optional [++nested] flag allows for nesting of autocommands (see below), +and finally, {command} is the command to be executed. + +When adding an autocommand the already existing ones remain. To avoid adding +the autocommand several times you should use this form: > + + :augroup updateDate + : autocmd! + : autocmd BufWritePre * call DateInsert() + :augroup END + +This will delete any previously defined autocommand with `:autocmd!` before +defining the new one. Groups are explained later. + + +EVENTS + +One of the most useful events is BufReadPost. It is triggered after a new +file is being edited. It is commonly used to set option values. For example, +you know that "*.gsm" files are GNU assembly language. To get the syntax file +right, define this autocommand: > + + :autocmd BufReadPost *.gsm set filetype=asm + +If Vim is able to detect the type of file, it will set the 'filetype' option +for you. This triggers the Filetype event. Use this to do something when a +certain type of file is edited. For example, to load a list of abbreviations +for text files: > + + :autocmd Filetype text source ~/.vim/abbrevs.vim + +When starting to edit a new file, you could make Vim insert a skeleton: > + + :autocmd BufNewFile *.[ch] 0read ~/skeletons/skel.c + +See |autocmd-events| for a complete list of events. + + +PATTERNS + +The {file-pattern} argument can actually be a comma-separated list of file +patterns. For example: "*.c,*.h" matches files ending in ".c" and ".h". + The usual file wildcards can be used. Here is a summary of the most often +used ones: + + * Match any character any number of times + ? Match any character once + [abc] Match the character a, b or c + . Matches a dot + a{b,c} Matches "ab" and "ac" + +When the pattern includes a slash (/) Vim will compare directory names. +Without the slash only the last part of a file name is used. For example, +"*.txt" matches "/home/biep/readme.txt". The pattern "/home/biep/*" would +also match it. But "home/foo/*.txt" wouldn't. + When including a slash, Vim matches the pattern against both the full path +of the file ("/home/biep/readme.txt") and the relative path (e.g., +"biep/readme.txt"). + + Note: + When working on a system that uses a backslash as file separator, such + as MS-Windows, you still use forward slashes in autocommands. This + makes it easier to write the pattern, since a backslash has a special + meaning. It also makes the autocommands portable. + + +DELETING + +To delete an autocommand, use the same command as what it was defined with, +but leave out the {command} at the end and use a !. Example: > + + :autocmd! FileWritePre * + +This will delete all autocommands for the "FileWritePre" event that use the +"*" pattern. + + +LISTING + +To list all the currently defined autocommands, use this: > + + :autocmd + +The list can be very long, especially when filetype detection is used. To +list only part of the commands, specify the group, event and/or pattern. For +example, to list all BufNewFile autocommands: > + + :autocmd BufNewFile + +To list all autocommands for the pattern "*.c": > + + :autocmd * *.c + +Using "*" for the event will list all the events. To list all autocommands +for the cprograms group: > + + :autocmd cprograms + + +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. + When defining several autocommands for a certain group, use the ":augroup" +command. For example, let's define autocommands for C programs: > + + :augroup cprograms + : autocmd BufReadPost *.c,*.h :set sw=4 sts=4 + : autocmd BufReadPost *.cpp :set sw=3 sts=3 + :augroup END + +This will do the same as: > + + :autocmd cprograms BufReadPost *.c,*.h :set sw=4 sts=4 + :autocmd cprograms BufReadPost *.cpp :set sw=3 sts=3 + +To delete all autocommands in the "cprograms" group: > + + :autocmd! cprograms + + +NESTING + +Generally, commands executed as the result of an autocommand event will not +trigger any new events. If you read a file in response to a FileChangedShell +event, it will not trigger the autocommands that would set the syntax, for +example. To make the events triggered, add the "nested" argument: > + + :autocmd FileChangedShell * ++nested edit + + +EXECUTING AUTOCOMMANDS + +It is possible to trigger an autocommand by pretending an event has occurred. +This is useful to have one autocommand trigger another one. Example: > + + :autocmd BufReadPost *.new execute "doautocmd BufReadPost " . expand("<afile>:r") + +This defines an autocommand that is triggered when a new file has been edited. +The file name must end in ".new". The ":execute" command uses expression +evaluation to form a new command and execute it. When editing the file +"tryout.c.new" the executed command will be: > + + :doautocmd BufReadPost tryout.c + +The expand() function takes the "<afile>" argument, which stands for the file +name the autocommand was executed for, and takes the root of the file name +with ":r". + +":doautocmd" executes on the current buffer. The ":doautoall" command works +like "doautocmd" except it executes on all the buffers. + + +USING NORMAL MODE COMMANDS + +The commands executed by an autocommand are Command-line commands. If you +want to use a Normal mode command, the ":normal" command can be used. +Example: > + + :autocmd BufReadPost *.log normal G + +This will make the cursor jump to the last line of *.log files when you start +to edit it. + Using the ":normal" command is a bit tricky. First of all, make sure its +argument is a complete command, including all the arguments. When you use "i" +to go to Insert mode, there must also be a <Esc> to leave Insert mode again. +If you use a "/" to start a search pattern, there must be a <CR> to execute +it. + The ":normal" command uses all the text after it as commands. Thus there +can be no | and another command following. To work around this, put the +":normal" command inside an ":execute" command. This also makes it possible +to pass unprintable characters in a convenient way. Example: > + + :autocmd BufReadPost *.chg execute "normal ONew entry:\<Esc>" | + \ 1read !date + +This also shows the use of a backslash to break a long command into more +lines. This can be used in Vim scripts (not at the command line). + +When you want the autocommand do something complicated, which involves jumping +around in the file and then returning to the original position, you may want +to restore the view on the file. See |restore-position| for an example. + + +IGNORING EVENTS + +At times, you will not want to trigger an autocommand. The 'eventignore' +option contains a list of events that will be totally ignored. For example, +the following causes events for entering and leaving a window to be ignored: > + + :set eventignore=WinEnter,WinLeave + +To ignore all events, use the following command: > + + :set eventignore=all + +To set it back to the normal behavior, make 'eventignore' empty: > + + :set eventignore= + +============================================================================== + +Next chapter: |usr_41.txt| Write a Vim script + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt new file mode 100644 index 0000000..2286d48 --- /dev/null +++ b/runtime/doc/usr_41.txt @@ -0,0 +1,1910 @@ +*usr_41.txt* For Vim version 9.1. Last change: 2023 May 06 + + VIM USER MANUAL - by Bram Moolenaar + + Write a Vim script + + +The Vim script language is used for the startup vimrc file, syntax files, and +many other things. This chapter explains the items that can be used in a Vim +script. There are a lot of them, therefore this is a long chapter. + +|41.1| Introduction +|41.2| Variables +|41.3| Expressions +|41.4| Conditionals +|41.5| Executing an expression +|41.6| Using functions +|41.7| Defining a function +|41.8| Lists and Dictionaries +|41.9| White space +|41.10| Line continuation +|41.11| Comments +|41.12| Fileformat + + Next chapter: |usr_42.txt| Add new menus + Previous chapter: |usr_40.txt| Make new commands +Table of contents: |usr_toc.txt| + +============================================================================== +*41.1* Introduction *vim-script-intro* *script* + +Your first experience with Vim scripts is the vimrc file. Vim reads it when +it starts up and executes the commands. You can set options to the values you +prefer, define mappings, select plugins and much more. You can use any colon +command in it (commands that start with a ":"; these are sometimes referred to +as Ex commands or command-line commands). + +Syntax files are also Vim scripts. As are files that set options for a +specific file type. A complicated macro can be defined by a separate Vim +script file. You can think of other uses yourself. + +Vim script comes in two flavors: legacy and |Vim9|. Since this help file is +for new users, we'll teach you the newer and more convenient |Vim9| syntax. +While legacy script is particularly for Vim, |Vim9| script looks more like +other languages, such as JavaScript and TypeScript. + +To try out Vim script the best way is to edit a script file and source it. +Basically: > + :edit test.vim + [insert the script lines you want] + :w + :source % + +Let's start with a simple example: > + + vim9script + var i = 1 + while i < 5 + echo "count is" i + i += 1 + endwhile +< +The output of the example code is: + + count is 1 ~ + count is 2 ~ + count is 3 ~ + count is 4 ~ + +In the first line the `vim9script` command makes clear this is a new, |Vim9| +script file. That matters for how the rest of the file is used. It is +recommended to put it in the very fist line, before any comments. + *vim9-declarations* +The `var i = 1` command declares the "i" variable and initializes it. The +generic form is: > + + var {name} = {expression} + +In this case the variable name is "i" and the expression is a simple value, +the number one. + +The `while` command starts a loop. The generic form is: > + + while {condition} + {statements} + endwhile + +The statements until the matching `endwhile` are executed for as long as the +condition is true. The condition used here is the expression "i < 5". This +is true when the variable i is smaller than five. + Note: + If you happen to write a while loop that keeps on running, you can + interrupt it by pressing CTRL-C (CTRL-Break on MS-Windows). + +The `echo` command prints its arguments. In this case the string "count is" +and the value of the variable i. Since i is one, this will print: + + count is 1 ~ + +Then there is the `i += 1` command. This does the same thing as "i = i + 1", +it adds one to the variable i and assigns the new value to the same variable. + +The example was given to explain the commands, but would you really want to +make such a loop, it can be written much more compact: > + + for i in range(1, 4) + echo $"count is {i}" + endfor + +We won't explain how `for`, `range()`and `$"string"` work until later. Follow +the links if you are impatient. + + +TRYING OUT EXAMPLES + +You can easily try out most examples in these help files without saving the +commands to a file. For example, to try out the "for" loop above do this: +1. position the cursor on the "for" +2. start Visual mode with "v" +3. move down to the "endfor" +4. press colon, then "so" and Enter + +After pressing colon you will see ":'<,'>", which is the range of the Visually +selected text. + +For some commands it matters they are executed as in |Vim9| script. But typed +commands normally use legacy script syntax, such as the example below that +causes the E1004 error. For that use this fourth step: +4. press colon, then "vim9 so" and Enter + +"vim9" is short for `vim9cmd`, which is a command modifier to execute the +following command in |Vim9| syntax. + +Note that this won't work for examples that require a script context. + + +FOUR KINDS OF NUMBERS + +Numbers can be decimal, hexadecimal, octal and binary. + +A hexadecimal number starts with "0x" or "0X". For example "0x1f" is decimal +31 and "0x1234" is decimal 4660. + +An octal number starts with "0o", "0O". "0o17" is decimal 15. + +A binary number starts with "0b" or "0B". For example "0b101" is decimal 5. + +A decimal number is just digits. Careful: In legacy script don't put a zero +before a decimal number, it will be interpreted as an octal number! That's +one reason to use |Vim9| script. + +The `echo` command evaluates its argument and when it is a number always +prints the decimal form. Example: > + + echo 0x7f 0o36 +< 127 30 ~ + +A number is made negative with a minus sign. This also works for hexadecimal, +octal and binary numbers: > + + echo -0x7f +< -127 ~ + +A minus sign is also used for subtraction. This can sometimes lead to +confusion. If we put a minus sign before both numbers we get an error: > + + echo -0x7f -0o36 +< E1004: White space required before and after '-' at "-0o36" ~ + +Note: if you are not using a |Vim9| script to try out these commands but type +them directly, they will be executed as legacy script. Then the echo command +sees the second minus sign as subtraction. To get the error, prefix the +command with `vim9cmd`: > + + vim9cmd echo -0x7f -0o36 +< E1004: White space required before and after '-' at "-0o36" ~ + +White space in an expression is often required to make sure it is easy to read +and avoid errors. Such as thinking that the "-0o36" above makes the number +negative, while it is actually seen as a subtraction. + +To actually have the minus sign be used for negation, you can put the second +expression in parentheses: > + + echo -0x7f (-0o36) +< -127 -30 ~ + +============================================================================== +*41.2* Variables + +A variable name consists of ASCII letters, digits and the underscore. It +cannot start with a digit. Valid variable names are: + + counter + _aap3 + very_long_variable_name_with_underscores + CamelCaseName + LENGTH + +Invalid names are "foo.bar" and "6var". + +Some variables are global. To see a list of currently defined global +variables type this command: > + + :let + +You can use global variables everywhere. However, it is too easy to use the +same name in two unrelated scripts. Therefore variables declared in a script +are local to that script. For example, if you have this in "script1.vim": > + + vim9script + var counter = 5 + echo counter +< 5 ~ + +And you try to use the variable in "script2.vim": > + + vim9script + echo counter +< E121: Undefined variable: counter ~ + +Using a script-local variable means you can be sure that it is only changed in +that script and not elsewhere. + +If you do want to share variables between scripts, use the "g:" prefix and +assign the value directly, do not use `var`. And use a specific name to avoid +mistakes. Thus in "script1.vim": > + + vim9script + g:mash_counter = 5 + echo g:mash_counter +< 5 ~ + +And then in "script2.vim": > + + vim9script + echo g:mash_counter +< 5 ~ + +Global variables can also be accessed on the command line, E.g. typing this: > + echo g:mash_counter +That will not work for a script-local variable. + +More about script-local variables here: |script-variable|. + +There are more kinds of variables, see |internal-variables|. The most often +used ones are: + + b:name variable local to a buffer + w:name variable local to a window + g:name global variable (also in a function) + v:name variable predefined by Vim + + +DELETING VARIABLES + +Variables take up memory and show up in the output of the `let` command. To +delete a global variable use the `unlet` command. Example: > + + unlet g:counter + +This deletes the global variable "g:counter" to free up the memory it uses. +If you are not sure if the variable exists, and don't want an error message +when it doesn't, append !: > + + unlet! g:counter + +You cannot `unlet` script-local variables in |Vim9| script, only in legacy +script. + +When a script has been processed to the end, the local variables declared +there will not be deleted. Functions defined in the script can use them. +Example: +> + vim9script + var counter = 0 + def g:GetCount(): number + counter += 1 + return counter + enddef + +Every time you call the function it will return the next count: > + :echo g:GetCount() +< 1 ~ +> + :echo g:GetCount() +< 2 ~ + +If you are worried a script-local variable is consuming too much memory, set +it to an empty or null value after you no longer need it. Example: > + var lines = readfile(...) + ... + lines = [] + +Note: below we'll leave out the `vim9script` line from examples, so we can +concentrate on the relevant commands, but you'll still need to put it at the +top of your script file. + + +STRING VARIABLES AND CONSTANTS + +So far only numbers were used for the variable value. Strings can be used as +well. Numbers and strings are the basic types of variables that Vim supports. +Example: > + + var name = "Peter" + echo name +< Peter ~ + +Every variable has a type. Very often, as in this example, the type is +defined by assigning a value. This is called type inference. If you do not +want to give the variable a value yet, you need to specify the type: > + + var name: string + var age: number + if male + name = "Peter" + age = 42 + else + name = "Elisa" + age = 45 + endif + +If you make a mistake and try to assign the wrong type of value you'll get an +error: > + + age = "Peter" +< E1012: Type mismatch; expected number but got string ~ + +More about types in |41.8|. + +To assign a string value to a variable, you can use a string constant. There +are two types of these. First the string in double quotes, as we used +already. If you want to include a double quote inside the string, put a +backslash in front of it: > + + var name = "he is \"Peter\"" + echo name +< he is "Peter" ~ + +To avoid the need for backslashes, you can use a string in single quotes: > + + var name = 'he is "Peter"' + echo name +< he is "Peter" ~ + +Inside a single-quote string all the characters are as they are. Only the +single quote itself is special: you need to use two to get one. A backslash +is taken literally, thus you can't use it to change the meaning of the +character after it: > + + var name = 'P\e''ter''' + echo name +< P\e'ter' ~ + +In double-quote strings it is possible to use special characters. Here are a +few useful ones: + + \t <Tab> + \n <NL>, line break + \r <CR>, <Enter> + \e <Esc> + \b <BS>, backspace + \" " + \\ \, backslash + \<Esc> <Esc> + \<C-W> CTRL-W + +The last two are just examples. The "\<name>" form can be used to include +the special key "name". + +See |expr-quote| for the full list of special items in a string. + +============================================================================== +*41.3* Expressions + +Vim has a fairly standard way to handle expressions. You can read the +definition here: |expression-syntax|. Here we will show the most common +items. + +The numbers, strings and variables mentioned above are expressions by +themselves. Thus everywhere an expression is expected, you can use a number, +string or variable. Other basic items in an expression are: + + $NAME environment variable + &name option value + @r register contents + +Examples: > + + echo "The value of 'tabstop' is" &ts + echo "Your home directory is" $HOME + if @a == 'text' + +The &name form can also be used to set an option value, do something and +restore the old value. Example: > + + var save_ic = &ic + set noic + s/The Start/The Beginning/ + &ic = save_ic + +This makes sure the "The Start" pattern is used with the 'ignorecase' option +off. Still, it keeps the value that the user had set. (Another way to do +this would be to add "\C" to the pattern, see |/\C|.) + + +MATHEMATICS + +It becomes more interesting if we combine these basic items. Let's start with +mathematics on numbers: + + a + b add + a - b subtract + a * b multiply + a / b divide + a % b modulo + +The usual precedence is used. Example: > + + echo 10 + 5 * 2 +< 20 ~ + +Grouping is done with parentheses. No surprises here. Example: > + + echo (10 + 5) * 2 +< 30 ~ + + +OTHERS + +Strings can be concatenated with ".." (see |expr6|). Example: > + + echo "Name: " .. name + Name: Peter + +When the "echo" command gets multiple arguments, it separates them with a +space. In the example the argument is a single expression, thus no space is +inserted. + +If you don't like the concatenation you can use the $"string" form, which +accepts an expression in curly braces: > + echo $"Name: {name}" + +See |interpolated-string| for more information. + +Borrowed from the C language is the conditional expression: > + + a ? b : c + +If "a" evaluates to true "b" is used, otherwise "c" is used. Example: > + + var nr = 4 + echo nr > 5 ? "nr is big" : "nr is small" +< nr is small ~ + +The three parts of the constructs are always evaluated first, thus you could +see it works as: > + + (a) ? (b) : (c) + +There is also the falsy operator: > + echo name ?? "No name given" +See |??|. + +============================================================================== +*41.4* Conditionals + +The `if` commands executes the following statements, until the matching +`endif`, only when a condition is met. The generic form is: + + if {condition} + {statements} + endif + +Only when the expression {condition} evaluates to true or one will the +{statements} be executed. If they are not executed they must still be valid +commands. If they contain garbage, Vim won't be able to find the matching +`endif`. + +You can also use `else`. The generic form for this is: + + if {condition} + {statements} + else + {statements} + endif + +The second {statements} block is only executed if the first one isn't. + +Finally, there is `elseif` + + if {condition} + {statements} + elseif {condition} + {statements} + endif + +This works just like using `else` and then `if`, but without the need for an +extra `endif`. + +A useful example for your vimrc file is checking the 'term' option and doing +something depending upon its value: > + + if &term == "xterm" + # Do stuff for xterm + elseif &term == "vt100" + # Do stuff for a vt100 terminal + else + # Do something for other terminals + endif + +This uses "#" to start a comment, more about that later. + + +LOGIC OPERATIONS + +We already used some of them in the examples. These are the most often used +ones: + + a == b equal to + a != b not equal to + a > b greater than + a >= b greater than or equal to + a < b less than + a <= b less than or equal to + +The result is true if the condition is met and false otherwise. An example: > + + if v:version >= 800 + echo "congratulations" + else + echo "you are using an old version, upgrade!" + endif + +Here "v:version" is a variable defined by Vim, which has the value of the Vim +version. 800 is for version 8.0, version 8.1 has the value 801. This is +useful to write a script that works with multiple versions of Vim. +See |v:version|. You can also check for a specific feature with `has()` or a +specific patch, see |has-patch|. + +The logic operators work both for numbers and strings. When comparing two +strings, the mathematical difference is used. This compares byte values, +which may not be right for some languages. + +If you try to compare a string with a number you will get an error. + +For strings there are two more useful items: + + str =~ pat matches with + str !~ pat does not match with + +The left item "str" is used as a string. The right item "pat" is used as a +pattern, like what's used for searching. Example: > + + if str =~ " " + echo "str contains a space" + endif + if str !~ '\.$' + echo "str does not end in a full stop" + endif + +Notice the use of a single-quote string for the pattern. This is useful, +because patterns tend to contain many backslashes and backslashes need to be +doubled in a double-quote string. + +The match is not anchored, if you want to match the whole string start with +"^" and end with "$". + +The 'ignorecase' option is not used when comparing strings. When you do want +to ignore case append "?". Thus "==?" compares two strings to be equal while +ignoring case. For the full table see |expr-==|. + + +MORE LOOPING + +The `while` command was already mentioned. Two more statements can be used in +between the `while` and the `endwhile`: + + continue Jump back to the start of the while loop; the + loop continues. + break Jump forward to the `endwhile`; the loop is + discontinued. + +Example: > + + var counter = 1 + while counter < 40 + if skip_number(counter) + continue + endif + if last_number(counter) + break + endif + sleep 50m + ++counter + endwhile + +The `sleep` command makes Vim take a nap. The "50m" specifies fifty +milliseconds. Another example is `sleep 4`, which sleeps for four seconds. + +`continue` and `break` can also be used in between `for` and `endfor`. +Even more looping can be done with the `for` command, see below in |41.8|. + +============================================================================== +*41.5* Executing an expression + +So far the commands in the script were executed by Vim directly. The +`execute` command allows executing the result of an expression. This is a +very powerful way to build commands and execute them. + +An example is to jump to a tag, which is contained in a variable: > + + execute "tag " .. tag_name + +The ".." is used to concatenate the string "tag " with the value of variable +"tag_name". Suppose "tag_name" has the value "get_cmd", then the command that +will be executed is: > + + tag get_cmd + +The `execute` command can only execute Ex commands. The `normal` command +executes Normal mode commands. However, its argument is not an expression but +the literal command characters. Example: > + + normal gg=G + +This jumps to the first line with "gg" and formats all lines with the "=" +operator and the "G" movement. + +To make `normal` work with an expression, combine `execute` with it. +Example: > + + execute "normal " .. count .. "j" + +This will move the cursor "count" lines down. + +Make sure that the argument for `normal` is a complete command. Otherwise +Vim will run into the end of the argument and silently abort the command. For +example, if you start the delete operator, you must give the movement command +also. This works: > + + normal d$ + +This does nothing: > + + normal d + +If you start Insert mode and do not end it with Esc, it will end anyway. This +works to insert "new text": > + + execute "normal inew text" + +If you want to do something after inserting text you do need to end Insert +mode: > + + execute "normal inew text\<Esc>b" + +This inserts "new text" and puts the cursor on the first letter of "text". +Notice the use of the special key "\<Esc>". This avoids having to enter a +real <Esc> character in your script. That is where `execute` with a +double-quote string comes in handy. + +If you don't want to execute a string as a command but evaluate it to get the +result of the expression, you can use the eval() function: > + + var optname = "path" + var optvalue = eval('&' .. optname) + +A "&" character is prepended to "path", thus the argument to eval() is +"&path". The result will then be the value of the 'path' option. + +============================================================================== +*41.6* Using functions + +Vim defines many functions and provides a large amount of functionality that +way. A few examples will be given in this section. You can find the whole +list below: |function-list|. + +A function is called with the parameters in between parentheses, separated by +commas. Example: > + + search("Date: ", "W") + +This calls the search() function, with arguments "Date: " and "W". The +search() function uses its first argument as a search pattern and the second +one as flags. The "W" flag means the search doesn't wrap around the end of +the file. + +Using the `call` command is optional in |Vim9| script. It is required in +legacy script and on the command line: > + + call search("Date: ", "W") + +A function can be called in an expression. Example: > + + var line = getline(".") + var repl = substitute(line, '\a', "*", "g") + setline(".", repl) + +The getline() function obtains a line from the current buffer. Its argument +is a specification of the line number. In this case "." is used, which means +the line where the cursor is. + +The substitute() function does something similar to the `:substitute` command. +The first argument "line" is the string on which to perform the substitution. +The second argument '\a' is the pattern, the third "*" is the replacement +string. Finally, the last argument "g" is the flags. + +The setline() function sets the line, specified by the first argument, to a +new string, the second argument. In this example the line under the cursor is +replaced with the result of the substitute(). Thus the effect of the three +statements is equal to: > + + :substitute/\a/*/g + +Using the functions becomes interesting when you do more work before and +after the substitute() call. + + +FUNCTIONS *function-list* + +There are many functions. We will mention them here, grouped by what they are +used for. You can find an alphabetical list here: |builtin-function-list|. +Use CTRL-] on the function name to jump to detailed help on it. + +String manipulation: *string-functions* + nr2char() get a character by its number value + list2str() get a character string from a list of numbers + char2nr() get number value of a character + str2list() get list of numbers from a string + str2nr() convert a string to a Number + str2float() convert a string to a Float + printf() format a string according to % items + escape() escape characters in a string with a '\' + shellescape() escape a string for use with a shell command + fnameescape() escape a file name for use with a Vim command + tr() translate characters from one set to another + strtrans() translate a string to make it printable + keytrans() translate internal keycodes to a form that + can be used by |:map| + tolower() turn a string to lowercase + toupper() turn a string to uppercase + 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 + 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 + matchstrlist() all the matches of a pattern in a List of + strings + matchstrpos() match and positions of a pattern in a string + matchlist() like matchstr() and also return submatches + stridx() first index of a short string in a long string + strridx() last index of a short string in a long string + strlen() length of a string in bytes + strcharlen() length of a string in characters + strchars() number of characters in a string + strutf16len() number of UTF-16 code units in a string + strwidth() size of string when displayed + strdisplaywidth() size of string when displayed, deals with tabs + setcellwidths() set character cell width overrides + getcellwidths() get character cell width overrides + reverse() reverse the order of characters in a string + substitute() substitute a pattern match with a string + submatch() get a specific match in ":s" and substitute() + strpart() get part of a string using byte index + strcharpart() get part of a string using char index + slice() take a slice of a string, using char index in + Vim9 script + strgetchar() get character from a string using char index + expand() expand special keywords + expandcmd() expand a command like done for `:edit` + iconv() convert text from one encoding to another + byteidx() byte index of a character in a string + byteidxcomp() like byteidx() but count composing characters + charidx() character index of a byte in a string + utf16idx() UTF-16 index of a byte in a string + repeat() repeat a string multiple times + eval() evaluate a string expression + execute() execute an Ex command and get the output + win_execute() like execute() but in a specified window + trim() trim characters from a string + gettext() lookup message translation + +List manipulation: *list-functions* + get() get an item without error for wrong index + len() number of items in a List + empty() check if List is empty + insert() insert an item somewhere in a List + add() append an item to a List + extend() append a List to a List + extendnew() make a new List and append items + remove() remove one or more items from a List + copy() make a shallow copy of a List + deepcopy() make a full copy of a List + filter() remove selected items from a List + map() change each List item + mapnew() make a new List with changed items + reduce() reduce a List to a value + slice() take a slice of a List + sort() sort a List + reverse() reverse the order of items in a List + uniq() remove copies of repeated adjacent items + split() split a String into a List + join() join List items into a String + range() return a List with a sequence of numbers + string() String representation of a List + call() call a function with List as arguments + index() index of a value in a List or Blob + indexof() index in a List or Blob where an expression + evaluates to true + max() maximum value in a List + min() minimum value 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 + +Dictionary manipulation: *dict-functions* + get() get an entry without an error for a wrong key + len() number of entries in a Dictionary + has_key() check whether a key appears in a Dictionary + empty() check if Dictionary is empty + remove() remove an entry from a Dictionary + extend() add entries from one Dictionary to another + extendnew() make a new Dictionary and append items + filter() remove selected entries from a Dictionary + map() change each Dictionary entry + mapnew() make a new Dictionary with changed items + keys() get List of Dictionary keys + values() get List of Dictionary values + items() get List of Dictionary key-value pairs + copy() make a shallow copy of a Dictionary + deepcopy() make a full copy of a Dictionary + string() String representation of a Dictionary + max() maximum value in a Dictionary + min() minimum value in a Dictionary + count() count number of times a value appears + +Floating point computation: *float-functions* + float2nr() convert Float to Number + abs() absolute value (also works for Number) + round() round off + ceil() round up + floor() round down + trunc() remove value after decimal point + fmod() remainder of division + exp() exponential + log() natural logarithm (logarithm to base e) + log10() logarithm to base 10 + pow() value of x to the exponent y + sqrt() square root + sin() sine + cos() cosine + tan() tangent + asin() arc sine + acos() arc cosine + atan() arc tangent + atan2() arc tangent + sinh() hyperbolic sine + cosh() hyperbolic cosine + tanh() hyperbolic tangent + isinf() check for infinity + isnan() check for not a number + +Blob manipulation: *blob-functions* + blob2list() get a list of numbers from a blob + list2blob() get a blob from a list of numbers + reverse() reverse the order of numbers in a blob + +Other computation: *bitwise-function* + and() bitwise AND + invert() bitwise invert + or() bitwise OR + xor() bitwise XOR + sha256() SHA-256 hash + rand() get a pseudo-random number + srand() initialize seed used by rand() + +Variables: *var-functions* + instanceof() check if a variable is an instance of a given + class + type() type of a variable as a number + typename() type of a variable as text + islocked() check if a variable is locked + funcref() get a Funcref for a function reference + function() get a Funcref for a function name + getbufvar() get a variable value from a specific buffer + setbufvar() set a variable in a specific buffer + getwinvar() get a variable from specific window + gettabvar() get a variable from specific tab page + gettabwinvar() get a variable from specific window & tab page + setwinvar() set a variable in a specific window + settabvar() set a variable in a specific tab page + settabwinvar() set a variable in a specific window & tab page + garbagecollect() possibly free memory + +Cursor and mark position: *cursor-functions* *mark-functions* + col() column number of the cursor or a mark + virtcol() screen column of the cursor or a mark + line() line number of the cursor or mark + wincol() window column number of the cursor + winline() window line number of the cursor + cursor() position the cursor at a line/column + screencol() get screen column of the cursor + screenrow() get screen row of the cursor + screenpos() screen row and col of a text character + virtcol2col() byte index of a text character on screen + getcurpos() get position of the cursor + getpos() get position of cursor, mark, etc. + setpos() set position of cursor, mark, etc. + getmarklist() list of global/local marks + byte2line() get line number at a specific byte count + line2byte() byte count at a specific line + diff_filler() get the number of filler lines above a line + screenattr() get attribute at a screen line/row + screenchar() get character code at a screen line/row + screenchars() get character codes at a screen line/row + screenstring() get string of characters at a screen line/row + charcol() character number of the cursor or a mark + getcharpos() get character position of cursor, mark, etc. + setcharpos() set character position of cursor, mark, etc. + getcursorcharpos() get character position of the cursor + setcursorcharpos() set character position of the cursor + +Working with text in the current buffer: *text-functions* + getline() get a line or list of lines from the buffer + setline() replace a line in the buffer + append() append line or list of lines in the buffer + indent() indent of a specific line + cindent() indent according to C indenting + lispindent() indent according to Lisp indenting + nextnonblank() find next non-blank line + prevnonblank() find previous non-blank line + search() find a match for a pattern + searchpos() find a match for a pattern + searchcount() get number of matches before/after the cursor + searchpair() find the other end of a start/skip/end + searchpairpos() find the other end of a start/skip/end + searchdecl() search for the declaration of a name + getcharsearch() return character search information + setcharsearch() set character search information + +Working with text in another buffer: + getbufline() get a list of lines from the specified buffer + getbufoneline() get a one line from the specified buffer + setbufline() replace a line in the specified buffer + appendbufline() append a list of lines in the specified buffer + deletebufline() delete lines from a specified buffer + + *system-functions* *file-functions* +System functions and manipulation of files: + glob() expand wildcards + globpath() expand wildcards in a number of directories + glob2regpat() convert a glob pattern into a search pattern + findfile() find a file in a list of directories + finddir() find a directory in a list of directories + resolve() find out where a shortcut points to + fnamemodify() modify a file name + pathshorten() shorten directory names in a path + simplify() simplify a path without changing its meaning + executable() check if an executable program exists + exepath() full path of an executable program + filereadable() check if a file can be read + filewritable() check if a file can be written to + getfperm() get the permissions of a file + setfperm() set the permissions of a file + getftype() get the kind of a file + isabsolutepath() check if a path is absolute + isdirectory() check if a directory exists + getfsize() get the size of a file + getcwd() get the current working directory + haslocaldir() check if current window used |:lcd| or |:tcd| + tempname() get the name of a temporary file + mkdir() create a new directory + chdir() change current working directory + delete() delete a file + rename() rename a file + system() get the result of a shell command as a string + systemlist() get the result of a shell command as a list + environ() get all environment variables + getenv() get one environment variable + setenv() set an environment variable + hostname() name of the system + readfile() read a file into a List of lines + readblob() read a file into a Blob + readdir() get a List of file names in a directory + readdirex() get a List of file information in a directory + writefile() write a List of lines or Blob into a file + +Date and Time: *date-functions* *time-functions* + getftime() get last modification time of a file + localtime() get current time in seconds + strftime() convert time to a string + strptime() convert a date/time string to time + reltime() get the current or elapsed time accurately + reltimestr() convert reltime() result to a string + reltimefloat() convert reltime() result to a Float + +Autocmds: *autocmd-functions* + autocmd_add() add a list of autocmds and groups + autocmd_delete() delete a list of autocmds and groups + autocmd_get() return a list of autocmds + + *buffer-functions* *window-functions* *arg-functions* +Buffers, windows and the argument list: + argc() number of entries in the argument list + argidx() current position in the argument list + arglistid() get id of the argument list + argv() get one entry from the argument list + bufadd() add a file to the list of buffers + bufexists() check if a buffer exists + buflisted() check if a buffer exists and is listed + bufload() ensure a buffer is loaded + bufloaded() check if a buffer exists and is loaded + bufname() get the name of a specific buffer + bufnr() get the buffer number of a specific buffer + tabpagebuflist() return List of buffers in a tab page + tabpagenr() get the number of a tab page + tabpagewinnr() like winnr() for a specified tab page + winnr() get the window number for the current window + bufwinid() get the window ID of a specific buffer + bufwinnr() get the window number of a specific buffer + winbufnr() get the buffer number of a specific window + listener_add() add a callback to listen to changes + listener_flush() invoke listener callbacks + listener_remove() remove a listener callback + win_findbuf() find windows containing a buffer + win_getid() get window ID of a window + win_gettype() get type of window + win_gotoid() go to window with ID + win_id2tabwin() get tab and window nr from window ID + win_id2win() get window nr from window ID + win_move_separator() move window vertical separator + win_move_statusline() move window status line + win_splitmove() move window to a split of another window + getbufinfo() get a list with buffer information + gettabinfo() get a list with tab page information + getwininfo() get a list with window information + getchangelist() get a list of change list entries + getjumplist() get a list of jump list entries + swapfilelist() list of existing swap files in 'directory' + swapinfo() information about a swap file + swapname() get the swap file path of a buffer + +Command line: *command-line-functions* + getcmdcompltype() get the type of the current command line + completion + getcmdline() get the current command line + getcmdpos() get position of the cursor in the command line + getcmdscreenpos() get screen position of the cursor in the + command line + setcmdline() set the current command line + setcmdpos() set position of the cursor in the command line + getcmdtype() return the current command-line type + getcmdwintype() return the current command-line window type + getcompletion() list of command-line completion matches + fullcommand() get full command name + +Quickfix and location lists: *quickfix-functions* + getqflist() list of quickfix errors + setqflist() modify a quickfix list + getloclist() list of location list items + setloclist() modify a location list + +Insert mode completion: *completion-functions* + complete() set found matches + complete_add() add to found matches + complete_check() check if completion should be aborted + complete_info() get current completion information + pumvisible() check if the popup menu is displayed + pum_getpos() position and size of popup menu if visible + +Folding: *folding-functions* + foldclosed() check for a closed fold at a specific line + foldclosedend() like foldclosed() but return the last line + foldlevel() check for the fold level at a specific line + foldtext() generate the line displayed for a closed fold + foldtextresult() get the text displayed for a closed fold + +Syntax and highlighting: *syntax-functions* *highlighting-functions* + clearmatches() clear all matches defined by |matchadd()| and + the |:match| commands + getmatches() get all matches defined by |matchadd()| and + the |:match| commands + hlexists() check if a highlight group exists + hlget() get highlight group attributes + hlset() set highlight group attributes + hlID() get ID of a highlight group + synID() get syntax ID at a specific position + synIDattr() get a specific attribute of a syntax ID + synIDtrans() get translated syntax ID + synstack() get list of syntax IDs at a specific position + synconcealed() get info about concealing + diff_hlID() get highlight ID for diff mode at a position + matchadd() define a pattern to highlight (a "match") + matchaddpos() define a list of positions to highlight + matcharg() get info about |:match| arguments + matchdelete() delete a match defined by |matchadd()| or a + |:match| command + setmatches() restore a list of matches saved by + |getmatches()| + +Spelling: *spell-functions* + spellbadword() locate badly spelled word at or after cursor + spellsuggest() return suggested spelling corrections + soundfold() return the sound-a-like equivalent of a word + +History: *history-functions* + histadd() add an item to a history + histdel() delete an item from a history + histget() get an item from a history + histnr() get highest index of a history list + +Interactive: *interactive-functions* + browse() put up a file requester + browsedir() put up a directory requester + confirm() let the user make a choice + getchar() get a character from the user + getcharstr() get a character from the user as a string + getcharmod() get modifiers for the last typed character + getmousepos() get last known mouse position + getmouseshape() get name of the current mouse shape + echoraw() output characters as-is + feedkeys() put characters in the typeahead queue + input() get a line from the user + inputlist() let the user pick an entry from a list + inputsecret() get a line from the user without showing it + inputdialog() get a line from the user in a dialog + inputsave() save and clear typeahead + inputrestore() restore typeahead + +GUI: *gui-functions* + getfontname() get name of current font being used + getwinpos() position of the Vim window + getwinposx() X position of the Vim window + getwinposy() Y position of the Vim window + balloon_show() set the balloon content + balloon_split() split a message for a balloon + balloon_gettext() get the text in the balloon + +Vim server: *server-functions* + serverlist() return the list of server names + remote_startserver() run a server + remote_send() send command characters to a Vim server + remote_expr() evaluate an expression in a Vim server + server2client() send a reply to a client of a Vim server + remote_peek() check if there is a reply from a Vim server + remote_read() read a reply from a Vim server + foreground() move the Vim window to the foreground + remote_foreground() move the Vim server window to the foreground + +Window size and position: *window-size-functions* + winheight() get height of a specific window + winwidth() get width of a specific window + win_screenpos() get screen position of a window + winlayout() get layout of windows in a tab page + winrestcmd() return command to restore window sizes + winsaveview() get view of current window + winrestview() restore saved view of current window + +Mappings and Menus: *mapping-functions* + digraph_get() get |digraph| + digraph_getlist() get all |digraph|s + digraph_set() register |digraph| + digraph_setlist() register multiple |digraph|s + hasmapto() check if a mapping exists + mapcheck() check if a matching mapping exists + maparg() get rhs of a mapping + maplist() get list of all mappings + mapset() restore a mapping + menu_info() get information about a menu item + wildmenumode() check if the wildmode is active + +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_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 + assert_false() assert that an expression is false + assert_true() assert that an expression is true + assert_exception() assert that a command throws an exception + assert_beeps() assert that a command beeps + assert_nobeep() assert that a command does not cause a beep + assert_fails() assert that a command fails + assert_report() report a test failure + test_alloc_fail() make memory allocation fail + test_autochdir() enable 'autochdir' during startup + test_override() test with Vim internal overrides + test_garbagecollect_now() free memory right now + test_garbagecollect_soon() set a flag to free memory soon + test_getvalue() get value of an internal variable + test_gui_event() generate a GUI event for testing + test_ignore_error() ignore a specific error message + test_mswin_event() generate an MS-Windows event + test_null_blob() return a null Blob + test_null_channel() return a null Channel + test_null_dict() return a null Dict + test_null_function() return a null Funcref + test_null_job() return a null Job + test_null_list() return a null List + test_null_partial() return a null Partial function + test_null_string() return a null String + test_settime() set the time Vim uses internally + test_setmouse() set the mouse position + test_feedinput() add key sequence to input buffer + test_option_not_set() reset flag indicating option was set + test_refcount() return an expression's reference count + test_srand_seed() set the seed value for srand() + test_unknown() return a value with unknown type + test_void() return a value with void type + +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_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_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 + js_decode() decode a JSON string to Vim types + err_teapot() give error 418 or 503 + +Jobs: *job-functions* + job_start() start a job + job_stop() stop a job + job_status() get the status of a job + job_getchannel() get the channel used by a job + job_info() get information about a job + job_setoptions() set options for a job + +Signs: *sign-functions* + sign_define() define or update a sign + sign_getdefined() get a list of defined signs + sign_getplaced() get a list of placed signs + sign_jump() jump to a sign + sign_place() place a sign + sign_placelist() place a list of signs + sign_undefine() undefine a sign + sign_unplace() unplace a sign + sign_unplacelist() unplace a list of signs + +Terminal window: *terminal-functions* + term_start() open a terminal window and run a job + term_list() get the list of terminal buffers + term_sendkeys() send keystrokes to a terminal + term_wait() wait for screen to be updated + term_getjob() get the job associated with a terminal + term_scrape() get row of a terminal screen + term_getline() get a line of text from a terminal + term_getattr() get the value of attribute {what} + term_getcursor() get the cursor position of a terminal + term_getscrolled() get the scroll count of a terminal + term_getaltscreen() get the alternate screen flag + term_getsize() get the size of a terminal + term_getstatus() get the status of a terminal + term_gettitle() get the title of a terminal + term_gettty() get the tty name of a terminal + term_setansicolors() set 16 ANSI colors, used for GUI + term_getansicolors() get 16 ANSI colors, used for GUI + term_dumpdiff() display difference between two screen dumps + term_dumpload() load a terminal screen dump in a window + term_dumpwrite() dump contents of a terminal screen to a file + term_setkill() set signal to stop job in a terminal + term_setrestore() set command to restore a terminal + term_setsize() set the size of a terminal + term_setapi() set terminal JSON API function name prefix + +Popup window: *popup-window-functions* + popup_create() create popup centered in the screen + popup_atcursor() create popup just above the cursor position, + closes when the cursor moves away + popup_beval() at the position indicated by v:beval_ + variables, closes when the mouse moves away + popup_notification() show a notification for three seconds + popup_dialog() create popup centered with padding and border + popup_menu() prompt for selecting an item from a list + popup_hide() hide a popup temporarily + popup_show() show a previously hidden popup + popup_move() change the position and size of a popup + popup_setoptions() override options of a popup + popup_settext() replace the popup buffer contents + popup_close() close one popup + popup_clear() close all popups + popup_filter_menu() select from a list of items + popup_filter_yesno() block until 'y' or 'n' is pressed + popup_getoptions() get current options for a popup + popup_getpos() get actual position and size of a popup + popup_findecho() get window ID for popup used for `:echowindow` + popup_findinfo() get window ID for popup info window + popup_findpreview() get window ID for popup preview window + popup_list() get list of all popup window IDs + popup_locate() get popup window ID from its screen position + +Timers: *timer-functions* + timer_start() create a timer + timer_pause() pause or unpause a timer + timer_stop() stop a timer + timer_stopall() stop all timers + timer_info() get information about timers + +Tags: *tag-functions* + taglist() get list of matching tags + tagfiles() get a list of tags files + gettagstack() get the tag stack of a window + settagstack() modify the tag stack of a window + +Prompt Buffer: *promptbuffer-functions* + prompt_getprompt() get the effective prompt text for a buffer + prompt_setcallback() set prompt callback for a buffer + prompt_setinterrupt() set interrupt callback for a buffer + prompt_setprompt() set the prompt text for a buffer + +Registers: *register-functions* + getreg() get contents of a register + getreginfo() get information about a register + getregtype() get type of a register + setreg() set contents and type of a register + reg_executing() return the name of the register being executed + reg_recording() return the name of the register being recorded + +Text Properties: *text-property-functions* + prop_add() attach a property at a position + prop_add_list() attach a property at multiple positions + prop_clear() remove all properties from a line or lines + prop_find() search for a property + prop_list() return a list of all properties in a line + prop_remove() remove a property from a line + prop_type_add() add/define a property type + prop_type_change() change properties of a type + prop_type_delete() remove a text property type + prop_type_get() return the properties of a type + prop_type_list() return a list of all property types + +Sound: *sound-functions* + sound_clear() stop playing all sounds + sound_playevent() play an event's sound + sound_playfile() play a sound file + sound_stop() stop playing a sound + +Various: *various-functions* + mode() get current editing mode + state() get current busy state + visualmode() last visual mode used + exists() check if a variable, function, etc. exists + exists_compiled() like exists() but check at compile time + has() check if a feature is supported in Vim + changenr() return number of most recent change + cscope_connection() check if a cscope connection exists + did_filetype() check if a FileType autocommand was used + eventhandler() check if invoked by an event handler + getpid() get process ID of Vim + getscriptinfo() get list of sourced vim scripts + getimstatus() check if IME status is active + interrupt() interrupt script execution + windowsversion() get MS-Windows version + terminalprops() properties of the terminal + + libcall() call a function in an external library + libcallnr() idem, returning a number + + undofile() get the name of the undo file + undotree() return the state of the undo tree for a buffer + + shiftwidth() effective value of 'shiftwidth' + + wordcount() get byte/word/char count of buffer + + luaeval() evaluate |Lua| expression + mzeval() evaluate |MzScheme| expression + perleval() evaluate Perl expression (|+perl|) + py3eval() evaluate Python expression (|+python3|) + pyeval() evaluate Python expression (|+python|) + pyxeval() evaluate |python_x| expression + rubyeval() evaluate |Ruby| expression + + debugbreak() interrupt a program being debugged + +============================================================================== +*41.7* Defining a function + +Vim enables you to define your own functions. The basic function declaration +begins as follows: > + + def {name}({var1}, {var2}, ...): return-type + {body} + enddef +< + Note: + Function names must begin with a capital letter. + +Let's define a short function to return the smaller of two numbers. It starts +with this line: > + + def Min(num1: number, num2: number): number + +This tells Vim that the function is named "Min", it takes two arguments that +are numbers: "num1" and "num2" and returns a number. + +The first thing you need to do is to check to see which number is smaller: + > + if num1 < num2 + +Let's assign the variable "smaller" the value of the smallest number: > + + var smaller: number + if num1 < num2 + smaller = num1 + else + smaller = num2 + endif + +The variable "smaller" is a local variable. It is declared to be a number, +that way Vim can warn you for any mistakes. Variables used inside a function +are local unless prefixed by something like "g:", "w:", or "b:". + + Note: + To access a global variable from inside a function you must prepend + "g:" to it. Thus "g:today" inside a function is used for the global + variable "today", and "today" is another variable, local to the + function or the script. + +You now use the `return` statement to return the smallest number to the user. +Finally, you end the function: > + + return smaller + enddef + +The complete function definition is as follows: > + + def Min(num1: number, num2: number): number + var smaller: number + if num1 < num2 + smaller = num1 + else + smaller = num2 + endif + return smaller + enddef + +Obviously this is a verbose example. You can make it shorter by using two +return commands: > + + def Min(num1: number, num2: number): number + if num1 < num2 + return num1 + endif + return num2 + enddef + +And if you remember the conditional expression, you need only one line: > + + def Min(num1: number, num2: number): number + return num1 < num2 ? num1 : num2 + enddef + +A user defined function is called in exactly the same way as a built-in +function. Only the name is different. The Min function can be used like +this: > + + echo Min(5, 8) + +Only now will the function be executed and the lines be parsed by Vim. +If there are mistakes, like using an undefined variable or function, you will +now get an error message. When defining the function these errors are not +detected. To get the errors sooner you can tell Vim to compile all the +functions in the script: > + + defcompile + +Compiling functions takes a little time, but does report errors early. You +could use `:defcompile` at the end of your script while working on it, and +comment it out when everything is fine. + +For a function that does not return anything simply leave out the return type: > + + def SayIt(text: string) + echo text + enddef + +If you want to return any kind of value, you can use the "any" return type: > + def GetValue(): any +This disables type checking for the return value, use only when needed. + +It is also possible to define a legacy function with `function` and +`endfunction`. These do not have types and are not compiled. Therefore they +execute much slower. + + +USING A RANGE + +A line range can be used with a function call. The function will be called +once for every line in the range, with the cursor in that line. Example: > + + def Number() + echo "line " .. line(".") .. " contains: " .. getline(".") + enddef + +If you call this function with: > + + :10,15Number() + +The function will be called six times, starting on line 10 and ending on line +15. + + +LISTING FUNCTIONS + +The `function` command lists the names and arguments of all user-defined +functions: > + + :function +< def <SNR>86_Show(start: string, ...items: list<string>) ~ + function GetVimIndent() ~ + function SetSyn(name) ~ + +The "<SNR>" prefix means that a function is script-local. |Vim9| functions +will start with "def" and include argument and return types. Legacy functions +are listed with "function". + +To see what a function does, use its name as an argument for `function`: > + + :function SetSyn +< 1 if &syntax == '' ~ + 2 let &syntax = a:name ~ + 3 endif ~ + endfunction ~ + +To see the "Show" function you need to include the script prefix, since +multiple "Show" functions can be defined in different scripts. To find +the exact name you can use `function`, but the result may be a very long list. +To only get the functions matching a pattern you can use the `filter` prefix: +> + :filter Show function +< def <SNR>86_Show(start: string, ...items: list<string>) ~ +> + :function <SNR>86_Show +< 1 echohl Title ~ + 2 echo "start is " .. start ~ + etc. + + +DEBUGGING + +The line number is useful for when you get an error message or when debugging. +See |debug-scripts| about debugging mode. + +You can also set the 'verbose' option to 12 or higher to see all function +calls. Set it to 15 or higher to see every executed line. + + +DELETING A FUNCTION + +To delete the SetSyn() function: > + + :delfunction SetSyn + +Deleting only works for global functions and functions in legacy script, not +for functions defined in a |Vim9| script. + +You get an error when the function doesn't exist or cannot be deleted. + + +FUNCTION REFERENCES + +Sometimes it can be useful to have a variable point to one function or +another. You can do it with a function reference variable. Often shortened +to "funcref". Example: > + + def Right(): string + return 'Right!' + enddef + def Wrong(): string + return 'Wrong!' + enddef + + var Afunc = g:result == 1 ? Right : Wrong + echo Afunc() +< Wrong! ~ + +This assumes "g:result" is not one. See |Funcref| for details. + +Note that the name of a variable that holds a function reference must start +with a capital. Otherwise it could be confused with the name of a builtin +function. + + +FURTHER READING + +Using a variable number of arguments is introduced in section |50.2|. + +More information about defining your own functions here: |user-functions|. + +============================================================================== +*41.8* Lists and Dictionaries + +So far we have used the basic types String and Number. Vim also supports two +composite types: List and Dictionary. + +A List is an ordered sequence of items. The items can be any kind of value, +thus you can make a List of numbers, a List of Lists and even a List of mixed +items. To create a List with three strings: > + + var alist = ['aap', 'noot', 'mies'] + +The List items are enclosed in square brackets and separated by commas. To +create an empty List: > + + var alist = [] + +You can add items to a List with the add() function: > + + var alist = [] + add(alist, 'foo') + add(alist, 'bar') + echo alist +< ['foo', 'bar'] ~ + +List concatenation is done with +: > + + var alist = ['foo', 'bar'] + alist = alist + ['and', 'more'] + echo alist +< ['foo', 'bar', 'and', 'more'] ~ + +Or, if you want to extend a List with a function, use `extend()`: > + + var alist = ['one'] + extend(alist, ['two', 'three']) + echo alist +< ['one', 'two', 'three'] ~ + +Notice that using `add()` will have a different effect than `extend()`: > + + var alist = ['one'] + add(alist, ['two', 'three']) + echo alist +< ['one', ['two', 'three']] ~ + +The second argument of add() is added as an item, now you have a nested list. + + +FOR LOOP + +One of the nice things you can do with a List is iterate over it: > + + var alist = ['one', 'two', 'three'] + for n in alist + echo n + endfor +< one ~ + two ~ + three ~ + +This will loop over each element in List "alist", assigning each value to +variable "n". The generic form of a for loop is: > + + for {varname} in {list-expression} + {commands} + endfor + +To loop a certain number of times you need a List of a specific length. The +range() function creates one for you: > + + for a in range(3) + echo a + endfor +< 0 ~ + 1 ~ + 2 ~ + +Notice that the first item of the List that range() produces is zero, thus the +last item is one less than the length of the list. Detail: Internally range() +does not actually create the list, so that a large range used in a for loop +works efficiently. When used elsewhere, the range is turned into an actual +list, which takes more time for a long list. + +You can also specify the maximum value, the stride and even go backwards: > + + for a in range(8, 4, -2) + echo a + endfor +< 8 ~ + 6 ~ + 4 ~ + +A more useful example, looping over all the lines in the buffer: > + + for line in getline(1, 50) + if line =~ "Date: " + echo line + endif + endfor + +This looks into lines 1 to 50 (inclusive) and echoes any date found in there. + +For further reading see |Lists|. + + +DICTIONARIES + +A Dictionary stores key-value pairs. You can quickly lookup a value if you +know the key. A Dictionary is created with curly braces: > + + var uk2nl = {one: 'een', two: 'twee', three: 'drie'} + +Now you can lookup words by putting the key in square brackets: > + + echo uk2nl['two'] +< twee ~ + +If the key does not have special characters, you can use the dot notation: > + + echo uk2nl.two +< twee ~ + +The generic form for defining a Dictionary is: > + + {<key> : <value>, ...} + +An empty Dictionary is one without any keys: > + + {} + +The possibilities with Dictionaries are numerous. There are various functions +for them as well. For example, you can obtain a list of the keys and loop +over them: > + + for key in keys(uk2nl) + echo key + endfor +< three ~ + one ~ + two ~ + +You will notice the keys are not ordered. You can sort the list to get a +specific order: > + + for key in sort(keys(uk2nl)) + echo key + endfor +< one ~ + three ~ + two ~ + +But you can never get back the order in which items are defined. For that you +need to use a List, it stores items in an ordered sequence. + +For further reading see |Dictionaries|. + +============================================================================== +*41.9* White space + +Blank lines are allowed in a script and ignored. + +Leading whitespace characters (blanks and TABs) are ignored, except when using +|:let-heredoc| without "trim". + +Trailing whitespace is often ignored, but not always. One command that +includes it is `map`. You have to watch out for that, it can cause hard to +understand mistakes. A generic solution is to never use trailing white space, +unless you really need it. + +To include a whitespace character in the value of an option, it must be +escaped by a "\" (backslash) as in the following example: > + + :set tags=my\ nice\ file + +If it would be written as: > + + :set tags=my nice file + +This will issue an error, because it is interpreted as: > + + :set tags=my + :set nice + :set file + +|Vim9| script is very picky when it comes to white space. This was done +intentionally to make sure scripts are easy to read and to avoid mistakes. +If you use white space sensibly it will just work. When not you will get an +error message telling you where white space is missing or should be removed. + +============================================================================== +*41.10* Line continuation + +In legacy Vim script line continuation is done by preceding a continuation +line with a backslash: > + let mylist = [ + \ 'one', + \ 'two', + \ ] + +This requires the 'cpo' option to exclude the "C" flag. Normally this is done +by putting this at the start of the script: > + let s:save_cpo = &cpo + set cpo&vim + +And restore the option at the end of the script: > + let &cpo = s:save_cpo + unlet s:save_cpo + +A few more details can be found here: |line-continuation|. + +In |Vim9| script the backslash can still be used, but in most places it is not +needed: > + var mylist = [ + 'one', + 'two', + ] + +Also, the 'cpo' option does not need to be changed. See +|vim9-line-continuation| for details. + +============================================================================== +*41.11* Comments + +In |Vim9| script the character # starts a comment. That character and +everything after it until the end-of-line is considered a comment and +is ignored, except for commands that don't consider comments, as shown in +examples below. A comment can start on any character position on the line, +but not when it is part of the command, e.g. inside a string. + +The character " (the double quote mark) starts a comment in legacy script. +This involves some cleverness to make sure double quoted strings are not +recognized as comments (just one reason to prefer |Vim9| script). + +There is a little "catch" with comments for some commands. Examples: > + + abbrev dev development # shorthand + map <F3> o#include # insert include + execute cmd # do it + !ls *.c # list C files + +- The abbreviation 'dev' will be expanded to 'development # shorthand'. +- The mapping of <F3> will actually be the whole line after the 'o# ....' + including the '# insert include'. +- The `execute` command will give an error. +- The `!` command will send everything after it to the shell, most likely + causing an error. + +There can be no comment after `map`, `abbreviate`, `execute` and `!` commands +(there are a few more commands with this restriction). For the `map`, +`abbreviate` and `execute` commands there is a trick: > + + abbrev dev development|# shorthand + map <F3> o#include|# insert include + execute '!ls *.c' |# do it + +With the '|' character the command is separated from the next one. And that +next command is only a comment. The last command, using `execute` is a +general solution, it works for all commands that do not accept a comment or a +'|' to separate the next command. + +Notice that there is no white space before the '|' in the abbreviation and +mapping. For these commands, any character until the end-of-line or '|' is +included. As a consequence of this behavior, you don't always see that +trailing whitespace is included: > + + map <F4> o#include + +Here it is intended, in other cases it might be accidental. To spot these +problems, you can highlight trailing spaces: > + match Search /\s\+$/ + +For Unix there is one special way to comment a line, that allows making a Vim +script executable, and it also works in legacy script: > + #!/usr/bin/env vim -S + echo "this is a Vim script" + quit + +============================================================================== +*41.12* Fileformat + +The end-of-line character depends on the system. For Vim scripts it is +recommended to always use the Unix fileformat. Lines are then separated with +the Newline character. This also works on any other system. That way you can +copy your Vim scripts from MS-Windows to Unix and they still work. See +|:source_crnl|. To be sure it is set right, do this before writing the file: +> + :setlocal fileformat=unix + +When using "dos" fileformat, lines are separated with CR-NL, two characters. +The CR character causes various problems, better avoid this. + +============================================================================== + +Advance information about writing Vim script is in |usr_50.txt|. + +Next chapter: |usr_42.txt| Add new menus + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt new file mode 100644 index 0000000..2763ff2 --- /dev/null +++ b/runtime/doc/usr_42.txt @@ -0,0 +1,366 @@ +*usr_42.txt* For Vim version 9.1. Last change: 2008 May 05 + + VIM USER MANUAL - by Bram Moolenaar + + Add new menus + + +By now you know that Vim is very flexible. This includes the menus used in +the GUI. You can define your own menu entries to make certain commands easily +accessible. This is for mouse-happy users only. + +|42.1| Introduction +|42.2| Menu commands +|42.3| Various +|42.4| Toolbar and popup menus + + Next chapter: |usr_43.txt| Using filetypes + Previous chapter: |usr_41.txt| Write a Vim script +Table of contents: |usr_toc.txt| + +============================================================================== +*42.1* Introduction + +The menus that Vim uses are defined in the file "$VIMRUNTIME/menu.vim". If +you want to write your own menus, you might first want to look through that +file. + To define a menu item, use the ":menu" command. The basic form of this +command is as follows: > + + :menu {menu-item} {keys} + +The {menu-item} describes where on the menu to put the item. A typical +{menu-item} is "File.Save", which represents the item "Save" under the +"File" menu. A dot is used to separate the names. Example: > + + :menu File.Save :update<CR> + +The ":update" command writes the file when it was modified. + You can add another level: "Edit.Settings.Shiftwidth" defines a submenu +"Settings" under the "Edit" menu, with an item "Shiftwidth". You could use +even deeper levels. Don't use this too much, you need to move the mouse quite +a bit to use such an item. + The ":menu" command is very similar to the ":map" command: the left side +specifies how the item is triggered and the right hand side defines the +characters that are executed. {keys} are characters, they are used just like +you would have typed them. Thus in Insert mode, when {keys} is plain text, +that text is inserted. + + +ACCELERATORS + +The ampersand character (&) is used to indicate an accelerator. For instance, +you can use Alt-F to select "File" and S to select "Save". (The 'winaltkeys' +option may disable this though!). Therefore, the {menu-item} looks like +"&File.&Save". The accelerator characters will be underlined in the menu. + You must take care that each key is used only once in each menu. Otherwise +you will not know which of the two will actually be used. Vim doesn't warn +you for this. + + +PRIORITIES + +The actual definition of the File.Save menu item is as follows: > + + :menu 10.340 &File.&Save<Tab>:w :confirm w<CR> + +The number 10.340 is called the priority number. It is used by the editor to +decide where it places the menu item. The first number (10) indicates the +position on the menu bar. Lower numbered menus are positioned to the left, +higher numbers to the right. + These are the priorities used for the standard menus: + + 10 20 40 50 60 70 9999 + + +------------------------------------------------------------+ + | File Edit Tools Syntax Buffers Window Help | + +------------------------------------------------------------+ + +Notice that the Help menu is given a very high number, to make it appear on +the far right. + The second number (340) determines the location of the item within the +pull-down menu. Lower numbers go on top, higher number on the bottom. These +are the priorities in the File menu: + + +-----------------+ + 10.310 |Open... | + 10.320 |Split-Open... | + 10.325 |New | + 10.330 |Close | + 10.335 |---------------- | + 10.340 |Save | + 10.350 |Save As... | + 10.400 |---------------- | + 10.410 |Split Diff with | + 10.420 |Split Patched By | + 10.500 |---------------- | + 10.510 |Print | + 10.600 |---------------- | + 10.610 |Save-Exit | + 10.620 |Exit | + +-----------------+ + +Notice that there is room in between the numbers. This is where you can +insert your own items, if you really want to (it's often better to leave the +standard menus alone and add a new menu for your own items). + When you create a submenu, you can add another ".number" to the priority. +Thus each name in {menu-item} has its priority number. + + +SPECIAL CHARACTERS + +The {menu-item} in this example is "&File.&Save<Tab>:w". This brings up an +important point: {menu-item} must be one word. If you want to put a dot, +space or tabs in the name, you either use the <> notation (<Space> and <Tab>, +for instance) or use the backslash (\) escape. > + + :menu 10.305 &File.&Do\ It\.\.\. :exit<CR> + +In this example, the name of the menu item "Do It..." contains a space and the +command is ":exit<CR>". + +The <Tab> character in a menu name is used to separate the part that defines +the menu name from the part that gives a hint to the user. The part after the +<Tab> is displayed right aligned in the menu. In the File.Save menu the name +used is "&File.&Save<Tab>:w". Thus the menu name is "File.Save" and the hint +is ":w". + + +SEPARATORS + +The separator lines, used to group related menu items together, can be defined +by using a name that starts and ends in a '-'. For example "-sep-". When +using several separators the names must be different. Otherwise the names +don't matter. + The command from a separator will never be executed, but you have to define +one anyway. A single colon will do. Example: > + + :amenu 20.510 Edit.-sep3- : + +============================================================================== +*42.2* Menu commands + +You can define menu items that exist for only certain modes. This works just +like the variations on the ":map" command: + + :menu Normal, Visual and Operator-pending mode + :nmenu Normal mode + :vmenu Visual mode + :omenu Operator-pending mode + :menu! Insert and Command-line mode + :imenu Insert mode + :cmenu Command-line mode + :tlmenu Terminal mode + :amenu All modes (except for Terminal mode) + +To avoid that the commands of a menu item are being mapped, use the command +":noremenu", ":nnoremenu", ":anoremenu", etc. + + +USING :AMENU + +The ":amenu" command is a bit different. It assumes that the {keys} you +give are to be executed in Normal mode. When Vim is in Visual or Insert mode +when the menu is used, Vim first has to go back to Normal mode. ":amenu" +inserts a CTRL-C or CTRL-O for you. For example, if you use this command: +> + :amenu 90.100 Mine.Find\ Word * + +Then the resulting menu commands will be: + + Normal mode: * + Visual mode: CTRL-C * + Operator-pending mode: CTRL-C * + Insert mode: CTRL-O * + Command-line mode: CTRL-C * + +When in Command-line mode the CTRL-C will abandon the command typed so far. +In Visual and Operator-pending mode CTRL-C will stop the mode. The CTRL-O in +Insert mode will execute the command and then return to Insert mode. + CTRL-O only works for one command. If you need to use two or more +commands, put them in a function and call that function. Example: > + + :amenu Mine.Next\ File :call <SID>NextFile()<CR> + :function <SID>NextFile() + : next + : 1/^Code + :endfunction + +This menu entry goes to the next file in the argument list with ":next". Then +it searches for the line that starts with "Code". + The <SID> before the function name is the script ID. This makes the +function local to the current Vim script file. This avoids problems when a +function with the same name is defined in another script file. See |<SID>|. + + +SILENT MENUS + +The menu executes the {keys} as if you typed them. For a ":" command this +means you will see the command being echoed on the command line. If it's a +long command, the hit-Enter prompt will appear. That can be very annoying! + To avoid this, make the menu silent. This is done with the <silent> +argument. For example, take the call to NextFile() in the previous example. +When you use this menu, you will see this on the command line: + + :call <SNR>34_NextFile() ~ + +To avoid this text on the command line, insert "<silent>" as the first +argument: > + + :amenu <silent> Mine.Next\ File :call <SID>NextFile()<CR> + +Don't use "<silent>" too often. It is not needed for short commands. If you +make a menu for someone else, being able to see the executed command will give +him a hint about what he could have typed, instead of using the mouse. + + +LISTING MENUS + +When a menu command is used without a {keys} part, it lists the already +defined menus. You can specify a {menu-item}, or part of it, to list specific +menus. Example: > + + :amenu + +This lists all menus. That's a long list! Better specify the name of a menu +to get a shorter list: > + + :amenu Edit + +This lists only the "Edit" menu items for all modes. To list only one +specific menu item for Insert mode: > + + :imenu Edit.Undo + +Take care that you type exactly the right name. Case matters here. But the +'&' for accelerators can be omitted. The <Tab> and what comes after it can be +left out as well. + + +DELETING MENUS + +To delete a menu, the same command is used as for listing, but with "menu" +changed to "unmenu". Thus ":menu" becomes, ":unmenu", ":nmenu" becomes +":nunmenu", etc. To delete the "Tools.Make" item for Insert mode: > + + :iunmenu Tools.Make + +You can delete a whole menu, with all its items, by using the menu name. +Example: > + + :aunmenu Syntax + +This deletes the Syntax menu and all the items in it. + +============================================================================== +*42.3* Various + +You can change the appearance of the menus with flags in 'guioptions'. In the +default value they are all included, except "M". You can remove a flag with a +command like: > + + :set guioptions-=m +< + m When removed the menubar is not displayed. + + M When added the default menus are not loaded. + + g When removed the inactive menu items are not made grey + but are completely removed. (Does not work on all + systems.) + + t When removed the tearoff feature is not enabled. + +The dotted line at the top of a menu is not a separator line. When you select +this item, the menu is "teared-off": It is displayed in a separate window. +This is called a tearoff menu. This is useful when you use the same menu +often. + +For translating menu items, see |:menutrans|. + +Since the mouse has to be used to select a menu item, it is a good idea to use +the ":browse" command for selecting a file. And ":confirm" to get a dialog +instead of an error message, e.g., when the current buffer contains changes. +These two can be combined: > + + :amenu File.Open :browse confirm edit<CR> + +The ":browse" makes a file browser appear to select the file to edit. The +":confirm" will pop up a dialog when the current buffer has changes. You can +then select to save the changes, throw them away or cancel the command. + For more complicated items, the confirm() and inputdialog() functions can +be used. The default menus contain a few examples. + +============================================================================== +*42.4* Toolbar and popup menus + +There are two special menus: ToolBar and PopUp. Items that start with these +names do not appear in the normal menu bar. + + +TOOLBAR + +The toolbar appears only when the "T" flag is included in the 'guioptions' +option. + The toolbar uses icons rather than text to represent the command. For +example, the {menu-item} named "ToolBar.New" causes the "New" icon to appear +on the toolbar. + The Vim editor has 28 built-in icons. You can find a table here: +|builtin-tools|. Most of them are used in the default toolbar. You can +redefine what these items do (after the default menus are setup). + You can add another bitmap for a toolbar item. Or define a new toolbar +item with a bitmap. For example, define a new toolbar item with: > + + :tmenu ToolBar.Compile Compile the current file + :amenu ToolBar.Compile :!cc %:S -o %:r:S<CR> + +Now you need to create the icon. For MS-Windows it must be in bitmap format, +with the name "Compile.bmp". For Unix XPM format is used, the file name is +"Compile.xpm". The size must be 18 by 18 pixels. On MS-Windows other sizes +can be used as well, but it will look ugly. + Put the bitmap in the directory "bitmaps" in one of the directories from +'runtimepath'. E.g., for Unix "~/.vim/bitmaps/Compile.xpm". + +You can define tooltips for the items in the toolbar. A tooltip is a short +text that explains what a toolbar item will do. For example "Open file". It +appears when the mouse pointer is on the item, without moving for a moment. +This is very useful if the meaning of the picture isn't that obvious. +Example: > + + :tmenu ToolBar.Make Run make in the current directory +< + Note: + Pay attention to the case used. "Toolbar" and "toolbar" are different + from "ToolBar"! + +To remove a tooltip, use the |:tunmenu| command. + +The 'toolbar' option can be used to display text instead of a bitmap, or both +text and a bitmap. Most people use just the bitmap, since the text takes +quite a bit of space. + + +POPUP MENU + +The popup menu pops up where the mouse pointer is. On MS-Windows you activate +it by clicking the right mouse button. Then you can select an item with the +left mouse button. On Unix the popup menu is used by pressing and holding the +right mouse button. + The popup menu only appears when the 'mousemodel' has been set to "popup" +or "popup_setpos". The difference between the two is that "popup_setpos" +moves the cursor to the mouse pointer position. When clicking inside a +selection, the selection will be used unmodified. When there is a selection +but you click outside of it, the selection is removed. + There is a separate popup menu for each mode. Thus there are never grey +items like in the normal menus. + +What is the meaning of life, the universe and everything? *42* +Douglas Adams, the only person who knew what this question really was about is +now dead, unfortunately. So now you might wonder what the meaning of death +is... + +============================================================================== + +Next chapter: |usr_43.txt| Using filetypes + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_43.txt b/runtime/doc/usr_43.txt new file mode 100644 index 0000000..41b08de --- /dev/null +++ b/runtime/doc/usr_43.txt @@ -0,0 +1,179 @@ +*usr_43.txt* For Vim version 9.1. Last change: 2015 Oct 23 + + VIM USER MANUAL - by Bram Moolenaar + + Using filetypes + + +When you are editing a file of a certain type, for example a C program or a +shell script, you often use the same option settings and mappings. You +quickly get tired of manually setting these each time. This chapter explains +how to do it automatically. + +|43.1| Plugins for a filetype +|43.2| Adding a filetype + + Next chapter: |usr_44.txt| Your own syntax highlighted + Previous chapter: |usr_42.txt| Add new menus +Table of contents: |usr_toc.txt| + +============================================================================== +*43.1* Plugins for a filetype *filetype-plugin* + +How to start using filetype plugins has already been discussed here: +|add-filetype-plugin|. But you probably are not satisfied with the default +settings, because they have been kept minimal. Suppose that for C files you +want to set the 'softtabstop' option to 4 and define a mapping to insert a +three-line comment. You do this with only two steps: + + *your-runtime-dir* +1. Create your own runtime directory. On Unix this usually is "~/.vim". In + this directory create the "ftplugin" directory: > + + mkdir ~/.vim + mkdir ~/.vim/ftplugin +< + When you are not on Unix, check the value of the 'runtimepath' option to + see where Vim will look for the "ftplugin" directory: > + + set runtimepath + +< You would normally use the first directory name (before the first comma). + You might want to prepend a directory name to the 'runtimepath' option in + your |vimrc| file if you don't like the default value. + +2. Create the file "~/.vim/ftplugin/c.vim", with the contents: > + + setlocal softtabstop=4 + noremap <buffer> <LocalLeader>c o/**************<CR><CR>/<Esc> + let b:undo_ftplugin = "setl softtabstop< | unmap <buffer> <LocalLeader>c" + +Try editing a C file. You should notice that the 'softtabstop' option is set +to 4. But when you edit another file it's reset to the default zero. That is +because the ":setlocal" command was used. This sets the 'softtabstop' option +only locally to the buffer. As soon as you edit another buffer, it will be +set to the value set for that buffer. For a new buffer it will get the +default value or the value from the last ":set" command. + +Likewise, the mapping for "\c" will disappear when editing another buffer. +The ":map <buffer>" command creates a mapping that is local to the current +buffer. This works with any mapping command: ":map!", ":vmap", etc. The +|<LocalLeader>| in the mapping is replaced with the value of the +"maplocalleader" variable. + +The line to set b:undo_ftplugin is for when the filetype is set to another +value. In that case you will want to undo your preferences. The +b:undo_ftplugin variable is executed as a command. Watch out for characters +with a special meaning inside a string, such as a backslash. + +You can find examples for filetype plugins in this directory: > + + $VIMRUNTIME/ftplugin/ + +More details about writing a filetype plugin can be found here: +|write-plugin|. + +============================================================================== +*43.2* Adding a filetype + +If you are using a type of file that is not recognized by Vim, this is how to +get it recognized. You need a runtime directory of your own. See +|your-runtime-dir| above. + +Create a file "filetype.vim" which contains an autocommand for your filetype. +(Autocommands were explained in section |40.3|.) Example: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + augroup END + +This will recognize all files that end in ".xyz" as the "xyz" filetype. The +":augroup" commands put this autocommand in the "filetypedetect" group. This +allows removing all autocommands for filetype detection when doing ":filetype +off". The "setf" command will set the 'filetype' option to its argument, +unless it was set already. This will make sure that 'filetype' isn't set +twice. + +You can use many different patterns to match the name of your file. Directory +names can also be included. See |autocmd-patterns|. For example, the files +under "/usr/share/scripts/" are all "ruby" files, but don't have the expected +file name extension. Adding this to the example above: > + + augroup filetypedetect + au BufNewFile,BufRead *.xyz setf xyz + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +However, if you now edit a file /usr/share/scripts/README.txt, this is not a +ruby file. The danger of a pattern ending in "*" is that it quickly matches +too many files. To avoid trouble with this, put the filetype.vim file in +another directory, one that is at the end of 'runtimepath'. For Unix for +example, you could use "~/.vim/after/filetype.vim". + You now put the detection of text files in ~/.vim/filetype.vim: > + + augroup filetypedetect + au BufNewFile,BufRead *.txt setf text + augroup END + +That file is found in 'runtimepath' first. Then use this in +~/.vim/after/filetype.vim, which is found last: > + + augroup filetypedetect + au BufNewFile,BufRead /usr/share/scripts/* setf ruby + augroup END + +What will happen now is that Vim searches for "filetype.vim" files in each +directory in 'runtimepath'. First ~/.vim/filetype.vim is found. The +autocommand to catch *.txt files is defined there. Then Vim finds the +filetype.vim file in $VIMRUNTIME, which is halfway 'runtimepath'. Finally +~/.vim/after/filetype.vim is found and the autocommand for detecting ruby +files in /usr/share/scripts is added. + When you now edit /usr/share/scripts/README.txt, the autocommands are +checked in the order in which they were defined. The *.txt pattern matches, +thus "setf text" is executed to set the filetype to "text". The pattern for +ruby matches too, and the "setf ruby" is executed. But since 'filetype' was +already set to "text", nothing happens here. + When you edit the file /usr/share/scripts/foobar the same autocommands are +checked. Only the one for ruby matches and "setf ruby" sets 'filetype' to +ruby. + + +RECOGNIZING BY CONTENTS + +If your file cannot be recognized by its file name, you might be able to +recognize it by its contents. For example, many script files start with a +line like: + + #!/bin/xyz ~ + +To recognize this script create a file "scripts.vim" in your runtime directory +(same place where filetype.vim goes). It might look like this: > + + if did_filetype() + finish + endif + if getline(1) =~ '^#!.*[/\\]xyz\>' + setf xyz + endif + +The first check with did_filetype() is to avoid that you will check the +contents of files for which the filetype was already detected by the file +name. That avoids wasting time on checking the file when the "setf" command +won't do anything. + The scripts.vim file is sourced by an autocommand in the default +filetype.vim file. Therefore, the order of checks is: + + 1. filetype.vim files before $VIMRUNTIME in 'runtimepath' + 2. first part of $VIMRUNTIME/filetype.vim + 3. all scripts.vim files in 'runtimepath' + 4. remainder of $VIMRUNTIME/filetype.vim + 5. filetype.vim files after $VIMRUNTIME in 'runtimepath' + +If this is not sufficient for you, add an autocommand that matches all files +and sources a script or executes a function to check the contents of the file. + +============================================================================== + +Next chapter: |usr_44.txt| Your own syntax highlighted + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt new file mode 100644 index 0000000..1d1b5a1 --- /dev/null +++ b/runtime/doc/usr_44.txt @@ -0,0 +1,708 @@ +*usr_44.txt* For Vim version 9.1. Last change: 2017 May 06 + + VIM USER MANUAL - by Bram Moolenaar + + Your own syntax highlighted + + +Vim comes with highlighting for a couple of hundred different file types. If +the file you are editing isn't included, read this chapter to find out how to +get this type of file highlighted. Also see |:syn-define| in the reference +manual. + +|44.1| Basic syntax commands +|44.2| Keywords +|44.3| Matches +|44.4| Regions +|44.5| Nested items +|44.6| Following groups +|44.7| Other arguments +|44.8| Clusters +|44.9| Including another syntax file +|44.10| Synchronizing +|44.11| Installing a syntax file +|44.12| Portable syntax file layout + + Next chapter: |usr_45.txt| Select your language + Previous chapter: |usr_43.txt| Using filetypes +Table of contents: |usr_toc.txt| + +============================================================================== +*44.1* Basic syntax commands + +Using an existing syntax file to start with will save you a lot of time. Try +finding a syntax file in $VIMRUNTIME/syntax for a language that is similar. +These files will also show you the normal layout of a syntax file. To +understand it, you need to read the following. + +Let's start with the basic arguments. Before we start defining any new +syntax, we need to clear out any old definitions: > + + :syntax clear + +This isn't required in the final syntax file, but very useful when +experimenting. + +There are more simplifications in this chapter. If you are writing a syntax +file to be used by others, read all the way through the end to find out the +details. + + +LISTING DEFINED ITEMS + +To check which syntax items are currently defined, use this command: > + + :syntax + +You can use this to check which items have actually been defined. Quite +useful when you are experimenting with a new syntax file. It also shows the +colors used for each item, which helps to find out what is what. + To list the items in a specific syntax group use: > + + :syntax list {group-name} + +This also can be used to list clusters (explained in |44.8|). Just include +the @ in the name. + + +MATCHING CASE + +Some languages are not case sensitive, such as Pascal. Others, such as C, are +case sensitive. You need to tell which type you have with the following +commands: > + :syntax case match + :syntax case ignore + +The "match" argument means that Vim will match the case of syntax elements. +Therefore, "int" differs from "Int" and "INT". If the "ignore" argument is +used, the following are equivalent: "Procedure", "PROCEDURE" and "procedure". + The ":syntax case" commands can appear anywhere in a syntax file and affect +the syntax definitions that follow. In most cases, you have only one ":syntax +case" command in your syntax file; if you work with an unusual language that +contains both case-sensitive and non-case-sensitive elements, however, you can +scatter the ":syntax case" command throughout the file. + +============================================================================== +*44.2* Keywords + +The most basic syntax elements are keywords. To define a keyword, use the +following form: > + + :syntax keyword {group} {keyword} ... + +The {group} is the name of a syntax group. With the ":highlight" command you +can assign colors to a {group}. The {keyword} argument is an actual keyword. +Here are a few examples: > + + :syntax keyword xType int long char + :syntax keyword xStatement if then else endif + +This example uses the group names "xType" and "xStatement". By convention, +each group name is prefixed by the filetype for the language being defined. +This example defines syntax for the x language (eXample language without an +interesting name). In a syntax file for "csh" scripts the name "cshType" +would be used. Thus the prefix is equal to the value of 'filetype'. + These commands cause the words "int", "long" and "char" to be highlighted +one way and the words "if", "then", "else" and "endif" to be highlighted +another way. Now you need to connect the x group names to standard Vim +names. You do this with the following commands: > + + :highlight link xType Type + :highlight link xStatement Statement + +This tells Vim to highlight "xType" like "Type" and "xStatement" like +"Statement". See |group-name| for the standard names. + + +UNUSUAL KEYWORDS + +The characters used in a keyword must be in the 'iskeyword' option. If you +use another character, the word will never match. Vim doesn't give a warning +message for this. + The x language uses the '-' character in keywords. This is how it's done: +> + :setlocal iskeyword+=- + :syntax keyword xStatement when-not + +The ":setlocal" command is used to change 'iskeyword' only for the current +buffer. Still it does change the behavior of commands like "w" and "*". If +that is not wanted, don't define a keyword but use a match (explained in the +next section). + +The x language allows for abbreviations. For example, "next" can be +abbreviated to "n", "ne" or "nex". You can define them by using this command: +> + :syntax keyword xStatement n[ext] + +This doesn't match "nextone", keywords always match whole words only. + +============================================================================== +*44.3* Matches + +Consider defining something a bit more complex. You want to match ordinary +identifiers. To do this, you define a match syntax item. This one matches +any word consisting of only lowercase letters: > + + :syntax match xIdentifier /\<\l\+\>/ +< + Note: + Keywords overrule any other syntax item. Thus the keywords "if", + "then", etc., will be keywords, as defined with the ":syntax keyword" + commands above, even though they also match the pattern for + xIdentifier. + +The part at the end is a pattern, like it's used for searching. The // is +used to surround the pattern (like how it's done in a ":substitute" command). +You can use any other character, like a plus or a quote. + +Now define a match for a comment. In the x language it is anything from # to +the end of a line: > + + :syntax match xComment /#.*/ + +Since you can use any search pattern, you can highlight very complex things +with a match item. See |pattern| for help on search patterns. + +============================================================================== +*44.4* Regions + +In the example x language, strings are enclosed in double quotation marks ("). +To highlight strings you define a region. You need a region start (double +quote) and a region end (double quote). The definition is as follows: > + + :syntax region xString start=/"/ end=/"/ + +The "start" and "end" directives define the patterns used to find the start +and end of the region. But what about strings that look like this? + + "A string with a double quote (\") in it" ~ + +This creates a problem: The double quotation marks in the middle of the string +will end the region. You need to tell Vim to skip over any escaped double +quotes in the string. Do this with the skip keyword: > + + :syntax region xString start=/"/ skip=/\\"/ end=/"/ + +The double backslash matches a single backslash, since the backslash is a +special character in search patterns. + +When to use a region instead of a match? The main difference is that a match +item is a single pattern, which must match as a whole. A region starts as +soon as the "start" pattern matches. Whether the "end" pattern is found or +not doesn't matter. Thus when the item depends on the "end" pattern to match, +you cannot use a region. Otherwise, regions are often simpler to define. And +it is easier to use nested items, as is explained in the next section. + +============================================================================== +*44.5* Nested items + +Take a look at this comment: + + %Get input TODO: Skip white space ~ + +You want to highlight TODO in big yellow letters, even though it is in a +comment that is highlighted blue. To let Vim know about this, you define the +following syntax groups: > + + :syntax keyword xTodo TODO contained + :syntax match xComment /%.*/ contains=xTodo + +In the first line, the "contained" argument tells Vim that this keyword can +exist only inside another syntax item. The next line has "contains=xTodo". +This indicates that the xTodo syntax element is inside it. The result is that +the comment line as a whole is matched with "xComment" and made blue. The +word TODO inside it is matched by xTodo and highlighted yellow (highlighting +for xTodo was setup for this). + + +RECURSIVE NESTING + +The x language defines code blocks in curly braces. And a code block may +contain other code blocks. This can be defined this way: > + + :syntax region xBlock start=/{/ end=/}/ contains=xBlock + +Suppose you have this text: + + while i < b { ~ + if a { ~ + b = c; ~ + } ~ + } ~ + +First a xBlock starts at the { in the first line. In the second line another +{ is found. Since we are inside a xBlock item, and it contains itself, a +nested xBlock item will start here. Thus the "b = c" line is inside the +second level xBlock region. Then a } is found in the next line, which matches +with the end pattern of the region. This ends the nested xBlock. Because the +} is included in the nested region, it is hidden from the first xBlock region. +Then at the last } the first xBlock region ends. + + +KEEPING THE END + +Consider the following two syntax items: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment + +You define a comment as anything from % to the end of the line. A +preprocessor directive is anything from # to the end of the line. Because you +can have a comment on a preprocessor line, the preprocessor definition +includes a "contains=xComment" argument. Now look what happens with this +text: + + #define X = Y % Comment text ~ + int foo = 1; ~ + +What you see is that the second line is also highlighted as xPreProc. The +preprocessor directive should end at the end of the line. That is why +you have used "end=/$/". So what is going wrong? + The problem is the contained comment. The comment starts with % and ends +at the end of the line. After the comment ends, the preprocessor syntax +continues. This is after the end of the line has been seen, so the next +line is included as well. + To avoid this problem and to avoid a contained syntax item eating a needed +end of line, use the "keepend" argument. This takes care of +the double end-of-line matching: > + + :syntax region xComment start=/%/ end=/$/ contained + :syntax region xPreProc start=/#/ end=/$/ contains=xComment keepend + + +CONTAINING MANY ITEMS + +You can use the contains argument to specify that everything can be contained. +For example: > + + :syntax region xList start=/\[/ end=/\]/ contains=ALL + +All syntax items will be contained in this one. It also contains itself, but +not at the same position (that would cause an endless loop). + You can specify that some groups are not contained. Thus contain all +groups but the ones that are listed: +> + :syntax region xList start=/\[/ end=/\]/ contains=ALLBUT,xString + +With the "TOP" item you can include all items that don't have a "contained" +argument. "CONTAINED" is used to only include items with a "contained" +argument. See |:syn-contains| for the details. + +============================================================================== +*44.6* Following groups + +The x language has statements in this form: + + if (condition) then ~ + +You want to highlight the three items differently. But "(condition)" and +"then" might also appear in other places, where they get different +highlighting. This is how you can do this: > + + :syntax match xIf /if/ nextgroup=xIfCondition skipwhite + :syntax match xIfCondition /([^)]*)/ contained nextgroup=xThen skipwhite + :syntax match xThen /then/ contained + +The "nextgroup" argument specifies which item can come next. This is not +required. If none of the items that are specified are found, nothing happens. +For example, in this text: + + if not (condition) then ~ + +The "if" is matched by xIf. "not" doesn't match the specified nextgroup +xIfCondition, thus only the "if" is highlighted. + +The "skipwhite" argument tells Vim that white space (spaces and tabs) may +appear in between the items. Similar arguments are "skipnl", which allows a +line break in between the items, and "skipempty", which allows empty lines. +Notice that "skipnl" doesn't skip an empty line, something must match after +the line break. + +============================================================================== +*44.7* Other arguments + +MATCHGROUP + +When you define a region, the entire region is highlighted according to the +group name specified. To highlight the text enclosed in parentheses () with +the group xInside, for example, use the following command: > + + :syntax region xInside start=/(/ end=/)/ + +Suppose, that you want to highlight the parentheses differently. You can do +this with a lot of convoluted region statements, or you can use the +"matchgroup" argument. This tells Vim to highlight the start and end of a +region with a different highlight group (in this case, the xParen group): > + + :syntax region xInside matchgroup=xParen start=/(/ end=/)/ + +The "matchgroup" argument applies to the start or end match that comes after +it. In the previous example both start and end are highlighted with xParen. +To highlight the end with xParenEnd: > + + :syntax region xInside matchgroup=xParen start=/(/ + \ matchgroup=xParenEnd end=/)/ + +A side effect of using "matchgroup" is that contained items will not match in +the start or end of the region. The example for "transparent" uses this. + + +TRANSPARENT + +In a C language file you would like to highlight the () text after a "while" +differently from the () text after a "for". In both of these there can be +nested () items, which should be highlighted in the same way. You must make +sure the () highlighting stops at the matching ). This is one way to do this: +> + :syntax region cWhile matchgroup=cWhile start=/while\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cFor matchgroup=cFor start=/for\s*(/ end=/)/ + \ contains=cCondNest + :syntax region cCondNest start=/(/ end=/)/ contained transparent + +Now you can give cWhile and cFor different highlighting. The cCondNest item +can appear in either of them, but take over the highlighting of the item it is +contained in. The "transparent" argument causes this. + Notice that the "matchgroup" argument has the same group as the item +itself. Why define it then? Well, the side effect of using a matchgroup is +that contained items are not found in the match with the start item then. +This avoids that the cCondNest group matches the ( just after the "while" or +"for". If this would happen, it would span the whole text until the matching +) and the region would continue after it. Now cCondNest only matches after +the match with the start pattern, thus after the first (. + + +OFFSETS + +Suppose you want to define a region for the text between ( and ) after an +"if". But you don't want to include the "if" or the ( and ). You can do this +by specifying offsets for the patterns. Example: > + + :syntax region xCond start=/if\s*(/ms=e+1 end=/)/me=s-1 + +The offset for the start pattern is "ms=e+1". "ms" stands for Match Start. +This defines an offset for the start of the match. Normally the match starts +where the pattern matches. "e+1" means that the match now starts at the end +of the pattern match, and then one character further. + The offset for the end pattern is "me=s-1". "me" stands for Match End. +"s-1" means the start of the pattern match and then one character back. The +result is that in this text: + + if (foo == bar) ~ + +Only the text "foo == bar" will be highlighted as xCond. + +More about offsets here: |:syn-pattern-offset|. + + +ONELINE + +The "oneline" argument indicates that the region does not cross a line +boundary. For example: > + + :syntax region xIfThen start=/if/ end=/then/ oneline + +This defines a region that starts at "if" and ends at "then". But if there is +no "then" after the "if", the region doesn't match. + + Note: + When using "oneline" the region doesn't start if the end pattern + doesn't match in the same line. Without "oneline" Vim does _not_ + check if there is a match for the end pattern. The region starts even + when the end pattern doesn't match in the rest of the file. + + +CONTINUATION LINES AND AVOIDING THEM + +Things now become a little more complex. Let's define a preprocessor line. +This starts with a # in the first column and continues until the end of the +line. A line that ends with \ makes the next line a continuation line. The +way you handle this is to allow the syntax item to contain a continuation +pattern: > + + :syntax region xPreProc start=/^#/ end=/$/ contains=xLineContinue + :syntax match xLineContinue "\\$" contained + +In this case, although xPreProc normally matches a single line, the group +contained in it (namely xLineContinue) lets it go on for more than one line. +For example, it would match both of these lines: + + #define SPAM spam spam spam \ ~ + bacon and spam ~ + +In this case, this is what you want. If it is not what you want, you can call +for the region to be on a single line by adding "excludenl" to the contained +pattern. For example, you want to highlight "end" in xPreProc, but only at +the end of the line. To avoid making the xPreProc continue on the next line, +like xLineContinue does, use "excludenl" like this: > + + :syntax region xPreProc start=/^#/ end=/$/ + \ contains=xLineContinue,xPreProcEnd + :syntax match xPreProcEnd excludenl /end$/ contained + :syntax match xLineContinue "\\$" contained + +"excludenl" must be placed before the pattern. Since "xLineContinue" doesn't +have "excludenl", a match with it will extend xPreProc to the next line as +before. + +============================================================================== +*44.8* Clusters + +One of the things you will notice as you start to write a syntax file is that +you wind up generating a lot of syntax groups. Vim enables you to define a +collection of syntax groups called a cluster. + Suppose you have a language that contains for loops, if statements, while +loops, and functions. Each of them contains the same syntax elements: numbers +and identifiers. You define them like this: > + + :syntax match xFor /^for.*/ contains=xNumber,xIdent + :syntax match xIf /^if.*/ contains=xNumber,xIdent + :syntax match xWhile /^while.*/ contains=xNumber,xIdent + +You have to repeat the same "contains=" every time. If you want to add +another contained item, you have to add it three times. Syntax clusters +simplify these definitions by enabling you to have one cluster stand for +several syntax groups. + To define a cluster for the two items that the three groups contain, use +the following command: > + + :syntax cluster xState contains=xNumber,xIdent + +Clusters are used inside other syntax items just like any syntax group. +Their names start with @. Thus, you can define the three groups like this: > + + :syntax match xFor /^for.*/ contains=@xState + :syntax match xIf /^if.*/ contains=@xState + :syntax match xWhile /^while.*/ contains=@xState + +You can add new group names to this cluster with the "add" argument: > + + :syntax cluster xState add=xString + +You can remove syntax groups from this list as well: > + + :syntax cluster xState remove=xNumber + +============================================================================== +*44.9* Including another syntax file + +The C++ language syntax is a superset of the C language. Because you do not +want to write two syntax files, you can have the C++ syntax file read in the +one for C by using the following command: > + + :runtime! syntax/c.vim + +The ":runtime!" command searches 'runtimepath' for all "syntax/c.vim" files. +This makes the C parts of the C++ syntax be defined like for C files. If you +have replaced the c.vim syntax file, or added items with an extra file, these +will be loaded as well. + After loading the C syntax items the specific C++ items can be defined. +For example, add keywords that are not used in C: > + + :syntax keyword cppStatement new delete this friend using + +This works just like in any other syntax file. + +Now consider the Perl language. A Perl script consists of two distinct parts: +a documentation section in POD format, and a program written in Perl itself. +The POD section starts with "=head" and ends with "=cut". + You want to define the POD syntax in one file, and use it from the Perl +syntax file. The ":syntax include" command reads in a syntax file and stores +the elements it defined in a syntax cluster. For Perl, the statements are as +follows: > + + :syntax include @Pod <sfile>:p:h/pod.vim + :syntax region perlPOD start=/^=head/ end=/^=cut/ contains=@Pod + +When "=head" is found in a Perl file, the perlPOD region starts. In this +region the @Pod cluster is contained. All the items defined as top-level +items in the pod.vim syntax files will match here. When "=cut" is found, the +region ends and we go back to the items defined in the Perl file. + The ":syntax include" command is clever enough to ignore a ":syntax clear" +command in the included file. And an argument such as "contains=ALL" will +only contain items defined in the included file, not in the file that includes +it. + The "<sfile>:p:h/" part uses the name of the current file (<sfile>), +expands it to a full path (:p) and then takes the head (:h). This results in +the directory name of the file. This causes the pod.vim file in the same +directory to be included. + +============================================================================== +*44.10* Synchronizing + +Compilers have it easy. They start at the beginning of a file and parse it +straight through. Vim does not have it so easy. It must start in the middle, +where the editing is being done. So how does it tell where it is? + The secret is the ":syntax sync" command. This tells Vim how to figure out +where it is. For example, the following command tells Vim to scan backward +for the beginning or end of a C-style comment and begin syntax coloring from +there: > + + :syntax sync ccomment + +You can tune this processing with some arguments. The "minlines" argument +tells Vim the minimum number of lines to look backward, and "maxlines" tells +the editor the maximum number of lines to scan. + For example, the following command tells Vim to look at least 10 lines +before the top of the screen: > + + :syntax sync ccomment minlines=10 maxlines=500 + +If it cannot figure out where it is in that space, it starts looking farther +and farther back until it figures out what to do. But it looks no farther +back than 500 lines. (A large "maxlines" slows down processing. A small one +might cause synchronization to fail.) + To make synchronizing go a bit faster, tell Vim which syntax items can be +skipped. Every match and region that only needs to be used when actually +displaying text can be given the "display" argument. + By default, the comment to be found will be colored as part of the Comment +syntax group. If you want to color things another way, you can specify a +different syntax group: > + + :syntax sync ccomment xAltComment + +If your programming language does not have C-style comments in it, you can try +another method of synchronization. The simplest way is to tell Vim to space +back a number of lines and try to figure out things from there. The following +command tells Vim to go back 150 lines and start parsing from there: > + + :syntax sync minlines=150 + +A large "minlines" value can make Vim slower, especially when scrolling +backwards in the file. + Finally, you can specify a syntax group to look for by using this command: +> + :syntax sync match {sync-group-name} + \ grouphere {group-name} {pattern} + +This tells Vim that when it sees {pattern} the syntax group named {group-name} +begins just after the pattern given. The {sync-group-name} is used to give a +name to this synchronization specification. For example, the sh scripting +language begins an if statement with "if" and ends it with "fi": + + if [ --f file.txt ] ; then ~ + echo "File exists" ~ + fi ~ + +To define a "grouphere" directive for this syntax, you use the following +command: > + + :syntax sync match shIfSync grouphere shIf "\<if\>" + +The "groupthere" argument tells Vim that the pattern ends a group. For +example, the end of the if/fi group is as follows: > + + :syntax sync match shIfSync groupthere NONE "\<fi\>" + +In this example, the NONE tells Vim that you are not in any special syntax +region. In particular, you are not inside an if block. + +You also can define matches and regions that are with no "grouphere" or +"groupthere" arguments. These groups are for syntax groups skipped during +synchronization. For example, the following skips over anything inside {}, +even if it would normally match another synchronization method: > + + :syntax sync match xSpecial /{.*}/ + +More about synchronizing in the reference manual: |:syn-sync|. + +============================================================================== +*44.11* Installing a syntax file + +When your new syntax file is ready to be used, drop it in a "syntax" directory +in 'runtimepath'. For Unix that would be "~/.vim/syntax". + The name of the syntax file must be equal to the file type, with ".vim" +added. Thus for the x language, the full path of the file would be: + + ~/.vim/syntax/x.vim ~ + +You must also make the file type be recognized. See |43.2|. + +If your file works well, you might want to make it available to other Vim +users. First read the next section to make sure your file works well for +others. Then e-mail it to the Vim maintainer: <maintainer@vim.org>. Also +explain how the filetype can be detected. With a bit of luck your file will +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. + 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: +> + :syntax keyword cType off_t uint + +Write the file with the same name as the original syntax file. In this case +"c.vim". Place it in a directory near the end of 'runtimepath'. This makes +it loaded after the original syntax file. For Unix this would be: + + ~/.vim/after/syntax/c.vim ~ + +============================================================================== +*44.12* Portable syntax file layout + +Wouldn't it be nice if all Vim users exchange syntax files? To make this +possible, the syntax file must follow a few guidelines. + +Start with a header that explains what the syntax file is for, who maintains +it and when it was last updated. Don't include too much information about +changes history, not many people will read it. Example: > + + " Vim syntax file + " Language: C + " Maintainer: Bram Moolenaar <Bram@vim.org> + " Last Change: 2001 Jun 18 + " Remark: Included by the C++ syntax. + +Use the same layout as the other syntax files. Using an existing syntax file +as an example will save you a lot of time. + +Choose a good, descriptive name for your syntax file. Use lowercase letters +and digits. Don't make it too long, it is used in many places: The name of +the syntax file "name.vim", 'filetype', b:current_syntax and the start of each +syntax group (nameType, nameStatement, nameString, etc). + +Start with a check for "b:current_syntax". If it is defined, some other +syntax file, earlier in 'runtimepath' was already loaded: > + + if exists("b:current_syntax") + finish + endif + +Set "b:current_syntax" to the name of the syntax at the end. Don't forget +that included files do this too, you might have to reset "b:current_syntax" if +you include two files. + +Do not include anything that is a user preference. Don't set 'tabstop', +'expandtab', etc. These belong in a filetype plugin. + +Do not include mappings or abbreviations. Only include setting 'iskeyword' if +it is really necessary for recognizing keywords. + +To allow users select their own preferred colors, make a different group name +for every kind of highlighted item. Then link each of them to one of the +standard highlight groups. That will make it work with every color scheme. +If you select specific colors it will look bad with some color schemes. And +don't forget that some people use a different background color, or have only +eight colors available. + +For the linking use "hi def link", so that the user can select different +highlighting before your syntax file is loaded. Example: > + + hi def link nameString String + hi def link nameNumber Number + hi def link nameCommand Statement + ... etc ... + +Add the "display" argument to items that are not used when syncing, to speed +up scrolling backwards and CTRL-L. + +============================================================================== + +Next chapter: |usr_45.txt| Select your language + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_45.txt b/runtime/doc/usr_45.txt new file mode 100644 index 0000000..4a3684e --- /dev/null +++ b/runtime/doc/usr_45.txt @@ -0,0 +1,413 @@ +*usr_45.txt* For Vim version 9.1. Last change: 2022 May 13 + + VIM USER MANUAL - by Bram Moolenaar + + Select your language (locale) + + +The messages in Vim can be given in several languages. This chapter explains +how to change which one is used. Also, the different ways to work with files +in various languages is explained. + +|45.1| Language for Messages +|45.2| Language for Menus +|45.3| Using another encoding +|45.4| Editing files with a different encoding +|45.5| Entering language text + + Next chapter: |usr_50.txt| Advanced Vim script writing + Previous chapter: |usr_44.txt| Your own syntax highlighted +Table of contents: |usr_toc.txt| + +============================================================================== +*45.1* Language for Messages + +When you start Vim, it checks the environment to find out what language you +are using. Mostly this should work fine, and you get the messages in your +language (if they are available). To see what the current language is, use +this command: > + + :language + +If it replies with "C", this means the default is being used, which is +English. + + Note: + Using different languages only works when Vim was compiled to handle + it. To find out if it works, use the ":version" command and check the + output for "+gettext" and "+multi_lang". If they are there, you are + OK. If you see "-gettext" or "-multi_lang" you will have to find + another Vim. + +What if you would like your messages in a different language? There are +several ways. Which one you should use depends on the capabilities of your +system. + The first way is to set the environment to the desired language before +starting Vim. Example for Unix: > + + env LANG=de_DE.ISO_8859-1 vim + +This only works if the language is available on your system. The advantage is +that all the GUI messages and things in libraries will use the right language +as well. A disadvantage is that you must do this before starting Vim. If you +want to change language while Vim is running, you can use the second method: > + + :language fr_FR.ISO_8859-1 + +This way you can try out several names for your language. You will get an +error message when it's not supported on your system. You don't get an error +when translated messages are not available. Vim will silently fall back to +using English. + To find out which languages are supported on your system, find the +directory where they are listed. On my system it is "/usr/share/locale". On +some systems it's in "/usr/lib/locale". The manual page for "setlocale" +should give you a hint where it is found on your system. + Be careful to type the name exactly as it should be. Upper and lowercase +matter, and the '-' and '_' characters are easily confused. + +You can also set the language separately for messages, edited text and the +time format. See |:language|. + + +DO-IT-YOURSELF MESSAGE TRANSLATION + +If translated messages are not available for your language, you could write +them yourself. To do this, get the source code for Vim and the GNU gettext +package. After unpacking the sources, instructions can be found in the +directory src/po/README.txt. + It's not too difficult to do the translation. You don't need to be a +programmer. You must know both English and the language you are translating +to, of course. + When you are satisfied with the translation, consider making it available +to others. Upload it at vim-online (http://vim.sf.net) or e-mail it to +the Vim maintainer <maintainer@vim.org>. Or both. + +============================================================================== +*45.2* Language for Menus + +The default menus are in English. To be able to use your local language, they +must be translated. Normally this is automatically done for you if the +environment is set for your language, just like with messages. You don't need +to do anything extra for this. But it only works if translations for the +language are available. + Suppose you are in Germany, with the language set to German, but prefer to +use "File" instead of "Datei". You can switch back to using the English menus +this way: > + + :set langmenu=none + +It is also possible to specify a language: > + + :set langmenu=nl_NL.ISO_8859-1 + +Like above, differences between "-" and "_" matter. However, upper/lowercase +differences are ignored here. + The 'langmenu' option must be set before the menus are loaded. Once the +menus have been defined changing 'langmenu' has no direct effect. Therefore, +put the command to set 'langmenu' in your vimrc file. + If you really want to switch menu language while running Vim, you can do it +this way: > + + :source $VIMRUNTIME/delmenu.vim + :set langmenu=de_DE.ISO_8859-1 + :source $VIMRUNTIME/menu.vim + +There is one drawback: All menus that you defined yourself will be gone. You +will need to redefine them as well. + + +DO-IT-YOURSELF MENU TRANSLATION + +To see which menu translations are available, look in this directory: + + $VIMRUNTIME/lang ~ + +The files are called menu_{language}.vim. If you don't see the language you +want to use, you can do your own translations. The simplest way to do this is +by copying one of the existing language files, and change it. + First find out the name of your language with the ":language" command. Use +this name, but with all letters made lowercase. Then copy the file to your +own runtime directory, as found early in 'runtimepath'. For example, for Unix +you would do: > + + :!cp $VIMRUNTIME/lang/menu_ko_kr.euckr.vim ~/.vim/lang/menu_nl_be.iso_8859-1.vim + +You will find hints for the translation in "$VIMRUNTIME/lang/README.txt". + +============================================================================== +*45.3* Using another encoding + +Vim guesses that the files you are going to edit are encoded for your +language. For many European languages this is "latin1". Then each byte is +one character. That means there are 256 different characters possible. For +Asian languages this is not sufficient. These mostly use a double-byte +encoding, providing for over ten thousand possible characters. This still +isn't enough when a text is to contain several different languages. This is +where Unicode comes in. It was designed to include all characters used in +commonly used languages. This is the "Super encoding that replaces all +others". But it isn't used that much yet. + Fortunately, Vim supports these three kinds of encodings. And, with some +restrictions, you can use them even when your environment uses another +language than the text. + Nevertheless, when you only edit files that are in the encoding of your +language, the default should work fine and you don't need to do anything. The +following is only relevant when you want to edit different languages. + + +USING UNICODE IN THE GUI + +The nice thing about Unicode is that other encodings can be converted to it +and back without losing information. When you make Vim use Unicode +internally, you will be able to edit files in any encoding. + Unfortunately, the number of systems supporting Unicode is still limited. +Thus it's unlikely that your language uses it. You need to tell Vim you want +to use Unicode, and how to handle interfacing with the rest of the system. + Let's start with the GUI version of Vim, which is able to display Unicode +characters. This should work: > + + :set encoding=utf-8 + :set guifont=-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +The 'encoding' option tells Vim the encoding of the characters that you use. +This applies to the text in buffers (files you are editing), registers, Vim +script files, etc. You can regard 'encoding' as the setting for the internals +of Vim. + This example assumes you have this font on your system. The name in the +example is for the X Window System. This font is in a package that is used to +enhance xterm with Unicode support. If you don't have this font, you might +find it here: + + http://www.cl.cam.ac.uk/~mgk25/download/ucs-fonts.tar.gz ~ + +For MS-Windows, some fonts have a limited number of Unicode characters. Try +using the "Courier New" font. You can use the Edit/Select Font... menu to +select and try out the fonts available. Only fixed-width fonts can be used +though. Example: > + + :set guifont=courier_new:h12 + +If it doesn't work well, try getting a fontpack. If Microsoft didn't move it, +you can find it here: + + http://www.microsoft.com/typography/fonts/default.aspx ~ + +Now you have told Vim to use Unicode internally and display text with a +Unicode font. Typed characters still arrive in the encoding of your original +language. This requires converting them to Unicode. Tell Vim the language +from which to convert with the 'termencoding' option. You can do it like +this: > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This assigns the old value of 'encoding' to 'termencoding' before setting +'encoding' to utf-8. You will have to try out if this really works for your +setup. It should work especially well when using an input method for an Asian +language, and you want to edit Unicode text. + + +USING UNICODE IN A UNICODE TERMINAL + +There are terminals that support Unicode directly. The standard xterm that +comes with XFree86 is one of them. Let's use that as an example. + First of all, the xterm must have been compiled with Unicode support. See +|UTF8-xterm| how to check that and how to compile it when needed. + Start the xterm with the "-u8" argument. You might also need so specify a +font. Example: > + + xterm -u8 -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1 + +Now you can run Vim inside this terminal. Set 'encoding' to "utf-8" as +before. That's all. + + +USING UNICODE IN AN ORDINARY TERMINAL + +Suppose you want to work with Unicode files, but don't have a terminal with +Unicode support. You can do this with Vim, although characters that are not +supported by the terminal will not be displayed. The layout of the text +will be preserved. > + + :let &termencoding = &encoding + :set encoding=utf-8 + +This is the same as what was used for the GUI. But it works differently: Vim +will convert the displayed text before sending it to the terminal. That +avoids that the display is messed up with strange characters. + For this to work the conversion between 'termencoding' and 'encoding' must +be possible. Vim will convert from latin1 to Unicode, thus that always works. +For other conversions the |+iconv| feature is required. + Try editing a file with Unicode characters in it. You will notice that Vim +will put a question mark (or underscore or some other character) in places +where a character should be that the terminal can't display. Move the cursor +to a question mark and use this command: > + + ga + +Vim will display a line with the code of the character. This gives you a hint +about what character it is. You can look it up in a Unicode table. You could +actually view a file that way, if you have lots of time at hand. + + Note: + Since 'encoding' is used for all text inside Vim, changing it makes + all non-ASCII text invalid. You will notice this when using registers + and the 'viminfo' file (e.g., a remembered search pattern). It's + recommended to set 'encoding' in your vimrc file, and leave it alone. + +============================================================================== +*45.4* Editing files with a different encoding + +Suppose you have setup Vim to use Unicode, and you want to edit a file that is +in 16-bit Unicode. Sounds simple, right? Well, Vim actually uses utf-8 +encoding internally, thus the 16-bit encoding must be converted, since there +is a difference between the character set (Unicode) and the encoding (utf-8 or +16-bit). + Vim will try to detect what kind of file you are editing. It uses the +encoding names in the 'fileencodings' option. When using Unicode, the default +value is: "ucs-bom,utf-8,latin1". This means that Vim checks the file to see +if it's one of these encodings: + + ucs-bom File must start with a Byte Order Mark (BOM). This + allows detection of 16-bit, 32-bit and utf-8 Unicode + encodings. + utf-8 utf-8 Unicode. This is rejected when a sequence of + bytes is illegal in utf-8. + latin1 The good old 8-bit encoding. Always works. + +When you start editing that 16-bit Unicode file, and it has a BOM, Vim will +detect this and convert the file to utf-8 when reading it. The 'fileencoding' +option (without s at the end) is set to the detected value. In this case it +is "utf-16le". That means it's Unicode, 16-bit and little-endian. This +file format is common on MS-Windows (e.g., for registry files). + When writing the file, Vim will compare 'fileencoding' with 'encoding'. If +they are different, the text will be converted. + An empty value for 'fileencoding' means that no conversion is to be done. +Thus the text is assumed to be encoded with 'encoding'. + +If the default 'fileencodings' value is not good for you, set it to the +encodings you want Vim to try. Only when a value is found to be invalid will +the next one be used. Putting "latin1" first doesn't work, because it is +never illegal. An example, to fall back to Japanese when the file doesn't +have a BOM and isn't utf-8: > + + :set fileencodings=ucs-bom,utf-8,sjis + +See |encoding-values| for suggested values. Other values may work as well. +This depends on the conversion available. + + +FORCING AN ENCODING + +If the automatic detection doesn't work you must tell Vim what encoding the +file is. Example: > + + :edit ++enc=koi8-r russian.txt + +The "++enc" part specifies the name of the encoding to be used for this file +only. Vim will convert the file from the specified encoding, Russian in this +example, to 'encoding'. 'fileencoding' will also be set to the specified +encoding, so that the reverse conversion can be done when writing the file. + The same argument can be used when writing the file. This way you can +actually use Vim to convert a file. Example: > + + :write ++enc=utf-8 russian.txt +< + Note: + Conversion may result in lost characters. Conversion from an encoding + to Unicode and back is mostly free of this problem, unless there are + illegal characters. Conversion from Unicode to other encodings often + loses information when there was more than one language in the file. + +============================================================================== +*45.5* Entering language text + +Computer keyboards don't have much more than a hundred keys. Some languages +have thousands of characters, Unicode has over hundred thousand. So how do +you type these characters? + First of all, when you don't use too many of the special characters, you +can use digraphs. This was already explained in |24.9|. + When you use a language that uses many more characters than keys on your +keyboard, you will want to use an Input Method (IM). This requires learning +the translation from typed keys to resulting character. When you need an IM +you probably already have one on your system. It should work with Vim like +with other programs. For details see |mbyte-XIM| for the X Window system and +|mbyte-IME| for MS-Windows. + + +KEYMAPS + +For some languages the character set is different from latin, but uses a +similar number of characters. It's possible to map keys to characters. Vim +uses keymaps for this. + Suppose you want to type Hebrew. You can load the keymap like this: > + + :set keymap=hebrew + +Vim will try to find a keymap file for you. This depends on the value of +'encoding'. If no matching file was found, you will get an error message. + +Now you can type Hebrew in Insert mode. In Normal mode, and when typing a ":" +command, Vim automatically switches to English. You can use this command to +switch between Hebrew and English: > + + CTRL-^ + +This only works in Insert mode and Command-line mode. In Normal mode it does +something completely different (jumps to alternate file). + The usage of the keymap is indicated in the mode message, if you have the +'showmode' option set. In the GUI Vim will indicate the usage of keymaps with +a different cursor color. + You can also change the usage of the keymap with the 'iminsert' and +'imsearch' options. + +To see the list of mappings, use this command: > + + :lmap + +To find out which keymap files are available, in the GUI you can use the +Edit/Keymap menu. Otherwise you can use this command: > + + :echo globpath(&rtp, "keymap/*.vim") + + +DO-IT-YOURSELF KEYMAPS + +You can create your own keymap file. It's not very difficult. Start with +a keymap file that is similar to the language you want to use. Copy it to the +"keymap" directory in your runtime directory. For example, for Unix, you +would use the directory "~/.vim/keymap". + The name of the keymap file must look like this: + + keymap/{name}.vim ~ +or + keymap/{name}_{encoding}.vim ~ + +{name} is the name of the keymap. Chose a name that is obvious, but different +from existing keymaps (unless you want to replace an existing keymap file). +{name} cannot contain an underscore. Optionally, add the encoding used after +an underscore. Examples: + + keymap/hebrew.vim ~ + keymap/hebrew_utf-8.vim ~ + +The contents of the file should be self-explanatory. Look at a few of the +keymaps that are distributed with Vim. For the details, see |mbyte-keymap|. + + +LAST RESORT + +If all other methods fail, you can enter any character with CTRL-V: + + encoding type range ~ + 8-bit CTRL-V 123 decimal 0-255 + 8-bit CTRL-V x a1 hexadecimal 00-ff + 16-bit CTRL-V u 013b hexadecimal 0000-ffff + 31-bit CTRL-V U 001303a4 hexadecimal 00000000-7fffffff + +Don't type the spaces. See |i_CTRL-V_digit| for the details. + +============================================================================== + +Next chapter: |usr_50.txt| Advanced Vim script writing + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_50.txt b/runtime/doc/usr_50.txt new file mode 100644 index 0000000..ee377ca --- /dev/null +++ b/runtime/doc/usr_50.txt @@ -0,0 +1,131 @@ +*usr_50.txt* For Vim version 9.1. Last change: 2022 Jun 20 + + VIM USER MANUAL - by Bram Moolenaar + + Advanced Vim script writing + + +|50.1| Exceptions +|50.2| Function with variable number of arguments +|50.3| Restoring the view + + Next chapter: |usr_51.txt| Create a plugin + Previous chapter: |usr_45.txt| Select your language (local) +Table of contents: |usr_toc.txt| + +============================================================================== +*50.1* Exceptions + +Let's start with an example: > + + try + read ~/templates/pascal.tmpl + catch /E484:/ + echo "Sorry, the Pascal template file cannot be found." + endtry + +The `read` command will fail if the file does not exist. Instead of +generating an error message, this code catches the error and gives the user a +message with more information. + +For the commands in between `try` and `endtry` errors are turned into +exceptions. An exception is a string. In the case of an error the string +contains the error message. And every error message has a number. In this +case, the error we catch contains "E484:". This number is guaranteed to stay +the same (the text may change, e.g., it may be translated). + +Besides being able to give a nice error message, Vim will also continue +executing commands after the `:endtry`. Otherwise, once an uncaught error is +encountered, execution of the script/function/mapping will be aborted. + +When the `read` command causes another error, the pattern "E484:" will not +match in it. Thus this exception will not be caught and result in the usual +error message and execution is aborted. + +You might be tempted to do this: > + + try + read ~/templates/pascal.tmpl + catch + echo "Sorry, the Pascal template file cannot be found." + endtry + +This means all errors are caught. But then you will not see an error that +would indicate a completely different problem, such as "E21: Cannot make +changes, 'modifiable' is off". Think twice before you catch any error! + +Another useful mechanism is the `finally` command: > + + var tmp = tempname() + try + exe ":.,$write " .. tmp + exe "!filter " .. tmp + :.,$delete + exe ":$read " .. tmp + finally + delete(tmp) + endtry + +This filters the lines from the cursor until the end of the file through the +"filter" command, which takes a file name argument. No matter if the +filtering works, if something goes wrong in between `try` and `finally` or the +user cancels the filtering by pressing CTRL-C, the `delete(tmp)` call is +always executed. This makes sure you don't leave the temporary file behind. + +The `finally` does not catch the exception, the error will still abort +further execution. + +More information about exception handling can be found in the reference +manual: |exception-handling|. + +============================================================================== +*50.2* Function with variable number of arguments + +Vim enables you to define functions that have a variable number of arguments. +The following command, for instance, defines a function that must have 1 +argument (start) and can have up to 20 additional arguments: > + + def Show(start: string, ...items: list<string>) + +The variable "items" will be a list in the function containing the extra +arguments. You can use it like any list, for example: > + + def Show(start: string, ...items: list<string>) + echohl Title + echo "start is " .. start + echohl None + for index in range(len(items)) + echon $" Arg {index} is {items[index]}" + endfor + echo + enddef + +You can call it like this: > + + Show('Title', 'one', 'two', 'three') +< start is Title Arg 0 is one Arg 1 is two Arg 2 is three ~ + +This uses the `echohl` command to specify the highlighting used for the +following `echo` command. `echohl None` stops it again. The `echon` command +works like `echo`, but doesn't output a line break. + +If you call it with one argument the "items" list will be empty. +`range(len(items))` returns a list with the indexes, what `for` loops over, +we'll explain that further down. + +============================================================================== +*50.3* Restoring the view + +Sometimes you want to jump around, make a change and then go back to the same +position and view. For example to change something in the file header. This +can be done with two functions: > + + var view = winsaveview() + # Move around, make changes + winrestview(view) + +============================================================================== + +Next chapter: |usr_51.txt| Create a plugin + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_51.txt b/runtime/doc/usr_51.txt new file mode 100644 index 0000000..f2b5e13 --- /dev/null +++ b/runtime/doc/usr_51.txt @@ -0,0 +1,694 @@ +*usr_51.txt* For Vim version 9.1. Last change: 2022 Jun 03 + + VIM USER MANUAL - by Bram Moolenaar + + Write plugins + + +Plugins can be used to define settings for a specific type of file, syntax +highlighting and many other things. This chapter explains how to write the +most common Vim plugins. + +|51.1| Writing a generic plugin +|51.2| Writing a filetype plugin +|51.3| Writing a compiler plugin +|51.4| Distributing Vim scripts + + Next chapter: |usr_52.txt| Write large plugins + Previous chapter: |usr_50.txt| Advanced Vim script writing +Table of contents: |usr_toc.txt| + +============================================================================== +*51.1* Writing a generic plugin *write-plugin* + +You can write a Vim script in such a way that many people can use it. This is +called a plugin. Vim users can drop your script in their plugin directory and +use its features right away |add-plugin|. + +There are actually two types of plugins: + + global plugins: For all types of files. +filetype plugins: Only for files of a specific type. + +In this section the first type is explained. Most items are also relevant for +writing filetype plugins. The specifics for filetype plugins are in the next +section |write-filetype-plugin|. + +We will use |Vim9| syntax here, the recommended way to write new plugins. +Make sure the file starts with the `vim9script` command. + + +NAME + +First of all you must choose a name for your plugin. The features provided +by the plugin should be clear from its name. And it should be unlikely that +someone else writes a plugin with the same name but which does something +different. + +A script that corrects typing mistakes could be called "typecorrect.vim". We +will use it here as an example. + +For the plugin to work for everybody, it should follow a few guidelines. This +will be explained step-by-step. The complete example plugin is at the end. + + +BODY + +Let's start with the body of the plugin, the lines that do the actual work: > + + 12 iabbrev teh the + 13 iabbrev otehr other + 14 iabbrev wnat want + 15 iabbrev synchronisation + 16 \ synchronization + +The actual list should be much longer, of course. + +The line numbers have only been added to explain a few things, don't put them +in your plugin file! + + +FIRST LINE +> + 1 vim9script noclear + +You need to use `vim9script` as the very first command. Best is to put it in +the very first line. + +The script we are writing will have a `finish` command to bail out when it is +loaded a second time. To avoid that the items defined in the script are lost +the "noclear" argument is used. More info about this at |vim9-reload|. + + +HEADER + +You will probably add new corrections to the plugin and soon have several +versions lying around. And when distributing this file, people will want to +know who wrote this wonderful plugin and where they can send remarks. +Therefore, put a header at the top of your plugin: > + + 2 # Vim global plugin for correcting typing mistakes + 3 # Last Change: 2021 Dec 30 + 4 # Maintainer: Bram Moolenaar <Bram@vim.org> + +About copyright and licensing: Since plugins are very useful and it's hardly +worth restricting their distribution, please consider making your plugin +either public domain or use the Vim |license|. A short note about this near +the top of the plugin should be sufficient. Example: > + + 5 # License: This file is placed in the public domain. + + +NOT LOADING + +It is possible that a user doesn't always want to load this plugin. Or the +system administrator has dropped it in the system-wide plugin directory, but a +user has their own plugin they want to use. Then the user must have a chance +to disable loading this specific plugin. These lines will make it possible: > + + 7 if exists("g:loaded_typecorrect") + 8 finish + 9 endif + 10 g:loaded_typecorrect = 1 + +This also avoids that when the script is loaded twice it would pointlessly +redefine functions and cause trouble for autocommands that are added twice. + +The name is recommended to start with "g:loaded_" and then the file name of +the plugin, literally. The "g:" is prepended to make the variable global, so +that other places can check whether its functionality is available. Without +"g:" it would be local to the script. + +Using `finish` stops Vim from reading the rest of the file, it's much quicker +than using if-endif around the whole file, since Vim would still need to parse +the commands to find the `endif`. + + +MAPPING + +Now let's make the plugin more interesting: We will add a mapping that adds a +correction for the word under the cursor. We could just pick a key sequence +for this mapping, but the user might already use it for something else. To +allow the user to define which keys a mapping in a plugin uses, the <Leader> +item can be used: > + + 20 map <unique> <Leader>a <Plug>TypecorrAdd; + +The "<Plug>TypecorrAdd;" thing will do the work, more about that further on. + +The user can set the "g:mapleader" variable to the key sequence that they want +plugin mappings to start with. Thus if the user has done: > + + g:mapleader = "_" + +the mapping will define "_a". If the user didn't do this, the default value +will be used, which is a backslash. Then a map for "\a" will be defined. + +Note that <unique> is used, this will cause an error message if the mapping +already happened to exist. |:map-<unique>| + +But what if the user wants to define their own key sequence? We can allow +that with this mechanism: > + + 19 if !hasmapto('<Plug>TypecorrAdd;') + 20 map <unique> <Leader>a <Plug>TypecorrAdd; + 21 endif + +This checks if a mapping to "<Plug>TypecorrAdd;" already exists, and only +defines the mapping from "<Leader>a" if it doesn't. The user then has a +chance of putting this in their vimrc file: > + + map ,c <Plug>TypecorrAdd; + +Then the mapped key sequence will be ",c" instead of "_a" or "\a". + + +PIECES + +If a script gets longer, you often want to break up the work in pieces. You +can use functions or mappings for this. But you don't want these functions +and mappings to interfere with the ones from other scripts. For example, you +could define a function Add(), but another script could try to define the same +function. To avoid this, we define the function local to the script. +Fortunately, in |Vim9| script this is the default. In a legacy script you +would need to prefix the name with "s:". + +We will define a function that adds a new typing correction: > + + 28 def Add(from: string, correct: bool) + 29 var to = input($"type the correction for {from}: ") + 30 exe $":iabbrev {from} {to}" + ... + 34 enddef + +Now we can call the function Add() from within this script. If another +script also defines Add(), it will be local to that script and can only +be called from that script. There can also be a global g:Add() function, +which is again another function. + +<SID> can be used with mappings. It generates a script ID, which identifies +the current script. In our typing correction plugin we use it like this: > + + 22 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add + ... + 26 noremap <SID>Add :call <SID>Add(expand("<cword>"), true)<CR> + +Thus when a user types "\a", this sequence is invoked: > + + \a -> <Plug>TypecorrAdd; -> <SID>Add -> :call <SID>Add(...) + +If another script also maps <SID>Add, it will get another script ID and +thus define another mapping. + +Note that instead of Add() we use <SID>Add() here. That is because the +mapping is typed by the user, thus outside of the script context. The <SID> +is translated to the script ID, so that Vim knows in which script to look for +the Add() function. + +This is a bit complicated, but it's required for the plugin to work together +with other plugins. The basic rule is that you use <SID>Add() in mappings and +Add() in other places (the script itself, autocommands, user commands). + +We can also add a menu entry to do the same as the mapping: > + + 24 noremenu <script> Plugin.Add\ Correction <SID>Add + +The "Plugin" menu is recommended for adding menu items for plugins. In this +case only one item is used. When adding more items, creating a submenu is +recommended. For example, "Plugin.CVS" could be used for a plugin that offers +CVS operations "Plugin.CVS.checkin", "Plugin.CVS.checkout", etc. + +Note that in line 28 ":noremap" is used to avoid that any other mappings cause +trouble. Someone may have remapped ":call", for example. In line 24 we also +use ":noremap", but we do want "<SID>Add" to be remapped. This is why +"<script>" is used here. This only allows mappings which are local to the +script. |:map-<script>| The same is done in line 26 for ":noremenu". +|:menu-<script>| + + +<SID> AND <Plug> *using-<Plug>* + +Both <SID> and <Plug> are used to avoid that mappings of typed keys interfere +with mappings that are only to be used from other mappings. Note the +difference between using <SID> and <Plug>: + +<Plug> is visible outside of the script. It is used for mappings which the + user might want to map a key sequence to. <Plug> is a special code + that a typed key will never produce. + To make it very unlikely that other plugins use the same sequence of + characters, use this structure: <Plug> scriptname mapname + In our example the scriptname is "Typecorr" and the mapname is "Add". + We add a semicolon as the terminator. This results in + "<Plug>TypecorrAdd;". Only the first character of scriptname and + mapname is uppercase, so that we can see where mapname starts. + +<SID> is the script ID, a unique identifier for a script. + Internally Vim translates <SID> to "<SNR>123_", where "123" can be any + number. Thus a function "<SID>Add()" will have a name "<SNR>11_Add()" + in one script, and "<SNR>22_Add()" in another. You can see this if + you use the ":function" command to get a list of functions. The + translation of <SID> in mappings is exactly the same, that's how you + can call a script-local function from a mapping. + + +USER COMMAND + +Now let's add a user command to add a correction: > + + 36 if !exists(":Correct") + 37 command -nargs=1 Correct :call Add(<q-args>, false) + 38 endif + +The user command is defined only if no command with the same name already +exists. Otherwise we would get an error here. Overriding the existing user +command with ":command!" is not a good idea, this would probably make the user +wonder why the command they defined themselves doesn't work. |:command| +If it did happen you can find out who to blame with: > + + verbose command Correct + + +SCRIPT VARIABLES + +When a variable starts with "s:" it is a script variable. It can only be used +inside a script. Outside the script it's not visible. This avoids trouble +with using the same variable name in different scripts. The variables will be +kept as long as Vim is running. And the same variables are used when sourcing +the same script again. |s:var| + +The nice thing about |Vim9| script is that variables are local to the script +by default. You can prepend "s:" if you like, but you do not need to. And +functions in the script can also use the script variables without a prefix +(they must be declared before the function for this to work). + +Script-local variables can also be used in functions, autocommands and user +commands that are defined in the script. Thus they are the perfect way to +share information between parts of your plugin, without it leaking out. In +our example we can add a few lines to count the number of corrections: > + + 17 var count = 4 + ... + 28 def Add(from: string, correct: bool) + ... + 32 count += 1 + 33 echo "you now have " .. count .. " corrections" + 34 enddef + +"count" is declared and initialized to 4 in the script itself. When later +the Add() function is called, it increments "count". It doesn't matter from +where the function was called, since it has been defined in the script, it +will use the local variables from this script. + + +THE RESULT + +Here is the resulting complete example: > + + 1 vim9script noclear + 2 # Vim global plugin for correcting typing mistakes + 3 # Last Change: 2021 Dec 30 + 4 # Maintainer: Bram Moolenaar <Bram@vim.org> + 5 # License: This file is placed in the public domain. + 6 + 7 if exists("g:loaded_typecorrect") + 8 finish + 9 endif + 10 g:loaded_typecorrect = 1 + 11 + 12 iabbrev teh the + 13 iabbrev otehr other + 14 iabbrev wnat want + 15 iabbrev synchronisation + 16 \ synchronization + 17 var count = 4 + 18 + 19 if !hasmapto('<Plug>TypecorrAdd;') + 20 map <unique> <Leader>a <Plug>TypecorrAdd; + 21 endif + 22 noremap <unique> <script> <Plug>TypecorrAdd; <SID>Add + 23 + 24 noremenu <script> Plugin.Add\ Correction <SID>Add + 25 + 26 noremap <SID>Add :call <SID>Add(expand("<cword>"), true)<CR> + 27 + 28 def Add(from: string, correct: bool) + 29 var to = input("type the correction for " .. from .. ": ") + 30 exe ":iabbrev " .. from .. " " .. to + 31 if correct | exe "normal viws\<C-R>\" \b\e" | endif + 32 count += 1 + 33 echo "you now have " .. count .. " corrections" + 34 enddef + 35 + 36 if !exists(":Correct") + 37 command -nargs=1 Correct call Add(<q-args>, false) + 38 endif + +Line 31 wasn't explained yet. It applies the new correction to the word under +the cursor. The |:normal| command is used to use the new abbreviation. Note +that mappings and abbreviations are expanded here, even though the function +was called from a mapping defined with ":noremap". + + +DOCUMENTATION *write-local-help* + +It's a good idea to also write some documentation for your plugin. Especially +when its behavior can be changed by the user. See |add-local-help| for how +they are installed. + +Here is a simple example for a plugin help file, called "typecorrect.txt": > + + 1 *typecorrect.txt* Plugin for correcting typing mistakes + 2 + 3 If you make typing mistakes, this plugin will have them corrected + 4 automatically. + 5 + 6 There are currently only a few corrections. Add your own if you like. + 7 + 8 Mappings: + 9 <Leader>a or <Plug>TypecorrAdd; + 10 Add a correction for the word under the cursor. + 11 + 12 Commands: + 13 :Correct {word} + 14 Add a correction for {word}. + 15 + 16 *typecorrect-settings* + 17 This plugin doesn't have any settings. + +The first line is actually the only one for which the format matters. It will +be extracted from the help file to be put in the "LOCAL ADDITIONS:" section of +help.txt |local-additions|. The first "*" must be in the first column of the +first line. After adding your help file do ":help" and check that the entries +line up nicely. + +You can add more tags inside ** in your help file. But be careful not to use +existing help tags. You would probably use the name of your plugin in most of +them, like "typecorrect-settings" in the example. + +Using references to other parts of the help in || is recommended. This makes +it easy for the user to find associated help. + + +SUMMARY *plugin-special* + +Summary of special things to use in a plugin: + +var name Variable local to the script. + +<SID> Script-ID, used for mappings and functions local to + the script. + +hasmapto() Function to test if the user already defined a mapping + for functionality the script offers. + +<Leader> Value of "mapleader", which the user defines as the + keys that plugin mappings start with. + +map <unique> Give a warning if a mapping already exists. + +noremap <script> Use only mappings local to the script, not global + mappings. + +exists(":Cmd") Check if a user command already exists. + +============================================================================== +*51.2* Writing a filetype plugin *write-filetype-plugin* *ftplugin* + +A filetype plugin is like a global plugin, except that it sets options and +defines mappings for the current buffer only. See |add-filetype-plugin| for +how this type of plugin is used. + +First read the section on global plugins above |51.1|. All that is said there +also applies to filetype plugins. There are a few extras, which are explained +here. The essential thing is that a filetype plugin should only have an +effect on the current buffer. + + +DISABLING + +If you are writing a filetype plugin to be used by many people, they need a +chance to disable loading it. Put this at the top of the plugin: > + + # Only do this when not done yet for this buffer + if exists("b:did_ftplugin") + finish + endif + b:did_ftplugin = 1 + +This also needs to be used to avoid that the same plugin is executed twice for +the same buffer (happens when using an ":edit" command without arguments). + +Now users can disable loading the default plugin completely by making a +filetype plugin with only these lines: > + + vim9script + b:did_ftplugin = 1 + +This does require that the filetype plugin directory comes before $VIMRUNTIME +in 'runtimepath'! + +If you do want to use the default plugin, but overrule one of the settings, +you can write the different setting in a script: > + + setlocal textwidth=70 + +Now write this in the "after" directory, so that it gets sourced after the +distributed "vim.vim" ftplugin |after-directory|. For Unix this would be +"~/.vim/after/ftplugin/vim.vim". Note that the default plugin will have set +"b:did_ftplugin", it is ignored here. + + +OPTIONS + +To make sure the filetype plugin only affects the current buffer use the > + + setlocal + +command to set options. And only set options which are local to a buffer (see +the help for the option to check that). When using `:setlocal` for global +options or options local to a window, the value will change for many buffers, +and that is not what a filetype plugin should do. + +When an option has a value that is a list of flags or items, consider using +"+=" and "-=" to keep the existing value. Be aware that the user may have +changed an option value already. First resetting to the default value and +then changing it is often a good idea. Example: > + + setlocal formatoptions& formatoptions+=ro + + +MAPPINGS + +To make sure mappings will only work in the current buffer use the > + + map <buffer> + +command. This needs to be combined with the two-step mapping explained above. +An example of how to define functionality in a filetype plugin: > + + if !hasmapto('<Plug>JavaImport;') + map <buffer> <unique> <LocalLeader>i <Plug>JavaImport; + endif + noremap <buffer> <unique> <Plug>JavaImport; oimport ""<Left><Esc> + +|hasmapto()| is used to check if the user has already defined a map to +<Plug>JavaImport;. If not, then the filetype plugin defines the default +mapping. This starts with |<LocalLeader>|, which allows the user to select +the key(s) they want filetype plugin mappings to start with. The default is a +backslash. +"<unique>" is used to give an error message if the mapping already exists or +overlaps with an existing mapping. +|:noremap| is used to avoid that any other mappings that the user has defined +interferes. You might want to use ":noremap <script>" to allow remapping +mappings defined in this script that start with <SID>. + +The user must have a chance to disable the mappings in a filetype plugin, +without disabling everything. Here is an example of how this is done for a +plugin for the mail filetype: > + + # Add mappings, unless the user didn't want this. + if !exists("g:no_plugin_maps") && !exists("g:no_mail_maps") + # Quote text by inserting "> " + if !hasmapto('<Plug>MailQuote;') + vmap <buffer> <LocalLeader>q <Plug>MailQuote; + nmap <buffer> <LocalLeader>q <Plug>MailQuote; + endif + vnoremap <buffer> <Plug>MailQuote; :s/^/> /<CR> + nnoremap <buffer> <Plug>MailQuote; :.,$s/^/> /<CR> + endif + +Two global variables are used: +|g:no_plugin_maps| disables mappings for all filetype plugins +|g:no_mail_maps| disables mappings for the "mail" filetype + + +USER COMMANDS + +To add a user command for a specific file type, so that it can only be used in +one buffer, use the "-buffer" argument to |:command|. Example: > + + command -buffer Make make %:r.s + + +VARIABLES + +A filetype plugin will be sourced for each buffer of the type it's for. Local +script variables will be shared between all invocations. Use local buffer +variables |b:var| if you want a variable specifically for one buffer. + + +FUNCTIONS + +When defining a function, this only needs to be done once. But the filetype +plugin will be sourced every time a file with this filetype will be opened. +This construct makes sure the function is only defined once: > + + if !exists("*Func") + def Func(arg) + ... + enddef + endif +< +Don't forget to use "noclear" with the `vim9script` command to avoid that the +function is deleted when the script is sourced a second time. + + +UNDO *undo_indent* *undo_ftplugin* + +When the user does ":setfiletype xyz" the effect of the previous filetype +should be undone. Set the b:undo_ftplugin variable to the commands that will +undo the settings in your filetype plugin. Example: > + + b:undo_ftplugin = "setlocal fo< com< tw< commentstring<" + \ .. "| unlet b:match_ignorecase b:match_words b:match_skip" + +Using ":setlocal" with "<" after the option name resets the option to its +global value. That is mostly the best way to reset the option value. + +For undoing the effect of an indent script, the b:undo_indent variable should +be set accordingly. + +Both these variables use legacy script syntax, not |Vim9| syntax. + + +FILE NAME + +The filetype must be included in the file name |ftplugin-name|. Use one of +these three forms: + + .../ftplugin/stuff.vim + .../ftplugin/stuff_foo.vim + .../ftplugin/stuff/bar.vim + +"stuff" is the filetype, "foo" and "bar" are arbitrary names. + + +FILETYPE DETECTION *plugin-filetype* + +If your filetype is not already detected by Vim, you should create a filetype +detection snippet in a separate file. It is usually in the form of an +autocommand that sets the filetype when the file name matches a pattern. +Example: > + + au BufNewFile,BufRead *.foo setlocal filetype=foofoo + +Write this single-line file as "ftdetect/foofoo.vim" in the first directory +that appears in 'runtimepath'. For Unix that would be +"~/.vim/ftdetect/foofoo.vim". The convention is to use the name of the +filetype for the script name. + +You can make more complicated checks if you like, for example to inspect the +contents of the file to recognize the language. Also see |new-filetype|. + + +SUMMARY *ftplugin-special* + +Summary of special things to use in a filetype plugin: + +<LocalLeader> Value of "maplocalleader", which the user defines as + the keys that filetype plugin mappings start with. + +map <buffer> Define a mapping local to the buffer. + +noremap <script> Only remap mappings defined in this script that start + with <SID>. + +setlocal Set an option for the current buffer only. + +command -buffer Define a user command local to the buffer. + +exists("*s:Func") Check if a function was already defined. + +Also see |plugin-special|, the special things used for all plugins. + +============================================================================== +*51.3* Writing a compiler plugin *write-compiler-plugin* + +A compiler plugin sets options for use with a specific compiler. The user can +load it with the |:compiler| command. The main use is to set the +'errorformat' and 'makeprg' options. + +Easiest is to have a look at examples. This command will edit all the default +compiler plugins: > + + next $VIMRUNTIME/compiler/*.vim + +Type `:next` to go to the next plugin file. + +There are two special items about these files. First is a mechanism to allow +a user to overrule or add to the default file. The default files start with: > + + vim9script + if exists("g:current_compiler") + finish + endif + g:current_compiler = "mine" + +When you write a compiler file and put it in your personal runtime directory +(e.g., ~/.vim/compiler for Unix), you set the "current_compiler" variable to +make the default file skip the settings. + *:CompilerSet* +The second mechanism is to use ":set" for ":compiler!" and ":setlocal" for +":compiler". Vim defines the ":CompilerSet" user command for this. However, +older Vim versions don't, thus your plugin should define it then. This is an +example: > + + if exists(":CompilerSet") != 2 + command -nargs=* CompilerSet setlocal <args> + endif + CompilerSet errorformat& " use the default 'errorformat' + CompilerSet makeprg=nmake + +When you write a compiler plugin for the Vim distribution or for a system-wide +runtime directory, use the mechanism mentioned above. When +"current_compiler" was already set by a user plugin nothing will be done. + +When you write a compiler plugin to overrule settings from a default plugin, +don't check "current_compiler". This plugin is supposed to be loaded +last, thus it should be in a directory at the end of 'runtimepath'. For Unix +that could be ~/.vim/after/compiler. + +============================================================================== +*51.4* Distributing Vim scripts *distribute-script* + +Vim users will look for scripts on the Vim website: http://www.vim.org. +If you made something that is useful for others, share it! + +Another place is github. But there you need to know where to find it! The +advantage is that most plugin managers fetch plugins from github. You'll have +to use your favorite search engine to find them. + +Vim scripts can be used on any system. However, there might not be a tar or +gzip command. If you want to pack files together and/or compress them the +"zip" utility is recommended. + +For utmost portability use Vim itself to pack scripts together. This can be +done with the Vimball utility. See |vimball|. + +It's good if you add a line to allow automatic updating. See |glvs-plugins|. + +============================================================================== + +Next chapter: |usr_52.txt| Write large plugins + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_52.txt b/runtime/doc/usr_52.txt new file mode 100644 index 0000000..222b899 --- /dev/null +++ b/runtime/doc/usr_52.txt @@ -0,0 +1,343 @@ +*usr_52.txt* For Vim version 9.1. Last change: 2022 Jun 04 + + VIM USER MANUAL - by Bram Moolenaar + + Write larger plugins + +When plugins do more than simple things, they tend to grow big. This file +explains how to make sure they still load fast and how to split them up in +smaller parts. + +|52.1| Export and import +|52.2| Autoloading +|52.3| Autoloading without import/export +|52.4| Other mechanisms to use +|52.5| Using a Vim9 script from legacy script + + Next chapter: |usr_90.txt| Installing Vim + Previous chapter: |usr_51.txt| Create a plugin +Table of contents: |usr_toc.txt| + +============================================================================== +*52.1* Export and import + +Vim9 script was designed to make it easier to write large Vim scripts. It +looks more like other script languages, especially Typescript. Also, +functions are compiled into instructions that can be executed quickly. This +makes Vim9 script a lot faster, up to a 100 times. + +The basic idea is that a script file has items that are private, only used +inside the script file, and items that are exported, which can be used by +scripts that import them. That makes very clear what is defined where. + +Let's start with an example, a script that exports one function and has one +private function: > + + vim9script + + export def GetMessage(count: string): string + var nr = str2nr(count) + var result = $'To {nr} we say ' + result ..= GetReply(nr) + return result + enddef + + def GetReply(nr: number): string + if nr == 42 + return 'yes' + elseif nr = 22 + return 'maybe' + else + return 'no' + endif + enddef + +The `vim9script` command is required, `export` only works in a |Vim9| script. + +The `export def GetMessage(...` line starts with `export`, meaning that this +function can be called by other scripts. The line `def GetReply(...` does not +start with `export`, this is a script-local function, it can only be used +inside this script file. + +Now about the script where this is imported. In this example we use this +layout, which works well for a plugin below the "pack" directory: + .../plugin/theplugin.vim + .../lib/getmessage.vim + +Assuming the "..." directory has been added to 'runtimepath', Vim will look +for plugins in the "plugin" directory and source "theplugin.vim". Vim does +not recognize the "lib" directory, you can put any scripts there. + +The above script that exports GetMessage() goes in lib/getmessage.vim. The +GetMessage() function is used in plugin/theplugin.vim: > + + vim9script + + import "../lib/getmessage.vim" + command -nargs=1 ShowMessage echomsg getmessage.GetMessage(<f-args>) + +The `import` command uses a relative path, it starts with "../", which means +to go one directory up. For other kinds of paths see the `:import` command. + +How we can try out the command that the plugin provides: > + ShowMessage 1 +< To 1 we say no ~ +> + ShowMessage 22 +< To 22 we say maybe ~ + +Notice that the function GetMessage() is prefixed with the imported script +name "getmessage". That way, for every imported function used, you know what +script it was imported from. If you import several scripts each of them could +define a GetMessage() function: > + + vim9script + + import "../lib/getmessage.vim" + import "../lib/getother.vim" + command -nargs=1 ShowMessage echomsg getmessage.GetMessage(<f-args>) + command -nargs=1 ShowOther echomsg getother.GetMessage(<f-args>) + +If the imported script name is long or you use it in many places, you can +shorten it by adding an "as" argument: > + import "../lib/getmessage.vim" as msg + command -nargs=1 ShowMessage echomsg msg.GetMessage(<f-args>) + + +RELOADING + +One thing to keep in mind: the imported "lib/getmessage.vim" script will be +sourced only once. When it is imported a second time sourcing it will be +skipped, since the items in it have already been created. It does not matter +if this import command is in another script, or in the same script that is +sourced again. + +This is efficient when using a plugin, but when still developing a plugin it +means that changing "lib/getmessage.vim" after it has been imported will have +no effect. You need to quit Vim and start it again. (Rationale: the items +defined in the script could be used in a compiled function, sourcing the +script again may break those functions). + + +USING GLOBALS + +Sometimes you will want to use global variables or functions, so that they can +be used anywhere. A good example is a global variable that passes a +preference to a plugin. To avoid other scripts using the same name, use a +prefix that is very unlikely to be used elsewhere. For example, if you have a +"mytags" plugin, you could use: > + + g:mytags_location = '$HOME/project' + g:mytags_style = 'fast' + +============================================================================== +*52.2* Autoloading + +After splitting your large script into pieces, all the lines will still be +loaded and executed the moment the script is used. Every `import` loads the +imported script to find the items defined there. Although that is good for +finding errors early, it also takes time. Which is wasted if the +functionality is not often used. + +Instead of having `import` load the script immediately, it can be postponed +until needed. Using the example above, only one change needs to be made in +the plugin/theplugin.vim script: > + import autoload "../lib/getmessage.vim" + +Nothing in the rest of the script needs to change. However, the types will +not be checked. Not even the existence of the GetMessage() function is +checked until it is used. You will have to decide what is more important for +your script: fast startup or getting errors early. You can also add the +"autoload" argument later, after you have checked everything works. + + +AUTOLOAD DIRECTORY + +Another form is to use autoload with a script name that is not an absolute or +relative path: > + import autload "monthlib.vim" + +This will search for the script "monthlib.vim" in the autoload directories of +'runtimepath'. With Unix one of the directories often is "~/.vim/autoload". +It will also search under 'packpath', under "start". + +The main advantage of this is that this script can be easily shared with other +scripts. You do need to make sure that the script name is unique, since Vim +will search all the "autoload" directories in 'runtimepath', and if you are +using several plugins with a plugin manager, it may add a directory to +'runtimepath', each of which might have an "autoload" directory. + +Without autoload: > + import "monthlib.vim" + +Vim will search for the script "monthlib.vim" in the import directories of +'runtimepath'. Note that in this case adding or removing "autoload" changes +where the script is found. With a relative or absolute path the location does +not change. + +============================================================================== +*52.3* Autoloading without import/export + + *write-library-script* +A mechanism from before import/export is still useful and some users may find +it a bit simpler. The idea is that you call a function with a special name. +That function is then in an autoload script. We will call that one script a +library script. + +The autoload mechanism is based on a function name that has "#" characters: > + + mylib#myfunction(arg) + +Vim will recognize the function name by the embedded "#" character and when +it is not defined yet search for the script "autoload/mylib.vim" in +'runtimepath'. That script must define the "mylib#myfunction()" function. +Obviously the name "mylib" is the part before the "#" and is used as the name +of the script, adding ".vim". + +You can put many other functions in the mylib.vim script, you are free to +organize your functions in library scripts. But you must use function names +where the part before the '#' matches the script name. Otherwise Vim would +not know what script to load. This is where it differs from the import/export +mechanism. + +If you get really enthusiastic and write lots of library scripts, you may +want to use subdirectories. Example: > + + netlib#ftp#read('somefile') + +Here the script name is taken from the function name up to the last "#". The +"#" in the middle are replaced by a slash, the last one by ".vim". Thus you +get "netlib/ftp.vim". For Unix the library script used for this could be: + + ~/.vim/autoload/netlib/ftp.vim + +Where the function is defined like this: > + + def netlib#ftp#read(fname: string) + # Read the file fname through ftp + enddef + +Notice that the name the function is defined with is exactly the same as the +name used for calling the function. And the part before the last '#' +exactly matches the subdirectory and script name. + +You can use the same mechanism for variables: > + + var weekdays = dutch#weekdays + +This will load the script "autoload/dutch.vim", which should contain something +like: > + + var dutch#weekdays = ['zondag', 'maandag', 'dinsdag', 'woensdag', + \ 'donderdag', 'vrijdag', 'zaterdag'] + +Further reading: |autoload|. + +============================================================================== +*52.4* Other mechanisms to use + +Some may find the use of several files a hassle and prefer to keep everything +together in one script. To avoid this resulting in slow startup there is a +mechanism that only defines a small part and postpones the rest to when it is +actually used. *write-plugin-quickload* + +The basic idea is that the plugin is loaded twice. The first time user +commands and mappings are defined that offer the functionality. The second +time the functions that implement the functionality are defined. + +It may sound surprising that quickload means loading a script twice. What we +mean is that it loads quickly the first time, postponing the bulk of the +script to the second time, which only happens when you actually use it. When +you always use the functionality it actually gets slower! + +This uses a FuncUndefined autocommand. This works differently from the +|autoload| functionality explained above. + +The following example shows how it's done: > + + " Vim global plugin for demonstrating quick loading + " Last Change: 2005 Feb 25 + " Maintainer: Bram Moolenaar <Bram@vim.org> + " License: This file is placed in the public domain. + + if !exists("s:did_load") + command -nargs=* BNRead call BufNetRead(<f-args>) + map <F19> :call BufNetWrite('something')<CR> + + let s:did_load = 1 + exe 'au FuncUndefined BufNet* source ' .. expand('<sfile>') + finish + endif + + function BufNetRead(...) + echo 'BufNetRead(' .. string(a:000) .. ')' + " read functionality here + endfunction + + function BufNetWrite(...) + echo 'BufNetWrite(' .. string(a:000) .. ')' + " write functionality here + endfunction + +When the script is first loaded "s:did_load" is not set. The commands between +the "if" and "endif" will be executed. This ends in a |:finish| command, thus +the rest of the script is not executed. + +The second time the script is loaded "s:did_load" exists and the commands +after the "endif" are executed. This defines the (possible long) +BufNetRead() and BufNetWrite() functions. + +If you drop this script in your plugin directory Vim will execute it on +startup. This is the sequence of events that happens: + +1. The "BNRead" command is defined and the <F19> key is mapped when the script + is sourced at startup. A |FuncUndefined| autocommand is defined. The + ":finish" command causes the script to terminate early. + +2. The user types the BNRead command or presses the <F19> key. The + BufNetRead() or BufNetWrite() function will be called. + +3. Vim can't find the function and triggers the |FuncUndefined| autocommand + event. Since the pattern "BufNet*" matches the invoked function, the + command "source fname" will be executed. "fname" will be equal to the name + of the script, no matter where it is located, because it comes from + expanding "<sfile>" (see |expand()|). + +4. The script is sourced again, the "s:did_load" variable exists and the + functions are defined. + +Notice that the functions that are loaded afterwards match the pattern in the +|FuncUndefined| autocommand. You must make sure that no other plugin defines +functions that match this pattern. + +============================================================================== +*52.5* Using a Vim9 script from legacy script *source-vim9-script* + +In some cases you have a legacy Vim script where you want to use items from a +Vim9 script. For example in your .vimrc you want to initialize a plugin. The +best way to do this is to use `:import`. For example: > + + import 'myNicePlugin.vim' + call myNicePlugin.NiceInit('today') + +This finds the exported function "NiceInit" in the Vim9 script file and makes +it available as script-local item "myNicePlugin.NiceInit". `:import` always +uses the script namespace, even when "s:" is not given. If "myNicePlugin.vim" +was already sourced it is not sourced again. + +Besides avoiding putting any items in the global namespace (where name clashes +can cause unexpected errors), this also means the script is sourced only once, +no matter how many times items from it are imported. + +In some cases, e.g. for testing, you may just want to source the Vim9 script. +That is OK, but then only global items will be available. The Vim9 script +will have to make sure to use a unique name for these global items. Example: > + source ~/.vim/extra/myNicePlugin.vim + call g:NicePluginTest() + +============================================================================== + +Next chapter: |usr_90.txt| Installing Vim + + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_90.txt b/runtime/doc/usr_90.txt new file mode 100644 index 0000000..418f1f0 --- /dev/null +++ b/runtime/doc/usr_90.txt @@ -0,0 +1,478 @@ +*usr_90.txt* For Vim version 9.1. Last change: 2022 May 13 + + VIM USER MANUAL - by Bram Moolenaar + + Installing Vim + + *install* +Before you can use Vim you have to install it. Depending on your system it's +simple or easy. This chapter gives a few hints and also explains how +upgrading to a new version is done. + +|90.1| Unix +|90.2| MS-Windows +|90.3| Upgrading +|90.4| Common installation issues +|90.5| Uninstalling Vim + + Previous chapter: |usr_52.txt| Write plugins using Vim9 script +Table of contents: |usr_toc.txt| + +============================================================================== +*90.1* Unix + +First you have to decide if you are going to install Vim system-wide or for a +single user. The installation is almost the same, but the directory where Vim +is installed in differs. + For a system-wide installation the base directory "/usr/local" is often +used. But this may be different for your system. Try finding out where other +packages are installed. + When installing for a single user, you can use your home directory as the +base. The files will be placed in subdirectories like "bin" and "shared/vim". + + +FROM A PACKAGE + +You can get precompiled binaries for many different UNIX systems. There is a +long list with links on this page: + + http://www.vim.org/binaries.html ~ + +Volunteers maintain the binaries, so they are often out of date. It is a +good idea to compile your own UNIX version from the source. Also, creating +the editor from the source allows you to control which features are compiled. +This does require a compiler though. + +If you have a Linux distribution, the "vi" program is probably a minimal +version of Vim. It doesn't do syntax highlighting, for example. Try finding +another Vim package in your distribution, or search on the web site. + + +FROM SOURCES + +To compile and install Vim, you will need the following: + + - A C compiler (GCC preferred) + - The GZIP program (you can get it from www.gnu.org) + - The Vim source and runtime archives + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"unix" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. + You can get the files for Unix in one big archive that contains everything: + + vim-8.2.tar.bz2 ~ + +You need the bzip2 program to uncompress it. + + +COMPILING + +First create a top directory to work in, for example: > + + mkdir ~/vim + cd ~/vim + +Then unpack the archives there. You can unpack it like this: > + + tar xf path/vim-8.2.tar.bz2 + +If your tar command doesn't support bz2 directly: > + + bzip2 -d -c path/vim-8.2.tar.bz2 | tar xf - + +Change "path" to where you have downloaded the file. +If you are satisfied with getting the default features, and your environment +is setup properly, you should be able to compile Vim with just this: > + + cd vim82/src + make + +The make program will run configure and compile everything. Further on we +will explain how to compile with different features. + If there are errors while compiling, carefully look at the error messages. +There should be a hint about what went wrong. Hopefully you will be able to +correct it. You might have to disable some features to make Vim compile. +Look in the Makefile for specific hints for your system. + + +TESTING + +Now you can check if compiling worked OK: > + + make test + +This will run a sequence of test scripts to verify that Vim works as expected. +Vim will be started many times and all kinds of text and messages flash by. +If it is alright you will finally see: + + test results: ~ + ALL DONE ~ + +If you get "TEST FAILURE" some test failed. If there are one or two messages +about failed tests, Vim might still work, but not perfectly. If you see a lot +of error messages or Vim doesn't finish until the end, there must be something +wrong. Either try to find out yourself, or find someone who can solve it. +You could look in the |maillist-archive| for a solution. If everything else +fails, you could ask in the vim |maillist| if someone can help you. + + +INSTALLING + *install-home* +If you want to install in your home directory, edit the Makefile and search +for a line: + + #prefix = $(HOME) ~ + +Remove the # at the start of the line. + When installing for the whole system, Vim has most likely already selected +a good installation directory for you. You can also specify one, see below. +You need to become root for the following. + +To install Vim do: > + + make install + +That should move all the relevant files to the right place. Now you can try +running vim to verify that it works. Use two simple tests to check if Vim can +find its runtime files: > + + :help + :syntax enable + +If this doesn't work, use this command to check where Vim is looking for the +runtime files: > + + :echo $VIMRUNTIME + +You can also start Vim with the "-V" argument to see what happens during +startup: > + + vim -V + +Don't forget that the user manual assumes you Vim in a certain way. After +installing Vim, follow the instructions at |not-compatible| to make Vim work +as assumed in this manual. + + +SELECTING FEATURES + +Vim has many ways to select features. One of the simple ways is to edit the +Makefile. There are many directions and examples. Often you can enable or +disable a feature by uncommenting a line. + An alternative is to run "configure" separately. This allows you to +specify configuration options manually. The disadvantage is that you have to +figure out what exactly to type. + Some of the most interesting configure arguments follow. These can also be +enabled from the Makefile. + + --prefix={directory} Top directory where to install Vim. + + --with-features=tiny Compile with some features disabled. + --with-features=normal Compile with more features enabled. + --with-features=huge Compile with most features enabled. + See |+feature-list| for which feature + is enabled in which case. + + --enable-perlinterp Enable the Perl interface. There are + similar arguments for ruby, python and + tcl. + + --disable-gui Do not compile the GUI interface. + --without-x Do not compile X-windows features. + When both of these are used, Vim will + not connect to the X server, which + makes startup faster. + +To see the whole list use: > + + ./configure --help + +You can find a bit of explanation for each feature, and links for more +information here: |feature-list|. + For the adventurous, edit the file "feature.h". You can also change the +source code yourself! + +============================================================================== +*90.2* MS-Windows + +There are two ways to install the Vim program for Microsoft Windows. You can +uncompress several archives, or use a self-installing big archive. Most users +with fairly recent computers will prefer the second method. For the first +one, you will need: + + - An archive with binaries for Vim. + - The Vim runtime archive. + - A program to unpack the zip files. + +To get the Vim archives, look in this file for a mirror near you, this should +provide the fastest download: + + ftp://ftp.vim.org/pub/vim/MIRRORS ~ + +Or use the home site ftp.vim.org, if you think it's fast enough. Go to the +"pc" directory and you'll find a list of files there. The version number is +embedded in the file name. You will want to get the most recent version. +We will use "82" here, which is version 8.2. + + gvim82.exe The self-installing archive. + +This is all you need for the second method. Just launch the executable, and +follow the prompts. + +For the first method you must choose one of the binary archives. These are +available: + + gvim82.zip The normal MS-Windows GUI version. + gvim82ole.zip The MS-Windows GUI version with OLE support. + Uses more memory, supports interfacing with + other OLE applications. + vim82w32.zip 32 bit MS-Windows console version. + +You only need one of them. Although you could install both a GUI and a +console version. You always need to get the archive with runtime files. + + vim82rt.zip The runtime files. + +Use your un-zip program to unpack the files. For example, using the "unzip" +program: > + + cd c:\ + unzip path\gvim82.zip + unzip path\vim82rt.zip + +This will unpack the files in the directory "c:\vim\vim82". If you already +have a "vim" directory somewhere, you will want to move to the directory just +above it. + Now change to the "vim\vim82" directory and run the install program: > + + install + +Carefully look through the messages and select the options you want to use. +If you finally select "do it" the install program will carry out the actions +you selected. + The install program doesn't move the runtime files. They remain where you +unpacked them. + +In case you are not satisfied with the features included in the supplied +binaries, you could try compiling Vim yourself. Get the source archive from +the same location as where the binaries are. You need a compiler for which a +makefile exists. Microsoft Visual C, MinGW and Cygwin compilers can be used. +Check the file src/INSTALLpc.txt for hints. + +============================================================================== +*90.3* Upgrading + +If you are running one version of Vim and want to install another, here is +what to do. + + +UNIX + +When you type "make install" the runtime files will be copied to a directory +which is specific for this version. Thus they will not overwrite a previous +version. This makes it possible to use two or more versions next to +each other. + The executable "vim" will overwrite an older version. If you don't care +about keeping the old version, running "make install" will work fine. You can +delete the old runtime files manually. Just delete the directory with the +version number in it and all files below it. Example: > + + rm -rf /usr/local/share/vim/vim74 + +There are normally no changed files below this directory. If you did change +the "filetype.vim" file, for example, you better merge the changes into the +new version before deleting it. + +If you are careful and want to try out the new version for a while before +switching to it, install the new version under another name. You need to +specify a configure argument. For example: > + + ./configure --with-vim-name=vim8 + +Before running "make install", you could use "make -n install" to check that +no valuable existing files are overwritten. + When you finally decide to switch to the new version, all you need to do is +to rename the binary to "vim". For example: > + + mv /usr/local/bin/vim8 /usr/local/bin/vim + + +MS-WINDOWS + +Upgrading is mostly equal to installing a new version. Just unpack the files +in the same place as the previous version. A new directory will be created, +e.g., "vim82", for the files of the new version. Your runtime files, vimrc +file, viminfo, etc. will be left alone. + If you want to run the new version next to the old one, you will have to do +some handwork. Don't run the install program, it will overwrite a few files +of the old version. Execute the new binaries by specifying the full path. +The program should be able to automatically find the runtime files for the +right version. However, this won't work if you set the $VIMRUNTIME variable +somewhere. + If you are satisfied with the upgrade, you can delete the files of the +previous version. See |90.5|. + +============================================================================== +*90.4* Common installation issues + +This section describes some of the common problems that occur when installing +Vim and suggests some solutions. It also contains answers to many +installation questions. + + +Q: I Do Not Have Root Privileges. How Do I Install Vim? (Unix) + +Use the following configuration command to install Vim in a directory called +$HOME/vim: > + + ./configure --prefix=$HOME + +This gives you a personal copy of Vim. You need to put $HOME/bin in your +path to execute the editor. Also see |install-home|. + + +Q: The Colors Are Not Right on My Screen. (Unix) + +Check your terminal settings by using the following command in a shell: > + + echo $TERM + +If the terminal type listed is not correct, fix it. For more hints, see +|06.2|. Another solution is to always use the GUI version of Vim, called +gvim. This avoids the need for a correct terminal setup. + + +Q: My Backspace And Delete Keys Don't Work Right + +The definition of what key sends what code is very unclear for backspace <BS> +and Delete <Del> keys. First of all, check your $TERM setting. If there is +nothing wrong with it, try this: > + + :set t_kb=^V<BS> + :set t_kD=^V<Del> + +In the first line you need to press CTRL-V and then hit the backspace key. +In the second line you need to press CTRL-V and then hit the Delete key. +You can put these lines in your vimrc file, see |05.1|. A disadvantage is +that it won't work when you use another terminal some day. Look here for +alternate solutions: |:fixdel|. + + +Q: I Am Using RedHat Linux. Can I Use the Vim That Comes with the System? + +By default RedHat installs a minimal version of Vim. Check your RPM packages +for something named "Vim-enhanced-version.rpm" and install that. + + +Q: How Do I Turn Syntax Coloring On? How do I make plugins work? + +Use the example vimrc script. You can find an explanation on how to use it +here: |not-compatible|. + +See chapter 6 for information about syntax highlighting: |usr_06.txt|. + + +Q: What Is a Good vimrc File to Use? + +See the www.vim.org Web site for several good examples. + + +Q: Where Do I Find a Good Vim Plugin? + +See the Vim-online site: http://vim.sf.net. Many users have uploaded useful +Vim scripts and plugins there. + + +Q: Where Do I Find More Tips? + +See the Vim-online site: http://vim.sf.net. There is an archive with hints +from Vim users. You might also want to search in the |maillist-archive|. + +============================================================================== +*90.5* Uninstalling Vim + +In the unlikely event you want to uninstall Vim completely, this is how you do +it. + + +UNIX + +When you installed Vim as a package, check your package manager to find out +how to remove the package again. + If you installed Vim from sources you can use this command: > + + make uninstall + +However, if you have deleted the original files or you used an archive that +someone supplied, you can't do this. Do delete the files manually, here is an +example for when "/usr/local" was used as the root: > + + rm -rf /usr/local/share/vim/vim82 + rm /usr/local/bin/eview + rm /usr/local/bin/evim + rm /usr/local/bin/ex + rm /usr/local/bin/gview + rm /usr/local/bin/gvim + rm /usr/local/bin/gvim + rm /usr/local/bin/gvimdiff + rm /usr/local/bin/rgview + rm /usr/local/bin/rgvim + rm /usr/local/bin/rview + rm /usr/local/bin/rvim + rm /usr/local/bin/rvim + rm /usr/local/bin/view + rm /usr/local/bin/vim + rm /usr/local/bin/vimdiff + rm /usr/local/bin/vimtutor + rm /usr/local/bin/xxd + rm /usr/local/man/man1/eview.1 + rm /usr/local/man/man1/evim.1 + rm /usr/local/man/man1/ex.1 + rm /usr/local/man/man1/gview.1 + rm /usr/local/man/man1/gvim.1 + rm /usr/local/man/man1/gvimdiff.1 + rm /usr/local/man/man1/rgview.1 + rm /usr/local/man/man1/rgvim.1 + rm /usr/local/man/man1/rview.1 + rm /usr/local/man/man1/rvim.1 + rm /usr/local/man/man1/view.1 + rm /usr/local/man/man1/vim.1 + rm /usr/local/man/man1/vimdiff.1 + rm /usr/local/man/man1/vimtutor.1 + rm /usr/local/man/man1/xxd.1 + + +MS-WINDOWS + +If you installed Vim with the self-installing archive you can run +the "uninstall-gui" program located in the same directory as the other Vim +programs, e.g. "c:\vim\vim82". You can also launch it from the Start menu if +installed the Vim entries there. This will remove most of the files, menu +entries and desktop shortcuts. Some files may remain however, as they need a +Windows restart before being deleted. + You will be given the option to remove the whole "vim" directory. It +probably contains your vimrc file and other runtime files that you created, so +be careful. + +Else, if you installed Vim with the zip archives, the preferred way is to use +the "uninstall" program. You can find it in the same directory as the +"install" program, e.g., "c:\vim\vim82". This should also work from the usual +"install/remove software" page. + However, this only removes the registry entries for Vim. You have to +delete the files yourself. Simply select the directory "vim\vim82" and delete +it recursively. There should be no files there that you changed, but you +might want to check that first. + The "vim" directory probably contains your vimrc file and other runtime +files that you created. You might want to keep that. + +============================================================================== + +Table of contents: |usr_toc.txt| + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt new file mode 100644 index 0000000..4cb404b --- /dev/null +++ b/runtime/doc/usr_toc.txt @@ -0,0 +1,378 @@ +*usr_toc.txt* For Vim version 9.1. Last change: 2022 Jun 20 + + VIM USER MANUAL - by Bram Moolenaar + + Table Of Contents *user-manual* + +============================================================================== +Overview ~ + +Getting Started ~ +|usr_01.txt| About the manuals +|usr_02.txt| The first steps in Vim +|usr_03.txt| Moving around +|usr_04.txt| Making small changes +|usr_05.txt| Set your settings +|usr_06.txt| Using syntax highlighting +|usr_07.txt| Editing more than one file +|usr_08.txt| Splitting windows +|usr_09.txt| Using the GUI +|usr_10.txt| Making big changes +|usr_11.txt| Recovering from a crash +|usr_12.txt| Clever tricks + +Editing Effectively ~ +|usr_20.txt| Typing command-line commands quickly +|usr_21.txt| Go away and come back +|usr_22.txt| Finding the file to edit +|usr_23.txt| Editing other files +|usr_24.txt| Inserting quickly +|usr_25.txt| Editing formatted text +|usr_26.txt| Repeating +|usr_27.txt| Search commands and patterns +|usr_28.txt| Folding +|usr_29.txt| Moving through programs +|usr_30.txt| Editing programs +|usr_31.txt| Exploiting the GUI +|usr_32.txt| The undo tree + +Tuning Vim ~ +|usr_40.txt| Make new commands +|usr_41.txt| Write a Vim script +|usr_42.txt| Add new menus +|usr_43.txt| Using filetypes +|usr_44.txt| Your own syntax highlighted +|usr_45.txt| Select your language (locale) + +Writing Vim script ~ +|usr_50.txt| Advanced Vim script writing +|usr_51.txt| Write plugins +|usr_52.txt| Write larger plugins + +Making Vim Run ~ +|usr_90.txt| Installing Vim + + +Reference manual ~ +|reference_toc| More detailed information for all commands + +The user manual (an older version) is available as a single, ready to print +HTML and PDF file here: + http://vimdoc.sf.net + +============================================================================== +Getting Started ~ + +Read this from start to end to learn the essential commands. + +|usr_01.txt| About the manuals + |01.1| Two manuals + |01.2| Vim installed + |01.3| Using the Vim tutor + |01.4| Copyright + +|usr_02.txt| The first steps in Vim + |02.1| Running Vim for the First Time + |02.2| Inserting text + |02.3| Moving around + |02.4| Deleting characters + |02.5| Undo and Redo + |02.6| Other editing commands + |02.7| Getting out + |02.8| Finding help + +|usr_03.txt| Moving around + |03.1| Word movement + |03.2| Moving to the start or end of a line + |03.3| Moving to a character + |03.4| Matching a paren + |03.5| Moving to a specific line + |03.6| Telling where you are + |03.7| Scrolling around + |03.8| Simple searches + |03.9| Simple search patterns + |03.10| Using marks + +|usr_04.txt| Making small changes + |04.1| Operators and motions + |04.2| Changing text + |04.3| Repeating a change + |04.4| Visual mode + |04.5| Moving text + |04.6| Copying text + |04.7| Using the clipboard + |04.8| Text objects + |04.9| Replace mode + |04.10| Conclusion + +|usr_05.txt| Set your settings + |05.1| The vimrc file + |05.2| The example vimrc file explained + |05.3| The defaults.vim file explained + |05.4| Simple mappings + |05.5| Adding a package + |05.6| Adding a plugin + |05.7| Adding a help file + |05.8| The option window + |05.9| Often used options + +|usr_06.txt| Using syntax highlighting + |06.1| Switching it on + |06.2| No or wrong colors? + |06.3| Different colors + |06.4| With colors or without colors + |06.5| Printing with colors + |06.6| Further reading + +|usr_07.txt| Editing more than one file + |07.1| Edit another file + |07.2| A list of files + |07.3| Jumping from file to file + |07.4| Backup files + |07.5| Copy text between files + |07.6| Viewing a file + |07.7| Changing the file name + +|usr_08.txt| Splitting windows + |08.1| Split a window + |08.2| Split a window on another file + |08.3| Window size + |08.4| Vertical splits + |08.5| Moving windows + |08.6| Commands for all windows + |08.7| Viewing differences with vimdiff + |08.8| Various + +|usr_09.txt| Using the GUI + |09.1| Parts of the GUI + |09.2| Using the mouse + |09.3| The clipboard + |09.4| Select mode + +|usr_10.txt| Making big changes + |10.1| Record and playback commands + |10.2| Substitution + |10.3| Command ranges + |10.4| The global command + |10.5| Visual block mode + |10.6| Reading and writing part of a file + |10.7| Formatting text + |10.8| Changing case + |10.9| Using an external program + +|usr_11.txt| Recovering from a crash + |11.1| Basic recovery + |11.2| Where is the swap file? + |11.3| Crashed or not? + |11.4| Further reading + +|usr_12.txt| Clever tricks + |12.1| Replace a word + |12.2| Change "Last, First" to "First Last" + |12.3| Sort a list + |12.4| Reverse line order + |12.5| Count words + |12.6| Find a man page + |12.7| Trim blanks + |12.8| Find where a word is used + +============================================================================== +Editing Effectively ~ + +Subjects that can be read independently. + +|usr_20.txt| Typing command-line commands quickly + |20.1| Command line editing + |20.2| Command line abbreviations + |20.3| Command line completion + |20.4| Command line history + |20.5| Command line window + +|usr_21.txt| Go away and come back + |21.1| Suspend and resume + |21.2| Executing shell commands + |21.3| Remembering information; viminfo + |21.4| Sessions + |21.5| Views + |21.6| Modelines + +|usr_22.txt| Finding the file to edit + |22.1| The file explorer + |22.2| The current directory + |22.3| Finding a file + |22.4| The buffer list + +|usr_23.txt| Editing other files + |23.1| DOS, Mac and Unix files + |23.2| Files on the internet + |23.3| Encryption + |23.4| Binary files + |23.5| Compressed files + +|usr_24.txt| Inserting quickly + |24.1| Making corrections + |24.2| Showing matches + |24.3| Completion + |24.4| Repeating an insert + |24.5| Copying from another line + |24.6| Inserting a register + |24.7| Abbreviations + |24.8| Entering special characters + |24.9| Digraphs + |24.10| Normal mode commands + +|usr_25.txt| Editing formatted text + |25.1| Breaking lines + |25.2| Aligning text + |25.3| Indents and tabs + |25.4| Dealing with long lines + |25.5| Editing tables + +|usr_26.txt| Repeating + |26.1| Repeating with Visual mode + |26.2| Add and subtract + |26.3| Making a change in many files + |26.4| Using Vim from a shell script + +|usr_27.txt| Search commands and patterns + |27.1| Ignoring case + |27.2| Wrapping around the file end + |27.3| Offsets + |27.4| Matching multiple times + |27.5| Alternatives + |27.6| Character ranges + |27.7| Character classes + |27.8| Matching a line break + |27.9| Examples + +|usr_28.txt| Folding + |28.1| What is folding? + |28.2| Manual folding + |28.3| Working with folds + |28.4| Saving and restoring folds + |28.5| Folding by indent + |28.6| Folding with markers + |28.7| Folding by syntax + |28.8| Folding by expression + |28.9| Folding unchanged lines + |28.10| Which fold method to use? + +|usr_29.txt| Moving through programs + |29.1| Using tags + |29.2| The preview window + |29.3| Moving through a program + |29.4| Finding global identifiers + |29.5| Finding local identifiers + +|usr_30.txt| Editing programs + |30.1| Compiling + |30.2| Indenting C files + |30.3| Automatic indenting + |30.4| Other indenting + |30.5| Tabs and spaces + |30.6| Formatting comments + +|usr_31.txt| Exploiting the GUI + |31.1| The file browser + |31.2| Confirmation + |31.3| Menu shortcuts + |31.4| Vim window position and size + |31.5| Various + +|usr_32.txt| The undo tree + |32.1| Undo up to a file write + |32.2| Numbering changes + |32.3| Jumping around the tree + |32.4| Time travelling + +============================================================================== +Tuning Vim ~ + +Make Vim work as you like it. + +|usr_40.txt| Make new commands + |40.1| Key mapping + |40.2| Defining command-line commands + |40.3| Autocommands + +|usr_41.txt| Write a Vim script + |41.1| Introduction + |41.2| Variables + |41.3| Expressions + |41.4| Conditionals + |41.5| Executing an expression + |41.6| Using functions + |41.7| Defining a function + |41.8| Lists and Dictionaries + |41.9| White space + |41.10| Line continuation + |41.11| Comments + |41.12| Fileformat + +|usr_42.txt| Add new menus + |42.1| Introduction + |42.2| Menu commands + |42.3| Various + |42.4| Toolbar and popup menus + +|usr_43.txt| Using filetypes + |43.1| Plugins for a filetype + |43.2| Adding a filetype + +|usr_44.txt| Your own syntax highlighted + |44.1| Basic syntax commands + |44.2| Keywords + |44.3| Matches + |44.4| Regions + |44.5| Nested items + |44.6| Following groups + |44.7| Other arguments + |44.8| Clusters + |44.9| Including another syntax file + |44.10| Synchronizing + |44.11| Installing a syntax file + |44.12| Portable syntax file layout + +|usr_45.txt| Select your language (locale) + |45.1| Language for Messages + |45.2| Language for Menus + |45.3| Using another encoding + |45.4| Editing files with a different encoding + |45.5| Entering language text + +============================================================================== +Writing Vim script ~ + +|usr_50.txt| Advanced Vim script writing + |50.1| Exceptions + |50.2| Function with variable number of arguments + |50.3| Restoring the view + +|usr_51.txt| Write plugins + |51.1| Writing a generic plugin + |51.2| Writing a filetype plugin + |51.3| Writing a compiler plugin + |51.4| Distributing Vim scripts + +|usr_52.txt| Write larger plugins + |52.1| Export and import + |52.2| Autoloading + |52.3| Autoloading without import/export + |52.4| Other mechanisms to use + |52.5| Using a Vim9 script from legacy script + +============================================================================== +Making Vim Run ~ + +Before you can use Vim. + +|usr_90.txt| Installing Vim + |90.1| Unix + |90.2| MS-Windows + |90.3| Upgrading + |90.4| Common installation issues + |90.5| Uninstalling Vim + +============================================================================== + +Copyright: see |manual-copyright| vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt new file mode 100644 index 0000000..0aa5c74 --- /dev/null +++ b/runtime/doc/various.txt @@ -0,0 +1,801 @@ +*various.txt* For Vim version 9.1. Last change: 2023 Sep 27 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Various commands *various* + +1. Various commands |various-cmds| +2. Using Vim like less or more |less| + +============================================================================== +1. Various commands *various-cmds* + + *CTRL-L* +CTRL-L Clear and redraw the screen. The redraw may happen + later, after processing typeahead. + + *:redr* *:redraw* +:redr[aw][!] Redraw the screen right now. When ! is included it is + cleared first. + Useful to update the screen halfway executing a script + or function. Also when halfway a mapping and + 'lazyredraw' is set. + + *:redraws* *:redrawstatus* +:redraws[tatus][!] Redraw the status line of the current window. When ! + is included all status lines are redrawn. + Useful to update the status line(s) when 'statusline' + includes an item that doesn't cause automatic + updating. + If the command line is being edited the redraw is + postponed until later. + + *:redrawt* *:redrawtabline* +:redrawt[abline] Redraw the tabline. Useful to update the tabline when + 'tabline' includes an item that doesn't trigger + automatic updating. + + *N<Del>* +<Del> When entering a number: Remove the last digit. + Note: if you like to use <BS> for this, add this + mapping to your .vimrc: > + :map CTRL-V <BS> CTRL-V <Del> +< See |:fixdel| if your <Del> key does not do what you + want. + +:as[cii] or *ga* *:as* *:ascii* +ga Print the ascii value of the character under the + cursor in decimal, hexadecimal and octal. + Mnemonic: Get Ascii value. + + For example, when the cursor is on a 'R': + <R> 82, Hex 52, Octal 122 ~ + When the character is a non-standard ASCII character, + but printable according to the 'isprint' option, the + non-printable version is also given. + + When the character is larger than 127, the <M-x> form + is also printed. For example: + <~A> <M-^A> 129, Hex 81, Octal 201 ~ + <p> <|~> <M-~> 254, Hex fe, Octal 376 ~ + (where <p> is a special character) + + The <Nul> character in a file is stored internally as + <NL>, but it will be shown as: + <^@> 0, Hex 00, Octal 000 ~ + + If the character has composing characters these are + also shown. The value of 'maxcombine' doesn't matter. + + If the character can be inserted as a digraph, also + output the two characters that can be used to create + the character: + <枚> 246, Hex 00f6, Oct 366, Digr o: ~ + This shows you can type CTRL-K o : to insert 枚. + + *g8* +g8 Print the hex values of the bytes used in the + character under the cursor, assuming it is in |UTF-8| + encoding. This also shows composing characters. The + value of 'maxcombine' doesn't matter. + Example of a character with two composing characters: + e0 b8 81 + e0 b8 b9 + e0 b9 89 ~ + + *8g8* +8g8 Find an illegal UTF-8 byte sequence at or after the + cursor. This works in two situations: + 1. when 'encoding' is any 8-bit encoding + 2. when 'encoding' is "utf-8" and 'fileencoding' is + any 8-bit encoding + Thus it can be used when editing a file that was + supposed to be UTF-8 but was read as if it is an 8-bit + encoding because it contains illegal bytes. + Does not wrap around the end of the file. + Note that when the cursor is on an illegal byte or the + cursor is halfway a multibyte character the command + won't move the cursor. + + *:p* *:pr* *:print* *E749* +:[range]p[rint] [flags] + Print [range] lines (default current line). + Note: If you are looking for a way to print your text + on paper see |:hardcopy|. In the GUI you can use the + File.Print menu entry. + See |ex-flags| for [flags]. + The |:filter| command can be used to only show lines + matching a pattern. + +:[range]p[rint] {count} [flags] + Print {count} lines, starting with [range] (default + current line |cmdline-ranges|). + See |ex-flags| for [flags]. + + *:P* *:Print* +:[range]P[rint] [count] [flags] + Just as ":print". Was apparently added to Vi for + people that keep the shift key pressed too long... + This command is not supported in |Vim9| script. + Note: A user command can overrule this command. + See |ex-flags| for [flags]. + + *:l* *:list* +:[range]l[ist] [count] [flags] + Same as :print, but display unprintable characters + with '^' and put $ after the line. This can be + further changed with the 'listchars' option. + See |ex-flags| for [flags]. + + *:nu* *:number* +:[range]nu[mber] [count] [flags] + Same as :print, but precede each line with its line + number. (See also 'highlight' and 'numberwidth' + option). + See |ex-flags| for [flags]. + + *:#* +:[range]# [count] [flags] + synonym for :number. + + *:#!* +:#!{anything} Ignored, so that you can start a Vim script with: > + #!vim -S + echo "this is a Vim script" + quit +< + *:z* *E144* +:[range]z[+-^.=][count] Display several lines of text surrounding the line + specified with [range], or around the current line + if there is no [range]. + + If there is a [count], that's how many lines you'll + see; if there is no [count] and only one window then + twice the value of the 'scroll' option is used, + otherwise the current window height minus 3 is used. + This is the value of "scr" in the table below. + + If there is a [count] the 'window' option is set to + its value. + + :z can be used either alone or followed by any of + several marks. These have the following effect: + + mark first line last line new cursor line ~ + ---- ---------- --------- ------------ + + current line 1 scr forward 1 scr forward + - 1 scr back current line current line + ^ 2 scr back 1 scr back 1 scr back + . 1/2 scr back 1/2 scr fwd 1/2 scr fwd + = 1/2 scr back 1/2 scr fwd current line + + Specifying no mark at all is the same as "+". + If the mark is "=", a line of dashes is printed + around the current line. + + *:z!* +:[range]z![+-^.=][count] + Like ":z", but when [count] is not specified, it + defaults to the Vim window height minus one. + +:[range]z[!]#[+-^.=][count] *:z#* + Like ":z" or ":z!", but number the lines. + + *:=* +:= [flags] Print the last line number. + See |ex-flags| for [flags]. + +:{range}= [flags] Prints the last line number in {range}. For example, + this prints the current line number: > + :.= +< See |ex-flags| for [flags]. + +:norm[al][!] {commands} *:norm* *:normal* + Execute Normal mode commands {commands}. This makes + it possible to execute Normal mode commands typed on + the command-line. {commands} are executed like they + are typed. For undo all commands are undone together. + Execution stops when an error is encountered. + + If the [!] is given, mappings will not be used. + Without it, when this command is called from a + non-remappable mapping (|:noremap|), the argument can + be mapped anyway. + + {commands} should be a complete command. If + {commands} does not finish a command, the last one + will be aborted as if <Esc> or <C-C> was typed. + This implies that an insert command must be completed + (to start Insert mode, see |:startinsert|). A ":" + command must be completed as well. And you can't use + "Q" or "gQ" to start Ex mode. + + The display is not updated while ":normal" is busy. + + {commands} cannot start with a space. Put a count of + 1 (one) before it, "1 " is one space. + + The 'insertmode' option is ignored for {commands}. + + This command cannot be followed by another command, + since any '|' is considered part of the command. + + This command can be used recursively, but the depth is + limited by 'maxmapdepth'. + + An alternative is to use |:execute|, which uses an + expression as argument. This allows the use of + printable characters to represent special characters. + + Example: > + :exe "normal \<c-w>\<c-w>" + +:{range}norm[al][!] {commands} *:normal-range* + Execute Normal mode commands {commands} for each line + in the {range}. Before executing the {commands}, the + cursor is positioned in the first column of the range, + for each line. Otherwise it's the same as the + ":normal" command without a range. + + *:sh* *:shell* *E371* +:sh[ell] This command starts a shell. When the shell exits + (after the "exit" command) you return to Vim. The + name for the shell command comes from 'shell' option. + *E360* + Note: This doesn't work when Vim on the Amiga was + started in QuickFix mode from a compiler, because the + compiler will have set stdin to a non-interactive + mode. + + *:!cmd* *:!* +:!{cmd} Execute {cmd} with the shell. See also the 'shell' + and 'shelltype' option. + *E34* + Any '!' in {cmd} is replaced with the previous + external command (see also 'cpoptions'). But not when + there is a backslash before the '!', then that + backslash is removed. Example: ":!ls" followed by + ":!echo ! \! \\!" executes "echo ls ! \!". + + A '|' in {cmd} is passed to the shell, you cannot use + it to append a Vim command. See |:bar|. + + If {cmd} contains "%" it is expanded to the current + file name, "#" is expanded to the alternate file name. + Special characters in the file name are not escaped, + use quotes to avoid their special meaning: > + :!ls "%" +< If the file name contains a "$" then single quotes + might work better, but this only works if the file + name does not contain a single quote: > + :!ls '%' +< This should always work, but it's more typing: > + :exe "!ls " .. shellescape(expand("%")) +< To get a literal "%" or "#" prepend it with a + backslash. For example, to list all files starting + with "%": > + :!ls \%* +< + A newline character ends {cmd}, what follows is + interpreted as a following ":" command. However, if + there is a backslash before the newline it is removed + and {cmd} continues. It doesn't matter how many + backslashes are before the newline, only one is + removed. + + On Unix the command normally runs in a non-interactive + shell. If you want an interactive shell to be used + (to use aliases) set 'shellcmdflag' to "-ic". + For Win32 also see |:!start|. + + After the command has been executed, the timestamp and + size of the current file is checked |timestamp|. + + Vim redraws the screen after the command is finished, + because it may have printed any text. This requires a + hit-enter prompt, so that you can read any messages. + To avoid this use: > + :silent !{cmd} +< The screen is not redrawn then, thus you have to use + CTRL-L or ":redraw!" if the command did display + something. However, this depends on what the |t_ti| + and |t_te| termcap entries are set to. + Also see |shell-window|. + + *:!!* +:!! Repeat last ":!{cmd}". + + *:ve* *:ver* *:version* +:ve[rsion] Print the version number of the editor. If the + compiler used understands "__DATE__" the compilation + date is mentioned. Otherwise a fixed release-date is + shown. + The following lines contain information about which + features were enabled when Vim was compiled. When + there is a preceding '+', the feature is included, + when there is a '-' it is excluded. To change this, + you have to edit feature.h and recompile Vim. + To check for this in an expression, see |has()|. + Here is an overview of the features. + The first column shows the smallest version in which + they are included: + T tiny (always) + N normal + H huge + m manually enabled or depends on other features + - never, feature was removed + (none) system dependent + Thus if a feature is marked with "N", it is included + in the normal and huge versions of Vim. + + *+feature-list* + *+acl* |ACL| support included + *+ARP* Amiga only: ARP support included +H *+arabic* |Arabic| language support +N *+autochdir* support 'autochdir' option +T *+autocmd* |:autocmd|, automatic commands. Always enabled since + 8.0.1564 +H *+autoservername* Automatically enable |clientserver| +m *+balloon_eval* |balloon-eval| support in the GUI. Included when + compiling with supported GUI (Motif, GTK, GUI) and + either Netbeans/Sun Workshop integration or |+eval| + feature. +H *+balloon_eval_term* |balloon-eval| support in the terminal, + 'balloonevalterm' +N *+browse* |:browse| command +T *++builtin_terms* maximal terminals builtin |builtin-terms| Always + enabled since 9.0.0280 +N *+byte_offset* support for 'o' flag in 'statusline' option, "go" + and ":goto" commands. +m *+channel* inter process communication |channel| +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 +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 + 9.0.0747 +T *+cmdwin* |cmdline-window| support; Always enabled since 9.0.0657 +T *+comments* |'comments'| support +N *+conceal* "conceal" support, see |conceal| |:syn-conceal| etc. +N *+cryptv* encryption support |encryption| +H *+cscope* |cscope| support +T *+cursorbind* |'cursorbind'| support +m *+cursorshape* |termcap-cursor-shape| support +m *+debug* Compiled for debugging. +N *+dialog_gui* Support for |:confirm| with GUI dialog. +N *+dialog_con* Support for |:confirm| with console dialog. +N *+dialog_con_gui* Support for |:confirm| with GUI and console dialog. +N *+diff* |vimdiff| and 'diff' +N *+digraphs* |digraphs| *E196* + *+directx* Win32 GUI only: DirectX and |'renderoptions'| + *+dnd* Support for DnD into the "~ register |quote_~|. +H *+emacs_tags* |emacs-tags| files +N *+eval* expression evaluation |eval.txt| +T *+ex_extra* always on now, used to be for Vim's extra Ex commands +N *+extra_search* |'hlsearch'| and |'incsearch'| options. +- *+farsi* Removed: |farsi| language +T *+file_in_path* |gf|, |CTRL-W_f| and |<cfile>| Always enabled since + 9.0.265 +N *+find_in_path* include file searches: |[I|, |:isearch|, + |CTRL-W_CTRL-I|, |:checkpath|, etc. +N *+folding* |folding| + *+footer* |gui-footer| + *+fork* Unix only: |fork| shell commands +T *+float* Floating point support Always enabled since 9.0.0491 +N *+gettext* message translations |multi-lang| +- *+GUI_Athena* Unix only: Athena |GUI| + *+GUI_neXtaw* Unix only: neXtaw |GUI| + *+GUI_GTK* Unix only: GTK+ |GUI| + *+GUI_Motif* Unix only: Motif |GUI| + *+GUI_Photon* QNX only: Photon |GUI| +m *+hangul_input* Hangul input support |hangul| + *+iconv* Compiled with the |iconv()| function + *+iconv/dyn* Likewise |iconv-dynamic| |/dyn| +T *+insert_expand* |insert_expand| Insert mode completion +m *+ipv6* Support for IPv6 networking |channel| +m *+job* starting and stopping jobs |job| +T *+jumplist* |jumplist|; Always enabled since 8.2.3795 +H *+keymap* |'keymap'| +N *+lambda* |lambda| and |closure| +H *+langmap* |'langmap'| +N *+libcall* |libcall()| +N *+linebreak* |'linebreak'|, |'breakat'| and |'showbreak'| +T *+lispindent* |'lisp'| +T *+listcmds* Vim commands for the list of buffers |buffer-hidden| + and argument list |:argdelete| +T *+localmap* Support for mappings local to a buffer |:map-local| +m *+lua* |Lua| interface +m *+lua/dyn* |Lua| interface |/dyn| +N *+menu* |:menu| +N *+mksession* |:mksession| +T *+modify_fname* |filename-modifiers| +T *+mouse* Mouse handling |mouse-using| +N *+mouseshape* |'mouseshape'| +N *+mouse_dec* Unix only: Dec terminal mouse handling |dec-mouse| +N *+mouse_gpm* Unix only: Linux console mouse handling |gpm-mouse| +m *+mouse_gpm/dyn* Same as |+mouse_gpm| with optional library dependency + |/dyn| +N *+mouse_jsbterm* JSB mouse handling |jsbterm-mouse| +N *+mouse_netterm* Unix only: netterm mouse handling |netterm-mouse| +N *+mouse_pterm* QNX only: pterm mouse handling |qnx-terminal| +N *+mouse_sysmouse* Unix only: *BSD console mouse handling |sysmouse| +N *+mouse_sgr* Unix only: sgr mouse handling |sgr-mouse| +N *+mouse_urxvt* Unix only: urxvt mouse handling |urxvt-mouse| +N *+mouse_xterm* Unix only: xterm mouse handling |xterm-mouse| +T *+multi_byte* Unicode support, 16 and 32 bit characters |multibyte| + *+multi_byte_ime* Win32 input method for multibyte chars |multibyte-ime| +N *+multi_lang* non-English language support |multi-lang| +m *+mzscheme* Mzscheme interface |mzscheme| +m *+mzscheme/dyn* Mzscheme interface |mzscheme-dynamic| |/dyn| +m *+netbeans_intg* |netbeans| +T *+num64* 64-bit Number support |Number| + Always enabled since 8.2.0271, use v:numbersize to + check the actual size of a Number. +m *+ole* Win32 GUI only: |ole-interface| +N *+packages* Loading |packages| +T *+path_extra* Up/downwards search in 'path' and 'tags' Always + enabled since 9.0.0270 +m *+perl* Perl interface |perl| +m *+perl/dyn* Perl interface |perl-dynamic| |/dyn| +N *+persistent_undo* Persistent undo |undo-persistence| +N *+popupwin* Popup windows |popup-window| + *+postscript* |:hardcopy| writes a PostScript file +N *+printer* |:hardcopy| command +H *+profile* |:profile| command +m *+python* Python 2 interface |python| +m *+python/dyn* Python 2 interface |python-dynamic| |/dyn| +m *+python3* Python 3 interface |python| +m *+python3/dyn* Python 3 interface |python-dynamic| |/dyn| +m *+python3/dyn-stable* + Python 3 interface |python-dynamic| |python-stable| + |/dyn| +N *+quickfix* |:make| and |quickfix| commands +N *+reltime* |reltime()| function, 'hlsearch'/'incsearch' timeout, + 'redrawtime' option +H *+rightleft* Right to left typing |'rightleft'| +m *+ruby* Ruby interface |ruby| +m *+ruby/dyn* Ruby interface |ruby-dynamic| |/dyn| +T *+scrollbind* |'scrollbind'| +N *+signs* |:sign| +T *+smartindent* |'smartindent'| +H *+sodium* compiled with libsodium for better encryption support +H *+sound* |sound_playevent()|, |sound_playfile()| functions, etc. +N *+spell* spell checking support, see |spell| +N *+startuptime* |--startuptime| argument +N *+statusline* Options 'statusline', 'rulerformat' and special + formats of 'titlestring' and 'iconstring' +- *+sun_workshop* Removed: |workshop| +N *+syntax* Syntax highlighting |syntax| + *+system()* Unix only: opposite of |+fork| +T *+tag_binary* binary searching in tags file |tag-binary-search| +- *+tag_old_static* Removed; method for static tags |tag-old-static| +- *+tag_any_white* Removed; was to allow any white space in tags files +m *+tcl* Tcl interface |tcl| +m *+tcl/dyn* Tcl interface |tcl-dynamic| |/dyn| +m *+terminal* Support for terminal window |terminal| + *+terminfo* uses |terminfo| instead of termcap +N *+termresponse* support for |t_RV| and |v:termresponse| +N *+termguicolors* 24-bit color in xterm-compatible terminals support +T *+textobjects* |text-objects| selection. Always enabled since 9.0.0222. +N *+textprop* |text-properties| + *+tgetent* non-Unix only: able to use external termcap +N *+timers* the |timer_start()| function +T *+title* Setting the window 'title' and 'icon'; Always enabled +N *+toolbar* |gui-toolbar| +T *+user_commands* User-defined commands. |user-commands| + Always enabled since 8.1.1210. +H *+vartabs* Variable-width tabstops. |'vartabstop'| +T *+vertsplit* Vertically split windows |:vsplit|; Always enabled + since 8.0.1118. +T *+vim9script* |Vim9| script +N *+viminfo* |'viminfo'| +T *+virtualedit* |'virtualedit'| Always enabled since 8.1.826. +T *+visual* Visual mode |Visual-mode| Always enabled since 7.4.200. +T *+visualextra* extra Visual mode commands |blockwise-operators| +T *+vreplace* |gR| and |gr| + *+vtp* on MS-Windows console: support for 'termguicolors' +T *+wildignore* |'wildignore'| Always enabled since 9.0.0278 +T *+wildmenu* |'wildmenu'| Always enabled since 9.0.0279 +T *+windows* more than one window; Always enabled since 8.0.1118. +m *+writebackup* |'writebackup'| is default on +m *+xim* X input method |xim| + *+xfontset* X fontset support |xfontset| +N *+xattr* compiled with extended attribute support (Linux only) + *+xpm* pixmap support +m *+xpm_w32* Win32 GUI only: pixmap support |w32-xpm-support| + *+xsmp* XSMP (X session management) support + *+xsmp_interact* interactive XSMP (X session management) support +N *+xterm_clipboard* Unix only: xterm clipboard handling +m *+xterm_save* save and restore xterm screen |xterm-screens| +N *+X11* Unix only: can restore window title |X11| + + */dyn* *E370* *E448* + To some of the features "/dyn" is added when the + feature is only available when the related library can + be dynamically loaded. + +:ve[rsion] {nr} Is now ignored. This was previously used to check the + version number of a .vimrc file. It was removed, + because you can now use the ":if" command for + version-dependent behavior. + + *:redi* *:redir* +:redi[r][!] > {file} Redirect messages to file {file}. The messages which + are the output of commands are written to that file, + until redirection ends. The messages are also still + shown on the screen. When [!] is included, an + existing file is overwritten. When [!] is omitted, + and {file} exists, this command fails. + + Only one ":redir" can be active at a time. Calls to + ":redir" will close any active redirection before + starting redirection to the new target. For recursive + use check out |execute()|. + + To stop the messages and commands from being echoed to + the screen, put the commands in a function and call it + with ":silent call Function()". + An alternative is to use the 'verbosefile' option, + this can be used in combination with ":redir". + +:redi[r] >> {file} Redirect messages to file {file}. Append if {file} + already exists. + +:redi[r] @{a-zA-Z} +:redi[r] @{a-zA-Z}> Redirect messages to register {a-z}. Append to the + contents of the register if its name is given + uppercase {A-Z}. The ">" after the register name is + optional. +:redi[r] @{a-z}>> Append messages to register {a-z}. + +:redi[r] @*> +:redi[r] @+> Redirect messages to the selection or clipboard. For + backward compatibility, the ">" after the register + name can be omitted. See |quotestar| and |quoteplus|. +:redi[r] @*>> +:redi[r] @+>> Append messages to the selection or clipboard. + +:redi[r] @"> Redirect messages to the unnamed register. For + backward compatibility, the ">" after the register + name can be omitted. +:redi[r] @">> Append messages to the unnamed register. + *E1092* +:redi[r] => {var} Redirect messages to a variable. + In legacy script: If the variable doesn't exist, then + it is created. If the variable exists, then it is + initialized to an empty string. After the redirection + starts, if the variable is removed or locked or the + variable type is changed, then further command output + messages will cause errors. When using a local + variable (l:var in a function or s:var in a script) + and another `:redir` causes the current one to end, + the scope might be different and the assignment fails. + In Vim9 script: the variable must have been declared + as a string. + The variable will remain empty until redirection ends. + Only string variables can be used. + To get the output of one command the |execute()| + function can be used instead of redirection. + +:redi[r] =>> {var} Append messages to an existing variable. Only string + variables can be used. + *E1185* +:redi[r] END End redirecting messages. + + *:filt* *:filter* +:filt[er][!] {pattern} {command} +:filt[er][!] /{pattern}/ {command} + Restrict the output of {command} to lines matching + with {pattern}. For example, to list only xml files: > + :filter /\.xml$/ oldfiles +< If the [!] is given, restrict the output of {command} + to lines that do NOT match {pattern}. + + {pattern} is a Vim search pattern. Instead of enclosing + it in / any non-ID character (see |'isident'|) can be + used, so long as it does not appear in {pattern}. + Without the enclosing character the pattern cannot + include the bar character. 'ignorecase' is not used. + + The pattern is matched against the relevant part of + the output, not necessarily the whole line. Only some + commands support filtering, try it out to check if it + works. Some of the commands that support filtering: + |:#| - filter whole line + |:clist| - filter by file name or module name + |:command| - filter by command name + |:files| - filter by file name + |:highlight| - filter by highlight group + |:jumps| - filter by file name + |:let| - filter by variable name + |:list| - filter whole line + |:llist| - filter by file name or module name + |:marks| - filter by text in the current file, + or file name for other files + |:oldfiles| - filter by file name + |:registers| - filter by register contents + (does not work multi-line) + |:set| - filter by option name + + Only normal messages are filtered, error messages are + not. + + *:sil* *:silent* *:silent!* +:sil[ent][!] {command} Execute {command} silently. Normal messages will not + be given or added to the message history. + When [!] is added, error messages will also be + skipped, and commands and mappings will not be aborted + when an error is detected. |v:errmsg| is still set. + When [!] is not used, an error message will cause + further messages to be displayed normally. + Redirection, started with |:redir|, will continue as + usual, although there might be small differences. + This will allow redirecting the output of a command + without seeing it on the screen. Example: > + :redir >/tmp/foobar + :silent g/Aap/p + :redir END +< To execute a Normal mode command silently, use the + |:normal| command. For example, to search for a + string without messages: > + :silent exe "normal /path\<CR>" +< ":silent!" is useful to execute a command that may + fail, but the failure is to be ignored. Example: > + :let v:errmsg = "" + :silent! /^begin + :if v:errmsg != "" + : ... pattern was not found +< ":silent" will also avoid the hit-enter prompt. When + using this for an external command, this may cause the + screen to be messed up. Use |CTRL-L| to clean it up + then. + ":silent menu ..." defines a menu that will not echo a + Command-line command. The command will still produce + messages though. Use ":silent" in the command itself + to avoid that: ":silent menu .... :silent command". + + *:uns* *:unsilent* +:uns[ilent] {command} Execute {command} not silently. Only makes a + difference when |:silent| was used to get to this + command. + Use this for giving a message even when |:silent| was + used. In this example |:silent| is used to avoid the + message about reading the file and |:unsilent| to be + able to list the first line of each file. > + :silent argdo unsilent echo expand('%') .. ": " .. getline(1) +< + + *:verb* *:verbose* +:[count]verb[ose] {command} + Execute {command} with 'verbose' set to [count]. If + [count] is omitted one is used. ":0verbose" can be + used to set 'verbose' to zero. + The additional use of ":silent" makes messages + generated but not displayed. + The combination of ":silent" and ":verbose" can be + used to generate messages and check them with + |v:statusmsg| and friends. For example: > + :let v:statusmsg = "" + :silent verbose runtime foobar.vim + :if v:statusmsg != "" + : " foobar.vim could not be found + :endif +< When concatenating another command, the ":verbose" + only applies to the first one: > + :4verbose set verbose | set verbose +< verbose=4 ~ + verbose=0 ~ + For logging verbose messages in a file use the + 'verbosefile' option. + + *:verbose-cmd* +When 'verbose' is non-zero, listing the value of a Vim option or a key map or +an abbreviation or a user-defined function or a command or a highlight group +or an autocommand will also display where it was last defined. If it was +defined manually then there will be no "Last set" message. When it was +defined while executing a function, user command or autocommand, the script in +which it was defined is reported. +{not available when compiled without the |+eval| feature} + + *K* +K Run a program to lookup the keyword under the + cursor. The name of the program is given with the + 'keywordprg' (kp) option (default is "man"). The + keyword is formed of letters, numbers and the + characters in 'iskeyword'. The keyword under or + right of the cursor is used. The same can be done + with the command > + :!{program} {keyword} +< There is an example of a program to use in the tools + directory of Vim. It is called "ref" and does a + simple spelling check. + Special cases: + - If 'keywordprg' begins with ":" it is invoked as + a Vim Ex command with [count]. + - If 'keywordprg' is empty, the ":help" command is + used. It's a good idea to include more characters + in 'iskeyword' then, to be able to find more help. + - When 'keywordprg' is equal to "man" or starts with + ":", a [count] before "K" is inserted after + keywordprg and before the keyword. For example, + using "2K" while the cursor is on "mkdir", results + in: > + !man 2 mkdir +< - When 'keywordprg' is equal to "man -s", a count + before "K" is inserted after the "-s". If there is + no count, the "-s" is removed. + + *v_K* +{Visual}K Like "K", but use the visually highlighted text for + the keyword. Only works when the highlighted text is + not more than one line. + +[N]gs *gs* *:sl* *:sleep* +:[N]sl[eep] [N][m] Do nothing for [N] seconds. When [m] is included, + sleep for [N] milliseconds. The count for "gs" always + uses seconds. The default is one second. > + :sleep "sleep for one second + :5sleep "sleep for five seconds + :sleep 100m "sleep for 100 milliseconds + 10gs "sleep for ten seconds +< Can be interrupted with CTRL-C (CTRL-Break on + MS-Windows). "gs" stands for "goto sleep". + While sleeping the cursor is positioned in the text, + if at a visible position. + Also process the received netbeans messages. {only + available when compiled with the |+netbeans_intg| + feature} + + *:sl!* *:sleep!* +:[N]sl[eep]! [N][m] Same as above, but hide the cursor. + + *:xrestore* *:xr* +:xr[estore] [display] Reinitializes the connection to the X11 server. Useful + after the X server restarts, e.g. when running Vim for + long time inside screen/tmux and connecting from + different machines. + [display] should be in the format of the $DISPLAY + environment variable (e.g. "localhost:10.0") + If [display] is omitted, then it reinitializes the + connection to the X11 server using the same value as + was used for the previous execution of this command. + If the value was never specified, then it uses the + value of $DISPLAY environment variable as it was when + Vim was started. + {only available when compiled with the |+clipboard| + feature} + + *g_CTRL-A* +g CTRL-A Only when Vim was compiled with MEM_PROFILING defined + (which is very rare): print memory usage statistics. + Only useful for debugging Vim. + For incrementing in Visual mode see |v_g_CTRL-A|. + +============================================================================== +2. Using Vim like less or more *less* + +If you use the less or more program to view a file, you don't get syntax +highlighting. Thus you would like to use Vim instead. You can do this by +using the shell script "$VIMRUNTIME/macros/less.sh". + +This shell script uses the Vim script "$VIMRUNTIME/macros/less.vim". It sets +up mappings to simulate the commands that less supports. Otherwise, you can +still use the Vim commands. + +This isn't perfect. For example, when viewing a short file Vim will still use +the whole screen. But it works well enough for most uses, and you get syntax +highlighting. + +The "h" key will give you a short overview of the available commands. + +If you want to set options differently when using less, define the +LessInitFunc in your vimrc, for example: > + + func LessInitFunc() + set nocursorcolumn nocursorline + endfunc +< + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version4.txt b/runtime/doc/version4.txt new file mode 100644 index 0000000..ab358d2 --- /dev/null +++ b/runtime/doc/version4.txt @@ -0,0 +1,355 @@ +*version4.txt* For Vim version 9.1. Last change: 2006 Apr 24 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +This document lists the incompatible differences between Vim 3.0 and Vim 4.0. +Although 4.0 is mentioned here, this is also for version 4.1, 4.2, etc.. + +This file is important for everybody upgrading from Vim 3.0. Read it +carefully to avoid unexpected problems. + +'backup' option default changed |backup-changed| +Extension for backup file changed |backup-extension| +Structure of swap file changed |swapfile-changed| +"-w scriptout" argument changed |scriptout-changed| +Backspace and Delete keys |backspace-delete| +Escape for | changed |escape-bar| +Key codes changed |key-codes-changed| +Terminal options changed |termcap-changed| +'errorformat' option changed |errorformat-changed| +'graphic' option gone |graphic-option-gone| +'yankendofline' option gone |ye-option-gone| +'icon' and 'title' default value changed |icon-changed| +'highlight' option changed |highlight-changed| +'tildeop' and 'weirdinvert' short names changed |short-name-changed| +Use of "v", "V" and "CTRL-V" in Visual mode |use-visual-cmds| +CTRL-B in Insert mode removed |toggle-revins| + + +'backup' option default changed *backup-changed* +------------------------------- + +The default value for 'backup' used to be on. This resulted in a backup file +being made when the original file was overwritten. + +Now the default for 'backup' is off. As soon as the writing of the file has +successfully finished, the backup file is deleted. If you want to keep the +backup file, set 'backup' on in your vimrc. The reason for this change is +that many people complained that leaving a backup file behind is not +Vi-compatible. |'backup'| + + +Extension for backup file changed *backup-extension* +--------------------------------- + +The extension for the backup file used to be ".bak". Since other programs +also use this extension and some users make copies with this extension, it was +changed to the less obvious "~". Another advantage is that this takes less +space, which is useful when working on a system with short file names. For +example, on MS-DOS the backup files for "longfile.c" and "longfile.h" would +both become "longfile.bak"; now they will be "longfile.c~" and "longfile.h~". + +If you prefer to use ".bak", you can set the 'backupext' option: > + :set bex=.bak + + +Structure of swap file changed *swapfile-changed* +------------------------------ + +The contents of the swap file were extended with several parameters. Vim +stores the user name and other information about the edited file to make +recovery more easy and to be able to know where the swap file comes from. The +first part of the swap file can now be understood on a machine with a +different byte order or sizeof(int). When you try to recover a file on such a +machine, you will get an error message that this is not possible. + +Because of this change, swap files cannot be exchanged between 3.0 and 4.0. +If you have a swap file from a crashed session with 3.0, use Vim 3.0 to +recover the file---don't use 4.0. |swap-file| + + +"-w scriptout" argument changed *scriptout-changed* +------------------------------- + +"vim -w scriptout" used to append to the scriptout file. Since this was +illogical, it now creates a new file. An existing file is not overwritten +(to avoid destroying an existing file for those who rely on the appending). +[This was removed again later] |-w| + + +Backspace and Delete keys *backspace-delete* +------------------------- + +In 3.0 both the delete key and the backspace key worked as a backspace in +insert mode; they deleted the character to the left of the cursor. In 4.0 the +delete key has a new function: it deletes the character under the cursor, just +like it does on the command-line. If the cursor is after the end of the line +and 'bs' is set, two lines are joined. |<Del>| |i_<Del>| + +In 3.0 the backspace key was always defined as CTRL-H and delete as CTRL-?. +In 4.0 the code for the backspace and delete key is obtained from termcap or +termlib, and adjusted for the "stty erase" value on Unix. This helps people +who define the erase character according to the keyboard they are working on. + |<BS>| |i_<BS>| + +If you prefer backspace and delete in Insert mode to have the old behavior, +put this line in your vimrc: + + inoremap ^? ^H + +And you may also want to add these, to fix the values for <BS> and <Del>: + + set t_kb=^H + set t_kD=^? + +(Enter ^H with CTRL-V CTRL-H and ^? with CTRL-V CTRL-? or <Del>.) + +If the value for t_kb is correct, but the t_kD value is not, use the ":fixdel" +command. It will set t_kD according to the value of t_kb. This is useful if +you are using several different terminals. |:fixdel| + +When ^H is not recognized as <BS> or <Del>, it is used like a backspace. + + +Escape for | changed *escape-bar* +-------------------- + +When the 'b' flag is present in 'cpoptions', the backslash cannot be used to +escape '|' in mapping and abbreviate commands, only CTRL-V can. This is +Vi-compatible. If you work in Vi-compatible mode and had used "\|" to include +a bar in a mapping, this needs to be replaced by "^V|". See |:bar|. + + +Key codes changed *key-codes-changed* +----------------- + +The internal representation of key codes has changed dramatically. In 3.0 a +one-byte code was used to represent a key. This caused problems with +different characters sets that also used these codes. In 4.0 a three-byte +code is used that cannot be confused with a character. |key-notation| + +If you have used the single-byte key codes in your vimrc for mappings, you +will have to replace them with the 4.0 codes. Instead of using the three-byte +code directly, you should use the symbolic representation for this in <>. See +the table below. The table also lists the old name, as it was used in the 3.0 +documentation. + +The key names in <> can be used in mappings directly. This makes it possible +to copy/paste examples or type them literally. The <> notation has been +introduced for this |<>|. The 'B' and '<' flags must not be present in +'cpoptions' to enable this to work |'cpoptions'|. + +old name new name old code old MS-DOS code ~ + hex dec hex dec ~ +<ESC> <Esc> +<TAB> <Tab> +<LF> <NL> <NewLine> <LineFeed> +<SPACE> <Space> +<NUL> <Nul> +<BELL> <Bell> +<BS> <BS> <BackSpace> +<INSERT> <Insert> +<DEL> <Del> <Delete> +<HOME> <Home> +<END> <End> +<PAGE_UP> <PageUp> +<PAGE_DOWN> <PageDown> + +<C_UP> <Up> 0x80 128 0xb0 176 +<C_DOWN> <Down> 0x81 129 0xb1 177 +<C_LEFT> <Left> 0x82 130 0xb2 178 +<C_RIGHT> <Right> 0x83 131 0xb3 179 +<SC_UP> <S-Up> 0x84 132 0xb4 180 +<SC_DOWN> <S-Down> 0x85 133 0xb5 181 +<SC_LEFT> <S-Left> 0x86 134 0xb6 182 +<SC_RIGHT> <S-Right> 0x87 135 0xb7 183 + +<F1> <F1> 0x88 136 0xb8 184 +<F2> <F2> 0x89 137 0xb9 185 +<F3> <F3> 0x8a 138 0xba 186 +<F4> <F4> 0x8b 139 0xbb 187 +<F5> <F5> 0x8c 140 0xbc 188 +<F6> <F6> 0x8d 141 0xbd 189 +<F7> <F7> 0x8e 142 0xbe 190 +<F8> <F8> 0x8f 143 0xbf 191 +<F9> <F9> 0x90 144 0xc0 192 +<F10> <F10> 0x91 145 0xc1 193 + +<SF1> <S-F1> 0x92 146 0xc2 194 +<SF2> <S-F2> 0x93 147 0xc3 195 +<SF3> <S-F3> 0x94 148 0xc4 196 +<SF4> <S-F4> 0x95 149 0xc5 197 +<SF5> <S-F5> 0x96 150 0xc6 198 +<SF6> <S-F6> 0x97 151 0xc7 199 +<SF7> <S-F7> 0x98 152 0xc8 200 +<SF8> <S-F8> 0x99 153 0xc9 201 +<SF9> <S-F9> 0x9a 154 0xca 202 +<SF10> <S-F10> 0x9b 155 0xcb 203 + +<HELP> <Help> 0x9c 156 0xcc 204 +<UNDO> <Undo> 0x9d 157 0xcd 205 + + (not used) 0x9e 158 0xce 206 + (not used) 0x9f 159 0xcf 207 + + +Terminal options changed *termcap-changed* +------------------------ + +The names of the terminal options have been changed to match the termcap names +of these options. All terminal options now have the name t_xx, where xx is +the termcap name. Normally these options are not used, unless you have a +termcap entry that is wrong or incomplete, or you have set the highlight +options to a different value. |terminal-options| + +Note that for some keys there is no termcap name. Use the <> type of name +instead, which is a good idea anyway. + +Note that "t_ti" has become "t_mr" (invert/reverse output) and "t_ts" has +become "t_ti" (init terminal mode). Be careful when you use "t_ti"! + +old name new name meaning ~ +t_cdl t_DL delete number of lines *t_cdl* +t_ci t_vi cursor invisible *t_ci* +t_cil t_AL insert number of lines *t_cil* +t_cm t_cm move cursor +t_cri t_RI cursor number of chars right *t_cri* +t_cv t_ve cursor visible *t_cv* +t_cvv t_vs cursor very visible *t_cvv* +t_dl t_dl delete line +t_cs t_cs scroll region +t_ed t_cl clear display *t_ed* +t_el t_ce clear line *t_el* +t_il t_al insert line *t_il* + t_da display may be retained above the screen + t_db display may be retained below the screen +t_ke t_ke put terminal out of keypad transmit mode +t_ks t_ks put terminal in keypad transmit mode +t_ms t_ms save to move cursor in highlight mode +t_se t_se normal mode (undo t_so) +t_so t_so shift out (standout) mode +t_ti t_mr reverse highlight +t_tb t_md bold mode *t_tb* +t_tp t_me highlight end *t_tp* +t_sr t_sr scroll reverse +t_te t_te out of termcap mode +t_ts t_ti into termcap mode *t_ts_old* +t_vb t_vb visual bell +t_csc t_CS cursor is relative to scroll region *t_csc* + +t_ku t_ku <Up> arrow up +t_kd t_kd <Down> arrow down +t_kr t_kr <Right> arrow right +t_kl t_kl <Left> arrow left +t_sku <S-Up> shifted arrow up *t_sku* +t_skd <S-Down> shifted arrow down *t_skd* +t_skr t_%i <S-Right> shifted arrow right *t_skr* +t_skl t_#4 <S-Left> shifted arrow left *t_skl* +t_f1 t_k1 <F1> function key 1 *t_f1* +t_f2 t_k2 <F2> function key 2 *t_f2* +t_f3 t_k3 <F3> function key 3 *t_f3* +t_f4 t_k4 <F4> function key 4 *t_f4* +t_f5 t_k5 <F5> function key 5 *t_f5* +t_f6 t_k6 <F6> function key 6 *t_f6* +t_f7 t_k7 <F7> function key 7 *t_f7* +t_f8 t_k8 <F8> function key 8 *t_f8* +t_f9 t_k9 <F9> function key 9 *t_f9* +t_f10 t_k; <F10> function key 10 *t_f10* +t_sf1 <S-F1> shifted function key 1 *t_sf1* +t_sf2 <S-F2> shifted function key 2 *t_sf2* +t_sf3 <S-F3> shifted function key 3 *t_sf3* +t_sf4 <S-F4> shifted function key 4 *t_sf4* +t_sf5 <S-F5> shifted function key 5 *t_sf5* +t_sf6 <S-F6> shifted function key 6 *t_sf6* +t_sf7 <S-F7> shifted function key 7 *t_sf7* +t_sf8 <S-F8> shifted function key 8 *t_sf8* +t_sf9 <S-F9> shifted function key 9 *t_sf9* +t_sf10 <S-F10> shifted function key 10 *t_sf10* +t_help t_%1 <Help> help key *t_help* +t_undo t_&8 <Undo> undo key *t_undo* + + +'errorformat' option changed *errorformat-changed* +---------------------------- + +'errorformat' can now contain several formats, separated by commas. The first +format that matches is used. The default values have been adjusted to catch +the most common formats. |errorformat| + +If you have a format that contains a comma, it needs to be preceded with a +backslash. Type two backslashes, because the ":set" command will eat one. + + +'graphic' option gone *graphic-option-gone* +--------------------- + +The 'graphic' option was used to make the characters between <~> and 0xa0 +display directly on the screen. Now the 'isprint' option takes care of this +with many more possibilities. The default setting is the same; you only need +to look into this if you previously set the 'graphic' option in your vimrc. + |'isprint'| + + +'yankendofline' option gone *ye-option-gone* +--------------------------- + +The 'yankendofline' option has been removed. Instead you can just use + :map Y y$ + + +'icon' and 'title' default value changed *icon-changed* +---------------------------------------- + +The 'title' option is now only set by default if the original title can be +restored. Avoids "Thanks for flying Vim" titles. If you want them anyway, +put ":set title" in your vimrc. |'title'| + +The default for 'icon' now depends on the possibility of restoring the +original value, just like 'title'. If you don't like your icon titles to be +changed, add this line to your vimrc: |'icon'| + :set noicon + + +'highlight' option changed *highlight-changed* +-------------------------- + +The 'i' flag now means italic highlighting, instead of invert. The 'r' flag +is used for reverse highlighting, which is what 'i' used to be. Normally you +won't see the difference, because italic mode is not supported on most +terminals and reverse mode is used as a fallback. |'highlight'| + +When an occasion is not present in 'highlight', use the mode from the default +value for 'highlight', instead of reverse mode. + + +'tildeop' and 'weirdinvert' short names changed *short-name-changed* +----------------------------------------------- + +Renamed 'to' (abbreviation for 'tildeop') to 'top'. |'tildeop'| +Renamed 'wi' (abbreviation for 'weirdinvert') to 'wiv'. |'weirdinvert'| + +This was done because Vi uses 'wi' as the short name for 'window' and 'to' as +the short name for 'timeout'. This means that if you try setting these +options, you won't get an error message, but the effect will be different. + + +Use of "v", "V" and "CTRL-V" in Visual mode *use-visual-cmds* +------------------------------------------- + +In Visual mode, "v", "V", and "CTRL-V" used to end Visual mode. Now this +happens only if the Visual mode was in the corresponding type. Otherwise the +type of Visual mode is changed. Now only ESC can be used in all circumstances +to end Visual mode without doing anything. |v_V| + + +CTRL-B in Insert mode removed *toggle-revins* +----------------------------- + +CTRL-B in Insert mode used to toggle the 'revins' option. If you don't know +this and accidentally hit CTRL-B, it is very difficult to find out how to undo +it. Since hardly anybody uses this feature, it is disabled by default. If +you want to use it, define RIGHTLEFT in feature.h before compiling. |'revins'| + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt new file mode 100644 index 0000000..19fcf9e --- /dev/null +++ b/runtime/doc/version5.txt @@ -0,0 +1,7813 @@ +*version5.txt* For Vim version 9.1. Last change: 2022 Nov 09 + + + VIM REFERENCE MANUAL by Bram Moolenaar + +Welcome to Vim Version 5.0! + +This document lists the differences between Vim 4.x and Vim 5.0. +Although 5.0 is mentioned here, this is also for version 5.1, 5.2, etc. +See |vi_diff.txt| for an overview of differences between Vi and Vim 5.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. + +INCOMPATIBLE: |incompatible-5| + +Default value for 'compatible' changed |cp-default| +Text formatting command "Q" changed |Q-command-changed| +Command-line arguments changed |cmdline-changed| +Autocommands are kept |autocmds-kept| +Use of 'hidden' changed |hidden-changed| +Text object commands changed |text-objects-changed| +X-Windows Resources removed |x-resources| +Use of $VIM |$VIM-use| +Use of $HOME for MS-DOS and Win32 |$HOME-use| +Tags file format changed |tags-file-changed| +Options changed |options-changed| +CTRL-B in Insert mode gone |i_CTRL-B-gone| + +NEW FEATURES: |new-5| + +Syntax highlighting |new-highlighting| +Built-in script language |new-script| +Perl and Python support |new-perl-python| +Win32 GUI version |added-win32-GUI| +VMS version |added-VMS| +BeOS version |added-BeOS| +Macintosh GUI version |added-Mac| +More Vi compatible |more-compatible| +Read input from stdin |read-stdin| +Regular expression patterns |added-regexp| +Overloaded tags |tag-overloaded| +New commands |new-commands| +New options |added-options| +New command-line arguments |added-cmdline-args| +Various additions |added-various| + +IMPROVEMENTS |improvements-5| + +COMPILE TIME CHANGES |compile-changes-5| + +BUG FIXES |bug-fixes-5| + +VERSION 5.1 |version-5.1| +Changed |changed-5.1| +Added |added-5.1| +Fixed |fixed-5.1| + +VERSION 5.2 |version-5.2| +Long lines editable |long-lines| +File browser added |file-browser-5.2| +Dialogs added |dialogs-added| +Popup menu added |popup-menu-added| +Select mode added |new-Select-mode| +Session files added |new-session-files| +User defined functions and commands |new-user-defined| +New interfaces |interfaces-5.2| +New ports |ports-5.2| +Multi-byte support |new-multi-byte| +New functions |new-functions-5.2| +New options |new-options-5.2| +New Ex commands |new-ex-commands-5.2| +Changed |changed-5.2| +Added |added-5.2| +Fixed |fixed-5.2| + +VERSION 5.3 |version-5.3| +Changed |changed-5.3| +Added |added-5.3| +Fixed |fixed-5.3| + +VERSION 5.4 |version-5.4| +Runtime directory introduced |new-runtime-dir| +Filetype introduced |new-filetype-5.4| +Vim script line continuation |new-line-continuation| +Improved session files |improved-sessions| +Autocommands improved |improved-autocmds-5.4| +Encryption |new-encryption| +GTK GUI port |new-GTK-GUI| +Menu changes |menu-changes-5.4| +Viminfo improved |improved-viminfo| +Various new commands |new-commands-5.4| +Various new options |new-options-5.4| +Vim scripts |new-script-5.4| +Avoid hit-enter prompt |avoid-hit-enter| +Improved quickfix |improved-quickfix| +Regular expressions |regexp-changes-5.4| +Changed |changed-5.4| +Added |added-5.4| +Fixed |fixed-5.4| + +VERSION 5.5 |version-5.5| +Changed |changed-5.5| +Added |added-5.5| +Fixed |fixed-5.5| + +VERSION 5.6 |version-5.6| +Changed |changed-5.6| +Added |added-5.6| +Fixed |fixed-5.6| + +VERSION 5.7 |version-5.7| +Changed |changed-5.7| +Added |added-5.7| +Fixed |fixed-5.7| + +VERSION 5.8 |version-5.8| +Changed |changed-5.8| +Added |added-5.8| +Fixed |fixed-5.8| + +============================================================================== +INCOMPATIBLE *incompatible-5* + +Default value for 'compatible' changed *cp-default* +-------------------------------------- + +Vim version 5.0 tries to be more Vi compatible. This helps people who use Vim +as a drop-in replacement for Vi, but causes some things to be incompatible +with version 4.x. + +In version 4.x the default value for the 'compatible' option was off. Now the +default is on. The first thing you will notice is that the "u" command undoes +itself. Other side effects will be that mappings may work differently or not +work at all. + +Since a lot of people switching from Vim 4.x to 5.0 will find this annoying, +the 'compatible' option is switched off if Vim finds a vimrc file. This is a +bit of magic to make sure that 90% of the Vim users will not be bitten by +this change. + +What does this mean? +- If you prefer to run in 'compatible' mode and don't have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'nocompatible' mode and do have a vimrc file, you + don't have to do anything. +- If you prefer to run in 'compatible' mode and do have a vimrc file, you + should put this line first in your vimrc file: > + :set compatible +- If you prefer to run in 'nocompatible' mode and don't have a vimrc file, + you can do one of the following: + - Create an empty vimrc file (e.g.: "~/.vimrc" for Unix). + - Put this command in your .exrc file or $EXINIT: > + :set nocompatible +< - Start Vim with the "-N" argument. + +If you are new to Vi and Vim, using 'nocompatible' is strongly recommended, +because Vi has a lot of unexpected side effects, which are avoided by this +setting. See 'compatible'. + +If you like some things from 'compatible' and some not, you can tune the +compatibility with 'cpoptions'. + +When you invoke Vim as "ex" or "gex", Vim always starts in compatible mode. + + +Text formatting command "Q" changed *Q-command-changed* +----------------------------------- + +The "Q" command formerly formatted lines to the width the 'textwidth' option +specifies. The command for this is now "gq" (see |gq| for more info). The +reason for this change is that "Q" is the standard Vi command to enter "Ex" +mode, and Vim now does in fact have an "Ex" mode (see |Q| for more info). + +If you still want to use "Q" for formatting, use this mapping: > + :noremap Q gq +And if you also want to use the functionality of "Q": > + :noremap gQ Q + + +Command-line arguments changed *cmdline-changed* +------------------------------ + +Command-line file-arguments and option-arguments can now be mixed. You can +give options after the file names. Example: > + vim main.c -g + +This is not possible when editing a file that starts with a '-'. Use the "--" +argument then |---|: > + vim -g -- -main.c + +"-v" now means to start Ex in Vi mode, use "-R" for read-only mode. +old: "vim -v file" |-v| +new: "vim -R file" |-R| + +"-e" now means to start Vi in Ex mode, use "-q" for quickfix. +old: "vim -e errorfile" |-e| +new: "vim -q errorfile" |-q| + +"-s" in Ex mode now means to run in silent (batch) mode. |-s-ex| + +"-x" reserved for crypt, use "-f" to avoid starting a new CLI (Amiga). +old: "vim -x file" |-x| +new: "vim -f file" |-f| + +Vim allows up to ten "+cmd" and "-c cmd" arguments. Previously Vim executed +only the last one. + +"-n" now overrides any setting for 'updatecount' in a vimrc file, but not in +a gvimrc file. + + +Autocommands are kept *autocmds-kept* +--------------------- + +Before version 5.0, autocommands with the same event, file name pattern, and +command could appear only once. This was fine for simple autocommands (like +setting option values), but for more complicated autocommands, where the same +command might appear twice, this restriction caused problems. Therefore +Vim stores all autocommands and keeps them in the order that they are defined. + +The most obvious side effect of this change is that when you source a vimrc +file twice, the autocommands in it will be defined twice. To avoid this, do +one of these: + +- Remove any autocommands that might already be defined before defining + them. Example: > + :au! * *.ext + :au BufEnter *.ext ... + +- Put the autocommands inside an ":if" command. Example: > + if !exists("did_ext_autocmds") + let did_ext_autocmds = 1 + autocmd BufEnter *.ext ... + endif + +- Put your autocommands in a different autocommand group so you can remove + them before defining them |:augroup|: > + augroup uncompress + au! + au BufReadPost *.gz ... + augroup END + + +Use of 'hidden' changed *hidden-changed* +----------------------- + +In version 4.x, only some commands used the 'hidden' option. Now all commands +uses it whenever a buffer disappears from a window. + +Previously you could do ":buf xxx" in a changed buffer and that buffer would +then become hidden. Now you must set the 'hidden' option for this to work. + +The new behavior is simpler: whether Vim hides buffers no longer depends on +the specific command that you use. +- with 'hidden' not set, you never get hidden buffers. Exceptions are the + ":hide" and ":close!" commands and, in rare cases, where you would otherwise + lose changes to the buffer. +- With 'hidden' set, you almost never unload a buffer. Exceptions are the + ":bunload" or ":bdel" commands. + +":buffer" now supports a "!": abandon changes in current buffer. So do +":bnext", ":brewind", etc. + + +Text object commands changed *text-objects-changed* +---------------------------- + +Text object commands have new names. This allows more text objects and makes +characters available for other Visual mode commands. Since no more single +characters were available, text objects names now require two characters. +The first one is always 'i' or 'a'. + OLD NEW ~ + a aw a word |v_aw| + A aW a WORD |v_aW| + s as a sentence |v_as| + p ap a paragraph |v_ap| + S ab a () block |v_ab| + P aB a {} block |v_aB| + +There is another set of text objects that starts with "i", for "inner". These +select the same objects, but exclude white space. + + +X-Windows Resources removed *x-resources* +-------------------------- + +Vim no longer supports the following X resources: +- boldColor +- italicColor +- underlineColor +- cursorColor + +Vim now uses highlight groups to set colors. This avoids the confusion of +using a bold Font, which would imply a certain color. See |:highlight| and +|gui-resources|. + + +Use of $VIM *$VIM-use* +----------- + +Vim now uses the VIM environment variable to find all Vim system files. This +includes the global vimrc, gvimrc, and menu.vim files and all on-line help +and syntax files. See |$VIM|. Starting with version 5.4, |$VIMRUNTIME| can +also be used. +For Unix, Vim sets a default value for $VIM when doing "make install". +When $VIM is not set, its default value is the directory from 'helpfile', +excluding "/doc/help.txt". + + +Use of $HOME for MS-DOS and Win32 *$HOME-use* +--------------------------------- + +The MS-DOS and Win32 versions of Vim now first check $HOME when searching for +a vimrc or exrc file and for reading/storing the viminfo file. Previously Vim +used $VIM for these systems, but this causes trouble on a system with several +users. Now Vim uses $VIM only when $HOME is not set or the file is not found +in $HOME. See |_vimrc|. + + +Tags file format changed *tags-file-changed* +------------------------ + +Only tabs are allowed to separate fields in a tags file. This allows for +spaces in a file name and is still Vi compatible. In previous versions of +Vim, any white space was allowed to separate the fields. If you have a file +which doesn't use a single tab between fields, edit the tags file and execute +this command: > + :%s/\(\S*\)\s\+\(\S*\)\s\+\(.*\)/\1\t\2\t\3/ + + +Options changed *options-changed* +--------------- + +The default value of 'errorfile' has changed from "errors.vim" to "errors.err". +The reason is that only Vim scripts should have the ".vim" extensions. + +The ":make" command no longer uses the 'errorfile' option. This prevents the +output of the ":make" command from overwriting a manually saved error file. +":make" uses the 'makeef' option instead. This also allows for generating a +unique name, to prevent concurrently running ":make" commands from overwriting +each other's files. + +With 'insertmode' set, a few more things change: +- <Esc> in Normal mode goes to Insert mode. +- <Esc> in Insert mode doesn't leave Insert mode. +- When doing ":set im", go to Insert mode immediately. + +Vim considers a buffer to be changed when the 'fileformat' (formerly the +'textmode' option) is different from the buffer's initial format. + + +CTRL-B in Insert mode gone *i_CTRL-B-gone* +-------------------------- + +When Vim was compiled with the |+rightleft| feature, you could use CTRL-B to +toggle the 'revins' option. Unfortunately, some people hit the 'B' key +accidentally when trying to type CTRL-V or CTRL-N and then didn't know how to +undo this. Since toggling the 'revins' option can easily be done with the +mapping below, this use of the CTRL-B key is disabled. You can still use the +CTRL-_ key for this |i_CTRL-_|. > + :imap <C-B> <C-O>:set revins!<CR> + +============================================================================== +NEW FEATURES *new-5* + +Syntax highlighting *new-highlighting* +------------------- + +Vim now has a very flexible way to highlighting just about any type of file. +See |syntax|. Summary: > + :syntax on + +Colors and attributes can be set for the syntax highlighting, and also for +other highlighted items with the ':' flag in the 'highlight' option. All +highlighted items are assigned a highlight group which specifies their +highlighting. See |:highlight|. The default colors have been improved. + +You can use the "Normal" group to set the default fore/background colors for a +color terminal. For the GUI, you can use this group to specify the font, too. + +The "2html.vim" script can be used to convert any file that has syntax +highlighting to HTML. The colors will be exactly the same as how you see them +in Vim. With a HTML viewer you can also print the file with colors. + + +Built-in script language *new-script* +------------------------ + +A few extra commands and an expression evaluator enable you to write simple +but powerful scripts. Commands include ":if" and ":while". Expressions can +manipulate numbers and strings. You can use the '=' register to insert +directly the result of an expression. See |expression|. + + +Perl and Python support *new-perl-python* +----------------------- + +Vim can call Perl commands with ":perldo", ":perl", etc. See |perl|. +Patches made by Sven Verdoolaege and Matt Gerassimoff. + +Vim can call Python commands with ":python" and ":pyfile". See |python|. + +Both of these are only available when enabled at compile time. + + +Win32 GUI version *added-win32-GUI* +----------------- + +The GUI has been ported to MS-Windows 95 and NT. All the features of the X11 +GUI are available to Windows users now. |gui-w32| +This also fixes problems with running the Win32 console version under Windows +95, where console support has always been bad. +There is also a version that supports OLE automation interface. |if_ole.txt| +Vim can be integrated with Microsoft Developer Studio using the VisVim DLL. +It is possible to produce a DLL version of gvim with Borland C++ (Aaron). + + +VMS version *added-VMS* +----------- + +Vim can now also be used on VMS systems. Port done by Henk Elbers. +This has not been tested much, but it should work. +Sorry, no documentation! + + +BeOS version *added-BeOS* +------------ + +Vim can be used on BeOS systems (including the BeBox). (Olaf Seibert) +See |os_beos.txt|. + + +Macintosh GUI version *added-Mac* +--------------------- + +Vim can now be used on the Macintosh. (Dany St-Amant) +It has not been tested much yet, be careful! +See |os_mac.txt|. + + +More Vi compatible *more-compatible* +------------------ + +There is now a real Ex mode. Started with the "Q" command, or by calling the +executable "ex" or "gex". |Ex-mode| + +Always allow multi-level undo, also in Vi compatible mode. When the 'u' flag +in 'cpoptions' is included, CTRL-R is used for repeating the undo or redo +(like "." in Nvi). + + +Read input from stdin *read-stdin* +--------------------- + +When using the "-" command-line argument, Vim reads its text input from stdin. +This can be used for putting Vim at the end of a pipe: > + grep "^a.*" *.c | vim - +See |--|. + + +Regular expression patterns *added-regexp* +--------------------------- + +Added specifying a range for the number of matches of an atom: "\{a,b}". |/\{| +Added the "shortest match" regexp "\{-}" (Webb). +Added "\s", matches a white character. Can replace "[ \t]". |/\s| +Added "\S", matches a non-white character. Can replace "[^ \t]". |/\S| + + +Overloaded tags *tag-overloaded* +--------------- + +When using a language like C++, there can be several tags for the same +tagname. Commands have been added to be able to jump to any of these +overloaded tags: +|:tselect| List matching tags, and jump to one of them. +|:stselect| Idem, and split window. +|g_CTRL-]| Do ":tselect" with the word under the cursor. + + After ":ta {tagname}" with multiple matches: +|:tnext| Go to next matching tag. +|:tprevious| Go to previous matching tag. +|:trewind| Go to first matching tag. +|:tlast| Go to last matching tag. + +The ":tag" command now also accepts wildcards. When doing command-line +completion on tags, case-insensitive matching is also available (at the end). + + +New commands *new-commands* +------------ + +|:amenu| Define menus for all modes, inserting a CTRL-O for Insert + mode, ESC for Visual and CTRL-C for Cmdline mode. "amenu" is + used for the default menus and the Syntax menu. + +|:augroup| Set group to be used for following autocommands. Allows the + grouping of autocommands to enable deletion of a specific + group. + +|:crewind| Go to first error. +|:clast| Go to last error. + +|:doautoall| Execute autocommands for all loaded buffers. + +|:echo| Echo its argument, which is an expression. Can be used to + display messages which include variables. + +|:execute| Execute its argument, which is an expression. Can be used to + built up an Ex command with anything. + +|:hide| Works like ":close". + +|:if| Conditional execution, for built-in script language. + +|:intro| Show introductory message. This is always executed when Vim + is started without file arguments. + +|:let| Assign a value to an internal variable. + +|:omap| Map only in operator-pending mode. Makes it possible to map + text-object commands. + +|:redir| Redirect output of messages to a file. + +|:update| Write when buffer has changed. + +|:while| While-loop for built-in script language. + +Visual mode: +|v_O| "O" in Visual block mode, moves the cursor to the other corner + horizontally. +|v_D| "D" in Visual block mode deletes till end of line. + +Insert mode: +|i_CTRL-]| Triggers abbreviation, without inserting any character. + + +New options *added-options* +----------- + +'background' Used for selecting highlight color defaults. Also used in + "syntax.vim" for selecting the syntax colors. Often set + automatically, depending on the terminal used. + +'complete' Specifies how Insert mode completion works. + +'eventignore' Makes it possible to ignore autocommands temporarily. + +'fileformat' Current file format. Replaces 'textmode'. +'fileformats' Possible file formats. Replaces 'textauto'. + New is that this also supports Macintosh format: A single <CR> + separates lines. + The default for 'fileformats' for MS-DOS, Win32 and OS/2 is + "dos,unix", also when 'compatible' set. Unix type files + didn't work anyway when 'fileformats' was empty. + +'guicursor' Set the cursor shape and blinking in various modes. + Default is to adjust the cursor for Insert and Replace mode, + and when an operator is pending. Blinking is default on. + +'fkmap' Farsi key mapping. + +'hlsearch' Highlight all matches with the last used search pattern. + +'hkmapp' Phonetic Hebrew mapping. (Ilya Dogolazky) + +'iconstring' Define the name of the icon, when not empty. (Version 5.2: the + string is used literally, a newline can be used to make two + lines.) + +'lazyredraw' Don't redraw the screen while executing macros, registers or + other not typed commands. + +'makeef' Errorfile to be used for ":make". "##" is replaced with a + unique number. Avoids that two Vim sessions overwrite each + others errorfile. The Unix default is "/tmp/vim##.err"; for + Amiga "t:vim##.Err, for others "vim##.err". + +'matchtime' 1/10s of a second to show a matching paren, when 'showmatch' + is set. Like Nvi. + +'mousehide' Hide mouse pointer in GUI when typing text. + +'nrformats' Defines what bases Vim will consider for numbers when using + the CTRL-A and CTRL-X commands. Default: "hex,octal". + +'shellxquote' Add extra quotes around the whole shell command, including + redirection. + +'softtabstop' Make typing behave like tabstop is set at this value, without + changing the value of 'tabstop'. Makes it more easy to keep + 'ts' at 8, while still getting four spaces for a <Tab>. + +'titlestring' String for the window title, when not empty. (Version 5.2: + this string is used literally, a newline can be used to make + two lines.) + +'verbose' Level of verbosity. Makes it possible to show which .vimrc, + .exrc, .viminfo files etc. are used for initializing. Also + to show autocommands that are being executed. Can also be set + by using the "-V" command-line argument. + + +New command-line arguments *added-cmdline-args* +-------------------------- + +|-U| Set the gvimrc file to be used. Like "-u" for the vimrc. + +|-V| Set the 'verbose' option. E.g. "vim -V10". + +|-N| Start in non-compatible mode. + +|-C| Start in compatible mode. + +|-Z| Start in restricted mode, disallow shell commands. Can also + be done by calling the executable "rvim". + +|-h| Show usage information and exit. + + +Various additions *added-various* +----------------- + +Added support for SNiFF+ connection (submitted by Toni Leherbauer). Vim can +be used as an editor for SNiFF. No documentation available... + +For producing a bug report, the bugreport.vim script has been included. +Can be used with ":so $VIMRUNTIME/bugreport.vim", which creates the file +"bugreport.txt" in the current directory. |bugs| + +Added range to ":normal" command. Now you can repeat the same command for +each line in the range. |:normal-range| + +Included support for the Farsi language (Shiran). Only when enabled at +compile time. See |farsi|. + +============================================================================== +IMPROVEMENTS *improvements-5* + +Performance: +- When 'showcmd' was set, mappings would execute much more slowly because the + output would be flushed very often. Helps a lot when executing the "life" + macros with 'showcmd' set. +- Included patches for binary searching in tags file (David O'Neill). + Can be disabled by resetting the 'tagbsearch' option. +- Don't update the ruler when repeating insert (slowed it down a lot). +- For Unix, file name expansion is now done internally instead of starting a + shell for it. +- Expand environment variables with expand_env(), instead of calling the + shell. Makes ":so $VIMRUNTIME/syntax/syntax.vim" a LOT faster. +- Reduced output for cursor positioning: Use CR-LF for moving to first few + columns in next few lines; Don't output CR twice when using termios. +- Optimized cursor positioning. Use CR, BS and NL when it's shorter than + absolute cursor positioning. +- Disable redrawing while repeating insert "1000ii<Esc>". +- Made "d$" or "D" for long lines a lot faster (delete all characters at once, + instead of one by one). +- Access option table by first letter, instead of searching from start. +- Made setting special highlighting attributes a lot faster by using + highlight_attr[], instead of searching in the 'highlight' string. +- Don't show the mode when redrawing is disabled. +- When setting an option, only redraw the screen when required. +- Improved performance of Ex commands by using a lookup table for the first + character. + +Options: +'cinoptions' Added 'g' flag, for C++ scope declarations. +'cpoptions' Added 'E' flag: Disallow yanking, deleting, etc. empty text + area. Default is to allow empty yanks. When 'E' is included, + "y$" in an empty line now is handled as an error (Vi + compatible). + Added 'j' flag: Only add two spaces for a join after a '.', + not after a '?' or '!'. + Added 'A' flag: don't give ATTENTION message. + Added 'L' flag: When not included, and 'list' is set, + 'textwidth' formatting works like 'list' is not set. + Added 'W' flag: Let ":w!" behave like Vi: don't overwrite + readonly files, or a file owned by someone else. +'highlight' Added '@' flag, for '@' characters after the last line on the + screen, and '$' at the end of the line when 'list' is set. + Added 'i' flag: Set highlighting for 'incsearch'. Default + uses "IncSearch" highlight group, which is linked to "Visual". + Disallow 'h' flag in 'highlight' (wasn't used anymore since + 3.0). +'guifont' Win32 GUI only: When set to "*" brings up a font requester. +'guipty' Default on, because so many people need it. +'path' Can contain wildcards, and "**" for searching a whole tree. +'shortmess' Added 'I' flag to avoid the intro message. +'viminfo' Added '%' flag: Store buffer list in viminfo file. + +- Increased defaults for 'maxmem' and 'maxmemtot' for Unix and Win32. Most + machines have much more RAM now that prices have dropped. +- Implemented ":set all&", set all options to their default value. |:set| + +Swap file: +- Don't create a swap file for a readonly file. Then create one on the first + change. Also create a swapfile when the amount of memory used is getting + too high. |swap-file| +- Make swap file "hidden", if possible. On Unix this is done by prepending a + dot to the swap file name. When long file names are used, the DJGPP and + Win32 versions also prepend a dot, in case a file on a mounted Unix file + system is edited. |:swapname| On MSDOS the hidden file attribute is NOT + set, because this causes problems with share.exe. +- 'updatecount' always defaults to non-zero, also for Vi compatible mode. + This means there is a swap file, which can be used for recovery. + +Tags: +- Included ctags 2.0 (Darren Hiebert). The syntax for static tags changed + from + {tag}:{fname} {fname} {command} + to + {tag} {fname} {command};" file: + Which is both faster to parse, shorter and Vi compatible. The old format is + also still accepted, unless disabled in src/feature.h (see OLD_STATIC_TAGS). + |tags-file-format| +- Completion of tags now also includes static tags for other files, at the + end. +- Included "shtags" from Stephen Riehm. +- When finding a matching tag, but the file doesn't exist, continue searching + for another match. Helps when using the same tags file (with links) for + different versions of source code. +- Give a tag with a global match in the current file a higher priority than a + global match in another file. + +Included xxd version V1.8 (Juergen Weigert). + +Autocommands: +- VimLeave autocommands are executed after writing the viminfo file, instead + of before. |VimLeave| +- Allow changing autocommands while executing them. This allows for + self-modifying autocommands. (idea from Goldberg) +- When using autocommands with two or more patterns, could not split + ":if/:endif" over two lines. Now all matching autocommands are executed in + one do_cmdline(). +- Autocommands no longer change the command repeated with ".". +- Search patterns are restored after executing autocommands. This avoids + that the 'hlsearch' highlighting is messed up by autocommands. +- When trying to execute an autocommand, also try matching the pattern with + the short file name. Helps when short file name is different from full + file name (expanded symbolic links). |autocmd-patterns| +- Made the output of ":autocmd" shorter and look better. +- Expand <sfile> in an ":autocmd" when it is defined. |<sfile>| +- Added "nested" flag to ":autocmd", allows nesting. |autocmd-nested| +- Added [group] argument to ":autocmd". Overrides the currently set group. + |autocmd-groups| +- new events: + |BufUnload| before a buffer is unloaded + |BufDelete| before a buffer is deleted from the buffer list + |FileChangedShell| when a file's modification time has changed after + executing a shell command + |User| user-defined autocommand +- When 'modified' was set by a BufRead* autocommand, it was reset again + afterwards. Now the ":set modified" is remembered. + +GUI: +- Improved GUI scrollbar handling when redrawing is slower than the scrollbar + events are generated. +- "vim -u NONE" now also stops loading the .gvimrc and other GUI inits. |-u| + Use "-U" to use another gvimrc file. |-U| +- Handle CTRL-C for external command, also for systems where "setsid()" is + supported. +- When starting the GUI, restrict the window size to the screen size. +- The default menus are read from $VIMRUNTIME/menu.vim. This allows for a + customized default menu. |menu.vim| +- Improved the default menus. Added File/Print, a Window menu, Syntax menu, + etc. +- Added priority to the ":menu" command. Now each menu can be put in a place + where you want it, independent of the order in which the menus are defined. + |menu-priority| + +Give a warning in the intro screen when running the Win32 console version on +Windows 95 because there are problems using this version under Windows 95. +|win32-problems| + +Added 'e' flag for ":substitute" command: Don't complain when not finding a +match (Campbell). |:s| + +When using search commands in a mapping, only the last one is kept in the +history. Avoids that the history is trashed by long mappings. + +Ignore characters after "ex", "view" and "gvim" when checking startup mode. +Allows the use of "gvim5" et. al. |gvim| "gview" starts the GUI in readonly +mode. |gview| + +When resizing windows, the cursor is kept in the same relative position, if +possible. (Webb) + +":all" and ":ball" no longer close and then open a window for the same buffer. +Avoids losing options, jumplist, and other info. + +"-f" command-line argument is now ignored if Vim was compiled without GUI. +|-f| + +In Visual block mode, the right mouse button picks up the nearest corner. + +Changed default mappings for DOS et al. Removed the DOS-specific mappings, +only use the Windows ones. Added Shift-Insert, Ctrl-Insert, Ctrl-Del and +Shift-Del. + +Changed the numbers in the output of ":jumps", so you can see where {count} +CTRL-O takes you. |:jumps| + +Using "~" for $HOME now works for all systems. |$HOME| + +Unix: Besides using CTRL-C, also use the INTR character from the tty settings. +Somebody has INTR set to DEL. + +Allow a <NL> in a ":help" command argument to end the help command, so another +command can follow. + +Doing "%" on a line that starts with " #if" didn't jump to matching "#else". +Don't recognize "#if", "#else" etc. for '%' when 'cpo' contains the '%' flag. +|%| + +Insert mode expansion with "CTRL-N", "CTRL-P" and "CTRL-X" improved +|ins-completion|: +- 'complete' option added. +- When 'nowrapscan' is set, and no match found, report the searched direction + in the error message. +- Repeating CTRL-X commands adds following words/lines after the match. +- When adding-expansions, accept single character matches. +- Made repeated CTRL-X CTRL-N not break undo, and "." repeats the whole + insertion. Also fixes not being able to backspace over a word that has been + inserted with CTRL-N. + +When copying characters in Insert mode from previous/next line, with CTRL-E or +CTRL-Y, 'textwidth' is no longer used. |i_CTRL-E| + +Commands that move in the arglist, like ":n" and ":rew", keep the old cursor +position of the file (this is mostly Vi compatible). + +Vim now remembers the '< and '> marks for each buffer. This fixes a problem +that a line-delete in one buffer invalidated the '< and '> marks in another +buffer. |'<| + +For MSDOS, Unix and OS/2: When $VIM not set, use the path from the executable. +When using the executable path for $VIM, remove "src/" when present. Should +make Vim find the docs and syntax files when it is run directly after +compiling. |$VIM| + +When quitting Visual mode with <Esc>, the cursor is put at start of the Visual +area (like after executing an operator). + +Win32 and Unix version: Removed 1100 character limit on external commands. + +Added possibility to include a space in a ":edit +command" argument, by +putting a backslash before it. |+cmd| + +After recovery, BufReadPost autocommands are applied. |:recover| + +Added color support for "os2ansi", OS/2 console. (Slootman) + +Allow "%:p:h" when % is empty. |:_%| + +Included "<sfile>": file name from the ":source" command. |<sfile>| + +Added "<Bslash>" special character. Helps for avoiding multiple backslashes +in mappings and menus. + +In a help window, a double-click jumps to the tag under the cursor (like +CTRL-]). + +<C-Left> and <C-Right> now work like <S-Left> and <S-Right>, move a word +forward/backward (Windows compatible). |<C-Left>| + +Removed the requirement for a ":version" command in a .vimrc file. It wasn't +used for anything. You can use ":if" to handle differences between versions. +|:version| + +For MS-DOS, Win32 and OS/2: When comparing file names for autocommands, don't +make a difference between '/' and '\' for path separator. + +New termcap options: +"mb": blink. Can only be used by assigning it to one of the other highlight + options. |t_mb| +"bc": backspace character. |t_bc| +"nd": Used for moving the cursor right in the GUI, to avoid removing one line + of pixels from the last bold character. |t_nd| +"xs": highlighting not erased by overwriting, for hpterm. Combined with + 'weirdinvert'. Visual mode works on hpterm now. |t_xs| + +Unix: Set time of patch and backup file same as original file. (Hiebert). + +Amiga: In QuickFix mode no longer opens another window. Shell commands can be +used now. + +Added decmouse patches from David Binette. Can now use Dec and Netterm mouse. +But only when enabled at compile time. + +Added '#' register: Alternate file name |quote#|. Display '#' register with +":dis" command. |:display| + +Removed ':' from 'isfname' default for Unix. Check for "://" in a file name +anyway. Also check for ":\\", for MS-DOS. + +Added count to "K"eyword command, when 'keywordprg' is "man", is inserted in +the man command. "2K" results in "!man 2 <cword>". |K| + +When using "gf" on a relative path name, remove "../" from the file name, like +it's done for file names in the tags file. |gf| + +When finishing recording, don't make the recorded register the default put +register. + +When using "!!", don't put ":5,5!" on the command-line, but ":.!". And some +other enhancements to replace the line number with "." or "$" when possible. + +MSDOS et al.: Renamed $VIM/viminfo to $VIM/_viminfo. It's more consistent: +.vimrc/_vimrc and .viminfo/_viminfo + +For systems where case doesn't matter in file names (MSDOS, Amiga), ignore +case while sorting file names. For buffer names too. + +When reading from stdin doesn't work, read from stderr (helps for "foo | xargs +vim"). + +32 bit MS-DOS version: Replaced csdpmi3 by csdpmi4. + +Changed <C-Left> and <C-Right> to skip a WORD instead of a word. + +Warning for changed modified time when overwriting a file now also works on +other systems than Unix. + +Unix: Changed the defaults for configure to be the same as the defaults for +Makefile: include GUI, Perl, and Python. + +Some versions of Motif require "-lXpm". Added check for this in configure. + +Don't add "-L/usr/lib" to the link line, causes problems on a few systems. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-5* + +When compiling, allow a choice for minimal, normal or maximal features in an +easy way, by changing a single line in src/feature.h. +The DOS16 version has been compiled with minimal features to avoid running +out of memory too quickly. +The Win32, DJGPP, and OS/2 versions use maximal features, because they have +enough memory. +The Amiga version is available with normal and maximal features. + +Added "make test" to Unix version Makefile. Allows for a quick check if most +"normal" commands work properly. Also tests a few specific commands. + +Added setlocale() with codepage support for DJGPP version. + +autoconf: +- Added autoconf check for -lXdmcp. +- Included check for -lXmu, no longer needed to edit the Makefile for this. +- Switched to autoconf 2.12. +- Added configure check for <poll.h>. Seems to be needed when including + Perl on Linux? +- termlib is now checked before termcap. +- Added configure check for strncasecmp(), stricmp() and strnicmp(). Added + vim_stricmp() for when there's no library function for stricmp(). +- Use "datadir" in configure, instead of our own check for HELPDIR. + +Removed "make proto" from Makefile.manx. Could not make it work without a lot +of #ifdefs. + +Removed "proto/" from paths in proto.h. Needed for the Mac port. + +Drastically changed Makefile.mint. Now it includes the Unix Makefile. + +Added support for Dos16 in Makefile.b32 (renamed Makefile.b32 to Makefile.bor) + +All source files are now edited with a tabstop of 8 instead of 4, which is +better when debugging and using other tools. 'softtabstop' is set to 4, to +make editing easier. + +Unix: Added "link.sh" script, which removes a few unnecessary libraries from +the link command. + +Don't use HPUX digraphs by default, but only when HPUX_DIGRAPHS is defined. +|digraphs-default| + +============================================================================== +BUG FIXES *bug-fixes-5* + +Note: Some of these fixes may only apply to test versions which were + created after version 4.6, but before 5.0. + + +When doing ":bdel", try going to the next loaded buffer. Don't rewind to the +start of the buffer list. + +mch_isdir() for Unix returned TRUE for "" on some systems. + +Win32: 'shell' set to "mksnt/sh.exe" breaks ":!" commands. Don't use +backslashes in the temp file names. + +On linux, with a FAT file system, could get spurious "file xxx changed since +editing started" messages, because the time is rounded off to two seconds +unexpectedly. + +Crash in GUI, when selecting a word (double click) and then extend until an +empty line. + +For systems where isdigit() can't handle characters > 255, get_number() caused +a crash when moving the mouse during the prompt for recovery. + +In Insert mode, "CTRL-O P" left the cursor on the last inserted character. +Now the cursor is left after the last putted character. + +When quickfix found an error type other than 'e' or 'w', it was never printed. + +A setting for 'errorfile' in a .vimrc overruled the "-q errorfile" argument. + +Some systems create a file when generating a temp file name. Filtering would +then create a backup file for this, which was never deleted. Now no backup +file is made when filtering. + +simplify_filename() could remove a ".." after a link, resulting in the wrong +file name. Made simplify_filename also work for MSDOS. Don't use it for +Amiga, since it doesn't have "../". + +otherfile() was unreliable when using links. Could think that reading/writing +was for a different file, when it was the same. + +Pasting with mouse in Replace mode didn't replace anything. + +Window height computed wrong when resizing a window with an autocommand (could +cause a crash). + +":s!foo!bar!" wasn't possible (Vi compatible). + +do_bang() freed memory twice when called recursively, because of autocommands +(test11). Thanks to Electric Fence! + +"v$d" on an empty line didn't remove the "-- VISUAL --" mode message from the +command-line, and inverted the cursor. + +":mkexrc" didn't check for failure to open the file, causing a crash. +(Felderhoff). + +Win32 mch_write() wrote past fixed buffer, causing terminal keys no longer to +be recognized. Both console and GUI version. + +Athena GUI: Crash when removing a menu item. Now Vim doesn't crash, but the +reversing of the menu item is still wrong. + +Always reset 'list' option for the help window. + +When 'scrolloff' is non-zero, a 'showmatch' could cause the shown match to be +in the wrong line and the window to be scrolled (Acevedo). + +After ":set all&", 'lines' and 'ttytype' were still non-default, because the +defaults never got set. Now the defaults for 'lines' and 'columns' are set +after detecting the window size. 'term' and 'ttytype' defaults are set when +detecting the terminal type. + +For (most) non-Unix systems, don't add file names with illegal characters when +expanding. Fixes "cannot open swapfile" error when doing ":e *.burp", when +there is no match. + +In X11 GUI, drawing part of the cursor obscured the text. Now the text is +drawn over the cursor, like when it fills the block. (Seibert) + +when started with "-c cmd -q errfile", the cursor would be left in line 1. +Now a ":cc" is done after executing "cmd". + +":ilist" never ignored case, even when 'ignorecase' set. + +"vim -r file" for a readonly file, then making a change, got ATTENTION message +in insert mode, display mixed up until <Esc> typed. Also don't give ATTENTION +message after recovering a file. + +The abbreviation ":ab #i #include" could not be removed. + +CTRL-L completion (longest common match) on command-line didn't work properly +for case-insensitive systems (MS-DOS, Windows, etc.). (suggested by Richard +Kilgore). + +For terminals that can hide the cursor ("vi" termcap entry), resizing the +window caused the cursor to disappear. + +Using an invalid mark in an Ex address didn't abort the command. + +When 'smarttab' set, would use 'shiftround' when inserting a TAB after a +space. Now it always rounds to a tabstop. + +Set '[ and '] marks for ":copy", ":move", ":append", ":insert", ":substitute" +and ":change". (Acevedo). + +"d$" in an empty line still caused an error, even when 'E' is not in +'cpoptions'. + +Help files were stored in the viminfo buffer list without a path. + +GUI: Displaying cursor was not synchronized with other displaying. Caused +several display errors. For example, when the last two lines in the file +start with spaces, "dd" on the last line copied text to the (then) last line. + +Win32: Needed to type CTRL-SHIFT-- to get CTRL-_. + +GUI: Moving the cursor forwards over bold text would remove one column of bold +pixels. + +X11 GUI: When a bold character in the last column was scrolled up or down, one +column of pixels would not be copied. + +Using <BS> to move the cursor left can sometimes erase a character. Now use +"le" termcap entry for this. + +Keyword completion with regexp didn't work. e.g., for "b.*crat". + +Fixed: With CTRL-O that jumps to another file, cursor could end up just after +the line. + +Amiga: '$' was missing from character recognized as wildcards, causing $VIM +sometimes not to be expanded. + +":change" didn't adjust marks for deleted lines. + +":help [range]" didn't work. Also for [pattern], [count] and [quotex]. + +For 'cindent'ing, typing "class::method" doesn't align like a label when the +second ':' is typed. +When inserting a CR with 'cindent' set (and a bunch of other conditions) the +cursor went to a wrong location. +'cindent' was wrong for a line that ends in '}'. +'cindent' was wrong after "else {". + +While editing the cmdline in the GUI, could not use the mouse to select text +from the command-line itself. + +When deleting lines, marks in tag stack were only adjusted for the current +window, not for other windows on the same buffer. + +Tag guessing could find a function "some_func" instead of the "func" we were +looking for. + +Tags file name relative to the current file didn't work. + +":g/pat2/s//pat2/g", causing the number of subs to be reported, used to cause +a scroll up. Now you no longer have to hit <CR>. + +X11 GUI: Selecting text could cause a crash. + +32 bit DOS version: CTRL-C in external command killed Vim. When SHELL is set +to "sh.exe", external commands didn't work. Removed using of command.com, no +longer need to set 'shellquote'. + +Fixed crash when using ":g/pat/i". + +Fixed (potential) crash for X11 GUI, when using an X selection. Was giving a +pointer on the stack to a callback function, now it's static. + +Using "#" and "*" with an operator didn't work. E.g. "c#". + +Command-line expansion didn't work properly after ":*". (Acevedo) + +Setting 'weirdinvert' caused highlighting to be wrong in the GUI. + +":e +4 #" didn't work, because the "4" was in unallocated memory (could cause +a crash). + +Cursor position was wrong for ":e #", after ":e #" failed, because of changes +to the buffer. + +When doing ":buf N", going to a buffer that was edited with ":view", the +readonly flag was reset. Now make a difference between ":e file" and ":buf +file": Only set/reset 'ro' for the first one. + +Avoid |hit-enter| prompt when not able to write viminfo on exit. + +When giving error messages in the terminal where the GUI was started, GUI +escape codes would be written to the terminal. In an xterm this could be seen +as a '$' after the message. + +Mouse would not work directly after ":gui", because full_screen isn't set, +which causes starttermcap() not to do its work. + +'incsearch' did not scroll the window in the same way as the actual search. +When 'nowrap' set, incsearch didn't show a match when it was off the side of +the screen. Now it also shows the whole match, instead of just the cursor +position (if possible). + +":unmap", ":unab" and ":unmenu" did not accept a double quote, it was seen as +the start of a comment. Now it's Vi compatible. + +Using <Up><Left><Left><Up> in the command-line, when there is no previous +cmdline in the history, inserted a NUL on the command-line. + +"i<Esc>" when on a <Tab> in column 0 left the cursor in the wrong place. + +GUI Motif: When adding a lot of menu items, the menu bar goes into two rows. +Deleting menu items, reducing the number of rows, now also works. + +With ":g/pat/s//foo/c", a match in the first line was scrolled off of the +screen, so you could not see it. +When using ":s//c", with 'nowrap' set, a match could be off the side of the +screen, so you could not see it. + +When 'helpfile' was set to a fixed, non-absolute path in feature.h, Vim would +crash. mch_Fullname can now handle file names in read-only memory. (Lottem) + +When using CTRL-A or CTRL-@ in Insert mode, there could be strange effects +when using CTRL-D next. Also, when repeating inserted text that included "0 +CTRL-D" or "^ CTRL-D" this didn't work. (Acevedo) +Using CTRL-D after using CTRL-E or CTRL-Y in Insert mode that inserted a '0' +or '^', removed the '0' or '^' and more indent. + +The command "2".p" caused the last inserted text to be executed as commands. +(Acevedo) + +Repeating the insert of "CTRL-V 048" resulted in "^@" to be inserted. + +Repeating Insert completion could fail if there are special characters in the +text. (Acevedo) + +":normal /string<CR>" caused the window to scroll. Now all ":normal" commands +are executed without scrolling messages. + +Redo of CTRL-E or CTRL-Y in Insert mode interpreted special characters as +commands. + +Line wrapping for 'tw' was done one character off for insert expansion +inserts. + +buffer_exists() function didn't work properly for buffer names with a symbolic +link in them (e.g. when using buffer_exists(#)). + +Removed the "MOTIF_COMMENT" construction from Makefile. It now works with +FreeBSD make, and probably with NeXT make too. + +Matching the 'define' and 'include' arguments now honor the settings for +'ignorecase'. (Acevedo) + +When one file shown in two windows, Visual selection mixed up cursor position +in current window and other window. + +When doing ":e file" from a help file, the 'isk' option wasn't reset properly, +because of a modeline in the help file. + +When doing ":e!", a cursor in another window on the same buffer could become +invalid, leading to "ml_get: invalid lnum" errors. + +Matching buffer name for when expanded name has a different path from not +expanded name (Brugnara). + +Normal mappings didn't work after an operator. For example, with ":map Q gq", +"QQ" didn't work. + +When ":make" resulted in zero errors, a "No Errors" error message was given +(which breaks mappings). + +When ":sourcing" a file, line length was limited to 1024 characters. CTRL-V +before <EOL> was not handled Vi compatible. (Acevedo) + +Unexpected exit for X11 GUI, caused by SAVE_YOURSELF event. (Heimann) + +CTRL-X CTRL-I only found one match per line. (Acevedo) +When using an illegal CTRL-X key in Insert mode, the CTRL-X mode message +was stuck. + +Finally managed to ignore the "Quit" menu entry of the Window manager! Now +Vim only exists when there are no changed buffers. + +Trying to start the GUI when $DISPLAY is not set resulted in a crash. +When $DISPLAY is not set and gvim starts vim, title was restored to "Thanks +for flying Vim". +When $DISPLAY not set, starting "gvim" (dropping back to vim) and then +selecting text with the mouse caused a crash. + +"J", with 'joinspaces' set, on a line ending in ". ", caused one space too +many to be added. (Acevedo) + +In insert mode, a CTRL-R {regname} which didn't insert anything left the '"' +on the screen. + +":z10" didn't work. (Clapp) + +"Help "*" didn't work. + +Renamed a lot of functions, to avoid clashes with POSIX name space. + +When adding characters to a line, making it wrap, the following lines were +sometimes not shifted down (e.g. after a tag jump). + +CTRL-E, with 'so' set and cursor on last line, now does not move cursor as +long as the last line is on the screen. + +When there are two windows, doing "^W+^W-" in the bottom window could cause +the status line to be doubled (not redrawn correctly). + +This command would hang: ":n `cat`". Now connect stdin of the external +command to /dev/null, when expanding. + +Fixed lalloc(0,) error for ":echo %:e:r". (Acevedo) + +The "+command" argument to ":split" didn't work when there was no file name. + +When selecting text in the GUI, which is the output of a command-line command +or an external command, the inversion would sometimes remain. + +GUI: "-mh 70" argument was broken. Now, when menuheight is specified, it is +not changed anymore. + +GUI: When using the scrollbar or mouse while executing an external command, +this caused garbage characters. + +Showmatch sometimes jumped to the wrong position. Was caused by a call to +findmatch() when redrawing the display (when syntax highlighting is on). + +Search pattern "\(a *\)\{3} did not work correctly, also matched "a a". +Problem with brace_count not being decremented. + +Wildcard expansion added too many non-matching file names. + +When 'iskeyword' contains characters like '~', "*" and "#" didn't work +properly. (Acevedo) + +On Linux, on a FAT file system, modification time can change by one second. +Avoid a "file has changed" warning for a one second difference. + +When using the page-switching in an xterm, Vim would position the cursor on +the last line of the window on exit. Also removed the cursor positioning for +":!" commands. + +":g/pat/p" command (partly) overwrote the command. Now the output is on a +separate line. + +With 'ic' and 'scs' set, a search for "Keyword", ignore-case matches were +highlighted too. + +"^" on a line with only white space, put cursor beyond the end of the line. + +When deleting characters before where insertion started ('bs' == 2), could not +use abbreviations. + +CTRL-E at end of file puts cursor below the file, in Visual mode, when 'so' is +non-zero. CTRL-E didn't work when 'so' is big and the line below the window +wraps. CTRL-E, when 'so' is non-zero, at end of the file, caused jumping +up-down. + +":retab" didn't work well when 'list' is set. + +Amiga: When inserting characters at the last line on the screen, causing it +to wrap, messed up the display. It appears that a '\n' on the last line +doesn't always cause a scroll up. + +In Insert mode "0<C-D><C-D>" deleted an extra character, because Vim thought +that the "0" was still there. (Acevedo) + +"z{count}l" ignored the count. Also for "zh" et. al. (Acevedo) + +"S" when 'autoindent' is off didn't delete leading white space. + +"/<Tab>" landed on the wrong character when 'incsearch' is set. + +Asking a yes/no question could cause a |hit-enter| prompt. + +When the file consists of one long line (>4100 characters), making changes +caused various errors and a crash. + +DJGPP version could not save long lines (>64000) for undo. + +"yw" on the last char in the file didn't work. Also fixed "6x" at the end of +the line. "6X" at the start of a line fails, but does not break a mapping. In +general, a movement for an operator doesn't beep or flush a mapping, but when +there is nothing to operate on it beeps (this is Vi compatible). + +"m'" and "m`" now set the '' mark at the cursor position. + +Unix: Resetting of signals for external program didn't work, because SIG_DFL +and NULL are the same! For "!!yes|dd count=1|, the yes command kept on +running. + +Partly fixed: Unix GUI: Typeahead while executing an external command was lost. +Now it's not lost while the command is producing output. + +Typing <S-Tab> in Insert mode, when it isn't mapped, inserted "<S-Tab>". Now +it works like a normal <Tab>, just like <C-Tab> and <M-Tab>. + +Redrawing ruler didn't check for old value correctly (caused UMR warnings in +Purify). + +Negative array index in finish_viminfo_history(). + +":g/^/d|mo $" deleted all the lines. The ":move" command now removes the +:global mark from the moved lines. + +Using "vG" while the last line in the window is a "@" line, didn't update +correctly. Just the "v" showed "~" lines. + +"daw" on the last char of the file, when it's a space, moved the cursor beyond +the end of the line. + +When 'hlsearch' was set or reset, only the current buffer was redrawn, while +this affects all windows. + +CTRL-^, positioning the cursor somewhere from 1/2 to 1 1/2 screen down the +file, put the cursor at the bottom of the window, instead of halfway. + +When scrolling up for ":append" command, not all windows were updated +correctly. + +When 'hlsearch' is set, and an auto-indent is highlighted, pressing <Esc> +didn't remove the highlighting, although the indent was deleted. + +When 'ru' set and 'nosc', using "$j" showed a wrong ruler. + +Under Xfree 3.2, Shift-Tab didn't work (wrong keysym is used). + +Mapping <S-Tab> didn't work. Changed the key translations to use the shortest +key code possible. This makes the termcode translations and mappings more +consistent. Now all modifiers work in all combinations, not only with <Tab>, +but also with <Space>, <CR>, etc. + +For Unix, restore three more signals. And Vim catches SIGINT now, so CTRL-C +in Ex mode doesn't make Vim exit. + +""a5Y" yanked 25 lines instead of 5. + +"vrxxx<Esc>" in an empty line could not be undone. + +A CTRL-C that breaks ":make" caused the errorfile not to be read (annoying +when you want to handle what ":make" produced so far). + +":0;/pat" didn't find "pat" in line 1. + +Search for "/test/s+1" at first char of file gave bottom-top message, or +didn't work at all with 'nowrapscan'. + +Bug in viminfo history. Could cause a crash on exit. + +":print" didn't put cursor on first non-blank in line. + +":0r !cat </dev/null" left cursor in line zero, with very strange effects. + +With 'showcmd' set and 'timeoutlen' set to a few seconds, trick to position +the cursor leftwards didn't work. + +AIX stty settings were restored to cs5 instead of cs8 (Winn). + +File name completion didn't work for "zsh" versions that put spaces between +file names, instead of NULs. + +Changed "XawChain*" to "XtChain*", should work for more systems. + +Included quite a few fixes for rightleft mode (Lottem). + +Didn't ask to |hit-enter| when GUI is started and error messages are printed. + +When trying to edit a file in a non-existent directory, ended up with editing +"No file". + +"gqap" to format a paragraph did too much redrawing. + +When 'hlsearch' set, only the current window was updated for a new search +pattern. + +Sometimes error messages on startup didn't cause a |hit-enter| prompt, +because of autocommands containing an empty line. + +Was possible to select part of the window in the border, below the command +line. + +'< and '> marks were not at the correct position after linewise Visual +selection. + +When translating a help argument to "CTRL-x", prepend or append a '_', when +applicable. + +Blockwise visual mode wasn't correct when moving vertically over a special +character (displayed as two screen characters). + +Renamed "struct option" to "struct vimoption" to avoid name clash with GNU +getopt(). + +":abclear" didn't work (but ":iabclear" and ":cabclear" did work). + +When 'nowrap' used, screen wasn't always updated correctly. + +"vim -c split file" displayed extra lines. + +After starting the GUI, searched the termcap for a "gui" term. + +When 'hls' used, search for "^$" caused a hang. +When 'hls' was set, an error in the last regexp caused trouble. + +Unix: Only output an extra <EOL> on exit when outputted something in the +alternate screen, or when there is a message that needs to be cleared. + +"/a\{" did strange things, depending on previous search. + +"c}" only redrew one line (with -u NONE). + +For mappings, CTRL-META-A was shown as <M-^A> instead of <MC-A>, while :map +only accepts <MC-A>. Now <M-C-A> is shown. + +Unix: When using full path name in a tags file, which contains a link, and +'hidden' set and jumping to a tag in the current file, would get bogus +ATTENTION message. Solved by always expanding file names, even when starting +with '/'. + +'hlsearch' highlighting of special characters (e.g., a TAB) didn't highlight +the whole thing. + +"r<CR>" didn't work correctly on the last char of a line. + +Sometimes a window resize or other signal caused an endless loop, involving +set_winsize(). + +"vim -r" didn't work, it would just hang (using tgetent() while 'term' is +empty). + +"gk" while 'nowrap' set moved two lines up. + +When windows are split, a message that causes a scroll-up messed up one of the +windows, which required a CTRL-L to be typed. + +Possible endless loop when using shell command in the GUI. + +Menus defined in the .vimrc were removed when GUI started. + +Crash when pasting with the mouse in insert mode. + +Crash with ":unmenu *" in .gvimrc for Athena. + +"5>>" shifted 5 lines 5 times, instead of 1 time. + +CTRL-C when getting a prompt in ":global" didn't interrupt. + +When 'so' is non-zero, and moving the scrollbar completely to the bottom, +there was a lot of flashing. + +GUI: Scrollbar ident must be long for DEC Alpha. + +Some functions called vim_regcomp() without setting reg_magic, which could +lead to unpredictable magicness. + +Crash when clicking around the status line, could get a selection with a +backwards range. + +When deleting more than one line characterwise, the last character wasn't +deleted. + +GUI: Status line could be overwritten when moving the scrollbar quickly (or +when 'wd' is non-zero). + +An ESC at the end of a ":normal" command caused a wait for a terminal code to +finish. Now, a terminal code is not recognized when its start comes from a +mapping or ":normal" command. + +Included patches from Robert Webb for GUI. Layout of the windows is now done +inside Vim, instead of letting the layout manager do this. Makes Vim work +with Lesstif! + +UMR warning in set_expand_context(). + +Memory leak: b_winlnum list was never freed. + +Removed TIOCLSET/TIOCLGET code from os_unix.c. Was changing some of the +terminal settings, and looked like it wasn't doing anything good. (suggested +by Juergen Weigert). + +Ruler overwrote "is a directory" message. When starting up, and 'cmdheight' +set to > 1, first message could still be in the last line. + +Removed prototype for putenv() from proto.h, it's already in osdef2.h.in. + +In replace mode, when moving the cursor and then backspacing, wrong characters +were inserted. + +Win32 GUI was checking for a CTRL-C too often, making it slow. + +Removed mappings for MS-DOS that were already covered by commands. + +When visually selecting all lines in a file, cursor at last line, then "J". +Gave ml_get errors. Was a problem with scrolling down during redrawing. + +When doing a linewise operator, and then an operator with a mouse click, it +was also linewise, instead of characterwise. + +When 'list' is set, the column of the ruler was wrong. + +Spurious error message for "/\(b\+\)*". + +When visually selected many lines, message from ":w file" disappeared when +redrawing the screen. + +":set <M-b>=^[b", then insert "^[b", waited for another character. And then +inserted "<M-b>" instead of the real <M-b> character. Was trying to insert +K_SPECIAL x NUL. + +CTRL-W ] didn't use count to set window height. + +GUI: "-font" command-line argument didn't override 'guifont' setting from +.gvimrc. (Acevedo) + +GUI: clipboard wasn't used for "*y". And some more Win32/X11 differences +fixed for the clipboard (Webb). + +Jumping from one help file to another help file, with 'compatible' set, +removed the 'help' flag from the buffer. + +File-writable bit could be reset when using ":w!" for a readonly file. + +There was a wait for CTRL-O n in Insert mode, because the search pattern was +shown. +Reduced wait, to allow reading a message, from 10 to 3 seconds. It seemed +nothing was happening. + +":recover" found same swap file twice. + +GUI: "*yy only worked the second time (when pasting to an xterm)." + +DJGPP version (dos32): The system flags were cleared. + +Dos32 version: Underscores were sometimes replaced with y-umlaut (Levin). + +Version 4.1 of ncurses can't handle tputs("", ..). Avoid calling tputs() with +an empty string. + +<S-Tab> in the command-line worked like CTRL-P when no completion started yet. +Now it does completion, last match first. + +Unix: Could get annoying "can't write viminfo" message after doing "su". Now +the viminfo file is overwritten, and the user set back to the original one. + +":set term=builtin_gui" started the GUI in a wrong way. Now it's not +allowed anymore. But "vim -T gui" does start the GUI correctly now. + +GUI: Triple click after a line only put last char in selection, when it is a +single character word. + +When the window is bigger than the screen, the scrolling up of messages was +wrong (e.g. ":vers", ":hi"). Also when the bottom part of the window was +obscured by another window. + +When using a wrong option only an error message is printed, to avoid that the +usage information makes it scroll off the screen. + +When exiting because of not being able to read from stdin, didn't preserve the +swap files properly. + +Visual selecting all chars in more than one line, then hit "x" didn't leave an +empty line. For one line it did leave an empty line. + +Message for which autocommand is executing messed up file write message (for +FileWritePost event). + +"vim -h" included "-U" even when GUI is not available, and "-l" when lisp is +not available. + +Crash for ":he <C-A>" (command-line longer than screen). + +":s/this/that/gc", type "y" two times, then undo, did reset the modified +option, even though the file is still modified. + +Empty lines in a tags file caused a ":tag" to be aborted. + +When hitting 'q' at the more prompt for ":menu", still scrolled a few lines. + +In an xterm that uses the bold trick a single row of characters could remain +after an erased bold character. Now erase one extra char after the bold char, +like for the GUI. + +":pop!" didn't work. + +When the reading a buffer was interrupted, ":w" should not be able to +overwrite the file, ":w!" is required. + +":cf%" caused a crash. + +":gui longfilename", when forking is enabled, could leave part of the +longfilename at the shell prompt. + +============================================================================== +VERSION 5.1 *version-5.1* + +Improvements made between version 5.0 and 5.1. + +This was mostly a bug-fix release, not many new features. + + +Changed *changed-5.1* +------- + +The expand() function now separates file names with <NL> instead of a space. +This avoids problems for file names with embedded spaces. To get the old +result, use substitute(expand(foo), "\n", " ", "g"). + +For Insert-expanding dictionaries allow a backslash to be used for +wildchars. Allows expanding "ze\kra", when 'isk' includes a backslash. + +New icon for the Win32 GUI. + +":tag", ":tselect" etc. only use the argument as a regexp when it starts +with '/'. Avoids that ":tag xx~" gives an error message: "No previous sub. +regexp". Also, when the :tag argument contained wildcard characters, it was +not Vi compatible. +When using '/', the argument is taken literally too, with a higher priority, +so it's found before wildcard matches. +Only when the '/' is used are matches with different case found, even though +'ignorecase' isn't set. +Changed "g^]" to only do ":tselect" when there is more than on matching tag. + +Changed some of the default colors, because they were not very readable on a +dark background. + +A character offset to a search pattern can move the cursor to the next or +previous line. Also fixes that "/pattern/e+2" got stuck on "pattern" at the +end of a line. + +Double-clicks in the status line do no longer start Visual mode. Dragging a +status line no longer stops Visual mode. + +Perl interface: Buffers() and Windows() now use more logical arguments, like +they are used in the rest of Vim (Moore). + +Init '" mark to the first character of the first line. Makes it possible to +use '" in an autocommand without getting an error message. + + +Added *added-5.1* +----- + +"shell_error" internal variable: result of last shell command. + +":echohl" command: Set highlighting for ":echo". + +'S' flag in 'highlight' and StatusLineNC highlight group: highlighting for +status line of not-current window. Default is to use bold for current +window. + +Added buffer_name() and buffer_number() functions (Aaron). +Added flags argument "g" to substitute() function (Aaron). +Added winheight() function. + +Win32: When an external command starts with "start ", no console is opened +for it (Aaron). + +Win32 console: Use termcap codes for bold/reverse based on the current +console attributes. + +Configure check for "strip". (Napier) + +CTRL-R CTRL-R x in Insert mode: Insert the contents of a register literally, +instead of as typed. + +Made a few "No match" error messages more informative by adding the pattern +that didn't match. + +"make install" now also copies the macro files. + +tools/tcltags, a shell script to generate a tags file from a TCL file. + +"--with-tlib" setting for configure. Easy way to use termlib: "./configure +--with-tlib=termlib". + +'u' flag in 'cino' for setting the indent for contained () parts. + +When Win32 OLE version can't load the registered type library, ask the user +if he wants to register Vim now. (Erhardt) +Win32 with OLE: When registered automatically, exit Vim. +Included VisVim 1.1b, with a few enhancements and the new icon (Heiko +Erhardt). + +Added patch from Vince Negri for Win32s support. Needs to be compiled with +VC 4.1! + +Perl interface: Added $curbuf. Rationalized Buffers() and Windows(). +(Moore) Added "group" argument to Msg(). + +Included Perl files in DOS source archive. Changed Makefile.bor and +Makefile.w32 to support building a Win32 version with Perl included. + +Included new Makefile.w32 from Ken Scott. Now it's able to make all Win32 +versions, including OLE, Perl and Python. + +Added CTRL-W g ] and CTRL-W g ^]: split window and do g] or g^]. + +Added "g]" to always do ":tselect" for the ident under the cursor. +Added ":tjump" and ":stjump" commands. +Improved listing of ":tselect" when tag names are a bit long. + +Included patches for the Macintosh version. Also for Python interface. +(St-Amant) + +":buf foo" now also restores cursor column, when the buffer was used before. + +Adjusted the Makefile for different final destinations for the syntax files +and scripts (for Debian Linux). + +Amiga: $VIM can be used everywhere. When $VIM is not defined, "VIM:" is +used. This fixes that "VIM:" had to be assigned for the help files, and +$VIM set for the syntax files. Now either of these work. + +Some xterms send vt100 compatible function keys F1-F4. Since it's not +possible to detect this, recognize both type of keys and translate them to +<F1> - <F4>. + +Added "VimEnter" autocommand. Executed after loading all the startup stuff. + +BeOS version now also runs on Intel CPUs (Seibert). + + +Fixed *fixed-5.1* +----- + +":ts" changed position in the tag stack when cancelled with <CR>. +":ts" changed the cursor position for CTRL-T when cancelled with <CR>. +":tn" would always jump to the second match. Was using the wrong entry in +the tag stack. +Doing "tag foo", then ":tselect", overwrote the original cursor position in +the tag stack. + +"make install" changed the vim.1 manpage in a wrong way, causing "doc/doc" +to appear for the documentation files. + +When compiled with MAX_FEAT, xterm mouse handling failed. Was caused by DEC +mouse handling interfering. + +Was leaking memory when using selection in X11. + +CTRL-D halfway a command-line left some characters behind the first line(s) +of the listing. + +When expanding directories for ":set path=", put two extra backslashes +before a space in a directory name. + +When 'lisp' set, first line of a function would be indented. Now its indent +is set to zero. And use the indent of the first previous line that is at +the same () level. Added test33. + +"so<Esc>u" in an empty file didn't work. + +DOS: "seek error in swap file write" errors, when using DOS 6.2 share.exe, +because the swap file was made hidden. It's no longer hidden. + +":global" command would sometimes not execute on a matching line. Happened +when a data block is full in ml_replace(). + +For AIX use a tgetent buffer of 2048 bytes, instead of 1024. + +Win32 gvim now only sets the console size for external commands to 25x80 +on Windows 95, not on NT. + +Win32 console: Dead key could cause a crash, because of a missing "WINAPI" +(Deshpande). + +The right mouse button started Visual mode, even when 'mouse' is empty, and +in the command-line, a left click moved the cursor when 'mouse' is empty. +In Visual mode, 'n' in 'mouse' would be used instead of 'v'. + +A blinking cursor or focus change cleared a non-Visual selection. + +CTRL-Home and CTRL-End didn't work for MS-DOS versions. + +Could include NUL in 'iskeyword', causing a crash when doing insert mode +completion. + +Use _dos_commit() to flush the swap file to disk for MSDOS 16 bit version. + +In mappings, CTRL-H was replaced by the backspace key code. This caused +problems when it was used as text, e.g. ":map _U :%s/.^H//g<CR>". + +":set t_Co=0" was not handled like a normal term. Now it's translated into +":set t_Co=", which works. + +For ":syntax keyword" the "transparent" option did work, although not +mentioned in the help. But synID() returned wrong name. + +"gqG" in a file with one-word-per-line (e.g. a dictionary) was very slow and +not interruptible. + +"gq" operator inserted screen lines in the wrong situation. Now screen +lines are inserted or deleted when this speeds up displaying. + +cindent was wrong when an "if" contained "((". + +'r' flag in 'viminfo' was not used for '%'. Could get files in the buffer +list from removable media. + +Win32 GUI with OLE: if_ole_vc.mak could not be converted into a project. +Hand-edited to fix this... + +With 'nosol' set, doing "$kdw" below an empty line positioned the cursor at +the end of the line. + +Dos32 version changed "\dir\file" into "/dir/file", to work around a DJGPP +bug. That bug appears to have been fixed, therefore this translation has +been removed. + +"/^*" didn't work (find '*' in first column). + +"<afile>" was not always set for autocommands. E.g., for ":au BufEnter * +let &tags = expand("<afile>:p:h") . "/tags". + +In an xterm, the window may be a child of the outer xterm window. Use the +parent window when getting the title and icon names. (Smith) + +When starting with "gvim -bg black -fg white", the value of 'background' is +only set after reading the .gvimrc file. This causes a ":syntax on" to use +the wrong colors. Now allow using ":gui" to open the GUI window and set the +colors. Previously ":gui" in a gvimrc crashed Vim. + +tempname() returned the same name all the time, unless the file was actually +created. Now there are at least 26 different names. + +File name used for <afile> was sometimes full path, sometimes file name +relative to current directory. + +When 'background' was set after the GUI window was opened, it could change +colors that were set by the user in the .gvimrc file. Now it only changes +colors that have not been set by the user. + +Ignore special characters after a CSI in the GUI version. These could be +interpreted as special characters in a wrong way. (St-Amant) + +Memory leak in farsi code, when using search or ":s" command. +Farsi string reversing for a mapping was only done for new mappings. Now it +also works for replacing a mapping. + +Crash in Win32 when using a file name longer than _MAX_PATH. (Aaron) + +When BufDelete autocommands were executed, some things for the buffer were +already deleted (esp. Perl stuff). + +Perl interface: Buffer specific items were deleted too soon; fixes "screen +no longer exists" messages. (Moore) + +The Perl functions didn't set the 'modified' flag. + +link.sh did not return an error on exit, which may cause Vim to start +installing, even though there is no executable to install. (Riehm) + +Vi incompatibility: In Vi "." redoes the "y" command. Added the 'y' flag to +'cpoptions'. Only for 'compatible' mode. + +":echohl" defined a new group, when the argument was not an existing group. + +"syn on" and ":syn off" could move the cursor, if there is a hidden buffer +that is shorter that the current cursor position. + +The " mark was not set when doing ":b file". + +When a "nextgroup" is used with "skipwhite" in syntax highlighting, space at +the end of the line made the nextgroup also be found in the next line. + +":he g<CTRL-D>", then ":" and backspace to the start didn't redraw. + +X11 GUI: "gvim -rv" reversed the colors twice on Sun. Now Vim checks if the +result is really reverse video (background darker than foreground). + +"cat link.sh | vim -" didn't set syntax highlighting. + +Win32: Expanding "file.sw?" matched ".file.swp". This is an error of +FindnextFile() that we need to work around. (Kilgore) + +"gqgq" gave an "Invalid lnum" error on the last line. +Formatting with "gq" didn't format the first line after a change of comment +leader. + +There was no check for out-of-memory in win_alloc(). + +"vim -h" didn't mention "-register" and "-unregister" for the OLE version. + +Could not increase 'cmdheight' when the last window is only one line. Now +other windows are also made smaller, when necessary. + +Added a few {} to avoid "suggest braces around" warnings from gcc 2.8.x. +Changed return type of main() from void to int. (Nam) + +Using '~' twice in a substitute pattern caused a crash. + +"syn on" and ":syn off" could scroll the window, if there is a hidden buffer +that is shorter that the current cursor position. + +":if 0 | if 1 | endif | endif" didn't work. Same for ":while" and "elseif". + +With two windows on modified files, with 'autowrite' set, cursor in second +window, ":qa" gave a warning for the file in the first window, but then +auto-wrote the file in the second window. (Webb) + +Win32 GUI scrollbar could only handle 32767 lines. Also makes the +intellimouse wheel use the configurable number of scrolls. (Robinson) + +When using 'patchmode', and the backup file is on another partition, the file +copying messed up the write-file message. + +GUI X11: Alt-Backspace and Alt-Delete didn't work. + +"`0" could put the cursor after the last character in the line, causing +trouble for other commands, like "i". + +When completing tags in insert mode with ^X^], some matches were skipped, +because the compare with other tags was wrong. E.g., when "mnuFileSave" was +already there, "mnuFile" would be skipped. (Negri) + +When scrolling up/down, a syntax item with "keepend" didn't work properly. +Now the flags are also stored for the syntax state at the start of each line. + +When 'ic' was changed while 'hlsearch' is on, there was no redraw to show the +effect. + +Win32 GUI: Don't display "No write since last chance" in a message box, but in +the Vim window. + +============================================================================== +VERSION 5.2 *version-5.2* + +Improvements made between version 5.1 and 5.2. + + +Long lines editable *long-lines* +------------------- + +A single long line that doesn't fit in the window doesn't show a line of @@@ +anymore. Redrawing starts at a character further on in the line, such that +the text around the cursor can be seen. This makes it possible to edit these +long lines when wrapping is on. + + +File browser added *file-browser-5.2* +------------------ + +The Win32, Athena and Motif GUI bring up a file requester if the user asks to +":browse" for the ":e", ":w", ":r", ":so", ":redirect" and +":mkexrc/vimrc/vsess" commands. ":browse e /foo/bar" opens the requester in +the /foo/bar directory, so you can have nice mapping rhs's like ":browse so +$vim/macros". If no initial dir specified for ":browse e", can be compiled to +either begin in the current directory, or that of the current buffer. (Negri +and Kahn) +Added the 'browsedir' option, with value "current", "last" or "buffer". Tells +whether a browse dialog starts in last used dir, dir of current buffer, or +current dir. ":browse w" is unaffected. +The default menus have been changed to use the ":browse" command. + + +Dialogs added *dialogs-added* +------------- + +Added the ":confirm" command. Works on ":e", ":q", ":w", ":cl". Win32, +Athena and Motif GUI uses a window-dialog. All other platforms can use +prompt in command-line. ":confirm qa" offers a choice to save all modified +files. + +confirm() function: allows user access to the confirm engine. + +Added 'v' flag to 'guioptions'. When included, a vertical button layout is +always used for the Win32 GUI dialog. Otherwise, a horizontal layout is +preferred. + +Win32 GUI: ":promptfind" and ":promptrepl" pop up a dialog to find/replace. +To be used from a menu entry. (Negri) + + +Popup menu added *popup-menu-added* +---------------- + +When the 'mousemodel' option is set to "popup", the right mouse button +displays the top level menu headed with "PopUp" as pop-up context menu. The +"PopUp" menu is not displayed in the normal menu bar. This currently only +works for Win32 and Athena GUI. + + +Select mode added *new-Select-mode* +----------------- + +A new mode has been added: "Select mode". It is like Visual mode, but typing +a printable character replaces the selection. +- CTRL-G can be used to toggle between Visual mode and Select mode. +- CTRL-O can be used to switch from Select mode to Visual mode for one command. +- Added 'selectmode' option: tells when to start Select mode instead of Visual + mode. +- Added 'mousemodel' option: Change use of mouse buttons. +- Added 'keymodel' option: tells to use shifted special keys to start a + Visual or Select mode selection. +- Added ":behave". Can be used to quickly set 'selectmode', 'mousemodel' + and 'keymodel' for MS-Windows and xterm behavior. +- The xterm-like selection is now called modeless selection. +- Visual mode mappings and menus are used in Select mode. They automatically + switch to Visual mode first. Afterwards, reselect the area, unless it was + deleted. The "gV" command can be used in a mapping to skip the reselection. +- Added the "gh", "gH" and "g^H" commands: start Select (highlight) mode. +- Backspace in Select mode deletes the selected area. + +"mswin.vim" script. Sets behavior mostly like MS-Windows. + + +Session files added *new-session-files* +------------------- + +":mks[ession]" acts like "mkvimrc", but also writes the full filenames of the +currently loaded buffers and current directory, so that :so'ing the file +re-loads those files and cd's to that directory. Also stores and restores +windows. File names are made relative to session file. +The 'sessionoptions' option sets behavior of ":mksession". (Negri) + + +User defined functions and commands *new-user-defined* +----------------------------------- + +Added user defined functions. Defined with ":function" until ":endfunction". +Called with "Func()". Allows the use of a variable number of arguments. +Included support for local variables "l:name". Return a value with ":return". +See |:function|. +Call a function with ":call". When using a range, the function is called for +each line in the range. |:call| +"macros/justify.vim" is an example of using user defined functions. +User functions do not change the last used search pattern or the command to be +redone with ".". +'maxfuncdepth' option. Restricts the depth of function calls. Avoids trouble +(crash because of out-of-memory) when a function uses endless recursion. + +User definable Ex commands: ":command", ":delcommand" and ":comclear". +(Moore) See |user-commands|. + + +New interfaces *interfaces-5.2* +-------------- + +Tcl interface. (Wilken) See |tcl|. +Uses the ":tcl", ":tcldo" and "tclfile" commands. + +Cscope support. (Kahn) (Sekera) See |cscope|. +Uses the ":cscope" and ":cstag" commands. Uses the options 'cscopeprg', +'cscopetag', 'cscopetagorder' and 'cscopeverbose'. + + +New ports *ports-5.2* +--------- + +Amiga GUI port. (Nielsen) Not tested much yet! + +RISC OS version. (Thomas Leonard) See |riscos|. +This version can run either with a GUI or in text mode, depending upon where +it is invoked. +Deleted the "os_archie" files, they were not working anyway. + + +Multi-byte support *new-multi-byte* *new-multibyte* +------------------ + +MultiByte support for Win32 GUI. (Baek) +The 'fileencoding' option decides how the text in the file is encoded. +":ascii" works for multibyte characters. Multi-byte characters work on +Windows 95, even when using the US version. (Aaron) +Needs to be enabled in feature.h. +This has not been tested much yet! + + +New functions *new-functions-5.2* +------------- + +|browse()| puts up a file requester when available. (Negri) +|escape()| escapes characters in a string with a backslash. +|fnamemodify()| modifies a file name. +|input()| asks the user to enter a line. (Aaron) There is a separate + history for lines typed for the input() function. +|argc()| +|argv()| can be used to access the argument list. +|winbufnr()| buffer number of a window. (Aaron) +|winnr()| window number. (Aaron) +|matchstr()| Return matched string. +|setline()| Set a line to a string value. + + +New options *new-options-5.2* +----------- + +'allowrevins' Enable the CTRL-_ command in Insert and Command-line mode. +'browsedir' Tells in which directory a browse dialog starts. +'confirm' when set, :q :w and :e commands always act as if ":confirm" + is used. (Negri) +'cscopeprg' +'cscopetag' +'cscopetagorder' +'cscopeverbose' Set the |cscope| behavior. +'filetype' RISC-OS specific type of file. +'grepformat' +'grepprg' For the |:grep| command. +'keymodel' Tells to use shifted special keys to start a Visual or Select + mode selection. +'listchars' Set character to show in 'list' mode for end-of-line, tabs and + trailing spaces. (partly by Smith) Also sets character to + display if a line doesn't fit when 'nowrap' is set. +'matchpairs' Allows matching '<' with '>', and other single character + pairs. +'mousefocus' Window focus follows mouse (partly by Terhaar). Changing the + focus with a keyboard command moves the pointer to that + window. Also move the pointer when changing the window layout + (split window, change window height, etc.). +'mousemodel' Change use of mouse buttons. +'selection' When set to "inclusive" or "exclusive", the cursor can go one + character past the end of the line in Visual or Select mode. + When set to "old" the old behavior is used. When + "inclusive", the character under the cursor is included in the + operation. When using "exclusive", the new "ve" entry of + 'guicursor' is used. The default is a vertical bar. +'selectmode' Tells when to start Select mode instead of Visual mode. +'sessionoptions' Sets behavior of ":mksession". (Negri) +'showfulltag' When completing a tag in Insert mode, show the tag search + pattern (tidied up) as a choice as well (if there is one). +'swapfile' Whether to use a swap file for a buffer. +'syntax' When it is set, the syntax by that name is loaded. Allows for + setting a specific syntax from a modeline. +'ttymouse' Allows using xterm mouse codes for terminals which name + doesn't start with "xterm". +'wildignore' List of patterns for files that should not be completed at + all. +'wildmode' Can be used to set the type of expansion for 'wildchar'. + Replaces the CTRL-T command for command line completion. + Don't beep when listing all matches. +'winaltkeys' Win32 and Motif GUI. When "yes", ALT keys are handled + entirely by the window system. When "no", ALT keys are never + used by the window system. When "menu" it depends on whether + a key is a menu shortcut. +'winminheight' Minimal height for each window. Default is 1. Set to 0 if + you want zero-line windows. Scrollbar is removed for + zero-height windows. (Negri) + + + +New Ex commands *new-ex-commands-5.2* +--------------- + +|:badd| Add file name to buffer list without side effects. (Negri) +|:behave| Quickly set MS-Windows or xterm behavior. +|:browse| Use file selection dialog. +|:call| Call a function, optionally with a range. +|:cnewer| +|:colder| To access a stack of quickfix error lists. +|:comclear| Clear all user-defined commands. +|:command| Define a user command. +|:continue| Go back to ":while". +|:confirm| Ask confirmation if something unexpected happens. +|:cscope| Execute cscope command. +|:cstag| Use cscope to jump to a tag. +|:delcommand| Delete a user-defined command. +|:delfunction| Delete a user-defined function. +|:endfunction| End of user-defined function. +|:function| Define a user function. +|:grep| Works similar to ":make". (Negri) +|:mksession| Create a session file. +|:nohlsearch| Stop 'hlsearch' highlighting for a moment. +|:Print| This is Vi compatible. Does the same as ":print". +|:promptfind| Search dialog (Win32 GUI). +|:promptrepl| Search/replace dialog (Win32 GUI). +|:return| Return from a user-defined function. +|:simalt| Win32 GUI: Simulate alt-key pressed. (Negri) +|:smagic| Like ":substitute", but always use 'magic'. +|:snomagic| Like ":substitute", but always use 'nomagic'. +|:tcl| Execute TCL command. +|:tcldo| Execute TCL command for a range of lines. +|:tclfile| Execute a TCL script file. +|:tearoff| Tear-off a menu (Win32 GUI). +|:tmenu| +|:tunmenu| Win32 GUI: menu tooltips. (Negri) +|:star| :* Execute a register. + + +Changed *changed-5.2* +------- + +Renamed functions: + buffer_exists() -> bufexists() + buffer_name() -> bufname() + buffer_number() -> bufnr() + file_readable() -> filereadable() + highlight_exists() -> hlexists() + highlightID() -> hlID() + last_buffer_nr() -> bufnr("$") +The old ones are still there, for backwards compatibility. + +The CTRL-_ command in Insert and Command-line mode is only available when the +new 'allowrevins' option is set. Avoids that people who want to type SHIFT-_ +accidentally enter reverse Insert mode, and don't know how to get out. + +When a file name path in ":tselect" listing is too long, remove a part in the +middle and put "..." there. + +Win32 GUI: Made font selector appear inside Vim window, not just any odd +place. (Negri) + +":bn" skips help buffers, unless currently in a help buffer. (Negri) + +When there is a status line and only one window, don't show '^' in the status +line of the current window. + +":*" used to be used for "'<,'>", the Visual area. But in Vi it's used as an +alternative for ":@". When 'cpoptions' includes '*' this is Vi compatible. + +When 'insertmode' is set, using CTRL-O to execute a mapping will work like +'insertmode' was not set. This allows "normal" mappings to be used even when +'insertmode' is set. + +When 'mouse' was set already (e.g., in the .vimrc file), don't automatically +set 'mouse' when the GUI starts. + +Removed the 'N', 'I' and 'A' flags from the 'mouse' option. + +Renamed "toggle option" to "boolean option". Some people thought that ":set +xyz" would toggle 'xyz' on/off each time. + +The internal variable "shell_error" contains the error code from the shell, +instead of just 0 or 1. + +When inserting or replacing, typing CTRL-V CTRL-<CR> used to insert "<C-CR>". +That is not very useful. Now the CTRL key is ignored and a <CR> is inserted. +Same for all other "normal" keys with modifiers. Mapping these modified key +combinations is still possible. +In Insert mode, <C-CR> and <S-Space> can be inserted by using CTRL-K and then +the special character. + +Moved "quotes" file to doc/quotes.txt, and "todo" file to doc/todo.txt. They +are now installed like other documentation files. + +winheight() function returns -1 for a non-existing window. It used to be +zero, but that is a valid height now. + +The default for 'selection' is "inclusive", which makes a difference when +using "$" or the mouse to move the cursor in Visual mode. + +":q!" does not exit when there are changed buffers which are hidden. Use +":qa!" to exit anyway. + +Disabled the Perl/Python/Tcl interfaces by default. Not many people use them +and they make the executable a lot bigger. The internal scripting language is +now powerful enough for most tasks. + +The strings from the 'titlestring' and 'iconstring' options are used +untranslated for the Window title and icon. This allows for including a <CR>. +Previously a <CR> would be shown as "^M" (two characters). + +When a mapping is started in Visual or Select mode which was started from +Insert mode (the mode shows "(insert) Visual"), don't return to Insert mode +until the mapping has ended. Makes it possible to use a mapping in Visual +mode that also works when the Visual mode was started from Select mode. + +Menus in $VIMRUNTIME/menu.vim no longer overrule existing menus. This helps +when defining menus in the .vimrc file, or when sourcing mswin.vim. + +Unix: Use /var/tmp for .swp files, if it exists. Files there survive a +reboot (at least on Linux). + + +Added *added-5.2* +----- + +--with-motif-lib configure argument. Allows for using a static Motif library. + +Support for mapping numeric keypad +,-,*,/ keys. (Negri) +When not mapped, they produce the normal character. + +Win32 GUI: When directory dropped on gVim, cd there and edit new buffer. +(Negri) + +Win32 GUI: Made CTRL-Break work as interrupt, so that CTRL-C can be +used for mappings. + +In the output of ":map", highlight the "*" to make clear it's not part of the +rhs. (Roemer) + +When showing the Visual area, the cursor is not switched off, so that it can +be located. The Visual area is now highlighted with a grey background in the +GUI. This makes the cursor visible when it's also reversed. + +Win32: When started with single full pathname (e.g. via double-clicked file), +cd to that file's directory. (Negri) + +Win32 GUI: Tear-off menus, with ":tearoff <menu-name>" command. (Negri) +'t' option to 'guioptions': Add tearoff menu items for Win32 GUI and Motif. +It's included by default. +Win32 GUI: tearoff menu with submenus is indicated with a ">>". (Negri) + +Added ^Kaa and ^KAA digraphs. +Added "euro" symbol to digraph.c. (Corry) + +Support for Motif menu shortcut keys, using '&' like MS-Windows (Ollis). +Other GUIs ignore '&' in a menu name. + +DJGPP: Faster screen updating (John Lange). + +Clustering of syntax groups ":syntax cluster" (Bigham). +Including syntax files: ":syntax include" (Bigham). + +Keep column when switching buffers, when 'nosol' is set (Radics). + +Number function for Perl interface. + +Support for Intellimouse in Athena GUI. (Jensen) + +":sleep" also accepts an argument in milliseconds, when "m" is used. + +Added 'p' flag in 'guioptions': Install callbacks for enter/leave window +events. Makes cursor blinking work for Terhaar, breaks it for me. + +"--help" and "--version" command-line arguments. + +Non-text in ":list" output is highlighted with NonText. + +Added text objects: "i(" and "i)" as synonym for "ib". "i{" and "i}" as +synonym for "iB". New: "i<" and "i>", to select <thing>. All this also for +"a" objects. + +'O' flag in 'shortmess': message for reading a file overwrites any previous +message. (Negri) + +Win32 GUI: 'T' flag in 'guioptions': switch toolbar on/off. +Included a list with self-made toolbar bitmaps. (Negri) + +Added menu priority for sub-menus. Implemented for Win32 and Motif GUI. +Display menu priority with ":menu" command. +Default and Syntax menus now include priority for items. Allows inserting +menu items in between the default ones. + +When the 'number' option is on, highlight line numbers with the LineNr group. + +"Ignore" highlight group: Text highlighted with this is made blank. It is +used to hide special characters in the help text. + +Included Exuberant Ctags version 2.3, with C++ support, Java support and +recurse into directories. (Hiebert) + +When a tags file is not sorted, and this is detected (in a simplistic way), an +error message is given. + +":unlet" accepts a "!", to ignore non-existing variables, and accepts more +than one argument. (Roemer) +Completion of variable names for ":unlet". (Roemer) + +When there is an error in a function which is called by another function, show +the call stack in the error message. + +New file name modifiers: +":.": reduce file name to be relative to current dir. +":~": reduce file name to be relative to home dir. +":s?pat?sub?": substitute "pat" with "sub" once. +":gs?pat?sub?": substitute "pat" with "sub" globally. + +New configure arguments: --enable-min-features and --enable-max-features. +Easy way to switch to minimum or maximum features. + +New compile-time feature: modify_fname. For file name modifiers, e.g, +"%:p:h". Can be disabled to save some code (16 bit DOS). + +When using whole-line completion in Insert mode, and 'cindent' is set, indent +the line properly. + +MSDOS and Win32 console: 'guicursor' sets cursor thickness. (Negri) + +Included new set of Farsi fonts. (Shiran) + +Accelerator text now also works in Motif. All menus can be defined with & for +mnemonic and TAB for accelerator text. They are ignored on systems that don't +support them. +When removing or replacing a menu, compare the menu name only up to the <Tab> +before the mnemonic. + +'i' and 'I' flags after ":substitute": ignore case or not. + +"make install" complains if the runtime files are missing. + +Unix: When finding an existing swap file that can't be opened, mention the +owner of the file in the ATTENTION message. + +The 'i', 't' and 'k' options in 'complete' now also print the place where they +are looking for matches. (Acevedo) + +"gJ" command: Join lines without inserting a space. + +Setting 'keywordprg' to "man -s" is handled specifically. The "-s" is removed +when no count given, the count is added otherwise. Configure checks if "man +-s 2 read" works, and sets the default for 'keywordprg' accordingly. + +If you do a ":bd" and there is only one window open, Vim tries to move to a +buffer of the same type (i.e. non-help to non-help, help to help), for +consistent behavior to :bnext/:bprev. (Negri) + +Allow "<Nop>" to be used as the rhs of a mapping. ":map xx <Nop>", maps "xx" +to nothing at all. + +In a ":menu" command, "<Tab>" can be used instead of a real tab, in the menu +path. This makes it more easy to type, no backslash needed. + +POSIX compatible character classes for regexp patterns: [:alnum:], [:alpha:], +[:blank:], [:cntrl:], [:digit:], [:graph:], [:lower:], [:print:], [:punct:], +[:space:], [:upper:] and [:xdigit:]. (Briscoe) + +regexp character classes (for fast syntax highlight matching): + digits: \d [0-9] \D not digit (Roemer) + hex: \x [0-9a-fA-F] \X not hex + octal: \o [0-7] \O not octal + word: \w [a-zA-Z0-9_] \W not word + head: \h [a-zA-Z_] \H not head + alphabetic: \a [a-zA-Z] \A not alphabetic + lowercase: \l [a-z] \L not lowercase + uppercase: \u [A-Z] \U not uppercase + +":set" now accepts "+=", |^=" and "-=": add or remove parts of a string +option, add or subtract a number from a number option. A comma is +automagically inserted or deleted for options that are a comma-separated list. + +Filetype feature, for autocommands. Uses a file type instead of a pattern to +match a file. Currently only used for RISC OS. (Leonard) + +In a pattern for an autocommand, environment variables can be used. They are +expanded when the autocommand is defined. + +"BufFilePre" and "BufFilePost" autocommand evens: Before and after applying +the ":file" command to change the name of a buffer. +"VimLeavePre" autocommand event: before writing the .viminfo file. + +For autocommands argument: <abuf> is buffer number, like <afile>. + +Made syntax highlighting a bit faster when scrolling backwards, by keeping +more syncing context. + +Win32 GUI: Made scrolling faster by avoiding a redraw when deleting or +inserting screen lines. + +GUI: Made scrolling faster by not redrawing the scrollbar when the thumb moved +less than a pixel. + +Included ":highlight" in bugreport.vim. + +Created install.exe program, for simplistic installation on DOS and +MS-Windows. + +New register: '_', the black hole. When writing to it, nothing happens. When +reading from it, it's always empty. Can be used to avoid a delete or change +command to modify the registers, or reduce memory use for big changes. + +CTRL-V xff enters character by hex number. CTRL-V o123 enters character by +octal number. (Aaron) + +Improved performance of syntax highlighting by skipping check for "keepend" +when there isn't any. + +Moved the mode message ("-- INSERT --") to the last line of the screen. When +'cmdheight' is more than one, messages will remain readable. + +When listing matching files, they are also sorted on 'suffixes', such that +they are listed in the same order as CTRL-N retrieves them. + +synIDattr() takes a third argument (optionally), which tells for which +terminal type to get the attributes for. This makes it possible to run +2html.vim outside of gvim (using color names instead of #RRGGBB). + +Memory profiling, only for debugging. Prints at exit, and with "g^A" command. +(Kahn) + +DOS: When using a file in the current drive, remove the drive name: +"A:\dir\file" -> "\dir\file". This helps when moving a session file on a +floppy from "A:\dir" to "B:\dir". + +Increased number of remembered jumps from 30 to 50 per window. + +Command to temporarily disable 'hls' highlighting until the next search: +":nohlsearch". + +"gp" and "gP" commands: like "p" and "P", but leave the cursor just after the +inserted text. Used for the CTRL-V command in MS-Windows mode. + + +Fixed *fixed-5.2* +----- + +Win32 GUI: Could draw text twice in one place, for fake-bold text. Removed +this, Windows will handle the bold text anyway. (Negri) + +patch 5.1.1: Win32s GUI: pasting caused a crash (Negri) + +patch 5.1.2: When entering another window, where characters before the cursor +have been deleted, could have a cursor beyond the end of the line. + +patch 5.1.3: Win32s GUI: Didn't wait for external command to finish. (Negri) + +patch 5.1.4: Makefile.w32 can now also be used to generate the OLE version +(Scott). + +patch 5.1.5: Crashed when using syntax highlighting: cursor on a line that +doesn't fit in the window, and splitting that line in two. + +patch 5.1.6: Visual highlighting bug: After ":set nowrap", go to end of line +(so that the window scrolls horizontally), ":set wrap". Following Visual +selection was wrong. + +patch 5.1.7: When 'tagbsearch' off, and 'ignorecase' off, still could do +binary searching. + +patch 5.1.8: Win32 GUI: dragging the scrollbar didn't update the ruler. + +patch 5.1.9: Using ":gui" in .vimrc, caused xterm cursor to disappear. + +patch 5.1.10: A CTRL-N in Insert mode could cause a crash, when a buffer +without a name exists. + +patch 5.1.11: "make test" didn't work in the shadow directory. Also adjusted +"make shadow" for the links in the ctags directory. + +patch 5.1.12: "buf 123foo" used "123" as a count, instead as the start of a +buffer name. + +patch 5.1.13: When completing file names on the command-line, reallocating the +command-line may go wrong. + +patch 5.1.14: ":[nvci]unmenu" removed menu for all modes, when full menu patch +specified. + +Graceful handling of NULLs in drag-dropped file list. Handle passing NULL to +Fullname_save(). (Negri) + +Win32: ":!start" to invoke a program without opening a console, swapping +screens, or waiting for completion in either console or gui version, e.g. you +can type ":!start winfile". ALSO fixes "can't delete swapfile after spawning +a shell" bug. (enhancement of Aaron patch) (Negri) + +Win32 GUI: Fix CTRL-X default keymapping to be more Windows-like. (Negri) + +Shorten filenames on startup. If in /foo/bar, entering "vim ../bar/bang.c" +displays "bang.c" in status bar, not "/foo/bar/bang.c" (Negri) + +Win32 GUI: No copy to Windows clipboard when it's not desired. + +Win32s: Fix pasting from clipboard - made an assumption not valid under +Win32s. (Negri) + +Win32 GUI: Speed up calls to gui_mch_draw_string() and cursor drawing +functions. (Negri) + +Win32 GUI: Middle mouse button emulation now works in GUI! (Negri) + +Could skip messages when combining commands in one line, e.g.: +":echo "hello" | write". + +Perl interpreter was disabled before executing VimLeave autocommands. Could +not use ":perl" in them. (Aaron) + +Included patch for the Intellimouse (Aaron/Robinson). + +Could not set 'ls' to one, when last window has only one line. (Mitterand) + +Fixed a memory leak when removing menus. + +After ":only" the ruler could overwrite a message. + +Dos32: removed changing of __system_flags. It appears to work better when +it's left at the default value. + +p_aleph was an int instead of along, caused trouble on systems where +sizeof(int) != sizeof(long). (Schmidt) + +Fixed enum problems for Ultrix. (Seibert) + +Small redraw problem: "dd" on last line in file cleared wrong line. + +Didn't interpret "cmd | endif" when "cmd" starts with a range. E.g. "if 0 | +.d | endif". + +Command "+|" on the last line of the file caused ml_get errors. + +Memory underrun in eval_vars(). (Aaron) + +Don't rename files in a difficult way, except on Windows 95 (was also done on +Windows NT). + +Win32 GUI: An external command that produces an error code put the error +message in a dialog box. had to close the window and close the dialog. Now +the error code is displayed in the console. (Negri) + +"comctl32.lib" was missing from the GUI libraries in Makefile.w32. (Battle) + +In Insert mode, when entering a window in Insert mode, allow the cursor to be +one char beyond the text. + +Renamed machine dependent rename() to mch_rename(). Define mch_rename() to +rename() when it works properly. + +Rename vim_chdir() to mch_chdir(), because it's machine dependent. + +When using an arglist, and editing file 5 of 4, ":q" could cause "-1 more +files to edit" error. + +In if_python.c, VimCommand() caused an assertion when a do_cmdline() failed. +Moved the Python_Release_Vim() to before the VimErrorCheck(). (Harkins) + +Give an error message for an unknown argument after "--". E.g. for "vim +--xyz". + +The FileChangedShell autocommand didn't set <afile> to the name of the changed +file. + +When doing ":e file", causing the attention message, there sometimes was no +hit-enter prompt. Caused by empty line or "endif" at end of sourced file. + +A large number of patches for the VMS version. (Hunsaker) + +When CTRL-L completion (find longest match) results in a shorter string, no +completion is done (happens with ":help"). + +Crash in Win32 GUI version, when using an Ex "@" command, because +LinePointers[] was used while not initialized. + +Win32 GUI: allow mapping of Alt-Space. + +Output from "vim -h" was sent to stderr. Sending it to stdout is better, so +one can use "vim -h | more". + +In command-line mode, ":vi[!]" should reload the file, just like ":e[!]". +In Ex mode, ":vi" stops Ex mode, but doesn't reload the file. This is Vi +compatible. + +When using a ":set ls=1" in the .gvimrc file, would get a status line for a +single window. (Robinson) + +Didn't give an error message for ":set ai,xx". (Roemer) +Didn't give an error message for ":set ai?xx", ":set ai&xx", ":set ai!xx". + +Non-Unix systems: That a file exists but is unreadable is recognized as "new +file". Now check for existence when file can't be opened (like Unix). + +Unix: osdef.sh didn't handle declarations where the function name is at the +first column of the line. + +DJGPP: Shortening of file names didn't work properly, because get_cwd() +returned a path with backslashes. (Negri) + +When using a 'comments' part where a space is required after the middle part, +always insert a space when starting a new line. Helps for C comments, below a +line with "/****". + +Replacing path of home directory with "~/" could be wrong for file names +with embedded spaces or commas. + +A few fixes for the Sniff interface. (Leherbauer) + +When asking to hit 'y' or 'n' (e.g. for ":3,1d"), using the mouse caused +trouble. Same for ":s/x/y/c" prompt. + +With 'nowrap' and 'list', a Tab halfway on the screen was displayed as blanks, +instead of the characters specified with 'listchars'. Also for other +characters that take more than one screen character. + +When setting 'guifont' to an unknown font name, the previous font was lost and +a default font would be used. (Steed) + +DOS: Filenames in the root directory didn't get shortened properly. (Negri) + +DJGPP: making a full path name out of a file name didn't work properly when +there is no _fullpath() function. (Negri) + +Win32 console: ":sh" caused a crash. (Negri) + +Win32 console: Setting 'lines' and/or 'columns' in the _vimrc failed miserably +(could hang Windows 95). (Negri) + +Win32: The change-drive function was not correct, went to the wrong drive. +(Tsindlekht) + +GUI: When editing a command line in Ex mode, Tabs were sometimes not +backspaced properly, and unprintable characters were displayed directly. +non-GUI can still be wrong, because a system function is called for this. + +":set" didn't stop after an error. For example ":set no ai" gave an error for +"no", but still set "ai". Now ":set" stops after the first error. + +When running configure for ctags, $LDFLAGS wasn't passed to it, causing +trouble for IRIX. + +"@%" and "@#" when file name not set gave an error message. Now they just +return an empty string. (Steed) + +CTRL-X and CTRL-A didn't work correctly with negative hex and octal numbers. +(Steed) + +":echo" always started with a blank. + +Updating GUI cursor shape didn't always work (e.g., when blinking is off). + +In silent Ex mode ("ex -s" or "ex <file") ":s///p" didn't print a line. Also +a few other commands that explicitly print a text line didn't work. Made this +Vi compatible. + +Win32 version of _chdrive() didn't return correct value. (Tsindlekht) + +When using 't' in 'complete' option, no longer give an error message for a +missing tags file. + +Unix: tgoto() can return NULL, which was not handled correctly in configure. + +When doing ":help" from a buffer where 'binary' is set, also edited the help +file in binary mode. Caused extra ^Ms for DOS systems. + +Cursor position in a file was reset to 1 when closing a window. + +":!ls" in Ex mode switched off echo. + +When doing a double click in window A, while currently in window B, first +click would reset double click time, had to click three times to select a +word. + +When using <F11> in mappings, ":mkexrc" produced an exrc file that can't be +used in Vi compatible mode. Added setting of 'cpo' to avoid this. Also, add +a CTRL-V in front of a '<', to avoid a normal string to be interpreted as a +special key name. + +Gave confusing error message for ":set guifont=-*-lucida-*": first "font is +not fixed width", then "Unknown font". + +Some options were still completely left out, instead of included as hidden +options. + +While running the X11 GUI, ignore SIGHUP signals. Avoids a crash after +executing an external command (in rare cases). + +In os_unixx.h, signal() was defined to sigset(), while it already was. + +Memory leak when executing autocommands (was reported as a memory leak in +syntax highlighting). + +Didn't print source of error sometimes, because pointers were the same, +although names were different. + +Avoid a number of UMR errors from Purify (third argument to open()). + +A swap file could still be created just after setting 'updatecount' to zero, +when there is an empty buffer and doing ":e file". (Kutschera) + +Test 35 failed on 64 bit machines. (Schild) + +With "p" and "P" commands, redrawing was slow. + +Awk script for html documentation didn't work correctly with AIX awk. +Replaced "[ ,.);\] ]" with "[] ,.); ]". (Briscoe) +The makehtml.awk script had a small problem, causing extra lines to be +inserted. (Briscoe) + +"gqgq" could not be repeated. Repeating for "gugu" and "gUgU" worked in a +wrong way. Also made "gqq" work to be consistent with "guu". + +C indent was wrong after "case ':':". + +":au BufReadPre *.c put": Line from put text was deleted, because the buffer +was still assumed to be empty. + +Text pasted with the Edit/Paste menu was subject to 'textwidth' and +'autoindent'. That was inconsistent with using the mouse to paste. Now "*p +is used. + +When using CTRL-W CTRL-] on a word that's not a tag, and then CTRL-] on a tag, +window was split. + +":ts" got stuck on a tags line that has two extra fields. + +In Insert mode, with 'showmode' on, <C-O><C-G> message was directly +overwritten by mode message, if preceded with search command warning message. + +When putting the result of an expression with "=<expr>p, newlines were +inserted like ^@ (NUL in the file). Now the string is split up in lines at +the newline. + +putenv() was declared with "const char *" in pty.c, but with "char *" in +osdef2.h.in. Made the last one also "const char *". + +":help {word}", where +{word} is a feature, jumped to the feature list instead +of where the command was explained. E.g., ":help browse", ":help autocmd". + +Using the "\<xx>" form in an expression only got one byte, even when using a +special character that uses several bytes (e.g., "\<F9>"). +Changed "\<BS>" to produce CTRL-H instead of the special key code for the +backspace key. "\<Del>" produces 0x7f. + +":mkvimrc" didn't write a command to set 'compatible' or 'nocompatible'. + +The shell syntax didn't contain a "syn sync maxlines" setting. In a long file +without recognizable items, syncing took so long it looked like Vim hangs. +Added a maxlines setting, and made syncing interruptible. + +The "gs" command didn't flush output before waiting. + +Memory leaks for: + ":if 0 | let a = b . c | endif" + "let a = b[c]" + ":so {file}" where {file} contains a ":while" + +GUI: allocated fonts were never released. (Leonard) + +Makefile.bor: +- Changed $(DEFINES) into a list of "-D" options, so that it can also be used + for the resource compiler. (not tested!) +- "bcc.cfg" was used for all configurations. When building for another + configuration, the settings for the previous one would be used. Moved + "bcc.cfg" to the object directory. (Geddes) +- Included targets for vimrun, install, ctags and xxd. Changed the default to + use the Borland DLL Runtime Library, makes Vim.exe a log smaller. (Aaron) + +"2*" search for the word under the cursor with "2" prepended. (Leonard) + +When deleting into a specific register, would still overwrite the non-Win32 +GUI selection. Now ""x"*P works. + +When deleting into the "" register, would write to the last used register. +Now ""x always writes to the unnamed register. + +GUI Athena: A submenu with a '.' in it didn't work. E.g., +":amenu Syntax.XY\.Z.foo lll". + +When first doing ":tag foo" and then ":tnext" and/or ":tselect" the order of +matching tags could change, because the current file is different. Now the +existing matches are kept in the same order, newly found matches are added +after them, not matter what the current file is. + +":ta" didn't find the second entry in a tags file, if the second entry was +longer than the first one. + +When using ":set si tw=7" inserting "foo {^P}" made the "}" inserted at the +wrong position. can_si was still TRUE when the cursor is not in the indent of +the line. + +Running an external command in Win32 version had the problem that Vim exits +when the X on the console is hit (and confirmed). Now use the "vimrun" +command to start the external command indirectly. (Negri) + +Win32 GUI: When running an external filter, do it in a minimized DOS box. +(Negri) + +":let" listed variables without translation into printable characters. + +Win32 console: When resizing the window, switching back to the old size +(when exiting or executing an external command) sometimes failed. (Negri) +This appears to also fix a "non fixable" problem: +Win32 console in NT 4.0: When running Vim in a cmd window with a scrollbar, +the scrollbar disappeared and was not restored when Vim exits. This does work +under NT 3.51, it appears not to be a Vim problem. + +When executing BufDelete and BufUnload autocommands for a buffer without a +name, the name of the current buffer was used for <afile>. + +When jumping to a tag it reported "tag 1 of >2", while in fact there could be +only two matches. Changed to "tag 1 of 2 or more". + +":tjump tag" did a linear search in the tags file, which can be slow. + +Configure didn't find "LibXm.so.2.0", a Xm library with a version number. + +Win32 GUI: When using a shifted key with ALT, the shift modifier would remain +set, even when it was already used by changing the used key. E.g., "<M-S-9>" +resulted in "<M-S-(>", but it should be "<M-(>". (Negri) + +A call to ga_init() was often followed by setting growsize and itemsize. +Created ga_init2() for this, which looks better. (Aaron) + +Function filereadable() could call fopen() with an empty string, which might +be illegal. + +X Windows GUI: When executing an external command that outputs text, could +write one character beyond the end of a buffer, which caused a crash. (Kohan) + +When using "*" or "#" on a string that includes '/' or '?' (when these are +included in 'isk'), they were not escaped. (Parmelan) + +When adding a ToolBar menu in the Motif GUI, the submenu_id field was not +cleared, causing random problems. + +When adding a menu, the check if this menu (or submenu) name already exists +didn't compare with the simplified version (no mnemonic or accelerator) of the +new menu. Could get two menus with the same name, e.g., "File" and "&File". + +Breaking a line because of 'textwidth' at the last line in the window caused a +redraw of the whole window instead of a scroll. Speeds up normal typing with +'textwidth' a lot for slow terminals. + +An invalid line number produced an "invalid range" error, even when it wasn't +to be executed (inside "if 0"). + +When the unnamed, first buffer is re-used, the "BufDelete" autocommand was +not called. It would stick in a buffer list menu. + +When doing "%" on the NUL after the line, a "{" or "}" in the last character +of the line was not found. + +The Insert mode menu was not used for the "s" command, the Operator-pending +menu was used instead. + +With 'compatible' set, some syntax highlighting was not correct, because of +using "[\t]" for a search pattern. Now use the regexps for syntax +highlighting like the 'cpoptions' option is empty (as was documented already). + +When using "map <M-Space> ms" or "map <Space> sss" the output of ":map" didn't +show any lhs for the mapping (if 'isprint' includes 160). Now always use +<Space> and <M-Space>, even when they are printable. + +Adjusted the Syntax menu, so that the lowest entry fits on a small screen (for +Athena, where menus don't wrap). + +When using CTRL-E or CTRL-Y in Insert mode for characters like 'o', 'x' and +digits, repeating the insert didn't work. + +The file "tools/ccfilter.README.txt" could not be unpacked when using short +file names, because of the two dots. Renamed it to +"tools/ccfilter_README.txt". + +For a dark 'background', using Blue for Directory and SpecialKey highlight +groups is not very readable. Use Cyan instead. + +In the function uc_scan_attr() in ex_docmd.c there was a goto that jumped into +a block with a local variable. That's illegal for some compilers. + +Win32 GUI: There was a row of pixels at the bottom of the window which was not +drawn. (Aaron) + +Under DOS, editing "filename/" created a swap file of "filename/.swp". Should +be "filename/_swp". + +Win32 GUI: pointer was hidden when executing an external command. + +When 'so' is 999, "J" near the end of the file didn't redisplay correctly. + +":0a" inserted after the first line, instead of before the first line. + +Unix: Wildcard expansion didn't handle single quotes and {} patterns. Now +":file 'window.c'" removes the quotes and ":e 'main*.c'" works (literal '*'). +":file {o}{n}{e}" now results in file name "one". + +Memory leak when setting a string option back to its default value. + +============================================================================== +VERSION 5.3 *version-5.3* + +Version 5.3 was a bug-fix version of 5.2. There are not many changes. +Improvements made between version 5.2 and 5.3: + +Changed *changed-5.3* +------- + +Renamed "IDE" menu to "Tools" menu. + + +Added *added-5.3* +----- + +Win32 GUI: Give a warning when Vim is activated, and one of the files changed +since editing started. (Negri) + + +Fixed *fixed-5.3* +----- + +5.2.1: Win32 GUI: space for external command was not properly allocated, could +cause a crash. (Aaron) This was the reason to bring out 5.3 quickly after +5.2. + +5.2.2: Some commands didn't complain when used without an argument, although +they need one: ":badd", ":browse", ":call", ":confirm", ":behave", +":delfunction", ":delcommand" and ":tearoff". +":endfunction" outside of a function gave wrong error message: "Command not +implemented". Should be ":endfunction not inside a function". + +5.2.3: Win32 GUI: When gvim was installed in "Program files", or another path +with a space in it, executing external commands with vimrun didn't work. + +5.2.4: Pasting with the mouse in Insert mode left the cursor on the last +pasted character, instead of behind it. + +5.2.5: In Insert mode, cursor after the end of the line, a shift-cursor-left +didn't include the last character in the selection. + +5.2.6: When deleting text from Insert mode (with "<C-O>D" or the mouse), which +includes the last character in the line, the cursor could be left on the last +character in the line, instead of just after it. + +5.2.7: Win32 GUI: scrollbar was one pixel too big. + +5.2.8: Completion of "PopUp" menu showed the derivatives "PopUpc", "PopUPi", +etc. ":menu" also showed these. + +5.2.9: When using two input() functions on a row, the prompt would not be +drawn in column 0. + +5.2.10: A loop with input() could not be broken with CTRL-C. + +5.2.11: ":call asdf" and ":call asdf(" didn't give an error message. + +5.2.12: Recursively using ":normal" crashes Vim after a while. E.g.: +":map gq :normal gq<CR>" + +5.2.13: Syntax highlighting used 'iskeyword' from wrong buffer. When using +":help", then "/\k*" in another window with 'hlsearch' set. + +5.2.14: When using ":source" from a function, global variables would not be +available unless "g:" was used. + +5.2.15: XPM files can have the extension ".pm", which is the same as for Perl +modules. Added "syntax/pmfile.vim" to handle this. + +5.2.16: On Win32 and Amiga, "echo expand("%:p:h")" removed one dirname in an +empty buffer. mch_Fullname() didn't append a slash at the end of a directory +name. + +Should include the character under the cursor in the Visual area when using +'selection' "exclusive". This wasn't done for "%", "e", "E", "t" and "f". + +""p would always put register 0, instead of the unnamed (last used) register. +Reverse the change that ""x doesn't write in the unnamed (last used) register. +It would always write in register 0, which isn't very useful. Use "-x for the +paste mappings in Visual mode. + +When there is one long line on the screen, and 'showcmd' is off, "0$" didn't +redraw the screen. + +Win32 GUI: When using 'mousehide', the pointer would flicker when the cursor +shape is changed. (Negri) + +When cancelling Visual mode, and the cursor moves to the start, the wanted +column wasn't set, "k" or "j" moved to the wrong column. + +When using ":browse" or ":confirm", was checking for a comment and separating +bar, which can break some commands. + +Included fixes for Macintosh. (Kielhorn) + +============================================================================== +VERSION 5.4 *version-5.4* + +Version 5.4 adds new features, useful changes and a lot of bug fixes. + + +Runtime directory introduced *new-runtime-dir* +---------------------------- + +The distributed runtime files are now in $VIMRUNTIME, the user files in $VIM. +You normally don't set $VIMRUNTIME but let Vim find it, by using +$VIM/vim{version}, or use $VIM when that doesn't exist. This allows for +separating the user files from the distributed files and makes it more easy to +upgrade to another version. It also makes it possible to keep two versions of +Vim around, each with their own runtime files. + +In the Unix distribution the runtime files have been moved to the "runtime" +directory. This makes it possible to copy all the runtime files at once, +without the need to know what needs to be copied. + +The archives for DOS, Windows, Amiga and OS/2 now have an extra top-level +"vim" directory. This is to make clear that user-modified files should be put +here. The directory that contains the executables doesn't have '-' or '.' +characters. This avoids strange extensions. + +The $VIM and $VIMRUNTIME variables are set when they are first used. This +allows them to be used by Perl, for example. + +The runtime files are also found in a directory called "$VIM/runtime". This +helps when running Vim after just unpacking the runtime archive. When using +an executable in the "src" directory, Vim checks if "vim54" or "runtime" can +be added after removing it. This make the runtime files be found just after +compiling. + +A default for $VIMRUNTIME can be given in the Unix Makefile. This is useful +if $VIM doesn't point to above the runtime directory but to e.g., "/etc/". + + +Filetype introduced *new-filetype-5.4* +------------------- + +Syntax files are now loaded with the new FileType autocommand. Old +"mysyntaxfile" files will no longer work. |filetypes| + +The scripts for loading syntax highlighting have been changed to use the +new Syntax autocommand event. + +This combination of Filetype and Syntax events allows tuning the syntax +highlighting a bit more, also when selected from the Syntax menu. The +FileType autocommand can also be used to set options and mappings specifically +for that type of file. + +The "$VIMRUNTIME/filetype.vim" file is not loaded automatically. The +":filetype on" command has been added for this. ":syntax on" also loads it. + +The 'filetype' option has been added. It is used to trigger the FileType +autocommand event, like the 'syntax' option does for the Syntax event. + +":set syntax=OFF" and ":set syntax=ON" can be used (in a modeline) to switch +syntax highlighting on/off for the current file. + +The Syntax menu commands have been moved to $VIMRUNTIME/menu.vim. The Syntax +menu is included both when ":filetype on" and when ":syntax manual" is used. + +Renamed the old 'filetype' option to 'osfiletype'. It was only used for +RISCOS. 'filetype' is now used for the common file type. + +Added the ":syntax manual" command. Allows manual selection of the syntax to +be used, e.g., from a modeline. + + +Vim script line continuation *new-line-continuation* +---------------------------- + +When an Ex line starts with a backslash, it is concatenated to the previous +line. This avoids the need for long lines. |line-continuation| (Roemer) +Example: > + if has("dialog_con") || + \ has("dialog_gui") + :let result = confirm("Enter your choice", + \ "&Yes\n&No\n&Maybe", + \ 2) + endif + + +Improved session files *improved-sessions* +---------------------- + +New words for 'sessionoptions': +- "help" Restore the help window. +- "blank" Restore empty windows. +- "winpos" Restore the Vim window position. Uses the new ":winpos" + command +- "buffers" Restore hidden and unloaded buffers. Without it only the + buffers in windows are restored. +- "slash" Replace backward by forward slashes in file names. +- "globals" Store global variables. +- "unix" Use unix file format (<NL> instead of <CR><NL>) + +The ":mksession" and 'sessionoptions' are now in the +mksession feature. + +The top line of the window is also restored when using a session file. + +":mksession" and ":mkvimrc" don't store 'fileformat', it should be detected +when loading a file. + +(Most of this was done by Vince Negri and Robert Webb) + + +Autocommands improved *improved-autocmds-5.4* +--------------------- + +New events: +|FileType| When the file type has been detected. +|FocusGained| When Vim got input focus. (Negri) +|FocusLost| When Vim lost input focus. (Negri) +|BufCreate| Called just after a new buffer has been created or has been + renamed. (Madsen) +|CursorHold| Triggered when no key has been typed for 'updatetime'. Can be + used to do something with the word under the cursor. (Negri) + Implemented CursorHold autocommand event for Unix. (Zellner) + Also for Amiga and MS-DOS. +|GUIEnter| Can be used to do something with the GUI window after it has + been created (e.g., a ":winpos 100 50"). +|BufHidden| When a buffer becomes hidden. Used to delete the + option-window when it becomes hidden. + +Also trigger |BufDelete| just before a buffer is going to be renamed. (Madsen) + +The "<amatch>" pattern can be used like "<afile>" for autocommands, except +that it is the matching value for the FileType and Syntax events. + +When ":let @/ = <string>" is used in an autocommand, this last search pattern +will be used after the autocommand finishes. + +Made loading autocommands a bit faster. Avoid doing strlen() on each exiting +pattern for each new pattern by remembering the length. + + +Encryption *new-encryption* +---------- + +Files can be encrypted when writing and decrypted when reading. Added the +'key' option, "-x" command line argument and ":X" command. |encryption| (based +on patch from Mohsin Ahmed) + +When reading a file, there is an automatic detection whether it has been +encrypted. Vim will then prompt for the key. + +Note that the encryption method is not compatible with Vi. The encryption is +not unbreakable. This allows it to be exported from the US. + + +GTK GUI port *new-GTK-GUI* +------------ + +New GUI port for GTK+. Includes a toolbar, menu tearoffs, etc. |gui-gtk| +Added the |:helpfind| command. (Kahn and Dalecki) + + +Menu changes *menu-changes-5.4* +------------ + +Menus can now also be used in the console. It is enabled by the new +'wildmenu' option. This shows matches for command-line completion like a +menu. This works as a minimal file browser. + +The new |:emenu| command can be used to execute a menu item. + +Uses the last status line to list items, or inserts a line just above the +command line. (Negri) + +The 'wildcharx' option can be used to trigger 'wildmenu' completion from a +mapping. + +When compiled without menus, this can be detected with has("menu"). Also show +this in the ":version" output. Allow compiling GUI versions without menu +support. Only include toolbar support when there is menu support. + +Moved the "Window" menu all the way to the right (priority 70). Looks more +familiar for people working with MS-Windows, shouldn't matter for others. + +Included "Buffers" menu. Works with existing autocommands and functions. It +can be disabled by setting the "no_buffers_menu" variable. (Aaron and Madsen) + +Win32 supports separators in a menu: "-.*-". (Geddes) +Menu separators for Motif now work too. + +Made Popup menu for Motif GUI work. (Madsen) + +'M' flag in 'guioptions': Don't source the system menu. + +All the menu code has been moved from gui.c to menu.c. + + +Viminfo improved *improved-viminfo* +---------------- + +New flags for 'viminfo': +'!' Store global variables in the viminfo file if they are in uppercase + letters. (Negri) +'h' Do ":nohlsearch" when loading a viminfo file. + +Store search patterns in the viminfo file with their offset, magic, etc. Also +store the flag whether 'hlsearch' highlighting is on or off (which is not used +if the 'h' flag is in 'viminfo'). + +Give an error message when setting 'viminfo' without commas. + + +Various new commands *new-commands-5.4* +-------------------- + +Operator |g?|: rot13 encoding. (Negri) + +|zH| and |zL| commands: Horizontal scrolling by half a page. +|gm| move cursor to middle of screen line. (Ideas by Campbell) + +Operations on Visual blocks: |v_b_I|, |v_b_A|, |v_b_c|, |v_b_C|, |v_b_r|, +|v_b_<| and |v_b_>|. (Kelly) + +New command: CTRL-\ CTRL-N, which does nothing in Normal mode, and goes to +Normal mode when in Insert or Command-line mode. Can be used by VisVim or +other OLE programs to make sure Vim is in Normal mode, without causing a beep. +|CTRL-\_CTRL-N| + +":cscope kill" command to use the connection filename. |:cscope| (Kahn) + +|:startinsert| command: Start Insert mode next. + +|:history| command, to show all four types of histories. (Roemer) + +|[m|, |[M|, |]m| and |]M| commands, for jumping backward/forward to start/end +of method in a (Java) class. + +":@*" executes the * register. |:@| (Acevedo) + +|go| and |:goto| commands: Jump to byte offset in the file. + +|gR| and |gr| command: Virtual Replace mode. Replace characters without +changing the layout. (Webb) + +":cd -" changes to the directory from before the previous ":cd" command. +|:cd-| (Webb) + +Tag preview commands |:ptag|. Shows the result of a ":tag" in a dedicated +window. Can be used to see the context of the tag (e.g., function arguments). +(Negri) +|:pclose| command, and CTRL-W CTRL-Z: Close preview window. (Moore) +'previewheight' option, height for the preview window. +Also |:ppop|, |:ptnext|, |:ptprevious|, |:ptNext|, |:ptrewind|, |:ptlast|. + +|:find| and |:sfind| commands: Find a file in 'path', (split window) and edit +it. + +The |:options| command opens an option window that shows the current option +values. Or use ":browse set" to open it. Options are grouped by function. +Offers short help on each option. Hit <CR> to jump to more help. Edit the +option value and hit <CR> on a "set" line to set a new value. + + +Various new options *new-options-5.4* +------------------- + +Scroll-binding: 'scrollbind' and 'scrollopt' options. Added |:syncbind| +command. Makes windows scroll the same amount (horizontally and/or +vertically). (Ralston) + +'conskey' option for MS-DOS. Use direct console I/O. This should work with +telnet (untested!). + +'statusline' option: Configurable contents of the status line. Also allows +showing the byte offset in the file. Highlighting with %1* to %9*, using the +new highlight groups User1 to User9. (Madsen) + +'rulerformat' option: Configurable contents of the ruler, like 'statusline'. +(Madsen) + +'write' option: When off, writing files is not allowed. Avoids overwriting a +file even with ":w!". The |-m| command line option resets 'write'. + +'clipboard' option: How the clipboard is used. Value "unnamed": Use unnamed +register like "*. (Cortopassi) Value "autoselect": Like what 'a' in +'guioptions' does but works in the terminal. + +'guifontset' option: Specify fonts for the +fontset feature, for the X11 GUI +versions. Allows using normal fonts when vim is compiled with this feature. +(Nam) + +'guiheadroom' option: How much room to allow above/below the GUI window. +Used for Motif, Athena and GTK. + +Implemented 'tagstack' option: When off, pushing tags onto the stack is +disabled (Vi compatible). Useful for mappings. + +'shellslash' option. Only for systems that use a backslash as a file +separator. This option will use a forward slash in file names when expanding +it. Useful when 'shell' is sh or csh. + +'pastetoggle' option: Key sequence that toggles 'paste'. Works around the +problem that mappings don't work in Insert mode when 'paste' is set. + +'display' option: When set to "lastline", the last line fills the window, +instead of being replaced with "@" lines. Only the last three characters are +replaced with "@@@", to indicate that the line has not finished yet. + +'switchbuf' option: Allows re-using existing windows on a buffer that is being +jumped to, or split the window to open a new buffer. (Roemer) + +'titleold' option. Replaces the fixed string "Thanks for flying Vim", which +is used to set the title when exiting. (Schild) + + +Vim scripts *new-script-5.4* +----------- + +The |exists()| function can also check for existence of a function. (Roemer) +An internal function is now found with a binary search, should be a bit +faster. (Roemer) + +New functions: +- |getwinposx()| and |getwinposy()|: get Vim window position. (Webb) +- |histnr()|, |histadd()|, |histget()| and |histdel()|: Make history + available. (Roemer) +- |maparg()|: Returns rhs of a mapping. Based on a patch from Vikas. +- |mapcheck()|: Check if a map name matches with an existing one. +- |visualmode()|: Return type of last Visual mode. (Webb) +- |libcall()|: Call a function in a library. Currently only for Win32. (Negri) +- |bufwinnr()|: find window that contains the specified buffer. (Roemer) +- |bufloaded()|: Whether a buffer exists and is loaded. +- |localtime()| and |getftime()|: wall clock time and last modification time + of a file (Webb) +- |glob()|: expand file name wildcards only. +- |system()|: get the raw output of an external command. (based on a patch + from Aaron). +- |strtrans()|: Translate String into printable characters. Used for + 2html.vim script. +- |append()|: easy way to append a line of text in a buffer. + +Changed functions: +- Optional argument to |strftime()| to give the time in seconds. (Webb) +- |expand()| now also returns names for files that don't exist. + +Allow numbers in the name of a user command. (Webb) + +Use "v:" for internal Vim variables: "v:errmsg", "v:shell_error", etc. The +ones from version 5.3 can be used without "v:" too, for backwards +compatibility. + +New variables: +"v:warningmsg" and "v:statusmsg" internal variables. Contain the last given +warning and status message. |v:warningmsg| |v:statusmsg| (Madsen) +"v:count1" variable: like "v:count", but defaults to one when no count is +used. |v:count1| + +When compiling without expression evaluation, "if 1" can be used around the +not supported commands to avoid it being executed. Works like in Vim 4.x. +Some of the runtime scripts gave errors when used with a Vim that was compiled +with minimal features. Now "if 1" is used around code that is not always +supported. + +When evaluating an expression with && and ||, skip the parts that will not +influence the outcome. This makes it faster and avoids error messages. (Webb) +Also optimized the skipping of expressions inside an "if 0". + + +Avoid hit-enter prompt *avoid-hit-enter* +----------------------- + +Added 'T' flag to 'shortmess': Truncate all messages that would cause the +hit-enter prompt (unless that would happen anyway). +The 'O' flag in 'shortmess' now also applies to quickfix messages, e.g., from +the ":cn" command. + +The default for 'shortmess' is now "filnxtToO", to make most messages fit on +the command line, and not cause the hit-enter prompt. + +Previous messages can be viewed with the new |:messages| command. + +Some messages are shown fully, even when 'shortmess' tells to shorten +messages, because the user is expected to want to see them in full: CTRL-G and +some quickfix commands. + + +Improved quickfix *improved-quickfix* +----------------- + +Parse change-directory lines for gmake: "make[1]: Entering directory 'name'". +Uses "%D" and "%X" in 'errorformat'. +Also parse "Making {target} in {dir}" messages from make. Helps when not +using GNU make. (Schandl) + +Use 'isfname' for "%f" in 'errorformat'. + +Parsing of multi-line messages. |errorformat-multi-line| + +Allow a range for the |:clist| command. (Roemer) + +Support for "global" file names, for error formats that output the file name +once for several errors. (Roemer) + +|:cnfile| jumps to first error in next file. + +"$*" in 'makeprg' is replaced by arguments to ":make". (Roemer) + + +Regular expressions *regexp-changes-5.4* +------------------- + +In a regexp, a '$' before "\)" is also considered to be an end-of-line. |/$| +In patterns "^" after "\|" or "\(" is a start-of-line. |/^| (Robinson) + +In a regexp, in front of "\)" and "\|" both "$" and "\$" were considered +end-of-line. Now use "$" as end-of-line and "\$" for a literal dollar. Same +for '^' after "\(" and "\|". |/\$| |/\^| + +Some search patterns can be extremely slow, even though they are not really +illegal. For example: "\([^a-z]\+\)\+Q". Allow interrupting any regexp +search with CTRL-C. + +Register "/: last search string (read-only). (Kohan) Changed to use last used +search pattern (like what 'hlsearch' uses). Can set the search pattern with +":let @/ = {expr}". + +Added character classes to search patterns, to avoid the need for removing the +'l' flag from 'cpoptions': |[:tab:]|, |[:return:]|, |[:backspace:]| and +|[:escape:]|. + +By adding a '?' after a comparative operator in an expression, the comparison +is done by ignoring case. |expr-==?| + + +Other improvements made between version 5.3 and 5.4 +--------------------------------------------------- + +Changed *changed-5.4* +------- + +Unix: Use $TMPDIR for temporary files, if it is set and exists. + +Removed "Empty buffer" message. It isn't useful and can cause a hit-enter +prompt. (Negri) + +"ex -" now reads commands from stdin and works in silent mode. This is to be +compatible with the original "ex" command that is used for scripts. + +Default range for ":tcldo" is the whole file. + +Cancelling Visual mode with ESC moved the cursor. There appears to be no +reason for this. Now leave the cursor where it is. + +The ":grep" and ":make" commands see " as part of the arguments, instead of +the start of a comment. + +In expressions the "=~" and "!~" operators no longer are affected by +'ignorecase'. + +Renamed vimrc_example to vimrc_example.vim and gvimrc_example to +gvimrc_example.vim. Makes them being recognized as vim scripts. + +"gd" no longer starts searching at the end of the previous function, but at +the first blank line above the start of the current function. Avoids that +using "gd" in the first function finds global a variable. + +Default for 'complete' changed from ".,b" to ".,w,b,u,t,i". Many more matches +will be found, at the cost of time (the search can be interrupted). + +It is no longer possible to set 'shell*' options from a modeline. Previously +only a warning message was given. This reduces security risks. + +The ordering of the index of documentation files was changed to make it more +easy to find a subject. + +On MS-DOS and win32, when $VIM was not set, $HOME was used. This caused +trouble if $HOME was set to e.g., "C:\" for some other tool, the runtime files +would not be found. Now use $HOME only for _vimrc, _gvimrc, etc., not to find +the runtime file. + +When 'tags' is "./{fname}" and there is no file name for the current buffer, +just use it. Previously it was skipped, causing "vim -t {tag}" not to find +many tags. + +When trying to select text in the 'scrolloff' area by mouse dragging, the +resulting scrolling made this difficult. Now 'scrolloff' is temporarily set +to 0 or 1 to avoid this. But still allow scrolling in the top line to extend +to above the displayed text. + +Default for 'comments' now includes "sl:/*,mb: *,ex:*/", to make javadoc +comments work. Also helps for C comments that start with "/*******". + +CTRL-X CTRL-] Insert mode tag expansion tried to expand to all tags when used +after a non-ID character, which can take a very long time. Now limit this to +200 matches. Also used for command-line tag completion. + +The OS/2 distribution has been split in two files. It was too big to fit on a +floppy. The same runtime archive as for the PC is now used. + +In the documentation, items like <a-z> have been replaced with {a-z} for +non-optional arguments. This avoids confusion with key names: <C-Z> is a +CTRL-Z, not a character between C and Z, that is {C-Z}. + + +Added *added-5.4* +----- + +Color support for the iris-ansi builtin termcap entry. (Tubman) + +Included VisVim version 1.3a. (Erhardt) + +Win32 port for SNiFF+ interface. (Leherbauer) +Documentation file for sniff interface: if_sniff.txt. (Leherbauer) + +Included the "SendToVim" and "OpenWithVim" programs in the OleVim directory. +To be used with the OLE version of gvim under MS-Windows. (Schaller) + +Included Exuberant Ctags version 3.2.4 with Eiffel support. (Hiebert) + +When a file that is being edited is deleted, give a warning (like when the +time stamp changed). + +Included newer versions of the HTML-generating Awk and Perl scripts. (Colombo) + +Linux console mouse support through "gpm". (Tsindlekht) + +Security fix: Disallow changing 'secure' and 'exrc' from a modeline. When +'secure' is set, give a warning for changing options that contain a program +name. + +Made the Perl interface work with Perl 5.005 and threads. (Verdoolaege) + +When giving an error message for an ambiguous mapping, include the offending +mapping. (Roemer) + +Command line editing: +- Command line completion of mappings. (Roemer) +- Command line completion for ":function", ":delfunction", ":let", ":call", + ":if", etc. (Roemer) +- When using CTRL-D completion for user commands that have + "-complete=tag_listfiles" also list the file names. (Madsen) +- Complete the arguments of the ":command" command. (Webb) +- CTRL-R . in command line inserts last inserted text. CTRL-F, CTRL-P, CTRL-W + and CTRL-A after CTRL-R are used to insert an object from under the cursor. + (Madsen) + +Made the text in uganda.txt about copying Vim a bit more clear. + +Updated the Vim tutor. Added the "vimtutor" command, which copies the tutor +and starts Vim on it. "make install" now also copies the tutor. + +In the output of ":clist" the current entry is highlighted, with the 'i' +highlighting (same as used for 'incsearch'). + +For the ":clist" command, you can scroll backwards with "b" (one screenful), +"u" (half a screenful) and "k" (one line). + +Multi-byte support: +- X-input method for multibyte characters. And various fixes for multibyte + support. (Nam) +- Hangul input method feature: |hangul|. (Nam) +- Cleaned up configuration of multibyte support, XIM, fontset and Hangul + input. Each is now configurable separately. +- Changed check for GTK_KEYBOARD to HANGUL_KEYBOARD_TYPE. (Nam) +- Added doc/hangulin.txt: Documentation for the Hangul input code. (Nam) +- XIM support for GTK+. (Nam) +- First attempt to include support for SJIS encoding. (Nagano) +- When a double-byte character doesn't fit at the end of the line, put a "~" + there and print it on the next line. +- Optimize output of multibyte text. (Park) +- Win32 IME: preedit style is like over-the-spot. (Nagano) +- Win32 IME: IME mode change now done with ImmSetOpenStatus. (Nagano) +- GUI Athena: file selection dialog can display multibyte characters. + (Nagano) +- Selection reply for XA_TEXT as XA_STRING. (Nagano) + +"runtime/macros/diffwin.vim". Mappings to make a diff window. (Campbell) + +Added ".obj" to the 'suffixes' option. + +Reduced size of syntax/synload.vim by using the ":SynAu" user command. +Automated numbering of Syntax menu entries in menu.vim. +In the Syntax menu, insert separators between syntax names that start with +a different letter. (Geddes) + +Xterm: +- Clipboard support when using the mouse in an xterm. (Madsen) +- When using the xterm mouse, track dragging of the mouse. Use xterm escape + sequences when possible. It is more precise than other methods, but + requires a fairly recent xterm version. It is enabled with "xterm2" in + 'ttymouse'. (Madsen) +- Check xterm patch level, to set the value of 'ttymouse'. Has only been + added to xterm recently (patch level > 95). Uses the new 't_RV' termcap + option. Set 'ttymouse' to "xterm2" when a correct response is recognized. + Will make xterm mouse dragging work better. +- Support for shifted function keys on xterm. Changed codes for shifted + cursor keys to what the xterm actually produces. Added codes for shifted + <End> and <Home>. +- Added 't_WP' to set the window position in pixels and 't_WS' to set the + window size in characters. Xterm can now move (used for ":winpos") and + resize (use for ":set lines=" and ":set columns="). + +X11: +- When in Visual mode but not owning the selection, display the Visual area + with the VisualNOS group to show this. (Madsen) +- Support for requesting the type of clipboard support. Used for AIX and + dtterm. (Wittig) +- Support compound_text selection (even when compiled without multibyte). + +Swap file: +- New variation for naming swap files: Replace path separators into %, place + all swap files in one directory. Used when a name in 'dir' ends in two path + separators. (Madsen) +- When a swap file is found, show whether it contains modifications or not in + the informative message. (Madsen) +- When dialogs are supported, use a dialog to ask the user what to do when a + swapfile already exists. + +"popup_setpos" in 'mousemodel' option. Allows for moving the cursor when +using the right mouse button. + +When a buffer is deleted, the selection for which buffer to display instead +now uses the most recent entry from the jump list. (Madsen) + +When using CTRL-O/CTRL-I, skip deleted buffers. + +A percentage is shown in the ruler, when there is room. + +Used autoconf 1.13 to generate configure. + +Included get_lisp_indent() from Dirk van Deun. Does better Lisp indenting +when 'p' flag in 'cpoptions' is not included. + +Made the 2html.vim script quite a bit faster. (based on ideas from Geddes) + +Unix: +- Included the name of the user that compiled Vim and the system name it was + compiled on in the version message. +- "make install" now also installs the "tools" directory. Makes them + available for everybody. +- "make check" now does the same as "make test". "make test" checks for + Visual block mode shift, insert, replace and change. +- Speed up comparing a file name with existing buffers by storing the + device/inode number with the buffer. +- Added configure arguments "--disable-gtk", "--disable-motif" and + "--disable-athena", to be able to disable a specific GUI (when it doesn't + work). +- Renamed the configure arguments for disabling the check for specific GUIs. + Should be clearer now. (Kahn) +- On a Digital Unix system ("OSF1") check for the curses library before + termlib and termcap. (Schild) +- "make uninstall_runtime" will only delete the version-specific files. Can + be used to delete the runtime files of a previous version. + +Macintosh: (St-Amant) +- Dragging the scrollbar, like it's done for the Win32 GUI. Moved common code + from gui_w32.c to gui.c +- Added dialogs and file browsing. +- Resource fork preserved, warning when it will be lost. +- Copy original file attributes to newly written file. +- Set title/notitle bug solved. +- Filename completion improved. +- Grow box limit resize to a char by char size. +- Use of rgb.txt for more colors (but give back bad color). +- Apple menu works (beside the about...). +- Internal border now vim compliant. +- Removing a menu doesn't crash anymore. +- Weak-linking of Python 1.5.1 (only on PPC). Python is supported when the + library is available. +- If an error is encountered when sourcing the users .vimrc, the alert box now + shows right away with the OK button defaulted. There's no more "Delete"-key + sign at the start of each line +- Better management of environment variables. Now $VIM is calculated only + once, not regenerated every time it is used. +- No more CPU hog when in background. +- In a sourced Vim script the Mac file format can be recognized, just like DOS + file format is. + +When both "unix" and "mac" are present in 'fileformats', prefer "mac" format +when there are more CR than NL characters. +When using "mac" fileformat, use CR instead of a NL, because NL is used for +NUL. Will preserve all characters in a file. (Madsen) + +The DOS install.exe now contains checks for an existing installation. It +avoids setting $VIM and $PATH again. +The install program for Dos/Windows can now install Vim in the popup menu, by +adding two registry keys. + +Port to EGCS/mingw32. New Makefile.ming. (Aaron) + +DOS 16 bit: Don't include cursor shape stuff. Save some bytes. + +TCL support to Makefile.w32. (Duperval) + +OS/2: Use argv[0] to find runtime files. + +When using "gf" to go to a buffer that has already been used, jump to the +line where the cursor last was. + +Colored the output of ":tselect" a bit more. Different highlighting between +tag name and file name. Highlight field name ("struct:") separately from +argument. + +Backtick expansion for non-Unix systems. Based on a patch from Aaron. +Allows the use of things like ":n `grep -l test *.c`" and +"echo expand('`ls m*`')". + +Check for the 'complete' option when it is set. (Acevedo) +'d' flag in 'complete' searches for defined names or macros. +While searching for Insert mode completions in include files and tags files, +check for typeahead, so that you can use matches early. (Webb) +The '.' flag in 'complete' now scans the current buffer completely, ignoring +'nowrapscan'. (Webb) + +Added '~' flag to 'whichwrap'. (Acevedo) + +When ending the Visual mode (e.g., with ESC) don't grab ownership of the +selection. + +In a color terminal, "fg" and "bg" can be used as color names. They stand for +the "Normal" colors. + +A few cscope cleanups. (Kahn) + +Included changed vimspell.sh from Schemenauer. + +Concatenation of strings in an expression with "." is a bit faster. (Roemer) + +The ":redir" command can now redirect to a register: ":redir @r". (Roemer) + +Made the output of ":marks" and ":jumps" look similar. When the mark is in +the current file, show the text at the mark. Also for ":tags". + +When configure finds ftello() and fseeko(), they are used in tag.c (for when +you have extremely big tags files). + +Configure check for "-FOlimit,2000" argument for the compiler. (Borsenkow) + +GUI: +- When using ":gui" in a non-GUI Vim, give a clear error message. +- "gvim -v" doesn't start the GUI (if console support is present). +- When in Ex mode, use non-Visual selection for the whole screen. +- When starting with "gvim -f" and using ":gui" in the .gvimrc file, Vim + forked anyway. Now the "-f" flag is remembered for ":gui". Added "gui -b" + to run gvim in the background anyway. + +Motif GUI: +- Check for "-lXp" library in configure (but it doesn't work yet...). +- Let configure check for Lesstif in "/usr/local/Lesstif/Motif*". Changed the + order to let a local Motif version override a system standard version. + +Win32 GUI: +- When using "-register" or "-unregister" in the non-OLE version, give an + error message. +- Use GTK toolbar icons. Make window border look better. Use sizing handles + on the lower left&right corners of the window. (Negri) +- When starting an external command with ":!start" and the command can not be + executed, give an error message. (Webb) +- Use sizing handles for the grey rectangles below the scrollbars. Can draw + toolbar in flat mode now, looks better. (Negri) +- Preparations for MS-Windows 3.1 addition. Mostly changing WIN32 to MSWIN + and USE_GUI_WIN32 to USE_GUI_MSWIN. (Negri) + +Avoid allocating the same string four times in buflist_findpat(). (Williams) + +Set title and icon text with termcap options 't_ts', 't_fs', 't_IS' and +'t_IE'. Allows doing this on any terminal that supports setting the title +and/or icon text. (Schild) + +New 'x' flag in 'comments': Automatically insert the end part when its last +character is typed. Helps to close a /* */ comment in C. (Webb) + +When expand() has a second argument which is non-zero, don't use 'suffixes' +and 'wildignore', return all matches. + +'O' flag in 'cpoptions' When not included, Vim will not overwrite a file, if +it didn't exist when editing started but it does exist when the buffer is +written to the file. The file must have been created outside of Vim, possibly +without the user knowing it. When this is detected after a shell command, +give a warning message. + +When editing a new file, CTRL-G will show [New file]. When there were errors +while reading the file, CTRL-G will show [Read errors]. + +":wall" can now use a dialog and file-browsing when needed. + +Grouped functionality into new features, mainly to reduce the size of the +minimal version: ++linebreak: 'showbreak', 'breakat' and 'linebreak' ++visualextra: "I"nsert and "A"ppend in Visual block mode, "c"hange all lines + in a block, ">" and "<": Shifting a block, "r": Replacing a + Visual area with one character. ++comments: 'comments' ++cmdline_info: 'ruler' and 'showcmd'. Replaces +showcmd. +"+title" Don't add code to set title or icon for MSDOS, this was not + possible anyway. ++cmdline_compl Disable commandline completion at compile time, except for + files, directories and help items. + +Moved features from a list of function calls into an array. Should save a bit +of space. + +While entering the body of a function, adjust indent according to "if" and +"while" commands. + +VMS: Adjusted os_vms.mms a bit according to suggestions from Arpadffy. + +The flags in the 'comments' option can now include an offset. This makes it +possible to align "/*****", "/* xxx" and "/*" comments with the same +'comments' setting. The default value for 'comments' uses this. +Added 'O' flag: Don't use this part for the "O" command. Useful for "set +com=sO:*\ -,mO:*\ \ ,exO:*/" + +FileType autocommands recognize ".bak", ".orig" and "~" extensions and remove +them to find the relevant extension. + +The tutorial for writing a Vim script file has been extended. + +Some more highlighting in help files, for items that are not typed literally. + +Can use "CTRL-W CTRL-G" like "CTRL-W g". + +"make test" for OS/2. + +Adjusted configure to automatically use the GUI for BeOS. + + +Fixed *fixed-5.4* +----- + +5.3.1: When using an autocommand for BufWritePre that changes the name of the +buffer, freed memory would be used. (Geddes) + +Mac: Compiler didn't understand start of skip_class_name(). + +Win32 GUI: +- When cancelling the font requester, don't give an error message. +- When a tearoff-menu is open and its menu is deleted, Vim could crash. + (Negri) +- There was a problem on Windows 95 with (un)maximizing the window. + (Williams) +- when 'mousehide' is set, the mouse would stay hidden when a menu is dropped + with the keyboard. (Ralston) +- The tempname() function already created the file. Caused problems when + using ":w". Now the file is deleted. +- Cursor disappeared when ending up in the top-left character on the screen + after scrolling. (Webb) +- When adding a submenu for a torn-off menu, it was not updated. +- Menu tooltip was using the toolbar tooltip. (Negri) +- Setting 'notitle' didn't remove the title. (Steed) +- Using ":!start cmd" scrolled the screen one line up, and didn't wait for + return when the command wasn't found. + +Cscope interface: Sorting of matches was wrong. Starting the interface could +fail. (Kahn) + +Motif GUI: Could not compile with Motif 1.1, because some tear-off +functionality was not in #ifdefs. + +Configure could sometimes not compile or link the test program for sizeof(int) +properly. This caused alignment problems for the undo structure allocations. +Added a safety check that SIZEOF_INT is not zero. + +Added configure check to test if strings.h can be included after string.h. +Some systems can't handle it. +Some systems need both string.h and strings.h included. Adjusted vim.h for +that. Removed including string.h from os_unixx.h, since it's already in +vim.h. (Savage) +AIX: defining _NO_PROTO in os_unix.h causes a conflict between string.h and +strings.h, but after the configure check said it was OK. Also define +_NO_PROTO for AIX in the configure check. (Winn) + +When closing a window with CTRL-W c, the value of 'hidden' was not taken into +account, the buffer was always unloaded. (Negri) + +Unix Makefile: "make install" always tried to rename an older executable and +remove it. This caused an error message when it didn't exit. Added a check +for the existence of an old executable. +The command line for "make install" could get too long, because of the many +syntax files. Now first do a "cd" to reduce the length. + +On RISCOS and MSDOS, reading a file could fail, because the short filename was +used, which can be wrong after a ":!cd". + +In the DOS versions, the wrong install.exe was included (required Windows). +Now the install.exe version is included that is the same as the Vim version. +This also supports long file names where possible. + +When recording, and stopping while in Insert mode with CTRL-O q, the CTRL-O +would also be recorded. + +32bit DOS version: "vim \file", while in a subdirectory, resulted in "new +file" for "file" in the local directory, while "\file" did exist. When +"file" in the current directory existed, this didn't happen. + +MSDOS: Mouse could not go beyond 80 columns in 132 columns mode. (Young) + +"make test" failed in the RedHat RPM, because compatible is off by default. + +In Insert mode <C-O><C-W><C-W> changes to other window, but the status bars +were not updated until another character was typed. + +MSDOS: environment options in lowercase didn't work, although they did in the +Win32 versions. (Negri) + +After ":nohlsearch", a tag command switched highlighting back on. + +When using "append" command as the last line in an autocommand, Vim would +crash. + +RISCOS: The scroll bumpers (?) were not working properly. (Leonard) + +"zl" and "zh" could move the cursor, but this didn't set the column in which +e.g., "k" would move the cursor. + +When doing ":set all&" the value of 'scroll' was not set correctly. This +caused an error message when later setting any other number option. + +When 'hlsearch' highlighting has been disabled with ":nohlsearch", +incremental searching would switch it back on too early. + +When listing tags for ":tselect", and using a non-search command, and the last +character was equal to the first (e.g., "99"), the last char would not be +shown. + +When searching for tags with ":tag" Vim would assume that all matches had been +found when there were still more (e.g. from another tags file). + +Win32: Didn't recognize "c:\" (e.g., in tags file) as absolute path when +upper/lowercase was different. + +Some xterms (Debian) send <Esc>OH for HOME and <Esc>OF for END. Added these +to the builtin-xterm. + +In ex mode, any CR was seen as the end of the line. Only a NL should be +handled that way. broke ":s/foo/some^Mtext/". + +In menu.vim, a vmenu was used to override an amenu. That didn't work, because +the system menu file doesn't overwrite existing menus. Added explicit vunmenu +to solve this. + +Configure check for terminal library could find a library that doesn't work at +runtime (Solaris: shared library not found). Added a check that a program +with tgoto() can run correctly. + +Unix: "echo -n" in the Makefile doesn't work on all systems, causing errors +compiling pathdef.c. Replaced it with "tr". + +Perl: DO_JOIN was redefined by Perl. Undefined it in the perl files. + +Various XIM and multibyte fixes: +- Fix user cannot see his language while he is typing his language with + off-the-spot method. (Nagano) +- Fix preedit position using text/edit area (using gui.wid). (Nagano) +- remove 'fix dead key' codes. It was needed since XNFocusWindow was + "x11_window", XNFocusWindow is now gui.wid. (Nagano) +- Remove some compile warnings and fix typos. (Namsh) +- For status area, check the gtk+ version while Vim runs. I believe it is + better than compile time check. (Namsh) +- Remove one FIXME for gtk+-xim. (Namsh) +- XIM: Dead keys didn't work for Czech. (Vyskovsky) +- Multibyte: If user input only 3byte such as mb1_mb2_eng or eng_mb1_mb2 VIM + could convert it to special character. (Nam) +- Athena/Motif with XIM: fix preedit area. (Nam) +- XIM: Composed strings were sometimes ignored. Vim crashed when compose + string was longer than 256 bytes. IM's geometry control is fixed. (Nam, + Nagano) +- Win32 multibyte: hollowed cursor width on a double byte char was wrong. + (Nagano) +- When there is no GUI, selecting XIM caused compilation problems. + Automatically disable XIM when there is no GUI in configure. +- Motif and Athena: When compiled with XIM, but the input method was not + enabled, there would still be a status line. Now the status line is gone if + the input method doesn't work. (Nam) + +Win32: tooltip was not removed when selecting a parent menu (it was when +selecting a menu entry). (Negri) + +Unix with X: Some systems crash on exit, because of the XtCloseDisplay() call. +Removed it, it should not be necessary when exiting. + +Win32: Crash on keypress when compiled with Borland C++. (Aaron) + +When checking for Motif library files, prefer the same location as the include +files (with "include" replaced with "lib") above another entry. + +Athena GUI: Changed "XtOffset()" in gui_at_fs.c to "XtOffsetOf()", like it's +used in gui_x11.c. + +Win32: When testing for a timestamp of a file on floppy, would get a dialog +box when the floppy has been removed. Now return with an error. (Negri) + +Win32 OLE: When forced to come to the foreground, a minimized window was still +minimized, now it's restored. (Zivkov) + +There was no check for a positive 'shiftwidth'. A negative value could cause +a hangup, a zero value a crash. + +Athena GUI: horizontal scrollbar wasn't updated correctly when clicking right +or left of the thumb. + +When making a Visual-block selection in one window, and trying to scroll +another, could cause errors for accessing non-existent line numbers. + +When 'matchpairs' contains "`:'", jumping from the ` to the ' didn't work +properly. + +Changed '\"' to '"' to make it compatible with old C compilers. + +The command line expansion for mappings caused a script with a TAB between lhs +and rhs of a map command to fail. Assume the TAB is to separate lhs and rhs +when there are no mappings to expand. + +When editing a file with very long lines with 'scrolloff' set, "j" would +sometimes end up in a line which wasn't displayed. + +When editing a read-only file, it was completely read into memory, even when +it would not fit. Now create a swap file for a read-only file when running +out of memory while reading the file. + +When using ":set cino={s,e-s", a line after "} else {" was not indented +properly. Also added a check for this in test3.in. + +The Hebrew mapping for the command line was remembered for the next command +line. That isn't very useful, a command is not Hebrew. (Kol) + +When completing file names with embedded spaces, like "Program\ files", this +didn't work. Also for user commands. Moved backslash_halve() down to +mch_expandpath(). + +When using "set mouse=a" in Ex mode, mouse events were handled like typed +text. Then typing "quit" screwed up the mouse behavior of the xterm. + +When repeating an insert with "." that contains a CTRL-Y, a number 5 was +inserted as "053". + +Yanking a Visual area, with the cursor past the line, didn't move the cursor +back onto the line. Same for "~", "u", "U" and "g?" + +Win32: Default for 'grepprg' could be "findstr /n" even though there is no +findstr.exe (Windows 95). Check if it exists, and fall back to "grep -n" if +it doesn't. + +Because gui_mouse_moved() inserted a leftmouse click in the input buffer, +remapping a leftmouse click caused strange effects. Now Insert another code +in the input buffer. Also insert a leftmouse release, to avoid the problem +with ":map <LeftMouse> l" that the next release is seen as the release for the +focus click. + +With 'wrap' on, when using a line that doesn't fit on the screen, if the start +of the Visual area is before the start of the screen, there was no +highlighting. Also, 'showbreak' doesn't work properly. + +DOS, Win32: A pattern "[0-9]\+" didn't work in autocommands. + +When creating a swap file for a buffer which isn't the current buffer, could +get a mixup of short file name, resulting in a long file name when a short +file name was required. makeswapname() was calling modname() instead of +buf_modname(). + +When a function caused an error, and the error message was very long because +of recursiveness, this would cause a crash. + +'suffixes' were always compared with matching case. For MS-DOS, Win32 and +OS/2 case is now ignored. + +The use of CHARBITS in regexp.c didn't work on some Linux. Don't use it. + +When generating a script file, 'cpo' was made empty. This caused backslashes +to disappear from mappings. Set it to "B" to avoid that. + +Lots of typos in the documentation. (Campbell) + +When editing an existing (hidden) buffer, jump to the last used cursor +position. (Madsen) + +On a Sun the xterm screen was not restored properly when suspending. (Madsen) + +When $VIMINIT is processed, 'nocompatible' was only set after processing it. + +Unix: Polling for a character wasn't done for GPM, Sniff and Xterm clipboard +all together. Cleaned up the code for using select() too. + +When executing external commands from the GUI, some typeahead was lost. Added +some code to regain as much typeahead as possible. + +When the window height is 5 lines or fewer, <PageDown> didn't use a one-line +overlap, while <PageUp> does. Made sure that <PageUp> uses the same overlap +as <PageDown>, so that using them both always displays the same lines. + +Removed a few unused functions and variables (found with lint). + +Dictionary completion didn't use 'infercase'. (Raul) + +Configure tests failed when the Perl library was not in LD_LIBRARY_PATH. +Don't use the Perl library for configure tests, add it to the linker line only +when linking Vim. + +When using ncurses/terminfo, could get a 't_Sf' and 't_Sb' termcap entry that +has "%d" instead of "%p1%d". The light background colors didn't work then. + +GTK GUI with ncurses: Crashed when starting up in tputs(). Don't use tputs() +when the GUI is active. + +Could use the ":let" command to set the "count", "shell_error" and "version" +variables, but that didn't work. Give an error message when trying to set +them. + +On FreeBSD 3.0, tclsh is called tclsh8.0. Adjusted configure.in to find it. + +When Vim is linked with -lncurses, but python uses -ltermcap, this causes +trouble: "OOPS". Configure now removes the -ltermcap. + +:@" and :*" didn't work properly, because the " was recognized as the start of +a comment. + +Win32s GUI: Minimizing the console where a filter command runs in caused +trouble for detecting that the filter command has finished. (Negri) + +After executing a filter command from an xterm, the mouse would be disabled. +It would work again after changing the mode. + +Mac GUI: Crashed in newenv(). (St-Amant) + +The menus and mappings in mswin.vim didn't handle text ending in a NL +correctly. (Acevedo) + +The ":k" command didn't check if it had a valid argument or extra characters. +Now give a meaningful error message. (Webb) + +On SGI, the signal function doesn't always have three arguments. Check for +struct sigcontext to find out. Might still be wrong... + +Could crash when using 'hlsearch' and search pattern is "^". + +When search patterns were saved and restored, status of no_hlsearch was not +also saved and restored (from ":nohlsearch" command). + +When using setline() to make a line shorter, the cursor position was not +adjusted. + +MS-DOS and Win95: When trying to edit a file and accidentally adding a slash +or backslash at the end, the file was deleted. Probably when trying to create +the swap file. Explicitly check for a trailing slash or backslash before +trying to read a file. + +X11 GUI: When starting the GUI failed and received a deadly signal while +setting the title, would lock up when trying to exit, because the title is +reset again. Avoid using mch_settitle() recursively. + +X11 GUI: When starting the GUI fails, and then trying it again, would crash, +because argv[] has been freed and x11_display was reset to NULL. + +Win32: When $HOME was set, would put "~user" in the swap file, which would +never compare with a file name, and never cause the attention message. Put +the full path in the swap file instead. + +Win32 console: There were funny characters at the end of the "vim -r" swap +files message (direct output of CR CR LF). + +DOS 32 bit: "vim -r" put the text at the top of the window. + +GUI: With 'mousefocus' set, got mouse codes as text with "!sleep 100" or "Q". + +Motif and Win32 GUI: When changing 'guifont' to a font of the same size the +screen wasn't redrawn. + +Unix: When using ":make", jumping to a file b.c, which is already open as a +symbolic link a.c, opened a new buffer instead of using the existing one. + +Inserting text in the current buffer while sourcing the .vimrc file would +cause a crash or hang. The memfile for the current buffer was never +allocated. Now it's allocated as soon as something is written in the buffer. + +DOS 32 bit: "lightblue" background worked for text, but not drawn parts were +black. + +DOS: Colors of console were not restored upon exiting. + +When recording, with 'cmdheight' set to 2 and typing Esc> in Insert mode +caused the "recording" message to be doubled. + +Spurious "file changed" messages could happen on Windows. Now tolerate a one +second difference, like for Linux. + +GUI: When returning from Ex mode, scrollbars were not updated. + +Win32: Copying text to the clipboard containing a <CR>, pasting it would +replace it with a <NL> and drop the next character. + +Entering a double byte character didn't work if the second byte is in [xXoO]. +(Eric Lee) + +vim_realloc was both defined and had a prototype in proto/misc2.pro. Caused +conflicts on Solaris. + +A pattern in an autocommand was treated differently on DOS et al. than on +Unix. Now it's the same, also when using backslashes. + +When using <Tab> twice for command line completion, without a match, the <Tab> +would be inserted. (Negri) + +Bug in MS-Visual C++ 6.0 when compiling ex_docmd.c with optimization. (Negri) + +Testing the result of mktemp() for failure was wrong. Could cause a crash. +(Peters) + +GUI: When checking for a ".gvimrc" file in the current directory, didn't check +for a "_gvimrc" file too. + +Motif GUI: When using the popup menu and then adding an item to the menu bar, +the menu bar would get very high. + +Mouse clicks and special keys (e.g. cursor keys) quit the more prompt and +dialogs. Now they are ignored. + +When at the more-prompt, xterm selection didn't work. Now use the 'r' flag in +'mouse' also for the more-prompt. + +When selecting a Visual area of more than 1023 lines, with 'guioptions' set to +"a", could mess up the display because of a message in free_yank(). Removed +that message, except for the Amiga. + +Moved auto-selection from ui_write() to the screen update functions. Avoids +unexpected behavior from a low-level function. Also makes the different +feedback of owning the selection possible. + +Vi incompatibility: Using "i<CR>" in an indent, with 'ai' set, used the +original indent instead of truncating it at the cursor. (Webb) + +":echo x" didn't stop at "q" for the more prompt. + +Various fixes for Macintosh. (St-Amant) + +When using 'selectmode' set to "exclusive", selecting a word and then using +CTRL-] included the character under the cursor. + +Using ":let a:name" in a function caused a crash. (Webb) + +When using ":append", an empty line didn't scroll up. + +DOS etc.: A file name starting with '!' didn't work. Added '!' to default for +'isfname'. + +BeOS: Compilation problem with prototype of skip_class_name(). (Price) + +When deleting more than one line, e.g., with "de", could still use "U" +command, which didn't work properly then. + +Amiga: Could not compile ex_docmd.c, it was getting too big. Moved some +functions to ex_cmds.c. + +The expand() function would add a trailing slash for directories. + +Didn't give an error message when trying to assign a value to an argument of a +function. (Webb) + +Moved including sys/ptem.h to after termios.h. Needed for Sinix. + +OLE interface: Don't delete the object in CVimCF::Release() when the reference +count becomes zero. (Cordell) +VisVim could still crash on exit. (Erhardt) + +"case a: case b:" (two case statements in one line) aligned with the second +case. Now it uses one 'sw' for indent. (Webb) + +Font initialisation wasn't right for Athena/Motif GUI. Moved the call to +highlight_gui_started() gui_mch_init() to gui_mch_open(). (Nam) + +In Replace mode, backspacing over a TAB before where the replace mode started +while 'sts' is different from 'ts', would delete the TAB. + +Win32 console: When executing external commands and switching between the two +console screens, Vim would copy the text between the buffers. That caused the +screen to be messed up for backtick expansion. + +":winpos -1" then ":winpos" gave wrong error message. + +Windows commander creates files called c:\tmp\$wc\abc.txt. Don't remove the +backslash before the $. Environment variables were not expanded anyway, +because of the backslash before the dollar. + +Using "-=" with ":set" could remove half a part when it contains a "\,". +E.g., ":set path+=a\\,b" and then "set path-=b" removed ",b". + +When Visually selecting lines, with 'selection' set to "inclusive", including +the last char of the line, "<<" moved an extra line. Also for other operators +that always work on lines. + +link.sh changed "-lnsl_s" to "_s" when looking for "nsl" to be removed. +Now it only removes whole words. + +When jumped to a mark or using "fz", and there is an error, the current column +was lost. E.g. when using "$fzj". + +The "g CTRL-G" command could not be interrupted, even though it can take a +long time. + +Some terminals do have <F4> and <xF4>. <xF4> was always interpreted as <F4>. +Now map <xF4> to <F4>, so that the user can override this. + +When compiling os_win32.c with MIN_FEAT the apply_autocmds() should not be +used. (Aaron) + +This autocommand looped forever: ":au FileChangedShell * ++nested e <afile>" +Now FileChangeShell never nests. (Roemer) + +When evaluating an ":elseif" that was not going to matter anyway, ignore +errors. (Roemer) + +GUI Lesstif: Tearoff bar was the last item, instead of the first. + +GUI Motif: Colors of tear-off widgets was wrong when 't' flag added to +'guioptions' afterwards. When 't' flag in 'guioptions' is excluded, would +still get a tearoff item in a new menu. + +An inode number can be "long long". Use ino_t instead of long. Added +configure check for ino_t. + +Binary search for tags was using a file offset "long" instead of "off_t". + +Insert mode completion of tags was not using 'ignorecase' properly. + +In Insert mode, the <xFn> keys were not properly mapped to <Fn> for the +default mappings. Also caused errors for ":mkvimrc" and ":mksession". + +When jumping to another window while in Insert mode, would get the "warning: +changing readonly file" even when not making a change. + +A '(' or '{' inside a trailing "//" comment would disturb C-indenting. +When using two labels below each other, the second one was not indented +properly. Comments could mess up C-indenting in many places. (Roemer) + +Could delete or redefine a function while it was being used. Could cause a +crash. +In a function it's logical to prepend "g:" to a system variable, but this +didn't work. (Roemer) + +Hangul input: Buffer would overflow when user inputs invalid key sequence. +(Nam) + +When BufLoad or BufEnter autocommands change the topline of the buffer in the +window, it was overruled and the cursor put halfway the window. Now only put +the cursor halfway if the autocommands didn't change the topline. + +Calling exists("&option") always returned 1. (Roemer) + +Win32: Didn't take actually available memory into account. (Williams) + +White space after an automatically inserted comment leader was not removed +when 'ai' is not set and <CR> hit just after inserting it. (Webb) + +A few menus had duplicated accelerators. (Roemer) + +Spelling errors in documentation, quite a few "the the". (Roemer) + +Missing prototypes for Macintosh. (Kielhorn) + +Win32: When using 'shellquote' or 'shellxquote', the "!start cmd" wasn't +executed in a disconnected process. + +When resizing the window, causing a line before the cursor to wrap or unwrap, +the cursor was displayed in the wrong position. + +There was quite a bit of dead code when compiling with minimal features. + +When doing a ":%s///" command that makes lines shorter, such that lines above +the final cursor position no longer wrap, the cursor position was not updated. + +get_id_list() could allocate an array one too small, when a "contains=" item +has a wildcard that matches a group name that is added just after it. E.g.: +"contains=a.*b,axb". Give an error message for it. + +When yanking a Visual area and using the middle mouse button -> crash. When +clipboard doesn't work, now make "* always use "". + +Win32: Using ":buf a\ b\file" didn't work, it was interpreted as "ab\file". + +Using ":ts ident", then hit <CR>, with 'cmdheight' set to 2: command line was +not cleared, the tselect prompt was on the last but one line. + +mksession didn't restore the cursor column properly when it was after a tab. +Could not get all windows back when using a smaller terminal screen. Didn't +restore all windows when "winsize" was not in 'sessionoptions'. (Webb) + +Command line completion for ":buffer" depended on 'ignorecase' for Unix, but +not for DOS et al. Now don't use 'ignorecase', but let it depend on whether +file names are case sensitive or not (like when expanding file names). + +Win32 GUI: (Negri) +- Redrawing the background caused flicker when resizing the window. Removed + _OnEraseBG(). Removed CS_HREDRAW and CS_VREDRAW flags from the + sndclass.style. +- Some parts of the window were drawn in grey, instead of using the color from + the user color scheme. +- Dropping a file on gvim didn't activate the window. +- When there is no menu ('guioptions' excludes 'm'), never use the ALT key for + it. + +GUI: When resizing the window, would make the window height a bit smaller. +Now round off to the nearest char cell size. (Negri) + +In Vi the ")" and "(" commands don't stop at a single space after a dot. +Added 'J' flag in 'cpoptions' to make this behave Vi compatible. (Roemer) + +When saving a session without any buffers loaded, there would be a ":normal" +command without arguments in it. (Webb) + +Memory leaks fixed: (Madsen) +- eval.c: forgot to release func structure when func deleted +- ex_docmd.c: forgot to release string after "<sfile>" +- misc1.c: leak when completion pattern had no matches. +- os_unix.c: forgot to release regexp after file completions + +Could crash when using a buffer without a name. (Madsen) +Could crash when doing file name completion, because of backslash_halve(). +(Madsen) + +":@a" would do mappings on register a, which is not Vi compatible. (Roemer) + +":g/foo.*()/s/foobar/_&/gc" worked fine, but then "n" searched for "foobar" +and displayed "/foo.*()". (Roemer) + +OS/2: get_cmd_output() was not included. Didn't check for $VIM/.vimrc file. + +Command line completion of options didn't work after "+=" and "-=". + +Unix configure: Test for memmove()/bcopy()/memcpy() tried redefining these +functions, which could fail if they are defined already. Use mch_memmove() to +redefine. + +Unix: ":let a = expand("`xterm`&")" started an xterm asynchronously, but +":let a = expand("`xterm&`")" generated an error message, because the +redirection was put after the '&'. + +Win32 GUI: Dialog buttons could not be selected properly with cursor keys, +when the default is not the first button. (Webb) + +The "File has changed since editing started" (when regaining focus) could not +always be seen. (Webb) + +When starting with "ex filename", the file message was overwritten with +the "entering Ex mode" message. + +Output of ":tselect" listed name of file directly from the tags file. Now it +is corrected for the position of the tags file. + +When 'backspace' is 0, could backspace over autoindent. Now it is no longer +allowed (Vi compatible). + +In Replace mode, when 'noexpandtab' and 'smarttab' were set, and inserting +Tabs, backspacing didn't work correctly for Tabs inserted at the start of the +line (unless 'sts' was set too). Also, when replacing the first non-blank +after which is a space, rounding the indent was done on the first non-blank +instead of on the character under the cursor. + +When 'sw' at 4, 'ts' at 8 and 'smarttab' set: When a tab was appended after +four spaces (they are replaced with a tab) couldn't backspace over the tab. + +In Insert mode, with 'bs' set to 0, couldn't backspace to before autoindent, +even when it was removed with CTRL-D. + +When repeating an insert command where a <BS>, <Left> or other key causes an +error, would flush buffers and remain in Insert mode. No longer flush +buffers, only beep and continue with the insert command. + +Dos and Win32 console: Setting t_me didn't work to get another color. Made +this works backwards compatible. + +For Turkish (LANG = "tr") uppercase 'i' is not an 'I'. Use ASCII uppercase +translation in vim_strup() to avoid language problems. (Komur) + +Unix: Use usleep() or nanosleep() for mch_delay() when available. Hopefully +this avoids a hangup in select(0, ..) for Solaris 2.6. + +Vim would crash when using a script file with 'let &sp = "| tee"', starting +vim with "vim -u test", then doing ":set sp=". The P_WAS_SET flag wasn't set +for a string option, could cause problems with any string option. + +When using "cmd | vim -", stdin is not a terminal. This gave problems with +GPM (Linux console mouse) and when executing external commands. Now close +stdin and re-open it as a copy of stderr. + +Syntax highlighting: A "nextgroup" item was not properly stored in the state +list. This caused missing of next groups when not redrawing from start to +end, but starting halfway. + +Didn't check for valid values of 'ttymouse'. + +When executing an external command from the GUI, waiting for the child to +terminate might not work, causing a hang. (Parmelan) + +"make uninstall" didn't delete the vimrc_example.vim and gvimrc_example.vim +files and the vimtutor. + +Win32: "expand("%:p:h")" with no buffer name removed the directory name. +"fnamemodify("", ":p")" did not add a trailing slash, fname_case() removed it. + +Fixed: When 'hlsearch' was set and the 'c' flag was not in 'cpoptions': +highlighting was not correct. Now overlapping matches are handled correctly. + +Athena, Motif and GTK GUI: When started without focus, cursor was shown as if +with focus. + +Don't include 'shellpipe' when compiled without quickfix, it's not used. +Don't include 'dictionary' option when compiled without the +insert_expand +feature. +Only include the 'shelltype' option for the Amiga. + +When making a change to a line, with 'hlsearch' on, causing it to wrap, while +executing a register, the screen would not be updated correctly. This was a +generic problem in update_screenline() being called while must_redraw is +VALID. + +Using ":bdelete" in a BufUnload autocommand could cause a crash. The window +height was added to another window twice in close_window(). + +Win32 GUI: When removing a menu item, the tearoff wasn't updated. (Negri) + +Some performance bottlenecks removed. Allocating memory was not efficient. +For Win32 checking for available memory was slow, don't check it every time +now. On NT obtaining the user name takes a long time, cache the result (for +all systems). + +fnamemodify() with an argument ":~:." or ":.:~" didn't work properly. + +When editing a new file and exiting, the marks for the buffer were not saved +in the viminfo file. + +":confirm only" didn't put up a dialog. + +These text objects didn't work when 'selection' was "exclusive": va( vi( va{ +vi{ va< vi< vi[ va[. + +The dialog for writing a readonly file didn't have a valid default. (Negri) + +The line number used for error messages when sourcing a file was reset when +modelines were inspected. It was wrong when executing a function. + +The file name and line number for an error message wasn't displayed when it +was the same as for the last error, even when this was long ago. Now reset +the name/lnum after a hit-enter prompt. + +In a session file, a "%" in a file name caused trouble, because fprintf() was +used to write it to the file. + +When skipping statements, a mark in an address wasn't skipped correctly: +"ka|if 0|'ad|else|echo|endif". (Roemer) + +":wall" could overwrite a not-edited file without asking. + +GUI: When $DISPLAY was not set or starting the GUI failed in another way, the +console mode then started with wrong colors and skipped initializations. Now +do an early check if the GUI can be started. Don't source the menu.vim or +gvimrc when it will not. Also do normal terminal initializations if the GUI +might not start. + +When using a BufEnter autocommand to position the cursor and scroll the +window, the cursor was always put at the last used line and halfway the window +anyhow. + +When 'wildmode' was set to "longest,list:full", ":e *.c<Tab><Tab>" didn't list +the matches. Also avoid that listing after a "longest" lists the wrong +matches when the first expansion changed the string in front of the cursor. + +When using ":insert", ":append" or ":change" inside a while loop, was not able +to break out of it with a CTRL-C. + +Win32: ":e ." took an awful long time before an error message when used in +"C:\". Was caused by adding another backslash and then trying to get the full +name for "C:\\". + +":winpos -10 100" was working like ":winpos -10 -10", because a pointer was +not advanced past the '-' sign. + +When obtaining the value of a hidden option, would give an error message. Now +just use a zero value. + +OS/2: Was using argv[0], even though it was not a useful name. It could be +just "vim", found in the search path. + +Xterm: ":set columns=78" didn't redraw properly (when lines wrap/unwrap) until +after a delay of 'updatetime'. Didn't check for the size-changed signal. + +'scrollbind' didn't work in Insert mode. +Horizontal scrollbinding didn't always work for "0" and "$" commands (e.g., +when 'showcmd' was off). + +When compiled with minimal features but with GUI, switching on the mouse in an +xterm caused garbage, because the mouse codes were not recognized. Don't +enable the mouse when it can't be recognized. In the GUI it also didn't work, +the arguments to the mouse code were not interpreted. + +When 'showbreak' used, in Insert mode, when the cursor is just after the last +character in the line, which is also the in the rightmost column, the cursor +position would be like the 'showbreak' string is shown, but it wasn't. + +Autocommands could move the cursor in a new file, so that CTRL-W i didn't show +the right line. Same for when using a filemark to jump to another file. + +When redefining the argument list, the title used for other windows could be +showing the wrong info about the position in the argument list. Also update +this for a ":split" command without arguments. + +When editing file 97 of 13, ":Next" didn't work. Now it goes to the last +file in the argument list. + +Insert mode completion (for dictionaries or included files) could not be +interrupted by typing an <Esc>. Could get hit-enter prompt after line +completion, or whenever the informative message would get too long. + +When using the ":edit" command to re-edit the same file, an autocommand to +jump to the last cursor position caused the cursor to move. Now set the last +used cursor position to avoid this. + +When 'comments' has a part that starts with white space, formatting the +comment didn't work. + +At the ":tselect" prompt Normal mode mappings were used. That has been +disabled. + +When 'selection' is not "old", some commands still didn't allow the cursor +past the end-of-line in Visual mode. + +Athena: When a menu was deleted, it would appear again (but not functional) +when adding another menu. Now they don't reappear anymore (although they are +not really deleted either). + +Borland C++ 4.x had an optimizer problem in fill_breakat_flags(). (Negri) + +"ze" didn't work when 'number' was on. (Davis) + +Win32 GUI: Intellimouse code didn't work properly on Windows 98. (Robinson) + +A few files were including proto.h a second time, after vim.h had already done +that, which could cause problems with the vim_realloc() macro. + +Win32 console: <M-x> or ALT-x was not recognized. Also keypad '+', '-' and +'*'. (Negri) +MS-DOS: <M-x> didn't work, produced a two-byte code. Now the alphabetic and +number keys work. (Negri) + +When finding a lot of matches for a tag completion, the check for avoiding +double matches could take a lot of time. Add a line_breakcheck() to be able +to interrupt this. (Deshpande) + +When the command line was getting longer than the screen, the more-prompt +would be given regularly, and the cursor position would be wrong. Now only +show the part of the command line that fits on the screen and force the cursor +to be positioned on the visible part. There can be text after the cursor +which isn't editable. + +At the more prompt and with the console dialog, a cursor key was interpreted +as <Esc> and OA. Now recognize special keys in get_keystroke(). Ignore mouse +and scrollbar events. + +When typing a BS after inserting a middle comment leader, typing the last char +of the end comment leader still changed it into the end comment leader. (Webb) + +When a file system is full, writing to a swap file failed. Now first try to +write one block to the file. Try next entry in 'dir' if it fails. + +When "~" is in 'whichwrap', doing "~" on last char of a line didn't update the +display. + +Unix: Expanding wildcards for ":file {\\}" didn't work, because "\}" was +translated to "}" before the shell got it. Now don't remove backslashes when +wildcards are going to be expanded. + +Unix: ":e /tmp/$uid" didn't work. When expanding environment variables in a +file name doesn't work, use the shell to expand the file name. ":e /tmp/$tty" +still doesn't work though. + +"make test" didn't always work on DOS/Windows for test30, because it depended +on the external "echo" command. + +The link.sh script used "make" instead of $MAKE from the Makefile. Caused +problems for generating pathdef.c when "make" doesn't work properly. + +On versions that can do console and GUI: In the console a typed CSI code could +cause trouble. + +The patterns in expression evaluation didn't ignore the 'l' flag in +'cpoptions'. This broke the working of <CR> in the options window. + +When 'hls' off and 'ai' on, "O<Esc>" did remove the indent, but it was still +highlighted red for trailing space. + +Win32 GUI: Dropping an encrypted file on a running gvim didn't work right. Vim +would loop while outputting "*" characters. vgetc() was called recursively, +thus it returns NUL. Added safe_vgetc(), which reads input directly from the +user in this situation. + +While reading text from stdin, only an empty screen was shown. Now show that +Vim is reading from stdin. + +The cursor shape wasn't set properly when returning to Insert mode, after +using a CTRL-O /asdf command which fails. It would be OK after a few seconds. +Now it's OK right away. + +The 'isfname' default for DOS/Windows didn't include the '@' character. File +names that contained "dir\@file" could not be edited. + +Win32 console: <C-S-Left> could cause a crash when compiled with Borland or +egcs. (Aaron) + +Unix and VMS: "#if HAVE_DIRENT_H" caused problems for some compilers. Use +"#ifdef HAVE_DIRENT_H" instead. (Jones) + +When a matching tag is in the current file but has a search pattern that +doesn't match, the cursor would jump to the first line. + +Unix: Dependencies for pty.c were not included in Makefile. Dependency of +ctags/config.h was not included (only matters for parallel make). + +Removed a few Uninitialized Memory Reads (potential crashes). In do_call() +calling clear_var() when not evaluating. In win32_expandpath() and +dos_expandpath() calling backslash_halve() past the end of a file name. + +Removed memory leaks: Set_vim_var_string() never freed the value. The +next_list for a syntax keyword was never freed. + +On non-Unix systems, using a file name with wildcards without a match would +silently fail. E.g., ":e *.sh". Now give a "No match" error message. + +The life/life.mac, urm/urm.mac and hanoi/hanoi.mac files were not recognized +as Vim scripts. Renamed them to *.vim. + +[Note: some numbered patches are not relevant when upgrading from version 5.3, +they have been removed] + +Patch 5.4m.1 +Problem: When editing a file with a long name, would get the hit-enter + prompt, even though all settings are such that the name should be + truncated to avoid that. filemess() was printing the file name + without truncating it. +Solution: Truncate the message in filemess(). Use the same code as for + msg_trunc_attr(), which is moved to the new function + msg_may_trunc(). +Files: src/message.c, src/proto/message.pro, src/fileio.c + +Patch 5.4m.3 +Problem: The Motif libraries were not found by configure for Digital Unix. +Solution: Add "/usr/shlib" to the search path. (Andy Kahn) +Files: src/configure.in, src/configure + +Patch 5.4m.5 +Problem: Win32 GUI: When using the Save-As menu entry and selecting an + existing file in the file browser, would get a dialog to confirm + overwriting twice. (Ed Krall) +Solution: Removed the dialog from the file browser. It would be nicer to + set the "forceit" flag and skip Vim's ":confirm" dialog, but it + requires quite a few changes to do that. +Files: src/gui_w32.c + +Patch 5.4m.6 +Problem: Win32 GUI: When reading text from stdin, e.g., "cat foo | gvim -", + a message box would pop up with "-stdin-" (when exiting). (Michael + Schaap) +Solution: Don't switch off termcap mode for versions that are GUI-only. + They use another terminal to read from stdin. +Files: src/main.c, src/fileio.c + +Patch 5.4m.7 +Problem: Unix: running configure with --enable-gtk-check, + --enable-motif-check, --enable-athena-check or --enable-gtktest + had the reverse effect. (Thomas Koehler) +Solution: Use $enable_gtk_check variable correctly in AC_ARG_ENABLE(). +Files: src/configure.in, src/configure + +Patch 5.4m.9 +Problem: Multi-byte: With wrapping lines, the cursor was sometimes 2 + characters to the left. Syntax highlighting was wrong when a + double-byte character was split for a wrapping line. When + 'showbreak' was on the splitting also didn't work. +Solution: Adjust getvcol() and win_line(). (Chong-Dae Park) +Files: src/charset.c, src/screen.c + +Patch 5.4m.11 +Problem: The ":call" command didn't check for illegal trailing characters. + (Stefan Roemer) +Solution: Add the check in do_call(). +Files: src/eval.c + +Patch 5.4m.13 +Problem: With the ":s" command: + 1. When performing a substitute command, the mouse would be + disabled and enabled for every substitution. + 2. The cursor position could be beyond the end of the line. + Calling line_breakcheck() could try to position the cursor, + which causes a crash in the Win32 GUI. + 3. When using ":s" in a ":g" command, the cursor was not put on + the first non-white in the line. + 4. There was a hit-enter prompt when confirming the substitution + and the replacement was a bit longer. +Solution: 1. Only disable/enable the mouse when asking for confirmation. + 2. Always put the cursor on the first character, it is going to be + moved to the first non-blank anyway. + Don't use the cursor position in gui_mch_draw_hollow_cursor(), + get the character from the screen buffer. + 3. Added global_need_beginline flag to call beginline() after ":g" + has finished all substitutions. + 4. Clear the need_wait_return flag after prompting the user. +Files: src/ex_cmds.c, src/gui_w32.c + +Patch 5.4m.14 +Problem: When doing "vim xxx", ":opt", ":only" and then ":e xxx" we end + up with two swapfiles for "xxx". That is caused by the ":bdel" + command which is executed when unloading the option-window. + Also, there was no check if closing a buffer made the new one + invalid, this could cause a crash. +Solution: When closing a buffer causes the current buffer to be deleted, + use the new buffer to replace it. Also detect that the new buffer + has become invalid as a side effect of closing the current one. + Make autocommand that calls ":bdel" in optwin.vim nested, so that + the buffer loading it triggers also executes autocommands. + Also added a test for this in test13. +Files: runtime/optwin.vim, src/buffer.c, src/ex_cmds.c, src/globals.h + src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4m.15 +Problem: When using a BufEnter autocommand to reload the syntax file, + conversion to HTML caused a crash. (Sung-Hyun Nam) +Solution: When using ":syntax clear" the current stack of syntax items was + not cleared. This will cause memory to be used that has already + been freed. Added call to invalidate_current_state() in + syntax_clear(). +Files: src/syntax.c + +Patch 5.4m.17 +Problem: When omitting a ')' in an expression it would not be seen as a + failure. + When detecting an error inside (), there would be an error message + for a missing ')' too. + When using ":echo 1+|echo 2" there was no error message. (Roemer) + When using ":exe 1+" there was no error message. + When using ":return 1+" there was no error message. +Solution: Fix do_echo(), do_execute() and do_return() to give an error + message when eval1() returns FAIL. + Fix eval6() to handle trailing ')' correctly and return FAIL when + it's missing. +Files: src/eval.c + +Patch 5.4m.18 +Problem: When using input() from inside an expression entered with + "CTRL-R =" on the command line, there could be a crash. And the + resulting command line was wrong. +Solution: Added getcmdline_prompt(), which handles recursive use of + getcmdline() correctly. It also sets the command line prompt. + Removed cmdline_prompt(). Also use getcmdline_prompt() for + getting the crypt key in get_crypt_key(). +Files: src/proto/ex_getln.pro, src/ex_getln.c, src/eval.c, src/misc2.c + +Patch 5.4m.21 +Problem: When starting up, the screen structures were first allocated at + the minimal size, then initializations were done with Rows + possibly different from screen_Rows. Caused a crash in rare + situations (GTK with XIM and fontset). +Solution: Call screenalloc() in main() only after calling ui_get_winsize(). + Also avoids a potential delay because of calling screenclear() + while "starting" is non-zero. +Files: src/main.c + +Patch 5.4m.22 +Problem: In the GUI it was possible that the screen was resized and the + screen structures re-allocated while redrawing the screen. This + could cause a crash (hard to reproduce). The call sequence goes + through update_screen() .. syntax_start() .. ui_breakcheck() .. + gui_resize_window() .. screenalloc(). +Solution: Set updating_screen while redrawing. If the window is resized + remember the new size and handle it only after redrawing is + finished. + This also fixes that resizing the screen while still redrawing + (slow syntax highlighting) would not work properly. + Also disable display_hint, it was never used. +Files: src/globals.h, src/gui.c, src/screen.c, src/proto/gui.pro + +Patch 5.4m.23 +Problem: When using expand("<cword>") when there was no word under the + cursor, would get an error message. Same for <cWORD> and <cfile>. +Solution: Don't give an error message, return an empty string. +Files: src/eval.c + +Patch 5.4m.24 +Problem: ":help \|" didn't find anything. It was translated to "/\\|". +Solution: Translate "\|" into "\\bar". First check the table for specific + translations before checking for "\x". +Files: src/ex_cmds.c + +Patch 5.4m.25 +Problem: Unix: When using command line completion on files that contain + ''', '"' or '|' the file name could not be used. + Adding this file name to the Buffers menu caused an error message. +Solution: Insert a backslash before these three characters. + Adjust Mungename() function to insert a backslash before '|'. +Files: src/ex_getln.c, runtime/menu.vim + +Patch 5.4m.26 +Problem: When using a mapping of two function keys, e.g., <F1><F1>, and + only the first char of the second key has been read, the mapping + would not be recognized. Noticed on some Unix systems with xterm. +Solution: Add 'K' flag to 'cpoptions' to wait for the whole key code, even + when halfway a mapping. +Files: src/option.h, src/term.c + +Patch 5.4m.27 +Problem: When making test33 without the lisp feature it hangs. Interrupting + the execution of the script then might cause a crash. +Solution: In inchar(), after closing a script, don't use buf[] anymore. + closescript() has freed typebuf[] and buf[] might be pointing + inside typebuf[]. + Avoid that test33 hangs when the lisp feature is missing. +Files: src/getchar.c src/testdir/test33.in + +"os2" was missing from the feature list. Useful for has("os2"). + +BeOS: +- Included patches from Richard Offer for BeOS R4.5. +- menu code didn't work right. Crashed in the Buffers menu. The window title + wasn't set. (Offer) + +Patch 5.4n.3 +Problem: C-indenting was wrong after " } else". The white space was not + skipped. Visible when 'cino' has "+10". +Solution: Skip white space before calling cin_iselse(). (Norbert Zeh) +Files: src/misc1.c + +Patch 5.4n.4 +Problem: When the 't' flag in 'cpoptions' is included, after a + ":nohlsearch" the search highlighting would not be enabled again + after a tag search. (Norbert Zeh) +Solution: When setting the new search pattern in jumpto_tag(), don't restore + no_hlsearch. +Files: src/tag.c + +Patch 5.4n.5 +Problem: When using ":normal" from a CursorHold autocommand Vim hangs. The + autocommand is executed down from vgetc(). Calling vgetc() + recursively to execute the command doesn't work then. +Solution: Forbid the use of ":normal" when vgetc_busy is set. Give an error + message when this happens. +Files: src/ex_docmd.c, runtime/doc/autocmd.txt + +Patch 5.4n.6 +Problem: "gv" could reselect a Visual that starts and/or ends past the end + of a line. (Robert Webb) +Solution: Check that the start and end of the Visual area are on a valid + character by calling adjust_cursor(). +Files: src/normal.c + +Patch 5.4n.8 +Problem: When a mark was on a non existing line (e.g., when the .viminfo + was edited), jumping to it caused ml_get errors. (Alexey + Marinichev). +Solution: Added check_cursor_lnum() in nv_gomark(). +Files: src/normal.c + +Patch 5.4n.9 +Problem: ":-2" moved the cursor to a negative line number. (Ralf Schandl) +Solution: Give an error message for a negative line number. +Files: src/ex_docmd.c + +Patch 5.4n.10 +Problem: Win32 GUI: At the hit-enter prompt, it was possible to scroll the + text. This erased the prompt and made Vim look like it is in + Normal mode, while it is actually still waiting for a <CR>. +Solution: Disallow scrolling at the hit-enter prompt for systems that use + on the fly scrolling. +Files: src/message.c + +Patch 5.4n.14 +Problem: Win32 GUI: When using ":winsize 80 46" and the height is more than + what fits on the screen, the window size was made smaller than + asked for (that's OK) and Vim crashed (that's not OK)> +Solution: Call check_winsize() from gui_set_winsize() to resize the windows. +Files: src/gui.c + +Patch 5.4n.16 +Problem: Win32 GUI: The <F10> key both selected the menu and was handled as + a key hit. +Solution: Apply 'winaltkeys' to <F10>, like it is used for Alt keys. +Files: src/gui_w32.c + +Patch 5.4n.17 +Problem: Local buffer variables were freed when the buffer is unloaded. + That's not logical, since options are not freed. (Ron Aaron) +Solution: Free local buffer variables only when deleting the buffer. +Files: src/buffer.c + +Patch 5.4n.19 +Problem: Doing ":e" (without argument) in an option-window causes trouble. + The mappings for <CR> and <Space> are not removed. When there is + another buffer loaded, the swap file for it gets mixed up. + (Steve Mueller) +Solution: Also remove the mappings at the BufUnload event, if they are still + present. + When re-editing the same file causes the current buffer to be + deleted, don't try editing it. + Also added a test for this situation. +Files: runtime/optwin.vim, src/ex_cmds.c, src/testdir/test13.in, + src/testdir/test13.ok + +Patch 5.4n.24 +Problem: BeOS: configure never enabled the GUI, because $with_x was "no". + Unix prototypes caused problems, because Display and Widget are + undefined. + Freeing fonts on exit caused a crash. +Solution: Only disable the GUI when $with_x is "no" and $BEOS is not "yes". + Add dummy defines for Display and Widget in proto.h. + Don't free the fonts in gui_exit() for BeOS. +Files: src/configure.in, src/configure, src/proto.h, src/gui.c. + + +The runtime/vim48x48.xpm icon didn't have a transparent background. (Schild) + +Some versions of the mingw32/egcs compiler didn't have WINBASEAPI defined. +(Aaron) + +VMS: +- mch_setenv() had two arguments instead of three. +- The system vimrc and gvimrc files were called ".vimrc" and ".gvimrc". + Removed the dot. +- call to RealWaitForChar() had one argument too many. (Campbell) +- WaitForChar() is static, removed the prototype from proto/os_vms.pro. +- Many file accesses failed, because Unix style file names were used. + Translate file names to VMS style by using vim_fopen(). +- Filtering didn't work, because the temporary file name was generated wrong. +- There was an extra newline every 9192 characters when writing a file. Work + around it by writing line by line. (Campbell) +- os_vms.c contained "# typedef int DESC". Should be "typedef int DESC;". + Only mattered for generating prototypes. +- Added file name translation to many places. Made easy by defining macros + mch_access(), mch_fopen(), mch_fstat(), mch_lstat() and mch_stat(). +- Set default for 'tagbsearch' to off, because binary tag searching apparently + doesn't work for VMS. +- make mch_get_host_name() work with /dec and /standard=vaxc. (Campbell) + + +Patch 5.4o.2 +Problem: Crash when using "gf" on "file.c://comment here". (Scott Graham) +Solution: Fix wrong use of pointers in get_file_name_in_path(). +Files: src/window.c + +Patch 5.4o.3 +Problem: The horizontal scrollbar was not sized correctly when 'number' is + set and 'wrap' not set. + Athena: Horizontal scrollbar wasn't updated when the cursor was + positioned with a mouse click just after dragging. +Solution: Subtract 8 from the size when 'number' set and 'wrap' not set. + Reset gui.dragged_sb when a mouse click is received. +Files: src/gui.c + +Patch 5.4o.4 +Problem: When running in an xterm and $WINDOWID is set to an illegal value, + Vim would exit with "Vim: Got X error". +Solution: When using the display which was opened for the xterm clipboard, + check if x11_window is valid by trying to obtain the window title. + Also add a check in setup_xterm_clip(), for when using X calls to + get the pointer position in an xterm. +Files: src/os_unix.c + +Patch 5.4o.5 +Problem: Motif version with Lesstif: When removing the menubar and then + using a menu shortcut key, Vim would crash. (raf) +Solution: Disable the menu mnemonics when the menu bar is removed. +Files: src/gui_motif.c + +Patch 5.4o.9 +Problem: The DOS install.exe program used the "move" program. That doesn't + work on Windows NT, where "move" is internal to cmd.exe. +Solution: Don't use an external program for moving the executables. Use C + functions to copy the file and delete the original. +Files: src/dosinst.c + +Motif and Athena obtained the status area height differently from GTK. Moved +status_area_enabled from global.h to gui_x11.c and call +xim_get_status_area_height() to get the status area height. + +Patch 5.4p.1 +Problem: When using auto-select, and the "gv" command is used, would not + always obtain ownership of the selection. Caused by the Visual + area still being the same, but ownership taken away by another + program. +Solution: Reset the clipboard Visual mode to force updating the selection. +Files: src/normal.c + +Patch 5.4p.2 +Problem: Motif and Athena with XIM: Typing 3-byte + <multibyte><multibyte><space> doesn't work correctly with Ami XIM. +Solution: Avoid using key_sym XK_VoidSymbol. (Nam) +Files: src/multbyte.c, src/gui_x11.c + +Patch 5.4p.4 +Problem: Win32 GUI: The scrollbar values were reduced for a file with more + than 32767 lines. But this info was kept global for all + scrollbars, causing a mixup between the windows. + Using the down arrow of a scrollbar in a large file didn't work. + Because of round-off errors there is no scroll at all. +Solution: Give each scrollbar its own scroll_shift field. When the down + arrow is used, scroll several lines. +Files: src/gui.h, src/gui_w32.c + +Patch 5.4p.5 +Problem: When changing buffers in a BufDelete autocommand, there could be + ml_line errors and/or a crash. (Schandl) Was caused by deleting + the current buffer. +Solution: When the buffer to be deleted unexpectedly becomes the current + buffer, don't delete it. + Also added a check for this in test13. +Files: src/buffer.c, src/testdir/test13.in, src/testdir/test13.ok + +Patch 5.4p.7 +Problem: Win32 GUI: When using 'mousemodel' set to "popup_setpos" and + clicking the right mouse button outside of the selected area, the + selected area wasn't removed until the popup menu has gone. + (Aaron) +Solution: Set the cursor and update the display before showing the popup + menu. +Files: src/normal.c + +Patch 5.4p.8 +Problem: The generated bugreport didn't contain information about + $VIMRUNTIME and whether runtime files actually exist. +Solution: Added a few checks to the bugreport script. +Files: runtime/bugreport.vim + +Patch 5.4p.9 +Problem: The windows install.exe created a wrong entry in the popup menu. + The "%1" was "". The full directory was included, even when the + executable had been moved elsewhere. (Ott) +Solution: Double the '%' to get one from printf. Only include the path to + gvim.exe when it wasn't moved and it's not in $PATH. +Files: src/dosinst.c + +Patch 5.4p.10 +Problem: Win32: On top of 5.4p.9: The "Edit with Vim" entry sometimes used + a short file name for a directory. +Solution: Change the "%1" to "%L" in the registry entry. +Files: src/dosinst.c + +Patch 5.4p.11 +Problem: Motif, Athena and GTK: When closing the GUI window when there is a + changed buffer, there was only an error message and Vim would not + exit. +Solution: Put up a dialog, like for ":confirm qa". Uses the code that was + already used for MS-Windows. +Files: src/gui.c, src/gui_w32.c + +Patch 5.4p.12 +Problem: Win32: Trying to expand a string that is longer than 256 + characters could cause a crash. (Steed) +Solution: For the buffer in win32_expandpath() don't use a fixed size array, + allocate it. +Files: src/os_win32.c + +MSDOS: Added "-Wall" to Makefile.djg compile flags. Function prototypes for +fname_case() and mch_update_cursor() were missing. "fd" was unused in +mf_sync(). "puiLocation" was unused in myputch(). "newcmd" unused in +mch_call_shell() for DJGPP version. + +============================================================================== +VERSION 5.5 *version-5.5* + +Version 5.5 is a bug-fix version of 5.4. + + +Changed *changed-5.5* +------- + +The DJGPP version is now compiled with "-O2" instead of "-O4" to reduce the +size of the executables. + +Moved the src/STYLE file to runtime/doc/develop.txt. Added the design goals +to it. + +'backspace' is now a string option. See patch 5.4.15. + + +Added *added-5.5* +----- + +Included Exuberant Ctags version 3.3. (Darren Hiebert) + +In runtime/mswin.vim, map CTRL-Q to CTRL-V, so that CTRL-Q can be used +everywhere to do what CTRL-V used to do. + +Support for decompression of bzip2 files in vimrc_example.vim. + +When a patch is included, the patch number is entered in a table in version.c. +This allows skipping a patch without breaking a next one. + +Support for mouse scroll wheel in X11. See patch 5.5a.14. + +line2byte() can be used to get the size of the buffer. See patch 5.4.35. + +The CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert mode are used to +insert a register literally. See patch 5.4.48. + +Uninstall program for MS-Windows. To be able to remove the registry entries +for "Edit with Vim". It is registered to be run from the "Add/Remove +programs" application. See patch 5.4.x7. + + +Fixed *fixed-5.5* +----- + +When using vimrc_example.vim: An error message when the cursor is on a line +higher than the number of lines in the compressed file. Move the autocommand +for jumping to the last known cursor position to after the decompressing +autocommands. + +":mkexrc" and ":mksession" wrote the current value of 'textmode'. That may +mark a file as modified, which causes problems. This is a buffer-specific +setting, it should not affect all files. + +"vim --version" wrote two empty lines. + +Unix: The alarm signal could kill Vim. It is generated by the Perl alarm() +function. Ignore SIGALRM. + +Win32 GUI: Toolbar still had the yellow bitmap for running a Vim script. + +BeOS: "tmo" must be bigtime_t, instead of double. (Seibert) + +Patch 5.4.1 +Problem: Test11 fails when $GZIP is set to "-v". (Matthew Jackson) +Solution: Set $GZIP to an empty string. +Files: src/testdir/test11.in + +Patch 5.4.2 +Problem: Typing <Esc> at the crypt key prompt caused a crash. (Kallingal) +Solution: Check for a NULL pointer returned from get_crypt_key(). +Files: src/fileio.c + +Patch 5.4.3 +Problem: Python: Trying to use the name of an unnamed buffer caused a + crash. (Daniel Burrows) +Solution: Check for b_fname being a NULL pointer. +Files: src/if_python.c + +Patch 5.4.4 +Problem: Win32: When compiled without toolbar, but the 'T' flag is in + 'guioptions', there would be an empty space for the toolbar. +Solution: Add two #ifdefs where checking for the 'T' flag. (Vince Negri) +Files: src/gui.c + +Patch 5.4.5 +Problem: Athena GUI: Using the Buffers.Refresh menu entry caused a crash. + Looks like any ":unmenu" command may cause trouble. +Solution: Disallow ":unmenu" in the Athena version. Disable the Buffers + menu, because the Refresh item would not work. +Files: src/menu.c, runtime/menu.vim + +Patch 5.4.6 +Problem: GTK GUI: Using ":gui" in the .gvimrc file caused an error. Only + happens when the GUI forks. +Solution: Don't fork in a recursive call of gui_start(). +Files: src/gui.c + +Patch 5.4.7 +Problem: Typing 'q' at the more prompt for the ATTENTION message causes the + file loading to be interrupted. (Will Day) +Solution: Reset got_int after showing the ATTENTION message. +Files: src/memline.c + +Patch 5.4.8 +Problem: Edit some file, ":he", ":opt": options from help window are shown, + but pressing space updates from the other window. (Phillipps) + Also: When there are changes in the option-window, ":q!" gives an + error message. +Solution: Before creating the option-window, go to a non-help window. + Use ":bdel!" to delete the buffer. +Files: runtime/optwin.vim + +Patch 5.4.9 + Just updates version.h. The real patch has been moved to 5.4.x1. + This patch is just to keep the version number correct. + +Patch 5.4.10 +Problem: GTK GUI: When $DISPLAY is invalid, "gvim -f" just exits. It + should run in the terminal. +Solution: Use gtk_init_check() instead of gtk_init(). +Files: src/gui_gtk_x11.c + +Patch 5.4.11 +Problem: When using the 'S' flag in 'cpoptions', 'tabstop' is not copied to + the next buffer for some commands, e.g., ":buffer". +Solution: When the BCO_NOHELP flag is given to buf_copy_options(), still + copy the options used by do_help() when neither the "from" or "to" + buffer is a help buffer. +Files: src/option.c + +Patch 5.4.12 +Problem: When using 'smartindent', there would be no extra indent if the + current line did not have any indent already. (Hanus Adler) +Solution: There was a wrongly placed "else", that previously matched with + the "if" that set trunc_line. Removed the "else" and added a + check for trunc_line to be false. +Files: src/misc1.c + +Patch 5.4.13 +Problem: New SGI C compilers need another option for optimisation. +Solution: Add a check in configure for "-OPT:Olimit". (Chin A Young) +Files: src/configure.in, src/configure + +Patch 5.4.14 +Problem: Motif GUI: When the popup menu is present, a tiny window appears + on the desktop for some users. +Solution: Set the menu widget ID for a popup menu to 0. (Thomas Koehler) +Files: src/gui_motif.c + +Patch 5.4.15 +Problem: Since 'backspace' set to 0 has been made Vi compatible, it is no + longer possible to only allow deleting autoindent. +Solution: Make 'backspace' a list of parts, to allow each kind of + backspacing separately. +Files: src/edit.c, src/option.c, src/option.h, src/proto/option.pro, + runtime/doc/option.txt, runtime/doc/insert.txt + +Patch 5.4.16 +Problem: Multibyte: Locale zh_TW.Big5 was not checked for in configure. +Solution: Add zh_TW.Big5 to configure check. (Chih-Tsun Huang) +Files: src/configure.in, src/configure + +Patch 5.4.17 +Problem: GUI: When started from inside gvim with ":!gvim", Vim would not + start. ":!gvim -f" works fine. +Solution: After forking, wait a moment in the parent process, to give the + child a chance to set its process group. +Files: src/gui.c + +Patch 5.4.18 +Problem: Python: The clear_history() function also exists in a library. +Solution: Rename clear_history() to clear_hist(). +Files: src/ex_getln.c, src/eval.c, src/proto/ex_getln.pro + +Patch 5.4.19 +Problem: In a terminal with 25 lines, there is a more prompt after the + ATTENTION message. When hitting 'q' here the dialog prompt + doesn't appear and file loading is interrupted. (Will Day) +Solution: Don't allow quitting the printing of a message for the dialog + prompt. Added the msg_noquit_more flag for this. +Files: src/message.c + +Patch 5.4.20 +Problem: GTK: When starting gvim, would send escape sequences to the + terminal to switch the cursor off and on. +Solution: Don't call msg_start() if the GUI is expected to start. +Files: src/main.c + +Patch 5.4.21 +Problem: Motif: Toplevel menu ordering was wrong when using tear-off items. +Solution: Don't add one to the index for a toplevel menu. +Files: src/gui_motif.c + +Patch 5.4.22 +Problem: In Insert mode, <C-Left>, <S-Left>, <C-Right> and <S-Right> didn't + update the column used for vertical movement. +Solution: Set curwin->w_set_curswant for those commands. +Files: src/edit.c + +Patch 5.4.23 +Problem: When a Visual selection is lost to another program, and then the + same text is Visually selected again, the clipboard ownership + wasn't regained. +Solution: Set clipboard.vmode to NUL to force regaining the clipboard. +Files: src/normal.c + +Patch 5.4.24 +Problem: Encryption: When using ":r file" while 'key' has already entered, + the 'key' option would be messed up. When writing the file it + would be encrypted with an unknown key and lost! (Brad Despres) +Solution: Don't free cryptkey when it is equal to the 'key' option. +Files: src/fileio.c + +Patch 5.4.25 +Problem: When 'cindent' is set, but 'autoindent' isn't, comments are not + properly indented when starting a new line. (Mitterand) +Solution: When there is a comment leader for the new line, but 'autoindent' + isn't set, do C-indenting. +Files: src/misc1.c + +Patch 5.4.26 +Problem: Multi-byte: a multibyte character is never recognized in a file + name, causing a backslash before it to be removed on Windows. +Solution: Assume that a leading-byte character is a file name character in + vim_isfilec(). +Files: src/charset.c + +Patch 5.4.27 +Problem: Entries in the PopUp[nvic] menus were added for several modes, but + only deleted for the mode they were used for. This resulted in + the entry remaining in the PopUp menu. + When removing a PopUp[nvic] menu, the name had been truncated, + could result in greying-out the whole PopUp menu. +Solution: Remove entries for all modes from the PopUp[nvic] menus. Remove + the PopUp[nvic] menu entries first, before the name is changed. +Files: src/menu.c + +Patch 5.4.28 +Problem: When using a BufWritePre autocommand to change 'fileformat', the + new value would not be used for writing the file. +Solution: Check 'fileformat' after executing the autocommands instead of + before. +Files: src/fileio.c + +Patch 5.4.29 +Problem: Athena GUI: When removing the 'g' flag from 'guioptions', using a + menu can result in a crash. +Solution: Always grey-out menus for Athena, don't hide them. +Files: src/menu.c + +Patch 5.4.30 +Problem: BeOS: Suspending Vim with CTRL-Z didn't work (killed Vim). The + first character typed after ":sh" goes to Vim, instead of the + started shell. +Solution: Don't suspend Vim, start a new shell. Kill the async read thread + when starting a new shell. It will be restarted later. (Will Day) +Files: src/os_unix.c, src/ui.c + +Patch 5.4.31 +Problem: GUI: When 'mousefocus' is set, moving the mouse over where a + window boundary was, causes a hit-enter prompt to be finished. + (Jeff Walker) +Solution: Don't use 'mousefocus' at the hit-enter prompt. Also ignore it + for the more prompt and a few other situations. When an operator + is pending, abort it first. +Files: src/gui.c + +Patch 5.4.32 +Problem: Unix: $LDFLAGS was not passed to configure. +Solution: Pass $LDFLAGS to configure just like $CFLAGS. (Jon Miner) +Files: src/Makefile + +Patch 5.4.33 +Problem: Unix: After expanding an environment variable with the shell, the + next expansion would also use the shell, even though it is not + needed. +Solution: Reset "recursive" before returning from gen_expand_wildcards(). +Files: src/misc1.c + +Patch 5.4.34 (also see 5.4.x5) +Problem: When editing a file, and the file name is relative to a directory + above the current directory, the file name was made absolute. + (Gregory Margo) +Solution: Add an argument to shorten_fnames() which indicates if all file + names should be shortened, or only absolute names. In main() only + use shorten_fnames() to shorten absolute names. +Files: src/ex_docmd.c, src/fileio.c, src/main.c, src/proto/fileio.pro + +Patch 5.4.35 +Problem: There is no function to get the current file size. +Solution: Allow using line2byte() with the number of lines in the file plus + one. This returns the offset of the line past the end of the + file, which is the file size plus one. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.4.36 +Problem: Comparing strings while ignoring case didn't work correctly for + some machines. (Mide Steed) +Solution: vim_stricmp() and vim_strnicmp() only returned 0 or 1. Changed + them to return -1 when the first argument is smaller. +Files: src/misc2.c + +Patch 5.4.37 (also see 5.4.40 and 5.4.43) +Problem: Long strings from the viminfo file are truncated. +Solution: When writing a long string to the viminfo file, first write a line + with the length, then the string itself in a second line. +Files: src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/mark.c, src/ops.c, + src/search.c, src/proto/ex_cmds.pro, runtime/syntax/viminfo.vim + +Patch 5.4.38 +Problem: In the option-window, ":set go&" resulted in 'go' being handled + like a boolean option. + Mappings for <Space> and <CR> were overruled by the option-window. +Solution: When the value of an option isn't 0 or 1, don't handle it like a + boolean option. + Save and restore mappings for <Space> and <CR> when entering and + leaving the option-window. +Files: runtime/optwin.vim + +Patch 5.4.39 +Problem: When setting a hidden option, spaces before the equal sign were + not skipped and cause an error message. E.g., ":set csprg =cmd". +Solution: When skipping over a hidden option, check for a following "=val" + and skip it too. +Files: src/option.c + +Patch 5.4.40 (depends on 5.4.37) +Problem: Compiler error for "atol(p + 1)". (Axel Kielhorn) +Solution: Add a typecast: "atol((char *)p + 1)". +Files: src/ex_cmds.c + +Patch 5.4.41 +Problem: Some commands that were not included would give an error message, + even when after "if 0". +Solution: Don't give an error message for an unsupported command when not + executing the command. +Files: src/ex_docmd.c + +Patch 5.4.42 +Problem: ":w" would also cause a truncated message to appear in the message + history. +Solution: Don't put a kept message in the message history when it starts + with "<". +Files: src/message.c + +Patch 5.4.43 (depends on 5.4.37) +Problem: Mixing long lines with multiple lines in a register causes errors + when writing the viminfo file. (Robinson) +Solution: When reading the viminfo file to skip register contents, skip + lines that start with "<". +Files: src/ops.c + +Patch 5.4.44 +Problem: When 'whichwrap' includes '~', a "~" command that goes on to the + next line cannot be properly undone. (Zellner) +Solution: Save each line for undo in n_swapchar(). +Files: src/normal.c + +Patch 5.4.45 (also see 5.4.x8) +Problem: When expand("$ASDF") fails, there is an error message. +Solution: Remove the global expand_interactively. Pass a flag down to skip + the error message. + Also: expand("$ASDF") returns an empty string if $ASDF isn't set. + Previously it returned "$ASDF" when 'shell' is "sh". + Also: system() doesn't print an error when the command returns an + error code. +Files: many + +Patch 5.4.46 +Problem: Backspacing did not always use 'softtabstop' after hitting <CR>, + inserting a register, moving the cursor, etc. +Solution: Reset inserted_space much more often in edit(). +Files: src/edit.c + +Patch 5.4.47 +Problem: When executing BufWritePre or BufWritePost autocommands for a + hidden buffer, the cursor could be moved to a non-existing + position. (Vince Negri) +Solution: Save and restore the cursor and topline for the current window + when it is going to be used to execute autocommands for a hidden + buffer. Use an existing window for the buffer when it's not + hidden. +Files: src/fileio.c + +Patch 5.4.48 +Problem: A paste with the mouse in Insert mode was not repeated exactly the + same with ".". For example, when 'autoindent' is set and pasting + text with leading indent. (Perry) +Solution: Add the CTRL-R CTRL-O r and CTRL-R CTRL-P r commands in Insert + mode, which insert the contents of a register literally. +Files: src/edit.c, src/normal.c, runtime/doc/insert.txt + +Patch 5.4.49 +Problem: When pasting text with [ <MiddleMouse>, the cursor could end up + after the last character of the line. +Solution: Correct the cursor position for the change in indent. +Files: src/ops.c + +Patch 5.4.x1 (note: Replaces patch 5.4.9) +Problem: Win32 GUI: menu hints were never used, because WANT_MENU is not + defined until vim.h is included. +Solution: Move the #ifdef WANT_MENU from where MENUHINTS is defined to where + it is used. +Files: src/gui_w32.c + +Patch 5.4.x2 +Problem: BeOS: When pasting text, one character was moved to the end. +Solution: Re-enable the BeOS code in fill_input_buf(), and fix timing out + with acquire_sem_etc(). (Will Day) +Files: src/os_beos.c, src/ui.c + +Patch 5.4.x3 +Problem: Win32 GUI: When dropping a directory on a running gvim it crashes. +Solution: Avoid using a NULL file name. Also display a message to indicate + that the current directory was changed. +Files: src/gui_w32.c + +Patch 5.4.x4 +Problem: Win32 GUI: Removing an item from the popup menu doesn't work. +Solution: Don't remove the item from the menubar, but from the parent popup + menu. +Files: src/gui_w32.c + +Patch 5.4.x5 (addition to 5.4.34) +Files: src/gui_w32.c + +Patch 5.4.x6 +Problem: Win32: Expanding (dir)name starting with a dot doesn't work. + (McCormack) Only when there is a path before it. +Solution: Fix the check, done before expansion, if the file name pattern + starts with a dot. +Files: src/os_win32.c + +Patch 5.4.x7 +Problem: Win32 GUI: Removing "Edit with Vim" from registry is difficult. +Solution: Add uninstall program to remove the registry keys. It is installed + in the "Add/Remove programs" list for ease of use. + Also: don't set $VIM when the executable is with the runtime files. + Also: Add a text file with a step-by-step description of how to + uninstall Vim for DOS and Windows. +Files: src/uninstal.c, src/dosinst.c, src/Makefile.w32, uninstal.txt + +Patch 5.4.x8 (addition to 5.4.45) +Files: many + +Patch 5.4.x9 +Problem: Win32 GUI: After executing an external command, focus is not + always regained (when using focus-follows-mouse). +Solution: Add SetFocus() in mch_system(). (Mike Steed) +Files: src/os_win32.c + + +Patch 5.5a.1 +Problem: ":let @* = @:" did not work. The text was not put on the + I clipboard. (Fisher) +Solution: Own the clipboard and put the text on it. +Files: src/ops.c + +Patch 5.5a.2 +Problem: append() did not mark the buffer modified. Marks below the + new line were not adjusted. +Solution: Fix the f_append() function. +Files: src/eval.c + +Patch 5.5a.3 +Problem: Editing compressed ".gz" files doesn't work on non-Unix systems, + because there is no "mv" command. +Solution: Add the rename() function and use it instead of ":!mv". + Also: Disable the automatic jump to the last position, because it + changes the jumplist. +Files: src/eval.c, runtime/doc/eval.txt, runtime/vimrc_example.vim + +Patch 5.5a.4 +Problem: When using whole-line completion in insert mode while the cursor + is in the indent, get "out of memory" error. (Stekrt) +Solution: Don't allocate a negative amount of memory in ins_complete(). +Files: src/edit.c + +Patch 5.5a.5 +Problem: Win32: The 'path' option can hold only up to 256 characters, + because _MAX_PATH is 256. (Robert Webb) +Solution: Use a fixed path length of 1024. +Files: src/os_win32.h + +Patch 5.5a.6 +Problem: Compiling with gcc on Win32, using the Unix Makefile, didn't work. +Solution: Add $(SUFFIX) to all places where an executable is used. Also + pass it to ctags. (Reynolds) +Files: src/Makefile + +Patch 5.5a.7 +Problem: When using "cat | vim -" in an xterm, the xterm version reply + would end up in the file. +Solution: Read the file from stdin before switching the terminal to RAW + mode. Should also avoid problems with programs that use a + specific terminal setting. + Also: when using the GUI, print "Reading from stdin..." in the GUI + window, to give a hint why it doesn't do anything. +Files: src/main.c, src/fileio.c + +Patch 5.5a.8 +Problem: On multi-threaded Solaris, suspending doesn't work. +Solution: Call pause() when the SIGCONT signal was not received after + sending the SIGTSTP signal. (Nagano) +Files: src/os_unix.c + +Patch 5.5a.9 +Problem: 'winaltkeys' could be set to an empty argument, which is illegal. +Solution: Give an error message when doing ":set winaltkeys=". +Files: src/option.c + +Patch 5.5a.10 +Problem: Win32 console: Using ALTGR on a German keyboard to produce "}" + doesn't work, because the 8th bit is set when ALT is pressed. +Solution: Don't set the 8th bit when ALT and CTRL are used. (Leipert) +Files: src/os_win32.c + +Patch 5.5a.11 +Problem: Tcl: Configure always uses tclsh8.0. + Also: Loading a library doesn't work. +Solution: Add "--with-tclsh" configure argument to allow specifying another + name for the tcl shell. + Call Tcl_Init() in tclinit() to make loading libraries work. + (Johannes Zellner) +Files: src/configure.in, src/configure, src/if_tcl.c + +Patch 5.5a.12 +Problem: The "user_commands" feature is called "user-commands". +Solution: Replace "user-commands" with "user_commands". (Kim Sung-bom) + Keep "user-commands" for the has() function, to remain backwards + compatible with 5.4. +Files: src/eval.c, src/version.c + +Patch 5.5a.13 +Problem: OS/2: When $HOME is not defined, "C:/" is used for the viminfo + file. That is very wrong when OS/2 is on another partition. +Solution: Use $VIM for the viminfo file when it is defined, like for MSDOS. + Also: Makefile.os2 didn't depend on os_unix.h. +Files: src/os_unix.h, src/Makefile.os2 + +Patch 5.5a.14 +Problem: Athena, Motif and GTK: The Mouse scroll wheel doesn't work. +Solution: Interpret a click of the wheel as a key press of the <MouseDown> + or <MouseUp> keys. Default behavior is to scroll three lines, or + a full page when Shift is used. +Files: src/edit.c, src/ex_getln.c, src/gui.c, src/gui_gtk_x11.c, + src/gui_x11.c, src/keymap.h, src/message.c, src/misc1.c, + src/misc2.c, src/normal.c, src/proto/normal.pro, src/vim.h, + runtime/doc/scroll.txt + +Patch 5.5a.15 +Problem: Using CTRL-A in Insert mode doesn't work correctly when the insert + started with the <Insert> key. (Andreas Rohrschneider) +Solution: Replace <Insert> with "i" before setting up the redo buffer. +Files: src/normal.c + +Patch 5.5a.16 +Problem: VMS: GUI does not compile and run. +Solution: Various fixes. (Zoltan Arpadffy) + Moved functions from os_unix.c to ui.c, so that VMS can use them + too: open_app_context(), x11_setup_atoms() and clip_x11* functions. + Made xterm_dpy global, it's now used by ui.c and os_unix.c. + Use gethostname() always, sys_hostname doesn't exist. +Files: src/globals.h, src/gui_x11.c, src/os_vms.mms, src/os_unix.c, + src/os_vms.c, src/ui.c, src/proto/os_unix.pro, src/proto/ui.pro + +Renamed AdjustCursorForMultiByteCharacter() to AdjustCursorForMultiByteChar() +to avoid symbol length limit of 31 characters. (Steve P. Wall) + +Patch 5.5b.1 +Problem: SASC complains about dead assignments and implicit type casts. +Solution: Removed the dead assignments. Added explicit type casts. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds.c, + src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, + src/menu.c, src/misc1.c, src/normal.c, src/ops.c, src/quickfix.c, + src/screen.c + +Patch 5.5b.2 +Problem: When using "CTRL-O O" in Insert mode, hit <Esc> and then "o" in + another line truncates that line. (Devin Weaver) +Solution: When using a command that starts Insert mode from CTRL-O, reset + "restart_edit" first. This avoids that edit() is called with a + mix of starting a new edit command and restarting a previous one. +Files: src/normal.c + +============================================================================== +VERSION 5.6 *version-5.6* + +Version 5.6 is a bug-fix version of 5.5. + + +Changed *changed-5.6* +------- + +Small changes to OleVim files. (Christian Schaller) + +Inserted "/**/" between patch numbers in src/version.c. This allows for one +line of context, which some versions of patch need. + +Reordered the Syntax menu to avoid long submenus. Removed keyboard shortcuts +for alphabetical items to avoid a clash with fixed items. + + +Added *added-5.6* +----- + +Included Exuberant Ctags version 3.4. (Darren Hiebert) + +OpenWithVim in Python. (Christian Schaller) + +Win32 GUI: gvimext.dll, for the context menu "Edit with Vim" entry. Avoids +the reported problems with the MS Office taskbar. Now it's a Shell Extension. +(Tianmiao Hu) + +New syntax files: +abel Abel (John Cook) +aml Arc Macro Language (Nikki Knuit) +apachestyle Apache-style config file (Christian Hammers) +cf Cold Fusion (Jeff Lanzarotta) +ctrlh files with CTRL-H sequences (Bram Moolenaar) +cupl CUPL (John Cook) +cuplsim CUPL simulation (John Cook) +erlang Erlang (Kresimir Marzic) +gedcom Gedcom (Paul Johnson) +icon Icon (Wendell Turner) +ist MakeIndex style (Peter Meszaros) +jsp Java Server Pages (Rafael Garcia-Suarez) +rcslog Rcslog (Joe Karthauser) +remind Remind (Davide Alberani) +sqr Structured Query Report Writer (Paul Moore) +tads TADS (Amir Karger) +texinfo Texinfo (Sandor Kopanyi) +xpm2 X Pixmap v2 (Steve Wall) + +The 'C' flag in 'cpoptions' can be used to switch off concatenation for +sourced lines. See patch 5.5.013 below. |line-continuation| + +"excludenl" argument for the ":syntax" command. See patch 5.5.032 below. +|:syn-excludenl| + +Implemented |z+| and |z^| commands. See patch 5.5.050 below. + +Vim logo in Corel Draw format. Can be scaled to any resolution. + + +Fixed *fixed-5.6* +----- + +Using this mapping in Select mode, terminated completion: +":vnoremap <C-N> <Esc>a<C-N>" (Benji Fisher) +Ignore K_SELECT in ins_compl_prep(). + +VMS (Zoltan Arpadffy, David Elins): +- ioctl() in pty.c caused trouble, #ifndef VMS added. +- Cut & paste mismatch corrected. +- Popup menu line crash corrected. (Patch 5.5.047) +- Motif directories during open and save as corrected. +- Handle full file names with version numbers. (Patch 5.5.046) +- Directory handling (CD command etc.) +- Corrected file name conversion VMS to Unix and v.v. +- Recovery was not working. +- Terminal and signal handling was outdated compared to os_unix.c. +- Improved os_vms.txt. + +Configure used fprintf() instead of printf() to check for __DATE__ and +__TIME__. (John Card II) + +BeOS: Adjust computing the char_height and char_ascent. Round them up +separately, avoids redrawing artifacts. (Mike Steed) + +Fix a few multibyte problems in menu_name_skip(), set_reg_ic(), searchc() and +findmatchlimit(). (Taro Muraoka) + +GTK GUI: +- With GTK 1.2.5 and later the scrollbars were not redrawn correctly. +- Adjusted the gtk_form_draw() function. +- SNiFF connection didn't work. +- 'mousefocus' was not working. (Dalecki) +- Some keys were not working with modifiers: Shift-Tab, Ctrl-Space and CTRL-@. + + +Patch 5.5.001 +Problem: Configure in the top directory did not pass on an argument with a + space correctly. For example "./configure --previs="/My home". + (Stephane Chazelas) +Solution: Use '"$@"' instead of '$*' to pass on the arguments. +Files: configure + +Patch 5.5.002 +Problem: Compilation error for using "fds[] & POLLIN". (Jeff Walker) +Solution: Use "fds[].revents & POLLIN". +Files: src/os_unix.c + +Patch 5.5.003 +Problem: The autoconf check for sizeof(int) is wrong on machines where + sizeof(size_t) != sizeof(int). +Solution: Use our own configure check. Also fixes the warning for + cross-compiling. +Files: src/configure.in, src/configure + +Patch 5.5.004 +Problem: On Unix it's not possible to interrupt ":sleep 100". +Solution: Switch terminal to cooked mode while asleep, to allow a SIGINT to + wake us up. But switch off echo, added TMODE_SLEEP. +Files: src/term.h, src/os_unix.c + +Patch 5.5.005 +Problem: When using <f-args> with a user command, an empty argument to the + command resulted in one empty string, while no string was + expected. +Solution: Catch an empty argument and pass no argument to the function. + (Paul Moore) +Files: src/ex_docmd.c + +Patch 5.5.006 +Problem: Python: When platform-dependent files are in another directory + than the platform-independent files it doesn't work. +Solution: Also check the executable directory, and add it to CFLAGS. (Tessa + Lau) +Files: src/configure.in, src/configure + +Patch 5.5.007 (extra) +Problem: Win32 OLE: Occasional crash when exiting while still being used + via OLE. +Solution: Move OleUninitialize() to before deleting the application object. + (Vince Negri) +Files: src/if_ole.cpp + +Patch 5.5.008 +Problem: 10000@@ takes a long time and cannot be interrupted. +Solution: Check for CTRL-C typed while in the loop to push the register. +Files: src/normal.c + +Patch 5.5.009 +Problem: Recent Sequent machines don't link with "-linet". (Kurtis Rader) +Solution: Remove configure check for Sequent. +Files: src/configure.in, src/configure + +Patch 5.5.010 +Problem: Ctags freed a memory block twice when exiting. When out of + memory, a misleading error message was given. +Solution: Update to ctags 3.3.2. Also fixes a few other problems. (Darren + Hiebert) +Files: src/ctags/* + +Patch 5.5.011 +Problem: After "CTRL-V s", the cursor jumps back to the start, while all + other operators leave the cursor on the last changed character. + (Xiangjiang Ma) +Solution: Position cursor on last changed character, if possible. +Files: src/ops.c + +Patch 5.5.012 +Problem: Using CTRL-] in Visual mode doesn't work when the text includes a + space (just where it's useful). (Stefan Bittner) +Solution: Don't escape special characters in a tag name with a backslash. +Files: src/normal.c + +Patch 5.5.013 +Problem: The ":append" and ":insert" commands allow using a leading + backslash in a line. The ":source" command concatenates those + lines. (Heinlein) +Solution: Add the 'C' flag in 'cpoptions' to switch off concatenation. +Files: src/ex_docmd.c, src/option.h, runtime/doc/options.txt, + runtime/filetype.vim, runtime/scripts.vim + +Patch 5.5.014 +Problem: When executing a register with ":@", the ":append" command would + get text lines with a ':' prepended. (Heinlein) +Solution: Remove the ':' characters. +Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h + +Patch 5.5.015 +Problem: When using ":g/pat/p", it's hard to see where the output starts, + the ":g" command is overwritten. Vi keeps the ":g" command. +Solution: Keep the ":g" command, but allow overwriting it with the report + for the number of changes. +Files: src/ex_cmds.c + +Patch 5.5.016 (extra) +Problem: Win32: Using regedit to install Vim in the popup menu requires the + user to confirm this in a dialog. +Solution: Use "regedit /s" to avoid the dialog +Files: src/dosinst.c + +Patch 5.5.017 +Problem: If an error occurs when closing the current window, Vim could get + stuck in the error handling. +Solution: Don't set curwin to NULL when closing the current window. +Files: src/window.c + +Patch 5.5.018 +Problem: Absolute paths in shell scripts do not always work. +Solution: Use /usr/bin/env to find out the path. +Files: runtime/doc/vim2html.pl, runtime/tools/efm_filter.pl, + runtime/tools/shtags.pl + +Patch 5.5.019 +Problem: A function call in 'statusline' stops using ":q" twice from + exiting, when the last argument hasn't been edited. +Solution: Don't decrement quitmore when executing a function. (Madsen) +Files: src/ex_docmd.c + +Patch 5.5.020 +Problem: When the output of CTRL-D completion in the commandline goes all + the way to the last column, there is an empty line. +Solution: Don't add a newline when the cursor wrapped already. (Madsen) +Files: src/ex_getln.c + +Patch 5.5.021 +Problem: When checking if a file name in the tags file is relative, + environment variables were not expanded. +Solution: Expand the file name before checking if it is relative. (Madsen) +Files: src/tag.c + +Patch 5.5.022 +Problem: When setting or resetting 'paste' the ruler wasn't updated. +Solution: Update the status lines when 'ruler' changes because of 'paste'. +Files: src/option.c + +Patch 5.5.023 +Problem: When editing a new file and autocommands change the cursor + position, the cursor was moved back to the first non-white, unless + 'startofline' was reset. +Solution: Keep the new column, just like the line number. +Files: src/ex_cmds.c + +Patch 5.5.024 (extra) +Problem: Win32 GUI: When using confirm() to put up a dialog without a + default button, the dialog would not have keyboard focus. + (Krishna) +Solution: Always set focus to the dialog window. Only set focus to a button + when a default one is specified. +Files: src/gui_w32.c + +Patch 5.5.025 +Problem: When using "keepend" in a syntax region, a contained match that + includes the end-of-line could still force that region to + continue, if there is another contained match in between. +Solution: Check the keepend_level in check_state_ends(). +Files: src/syntax.c + +Patch 5.5.026 +Problem: When starting Vim in a white-on-black xterm, with 'bg' set to + "dark", and then starting the GUI with ":gui", setting 'bg' to + "light" in the gvimrc, the highlighting isn't set. (Tsjokwing) +Solution: Set the highlighting when 'bg' is changed in the gvimrc, even + though full_screen isn't set. +Files: src/option.c + +Patch 5.5.027 +Problem: Unix: os_unix.c doesn't compile when XTERM_CLIP is used but + WANT_TITLE isn't. (Barnum) +Solution: Move a few functions that are used by the X11 title and clipboard + and put another "#if" around it. +Files: src/os_unix.c + +Patch 5.5.028 (extra) +Problem: Win32 GUI: When a file is dropped on Win32 gvim while at the ":" + prompt, the file is edited but the command line is actually still + there, the cursor goes back to command line on the next command. + (Krishna) +Solution: When dropping a file or directory on gvim while at the ":" prompt, + insert the name of the file/directory. Allows using the + file/directory name for any Ex command. +Files: src/gui_w32.c + +Patch 5.5.029 +Problem: "das" at the end of the file didn't delete the last character of + the sentence. +Solution: When there is no character after the sentence, make the operation + inclusive in current_sent(). +Files: src/search.c + +Patch 5.5.030 +Problem: Unix: in os_unix.c, "term_str" is used, which is also defined in + vim.h as a macro. (wuxin) +Solution: Renamed "term_str" to "buf" in do_xterm_trace(). +Files: src/os_unix.c + +Patch 5.5.031 (extra) +Problem: Win32 GUI: When exiting Windows, gvim will leave swap files behind + and will be killed ungracefully. (Krishna) +Solution: Catch the WM_QUERYENDSESSION and WM_ENDSESSION messages and try to + exit gracefully. Allow the user to cancel the shutdown if there + is a changed buffer. +Files: src/gui_w32.c + +Patch 5.5.032 +Problem: Patch 5.5.025 wasn't right. And C highlighting was still not + working correctly for a #define. +Solution: Added "excludenl" argument to ":syntax", to be able not to extend + a containing item when there is a match with the end-of-line. +Files: src/syntax.c, runtime/doc/syntax.txt, runtime/syntax/c.vim + +Patch 5.5.033 +Problem: When reading from stdin, a long line in viminfo would mess up the + file message. readfile() uses IObuff for keep_msg, which could be + overwritten by anyone. +Solution: Copy the message from IObuff to msg_buf and set keep_msg to that. + Also change vim_fgets() to not use IObuff any longer. +Files: src/fileio.c + +Patch 5.5.034 +Problem: "gvim -rv" caused a crash. Using 't_Co' before it's set. +Solution: Don't try to initialize the highlighting before it has been + initialized from main(). +Files: src/syntax.c + +Patch 5.5.035 +Problem: GTK with XIM: Resizing with status area was messy, and + ":set guioptions+=b" didn't work. +Solution: Make status area a separate widget, but not a separate window. + (Chi-Deok Hwang) +Files: src/gui_gtk_f.c, src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.5.036 +Problem: The GZIP_read() function in $VIMRUNTIME/vimrc_example.vim to + uncompress a file did not do detection for 'fileformat'. This is + because the filtering is done with 'binary' set. +Solution: Split the filtering into separate write, filter and read commands. +Files: runtime/vimrc_example.vim + +Patch 5.5.037 +Problem: The "U" command didn't mark the buffer as changed. (McCormack) +Solution: Set the 'modified' flag when using "U". +Files: src/undo.c + +Patch 5.5.038 +Problem: When typing a long ":" command, so that the screen scrolls up, + causes the hit-enter prompt, even though the user just typed + return to execute the command. +Solution: Reset need_wait_return if (part of) the command was typed in + getcmdline(). +Files: src/ex_getln.c + +Patch 5.5.039 +Problem: When using a custom status line, "%a" (file # of #) reports the + index of the current window for all windows. +Solution: Pass a window pointer to append_arg_number(), and pass the window + being updated from build_stl_str_hl(). (Stephen P. Wall) +Files: src/buffer.c, src/screen.c, src/proto/buffer.pro + +Patch 5.5.040 +Problem: Multi-byte: When there is some error in xim_real_init(), it can + close XIM and return. After this there can be a segv. +Solution: Test "xic" for being non-NULL, don't set "xim" to NULL. Also try + to find more matches for supported styles. (Sung-Hyun Nam) +Files: src/multbyte.c + +Patch 5.5.041 +Problem: X11 GUI: CTRL-_ requires the SHIFT key only on some machines. +Solution: Translate CTRL-- to CTRL-_. (Robert Webb) +Files: src/gui_x11.c + +Patch 5.5.042 +Problem: X11 GUI: keys with ALT were assumed to be used for the menu, even + when the menu has been disabled by removing 'm' from 'guioptions'. +Solution: Ignore keys with ALT only when gui.menu_is_active is set. (Raf) +Files: src/gui_x11.c + +Patch 5.5.043 +Problem: GTK: Handling of fontset fonts was not right when 'guifontset' + contains exactly 14 times '-'. +Solution: Avoid setting fonts when working with a fontset. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c + +Patch 5.5.044 +Problem: pltags.pl contains an absolute path "/usr/local/bin/perl". That + might not work everywhere. +Solution: Use "/usr/bin/env perl" instead. +Files: runtime/tools/pltags.pl + +Patch 5.5.045 +Problem: Using "this_session" variable does not work, requires preceding it + with "v:". Default filename for ":mksession" isn't mentioned + in the docs. (Fisher) +Solution: Support using "this_session" to be backwards compatible. +Files: src/eval.c, runtime/doc/options.txt + +Patch 5.5.046 (extra) +Problem: VMS: problems with path and filename. +Solution: Truncate file name at last ';', etc. (Zoltan Arpadffy) +Files: src/buffer.c, src/fileio.c, src/gui_motif.c, src/os_vms.c, + src/proto/os_vms.pro + +Patch 5.5.047 +Problem: VMS: Crash when using the popup menu +Solution: Turn the #define MENU_MODE_CHARS into an array. (Arpadffy) +Files: src/structs.h, src/menu.c + +Patch 5.5.048 +Problem: HP-UX 11: Compiling doesn't work, because both string.h and + strings.h are included. (Squassabia) +Solution: The configure test for including both string.h and strings.h + must include <Xm/Xm.h> first, because it causes problems. +Files: src/configure.in, src/configure, src/config.h.in + +Patch 5.5.049 +Problem: Unix: When installing Vim, the protection bits of files might be + influenced by the umask. +Solution: Add $(FILEMOD) to Makefile. (Shetye) +Files: src/Makefile + +Patch 5.5.050 +Problem: "z+" and "z^" commands are missing. +Solution: Implemented "z+" and "z^". +Files: src/normal.c, runtime/doc/scroll.txt, runtime/doc/index.txt + +Patch 5.5.051 +Problem: Several Unix systems have a problem with the optimization limits + check in configure. +Solution: Removed the configure check, let the user add it manually in + Makefile or the environment. +Files: src/configure.in, src/configure, src/Makefile + +Patch 5.5.052 +Problem: Crash when using a cursor key at the ATTENTION prompt. (Alberani) +Solution: Ignore special keys at the console dialog. Also ignore characters + > 255 for other uses of tolower() and toupper(). +Files: src/menu.c, src/message.c, src/misc2.c + +Patch 5.5.053 +Problem: Indenting is wrong after a function when 'cino' has "fs". Another + problem when 'cino' has "{s". +Solution: Put line after closing "}" of a function at the left margin. + Apply ind_open_extra in the right way after a '{'. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 5.5.054 +Problem: Unix: ":e #" doesn't work if the alternate file name contains a + space or backslash. (Hudacek) +Solution: When replacing "#", "%" or other items that stand for a file name, + prepend a backslash before special characters. +Files: src/ex_docmd.c + +Patch 5.5.055 +Problem: Using "<C-V>$r-" in blockwise Visual mode replaces one character + beyond the end of the line. (Zivkov) +Solution: Only replace existing characters. +Files: src/ops.c + +Patch 5.5.056 +Problem: After "z20<CR>" messages were printed at the old command line + position once. (Veselinovic) +Solution: Set msg_row and msg_col when changing cmdline_row in + win_setheight(). +Files: src/window.c + +Patch 5.5.057 +Problem: After "S<Esc>" it should be possible to restore the line with "U". + (Veselinovic) +Solution: Don't call u_clearline() in op_delete() when changing only one + line. +Files: src/ops.c + +Patch 5.5.058 +Problem: Using a long search pattern and then "n" causes the hit-enter + prompt. (Krishna) +Solution: Truncate the echoed pattern, like other messages. Moved code for + truncating from msg_attr() to msg_strtrunc(). +Files: src/message.c, src/proto/message.pro, src/search.c + +Patch 5.5.059 +Problem: GTK GUI: When $term is invalid, using "gvim" gives an error + message, even though $term isn't really used. (Robbins) +Solution: When the GUI is about to start, skip the error messages for a + wrong $term. +Files: src/term.c + +Patch 5.5.060 (extra) +Problem: Dos 32 bit: When a directory in 'backupdir' doesn't exist, ":w" + causes the file to be renamed to "axlqwqhy.ba~". (Matzdorf) +Solution: The code to work around a LFN bug in Windows 95 doesn't handle a + non-existing target name correctly. When renaming fails, make + sure the file has its original name. Also do this for the Win32 + version, although it's unlikely that it runs into this problem. +Files: src/os_msdos.c, src/os_win32.c + +Patch 5.5.061 +Problem: When using "\:" in a modeline, the backslash is included in the + option value. (Mohsin) +Solution: Remove one backslash before the ':' in a modeline. +Files: src/buffer.c, runtime/doc/options.txt + +Patch 5.5.062 (extra) +Problem: Win32 console: Temp files are created in the root of the current + drive, which may be read-only. (Peterson) +Solution: Use the same mechanism of the GUI version: Use $TMP, $TEMP or the + current directory. Cleaned up vim_tempname() a bit. +Files: src/fileio.c, src/os_win32.h, runtime/doc/os_dos.txt + +Patch 5.5.063 +Problem: When using whole-line completion in Insert mode, 'cindent' is + applied, even after changing the indent of the line. +Solution: Don't reindent the completed line after inserting/removing indent. + (Robert Webb) +Files: src/edit.c + +Patch 5.5.064 +Problem: has("sniff") doesn't work correctly. +Solution: Return 1 when Vim was compiled with the +sniff feature. (Pruemmer) +Files: src/eval.c + +Patch 5.5.065 +Problem: When dropping a file on Vim, the 'shellslash' option is not + effective. (Krishna) +Solution: Fix the slashes in the dropped file names according to + 'shellslash'. +Files: src/ex_docmd.c, runtime/doc/options.txt + +Patch 5.5.066 +Problem: For systems with backslash in file name: Setting a file name + option to a value starting with "\\machine" removed a backslash. +Solution: Keep the double backslash for "\\machine", but do change + "\\\\machine" to "\\machine" for backwards compatibility. +Files: src/option.c, runtime/doc/options.txt + +Patch 5.5.067 +Problem: With 'hlsearch' set, the pattern "\>" doesn't highlight the first + match in a line. (Benji Fisher) +Solution: Fix highlighting an empty match. Also highlight the first + character in an empty line for "$". +Files: src/screen.c + +Patch 5.5.068 +Problem: Crash when a ":while" is used with an argument that has an error. + (Sylvain Viart) +Solution: Was using an uninitialized index in the cs_line[] array. The + crash only happened when the index was far off. Made sure the + uninitialized index isn't used. +Files: src/ex_docmd.c + +Patch 5.5.069 +Problem: Shifting lines in blockwise Visual mode didn't set the 'modified' + flag. +Solution: Do set the 'modified' flag. +Files: src/ops.c + +Patch 5.5.070 +Problem: When editing a new file, creating that file outside of Vim, then + editing it again, ":w" still warns for overwriting an existing + file. (Nam) +Solution: The BF_NEW flag in the "b_flags" field wasn't cleared properly. +Files: src/buffer.c, src/fileio.c + +Patch 5.5.071 +Problem: Using a matchgroup in a ":syn region", which is the same syntax + group as the region, didn't stop a contained item from matching in + the start pattern. +Solution: Also push an item on the stack when the syntax ID of the + matchgroup is the same as the syntax ID of the region. +Files: src/syntax.c + +Patch 5.5.072 (extra) +Problem: Dos 32 bit: When setting 'columns' to a too large value, Vim may + crash, and the DOS console too. +Solution: Check that the value of 'columns' isn't larger than the number of + columns that the BIOS reports. +Files: src/os_msdos.c, src/proto/os_msdos.pro, src/option.c + +Patch 5.5.073 (extra) +Problem: Win 32 GUI: The Find and Find/Replace dialogs didn't show the + "match case" checkbox. The Find/Replace dialog didn't handle the + "match whole word" checkbox. +Solution: Support the "match case" and "match whole word" checkboxes. +Files: src/gui_w32.c + +Patch 5.6a.001 +Problem: Using <C-End> with a count doesn't work like it does with "G". + (Benji Fisher) +Solution: Accept a count for <C-End> and <C-Home>. +Files: src/normal.c + +Patch 5.6a.002 +Problem: The script for conversion to HTML was an older version. +Solution: Add support for running 2html.vim on a color terminal. +Files: runtime/syntax/2html.vim + +Patch 5.6a.003 +Problem: Defining a function inside a function didn't give an error + message. A missing ":endfunction" doesn't give an error message. +Solution: Allow defining a function inside a function. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 5.6a.004 +Problem: A missing ":endwhile" or ":endif" doesn't give an error message. + (Johannes Zellner) +Solution: Check for missing ":endwhile" and ":endif" in sourced files. + Add missing ":endif" in file selection macros. +Files: src/ex_docmd.c, runtime/macros/file_select.vim + +Patch 5.6a.005 +Problem: 'hlsearch' was not listed alphabetically. The value of 'toolbar' + was changed when 'compatible' is set. +Solution: Moved entry of 'hlsearch' in options[] table down. + Don't reset 'toolbar' option to the default value when + 'compatible' is set. +Files: src/option.c + +Patch 5.6a.006 +Problem: Using a backwards range inside ":if 0" gave an error message. +Solution: Don't complain about a range when it is not going to be used. + (Stefan Roemer) +Files: src/ex_docmd.c + +Patch 5.6a.007 +Problem: ":let" didn't show internal Vim variables. (Ron Aaron) +Solution: Do show ":v" variables for ":let" and ":let v:name". +Files: src/eval.c + +Patch 5.6a.008 +Problem: Selecting a syntax from the Syntax menu gives an error message. +Solution: Replace "else if" in SetSyn() with "elseif". (Ronald Schild) +Files: runtime/menu.vim + +Patch 5.6a.009 +Problem: When compiling with +extra_search but without +syntax, there is a + compilation error in screen.c. (Axel Kielhorn) +Solution: Adjust the #ifdef for declaring and initializing "line" in + win_line(). Also solve compilation problem when +statusline is + used without +eval. Another one when +cmdline_compl is used + without +eval. +Files: src/screen.c, src/misc2.c + +Patch 5.6a.010 +Problem: In a function, ":startinsert!" does not append to the end of the + line if a ":normal" command was used to move the cursor. (Fisher) +Solution: Reset "w_set_curswant" to avoid that w_curswant is changed again. +Files: src/ex_docmd.c + +Patch 5.6a.011 (depends on 5.6a.004) +Problem: A missing ":endif" or ":endwhile" in a function doesn't give an + error message. +Solution: Give that error message. +Files: src/ex_docmd.c + +Patch 5.6a.012 (depends on 5.6a.008) +Problem: Some Syntax menu entries caused a hit-enter prompt. +Solution: Call a function to make the command shorter. Also rename a few + functions to avoid name clashes. +Files: runtime/menu.vim + +Patch 5.6a.013 +Problem: Command line completion works different when another completion + was done earlier. (Johannes Zellner) +Solution: Reset wim_index when starting a new completion. +Files: src/ex_getln.c + +Patch 5.6a.014 +Problem: Various warning messages when compiling and running lint with + different combinations of features. +Solution: Fix the warning messages. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_gtk_x11.c, + src/option.c, src/screen.c, src/search.c, src/syntax.c, + src/feature.h, src/globals.h + +Patch 5.6a.015 +Problem: The vimtutor command doesn't always know the value of $VIMRUNTIME. +Solution: Let Vim expand $VIMRUNTIME, instead of the shell. +Files: src/vimtutor + +Patch 5.6a.016 (extra) +Problem: Mac: Window size is restricted when starting. Cannot drag the + window all over the desktop. +Solution: Get real screen size instead of assuming 640x400. Do not use a + fixed number for the drag limits. (Axel Kielhorn) +Files: src/gui_mac.c + +Patch 5.6a.017 +Problem: The "Paste" entry in popup menu for Visual, Insert and Cmdline + mode is in the wrong position. (Stol) +Solution: Add priority numbers for all Paste menu entries. +Files: runtime/menu.vim + +Patch 5.6a.018 +Problem: GTK GUI: submenu priority doesn't work. + Help dialog could be destroyed too soon. + When closing a dialog window (e.g. the "ATTENTION" one), Vim would + just hang. + When GTK theme is changed, Vim doesn't adjust to the new colors. + Argument for ":promptfind" isn't used. +Solution: Fixed the mentioned problems. + Made the dialogs look&feel nicer. + Moved functions to avoid the need for a forward declaration. + Fixed reentrancy of the file browser dialog. + Added drag&drop support for GNOME. + Init the text for the Find/replace dialog from the last used + search string. Set "match whole word" toggle button correctly. + Made repeat rate for drag outside of window depend on the + distance from the window. (Marcin Dalecki) + Made the drag in Visual mode actually work. + Removed recursiveness protection from gui_mch_get_rgb(), it might + cause more trouble than it solves. +Files: src/ex_docmd.c, src/gui_gtk.c, src/gui_gtk_x11.c, src/ui.c, + src/proto/ui.pro, src/misc2.c + +Patch 5.6a.019 +Problem: When trying to recover through NFS, which uses a large block size, + Vim might think the swap file is empty, because mf_blocknr_max is + zero. (Scott McDermott) +Solution: When computing the number of blocks of the file in mf_open(), + round up instead of down. +Files: src/memfile.c + +Patch 5.6a.020 +Problem: GUI GTK: Could not set display for gvim. +Solution: Add "-display" and "--display" arguments. (Marcin Dalecki) +Files: src/gui_gtk_x11.c + +Patch 5.6a.021 +Problem: Recovering still may not work when the block size of the device + where the swap file is located is larger than 4096. +Solution: Read block 0 with the minimal block size. +Files: src/memline.c, src/memfile.c, src/vim.h + +Patch 5.6a.022 (extra) +Problem: Win32 GUI: When an error in the vimrc causes a dialog to pop up + (e.g., for an existing swap file), Vim crashes. (David Elins) +Solution: Before showing a dialog, open the main window. +Files: src/gui_w32.c + +Patch 5.6a.023 +Problem: Using expand("%:gs??/?") causes a crash. (Ron Aaron) +Solution: Check for running into the end of the string in do_string_sub(). +Files: src/eval.c + +Patch 5.6a.024 +Problem: Using an autocommand to delete a buffer when leaving it can cause + a crash when jumping to a tag. (Franz Gorkotte) +Solution: In do_tag(), store tagstacklen before jumping to another buffer. + Check tagstackidx after jumping to another buffer. + Add extra check in win_split() if tagname isn't NULL. +Files: src/tag.c, src/window.c + +Patch 5.6a.025 (extra) +Problem: Win32 GUI: The tables for toupper() and tolower() are initialized + too late. (Mike Steed) +Solution: Move the initialization to win32_init() and call it from main(). +Files: src/main.c, src/os_w32.c, src/proto/os_w32.pro + +Patch 5.6a.026 +Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) +Solution: Skip a second wait() call if waitpid() already detected that the + child has exited. +Files: src/os_unix.c + +Patch 5.6a.027 (extra) +Problem: Win32 GUI: The "Edit with Vim" popup menu entry causes problems + for the Office toolbar. +Solution: Use a shell extension dll. (Tianmiao Hu) + Added it to the install and uninstal programs, replaces the old + "Edit with Vim" menu registry entries. +Files: src/dosinst.c, src/uninstal.c, gvimext/*, runtime/doc/gui_w32.txt + +Patch 5.6a.028 (extra) +Problem: Win32 GUI: Dialogs and tear-off menus can't handle multibyte + characters. +Solution: Adjust nCopyAnsiToWideChar() to handle multibyte characters + correctly. +Files: src/gui_w32.c + +============================================================================== +VERSION 5.7 *version-5.7* + +Version 5.7 is a bug-fix version of 5.6. + +Changed *changed-5.7* +------- + +Renamed src/INSTALL.mac to INSTALL_mac.txt to avoid it being recognized with a +wrong file type. Also renamed src/INSTALL.amiga to INSTALL_ami.txt. + + +Added *added-5.7* +----- + +New syntax files: +stp Stored Procedures (Jeff Lanzarotta) +snnsnet, snnspat, snnsres SNNS (Davide Alberani) +mel MEL (Robert Minsk) +ruby Ruby (Mirko Nasato) +tli TealInfo (Kurt W. Andrews) +ora Oracle config file (Sandor Kopanyi) +abaqus Abaqus (Carl Osterwisch) +jproperties Java Properties (Simon Baldwin) +apache Apache config (Allan Kelly) +csp CSP (Jan Bredereke) +samba Samba config (Rafael Garcia-Suarez) +kscript KDE script (Thomas Capricelli) +hb Hyper Builder (Alejandro Forero Cuervo) +fortran Fortran (rewritten) (Ajit J. Thakkar) +sml SML (Fabrizio Zeno Cornelli) +cvs CVS commit (Matt Dunford) +aspperl ASP Perl (Aaron Hope) +bc BC calculator (Vladimir Scholtz) +latte Latte (Nick Moffitt) +wml WML (Gerfried Fuchs) + +Included Exuberant ctags 3.5.1. (Darren Hiebert) + +"display" and "fold" arguments for syntax items. For future extension, they +are ignored now. + +strftime() function for the Macintosh. + +macros/explorer.vim: A file browser script (M A Aziz Ahmed) + + +Fixed *fixed-5.7* +----- + +The 16 bit MS-DOS version is now compiled with Bcc 3.1 instead of 4.0. The +executable is smaller. + +When a "make test" failed, the output file was lost. Rename it to +test99.failed to be able to see what went wrong. + +After sourcing bugreport.vim, it's not clear that bugreport.txt has been +written in the current directory. Edit bugreport.txt to avoid that. + +Adding IME support when using Makefile.w32 didn't work. (Taro Muraoka) + +Win32 console: Mouse drags were passed on even when the mouse didn't move. + +Perl interface: In Buffers(), type of argument to SvPV() was int, should be +STRLEN. (Tony Leneis) + +Problem with prototype for index() on AIX 4.3.0. Added check for _AIX43 in +os_unix.h. (Jake Hamby) + +Mappings in mswin.vim could break when some commands are mapped. Add "nore" +to most mappings to avoid re-mapping. + +modify_fname() made a copy of a file name for ":p" when it already was a full +path name, which is a bit slow. + +Win32 with Borland C++ 5.5: Pass the path to the compiler on to xxd and ctags, +to avoid depending on $PATH. Fixed "make clean". + +Many fixes to Macintosh specific parts: (mostly by Dany StAmant) +- Only one Help menu. +- No more crash when removing a menu item. +- Support as External Editor for Codewarrior (still some little glitches). +- Popup menu support. +- Fixed crash when pasting after application switch. +- Color from rgb.txt properly displayed. +- 'isprint' default includes all chars above '~'. (Axel Kielhorn) +- mac_expandpath() was leaking memory. +- Add digraphs table. (Axel Kielhorn) +- Multi-byte support: (Kenichi Asai) + Switch keyscript when going in/out of Insert mode. + Draw multibyte character correctly. + Don't use mblen() but highest bit of char to detect multibyte char. + Display value of multibyte in statusline (also for other systems). +- mouse button was not initialized properly to MOUSE_LEFT when + USE_CTRLCLICKMENU not defined. +- With Japanese SJIS characters: Make "w", "b", and "e" work + properly. (Kenichi Asai) +- Replaced old CodeWarrior file os_mac.CW9.hqx with os_mac.cw5.sit.hqx. + +Fixes for VMS: (Zoltan Arpadffy) (also see patch 5.6.045 below) +- Added Makefile_vms.mms and vimrc.vms to src/testdir to be able to run the + tests. +- Various fixes. +- Set 'undolevels' to 1000 by default. +- Made mch_settitle() equivalent to the one in os_unix.c. + +RiscOS: A few prototypes for os_riscos.c were outdated. Generate prototypes +automatically. + + +Previously released patches: + +Patch 5.6.001 +Problem: When using "set bs=0 si cin", Inserting "#<BS>" or "}<BS>" which + reduces the indent doesn't delete the "#" or "}". (Lorton) +Solution: Adjust ai_col in ins_try_si(). +Files: src/edit.c + +Patch 5.6.002 +Problem: When using the vim.vim syntax file, a comment with all uppercase + characters causes a hang. +Solution: Adjust pattern for vimCommentTitle (Charles Campbell) +Files: runtime/syntax/vim.vim + +Patch 5.6.003 +Problem: GTK GUI: Loading a user defined toolbar bitmap gives a warning + about the colormap. Probably because the window has not been + opened yet. +Solution: Use gdk_pixmap_colormap_create_from_xpm() to convert the xpm file. + (Keith Radebaugh) +Files: src/gui_gtk.c + +Patch 5.6.004 (extra) +Problem: Win32 GUI with IME: When setting 'guifont' to "*", the font + requester appears twice. +Solution: In gui_mch_init_font() don't call get_logfont() but copy + norm_logfont from fh. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 5.6.005 +Problem: When 'winminheight' is zero, CTRL-W - with a big number causes a + crash. (David Kotchan) +Solution: Check for negative window height in win_setheight(). +Files: src/window.c + +Patch 5.6.006 +Problem: GTK GUI: Bold font cannot always be used. Memory is freed too + early in gui_mch_init_font(). +Solution: Move call to g_free() to after where sdup is used. (Artem Hodyush) +Files: src/gui_gtk_x11.c + +Patch 5.6.007 (extra) +Problem: Win32 IME: Font is not changed when screen font is changed. And + IME composition window does not trace the cursor. +Solution: Initialize IME font. When cursor is moved, set IME composition + window with ImeSetCompositionWindow(). Add call to + ImmReleaseContext() in several places. (Taro Muraoka) +Files: src/gui.c, src/gui_w32.c, src/proto/gui_w32.pro + +Patch 5.6.008 (extra) +Problem: Win32: When two files exist with the same name but different case + (through NFS or Samba), fixing the file name case could cause the + wrong one to be edited. +Solution: Prefer a perfect match above a match while ignoring case in + fname_case(). (Flemming Madsen) +Files: src/os_win32.c + +Patch 5.6.009 (extra) +Problem: Win32 GUI: Garbage in Windows Explorer help line when selecting + "Edit with Vim" popup menu entry. +Solution: Only return the help line when called with the GCS_HELPTEXT flag. + (Tianmiao Hu) +Files: GvimExt/gvimext.cpp + +Patch 5.6.010 +Problem: A file name which contains a TAB was not read correctly from the + viminfo file and the ":ls" listing was not aligned properly. +Solution: Parse the buffer list lines in the viminfo file from the end + backwards. Count a Tab for two characters to align the ":ls" list. +Files: src/buffer.c + +Patch 5.6.011 +Problem: When 'columns' is huge (using a tiny font) and 'statusline' is + used, Vim can crash. +Solution: Limit maxlen to MAXPATHL in win_redr_custom(). (John Mullin) +Files: src/screen.c + +Patch 5.6.012 +Problem: When using "zsh" for /bin/sh, toolcheck may hang until "exit" is + typed. (Kuratczyk) +Solution: Add "-c exit" when checking for the shell version. +Files: src/toolcheck + +Patch 5.6.013 +Problem: Multibyte char in tooltip is broken. +Solution: Consider multibyte char in replace_termcodes(). (Taro Muraoka) +Files: src/term.c + +Patch 5.6.014 +Problem: When cursor is at the end of line and the character under cursor + is a multibyte character, "yl" doesn't yank 1 multibyte-char. + (Takuhiro Nishioka) +Solution: Recognize a multibyte-char at end-of-line correctly in oneright(). + (Taro Muraoka) + Also: make "+quickfix" in ":version" output appear alphabetically. +Files: src/edit.c + +Patch 5.6.015 +Problem: New xterm delete key sends <Esc>[3~ by default. +Solution: Added <kDel> and <kIns> to make the set of keypad keys complete. +Files: src/edit.c, src/ex_getln.c, src/keymap.h, src/misc1.c, + src/misc2.c, src/normal.c, src/os_unix.c, src/term.c + +Patch 5.6.016 +Problem: When deleting a search string from history from inside a mapping, + another entry is deleted too. (Benji Fisher) +Solution: Reset last_maptick when deleting the last entry of the search + history. Also: Increment maptick when starting a mapping from + typed characters to avoid a just added search string being + overwritten or removed from history. +Files: src/ex_getln.c, src/getchar.c + +Patch 5.6.017 +Problem: ":s/e/\^M/" should replace an "e" with a CTRL-M, not split the + line. (Calder) +Solution: Replace the backslash with a CTRL-V internally. (Stephen P. Wall) +Files: src/ex_cmds.c + +Patch 5.6.018 +Problem: ":help [:digit:]" takes a long time to jump to the wrong place. +Solution: Insert a backslash to avoid the special meaning of '[]'. +Files: src/ex_cmds.c + +Patch 5.6.019 +Problem: "snd.c", "snd.java", etc. were recognized as "mail" filetype. +Solution: Make pattern for mail filetype more strict. +Files: runtime/filetype.vim + +Patch 5.6.020 (extra) +Problem: The DJGPP version eats processor time (Walter Briscoe). +Solution: Call __dpmi_yield() in the busy-wait loop. +Files: src/os_msdos.c + +Patch 5.6.021 +Problem: When 'selection' is "exclusive", a double mouse click in Insert + mode doesn't select last char in line. (Lutz) +Solution: Allow leaving the cursor on the NUL past the line in this case. +Files: src/edit.c + +Patch 5.6.022 +Problem: ":e \~<Tab>" expands to ":e ~\$ceelen", which doesn't work. +Solution: Re-insert the backslash before the '~'. +Files: src/ex_getln.c + +Patch 5.6.023 (extra) +Problem: Various warnings for the Ming compiler. +Solution: Changes to avoid the warnings. (Bill McCarthy) +Files: src/ex_cmds.c, src/gui_w32.c, src/os_w32exe.c, src/os_win32.c, + src/syntax.c, src/vim.rc + +Patch 5.6.024 (extra) +Problem: Win32 console: Entering CTRL-_ requires the shift key. (Kotchan) +Solution: Specifically catch keycode 0xBD, like the GUI. +Files: src/os_win32.c + +Patch 5.6.025 +Problem: GTK GUI: Starting the GUI could be interrupted by a SIGWINCH. + (Nils Lohner) +Solution: Repeat the read() call to get the gui_in_use value when + interrupted by a signal. +Files: src/gui.c + +Patch 5.6.026 (extra) +Problem: Win32 GUI: Toolbar bitmaps are searched for in + $VIMRUNTIME/bitmaps, while GTK looks in $VIM/bitmaps. (Keith + Radebaugh) +Solution: Use $VIM/bitmaps for both, because these are not part of the + distribution but defined by the user. +Files: src/gui_w32.c, runtime/doc/gui.txt + +Patch 5.6.027 +Problem: TCL: Crash when using a Tcl script (reported for Win32). +Solution: Call Tcl_FindExecutable() in main(). (Brent Fulgham) +Files: src/main.c + +Patch 5.6.028 +Problem: Xterm patch level 126 sends codes for mouse scroll wheel. + Fully works with xterm patch level 131. +Solution: Recognize the codes for button 4 (0x60) and button 5 (0x61). +Files: src/term.c + +Patch 5.6.029 +Problem: GTK GUI: Shortcut keys cannot be used for a dialog. (Johannes + Zellner) +Solution: Add support for shortcut keys. (Marcin Dalecki) +Files: src/gui_gtk.c + +Patch 5.6.030 +Problem: When closing a window and 'ea' is set, Vim can crash. (Yasuhiro + Matsumoto) +Solution: Set "curbuf" to a valid value in win_close(). +Files: src/window.c + +Patch 5.6.031 +Problem: Multi-byte: When a double-byte character ends in CSI, Vim waits + for another character to be typed. +Solution: Recognize the CSI as the second byte of a character and don't wait + for another one. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 5.6.032 +Problem: Functions with an argument that is a line number don't all accept + ".", "$", etc. (Ralf Arens) +Solution: Add get_art_lnum() and use it for setline(), line2byte() and + synID(). +Files: src/eval.c + +Patch 5.6.033 +Problem: Multi-byte: "f " sometimes skips to the second space. (Sung-Hyun + Nam) +Solution: Change logic in searchc() to skip trailing byte of a double-byte + character. + Also: Ask for second byte when searching for double-byte + character. (Park Chong-Dae) +Files: src/search.c + +Patch 5.6.034 (extra) +Problem: Compiling with Borland C++ 5.5 fails on tolower() and toupper(). +Solution: Use TO_LOWER() and TO_UPPER() instead. Also adjust the Makefile + to make using bcc 5.5 easier. +Files: src/edit.c, src/ex_docmd.c, src/misc1.c, src/Makefile.bor + +Patch 5.6.035 +Problem: Listing the"+comments" feature in the ":version" output depended + on the wrong ID. (Stephen P. Wall) +Solution: Change "CRYPTV" to "COMMENTS". +Files: src/version.c + +Patch 5.6.036 +Problem: GTK GUI: Copy/paste text doesn't work between gvim and Eterm. +Solution: Support TEXT and COMPOUND_TEXT selection targets. (ChiDeok Hwang) +Files: src/gui_gtk_x11.c + +Patch 5.6.037 +Problem: Multi-byte: Can't use "f" command with multibyte character in GUI. +Solution: Enable XIM in Normal mode for the GUI. (Sung-Hyun Nam) +Files: src/gui_gtk_x11.c, src/multbyte.c + +Patch 5.6.038 +Problem: Multi-clicks in GUI are interpreted as a mouse wheel click. When + 'ttymouse' is "xterm" a mouse click is interpreted as a mouse + wheel click. +Solution: Don't recognize the mouse wheel in check_termcode() in the GUI. + Use 0x43 for a mouse drag in do_xterm_trace(), not 0x63. +Files: src/term.c, src/os_unix.c + +Patch 5.6.039 +Problem: Motif GUI under KDE: When trying to logout, Vim hangs up the + system. (Hermann Rochholz) +Solution: When handling the WM_SAVE_YOURSELF event, set the WM_COMMAND + property of the window to let the session manager know we finished + saving ourselves. +Files: src/gui_x11.c + +Patch 5.6.040 +Problem: When using ":s" command, matching the regexp is done twice. +Solution: After copying the matched line, adjust the pointers instead of + finding the match again. (Loic Grenie) Added vim_regnewptr(). +Files: src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro + +Patch 5.6.041 +Problem: GUI: Athena, Motif and GTK don't give more than 10 dialog buttons. +Solution: Remove the limit on the number of buttons. + Also support the 'v' flag in 'guioptions'. + For GTK: Center the buttons. +Files: src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c + +Patch 5.6.042 +Problem: When doing "vim -u vimrc" and vimrc contains ":q", the cursor in + the terminal can remain off. +Solution: Call cursor_on() in mch_windexit(). +Files: src/os_unix.c + +Patch 5.6.043 (extra) +Problem: Win32 GUI: When selecting guifont with the dialog, 'guifont' + doesn't include the bold or italic attributes. +Solution: Append ":i" and/or ":b" to 'guifont' in gui_mch_init_font(). +Files: src/gui_w32.c + +Patch 5.6.044 (extra) +Problem: MS-DOS and Windows: The line that dosinst.exe appends to + autoexec.bat to set PATH is wrong when Vim is in a directory with + an embedded space. +Solution: Use double quotes for the value when there is an embedded space. +Files: src/dosinst.c + +Patch 5.6.045 (extra) (fixed version) +Problem: VMS: Various small problems. +Solution: Many small changes. (Zoltan Arpadffy) + File name modifier ":h" keeps the path separator. + File name modifier ":e" also removes version. + Compile with MAX_FEAT by default. + When checking for autocommands ignore version in file name. + Be aware of file names being case insensitive. + Added vt320 builtin termcap. + Be prepared for an empty default_vim_dir. +Files: runtime/gvimrc_example.vim, runtime/vimrc_example.vim, + runtime/doc/os_vms.txt, src/eval.c, src/feature.h, src/fileio.c, + src/gui_motif.c, src/gui_vms_conf.h, src/main.c, src/memline.c, + src/misc1.c, src/option.c, src/os_vms_conf.h, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/tag.c, src/term.c, src/version.c + +Patch 5.6.046 +Problem: Systems with backslash in file name: With 'shellslash' set, "vim + */*.c" only uses a slash for the first file name. (Har'El) +Solution: Fix slashes in file name arguments after reading the vimrc file. +Files: src/option.c + +Patch 5.6.047 +Problem: $CPPFLAGS is not passed on to ctags configure. +Solution: Add it. (Walter Briscoe) +Files: src/config.mk.in, src/Makefile + +Patch 5.6.048 +Problem: CTRL-R in Command-line mode is documented to insert text as typed, + but inserts text literally. +Solution: Make CTRL-R insert text as typed, use CTRL-R CTRL-R to insert + literally. This is consistent with Insert mode. But characters + that end Command-line mode are inserted literally. +Files: runtime/doc/index.txt, runtime/doc/cmdline.txt, src/ex_getln.c, + src/ops.c, src/proto/ops.pro + +Patch 5.6.049 +Problem: Documentation for [!] after ":ijump" is wrong way around. (Benji + Fisher) +Solution: Fix the documentation. Also improve the code to check for a match + after a /* */ comment. +Files: runtime/doc/tagsearch.txt, src/search.c + +Patch 5.6.050 +Problem: Replacing is wrong when replacing a single-byte char with + double-byte char or the other way around. +Solution: Shift the text after the character when it is replaced. + (Yasuhiro Matsumoto) +Files: src/normal.c, src/misc1.c + +Patch 5.6.051 +Problem: ":tprev" and ":tnext" don't give an error message when trying to + go before the first or beyond the last tag. (Robert Webb) +Solution: Added error messages. Also: Delay a second when a file-read + message is going to overwrite an error message, otherwise it won't + be seen. +Files: src/fileio.c, src/tag.c + +Patch 5.6.052 +Problem: Multi-byte: When an Ex command has a '|' or '"' as a second byte, + it terminates the command. +Solution: Skip second byte of multibyte char when checking for '|' and '"'. + (Asai Kenichi) +Files: src/ex_docmd.c + +Patch 5.6.053 +Problem: CTRL-] doesn't work on a tag that contains a '|'. (Cesar Crusius) +Solution: Escape '|', '"' and '\' in tag names when using CTRL-] and also + for command-line completion. +Files: src/ex_getln.c, src/normal.c + +Patch 5.6.054 +Problem: When using ":e" and ":e #" the cursor is put in the first column + when 'startofline' is set. (Cordell) +Solution: Use the last known column when 'startofline' is set. + Also, use ECMD_LAST more often to simplify the code. +Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/buffer.pro + +Patch 5.6.055 +Problem: When 'statusline' only contains a text without "%" and doesn't fit + in the window, Vim crashes. (Ron Aaron) +Solution: Don't use the pointer for the first item if there is no item. +Files: src/screen.c + +Patch 5.6.056 (extra) +Problem: MS-DOS: F11 and F12 don't work when 'bioskey' is set. +Solution: Use enhanced keyboard functions. (Vince Negri) + Detect presence of enhanced keyboard and set bioskey_read and + bioskey_ready. +Files: src/os_msdos.c + +Patch 5.6.057 (extra) +Problem: Win32 GUI: Multi-byte characters are wrong in dialogs and tear-off + menus. +Solution: Use system font instead of a fixed font. (Matsumoto, Muraoka) +Files: src/gui_w32.c + +Patch 5.6.058 +Problem: When the 'a' flag is not in 'guioptions', non-Windows systems + copy Visually selected text to the clipboard/selection on a yank + or delete command anyway. On Windows it isn't done even when the + 'a' flag is included. +Solution: Respect the 'a' flag in 'guioptions' on all systems. +Files: src/normal.c + +Patch 5.6.059 (extra) +Problem: When moving the cursor over italic text and the characters spill + over to the cell on the right, that spill-over is deleted. + Noticed in the Win32 GUI, can happen on other systems too. +Solution: Redraw italic text starting from a blank, like this is already + done for bold text. (Vince Negri) +Files: src/gui.c, src/gui.h, src/gui_w32.c + +Patch 5.6.060 +Problem: Some bold characters spill over to the cell on the left, that + spill-over can remain sometimes. +Solution: Redraw a character when the next character was bold and needs + redrawing. (Robert Webb) +Files: src/screen.c + +Patch 5.6.061 +Problem: When xterm sends 8-bit controls, recognizing the version response + doesn't work. + When using CSI instead of <Esc>[ for the termcap color codes, + using 16 colors doesn't work. (Neil Bird) +Solution: Also accept CSI in place of <Esc>[ for the version string. + Also check for CSI when handling colors 8-15 in term_color(). + Use CSI for builtin xterm termcap entries when 'term' contains + "8bit". +Files: runtime/doc/term.txt, src/ex_cmds.c, src/option.c, src/term.c, + src/os_unix.c, src/proto/option.pro, src/proto/term.pro + +Patch 5.6.062 +Problem: The documentation says that setting 'smartindent' doesn't have an + effect when 'cindent' is set, but it does make a difference for + lines starting with "#". (Neil Bird) +Solution: Really ignore 'smartindent' when 'cindent' is set. +Files: src/misc1.c, src/ops.c + +Patch 5.6.063 +Problem: Using "I" in Visual-block mode doesn't accept a count. (Johannes + Zellner) +Solution: Pass the count on to do_insert() and edit(). (Allan Kelly) +Files: src/normal.c, src/ops.c, src/proto/ops.pro + +Patch 5.6.064 +Problem: MS-DOS and Win32 console: Mouse doesn't work correctly after + including patch 5.6.28. (Vince Negri) +Solution: Don't check for mouse scroll wheel when the mouse code contains + the number of clicks. +Files: src/term.c + +Patch 5.6.065 +Problem: After moving the cursor around in Insert mode, typing a space can + still trigger an abbreviation. (Benji Fisher) +Solution: Don't check for an abbreviation after moving around in Insert mode. +Files: src/edit.c + +Patch 5.6.066 +Problem: Still a few bold character spill-over remains after patch 60. +Solution: Clear character just in front of blanking out rest of the line. + (Robert Webb) +Files: src/screen.c + +Patch 5.6.067 +Problem: When a file name contains a NL, the viminfo file is corrupted. +Solution: Use viminfo_writestring() to convert the NL to CTRL-V n. + Also fix the Buffers menu and listing a menu name with a newline. +Files: runtime/menu.vim, src/buffer.c, src/mark.c, src/menu.c + +Patch 5.6.068 +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Also check xs_apiversion for the version number when prepending + defines for PL_*. +Files: src/Makefile + +Patch 5.6.069 +Problem: "go" doesn't always end up at the right character when + 'fileformat' is "dos". (Bruce DeVisser) +Solution: Correct computations in ml_find_line_or_offset(). +Files: src/memline. + +Patch 5.6.070 (depends on 5.6.068) +Problem: Compiling the Perl interface doesn't work with Perl 5.6.0. + (Bernhard Rosenkraenzer) +Solution: Simpler check instead of the one from patch 68. +Files: src/Makefile + +Patch 5.6.071 +Problem: "A" in Visual block mode on a Tab positions the cursor one char to + the right. (Michael Haumann) +Solution: Correct the column computation in op_insert(). +Files: src/ops.c + +Patch 5.6.072 +Problem: When starting Vim with "vim +startinsert", it enters Insert mode + only after typing the first command. (Andrew Pimlott) +Solution: Insert a dummy command in the stuff buffer. +Files: src/main.c + +Patch 5.6.073 (extra) (depends on 5.6.034) +Problem: Win32 GUI: When compiled with Bcc 5.5 menus don't work. + In dosinst.c toupper() and tolower() give an "internal compiler + error" for Bcc 5.5. +Solution: Define WINVER to 4 to avoid compiling for Windows 2000. (Dan + Sharp) Also cleaned up compilation arguments. + Use our own implementation of toupper() in dosinst.c. Use + mytoupper() instead of tolower(). +Files: src/Makefile.bor, src/dosinst.c + +Patch 5.6.074 (extra) +Problem: Entering CSI directly doesn't always work, because it's recognized + as the start of a special key. Mostly a problem with multibyte + in the GUI. +Solution: Use K_CSI for a typed CSI character. Use <CSI> for a normal CSI, + <xCSI> for a CSI typed in the GUI. +Files: runtime/doc/intro.txt, src/getchar.c, src/gui_amiga.c, + src/gui_gtk_x11.c, src/gui_mac.c, src/gui_riscos.c, src/gui_w32.c, + src/keymap.h, src/misc2.c + +Patch 5.6.075 +Problem: When using "I" or "A" in Visual block mode while 'sts' is set may + change spaces to a Tab the inserted text is not correct. (Mike + Steed) And some other problems when using "A" to append after the + end of the line. +Solution: Check for change in spaces/tabs after inserting the text. Append + spaces to fill the gap between the end-of-line and the right edge + of the block. +Files: src/ops.c + +Patch 5.6.076 +Problem: GTK GUI: Mapping <M-Space> doesn't work. +Solution: Don't use the "Alt" modifier twice in key_press_event(). +Files: src/gui_gtk_x11.c + +Patch 5.6.077 +Problem: GUI: When interrupting an external program with CTRL-C, gvim might + crash. (Benjamin Korvemaker) +Solution: Avoid using a NULL pointer in ui_inchar_undo(). +Files: src/ui.c + +Patch 5.6.078 +Problem: Locale doesn't always work on FreeBSD. (David O'Brien) +Solution: Link with the "xpg4" library when available. +Files: src/configure.in, src/configure + +Patch 5.6.079 +Problem: Vim could crash when several Tcl interpreters are created and + destroyed. +Solution: handle the "exit" command and nested ":tcl" commands better. (Ingo + Wilken) +Files: runtime/doc/if_tcl.txt, src/if_tcl.c + +Patch 5.6.080 +Problem: When jumping to a tag, generating the tags file and jumping to the + same tag again uses the old search pattern. (Sung-Hyun Nam) +Solution: Flush cached tag matches when executing an external command. +Files: src/misc2.c, src/proto/tag.pro, src/tag.c + +Patch 5.6.081 +Problem: ":syn include" uses a level for the included file, this confuses + contained items included at the same level. +Solution: Use a unique tag for each included file. Changed sp_syn_inc_lvl + to sp_syn_inc_tag. (Scott Bigham) +Files: src/syntax.c, src/structs.h + +Patch 5.6.082 +Problem: When using cscope, Vim can crash. +Solution: Initialize tag_fname in find_tags(). (Anton Blanchard) +Files: src/tag.c + +Patch 5.6.083 (extra) +Problem: Win32: The visual beep can't be seen. (Eric Roesinger) +Solution: Flush the output before waiting with GdiFlush(). (Maurice S. Barnum) + Also: Allow specifying the delay in t_vb for the GUI. +Files: src/gui.c, src/gui_amiga.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_riscos.c, src/gui_w32.c, src/gui_x11.c, src/gui_beos.cc, + src/proto/gui_amiga.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_riscos.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro, + src/proto/gui_beos.pro + +Patch 5.6.084 (depends on 5.6.074) +Problem: GUI: Entering CSI doesn't always work for Athena and Motif. +Solution: Handle typed CSI as <xCSI> (forgot this bit in 5.6.074). +Files: src/gui_x11.c + +Patch 5.6.085 +Problem: Multi-byte: Using "r" to replace a double-byte char with a + single-byte char moved the cursor one character. (Matsumoto) + Also, using a count when replacing a single-byte char with a + double-byte char didn't work. +Solution: Don't use del_char() to delete the second byte. + Get "ptr" again after calling ins_char(). +Files: src/normal.c + +Patch 5.6.086 (extra) +Problem: Win32: When using libcall() and the returned value is not a valid + pointer, Vim crashes. +Solution: Use IsBadStringPtr() to check if the pointer is valid. +Files: src/os_win32.c + +Patch 5.6.087 +Problem: Multi-byte: Commands and messages with multibyte characters are + displayed wrong. +Solution: Detect double-byte characters. (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/message.c, src/misc2.c, src/screen.c + +Patch 5.6.088 +Problem: Multi-byte with Motif or Athena: The message "XIM requires + fontset" is annoying when Vim was compiled with XIM support but it + is not being used. +Solution: Remove that message. +Files: src/multbyte.c + +Patch 5.6.089 +Problem: On non-Unix systems it's possible to overwrite a read-only file + without using "!". +Solution: Check if the file permissions allow overwriting before moving the + file to become the backup file. +Files: src/fileio.c + +Patch 5.6.090 +Problem: When editing a file in "/home/dir/home/dir" this was replaced with + "~~". (Andreas Jellinghaus) +Solution: Replace the home directory only once in home_replace(). +Files: src/misc1.c + +Patch 5.6.091 +Problem: When editing many "no file" files, can't create swap file, because + .sw[a-p] have all been used. (Neil Bird) +Solution: Also use ".sv[a-z]", ".su[a-z]", etc. +Files: src/memline.c + +Patch 5.6.092 +Problem: FreeBSD: When setting $TERM to a non-valid terminal name, Vim + hangs in tputs(). +Solution: After tgetent() returns an error code, call it again with the + terminal name "dumb". This apparently creates an environment in + which tputs() doesn't fail. +Files: src/term.c + +Patch 5.6.093 (extra) +Problem: Win32 GUI: "ls | gvim -" will show a message box about reading + stdin when Vim exits. (Donohue) +Solution: Don't write a message about the file read from stdin until the GUI + has started. +Files: src/fileio.c + +Patch 5.6.094 +Problem: Problem with multibyte string for ":echo var". +Solution: Check for length in msg_outtrans_len_attr(). (Sung-Hyun Nam) + Also make do_echo() aware of multibyte characters. +Files: src/eval.c, src/message.c + +Patch 5.6.095 +Problem: With an Emacs TAGS file that include another a relative path + doesn't always work. +Solution: Use expand_tag_fname() on the name of the included file. + (Utz-Uwe Haus) +Files: src/tag.c + +Patch 5.6.096 +Problem: Unix: When editing many files, startup can be slow. (Paul + Ackersviller) +Solution: Halve the number of stat() calls used to add a file to the buffer + list. +Files: src/buffer.c + +Patch 5.7a.001 +Problem: GTK doesn't respond on drag&drop from ROX-Filer. +Solution: Add "text/uri-list" target. (Thomas Leonard) + Also: fix problem with checking for trash arguments. +Files: src/gui_gtk_x11.c + +Patch 5.7a.002 +Problem: Multi-byte: 'showmatch' is performed when second byte of an + inserted double-byte char is a paren or brace. +Solution: Check IsTrailByte() before calling showmatch(). (Taro Muraoka) +Files: src/misc1.c + +Patch 5.7a.003 +Problem: Multi-byte: After using CTRL-O in Insert mode with the cursor at + the end of the line on a multibyte character the cursor moves to + the left. +Solution: Check for multibyte character at end-of-line. (Taro Muraoka) + Also: fix cls() to detect a double-byte character. (Chong-Dae Park) +Files: src/edit.c, src/search.c + +Patch 5.7a.004 +Problem: When reporting the search pattern offset, the string could be + unterminated, which may cause a crash. +Solution: Terminate the string for the search offset. (Stephen P. Wall) +Files: src/search.c + +Patch 5.7a.005 +Problem: When ":s//~/" doesn't find a match it reports "[NULL]" for the + pattern. +Solution: Use get_search_pat() to obtain the actually used pattern. +Files: src/ex_cmds.c, src/proto/search.pro, src/search.c + +Patch 5.7a.006 (extra) +Problem: VMS: Various problems, also with the VAXC compiler. +Solution: In many places use the Unix code for VMS too. + Added time, date and compiler version to version message. + (Zoltan Arpadffy) +Files: src/ex_cmds.c, src/ex_docmd.c, src/globals.h, src/gui_vms_conf.h, + src/main.c, src/message.c, src/misc1.c, src/os_vms.c, + src/os_vms.h, src/os_vms.mms, src/os_vms_conf.h, + src/proto/os_vms.pro, src/proto/version.pro, src/term.c, + src/version.c, src/xxd/os_vms.mms, src/xxd/xxd.c + +Patch 5.7a.007 +Problem: Motif and Athena GUI: CTRL-@ is interpreted as CTRL-C. +Solution: Only use "intr_char" when it has been set. +Files: src/gui_x11.c + +Patch 5.7a.008 +Problem: GTK GUI: When using CTRL-L the screen is redrawn twice, causing + trouble for bold characters. Also happens when moving with the + scrollbar. Best seen when 'writedelay' is non-zero. + When starting the GUI with ":gui" the screen is redrawn once with + the wrong colors. +Solution: Only set the geometry hints when the window size really changed. + This avoids setting it each time the scrollbar is forcefully + redrawn. + Don't redraw in expose_event() when gui.starting is still set. +Files: src/gui_gtk_x11.c + + +============================================================================== +VERSION 5.8 *version-5.8* + +Version 5.8 is a bug-fix version of 5.7. + + +Changed *changed-5.8* +------- + +Ctags is no longer included with Vim. It has grown into a project of its own. +You can find it here: http://ctags.sf.net. It is highly recommended as a Vim +companion when you are writing programs. + + +Added *added-5.8* +----- + +New syntax files: +acedb AceDB (Stewart Morris) +aflex Aflex (Mathieu Clabaut) +antlr Antlr (Mathieu Clabaut) +asm68k 68000 Assembly (Steve Wall) +automake Automake (John Williams) +ayacc Ayacc (Mathieu Clabaut) +b B (Mathieu Clabaut) +bindzone BIND zone (glory hump) +blank Blank (Rafal Sulejman) +cfg Configure files (Igor Prischepoff) +changelog ChangeLog (Gediminas Paulauskas) +cl Clever (Phil Uren) +crontab Crontab (John Hoelzel) +csc Essbase script (Raul Segura Acevedo) +cynlib Cynlib(C++) (Phil Derrick) +cynpp Cyn++ (Phil Derrick) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dns DNS zone file (Jehsom) +dtml Zope's DTML (Jean Jordaan) +dylan Dylan, Dylan-intr and Dylan-lid (Brent Fulgham) +ecd Embedix Component Description (John Beppu) +fgl Informix 4GL (Rafal Sulejman) +foxpro FoxPro (Powing Tse) +gsp GNU Server Pages (Nathaniel Harward) +gtkrc GTK rc (David Necas) +hercules Hercules (Avant! Corporation) (Dana Edwards) +htmlos HTML/OS by Aestiva (Jason Rust) +inittab SysV process control (David Necas) +iss Inno Setup (Dominique Stephan) +jam Jam (Ralf Lemke) +jess Jess (Paul Baleme) +lprolog LambdaProlog (Markus Mottl) +ia64 Intel Itanium (parth malwankar) +kix Kixtart (Nigel Gibbs) +mgp MaGic Point (Gerfried Fuchs) +mason Mason (HTML with Perl) (Andrew Smith) +mma Mathematica (Wolfgang Waltenberger) +nqc Not Quite C (Stefan Scherer) +omnimark Omnimark (Paul Terray) +openroad OpenROAD (Luis Moreno Serrano) +named BIND configuration (glory hump) +papp PApp (Marc Lehmann) +pfmain Postfix main config (Peter Kelemen) +pic PIC assembly (Aleksandar Veselinovic) +ppwiz PPWizard (Stefan Schwarzer) +progress Progress (Phil Uren) +psf Product Specification File (Rex Barzee) +r R (Tom Payne) +registry MS-Windows registry (Dominique Stephan) +robots Robots.txt (Dominique Stephan) +rtf Rich Text Format (Dominique Stephan) +setl SETL (Alex Poylisher) +sgmldecl SGML Declarations (Daniel A. Molina W.) +sinda Sinda input (Adrian Nagle) +sindacmp Sinda compare (Adrian Nagle) +sindaout Sinda output (Adrian Nagle) +smith SMITH (Rafal Sulejman) +snobol4 Snobol 4 (Rafal Sulejman) +strace Strace (David Necas) +tak TAK input (Adrian Nagle) +takcmp TAK compare (Adrian Nagle) +takout TAK output (Adrian Nagle) +tasm Turbo assembly (FooLman) +texmf TeX configuration (David Necas) +trasys Trasys input (Adrian Nagle) +tssgm TSS Geometry (Adrian Nagle) +tssop TSS Optics (Adrian Nagle) +tsscl TSS Command line (Adrian Nagle) +virata Virata Configuration Script (Manuel M.H. Stol) +vsejcl VSE JCL (David Ondrejko) +wdiff Wordwise diff (Gerfried Fuchs) +wsh Windows Scripting Host (Paul Moore) +xkb X Keyboard Extension (David Necas) + +Renamed php3 to php, it now also supports php4 (Lutz Eymers) + +Patch 5.7.015 +Problem: Syntax files for Vim 6.0 can't be used with 5.x. +Solution: Add the "default" argument to the ":highlight" command: Ignore the + command if highlighting was already specified. +Files: src/syntax.c + +Generate the Syntax menu with makemenu.vim, so that it doesn't have to be done +when Vim is starting up. Reduces the startup time of the GUI. + + +Fixed *fixed-5.8* +----- + +Conversion of docs to HTML didn't convert "|tag|s" to a hyperlink. + +Fixed compiling under NeXT. (Jeroen C.M. Goudswaard) + +optwin.vim gave an error when used in Vi compatible mode ('cpo' contains 'C'). + +Tcl interpreter: "buffer" command didn't check for presence of an argument. +(Dave Bodenstab) + +dosinst.c: Added checks for too long file name. + +Amiga: a file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Macintosh: Warnings for unused variables. (Bernhard Pruemmer) + +Unix: When catching a deadly signal, handle it in such a way that it's +unlikely that Vim will hang. Call _exit() instead of exit() in case of a +severe problem. + +Setting the window title from nothing to something didn't work after patch 29. + +Check for ownership of .exrc and .vimrc was done with stat(). Use lstat() as +well for extra security. + +Win32 GUI: Printing a file with 'fileformat' "unix" didn't work. Set +'fileformat' to "dos" before writing the temp file. + +Unix: Could start waiting for a character when checking for a CTRL-C typed +when an X event is received. + +Could not use Perl and Python at the same time on FreeBSD, because Perl used +"-lc" and Python used the threaded C library. + +Win32: The Mingw compiler gave a few warning messages. + +When using "ZZ" and an autocommand for writing uses an abbreviation it didn't +work. Don't stuff the ":x" command but execute it directly. (Mikael Berthe) + +VMS doesn't always have lstat(), added an #ifdef around it. + +Added a few corrections for the Macintosh. (Axel Kielhorn) + +Win32: GvimExt could not edit more than a few files at once, the length of the +argument was fixed. + + +Previously released patches for Vim 5.7: + +Patch 5.7.001 +Problem: When the current buffer is encrypted, and another modified buffer + isn't, ":wall" will encrypt the other buffer. +Solution: In buf_write() use "buf" instead of "curbuf" to check for the + crypt key. +Files: src/fileio.c + +Patch 5.7.002 +Problem: When 'showmode' is set, using "CTRL-O :r file" waits three seconds + before displaying the read text. (Wichert Akkerman) +Solution: Set "keep_msg" to the file message so that the screen is redrawn + before the three seconds wait for displaying the mode message. +Files: src/fileio.c + +Patch 5.7.003 +Problem: Searching for "[[:cntrl:]]" doesn't work. +Solution: Exclude NUL from the matching characters, it terminates the list. +Files: src/regexp.c + +Patch 5.7.004 +Problem: GTK: When selecting a new font, Vim can crash. +Solution: In gui_mch_init_font() unreference the old font, not the new one. +Files: src/gui_gtk_x11.c + +Patch 5.7.005 +Problem: Multibyte: Inserting a wrapped line corrupts kterm screen. + Pasting TEXT/COMPOUND_TEXT into Vim does not work. + On Motif no XIM status line is displayed even though it is + available. +Solution: Don't use xterm trick for wrapping lines for multibyte mode. + Correct a missing "break", added TEXT/COMPOUND_TEXT selection + request. + Add XIMStatusArea fallback code. + (Katsuhito Nagano) +Files: src/gui_gtk_x11.c, src/multbyte.c, src/screen.c, src/ui.c + +Patch 5.7.006 +Problem: GUI: redrawing the non-Visual selection is wrong when the window + is unobscured. (Jean-Pierre Etienne) +Solution: Redraw the selection properly and don't clear it. Added "len" + argument to clip_may_redraw_selection(). +Files: src/gui.c, src/ui.c, src/proto/ui.pro + +Patch 5.7.007 +Problem: Python: Crash when using the current buffer twice. +Solution: Increase the reference count for buffer and window objects. + (Johannes Zellner) +Files: src/if_python.c + +Patch 5.7.008 +Problem: In Ex mode, backspacing over the first TAB doesn't work properly. + (Wichert Akkerman) +Solution: Switch the cursor on before printing the newline. +Files: src/ex_getln.c + +Patch 5.7.009 (extra) +Problem: Mac: Crash when using a long file. +Solution: Don't redefine malloc() and free(), because it will break using + realloc(). +Files: src/os_mac.h + +Patch 5.7.010 +Problem: When using CTRL-A on a very long number Vim can crash. (Michael + Naumann) +Solution: Truncate the length of the new number to avoid a buffer overflow. +Files: src/ops.c + +Patch 5.7.011 (extra) +Problem: Win32 GUI on NT 5 and Win98: Displaying Hebrew is reversed. +Solution: Output each character separately, to avoid that Windows reverses + the text for some fonts. (Ron Aaron) +Files: src/gui_w32.c + +Patch 5.7.012 +Problem: When using "-complete=buffer" for ":command" the user command + fails. +Solution: In a user command don't replace the buffer name with a count for + the buffer number. +Files: src/ex_docmd.c + +Patch 5.7.013 +Problem: "gD" didn't always find a match in the first line, depending on + the column the search started at. +Solution: Reset the column to zero before starting to search. +Files: src/normal.c + +Patch 5.7.014 +Problem: Rot13 encoding was done on characters with accents, which is + wrong. (Sven Gottwald) +Solution: Only do rot13 encoding on ASCII characters. +Files: src/ops.c + +Patch 5.7.016 +Problem: When hitting 'n' for a ":s///c" command, the ignore-case flag was + not restored, some matches were skipped. (Daniel Blaustein) +Solution: Restore the reg_ic variable when 'n' was hit. +Files: src/ex_cmds.c + +Patch 5.7.017 +Problem: When using a Vim script for Vim 6.0 with <SID> before a function + name, it produces an error message even when inside an "if version + >= 600". (Charles Campbell) +Solution: Ignore errors in the function name when the function is not going + to be defined. +Files: src/eval.c + +Patch 5.7.018 +Problem: When running "rvim" or "vim -Z" it was still possible to execute a + shell command with system() and backtick-expansion. (Antonios A. + Kavarnos) +Solution: Disallow executing a shell command in get_cmd_output() and + mch_expand_wildcards(). +Files: src/misc1.c, src/os_unix.c + +Patch 5.7.019 +Problem: Multibyte: In a substitute string, a multibyte character isn't + skipped properly, can be a problem when the second byte is a + backslash. +Solution: Skip an extra byte for a double-byte character. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 5.7.020 +Problem: Compilation doesn't work on MacOS-X. +Solution: Add a couple of #ifdefs. (Jamie Curmi) +Files: src/regexp.c, src/ctags/general.h + +Patch 5.7.021 +Problem: Vim sometimes produces a beep when started in an xterm. Only + happens when compiled without mouse support. +Solution: Requesting the xterm version results in a K_IGNORE. This wasn't + handled when mouse support is disabled. Accept K_IGNORE always. +Files: src/normal.c + +Patch 5.7.022 +Problem: %v in 'statusline' is not displayed when it's equal to %c. +Solution: Check if %V or %v is used and handle them differently. +Files: src/screen.c + +Patch 5.7.023 +Problem: Crash when a WinLeave autocommand deletes the buffer in the other + window. +Solution: Check that after executing the WinLeave autocommands there still + is a window to be closed. Also update the test that was supposed + to check for this problem. +Files: src/window.c, testdir/test13.in, testdir/test13.ok + +Patch 5.7.024 +Problem: Evaluating an expression for 'statusline' can have side effects. +Solution: Evaluate the expression in a sandbox. +Files: src/edit.c, src/eval.c, src/proto/eval.pro, src/ex_cmds.c, + src/ex_cmds.h, src/ex_docmd.c, src/globals.h, src/option.c, + src/screen.c, src/undo.c + +Patch 5.7.025 (fixed) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. +Files: src/fileio.c, src/misc1.c, src/proto/misc1.pro, + src/proto/fileio.pro, src/memline.c, src/os_unix.h + +Patch 5.7.026 (extra) +Problem: Creating a temp file has a race condition. +Solution: Create a private directory to write the temp files in. + This is the extra part of patch 5.7.025. +Files: src/os_msdos.h + +Patch 5.7.027 +Problem: Starting to edit a file can cause a crash. For example when in + Insert mode, using CTRL-O :help abbr<Tab> to scroll the screen and + then <CR>, which edits a help file. (Robert Bogomip) +Solution: Check if keep_msg is NULL before copying it. +Files: src/fileio.c + +Patch 5.7.028 +Problem: Creating a backup or swap file could fail in rare situations. +Solution: Use O_EXCL for open(). +Files: src/fileio.c, src/memfile.c + +Patch 5.7.029 +Problem: Editing a file with an extremely long name crashed Vim. +Solution: Check for length of the name when setting the window title. +Files: src/buffer.c + +Patch 5.7.030 +Problem: A ":make" or ":grep" command with a very long argument could cause + a crash. +Solution: Allocate the buffer for the shell command. +Files: src/ex_docmd.c + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt new file mode 100644 index 0000000..f4d2a98 --- /dev/null +++ b/runtime/doc/version6.txt @@ -0,0 +1,14530 @@ +*version6.txt* For Vim version 9.1. Last change: 2022 Apr 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Welcome to Vim Version 6.0! A large number of features has been added. This +file mentions all the new items that have been added, changes to existing +features and bug fixes compared to Vim 5.x. + +See |vi_diff.txt| for an overview of differences between Vi and Vim 6.0. +See |version4.txt| for differences between Vim 3.0 and Vim 4.0. +See |version5.txt| for differences between Vim 4.0 and Vim 5.0. + +INCOMPATIBLE CHANGES |incompatible-6| + +Cursor position in Visual mode |curpos-visual| +substitute command Vi compatible |substitute-CR| +global option values introduced |new-global-values| +'fileencoding' changed |fileencoding-changed| +Digraphs changed |digraphs-changed| +Filetype detection changed |filetypedetect-changed| +Unlisted buffers introduced |new-unlisted-buffers| +CTRL-U in Command-line mode changed |CTRL-U-changed| +Ctags gone |ctags-gone| +Documentation reorganized |documentation-6| +Modeless selection and clipboard |modeless-and-clipboard| +Small incompatibilities |incomp-small-6| + +NEW FEATURES |new-6| + +Folding |new-folding| +Vertically split windows |new-vertsplit| +Diff mode |new-diff-mode| +Easy Vim: click-and-type |new-evim| +User manual |new-user-manual| +Flexible indenting |new-indent-flex| +Extended search patterns |new-searchpat| +UTF-8 support |new-utf-8| +Multi-language support |new-multi-lang| +Plugin support |new-plugins| +Filetype plugins |new-filetype-plugins| +File browser |new-file-browser| +Editing files over a network |new-network-files| +Window for command-line editing |new-cmdwin| +Debugging mode |new-debug-mode| +Cursor in virtual position |new-virtedit| +Debugger interface |new-debug-itf| +Communication between Vims |new-vim-server| +Buffer type options |new-buftype| +Printing |new-printing| +Ports |ports-6| +Quickfix extended |quickfix-6| +Operator modifiers |new-operator-mod| +Search Path |new-search-path| +Writing files improved |new-file-writing| +Argument list |new-argument-list| +Restore a View |new-View| +Color schemes |new-color-schemes| +Various new items |new-items-6| + +IMPROVEMENTS |improvements-6| + +COMPILE TIME CHANGES |compile-changes-6| + +BUG FIXES |bug-fixes-6| + +VERSION 6.1 |version-6.1| +Changed |changed-6.1| +Added |added-6.1| +Fixed |fixed-6.1| + +VERSION 6.2 |version-6.2| +Changed |changed-6.2| +Added |added-6.2| +Fixed |fixed-6.2| + +VERSION 6.3 |version-6.3| +Changed |changed-6.3| +Added |added-6.3| +Fixed |fixed-6.3| + +VERSION 6.4 |version-6.4| +Changed |changed-6.4| +Added |added-6.4| +Fixed |fixed-6.4| + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-6* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 5.x to 6.0 + + +Cursor position in Visual mode *curpos-visual* +------------------------------ + +When going from one window to another window on the same buffer while in +Visual mode, the cursor position of the other window is adjusted to keep the +same Visual area. This can be used to set the start of the Visual area in one +window and the end in another. In vim 5.x the cursor position of the other +window would be used, which could be anywhere and was not very useful. + + +Substitute command Vi compatible *substitute-CR* +-------------------------------- + +The substitute string (the "to" part of the substitute command) has been made +Vi compatible. Previously a CTRL-V had a special meaning and could be used to +prevent a <CR> to insert a line break. This made it impossible to insert a +CTRL-V before a line break. Now a backslash is used to prevent a <CR> to +cause a line break. Since the number of backslashes is halved, it is still +possible to insert a line break at the end of the line. This now works just +like Vi, but it's not compatible with Vim versions before 6.0. + +When a ":s" command doesn't make any substitutions, it no longer sets the '[ +and '] marks. This is not related to Vi, since it doesn't have these marks. + + +Global option values introduced *new-global-values* +------------------------------- + +There are now global values for options which are local to a buffer or window. +Previously the local options were copied from one buffer to another. When +editing another file this could cause option values from a modeline to be used +for the wrong file. Now the global values are used when entering a buffer +that has not been used before. Also, when editing another buffer in a window, +the local window options are reset to their global values. The ":set" command +sets both the local and global values, this is still compatible. But a +modeline only sets the local value, this is not backwards compatible. + +":let &opt = val" now sets the local and global values, like ":set". New +commands have been added to set the global or local value: + :let &opt = val like ":set" + :let &g:opt = val like ":setglobal" + :let &l:opt = val like ":setlocal" + + +'fileencoding' changed *fileencoding-changed* +---------------------- + +'fileencoding' was used in Vim 5.x to set the encoding used inside all of Vim. +This was a bit strange, because it was local to a buffer and worked for all +buffers. It could never be different between buffers, because it changed the +way text in all buffers was interpreted. +It is now used for the encoding of the file related to the buffer. If you +still set 'fileencoding' it is likely to be overwritten by the detected +encoding from 'fileencodings', thus it is "mostly harmless". +The old FileEncoding autocommand now does the same as the new EncodingChanged +event. + + +Digraphs changed *digraphs-changed* +---------------- + +The default digraphs now correspond to RFC1345. This is very different from +what was used in Vim 5.x. |digraphs| + + +Filetype detection changed *filetypedetect-changed* +-------------------------- + +The filetype detection previously was using the "filetype" autocommand group. +This caused confusion with the FileType event name (case is ignored). The +group is now called "filetypedetect". It still works, but if the "filetype" +group is used the autocommands will not be removed by ":filetype off". + The support for 'runtimepath' has made the "myfiletypefile" and +"mysyntaxfile" mechanism obsolete. They are still used for backwards +compatibility. + +The connection between the FileType event and setting the 'syntax' option was +previously in the "syntax" autocommand group. That caused confusion with the +Syntax event name. The group is now called "syntaxset". + +The distributed syntax files no longer contain "syntax clear". That makes it +possible to include one in the other without tricks. The syntax is now +cleared when the 'syntax' option is set (by an autocommand added from +synload.vim). This makes the syntax cleared when the value of 'syntax' does +not correspond to a syntax file. Previously the existing highlighting was +kept. + + +Unlisted buffers introduced *new-unlisted-buffers* +--------------------------- + +There is now a difference between buffers which don't appear in the buffer +list and buffers which are really not in the buffer list. Commands like +":ls", ":bnext", ":blast" and the Buffers menu will skip buffers not in the +buffer list. |unlisted-buffer| +The 'buflisted' option can be used to make a buffer appear in the buffer list +or not. + +Several commands that previously added a buffer to the buffer list now create +an unlisted buffer. This means that a ":bnext" and ":ball" will not find these +files until they have actually been edited. For example, buffers used for the +alternative file by ":write file" and ":read file". + Other commands previously completely deleted a buffer and now only remove +the buffer from the buffer list. Commands relying on a buffer not to be +present might fail. For example, a ":bdelete" command in an autocommand that +relied on something following to fail (was used in the automatic tests). +|:bwipeout| can be used for the old meaning of ":bdelete". + +The BufDelete autocommand event is now triggered when a buffer is removed from +the buffer list. The BufCreate event is only triggered when a buffer is +created that is added to the buffer list, or when an existing buffer is added +to the buffer list. BufAdd is a new name for BufCreate. +The new BufNew event is for creating any buffer and BufWipeout for really +deleting a buffer. + +When doing Insert mode completion, only buffers in the buffer list are +scanned. Added the 'U' flag to 'complete' to do completion from unlisted +buffers. + +Unlisted buffers are not stored in a viminfo file. + + +CTRL-U in Command-line mode changed *CTRL-U-changed* +----------------------------------- + +Using CTRL-U when editing the command line cleared the whole line. Most +shells only delete the characters before the cursor. Made it work like that. +(Steve Wall) + +You can get the old behavior with CTRL-E CTRL-U: > + :cnoremap <C-U> <C-E><C-U> + + +Ctags gone *ctags-gone* +---------- + +Ctags is no longer part of the Vim distribution. It's now a grown-up program +by itself, it deserves to be distributed separately. +Ctags can be found here: http://ctags.sf.net/. + + +Documentation reorganized *documentation-6* +------------------------- + +The documentation has been reorganized, an item may not be where you found it +in Vim 5.x. +- The user manual was added, some items have been moved to it from the + reference manual. +- The quick reference is now in a separate file (so that it can be printed). + +The examples in the documentation were previously marked with a ">" in the +first column. This made it difficult to copy/paste them. There is now a +single ">" before the example and it ends at a "<" or a non-blank in the first +column. This also looks better without highlighting. + +'helpfile' is no longer used to find the help tags file. This allows a user +to add its own help files (e.g., for plugins). + + +Modeless selection and clipboard *modeless-and-clipboard* +-------------------------------- + +The modeless selection is used to select text when Visual mode can't be used, +for example when editing the command line or at the more prompt. +In Vim 5.x the modeless selection was always used. On MS-Windows this caused +the clipboard to be overwritten, with no way to avoid that. The modeless +selection now obeys the 'a' and 'A' flags in 'guioptions' and "autoselect" and +"autoselectml" in 'clipboard'. By default there is no automatic copy on +MS-Windows. Use the |c_CTRL-Y| command to manually copy the selection. + +To get the old behavior back, do this: > + + :set clipboard^=autoselectml guioptions+=A + + +Small incompatibilities *incomp-small-6* +----------------------- + +'backupdir', 'cdpath', 'directory', 'equalprg', 'errorfile', 'formatprg', +'grepprg', 'helpfile', 'makeef', 'makeprg', 'keywordprg', 'cscopeprg', +'viminfo' and 'runtimepath' can no longer be set from a modeline, for better +security. + +Removed '_' from the 'breakat' default: It's commonly used in keywords. + +The default for 'mousehide' is on, because this works well for most people. + +The Amiga binary is now always compiled with "big" features. The "big" binary +archive no longer exists. + +The items "[RO]", "[+]", "[help]", "[Preview]" and "[filetype]" in +'statusline' no longer have a leading space. + +Non-Unix systems: When expanding wildcards for the Vim arguments, don't use +'suffixes'. It now works as if the shell had expanded the arguments. + +The 'lisp', 'smartindent' and 'cindent' options are not switched off when +'paste' is set. The auto-indenting is disabled when 'paste' is set, but +manual indenting with "=" still works. + +When formatting with "=" uses 'cindent' or 'indentexpr' indenting, and there +is no change in indent, this is not counted as a change ('modified' isn't set +and there is nothing to undo). + +Report 'modified' as changed when 'fileencoding' or 'fileformat' was set. +Thus it reflects the possibility to abandon the buffer without losing changes. + +The "Save As" menu entry now edits the saved file. Most people expect it to +work like this. + +A buffer for a directory is no longer added to the Buffers menu. + +Renamed <Return> to <Enter>, since that's what it's called on most keyboards. +Thus it's now the hit-enter prompt instead of the hit-return prompt. +Can map <Enter> just like <CR> or <Return>. + +The default for the 'viminfo' option is now '20,"50,h when 'compatible' isn't +set. Most people will want to use it, including beginners, but it required +setting the option, which isn't that easy. + +After using ":colder" the newer error lists are overwritten. This makes it +possible to use ":grep" to browse in a tree-like way. Must use ":cnewer 99" +to get the old behavior. + +The patterns in 'errorformat' would sometimes ignore case (MS-Windows) and +sometimes not (Unix). Now case is always ignored. Add "\C" to the pattern to +match case. + +The 16 bit MS-DOS version is now compiled without the +listcmds feature +(buffer list manipulation commands). They are not often needed and this +executable needs to be smaller. + +'sessionoptions' now includes "curdir" by default. This means that restoring +a session will result in the current directory being restored, instead of +going to the directory where the session file is located. + +A session deleted all buffers, deleting all marks. Now keep the buffer list, +it shouldn't hurt for some existing buffers to remain present. +When the argument list is empty ":argdel *" caused an error message. + +No longer put the search pattern from a tag jump in the history. + +Use "SpecialKey" highlighting for unprintable characters instead of "NonText". +The idea is that unprintable text or any text that's displayed differently +from the characters in the file is using "SpecialKey", and "NonText" is used +for text that doesn't really exist in the file. + +Motif now uses the system default colors for the menu and scrollbar. Used to +be grey. It's still possible to set the colors with ":highlight" commands and +resources. + +Formatting text with "gq" breaks a paragraph at a non-empty blank line. +Previously the line would be removed, which wasn't very useful. + +":normal" does no longer hang when the argument ends in half a command. +Previously Vim would wait for more characters to be typed, without updating +the screen. Now it pretends an <Esc> was typed. + +Bitmaps for the toolbar are no longer searched for in "$VIM/bitmaps" but in +the "bitmaps" directories in 'runtimepath'. + +Now use the Cmdline-mode menus for the hit-enter prompt instead of the Normal +mode menus. This generally works better and allows using the "Copy" menu to +produce CTRL-Y to copy the modeless selection. + +Moved the font selection from the Window to the Edit menu, together with the +other settings. + +The default values for 'isfname' include more characters to make "gf" work +better. + +Changed the license for the documentation to the Open Publication License. +This seemed fair, considering the inclusion of parts of the Vim book, which is +also published under the OPL. The downside is that we can't force someone who +would sell copies of the manual to contribute to Uganda. + +After "ayy don't let ""yy or :let @" = val overwrite the "a register. +Use the unnamed register instead. + +MSDOS: A pattern "*.*" previously also matched a file name without a dot. +This was inconsistent with other versions. + +In Insert mode, CTRL-O CTRL-\ CTRL-N {cmd} remains in Normal mode. Previously +it would go back to Insert mode, thus confusing the meaning of CTRL-\ CTRL-N, +which is supposed to take us to Normal mode (especially in ":amenu"). + +Allow using ":" commands after an operator. Could be used to implement a new +movement command. Thus it no longer aborts a pending operator. + +For the Amiga the "-d {device}" argument was possible. When compiled with the +diff feature, this no longer works. Use "-dev {device}" instead. |-dev| + +Made the default mappings for <S-Insert> in Insert mode insert the text +literally, avoids that special characters like BS cause side effects. + +Using ":confirm" applied to the rest of the line. Now it applies only to the +command right after it. Thus ":confirm if x | edit | endif" no longer works, +use ":if x | confirm edit | endif". This was the original intention, that it +worked differently was a bug. + +============================================================================== +NEW FEATURES *new-6* + +Folding *new-folding* +------- + +Vim can now display a buffer with text folded. This allows overviewing the +structure of a file quickly. It is also possible to yank, delete and put +folded text, for example to move a function to another position. + +There is a whole bunch of new commands and options related to folding. +See |folding|. + + +Vertically split windows *new-vertsplit* +------------------------ + +Windows can also be split vertically. This makes it possible to have windows +side by side. One nice use for this is to compare two similar files (see +|new-diff-mode|). The 'scrollbind' option can be used to synchronize +scrolling. + +A vertical split can be created with the commands: + :vsplit or CTRL-W v or CTRL-W CTRL-V |:vsplit| + :vnew |:vnew| + :vertical {cmd} |:vertical| +The last one is a modifier, which has a meaning for any command that splits a +window. For example: > + :vertical stag main +Will vertically split the window and jump to the tag "main" in the new window. + +Moving from window to window horizontally can be done with the |CTRL-W_h| and +|CTRL-W_l| commands. The |CTRL-W_k| and |CTRL-W_j| commands have been changed +to jump to the window above or below the cursor position. + +The vertical and horizontal splits can be mixed as you like. Resizing windows +is easy when using the mouse, just position the pointer on a status line or +vertical separator and drag it. In the GUI a special mouse pointer shape +indicates where you can drag a status or separator line. + +To resize vertically split windows use the |CTRL-W_<| and |CTRL-W_>| commands. +To make a window the maximum width use the CTRL-W | command |CTRL-W_bar|. + +To force a new window to use the full width or height of the Vim window, +these two modifiers are available: + :topleft {cmd} New window appears at the top with full + width or at the left with full height. + :botright {cmd} New window appears at the bottom with full + width or at the right with full height. +This can be combined with ":vertical" to force a vertical split: > + :vert bot dsplit DEBUG +This will open a window at the far right, occupying the full height of the Vim +window, with the cursor on the first definition of "DEBUG". +The help window is opened at the top, like ":topleft" was used, if the current +window is fewer than 80 characters wide. + +A few options can be used to set the preferences for vertically split windows. +They work similarly to their existing horizontal equivalents: + horizontal vertical ~ + 'splitbelow' 'splitright' + 'winheight' 'winwidth' + 'winminheight' 'winminwidth' +It's possible to set 'winminwidth' to zero, so that temporarily unused windows +hardly take up space without closing them. + +The new 'eadirection' option tells where 'equalalways' applies: + :set eadirection=both both directions + :set eadirection=ver equalize window heights + :set eadirection=hor equalize windows widths +This can be used to avoid changing window sizes when you want to keep them. + +Since windows can become quite narrow with vertical splits, text lines will +often not fit. The 'sidescrolloff' has been added to keep some context left +and right of the cursor. The 'listchars' option has been extended with the +"precedes" item, to show a "<" for example, when there is text left off the +screen. (Utz-Uwe Haus) + +"-O" command line argument: Like "-o" but split windows vertically. (Scott +Urban) + +Added commands to move the current window to the very top (CTRL-W K), bottom +(CTRL-W J), left (CTRL-W H) and right (CTRL-W L). In the new position the +window uses the full width/height of the screen. + +When there is not enough room in the status line for both the file name and +the ruler, use up to half the width for the ruler. Useful for narrow windows. + + +Diff mode *new-diff-mode* +--------- + +In diff mode Vim shows the differences between two, three or four files. +Folding is used to hide the parts of the file that are equal. +Highlighting is used to show deleted and changed lines. +See |diff-mode|. + +An easy way to start in diff mode is to start Vim as "vimdiff file1 file2". +Added the vimdiff manpage. + +In a running Vim the |:diffsplit| command starts diff mode for the current +file and another file. The |:diffpatch| command starts diff mode using the +current file and a patch file. The |:diffthis| command starts diff mode for +the current window. + +Differences can be removed with the |:diffget| and |:diffput| commands. + +- The 'diff' option switches diff mode on in a window. +- The |:diffupdate| command refreshes the diffs. +- The 'diffopt' option changes how diffs are displayed. +- The 'diffexpr' option can be set how a diff is to be created. +- The 'patchexpr' option can be set how patch is applied to a file. +- Added the "diff" folding method. When opening a window for diff-mode, set + 'foldlevel' to zero and 'foldenable' on, to close the folds. +- Added the DiffAdd, DiffChange, DiffDelete and DiffText highlight groups to + specify the highlighting for differences. The defaults are ugly... +- Unix: make a vimdiff symbolic link for "make install". +- Removed the now obsolete "vimdiff.vim" script from the distribution. +- Added the "[c" and "]c" commands to move to the next/previous change in diff + mode. + + +Easy Vim: click-and-type *new-evim* +------------------------ + +eVim stands for "Easy Vim". This is a separate program, but can also be +started as "vim -y". + +This starts Vim with 'insertmode' set to allow click-and-type editing. The +$VIMRUNTIME/evim.vim script is used to add mappings and set options to be able +to do most things like Notepad. This is only for people who can't stand two +modes. + +eView does the same but in readonly mode. + +In the GUI a CTRL-C now only interrupts when busy with something, not when +waiting for a character. Allows using CTRL-C to copy text to the clipboard. + + +User manual *new-user-manual* +----------- + +The user manual has been added. It is organised around editing tasks. It +reads like a book, from start to end. It should allow beginners to start +learning Vim. It helps everybody to learn using the most useful Vim features. +It is much easier to read than the reference manual, but omits details. See +|user-manual|. + +The user manual includes parts of the Vim book by Steve Oualline |frombook|. +It is published under the OPL |manual-copyright|. + +When syntax highlighting is not enabled, the characters in the help file which +mark examples ('>' and '<') and header lines ('~') are replaced with a space. + +When closing the help window, the window layout is restored from before +opening it, if the window layout didn't change since then. +When opening the help window, put it at the top of the Vim window if the +current window is fewer than 80 characters and not full width. + + +Flexible indenting *new-indent-flex* +------------------ + +Automatic indenting is now possible for any language. It works with a Vim +script, which makes it very flexible to compute the indent. + +The ":filetype indent on" command enables using the provided indent scripts. +This is explained in the user manual: |30.3|. + +The 'indentexpr' option is evaluated to get the indent for a line. The +'indentkeys' option tells when to trigger re-indenting. Normally these +options are set from an indent script. Like Syntax files, indent scripts will +be created and maintained by many people. + + +Extended search patterns *new-searchpat* +------------------------ + +Added the possibility to match more than one line with a pattern. (partly by +Loic Grenie) +New items in a search pattern for multi-line matches: +\n match end-of-line, also in [] +\_[] match characters in range and end-of-line +\_x match character class and end-of-line +\_. match any character or end-of-line +\_^ match start-of-line, can be used anywhere in the regexp +\_$ match end-of-line, can be used anywhere in the regexp + +Various other new items in search patterns: +\c ignore case for the whole pattern +\C match case for the whole pattern +\m magic on for the following +\M magic off for the following +\v make following characters "very magic" +\V make following characters "very nomagic" + +\@! don't match atom before this. + Example: "foo\(bar\)\@!" matches "foo " but not "foobar". +\@= match atom, resulting in zero-width match + Example: "foo\(bar\)\@=" matches "foo" in "foobar". +\@<! don't match preceding atom before the current position +\@<= match preceding atom before the current position +\@> match preceding atom as a subexpression + +\& match only when branch before and after it match + +\%[] optionally match a list of atoms; "end\%[if]" matches "end", + "endi" and "endif" +\%(\) like \(\), but without creating a back-reference; there can be + any number of these, overcomes the limit of nine \( \) pairs +\%^ match start-of-file (Chase Tingley) +\%$ match end-of-file (Chase Tingley) +\%# Match with the cursor position. (Chase Tingley) +\? Just like "\=" but can't be used in a "?" command. + +\%23l match in line 23 +\%<23l match before line 23 +\%>23l match after line 23 +\%23c, \%<23c, \%>23c match in/before/after column 23 +\%23v, \%<23v, \%>23v match in/before/after virtual column 23 + + +For syntax items: +\z(...\) external reference match set (in region start pattern) +\z1 - \z9 external reference match use (in region skip or end pattern) + (Scott Bigham) + +\zs use position as start of match +\ze use position as end of match + +Removed limit of matching only up to 32767 times with *, \+, etc. + +Added support to match multibyte characters. (partly by Muraoka Taro) +Made "\<" and "\>" work for UTF-8. (Muraoka Taro) + + +UTF-8 support *new-utf-8* +------------- + +Vim can now edit files in UTF-8 encoding. Up to 31 bit characters can be +used, but only 16 bit characters are displayed. Up to two combining +characters are supported, they overprint the preceding character. +Double-wide characters are also supported. See |UTF-8|. + +UCS-2, UCS-4 and UTF-16 encodings are supported too, they are converted to +UTF-8 internally. There is also support for editing Unicode files in a Latin1 +environment. Other encodings are converted with iconv() or an external +converter specified with 'charconvert'. + +Many new items for Multi-byte support: +- Added 'encoding' option: specifies character encoding used inside Vim. It + can be any 8-bit encoding, some double-byte encodings or Unicode. + It is initialized from the environment when a supported value is found. +- Added 'fileencoding' and 'fileencodings': specify character coding in a + file, similar to 'fileformat' and 'fileformats'. + When 'encoding' is "utf-8" and 'fileencodings' is "utf-8,latin1" this will + automatically switch to latin1 if a file does not contain valid UTF-8. +- Added 'bomb' option and detection of a BOM at the start of a file. Can be + used with "ucs-bom" in 'fileencodings' to automatically detect a Unicode + file if it starts with a BOM. Especially useful on MS-Windows (NT and + 2000), which uses ucs-2le files with a BOM (e.g., when exporting the + registry). +- Added the 'termencoding' option: Specifies the encoding used for the + terminal. Useful to put Vim in utf-8 mode while in a non-Unicode locale: > + :let &termencoding = &encoding + :set encoding=utf-8 +- When 'viminfo' contains the 'c' flag, the viminfo file is converted from the + 'encoding' it was written with to the current 'encoding'. +- Added ":scriptencoding" command: convert lines in a sourced script to + 'encoding'. Useful for menu files. +- Added 'guifontwide' to specify a font for double-wide characters. +- Added Korean support for character class detection. Also fix cls() in + search.c. (Chong-Dae Park) +- Win32: Typing multibyte characters without IME. (Alexander Smishlajev) +- Win32 with Mingw: compile with iconv library. (Ron Aaron) +- Win32 with MSVC: dynamically load iconv.dll library. (Muraoka Taro) +- Make it possible to build a version with multibyte and iconv support with + Borland 5.5. (Yasuhiro Matsumoto) +- Added 'delcombine' option: Delete combining character separately. (Ron + Aaron) +- The "xfontset" feature isn't required for "xim". These are now two + independent features. +- XIM: enable XIM when typing a language character (Insert mode, Search + pattern, "f" or "r" command). Disable XIM when typing a Normal mode + command. +- When the XIM is active, show "XIM" in the 'showmode' message. (Nam SungHyun) +- Support "CursorIM" for XIM. (Nam SungHyun) +- Added 'm' flag to 'formatoptions': When wrapping words, allow splitting at + each multibyte character, not only at a space. +- Made ":syntax keyword" work with multibyte characters. +- Added support for Unicode upper/lowercase flipping and comparing. (based on + patch by Raphael Finkel) + Let "~" on multibyte characters that have a third case ("title case") + switch between the three cases. (Raphael Finkel) + +Allow defining digraphs for multibyte characters. +Added RFC1345 digraphs for Unicode. +Most Normal mode commands that accept a character argument, like "r", "t" and +"f" now accept a digraph. The 'D' flag in 'cpoptions' disables this to remain +Vi compatible. + +Added Language mapping and 'keymap' to be able to type multibyte characters: +- Added the ":lmap" command and friends: Define mappings that are used when + typing characters in the language of the text. Also for "r", "t", etc. In + Insert and Command-line mode CTRL-^ switches the use of the mappings on/off. + CTRL-^ also toggles the use of an input method when no language mappings are + present. Allows switching the IM back on halfway typing. +- "<char-123>" argument to ":map", allows to specify the decimal, octal or + hexadecimal value of a character. +- Implemented the 'keymap' option: Load a keymap file. Uses ":lnoremap" to + define mappings for the keymap. The new ":loadkeymap" command is used in + the keymap file. +- Added 'k' flag in 'statusline': Value of "b:keymap_name" or 'keymap' when + it's being used. Uses "<lang>" when no keymap is loaded and ":lmap"s are + active. Show this text in the default statusline too. +- Added the 'iminsert' and 'imsearch' options: Specify use of langmap mappings + and Input Method with an option. (Muraoka Taro) + Added 'imcmdline' option: When set the input method is always enabled when + starting to edit a command line. Useful for a XIM that uses dead keys to + type accented characters. + Added 'imactivatekey' option to better control XIM. (Muraoka Taro) +- When typing a mapping that's not finished yet, display the last character + under the cursor in Insert mode and Command-line mode. Looks good for dead + characters. +- Made the 'langmap' option recognize multibyte characters. But mapping only + works for 8-bit characters. Helps when using UTF-8. +- Use a different cursor for when ":lmap" mappings are active. Can specify + two highlight groups for an item in 'guicursor'. By default "lCursor" and + "Cursor" are equal, the user must set a color he likes. + Use the cursor color for hangul input as well. (Sung-Hyun Nam) +- Show "(lang)" for 'showmode' when language mapping is enabled. +- UTF-8: Made "r" work with a ":lmap" that includes a composing character. + Also works for "f", which now works to find a character that includes a + composing character. + +Other multibyte character additions: +- Support double-byte single-width characters for euc-jp: Characters starting + with 0x8E. Added ScreenLines2[] to store the second byte. + + +Multi-language support *new-multi-lang* +---------------------- + +The messages used in Vim can be translated. Several translations are +available. This uses the gettext mechanism. It allows adding a translation +without recompiling Vim. |multi-lang| (partly by Marcin Dalecki) + +The translation files are in the src/po directory. The src/po/README.txt file +explains a few things about doing a translation. + +Menu translations are available as well. This uses the new |:menutranslate| +command. The translations are found in the runtime directory "lang". This +allows a user to add a translation. + +Added |:language| command to set the language (locale) for messages, time and +character type. This allows switching languages in Vim without changing the +locale outside of Vim. + +Made it possible to have vimtutor use different languages. (Eduardo Fernandez) +Spanish (Eduardo Fernandez), Italian (Antonio Colombo), Japanese (Yasuhiro +Matsumoto) and French (Adrien Beau) translations are included. +Added "vimtutor.bat": script to start Vim on a copy of the tutor file for +MS-Windows. (Dan Sharp) + +- Added v:lang variable to be able to get current language setting. + (Marcin Dalecki) Also v:lc_time and v:ctype. +- Make it possible to translate the dialogs used by the menus. Uses global + "menutrans_" variables. ":menutrans clear" deletes them. +- removed "broken locale" (Marcin Dalecki). +- Don't use color names in icons, use RGB values. The names could be + translated. +- Win32: Added global IME support (Muraoka) +- Win32: Added dynamic loading of IME support. +- ":messages" prints a message about who maintains the messages or the + translations. Useful to find out where to make a remark about a wrong + translation. +- --disable-nls argument for configure: Disable use of gettext(). (Sung-Hyun + Nam) +- Added NLS support for Win32 with the MingW compiler. (Eduardo Fernandez) +- When available, call bind_textdomain_codeset() to have gettext() translate + messages to 'encoding'. This requires GNU gettext 0.10.36 or later. +- Added gettext support for Win32. This means messages will be translated + when the locale is set and libintl.dll can be found. (Muraoka Taro) + Also made it work with MingW compiler. (Eduardo Fernandez) + Detect the language and set $LANG to get the appropriate translated messages + (if supported). Also use $LANG to select a language, v:lang is a very + different kind of name. +- Made gvimext.dll use translated messages, if possible. (Yasuhiro Matsumoto) + + +Plugin support *new-plugins* +-------------- + +To make it really easy to load a Vim script when starting Vim, the "plugin" +runtime directory can be used. All "*.vim" files in it will be automatically +loaded. For Unix, the directory "~/.vim/plugin" is used by default. The +'runtimepath' option can be set to look in other directories for plugins. +|load-plugins| |add-plugin| + +The |:runtime| command has been added to load one or more files in +'runtimepath'. + +Standard plugins: +netrw.vim - Edit files over a network |new-network-files| +gzip.vim - Edit compressed files +explorer.vim - Browse directories |new-file-browser| + +Added support for local help files. |add-local-help|. +When searching for help tags, all "doc/tags" files in 'runtimepath' are used. +Added the ":helptags" command: Generate a tags file for a help directory. +The first line of each help file is automagically added to the "LOCAL +ADDITIONS" section in doc/help.txt. + +Added the <unique> argument to ":map": only add a mapping when it wasn't +defined before. + +When displaying an option value with 'verbose' set will give a message about +where the option was last set. Very useful to find out which script did set +the value. + +The new |:scriptnames| command displays a list of all scripts that have been +sourced. + +GUI: For Athena, Motif and GTK look for a toolbar bitmap in the "bitmaps" +directories in 'runtimepath'. Allows adding your own bitmaps. + + +Filetype plugins *new-filetype-plugins* +----------------- + +A new group of files has been added to do settings for specific file types. +These can be options and mappings which are specifically used for one value of +'filetype'. + +The files are located in "$VIMRUNTIME/ftplugin". The 'runtimepath' option +makes it possible to use several sets of plugins: Your own, system-wide, +included in the Vim distribution, etc. + +To be able to make this work, several features were added: +- Added the "s:" variables, local to a script. Avoids name conflicts with + global variables. They can be used in the script and in functions, + autocommands and user commands defined in the script. They are kept between + invocations of the same script. |s:var| +- Added the global value for local options. This value is used when opening + a new buffer or editing another file. The option value specified in a + modeline or filetype setting is not carried over to another buffer. + ":set" sets both the local and the global value. + ":setlocal" sets the local option value only. + ":setglobal" sets or displays the global value for a local option. + ":setlocal name<" sets a local option to its global value. +- Added the buffer-local value for some global options: 'equalprg', 'makeprg', + 'errorformat', 'grepprg', 'path', 'dictionary', 'thesaurus', 'tags', + 'include' and 'define'. This allows setting a local value for these global + options, without making it incompatible. +- Added mappings and abbreviations local to a buffer: ":map <buffer>". +- In a mapping "<Leader>" can be used to get the value of the "mapleader" + variable. This simplifies mappings that use "mapleader". "<Leader>" + defaults to "\". "<LocalLeader>" does the same with "maplocalleader". This + is to be used for mappings local to a buffer. +- Added <SID> Script ID to define functions and mappings local to a script. +- Added <script> argument to ":noremap" and ":noremenu": Only remap + script-local mappings. Avoids that mappings from other scripts get in the + way, but does allow using mappings defined in the script. +- User commands can be local to a buffer: ":command -buffer". + +The new ":setfiletype" command is used in the filetype detection autocommands, +to avoid that 'filetype' is set twice. + + +File browser *new-file-browser* +------------ + +When editing a directory, the explorer plugin will list the files in the +directory. Pressing <Enter> on a file name edits that file. Pressing <Enter> +on a directory moves the browser to that directory. + +There are several other possibilities, such as opening a file in the preview +window, renaming files and deleting files. + + +Editing files over a network *new-network-files* +---------------------------- + +Files starting with scp://, rcp://, ftp:// and http:// are recognized as +remote files. An attempt is made to access these files with the indicated +method. For http:// only reading is possible, for the others writing is also +supported. Uses the netrw.vim script as a standard "plugin". |netrw| + +Made "gf" work on a URL. It no longer assumes the file is local on the +computer (mostly didn't work anyway, because the full path was required). +Adjusted test2 for this. + +Allow using a URL in 'path'. Makes ":find index.html" work. + +GTK: Allow dropping a http:// and ftp:// URL on Vim. The netrw plugin takes +care of downloading the file. (Mikael Berthe) + + +Window for command-line editing *new-cmdwin* +------------------------------- + +The Command-line window can be used to edit a command-line with Normal and +Insert mode commands. When it is opened it contains the history. This allows +copying parts of previous command lines. |cmdwin| + +The command-line window can be opened from the command-line with the key +specified by the 'cedit' option (like Nvi). It can also be opened directly +from Normal mode with "q:", "q/" and "q?". + +The 'cmdwinheight' is used to specify the initial height of the window. + +In Insert mode CTRL-X CTRL-V can be used to complete an Ex command line, like +it's done on the command-line. This is also useful for writing Vim scripts! + +Additionally, there is "improved Ex mode". Entered when Vim is started as +"exim" or "vim -E", and with the "gQ" command. Works like repeated use of +":", with full command-line editing and completion. (Ulf Carlsson) + + +Debugging mode *new-debug-mode* +-------------- + +In debugging mode sourced scripts and user functions can be executed line by +line. There are commands to step over a command or step into it. |debug-mode| + +Breakpoints can be set to run until a certain line in a script or user +function is executed. |:breakadd| + +Debugging can be started with ":debug {cmd}" to debug what happens when a +command executes. The |-D| argument can be used to debug while starting up. + + +Cursor in virtual position *new-virtedit* +-------------------------- + +Added the 'virtualedit' option: Allow positioning the cursor where there is no +actual character in Insert mode, Visual mode or always. (Matthias Kramm) +This is especially useful in Visual-block mode. It allows positioning a +corner of the area where there is no text character. (Many improvements by +Chase Tingley) + + +Debugger interface *new-debug-itf* +------------------ + +This was originally made to work with Sun Visual Workshop. (Gordon Prieur) +See |debugger.txt|, |sign.txt| and |workshop.txt|. + +Added the ":sign" command to define and place signs. They can be displayed +with two ASCII characters or an icon. The line after it can be highlighted. +Useful to display breakpoints and the current PC position. + +Added the :wsverb command to execute debugger commands. + +Added balloon stuff: 'balloondelay' and 'ballooneval' options. + +Added "icon=" argument for ":menu". Allows defining a specific icon for a +ToolBar item. + + +Communication between Vims *new-vim-server* +-------------------------- + +Added communication between two Vims. Makes it possible to send commands from +one Vim to another. Works for X-Windows and MS-Windows |clientserver|. + +Use "--remote" to have files be edited in an already running Vim. +Use "--remote-wait" to do the same and wait for the editing to finish. +Use "--remote-send" to send commands from one Vim to another. +Use "--remote-expr" to have an expression evaluated in another Vim. +Use "--serverlist" to list the currently available Vim servers. (X only) +There are also functions to communicate between the server and the client. +|remote_send()| |remote_expr()| + +(X-windows version implemented by Flemming Madsen, MS-Windows version by Paul +Moore) + +Added the command server name to the window title, so you can see which server +name belongs to which Vim. + +Removed the OleVim directory and SendToVim.exe and EditWithVim.exe from the +distribution. Can now use "gvim --remote" and "gvim --remote-send", which is +portable. + +GTK+: Support running Vim inside another window. Uses the --socketid argument +(Neil Bird) + + +Buffer type options *new-buftype* +------------------- + +The 'buftype' and 'bufhidden' options have been added. They can be set to +have different kinds of buffers. For example: +- 'buftype' = "quickfix": buffer with error list +- 'buftype' = "nofile" and 'bufhidden' = "delete": scratch buffer that will be + deleted as soon as there is no window displaying it. + +'bufhidden' can be used to overrule the 'hidden' option for one buffer. + +In combination with 'buflisted' and 'swapfile' this offers the possibility to +use various kinds of special buffers. See |special-buffers|. + + +Printing *new-printing* +-------- + +Included first implementation of the ":hardcopy" command for printing +to paper. For MS-Windows any installed printer can be used. For other +systems a PostScript file is generated, which can be printed with the +'printexpr' option. +(MS-Windows part by Vince Negri, Vipin Aravind, PostScript by Vince Negri and +Mike Williams) + +Made ":hardcopy" work with multibyte characters. (Muraoka Taro, Yasuhiro +Matsumoto) + +Added options to tune the way printing works: (Vince Negri) +- 'printoptions' defines various things. +- 'printheader' specifies the header format. Added "N" field to 'statusline' + for the page number. +- 'printfont' specifies the font name and attributes. +- 'printdevice' defines the default printer for ":hardcopy!". + + +Ports *ports-6* +----- + +Port to OS/390 Unix (Ralf Schandl) +- A lot of changes to handle EBCDIC encoding. +- Changed Ctrl('x') to Ctrl_x define. + +Included jsbmouse support. (Darren Garth) +Support for dec mouse in Unix. (Steve Wall) + +Port to 16-bit MS-Windows (Windows 3.1x) (Vince Negri) + +Port to QNX. Supports the Photon GUI, mouse, etc. (Julian Kinraid) + +Allow cross-compiling the Win32 version with Make_ming.mak. (Ron Aaron) +Added Python support for compiling with Mingw. (Ron Aaron) + +Dos 32 bit: Added support the Windows clipboard. (David Kotchan) + +Win32: Dynamically load Perl and Python. Allows compiling Vim with these +interfaces and will try to find the DLLs at runtime. (Muraoka Taro) + +Compiling the Win32 GUI with Cygwin. Also compile vimrun, dosinst and +uninstall. (Gerfried) + +Mac: Make Vim compile with the free MPW compiler supplied by Apple. And +updates for CodeWarrior. (Axel Kielhorn) + +Added typecasts and ifdefs as a start to make Vim work on Win64 (George +Reilly) + + +Quickfix extended *quickfix-6* +----------------- + +Added the "error window". It contains all the errors of the current error +list. Pressing <Enter> in a line makes Vim jump to that line (in another +window). This makes it easy to navigate through the error list. +|quickfix-window|. + +- |:copen| opens the quickfix window. +- |:cclose| closes the quickfix window. +- |:cwindow| takes care that there is a quickfix window only when there are + recognized errors. (Dan Sharp) + +- Quickfix also knows "info", next to "warning" and "error" types. "%I" can be + used for the start of a multi-line informational message. (Tony Leneis) +- The "%p" argument can be used in 'errorformat' to get the column number from + a line where "^" points to the column. (Stefan Roemer) +- When using "%f" in 'errorformat' on a DOS/Windows system, also include "c:" + in the filename, even when using "%f:". + + +Operator modifiers *new-operator-mod* +------------------ + +Insert "v", "V" or CTRL-V between an operator and a motion command to force +the operator to work characterwise, linewise or blockwise. |o_v| + + +Search Path *new-search-path* +----------- + +Vim can search in a directory tree not only in downwards but also upwards. +Works for the 'path', 'cdpath' and 'tags' options. (Ralf Schandl) + +Also use "**" for 'tags' option. (Ralf Schandl) + +Added 'includeexpr', can be used to modify file name found by 'include' +option. +Also use 'includeexpr' for "gf" and "<cfile>" when the file can't be found +without modification. Useful for doing "gf" on the name after an include or +import statement. + +Added the 'cdpath' option: Locations to find a ":cd" argument. (Raf) + +Added the 'suffixesadd' option: Suffixes to be added to a file name when +searching for a file for the "gf", "[I", etc. commands. + + +Writing files improved *new-file-writing* +---------------------- + +Added the 'backupcopy' option: Select whether a file is to be copied or +renamed to make a backup file. Useful on Unix to speed up writing an ordinary +file. Useful on other systems to preserve file attributes and when editing a +file on a Unix filesystem. + +Added the 'autowriteall' option. Works like 'autowrite' but for more +commands. + +Added the 'backupskip' option: A list of file patterns to skip making a backup +file when it matches. The default for Unix includes "/tmp/*", this makes +"crontab -e" work. + +Added support for Access Control Lists (ACL) for FreeBSD and Win32. The ACL +is copied from the original file to the new file (or the backup if it's +copied). +ACL is also supported for AIX, Solaris and generic POSIX. (Tomas Ogren) +And on SGI. + + +Argument list *new-argument-list* +------------- + +The support for the argument list has been extended. It can now be +manipulated to contain the files you want it to contain. + +The argument list can now be local to a window. It is created with the +|:arglocal| command. The |:argglobal| command can be used to go back to the +global argument list. + +The |:argdo| command executes a command on all files in the argument list. + +File names can be added to the argument list with |:argadd|. File names can +be removed with |:argdelete|. + +"##" can be used like "#", it is replaced by all the names in the argument +list concatenated. Useful for ":grep foo ##". + +The |:argedit| adds a file to the argument list and edits it. Like ":argadd" +and then ":edit". + + +Restore a View *new-View* +-------------- + +The ":mkview" command writes a Vim script with the settings and mappings for +one window. When the created file is sourced, the view of the window is +restored. It's like ":mksession" for one window. +The View also contains the local argument list and manually created, opened +and closed folds. + +Added the ":loadview" command and the 'viewdir' option: Allows for saving and +restoring views of a file with simple commands. ":mkview 1" saves view 1 for +the current file, ":loadview 1" loads it again. Also allows quickly switching +between two views on one file. And saving and restoring manual folds and the +folding state. + +Added 'viewoptions' to specify how ":mkview" works. + +":mksession" now also works fine with vertical splits. It has been further +improved and restores the view of each window. It also works properly with +preview and quickfix windows. + +'sessionoptions' is used for ":mkview" as well. +Added "curdir" and "sesdir" to 'sessionoptions'. Allows selection of what +the current directory will be restored to. + +The session file now also contains the argument list(s). + + +Color schemes *new-color-schemes* +------------- + +Support for loading a color scheme. Added the ":colorscheme" command. +Automatically add menu entries for available schemes. +Should now properly reset the colors when 'background' or 't_Co' is changed. +":highlight clear" sets the default colors again. +":syntax reset" sets the syntax highlight colors back to the defaults. +For ":set bg&" guess the value. This allows a color scheme to switch back to +the default colors. +When syntax highlighting is switched on and a color scheme was defined, reload +the color scheme to define the colors. + + +Various new items *new-items-6* +----------------- + +Normal mode commands: ~ + +"gi" Jump to the ^ mark and start Insert mode. Also works when the + mark is just after the line. |gi| + +"g'm" and "g`m" + Jump to a mark without changing the jumplist. Now you can use + g`" to jump to the last known position in a file without side + effects. Also useful in mappings. + +[', [`, ]' and ]` + move the cursor to the next/previous lowercase mark. + +g_ Go to last non-blank in line. (Steve Wall) + + +Options: ~ + +'autoread' When detected that a file changed outside of Vim, + automatically read a buffer again when it's not changed. + It has a global and a local value. Use ":setlocal autoread<" + to go back to using the global value for 'autoread'. + +'debug' When set to "msg" it will print error messages that would + otherwise be omitted. Useful for debugging 'indentexpr' and + 'foldexpr'. + +'lispwords' List of words used for lisp indenting. It was previously hard + coded. Added a number of Lisp names to the default. + +'fold...' Many new options for folding. + +'modifiable' When off, it is impossible to make changes to a buffer. + The %m and %M items in 'statusline' show a '-'. + +'previewwindow' Set in the preview window. Used in a session file to mark a + window as the preview window. + +'printfont' +'printexpr' +'printheader' +'printdevice' +'printoptions' for ":hardcopy". + +'buflisted' Makes a buffer appear in the buffer list or not. + +Use "vim{version}:" for modelines, only to be executed when the version is +>= {version}. Also "vim>{version}", "vim<{version}" and "vim={version}". + + +Ex commands: ~ + +:sav[eas][!] {file} + Works like ":w file" and ":e #", but without loading the file + again and avoiding other side effects. |:saveas| + +:silent[!] {cmd} + Execute a command silently. Also don't use a delay that would + come after the message. And don't do 'showmatch'. + RISCOS: Removed that "!~cmd" didn't output anything, and + didn't wait for <Enter> afterwards. Can use ":silent !cmd" + now. +:menu <silent> Add a menu that won't echo Ex commands. +:map <silent> Add a mapping that won't echo Ex commands. + +:checktime Check for changed buffers. + +:verbose {cmd} Set 'verbose' for one command. + +:echomsg {expr} +:echoerr {expr} Like ":echo" but store the message in the history. (Mark + Waggoner) + +:grepadd Works just like ":grep" but adds to the current error list + instead of defining a new list. |:grepadd| + +:finish Finish sourcing a file. Can be used to skip the rest of a Vim + script. |:finish| + +:leftabove +:aboveleft Split left/above current window. + +:rightbelow +:belowright Split right/below current window. + +:first, :bfirst, :ptfirst, etc. + Alias for ":rewind". It's more logical compared to ":last". + +:enew Edit a new, unnamed buffer. This is needed, because ":edit" + re-edits the same file. (Wall) + +:quitall Same as ":qall". + +:match Define match highlighting local to a window. Allows + highlighting an item in the current window without interfering + with syntax highlighting. + +:menu enable +:menu disable Commands to enable/disable menu entries without removing them. + (Monish Shah) + +:windo Execute a command in all windows. +:bufdo Execute a command in all buffers. + +:wincmd Window (CTRL-W) command. Useful when a Normal mode command + can't be used (e.g., for a CursorHold autocommand). See + |CursorHold-example| for a nice application with it. + +:lcd and :lchdir + Set local directory for a window. (Benjie Chen) + +:hide {command} + Execute {command} with 'hidden' set. + +:emenu in Visual mode to execute a ":vmenu" entry. + +:popup Pop up a popup menu. + +:redraw Redraw the screen even when busy with a script or function. + +:hardcopy Print to paper. + +:compiler Load a Vim script to do settings for a specific compiler. + +:z# List numbered lines. (Bohdan Vlasyuk) + + +New marks: ~ + +'( and ') Begin or end of current sentence. Useful in Ex commands. +'{ and '} Begin or end of current paragraph. Useful in Ex commands. +'. Position of the last change in the current buffer. +'^ Position where Insert mode was stopped. + +Store the ^ and . marks in the viminfo file. Makes it possible to jump to the +last insert position or changed text. + + +New functions: ~ +argidx() Current index in argument list. +buflisted() Checks if the buffer exists and has 'buflisted' set. +cindent() Get indent according to 'cindent'. +eventhandler() Returns 1 when inside an event handler and interactive + commands can't be used. +executable() Checks if a program or batch script can be executed. +filewritable() Checks if a file can be written. (Ron Aaron) +foldclosed() Find out if there is a closed fold. (Johannes Zellner). +foldclosedend() Find the end of a closed fold. +foldlevel() Find out the foldlevel. (Johannes Zellner) +foreground() Move the GUI window to the foreground. +getchar() Get one character from the user. Can be used to define a + mapping that takes an argument. +getcharmod() Get last used key modifier. +getbufvar() gets the value of an option or local variable in a buffer (Ron + Aaron) +getfsize() Return the size of a file. +getwinvar() gets the value of an option or local variable in a window (Ron + Aaron) +globpath() Find matching files in a list of directories. +hasmapto() Detect if a mapping to a string is already present. +iconv() Convert a string from one encoding to another. +indent() gets the indent of a line (Ron Aaron) +inputdialog() Like input() but use a GUI dialog when possible. Currently + only works for Win32, Motif, Athena and GTK. + Use inputdialog() for the Edit/Settings/Text Width menu. Also + for the Help/Find.. and Toolbar FindHelp items. + (Win32 support by Thore B. Karlsen) + (Win16 support by Vince Negri) +inputsecret() Ask the user to type a string without showing the typed keys. + (Charles Campbell) +libcall() for Unix (Neil Bird, Johannes Zellner, Stephen Wall) +libcallnr() for Win32 and Unix +lispindent() Get indent according to 'lisp'. +mode() Return a string that indicates the current mode. +nextnonblank() Skip blank lines forwards. +prevnonblank() Skip blank lines backwards. Useful to for indent scripts. +resolve() MS-Windows: resolve a shortcut to the file it points to. + Unix: resolve a symbolic link. +search() Search for a pattern. +searchpair() Search for matching pair. Can be used in indent files to find + the "if" matching an endif. +setbufvar() sets an option or variable local to a buffer (Ron Aaron) +setwinvar() sets an option or variable local to a window (Ron Aaron) +stridx() Search for first occurrence of one string in another. +strridx() Search for last occurrence of one string in another. +tolower() Convert string to all-lowercase. +toupper() Convert string to all-uppercase. +type() Check the type of an expression. +wincol() window column of the cursor +winwidth() Width of a window. (Johannes Zellner) +winline() window line of the cursor + + +Added expansion of curly braces in variable and function names. This can be +used for variable names that include the value of an option. Or a primitive +form of arrays. (Vince Negri) + + +New autocommand events: ~ +BufWinEnter Triggered when a buffer is displayed in a window, after using + the modelines. Can be used to load a view. +BufWinLeave Triggered when a buffer is no longer in a window. Also + triggered when exiting Vim. Can be used to save views. +FileChangedRO Triggered before making the first change to a read-only file. + Can be used to check-out the file. (Scott Graham) +TermResponse Triggered when the terminal replies to the version-request. + The v:termresponse internal variable holds the result. Can be + used to react to the version of the terminal. (Ronald Schild) +FileReadCmd Triggered before reading a file. +BufReadCmd Triggered before reading a file into a buffer. +FileWriteCmd Triggered before writing a file. +BufWriteCmd Triggered before writing a buffer into a file. +FileAppendCmd Triggered before appending to a file. +FuncUndefined Triggered when a user function is not defined. (Ron Aaron) + +The autocommands for the *Cmd events read or write the file instead of normal +file read/write. Use this in netrw.vim to be able to edit files on a remote +system. (Charles Campbell) + + +New Syntax files: ~ + +bdf BDF font definition (Nikolai Weibull) +catalog SGML catalog (Johannes Zellner) +debchangelog Debian Changelog (Wichert Akkerman) +debcontrol Debian Control (Wichert Akkerman) +dot dot (Markus Mottl) +dsl DSSSL syntax (Johannes Zellner) +eterm Eterm configuration (Nikolai Weibull) +indent Indent profile (Nikolai Weibull) +lftp LFTP (Nikolai Weibull) +lynx Lynx config (Doug Kearns) +mush mush sourcecode (Bek Oberin) +natural Natural (Marko Leipert) +pilrc Pal resource compiler (Brian Schau) +plm PL/M (Philippe Coulonges) +povini Povray configuration (David Necas) +ratpoison Ratpoison config/command (Doug Kearns) +readline readline config (Nikolai Weibull) +screen Screen RC (Nikolai Weibull) +specman Specman (Or Freund) +sqlforms SQL*Forms (Austin Ziegler) +terminfo terminfo (Nikolai Weibull) +tidy Tidy configuration (Doug Kearns) +wget Wget configuration (Doug Kearns) + + +Updated many syntax files to work both with Vim 5.7 and 6.0. + +Interface to Ruby. (Shugo Maeda) +Support dynamic loading of the Ruby interface on MS-Windows. (Muraoka Taro) +Support this for Mingw too. (Benoit Cerrina) + +Win32: Added possibility to load TCL dynamically. (Muraoka Taro) +Also for Borland 5.5. (Dan Sharp) + +Win32: When editing a file that is a shortcut (*.lnk file), edit the file it +links to. Unless 'binary' is set, then edit the shortcut file itself. +(Yasuhiro Matsumoto) + +The ":command" command now accepts a "-bar" argument. This allows the user +command to be followed by "| command". + +The preview window is now also used by these commands: +- |:pedit| edits the specified file in the preview window +- |:psearch| searches for a word in included files, like |:ijump|, and + displays the found text in the preview window. +Added the CTRL-W P command: go to preview window. + +MS-DOS and MS-Windows also read the system-wide vimrc file $VIM/vimrc. Mostly +for NT systems with multiple users. + +A double-click of the mouse on a character that has a "%" match selects from +that character to the match. Similar to "v%". + +"-S session.vim" argument: Source a script file when starting up. Convenient +way to start Vim with a session file. + +Added "--cmd {command}" Vim argument to execute a command before a vimrc file +is loaded. (Vince Negri) + +Added the "-M" Vim argument: reset 'modifiable' and 'write', thus disallow +making changes and writing files. + +Added runtime/delmenu.vim. Source this to remove all menus and prepare for +loading new menus. Useful when changing 'langmenu'. + +Perl script to filter Perl error messages to quickfix usable format. (Joerg +Ziefle) + +Added runtime/macros/less.vim: Vim script to simulate less, but with syntax +highlighting. + +MS-Windows install program: (Jon Merz) +- The Win32 program can now create shortcuts on the desktop and install Vim in + the Start menu. +- Possibly remove old "Edit with Vim" entries. +- The Vim executable is never moved or $PATH changed. A small batch file is + created in a directory in $PATH. Fewer choices to be made. +- Detect already installed Vim versions and offer to uninstall them first. + +Improved the MS-Windows uninstal program. It now also deletes the entries in +the Start menu, icons from the desktop and the created batch files. (Jon Merz) +Also made it possible to delete only some of these. Also unregister gvim for +OLE. + +Generate a self-installing Vim package for MS-Windows. This uses NSIS. (Jon +Merz et al.) + +Added ":filetype detect". Try detecting the filetype again. Helps when +writing a new shell script, after adding "#!/bin/csh". + +Added ":augroup! name" to delete an autocommand group. Needed for the +client-server "--remote-wait". + +Add the Vim version number to the viminfo file, useful for debugging. + +============================================================================== +IMPROVEMENTS *improvements-6* + +Added the 'n' flag in 'cpoptions': When omitted text of wrapped lines is not +put between line numbers from 'number' option. Makes it a lot easier to read +wrapped lines. + +When there is a format error in a tags file, the byte position is reported so +that the error can be located. + +"gf" works in Visual mode: Use the selected text as the file name. (Chase +Tingley) + +Allow ambiguous mappings. Thus "aa" and "aaa" can both be mapped, the longest +matching one is used. Especially useful for ":lmap" and 'keymap'. + +Encryption: Ask the key to be typed twice when crypting the first time. +Otherwise a typo might cause the text to be lost forever. (Chase Tingley) + +The window title now has "VIM" on the end. The file name comes first, useful +in the taskbar. A "+" is added when the file is modified. "=" is added for +a read-only file. "-" is added for a file with 'modifiable' off. + +In Visual mode, mention the size of the selected area in the 'showcmd' +position. + +Added the "b:changedtick" variable. Incremented at each change, also for +undo. Can be used to take action only if the buffer has been changed. + +In the replacement string of a ":s" command "\=" can be used to replace with +the result of an expression. From this expression the submatch() function can +be used to access submatches. + +When doing ":qall" and there is a change in a buffer that is being edited in +another window, jump to that window, instead of editing that buffer in the +current window. + +Added the "++enc=" and "++ff=" arguments to file read/write commands to force +using the given 'encoding' or 'fileformat'. And added the "v:cmdarg" +variable, to be used for FileReadCmd autocommands that read/write the file +themselves. + +When reading stdin, first read the text in binary mode and then re-read it +with automatic selection of 'fileformat' and 'fileencoding'. This avoids +problems with not being able to rewind the file (e.g., when a line near the +end of the file ends in LF instead of CR-LF). +When reading text from stdin and the buffer is empty, don't mark it changed. +Allows exiting without trouble. + +Added an ID to many error messages. This will make it easier to find help for +a message. + +Insert mode: +- "CTRL-G j" and "CTRL-G k" can be used to insert in another line in the same + column. Useful for editing a table. +- Added Thesaurus completion with CTRL-X CTRL-T. (Vince Negri) +- Added the 'thesaurus' option, to use instead of 'dictionary' for thesaurus + completion. Added the 's' flag in 'complete'. +- Made CTRL-X CTRL-L in Insert mode use the 'complete' option. It now also + scans other loaded buffers for matching lines. +- CTRL-R now also works in Insert mode while doing completion with CTRL-X or + CTRL-N. (Neil Bird) +- When doing Insert mode completion, when completion is finished check for a + match with words from 'cinkeys' or 'indentkeys'. + +Performance: +- Made display updating more efficient. Insert/delete lines may be used for + all changes, also for undo/redo. +- The display is not redrawn when there is typeahead in Insert mode. Speeds + up CTRL-R a lot. +- Improved speed of screen output for 32 bit DOS version. (Vince Negri) +- When dragging with the mouse, there is a lookahead to skip mouse codes when + there is another one next. Makes dragging with the mouse a lot faster. +- Also a memory usage improvement: When calling u_save with a single line, + don't save it if the line was recently saved for the same undo already. +- When using a script that appends one character at a time, the amount of + allocated memory was growing steadily. Also when 'undolevels' is -1. + Caused by the line saved for "U" never to be freed. Now free an undo block + when it becomes empty. +- GUI and Dos32: Use a vertical scroll region, to make scrolling in a + vertically split window faster. No need to redraw the whole window. +- When scrolling isn't possible with terminal codes (e.g., for a vertically + split window) redraw from ScreenLines[]. That should be faster than going + through the lines with win_line(), especially when using syntax + highlighting. +- The Syntax menu is now pre-generated by a separate script. Makes loading + the menu 70% faster. This can halve the startup time of gvim. +- When doing ":help tag", don't open help.txt first, jump directly to the help + tag. It's faster and avoids an extra message. +- Win32: When a file name doesn't end in ".lnk" don't try resolving a + shortcut, it takes quite a bit of time. +- Don't update the mouse pointer shape while there are typeahead characters. +- Change META[] from a string into an array, avoids using strchr() on it. +- Don't clear the command line when adding characters, avoids that screen_fill + is called but doesn't do anything. + +Robustness: +- Unix: Check for running out of stack space when executing a regexp. Avoids + a nasty crash. Only works when the system supports running the signal + function on another stack. +- Disallow ":source <dirname>". On unix it's possible to read a directory, + does not make sense to use it as Vim commands. + +Security: +- When reading from or writing to a temporary file, check that it isn't a + symbolic link. Gives some protection against symlink attacks. +- When creating a backup file copy or a swap file, check for it already + existing to avoid a symlink attack. (Colin Phipps) +- Evaluating options which are an expression is done in a |sandbox|. If the + option was set by a modeline, it cannot cause damage. +- Use a secure way to generate temp file names: Create a private directory for + temp files. Used for Unix, MS-DOS and OS/2. +- 'makeef' can be empty, which means that an internally generated file name is + used. The old default was "/tmp/file", which is a security risk. + Writing 'makeef' in the current directory fails in a read-only directory and + causes trouble when using ":grep" on all files. Made the default empty for + all systems, so that a temp file is used. +- The command from a tags file is executed in the sandbox for better security. +- The Ruby, Tcl and Python interfaces cannot be used from the sandbox. They + might do dangerous things. Perl is still possible, but limited to the Safe + environment. (Donnie Smith) + +Syntax highlighting: +- Optimized the speed by caching the state stack all over the file, not just + the part being displayed. Required for folding. +- Added ":syntax sync fromstart": Always parse from the start of the file. +- Added the "display" argument for syntax items: use the item only when + displaying the result. Can make parsing faster for text that isn't going to + be displayed. +- When using CTRL-L, the cached states are deleted, to force parsing the text + again. +- Use elfhash algorithm for table of keywords. This should give a better + distribution and speedup keyword lookup. (Campbell) +- Also allow the "lc" leading context for skip and end patterns. (Scott + Bigham) +- Syntax items can have the "extend" argument to undo the effect of a + "keepend" argument of an item it is contained in. Makes it possible to have + some contained items extend a region while others don't. +- ":syntax clear" now deletes the b:current_syntax variable. That's logical, + since no syntax is defined after this command. +- Added ":syntax enable": switch on syntax highlighting without changing the + colors. This allows specifying the colors in the .vimrc file without the + need for a mysyntaxfile. +- Added ":syntax reset": reset the colors to their defaults. +- Added the "contains=TOP" and "contains=CONTAINED" arguments. Makes it + possible to define a transparent item that doesn't contain itself. +- Added a "containedin" argument to syntax items. Allows adding a contained + item to an existing item (e.g., to highlight a name in a comment). + +Modeless selection: +- When in the command-line window, use modeless selection in the other + windows. Makes it possible to copy visible text to the command-line window. +- Support modeless selection on the cmdline in a terminal. Previously it was + only possible for the GUI. +- Make double-right-click in modeless selection select a whole word. Single + right click doesn't use the word selection started by a double-left-click. + Makes it work like in Visual mode. +- The modeless selection no longer has an implied automatic copy to the + clipboard. It now obeys the 'a' and 'A' flags in 'guioptions' or + "autoselect" and "autoselectml" in 'clipboard'. +- Added the CTRL-Y command in Cmdline-mode to copy the modeless selection to + the clipboard. Also works at the hit-enter prompt and the more prompt. + Removed the mappings in runtime/mswin.vim for CTRL-Y and CTRL-Z in + cmdline-mode to be able to use CTRL-Y in the new way. + +Reduced the amount of stack space used by regmatch() to allow it to handle +complicated patterns on a longer text. + +'isfname' now includes '%' and '#'. Makes "vim dir\#file" work for MS-DOS. + +Added keypad special keys <kEnter>, <k0> - <k9>. When not mapped they behave +like the ASCII equivalent. (Ivan Wellesz and Vince Negri) +Recognize a few more xterm keys: <C-Right>, <C-Left>, <C-End>, <C-Home> + +Also trigger the BufUnload event when Vim is going to exit. Perhaps a script +needs to do some cleaning up. + +Expand expression in backticks: `={expr}`. Can be used where backtick +expansion is done. (Vince Negri) + +GUI: +- Added 'L' and 'R' flags in 'guioptions': Add a left or right scrollbar only + when there is a vertically split window. +- X11: When a color can't be allocated, use the nearest match from the + colormap. This avoids that black is used for many things. (Monish Shah) + Also do this for the menu and scrollbar, to avoid that they become black. +- Win32 and X11: Added 'mouseshape' option: Adjust the mouse pointer shape to + the current mode. (Vince Negri) +- Added the 'linespace' option: Insert a pixel line between lines. (Nam) +- Allow modeless selection (without moving the cursor) by keeping CTRL and + SHIFT pressed. (Ivan Wellesz) +- Motif: added toolbar. (Gordon Prieur) Also added tooltips. +- Athena: added toolbar and tooltips. (David Harrison -- based on Gordon + Prieur's work) +- Made the 'toolbar' option work for Athena and Motif. Can now switch between + text and icons on the fly. (David Harrison) +- Support menu separator lines for Athena. (David Harrison) +- Athena: Adjust the arrow pixmap used in a pullright menu to the size of the + font. (David Harrison) +- Win32: Added "c" flag to 'guifont' to be able to specify the charset. (Artem + Khodush) +- When no --enable-xim argument is given, automatically enable it when a X GUI + is used. Required for dead key support (and multibyte input). +- After a file selection dialog, check that the edited files were not changed + or deleted. The Win32 dialog allows deleting and renaming files. +- Motif and Athena: Added support for "editres". (Marcin Dalecki) +- Motif and Athena: Added "menuFont" to be able to specify a font or fontset + for the menus. Can also be set with the "Menu" highlight group. Useful + when the locale is different from 'encoding'. (David Harrison) + When FONTSET_ALWAYS is defined, always use a fontset for the menus. Should + avoid trouble with changing from a font to a fontset. (David Harrison) +- Highlighting and font for the tooltips can be specified with the "Tooltip" + highlight group. (David Harrison) +- The Cmdline-mode menus can be used at the more-prompt. This mostly works + fine, because they start with a CTRL-C. The "Copy" menu works to copy the + modeless selection. Allows copying the output of ":set all" or ":intro" + without auto-selection. +- When starting the GUI when there is no terminal connected to stdout and + stderr, display error messages in a dialog. Previously they wouldn't be + displayed at all. +- Allow setting 'browsedir' to the name of a directory, to be used for the + file dialog. (Dan Sharp) +- b:browsefilter and g:browsefilter can be set to the filters used for the + file dialog. Supported for Win32 and Motif GUI. (Dan Sharp) + +X11: +- Support for the clipboard selection as register "+. When exiting or + suspending copy the selection to cut buffer 0. Should allow copy/paste with + more applications in a X11-standard way. (Neil Bird) +- Use the X clipboard in any terminal, not just in an xterm. + Added "exclude:" in 'clipboard': Specify a pattern to match against terminal + names for which no connection should be made to the X server. The default + currently work for FreeBSD and Linux consoles. +- Added a few messages for when 'verbose' is non-zero to show what happens + when trying to connect to the X server. Should help when trying to find out + why startup is slow. + +GTK GUI: (partly by Marcin Dalecki) +- With some fonts the characters can be taller than ascent + descent. E.g., + "-misc-fixed-*-*-*-*-18-*-*-*-*-*-iso10646-1". Add one to the character + cell height. +- Implement "no" value for 'winaltkeys': don't use Alt-Key as a menu shortcut, + when 'wak' changed after creating the menus. +- Setting 'wak' after the GUI started works. +- recycle text GC's to reduce communication. +- Adjust icon size to window manager. +- Cleanup in font handling. +- Replace XQueryColor with GDK calls. +- Gnome support. Detects Gnome in configure and uses different widgets. + Otherwise it's much like GTK. (Andy Kahn) + It is disabled by default, because it causes a few problems. +- Removed the special code to fork first and then start the GUI. Now use + _exit() instead of exit(), this works fine without special tricks. +- Dialogs sometimes appeared a bit far away. Position the dialogs inside + the gvim window. (Brent Verner) +- When dropping a file on Vim, remove extra slashes from the start of the + path. Also shorten the file name if possible. + +Motif: (Marcin Dalecki) +- Made the dialog layout better. +- Added find and find/replace dialogs. +- For the menus, change "iso-8859" to "iso_8859", Linux appears to need this. +- Added icon to dialogs, like for GTK. +- Use XPM bitmaps for the icon when possible. Use the Solaris XpmP.h include + file when it's available. +- Change the shadow of the toolbar items to get a visual feedback of it being + pressed on non-LessTif. +- Use gadgets instead of windows for some items for speed. + +Command line completion: +- Complete environment variable names. (Mike Steed) +- For ":command", added a few completion methods: "mapping", "function", + "expression" and "environment". +- When a function doesn't take arguments, let completion add () instead of (. + +For MS-DOS, MS-Windows and OS/2: Expand %VAR% environment variables like $VAR. +(Walter Briscoe) + +Redirect messages to the clipboard ":redir @*" and to the unnamed register +":redir @"". (Wall) + +":let @/ = ''" clears the search pattern, instead of setting it to an empty +string. + +Expression evaluation: +- "? :" can be used like in C. +- col("$") returns the length of the cursor line plus one. (Stephen P. Wall) +- Optional extra argument for match(), matchend() and matchstr(): Offset to + start looking for a match. +- Made third argument to strpart() optional. (Paul Moore, Zdenek Sekera) +- exists() can also be used to check for Ex commands and defined autocommands. +- Added extra argument to input(): Default text. +- Also set "v:errmsg" when using ":silent! cmd". +- Added the v:prevcount variable: v:count for the previous command. +- Added "v:progname", name with which Vim was started. (Vince Negri) +- In the verbose message about returning from a function, also show the return + value. + +Cscope: +- Added the cscope_connection() function. (Andy Kahn) +- ":cscope kill -1" kills all cscope connections. (Andy Kahn) +- Added the 'cscopepathcomp' option. (Scott Hauck) +- Added ":scscope" command, split window and execute Cscope command. (Jason + Duell) + +VMS: +- Command line arguments are always uppercase. Interpret a "-X" argument as + "-x" and "-/X" as "-X". +- Set 'makeprg' and 'grepprg' to meaningful defaults. (Zoltan Arpadffy) +- Use the X-clipboard feature and the X command server. (Zoltan Arpadffy) + +Macintosh: (Dany St-Amant) +- Allow a tags file to have CR, CR-LF or LF line separator. (Axel Kielhorn) +- Carbonized (while keeping non Carbon code) + (Some work "stolen" from Ammon Skidmore) +- Improved the menu item index handling (should be faster) +- Runtime commands now handle / in file name (MacOS 9 version) +- Added ":winpos" support. +- Support using "~" in file names for home directory. + +Options: +- When using set += or ^= , check for items used twice. Duplicates are + removed. (Vince Negri) +- When setting an option that is a list of flags, remove duplicate flags. +- If possible, use getrlimit() to set 'maxmemtot' and 'maxmem'. (Pina) +- Added "alpha" to 'nrformats': increment or decrement an alphabetic character + with CTRL-A and CTRL-X. +- ":set opt&vi" sets an option to its Vi default, ":set opt&vim" to its Vim + default. Useful to set 'cpo' to its Vim default without knowing what flags + that includes. +- 'scrolloff' now also applies to a long, wrapped line that doesn't fit in the + window. +- Added more option settings to the default menus. +- Updated the option window with new options. Made it a bit easier to read. + +Internal changes: +- Split line pointers in text part and attributes part. Allows for future + change to make attribute more than one byte. +- Provide a qsort() function for systems that don't have it. +- Changed the big switch for Normal mode commands into a table. This cleans + up the code considerably and avoids trouble for some optimizing compilers. +- Assigned a negative value to special keys, to avoid them being mixed up with + Unicode characters. +- Global variables expand_context and expand_pattern were not supposed to be + global. Pass them to ExpandOne() and all functions called by it. +- No longer use the global reg_ic flag. It caused trouble and in a few places + it was not set. +- Removed the use of the stuff buffer for "*", "K", CTRL-], etc. Avoids + problem with autocommands. +- Moved some code from ex_docmd.c to ex_cmds2.c. The file was getting too + big. Also moved some code from screen.c to move.c. +- Don't include the CRC table for encryption, generate it. Saves quite a bit + of space in the source code. (Matthias Kramm) +- Renamed multibyte.c to mbyte.c to avoid a problem with 8.3 filesystems. +- Removed the GTK implementation of ":findhelp", it now uses the + ToolBar.FindHelp menu entry. +- Renamed mch_windexit() to mch_exit(), mch_init() to mch_early_init() and + mch_shellinit() to mch_init(). + +Highlighting: +- In a ":highlight" listing, show "xxx" with the highlight color. +- Added support for xterm with 88 or 256 colors. The right color numbers will + be used for the name used in a ":highlight" command. (Steve Wall) +- Added "default" argument for ":highlight". When included, the command is + ignored if highlighting for the group was already defined. + All syntax files now use ":hi default ..." to allow the user to specify + colors in his vimrc file. Also, the "if did_xxx_syntax_inits" is not needed + anymore. This greatly simplifies using non-default colors for a specific + language. +- Adjusted colortest.vim: Included colors on normal background and reduced the + size by using a while loop. (Rafael Garcia-Suarez) +- Added the "DarkYellow" color name. Just to make the list of standard colors + consistent, it's not really a nice color to use. + +When an xterm is in 8-bit mode this is detected by the code returned for +|t_RV|. All key codes are automatically converted to their 8-bit versions. + +The OPT_TCAP_QUERY in xterm patch level 141 and later is used to obtain the +actual key codes used and the number of colors for t_Co. Only when |t_RV| is +also used. + +":browse set" now also works in the console mode. ":browse edit" will give an +error message. + +":bdelete" and ":bunload" only report the number of deleted/unloaded buffers +when more than 'report'. The message was annoying when deleting a buffer in a +script. + +Jump list: +- The number of marks kept in the jumplist has been increased from 50 to 100. +- The jumplist is now stored in the viminfo file. CTRL-O can be used to jump + to positions from a previous edit session. +- When doing ":split" copy the jumplist to the new window. + +Also set the '[ and '] marks for the "~" and "r" commands. These marks are +now always set when making a change with a Normal mode command. + +Python interface: Allow setting the width of a vertically split window. (John +Cook) + +Added "=word" and "=~word" to 'cinkeys' (also used in 'indentkeys'). + +Added "j1" argument in 'cinoptions': indent {} inside () for Java. (Johannes +Zellner) +Added the "l" flag in 'cinoptions'. (Anduin Withers) +Added 'C', 'U', 'w' and 'm' flags to 'cinoptions'. (Servatius Brandt) + +When doing ":wall" or ":wqall" and a modified buffer doesn't have a name, +mention its buffer number in the error message. + +":function Name" lists the function with line numbers. Makes it easier to +find out where an error happened. + +In non-blockwise Visual mode, "r" replaces all selected characters with the +typed one, like in blockwise Visual mode. + +When editing the last file in the argument list in any way, allow exiting. +Previously this was only possible when getting to that file with ":next" or +":last". + +Added the '1' flag to 'formatoptions'. (Vit Stradal) +Added 'n' flag in 'formatoptions': format a numbered list. + +Swap file: +- When a swap file already exists, and the user selects "Delete" at the + ATTENTION prompt, use the same ".swp" swapfile, to avoid creating a ".swo" + file which won't always be found. +- When giving the ATTENTION message and the date of the file is newer than the + date of swap file, give a warning about this. +- Made the info for an existing swap file a bit shorter, so that it still fits + on a 24 line screen. +- It was possible to make a symlink with the name of a swap file, linking to a + file that doesn't exist. Vim would then silently use another file (if open + with O_EXCL refuses a symlink). Now check for a symlink to exist. Also do + another check for an existing swap file just before creating it to catch a + symlink attack. + +The g CTRL-G command also works in Visual mode and counts the number of words. +(Chase Tingley) + +Give an error message when using 'shell' and it's empty. + +Added the possibility to include "%s" in 'shellpipe'. + +Added "uhex" value for 'display': show non-printable characters as <xx>. +Show unprintable characters with NonText highlighting, also in the command +line. + +When asked to display the value of a hidden option, tell it's not supported. + +Win32: +- When dropping a shortcut on gvim (.lnk file) edit the target, not the + shortcut itself. (Yasuhiro Matsumoto) +- Added C versions of the OpenWithVim and SendToVim programs. (Walter Briscoe) +- When 'shell' is "cmd" or "cmd.exe", set 'shellredir' to redirect stderr too. + Also check for the Unix shell names. +- When $HOMEDRIVE and $HOMEPATH are defined, use them to define $HOME. (Craig + Barkhouse) + +Win32 console version: +- Includes the user and system name in the ":version" message, when available. + It generates a pathdef.c file for this. (Jon Miner) +- Set the window icon to Vim's icon (only for Windows 2000). While executing + a shell command, modify the window title to show this. When exiting, + restore the cursor position too. (Craig Barkhouse) +- The Win32 console version can be compiled with OLE support. It can only + function as a client, not as an OLE server. + +Errorformat: +- Let "%p" in 'errorformat' (column of error indicated by a row of characters) + also accept a line of dots. +- Added "%v" item in 'errorformat': Virtual column number. (Dan Sharp) +- Added a default 'errorformat' value for VMS. (Jim Bush) + +The "p" command can now be used in Visual mode. It overwrites the selected +text with the contents of a register. + +Highlight the <> items in the intro message to make clear they are special. + +When using the "c" flag for ":substitute", allow typing "l" for replacing this +item and then stop: "last". + +When printing a verbose message about sourcing another file, print the line +number. + +When resizing the Vim window, don't use 'equalalways'. Avoids that making the +Vim window smaller makes split windows bigger. And it's what the docs say. + +When typing CTRL-D in Insert mode, just after an autoindent, then hitting CR +kept the remaining white space. Now made it work like BS: delete the +autoindent to avoid a blank non-empty line results. + +Added a GetHwnd() call to the OLE interface. (Vince Negri) + +Made ":normal" work in an event handler. Useful when dropping a file on Vim +and for CursorHold autocommands. + +For the MS-Windows version, don't change to the directory of the file when a +slash is used instead of a backslash. Explorer should always use a backslash, +the user can use a slash when typing the command. + +Timestamps: +- When a buffer was changed outside of Vim and regaining focus, give a dialog + to allow the user to reload the file. Now also for other GUIs than + MS-Windows. And also used in the console, when compiled with dialog + support. +- Inspect the file contents to find out if it really changed, ignore + situations where only the time stamp changed (e.g., checking the file out + from CVS). +- When checking the timestamp, first check if the file size changed, to avoid + a file compare then. Makes it quicker for large (log) files that are + appended to. +- Don't give a warning for a changed or deleted file when 'buftype' is set. +- No longer warn for a changed directory. This avoids that the file explorer + produces warnings. +- Checking timestamps is only done for buffers that are not hidden. These + will be checked when they become unhidden. +- When checking for a file being changed outside of Vim, also check if the + file permissions changed. When the file contents didn't change but the + permissions did, give a warning. +- Avoid checking too often, otherwise the dialog keeps popping up for a log + file that steadily grows. + +Mapping <M-A> when 'encoding' is "latin1" and then setting 'encoding' to +"utf-8" causes the first byte of a multibyte to be mapped. Can cause very +hard to find problems. Disallow mapping part of a multibyte character. + +For ":python" and ":tcl" accept an in-line script. (Johannes Zellner) +Also for ":ruby" and ":perl". (Benoit Cerrina) + +Made ":syn include" use 'runtimepath' when the file name is not a full path. + +When 'switchbuf' contains "split" and the current window is empty, don't split +the window. + +Unix: Catch SIGPWR to preserve files when the power is about to go down. + +Sniff interface: (Anton Leherbauer) +- fixed windows code, esp. the event handling stuff +- adaptations for sniff 4.x ($SNIFF_DIR4) +- support for adding sniff requests at runtime + +Support the notation <A-x> as an alias for <M-x>. This logical, since the Alt +key is used. + +":find" accepts a count, which means that the count'th match in 'path' is +used. + +":ls" and ":buffers" output shows modified/readonly/modifiable flag. When a +buffer is active show "a" instead of nothing. When a buffer isn't loaded +show nothing instead of "-". + +Unix install: +- When installing the tools, set absolute paths in tools scripts efm_perl.pl + and mve.awk. Avoids that the user has to edit these files. +- Install Icons for KDE when the directories exist and the icons do not exist + yet. + +Added has("win95"), to be able to distinguish between MS-Windows 95/98/ME and +NT/2000/XP in a Vim script. + +When a ":cd" command was typed, echo the new current directory. (Dan Sharp) + +When using ":winpos" before the GUI window has been opened, remember the +values until it is opened. + +In the ":version" output, add "/dyn" for features that are dynamically loaded. +This indicates the feature may not always work. + +On Windows NT it is possible that a directory is read-only, but a file can be +deleted. When making a backup by renaming the file and 'backupdir' doesn't +use the current directory, this causes the original file to be deleted, +without the possibility to create a new file. Give an extra error message +then to warn to user about this. + +Made CTRL-R CTRL-O at the command line work like CTRL-R CTRL-R, so that it's +consistent with Insert mode. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-6* + +All generated files have been moved out of the "src" directory. This makes it +easy to see which files are not edited by hand. The files generated by +configure are now in the "src/auto" directory. For Unix, compiled object +files go in the objects directory. + +The source archive was over the 1.4M floppy limit. The archives are now split +up into two runtime and two source archives. Also provide a bzip2 compressed +archive that contains all the sources and runtime files. + +Added "reconfig" as a target for make. Useful when changing some of the +arguments that require flushing the cache, such as switching from GTK to +Motif. Adjusted the meaning of GUI_INC_LOC and GUI_LIB_LOC to be consistent +over different GUIs. + +Added src/README.txt to give an overview of the main parts of the source code. + +The Unix Makefile now fully supports using $(DESTDIR) to install to a specific +location. Replaces the manual setting of *ENDLOC variables. + +Added the possibility for a maintainer of a binary version to include his +e-mail address with the --with-compiledby configure argument. + +Included features are now grouped in "tiny", "small", "normal", "big" and +"huge". This replaces "min-features" and "max-features". Using "tiny" +disables multiple windows for a really small Vim. + +For the tiny version or when FEAT_WINDOWS is not defined: Firstwin and lastwin +are equal to curwin and don't use w_next and w_prev. + +Added the +listcmds feature. Can be used to compile without the Vim commands +that manipulate the buffer list and argument list (the buffer list itself is +still there, can't do without it). + +Added the +vreplace feature. It is disabled in the "small" version to avoid +that the 16 bit DOS version runs out of memory. + +Removed GTK+ support for versions older than 1.1.16. + +The configure checks for using PTYs have been improved. Code taken from a +recent version of screen. + +Added configure options to install Vim, Ex and View under another name (e.g., +vim6, ex6 and view6). + +Added "--with-global-runtime" configure argument. Allows specifying the +global directory used in the 'runtimepath' default. + +Made enabling the SNiFF+ interface possible with a configure argument. + +Configure now always checks /usr/local/lib for libraries and +/usr/local/include for include files. Helps finding the stuff for iconv() and +gettext(). + +Moved the command line history stuff into the +cmdline_hist feature, to +exclude the command line history from the tiny version. + +MS-Windows: Moved common functions from Win16 and Win32 to os_mswin.c. Avoids +having to change two files for one problem. (Vince Negri) + +Moved common code from gui_w16.c and gui_w32.c to gui_w48.c (Vince Negri) + +The jumplist is now a separate feature. It is disabled for the "small" +version (16 bit MS-DOS). + +Renamed all types ending in _t to end in _T. Avoids potential problems with +system types. + +Added a configure check for X11 header files that implicitly define the return +type to int. (Steve Wall) + +"make doslang" in the top directory makes an archive with the menu and .mo +files for Windows. This uses the files generated on Unix, these should work +on MS-Windows as well. + +Merged a large part of os_vms.c with os_unix.c. The code was duplicated in +the past which made maintenance more work. (Zoltan Arpadffy) + +Updated the Borland C version 5 Makefile: (Dan Sharp) +- Fixed the Perl build +- Added python and tcl builds +- Added dynamic perl and dynamic python builds +- Added uninstal.exe build +- Use "yes" and "no" for the options, like in Make_mvc.mak. + +Win32: Merged Make_gvc.mak and Make_ovc.mak into one file: Make_ivc.mak. It's +much smaller, many unnecessary text has been removed. (Walter Briscoe) +Added Make_dvc.mak to be able to debug exe generated with Make_mvc.mak in +MS-Devstudio. (Walter Briscoe) + +MS-Windows: The big gvim.exe, which includes OLE, now also includes +dynamically loaded Tcl, Perl and Python. This uses ActivePerl 5.6.1, +ActivePython 2.1.1 and ActiveTCL 8.3.3 + +Added AC_EXEEXT to configure.in, to check if the executable needs ".exe" for +Cygwin or MingW. Renamed SUFFIX to EXEEXT in Makefile. + +Win32: Load comdlg32.dll delayed for faster startup. Only when using VC 6. +(Vipin Aravind) + +Win32: When compiling with Borland, allow using IME. (Yasuhiro Matsumoto) + +Win32: Added Makefile for Borland 5 to compile gvimext.dll. (Yasuhiro +Matsumoto) + +============================================================================== +BUG FIXES *bug-fixes-6* + +When checking the command name for "gvim", "ex", etc. ignore case. Required +for systems where case is ignored in command names. + +Search pattern "[a-c-e]" also matched a 'd' and didn't match a '-'. + +When double-clicking in another window, wasn't recognized as double click, +because topline is different. Added set_mouse_topline(). + +The BROKEN_LOCALE check was broken. (Marcin Dalecki) + +When "t_Co" is set, the default colors remain the same, thus wrong. Reset the +colors after changing "t_Co". (Steve Wall) + +When exiting with ":wqall" the messages about writing files could overwrite +each other and be lost forever. + +When starting Vim with an extremely long file name (around 1024 characters) it +would crash. Added a few checks to avoid buffer overflows. + +CTRL-E could get stuck in a file with very long lines. + +":au syntax<Tab>" expanded event names while it should expand groups starting +with "syntax". + +When expanding a file name caused an error (e.g., for <amatch>) it was +produced even when inside an "if 0". + +'cindent' formatted C comments differently from what the 'comments' option +specified. (Steve Wall) + +Default for 'grepprg' didn't include the file name when only grepping in one +file. Now /dev/null has been added for Unix. + +Opening the option window twice caused trouble. Now the cursor goes to the +existing option window. + +":sview" and ":view" didn't set 'readonly' for an existing buffer. Now do set +'readonly', unless the buffer is also edited in another window. + +GTK GUI: When 'guioptions' excluded 'g', the more prompt caused the toolbar +and menubar to disappear and resize the window (which clears the text). +Now always grey-out the toplevel menus to avoid that the menubar changes size +or disappears. + +When re-using the current buffer for a new buffer, buffer-local variables were +not deleted. + +GUI: when 'scrolloff' is 0 dragging the mouse above the window didn't cause a +down scroll. Now pass on a mouse event with mouse_row set to -1. + +Win32: Console version didn't work on telnet, because of switching between two +console screens. Now use one console screen and save/restore the contents +when needed. (Craig Barkhouse) + +When reading a file the magic number for encryption was included in the file +length. (Antonio Colombo) + +The quickfix window contained leading whitespace and NULs for multi-line +messages. (David Harrison) + +When using cscope, redundant tags were removed. This caused a numbering +problem, because they were all listed. Don't remove redundant cscope tags. +(David Bustos). + +Cscope: Test for which matches are in the current buffer sometimes failed, +causing a jump to another match than selected. (David Bustos) + +Win32: Buffer overflow when adding a charset name in a font. + +'titlestring' and 'iconstring' were evaluating an expression in the current +context, which could be a user function, which is a problem for local +variables vs global variables. + +Win32 GUI: Mapping <M-F> didn't work. Now handle SHIFT and CTRL in +_OnSysChar(). + +Win32 GUI: (on no file), :vs<CR>:q<CR> left a trail of pixels down the middle. +Could also happen for the ruler. screen_puts() didn't clear the right char in +ScreenLines[] for the bold trick. + +Win32: ":%!sort|uniq" didn't work, because the input file name touches the +"|". Insert a space before the "|". + +OS/2: Expanding wildcards included non-existing files. Caused ":runtime" to +fail, which caused syntax highlighting to fail. + +Pasting a register containing CTRL-R on the command line could cause an +endless loop that can't be interrupted. Now it can be stopped with CTRL-C. + +When 'verbose' is set, a message for file read/write could overwrite the +previous message. +When 'verbose' is set, the header from ":select" was put after the last +message. Now start a new line. + +The hit-enter prompt reacted to the response of the t_RV string, causing +messages at startup to disappear. + +When t_Co was set to 1, colors were still used. Now only use color when t_Co +> 1. + +Listing functions with ":function" didn't quit when 'q' or ':' was typed at +the more prompt. + +Use mkstemp() instead of mktemp() when it's available, avoids a warning for +linking on FreeBSD. + +When doing Insert mode completion it's possible that b_sfname is NULL. Don't +give it to printf() for the "Scanning" message. + +":set runtimepath-=$VIMRUNTIME" didn't work, because expansion of wildcards +was done after trying to remove the string. Now for ":set opt+=val" and ":set +opt-=val" the expansion of wildcards is done before adding or removing "val". + +Using CTRL-V with the "r" command with a blockwise Visual selection inserted a +CTRL-V instead of getting a special character. + +Unix: Changed the order of libraries: Put -lXdmcp after -lX11 and -lSM -lICE +after -lXdmcp. Should fix link problem on HP-UX 10.20. + +Don't remove the last "-lm" from the link line. Vim may link but fail later +when the GUI starts. + +When the shell returns with an error when trying to expand wildcards, do +include the pattern when the "EW_NOTFOUND" flag was set. +When expanding wildcards with the shell fails, give a clear error message +instead of just "1 returned". + +Selecting a Visual block, with the start partly on a Tab, deleting it leaves +the cursor too far to the left. Causes "s" to work in the wrong position. + +Pound sign in normal.c caused trouble on some compilers. Use 0xA3 instead. + +Warning for changing a read-only file wasn't given when 'insertmode' was set. + +Win32: When 'shellxquote' is set to a double quote (e.g., using csh), ":!start +notepad file" doesn't work. Remove the double quotes added by 'shellxquote' +when using ":!start". (Pavol Juhas) + +The "<f-args>" argument of ":command" didn't accept Tabs for white space. +Also, don't add an empty argument when there are trailing blanks. + +":e test\\je" edited "test\je", but ":next test\\je" edited "testje". +Backslashes were removed one time too many for ":next". + +VMS: "gf" didn't work properly. Use vms_fixfilename() to translate the file +name. (Zoltan Arpadffy) + +After ":hi Normal ctermbg=black ctermfg=white" and suspending Vim not all +characters are redrawn with the right background. + +When doing "make test" without +eval or +windows feature, many tests failed. +Now have test1 generate a script to copy the correct output, so that a test +that doesn't work is skipped. + +On FreeBSD the Perl interface added "-lc" to the link command and Python added +"-pthread". These two don't work together, because the libc_r library should +be used. Removed "-lc" from Perl, it should not be needed. +Also: Add "-pthread" to $LIBS, so that the checks for functions is done with +libc_r. Sigaltstack() appears to be missing from libc_r. + +The Syntax sub-menus were getting too long, reorganized them and added another +level for some languages. + +Visual block "r"eplace didn't work well when a Tab is partly included. +(Matthias Kramm) + +When yanking a Visual block, where some lines end halfway the block, putting +the text somewhere else doesn't insert a block. Padd with spaces for missing +characters. Added "y_width" to struct yankreg. (Matthias Kramm) + +If a substitute string has a multibyte character after a backslash only the +first byte of it was skipped. (Muraoka Taro) + +Win32: Numeric keypad keys were missing from the builtin termcap entry. + +When a file was read-only ":wa!" didn't force it to be written. (Vince Negri) + +Amiga: A file name starting with a colon was considered absolute but it isn't. +Amiga: ":pwd" added a slash when in the root of a drive. + +Don't let 'ttymouse' default to "dec" when compiled with dec mouse support. +It breaks the gpm mouse (Linux console). + +The prototypes for the Perl interface didn't work for threaded Perl. Added a +sed command to remove the prototypes from proto/if_perl.pro and added them +manually to if_perl.xs. + +When ":w!" resets the 'readonly' option the title and status lines were not +updated. + +":args" showed the current file when the argument list was empty. Made this +work like Vi: display nothing. + +"99:<C-U>echo v:count" echoed "99" in Normal mode, but 0 in Visual mode. +Don't set v:count when executing a stuffed command. + +Amiga: Got a requester for "home:" because it's in the default runtime path. +Don't bring up a requester when searching for a file in 'path', sourcing the +.vimrc file or using ":runtime". + +Win16 and Win32: Considered a file "\path\file" absolute. Can cause the same +file to appear as two different buffers. + +Win32: Renaming a file to an empty string crashed Vim. Happened when using +explorer.vim and hitting ESC at the rename prompt. + +Win32: strftime() crashed when called with a "-1" value for the time. + +Win32 with Borland compiler: mch_FullName() didn't work, caused tag file not +to be found. + +Cscope sometimes jumped to the wrong tag. (David Bustos) + +OS/2: Could not find the tags file. mch_expand_wildcards() added another +slash to a directory name. + +When using ">>" the `] mark was not in the last column. + +When Vim was compiled without menu support, filetype.vim was still trying to +source the menu.vim script. (Rafael Garcia-Suarez) + +":ptag" added an item to the tag stack. + +Win32 IME: "gr" didn't use IME mode. + +In the "vim --help" message the term "options" was used for arguments. That's +confusing, call them "arguments". + +When there are two windows, and a BufUnload autocommand for closing window #1 +closed window #2, Vim would crash. + +When there is a preview window and only one other window, ":q" wouldn't exit. + +In Insert mode, when cancelling a digraph with ESC, the '?' wasn't removed. + +On Unix glob(".*") returned "." and "..", on Windows it didn't. On Windows +glob("*") also returned files starting with a dot. Made this work like Unix +on all systems. + +Win32: Removed old code to open a console. Vimrun is now used and works fine. + +Compute the room needed by the intro message accurately, so that it also fits +on a 25 line console. (Craig Barkhouse) + +":ptnext" was broken. Now remember the last tag used in the preview window +separately from the tagstack. + +Didn't check for "-display" being the last argument. (Wichert Akkerman) + +GTK GUI: When starting "gvim" under some conditions there would be an X error. +Don't replace the error handler when creating the xterm clipboard. (Wichert +Akkerman) + +Adding a space after a help tag caused the tag not to be found. E.g., ":he +autoindent ". + +Was trying to expand a URL into a full path name. On Windows this resulted in +the current directory to be prepended to the URL. Added vim_isAbsName() and +vim_FullName() to avoid that various machine specific functions do it +differently. + +":n *.c" ":cd .." ":n" didn't use the original directory of the file. Vi only +does it for the current file (looks like a bug). Now remember the buffer used +for the entry in the argument list and use its name (adjusted when doing +":cd"), unless it's deleted. + +When inserting a special key as its name ("<F8>" as four characters) after +moving around in Insert mode, undo didn't work properly. + +Motif GUI: When using the right mouse button, for some people gvim froze for +a couple of seconds (Motif 1.2?). This doesn't happen when there is no Popup +menu. Solved by only creating a popup menu when 'mousemodel' is "popup" or +"popup_setpos". (David Harrison) + +Motif: When adding many menu items, the "Help" menu disappeared but the +menubar didn't wrap. Now manually set the menubar height. + +When using <BS> in Insert mode to remove a line break, or using "J" to join +lines, the cursor could end up halfway a multibyte character. (Muraoka Taro) + +Removed defining SVR4 in configure. It causes problems for some X header +files and doesn't appear to be used anywhere. + +When 'wildignore' is used, 'ignorecase' for a tag match was not working. + +When 'wildignore' contains "*~" it was impossible to edit a file ending in a +"~". Now don't recognize a file ending in "~" as containing wildcards. + +Disabled the mouse code for OS/2. It was not really used. + +":mksession" always used the full path name for a buffer, also when the short +name could be used. +":mkvimrc" and ":mksession" didn't save 'wildchar' and 'pastetoggle' in such a +way that they would be restored. Now use the key name if possible, this is +portable. + +After recovering a file and abandoning it, an ":edit" command didn't give the +ATTENTION prompt again. Would be useful to be able to delete the file in an +easy way. Reset the BF_RECOVERED flag when unloading the buffer. + +histdel() could match or ignore case, depending on what happened before it. +Now always match case. + +When a window size was specified when splitting a window, it would still get +the size from 'winheight' or 'winwidth' if it's larger. + +When using "append" or "insert" inside a function definition, a line starting +with "function" or "endfunction" caused confusion. Now recognize the commands +and skip lines until a ".". + +At the end of any function or sourced file need_wait_return could be reset, +causing messages to disappear when redrawing. + +When in a while loop the line number for error messages stayed fixed. Now the +line number is remembered in the while loop. + +"cd c:/" didn't work on MS-DOS. mch_isdir() removed a trailing slash. + +MS-Windows: getftime() didn't work when a directory had a trailing slash or +backslash. Didn't show the time in the explorer because of this. + +When doing wildcard completion, a directory "a/" sorted after "a-b". Now +recognize path separators when sorting files. + +Non-Unix systems: When editing "c:/dir/../file" and "c:/file" they were +created as different buffers, although it's the same file. Expand to a full +file name also when an absolute name contains "..". + +"g&" didn't repeat the last substitute properly. + +When 'clipboard' was set to "unnamed", a "Y" command would not write to "0. +Now make a copy of register 0 to the clipboard register. + +When the search pattern matches in many ways, it could not always be +interrupted with a CTRL-C. And CTRL-C would have to be hit once for every +line when 'hlsearch' is on. +When 'incsearch' is on and interrupting the search for a match, don't abandon +the command line. + +When turning a directory name into a full path, e.g., with fnamemodify(), +sometimes a slash was added. Make this consistent: Don't add a slash. + +When a file name contains a "!", using it in a shell command will cause +trouble: ":!cat %". Escape the "!" to avoid that. Escape it another time +when 'shell' contains "sh". + +Completing a file name that has a tail that starts with a "~" didn't work: +":e view/~<Tab>". + +Using a ":command" argument that contains < and > but not for a special +argument was not skipped properly. + +The DOS install program: On Win2000 the check for a vim.exe or gvim.exe in +$PATH didn't work, it always found it in the current directory. +Rename the vim.exe in the current dir to avoid this. (Walter Briscoe) + +In the MS-DOS/Windows install program, use %VIM% instead of an absolute path, +so that moving Vim requires only one change in the batch file. + +Mac: mch_FullName() changed the "fname" argument and didn't always initialize +the buffer. + +MS-DOS: mch_FullName() didn't fix forward/backward slashes in an absolute file +name. + +"echo expand("%:p:h")" with an empty file name removed one directory name on +MS-DOS. For Unix, when the file name is a directory, the directory name was +removed. Now make it consistent: "%:p" adds a path separator for all systems, +but no path separator is added in other situations. + +Unix: When checking for a CTRL-C (could happen any time) and there is an X +event (e.g., clipboard updated) and there is typeahead, Vim would hang until a +character was typed. + +MS-DOS, MS-Windows and Amiga: expanding "$ENV/foo" when $ENV ends in a colon, +had the slash removed. + +":he \^=" gave an error for using \_. ":he ^=" didn't find tag :set^=. Even +"he :set^=" didn't find it. + +A tags file name "D:/tags" was used as file "tags" in "D:". That doesn't work +when the current path for D: isn't the root of the drive. + +Removed calls to XtInitializeWidgetClass(), they shouldn't be necessary. + +When using a dtterm or various other color terminals, and the Normal group has +been set to use a different background color, the background wouldn't always +be displayed with that color. Added check for "ut" termcap entry: If it's +missing, clearing the screen won't give us the current background color. Need +to draw each character instead. Vim now also works when the "cl" (clear +screen) termcap entry is missing. + +When repeating a "/" search command with a line offset, the "n" did use the +offset but didn't make the motion linewise. Made "d/pat/+2" and "dn" do the +same. + +Win32: Trying to use ":tearoff" for a menu that doesn't exist caused a crash. + +OpenPTY() didn't work on Sequent. Add a configure check for getpseudotty(). + +C-indenting: Indented a line starting with ")" with the matching "(", but not +a line starting with "x)" looks strange. Also compute the indent for aligning +with items inside the () and use the lowest indent. + +MS-DOS and Windows: ":n *.vim" also matched files ending in "~". +Moved mch_expandpath() from os_win16.c and os_msdos.c to misc1.c, they are +equal. + +Macintosh: (Dany St-Amant) +- In Vi-compatible mode didn't read files with CR line separators. +- Fixed a bug in the handling of Activate/Deactivate Event +- Fixed a bug in gui_mch_dialog (using wrong pointer) + +Multibyte GDK XIM: While composing a multibyte-word, if user presses a +mouse button, then the word is removed. It should remain and composing end. +(Sung-Hyun Nam) + +MS-DOS, MS-Windows and OS/2: When reading from stdin, automatic CR-LF +conversion by the C library got in the way of detecting a "dos" 'fileformat'. + +When 'smartcase' is set, patterns with "\S" would also make 'ignorecase' +reset. + +When clicking the mouse in a column larger than 222, it moved to the first +column. Can't encode a larger number in a character. Now limit the number to +222, don't jump back to the first column. + +GUI: In some versions CSI would cause trouble, either when typed directly or +when part of a multibyte sequence. + +When using multibyte characters in a ":normal" command, a trailing byte that +is CSI or K_SPECIAL caused problems. + +Wildmenu didn't handle multibyte characters. + +":sleep 10" could not be interrupted on Windows, while "gs" could. Made them +both work the same. + +Unix: When waiting for a character is interrupted by an X-windows event (e.g., +to obtain the contents of the selection), the wait time would not be honored. +A message could be overwritten quickly. Now compute the remaining waiting +time. + +Windows: Completing "\\share\c$\S" inserted a backslash before the $ and then +the name is invalid. Don't insert the backslash. + +When doing an auto-write before ":make", IObuff was overwritten and the wrong +text displayed later. + +On the Mac the directories "c:/tmp" and "c:/temp" were used in the defaults +for 'backupdir' and 'directory', they don't exist. + +The check for a new file not to be on an MS-DOS filesystem created the file +temporarily, which can be slow. Don't do this if there is another check for +the swap file being on an MS-DOS filesystem. + +Don't give the "Changing a readonly file" warning when reading from stdin. + +When using the "Save As" menu entry and not entering a file name, would get an +error message for the trailing ":edit #". Now only do that when the +alternate file name was changed. + +When Vim owns the X11 selection and is being suspended, an application that +tries to use the selection hangs. When Vim continues it could no longer +obtain the selection. Now give up the selection when suspending. + +option.h and globals.h were included in some files, while they were already +included in vim.h. Moved the definition of EXTERN to vim.h to avoid doing it +twice. + +When repeating an operator that used a search pattern and the search pattern +contained characters that have a special meaning on the cmdline (e.g., CTRL-U) +it didn't work. + +Fixed various problems with using K_SPECIAL (0x80) and CSI (0x9b) as a byte in +a (multibyte) character. For example, the "r" command could not be repeated. + +The DOS/Windows install program didn't always work from a directory with a +long filename, because $VIM and the executable name would not have the same +path. + +Multi-byte: +- Using an any-but character range [^x] in a regexp didn't work for UTF-8. + (Muraoka Taro) +- When backspacing over inserted characters in Replace mode multibyte + characters were not handled correctly. (Muraoka Taro) +- Search commands "#" and "*" didn't work with multibyte characters. (Muraoka + Taro) +- Word completion in Insert mode didn't work with multibyte characters. + (Muraoka Taro) +- Athena/Motif GUI: when 'linespace' is non-zero the cursor would be drawn too + wide (number of bytes instead of cell width). +- When changing 'encoding' to "euc-jp" and inserting a character Vim would + crash. +- For euc-jp characters positioning the cursor would sometimes be wrong. + Also, with two characters with 0x8e leading byte only the first one would be + displayed. +- When using DYNAMIC_ICONV on Win32 conversion might fail because of using the + wrong error number. (Muraoka Taro) +- Using Alt-x in the GUI while 'encoding' was set to "utf-8" didn't produce + the right character. +- When using Visual block selection and only the left half of a double-wide + character is selected, the highlighting continued to the end of the line. +- Visual-block delete didn't work properly when deleting the right half of a + double-wide character. +- Overstrike mode for the cmdline replaced only the first byte of a multibyte + character. +- The cursor in Replace mode (also in the cmdline) was too small on a + double-wide character. +- When a multibyte character contained a 0x80 byte, it didn't work (was using + a CSI byte instead). (Muraoka Taro) +- Wordwise selection with the mouse didn't work. +- Yanking a modeless selection of multibyte characters didn't work. +- When 'selection' is "exclusive", selecting a word that ends in a multibyte + character used wrong highlighting for the following character. + +Win32 with Make_mvc.mak: Didn't compile for debugging. (Craig Barkhouse) + +Win32 GUI: When "vimrun.exe" is used to execute an external command, don't +give a message box with the return value, it was already printed by vimrun. +Also avoid printing the return value of the shell when ":silent!" is used. + +Win32: selecting a lot of text and using the "find/replace" dialog caused a +crash. + +X11 GUI: When typing a character with the 8th bit set and the Meta/Alt +modifier, the modifier was removed without changing the character. + +Truncating a message to make it fit on the command line, using "..." for the +middle, didn't always compute the space correctly. + +Could not imap <C-@>. Now it works like <Nul>. + +VMS: +- Fixed a few things for VAXC. os_vms_fix.com had some strange CTRL-M + characters. (Zoltan Arpadffy and John W. Hamill) +- Added VMS-specific defaults for the 'isfname' and 'isprint' options. + (Zoltan Arpadffy) +- Removed os_vms_osdef.h, it's no longer used. + +The gzip plugin used a ":normal" command, this doesn't work when dropping a +compressed file on Vim. + +In very rare situations a binary search for a tag would fail, because an +uninitialized value happens to be half the size of the tag file. (Narendran) + +When using BufEnter and BufLeave autocommands to enable/disable a menu, it +wasn't updated right away. + +When doing a replace with the "c"onfirm flag, the cursor was positioned after +the ruler, instead of after the question. With a long replacement string the +screen could scroll up and cause a "more" prompt. Now the message is +truncated to make it fit. + +Motif: The autoconf check for the Xp library didn't work. + +When 'verbose' is set to list lines of a sourced file, defining a function +would reset the counter used for the "more" prompt. + +In the Win32 find/replace dialog, a '/' character caused problems. Escape it +with a backslash. + +Starting a shell with ":sh" was different from starting a shell for CTRL-Z +when suspending doesn't work. They now work the same way. + +Jumping to a file mark while in a changed buffer gave a "mark not set" error. + +":execute histget("cmd")" causes an endless loop and crashed Vim. Now catch +all commands that cause too much recursiveness. + +Removed "Failed to open input method" error message, too many people got this +when they didn't want to use a XIM. + +GUI: When compiled without the +windows feature, the scrollbar would start +below line one. + +Removed the trick with redefining character class functions from regexp.c. + +Win32 GUI: Find dialog gives focus back to main window, when typing a +character mouse pointer is blanked, it didn't reappear when moving it in the +dialog window. (Vince Negri) + +When recording and typing a CTRL-C, no character was recorded. When in Insert +mode or cancelling half a command, playing back the recorded sequence wouldn't +work. Now record the CTRL-C. + +When the GUI was started, mouse codes for DEC and netterm were still checked +for. + +GUI: When scrolling and 'writedelay' is non-zero, the character under the +cursor was displayed in the wrong position (one line above/below with +CTRL-E/CTRL-Y). + +A ":normal" command would reset the 'scrollbind' info. Causes problems when +using a ":normal" command in an autocommand for opening a file. + +Windows GUI: a point size with a dot, like "7.5", wasn't recognized. (Muraoka +Taro) + +When 'scrollbind' wasn't set would still remember the current position, +wasting time. + +GTK: Crash when 'shell' doesn't exist and doing":!ls". Use _exit() instead of +exit() when the child couldn't execute the shell. + +Multi-byte: +- GUI with double-byte encoding: a mouse click in left half of double-wide + character put the cursor in previous char. +- Using double-byte encoding and 'selection' is "exclusive": "vey" and "^Vey" + included the character after the word. +- When using a double-byte encoding and there is a lead byte at the end of the + line, the preceding line would be displayed. "ga" also showed wrong info. +- "gf" didn't include multibyte characters before the cursor properly. + (Muraoka Taro) + +GUI: The cursor was sometimes not removed when scrolling. Changed the policy +from redrawing the cursor after each call to gui_write() to only update it at +the end of update_screen() or when setting the cursor position. Also only +update the scrollbars at the end of update_screen(), that's the only place +where the window text may have been scrolled. + +Formatting "/*<Tab>long text", produced "* <Tab>" in the next line. Now +remove the space before the Tab. +Formatting "/*<Tab> long text", produced "* <Tab> long text" in the next +line. Now keep the space after the Tab. + +In some places non-ASCII alphabetical characters were accepted, which could +cause problems. For example, ":X" (X being such a character). + +When a pattern matches the end of the line, the last character in the line was +highlighted for 'hlsearch'. That looks wrong for "/\%3c". Now highlight the +character just after the line. + +Motif: If a dialog was closed by clicking on the "X" of the window frame Vim +would no longer respond. + +When using CTRL-X or CTRL-A on a number with many leading zeros, Vim would +crash. (Matsumoto) + +When 'insertmode' is set, the mapping in mswin.vim for CTRL-V didn't work in +Select mode. Insert mode wasn't restarted after overwriting the text. +Now allow nesting Insert mode with insert and change commands. CTRL-O +cwfoo<Esc> now also works. + +Clicking with the right mouse button in another window started Visual mode, +but used the start position of the current window. Caused ml_get errors when +the line number was invalid. Now stay in the same window. + +When 'selection' is "exclusive", "gv" sometimes selected one character fewer. + +When 'comments' contains more than one start/middle/end triplet, the optional +flags could be mixed up. Also didn't align the end with the middle part. + +Double-right-click in Visual mode didn't update the shown mode. + +When the Normal group has a font name, it was never used when starting up. +Now use it when 'guifont' and 'guifontset' are empty. +Setting a font name to a highlight group before the GUI was started didn't +work. + +"make test" didn't use the name of the generated Vim executable. + +'cindent' problems: +- Aligned with an "else" inside a do-while loop for a line below that loop. + (Meikel Brandmeyer) +- A line before a function would be indented even when terminated with a + semicolon. (Meikel Brandmeyer) +- 'cindent' gave too much indent to a line after a "};" that ends an array + init. +- Support declaration lines ending in "," and "\". (Meikel Brandmeyer) +- A case statement inside a do-while loop was used for indenting a line after + the do-while loop. (Meikel Brandmeyer) +- When skipping a string in a line with one double quote it could continue in + the previous line. (Meikel Brandmeyer) + +When 'list' is set, 'hlsearch' didn't highlight a match at the end of the +line. Now highlight the '$'. + +The Paste menu item in the menu bar, the popup menu and the toolbar were all +different. Now made them all equal to how it was done in mswin.vim. + +st_dev can be smaller than "unsigned". The compiler may give an overflow +warning. Added a configure check for dev_t. + +Athena: closing a confirm() dialog killed Vim. + +Various typos in the documentation. (Matt Dunford) + +Python interface: The definition of _DEBUG could cause trouble, undefine it. +The error message for not being able to load the shared library wasn't +translated. (Muraoka Taro) + +Mac: (Dany St-Amant and Axel Kielhorn) +- Several fixes. +- Vim was eating 80% of the CPU time. +- The project os_mac.pbxproj didn't work, Moved it to a subdirectory. +- Made the menu priority work for the menubar. +- Fixed a problem with dragging the scrollbar. +- Cleaned up the various #ifdefs. + +Unix: When catching a deadly signal and we keep getting one use _exit() to +exit in a quick and dirty way. + +Athena menu ordering didn't work correctly. (David Harrison) + +A ":make" or ":grep" command with a long argument could cause a crash. + +Doing ":new file" and using "Quit" for the ATTENTION dialog still opened a new +window. + +GTK: When starting the GUI and there is an error in the .vimrc file, don't +present the wait-return prompt, since the message was given in the terminal. + +When there was an error in a .vimrc file the terminal where gvim was started +could be cleared. Set msg_row in main.c before writing any messages. + +GTK and X11 GUI: When trying to read characters from the user (e.g. with +input()) before the Vim window was opened caused Vim to hang when it was +started from the desktop. + +OS/390 uses 31 bit pointers. That broke some computations with MAX_COL. +Reduce MAX_COL by one bit for OS/390. (Ralf Schandl) + +When defining a function and it already exists, Vim didn't say it existed +until after typing it. Now do this right away when typing it. + +The message remembered for displaying later (keep_msg) was sometimes pointing +into a generic buffer, which might be changed by the time the message is +displayed. Now make a copy of the message. + +When using multibyte characters in a menu and a trailing byte is a backslash, +the menu would not be created correctly. (Muraoka Taro) +Using a multibyte character in the substitute string where a trail byte is a +backslash didn't work. (Muraoka Taro) + +When setting "t_Co" in a vimrc file, then setting it automatically from an +xterm termresponse and then setting it again manually caused a crash. + +When getting the value of a string option that is not supported, the number +zero was returned. This breaks a check like "&enc == "asdf". Now an empty +string is returned for string options. + +Crashed when starting the GTK GUI while using 'notitle' in the vimrc, setting +'title' in the gvimrc and starting the GUI with ":gui". Closed the connection +to the X server accidentally. + +Had to hit return after selecting an entry for ":ts". + +The message from ":cn" message was sometimes cleared. Now display it after +redrawing if it doesn't cause a scroll (truncated when necessary). + +hangulin.c didn't compile when the GUI was disabled. Disable it when it won't +work. + +When setting a termcap option like "t_CO", the value could be displayed as +being for a normal key with a modifier, like "<M-=>". + +When expanding the argument list, entries which are a directory name did not +get included. This stopped "vim c:/" from opening the file explorer. + +":syn match sd "^" nextgroup=asdf" skipped the first column and matched the +nextgroup in the second column. + +GUI: When 'lazyredraw' is set, 'showmatch' didn't work. Required flushing +the output. + +Don't define the <NetMouse> termcode in an xterm, reduces the problem when +someone types <Esc> } in Insert mode. + +Made slash_adjust() work correctly for multibyte characters. (Yasuhiro +Matsumoto) +Using a filename in Big5 encoding for autocommands didn't work (backslash in +trailbyte). (Yasuhiro Matsumoto) + +DOS and Windows: Expanding *.vim also matched file.vimfoo. Expand path like +Unix to avoid problems with Windows dir functions. Merged the DOS and Win32 +functions. + +Win32: GvimExt could not edit more than a few files at once, the length of the +argument was fixed. + +"ls -1 * | xargs vim" worked, but the input was in cooked mode. Now switch to +raw mode when needed. Use dup() to copy the stderr file descriptor to stdin +to make shell commands work. No longer requires an external program to do +this. + +When using ":filetype off", ftplugin and indent usage would be switched off at +the same time. Don't do this, setting 'filetype' manually can still use them. + +GUI: When writing a double-byte character, it could be split up in two calls +to gui_write(), which doesn't work. Now flush before the output buffer +becomes full. + +When 'laststatus' is set and 'cmdheight' is two or bigger, the intro message +would be written over the status line. +The ":intro" command didn't work when there wasn't enough room. + +Configuring for Ruby failed with a recent version of Ruby. (Akinori Musha) + +Athena: When deleting the directory in which Vim was started, using the file +browser made Vim exit. Removed the use of XtAppError(). + +When using autoconf 2.50, UNIX was not defined. Moved the comment for "#undef +UNIX" to a separate line. + +Win32: Disabled _OnWindowPosChanging() to make maximize work better. + +Win32: Compiling with VC 4.0 didn't work. (Walter Briscoe) + +Athena: +- Finally fixed the problems with deleting a menu. (David Harrison) +- Athena: When closing the confirm() dialog, worked like OK was pressed, + instead of Cancel. + +The file explorer didn't work in compatible mode, because of line +continuation. + +Didn't give an error message for ":digraph a". + +When using Ex mode in the GUI and typing a special key, <BS> didn't delete it +correctly. Now display '?' for a special key. + +When an operator is pending, clicking in another window made it apply to that +window, even though the line numbers could be beyond the end of the buffer. + +When a function call doesn't have a terminating ")" Vim could crash. + +Perl interface: could crash on exit with perl 5.6.1. (Anduin Withers) + +Using %P in 'errorformat' wasn't handled correctly. (Tomas Zellerin) + +Using a syntax cluster that includes itself made Vim crash. + +GUI: With 'ls' set to 2, dragging the status line all the way up, then making +the Vim window smaller: Could not the drag status line anymore. + +"vim -c startinsert! file" placed cursor on last char of a line, instead of +after it. A ":set" command in the buffer menu set w_set_curswant. Now don't +do this when w_curswant is MAXCOL. + +Win32: When the gvim window was maximized and selecting another font, the +window would no longer fill the screen. + +The line with 'pastetoggle' in ":options" didn't show the right value when it +is a special key. Hitting <CR> didn't work either. + +Formatting text, resulting in a % landing in the first line, repeated the % in +the following lines, like it's the start of a comment. + +GTK: When adding a toolbar item while gvim is already running, it wasn't +possible to use the tooltip. Now it works by adding the tooltip first. + +The output of "g CTRL-G" mentioned "Char" but it's actually bytes. + +Searching for the end of a oneline region didn't work correctly when there is +an offset for the highlighting. + +Syntax highlighting: When synchronizing on C-comments, //*/ was seen as the +start of a comment. + +Win32: Without scrollbars present, the MS mouse scroll wheel didn't work. +Also handle the scrollbars when they are not visible. + +Motif: When there is no right scrollbar, the bottom scrollbar would still +leave room for it. (Marcin Dalecki) + +When changing 'guicursor' and the value is invalid, some of the effects would +still take place. Now first check for errors and only make the new value +effective when it's OK. + +Using "A" In Visual block mode, appending to lines that don't extend into the +block, padding was wrong. + +When pasting a block of text, a character that occupies more than one screen +column could be deleted and spaces inserted instead. Now only do that with a +tab. + +Fixed conversion of documentation to HTML using Perl. (Dan Sharp) + +Give an error message when a menu name starts with a dot. + +Avoid a hang when executing a shell from the GUI on HP-UX by pushing "ptem" +even when sys/ptem.h isn't present. + +When creating the temp directory, make sure umask is 077, otherwise the +directory is not accessible when it was set to 0177. + +Unix: When resizing the window and a redraw is a bit slow, could get a window +resize event while redrawing, resulting in a messed up window. Any input +(e.g., a mouse click) would redraw. + +The "%B" item in the status line became zero in Insert mode (that's normal) +for another than the current window. + +The menu entries to convert to xxd and back didn't work in Insert mode. + +When ":vglobal" didn't find a line where the pattern doesn't match, the error +message would be the wrong way around. + +When ignoring a multi-line error message with "%-A", the continuation lines +would be used anyway. (Servatius Brandt) + +"grx" on a double-wide character inserted "x", instead of replacing the +character with "x ". "gR" on <xx> ('display' set the "uhex") didn't replace +at all. When doing "gRxx" on a control character the first "x" would be +inserted, breaking the alignment. + +Added "0)" to 'cinkeys', so that when typing a ) it is put in the same place +as where "==" would put it. + +Win32: When maximized, adding/removing toolbar didn't resize the text area. + +When using <C-RightMouse> a count was discarded. + +When typing CTRL-V and <RightMouse> in the command line, would insert +<LeftMouse>. + +Using "vis" or "vas" when 'selection' is exclusive didn't include the last +character. + +When adding to an option like 'grepprg', leading space would be lost. Don't +expand environment variables when there is no comma separating the items. + +GUI: When using a bold-italic font, would still use the bold trick and +underlining. + +Motif: The default button didn't work in dialogs, the first one was always +used. Had to give input focus to the default button. + +When using CTRL-T to jump within the same file, the '' mark wasn't set. + +Undo wasn't Vi compatible when using the 'c' flag for ":s". Now it undoes the +whole ":s" command instead of each confirmed replacement. + +The Buffers menu, when torn-off, disappeared when being refreshed. Add a +dummy item to avoid this. + +Removed calling msg_start() in main(), it should not be needed. + +vim_strpbrk() did not support multibyte characters. (Muraoka Taro) + +The Amiga version didn't compile, the code was too big for relative jumps. +Moved a few files from ex_docmd.c to ex_cmds2.c + +When evaluating the "= register resulted in the "= register being changed, Vim +would crash. + +When doing ":view file" and it fails, the current buffer was made read-only. + +Motif: For some people the separators in the toolbar disappeared when resizing +the Vim window. (Marcin Dalecki) + +Win32 GUI: when setting 'lines' to a huge number, would not compute the +available space correctly. Was counting the menu height twice. + +Conversion of the docs to HTML didn't handle the line with the +quickfix tag +correctly. (Antonio Colombo) + +Win32: fname_case() didn't handle multibyte characters correctly. (Yasuhiro +Matsumoto) + +The Cygwin version had trouble with fchdir(). Don't use that function for +Cygwin. + +The generic check in scripts.vim for "conf" syntax was done before some checks +in filetype.vim, resulting in "conf" syntax too often. + +Dos32: Typing lagged behind. Would wait for one biostick when checking if a +character is available. + +GTK: When setting 'columns' while starting up "gvim", would set the width of +the terminal it was started in. + +When using ESC in Insert mode, an autoindent that wraps to the next line +caused the cursor to move to the end of the line temporarily. When the +character before the cursor was a double-wide multibyte character the cursor +would be on the right half, which causes problems with some terminals. + +Didn't handle multibyte characters correctly when expanding a file name. +(Yasuhiro Matsumoto) + +Win32 GUI: Errors generated before the GUI is decided to start were not +reported. + +globpath() didn't reserve enough room for concatenated results. (Anduin +Withers) + +When expanding an option that is very long already, don't do the expansion, it +would be truncated to MAXPATHL. (Anduin Withers) + +When 'selection' is "exclusive", using "Fx" in Visual mode only moved until +just after the character. + +When using IME on the console to enter a file name, the screen may scroll up. +Redraw the screen then. (Yasuhiro Matsumoto) + +Motif: In the find/replace dialog the "Replace" button didn't work first time, +second time it replaced all matches. Removed the use of ":s///c". +GTK: Similar problems with the find/replace dialog, moved the code to a common +function. + +X11: Use shared GC's for text. (Marcin Dalecki) + +"]i" found the match under the cursor, instead of the first one below it. +Same for "]I", "] CTRL-I", "]d", "]D" and "] CTRL-D". + +Win16: When maximized and the font is changed, don't change the window size. +(Vince Negri) + +When 'lbr' is set, deleting a block of text could leave the cursor in the +wrong position. + +Win32: When opening a file with the "Edit with Vim" popup menu entry, +wildcards would cause trouble. Added the "--literal" argument to avoid +expanding file names. + +When using "gv", it didn't restore that "$" was used in Visual block mode. + +Win32 GUI: While waiting for a shell command to finish, the window wasn't +redrawn at all. (Yasuhiro Matsumoto) + +Syntax highlighting: A match that continues on a next line because of a +contained region didn't end when that region ended. + +The ":s" command didn't allow flags like 'e' and 'i' right after it. + +When using ":s" to split a line, marks were moved to the next line. Vi keeps +them in the first line. + +When using ":n" ":rew", the previous context mark was at the top of the file, +while Vi puts it in the same place as the cursor. Made it Vi compatible. + +Fixed Vi incompatibility: Text was not put in register 1 when using "c" and +"d" with a motion character, when deleting within one line with one of the +commands: % ( ) `<character> / ? N n { } + +Win32 GUI: The tooltip for tear-off items remained when the tear-off item was +no longer selected. + +GUI: When typing ":" at the more prompt, would return to Normal mode and not +redraw the screen. + +When starting Vim with an argument "-c g/at/p" the printed lines would +overwrite each other. + +BeOS: Didn't compile. Configure didn't add the os_beos files, the QNX check +removed them. Various changes to os_beos.cc. (Joshua Haberman) +Removed the check for the hardware platform, the BeBox has not been produced +for a long time now. + +Win32 GUI: don't use a message box when the shell returns an error code, +display the message in the Vim window. + +Make_mvc.mak always included "/debug" for linking. "GUI=no" argument didn't +work. Use "DEBUG=yes" instead of "DEBUG=1" to make it consistent. (Dan Sharp) + +When a line in the tags file ended in ;" (no TAB following) the command would +not be recognized as a search command. + +X11: The inputMethod resource never worked. Don't use the "none" input method +for SGI, it apparently makes the first character in Input method dropped. + +Fixed incorrect tests in os_mac.h. (Axel Kielhorn) + +Win32 console: When the console where Vim runs in is closed, Vim could hang in +trying to restore the window icon. (Yasuhiro Matsumoto) + +When using ":3call func()" or ":3,3call func() the line number was ignored. + +When 'showbreak' and 'linebreak' were both set, Visual highlighting sometimes +continued until the end of the line. + +GTK GUI: Tearoff items were added even when 'guioptions' didn't contain 't' +when starting up. + +MS-Windows: When the current directory includes a "~", searching files with +"gf" or ":find" didn't work. A "$" in the directory had the same problem. +Added mch_has_exp_wildcard() functions. + +When reducing the Vim window height while starting up, would get an +out-of-memory error message. + +When editing a very long search pattern, 'incsearch' caused the redraw of the +command line to fail. + +Motif GUI: On some systems the "Help" menu would not be on the far right, as +it should be. On some other systems (esp. IRIX) the command line would not +completely show. Solution is to only resize the menubar for Lesstif. + +Using "%" in a line that contains "\\" twice didn't take care of the quotes +properly. Now make a difference between \" and \\". + +For non-Unix systems a dummy file is created when finding a swap name to +detect a 8.3 filesystem. When there is an existing swap file, would get a +warning for the file being created outside of Vim. Also, when closing the Vim +window the file would remain. + +Motif: The menu height was always computed, using a "-menuheight" argument +was setting the room for the command line. Now make clear the argument is not +supported. + +For some (EBCDIC) systems, POUND was equal to '#'. Added an #if for that to +avoid a duplicate case in a switch. + +The GUI may have problems when forking. Always call _exit() instead of exit() +in the parent, the child will call exit(). + +Win32 GUI: Accented characters were often wrong in dialogs and tearoff menus. +Now use CP_ACP instead of CP_OEMCP. (Vince Negri) + +When displaying text with syntax highlighting causes an error (e.g., running +out of stack) the syntax highlighting is disabled to avoid further messages. + +When a command in a .vimrc or .gvimrc causes an ATTENTION prompt, and Vim was +started from the desktop (no place to display messages) it would hang. Now +open the GUI window early to be able to display the messages and pop up the +dialog. + +"r<CR>" on a multibyte character deleted only the first byte of the +character. "3r<CR>" deleted three bytes instead of three characters. + +When interrupting reading a file, Vi considers the buffer modified. Added the +'i' flag in 'cpoptions' flag for this (we don't want it modified to be able to +do ":q"). + +When using an item in 'guicursor' that starts with a colon, Vim would get +stuck or crash. + +When putting a file mark in a help file and later jumping back to it, the +options would not be set. Extended the modeline in all help files to make +this work better. + +When a modeline contained "::" the local option values would be printed. Now +ignore it. + +Some help files did not use a 8.3 names, which causes problems when using +MS-DOS unzip. Renamed "multibyte.txt" to "mbyte.txt", "rightleft.txt" to +"rileft.txt", "tagsearch.txt" to "tagsrch.txt", "os_riscos.txt" to +"os_risc.txt". + +When Visual mode is blockwise, using "iw" or "aw" made it characterwise. That +doesn't seem right, only do this when in linewise mode. But then do it +always, not only when start and end of Visual mode are equal. + +When using "viw" on a single-letter word and 'selection' is exclusive, would +not include the word. + +When formatting text from Insert mode, using CTRL-O, could mess up undo +information. + +While writing a file (also for the backup file) there was no check for an +interrupt (hitting CTRL-C). Vim could hang when writing a large file over a +slow network, and moving the mouse didn't make it appear (when 'mousehide' is +set) and the screen wasn't updated in the GUI. Also allow interrupting when +syncing the swap file, it can take a long time. + +When using ":mksession" while there is help window, it would later be restored +to the right file but not marked as a help buffer. ":help" would then open +another window. Now use the value "help" for 'buftype' to mark a help buffer. + +The session file contained absolute path names in option values, that doesn't +work when the home directory depends on the situation. Replace the home +directory with ~/ when possible. + +When using 'showbreak' a TAB just after the shown break would not be counted +correctly, the cursor would be positioned wrong. + +With 'showbreak' set to "--->" or "------->" and 'sts' set to 4, inserting +tabs did not work right. Could cause a crash. Backspacing was also wrong, +could get stuck at a line break. + +Win32: crashed when tearing off a menu with over 300 items. + +GUI: A menu or toolbar item would appear when only a tooltip was defined for +it. + +When 'scrolloff' is non-zero and "$" is in 'cpoptions', using "s" while the +last line of the file is the first line on screen, the text wasn't displayed. + +When running "autoconf", delete the configure cache to force starting cleanly +when configure is run again. + +When changing the Normal colors for cterm, the value of 'background' was +changed even when the GUI was used. + +The warning for a missing vimrun.exe was always given on startup, but some +people just editing a file don't need to be bothered by it. Only show it when +vimrun would be used. + +When using "%" in a multibyte text it could get confused by trailbytes that +match. (Muraoka Taro) + +Termcap entry for RiscOS was wrong, using 7 and 8 in octal codes. + +Athena: The title of a dialog window and the file selector window were not +set. (David Harrison) + +The "htmlLink" highlight group specified colors, which gives problems when +using a color scheme. Added the "Underlined" highlight group for this. + +After using ":insert" or ":change" the '[ mark would be one line too low. + +When looking for the file name after a match with 'include' one character was +skipped. Same for 'define'. + +Win32 and DJGPP: When editing a file with a short name in a directory, and +editing the same file but using the long name, would end up with two buffers +on the same file. + +"gf" on a filename that starts with "../" only worked when the file being +edited is in the current directory. An include file search didn't work +properly for files starting with "../" or ".". Now search both relative to +the file and to the current directory. + +When 'printheader', 'titlestring', 'iconstring', 'rulerformat' or 'statusline' +contained "%{" but no following "}" memory was corrupted and a crash could +happen. + +":0append" and then inserting two lines did not redraw the blank lines that +were scrolled back down. + +When using insert mode completion in a narrow window, the message caused a +scroll up. Now shorten the message if it doesn't fit and avoid writing the +ruler over the message. + +XIM still didn't work correctly on some systems, especially SGI/IRIX. Added +the 'imdisable' option, which is set by default for that system. + +Patch 6.0aw.008 +Problem: When the first character of a file name is over 127, the Buffers + menu entry would get a negative priority and cause problems. +Solution: Reduce the multiplier for the first character when computing + the hash value for a Buffers menu entry. +Files: runtime/menu.vim + +Patch 6.0aw.010 +Problem: Win32: ":browse edit dir/dir" didn't work. (Vikas) +Solution: Change slashes to backslashes in the directory passed to the file + browser. +Files: src/gui_w48.c + +Athena file browser: On some systems wcstombs() can't be used to get the +length of a multibyte string. Use the maximum length then. (Yasuhiro +Matsumoto) + +Patch 6.0ax.001 +Problem: When 'patchmode' is set, appending to a file gives an empty + original file. (Ed Ralston) +Solution: Also make a backup copy when appending and 'patchmode' is set. +Files: src/fileio.c + +Patch 6.0ax.002 +Problem: When 'patchmode' is set, appending to a compressed file gives an + uncompressed original file. (Ed Ralston) +Solution: Create the original file before decompressing. +Files: runtime/plugin/gzip.vim + +Patch 6.0ax.005 +Problem: Athena file selector keeps the title of the first invocation. +Solution: Set the title each time the file selector is opened. (David + Harrison) +Files: src/gui_at_fs.c + +Patch 6.0ax.007 +Problem: When using GPM (mouse driver in a Linux console) a double click is + interpreted as a scroll wheel click. +Solution: Check if GPM is being used when deciding if a mouse event is for + the scroll wheel. +Files: src/term.c + +Patch 6.0ax.010 +Problem: The Edit.Save menu and the Save toolbar button didn't work when + the buffer has no file name. +Solution: Use a file browser to ask for a file name. Also fix the toolbar + Find item in Visual mode. +Files: runtime/menu.vim + +Patch 6.0ax.012 +Problem: When 'cpoptions' contains "$", breaking a line for 'textwidth' + doesn't redraw properly. (Stefan Schulze) +Solution: Remove the dollar before breaking the line. +Files: src/edit.c + +Patch 6.0ax.014 +Problem: Win32: On Windows 98 ":make -f file" doesn't work when 'shell' is + "command.com" and 'makeprg' is "nmake". The environment isn't + passed on to "nmake". +Solution: Also use vimrun.exe when redirecting the output of a command. +Files: src/os_win32.c + +Patch 6.0ax.016 +Problem: The version number was reported wrong in the intro screen. +Solution: Check for a version number with two additional letters. +Files: src/version.c + +Patch 6.0ax.019 +Problem: When scrolling a window with folds upwards, switching to another + vertically split window and back may not update the scrollbar. +Solution: Limit w_botline to the number of lines in the buffer plus one. +Files: src/move.c + + +============================================================================== +VERSION 6.1 *version-6.1* + +This section is about improvements made between version 6.0 and 6.1. + +This is a bug-fix release, there are not really any new features. + + +Changed *changed-6.1* +------- + +'iminsert' and 'imsearch' are no longer set as a side effect of defining a +language-mapping using ":lmap". + + +Added *added-6.1* +----- + +Syntax files: +ampl AMPL (David Krief) +ant Ant (Johannes Zellner) +baan Baan (Her van de Vliert) +cs C# (Johannes Zellner) +lifelines Lifelines (Patrick Texier) +lscript LotusScript (Taryn East) +moo MOO (Timo Frenay) +nsis NSIS (Alex Jakushev) +ppd Postscript Printer Description (Bjoern Jacke) +rpl RPL/2 (Joel Bertrand) +scilab Scilab (Benoit Hamelin) +splint Splint (Ralf Wildenhues) +sqlj SQLJ (Andreas Fischbach) +wvdial WvDial (Prahlad Vaidyanathan) +xf86conf XFree86 config (Nikolai Weibull) +xmodmap Xmodmap (Nikolai Weibull) +xslt Xslt (Johannes Zellner) +monk Monk (Mike Litherland) +xsd Xsd (Johannes Zellner) +cdl CDL (Raul Segura Acevedo) +sendpr Send-pr (Hendrik Scholz) + +Added indent file for Scheme. (Dorai Sitaram) +Added indent file for Prolog. (Kontra Gergely) +Added indent file for Povray (David Necas) +Added indent file for IDL (Aleksandar Jelenak) +Added C# indent and ftplugin scripts. + +Added Ukrainian menu translations. (Bohdan Vlasyuk) +Added ASCII version of the Czech menus. (Jiri Brezina) + +Added Simplified Chinese translation of the tutor. (Mendel L Chan) + +Added Russian keymap for yawerty keyboard. + +Added an explanation of using the vimrc file in the tutor. +Changed tutor.vim to get the right encoding for the Taiwanese tutor. + +Added Russian tutor. (Andrey Kiselev) +Added Polish tutor. (Mikolaj Machowski) + +Added darkblue color scheme. (Bohdan Vlasyuk) + +When packing the dos language archive automatically generate the .mo files +that are required. + +Improved NSIS script to support NSIS 180. Added icons for the +enabled/disabled status. (Mirek Pruchnik) + +cp1250 version of the Slovak message translations. + +Compiler plugins for IRIX compilers. (David Harrison) + + +Fixed *fixed-6.1* +----- + +The license text was updated to make the meaning clearer and make it +compatible with the GNU GPL. Otherwise distributors have a problem when +linking Vim with a GPL'ed library. + +When installing the "less.sh" script it was not made executable. (Chuck Berg) + +Win32: The "9" key on the numpad wasn't working. (Julian Kinraid) + +The NSIS install script didn't work with NSIS 1.80 or later. Also add +Vim-specific icons. (Pruchnik) + +The script for conversion to HTML contained an "if" in the wrong place. +(Michael Geddes) + +Allow using ":ascii" in the sandbox, it's harmless. + +Removed creat() from osdef2.h.in, it wasn't used and may cause a problem when +it's redefined to creat64(). + +The text files in the VisVim directory were in "dos" format. This caused +problems when applying a patch. Now keep them in "unix" format and convert +them to "dos" format only for the PC archives. + +Add ruby files to the dos source archive, they can be used by Make_mvc.mak. +(Mirek Pruchnik) + +"cp -f" doesn't work on all systems. Change "cp -f" in the Makefile to "rm +-f" and "cp". + +Didn't compile on a Compaq Tandem Himalaya OSS. (Michael A. Benzinger) + +The GTK file selection dialog didn't include the "Create Dir", "Delete File" +and "Rename File" buttons. + +When doing ":browse source" the dialog has the title "Run Macro". Better +would be "Source Vim script". (Yegappan Lakshmanan) + +Win32: Don't use the printer font as default for the font dialog. + +"make doslang" didn't work when configure didn't run (yet). Set $MAKEMO to +"yes". (Mirek Pruchnik) + +The ToolBar TagJump item used "g]", which prompts for a selection even when +there is only one matching tag. Use "g<C-]>" instead. + +The ming makefile for message translations didn't have the right list of +files. + +The MS-Windows 3.1 version complains about LIBINTL.DLL not found. Compile +this version without message translations. + +The Borland 5 makefile contained a check for Ruby which is no longer needed. +The URLs for the TCL library was outdated. (Dan Sharp) + +The eviso.ps file was missing from the DOS runtime archive, it's needed for +printing PostScript in the 32bit DOS version. + +In menu files ":scriptencoding" was used in a wrong way after patch 6.1a.032 +Now use ":scriptencoding" in the file where the translations are given. Do +the same for all menus in latin1 encoding. + +Included a lot of fixes for the Macintosh, mostly to make it work with Carbon. +(Dany StAmant, Axel Kielhorn, Benji Fisher) + +Improved the vimtutor shell script to use $TMPDIR when it exists, and delete +the copied file when exiting in an abnormal way. (Max Ischenko) + +When "iconv.dll" can't be found, try using "libiconv.dll". + +When encryption is used, filtering with a shell command wasn't possible. + +DJGPP: ":cd c:" always failed, can't get permissions for "c:". +Win32: ":cd c:/" failed if the previous current directory on c: had become +invalid. + +DJGPP: Shift-Del and Del both produce \316\123. Default mapping for Del is +wrong. Disabled it. + +Dependencies on header files in MingW makefile was wrong. + +Win32: Don't use ACL stuff for MSVC 4.2, it's not supported. (Walter Briscoe) + +Win32 with Borland: bcc.cfg was caching the value for $(BOR), but providing a +different argument to make didn't regenerate it. + +Win32 with MSVC: Make_ivc.mak generates a new if_ole.h in a different +directory, the if_ole.h in the src directory may be used instead. Delete the +distributed file. + +When a window is vertically split and then ":ball" is used, the window layout +is messed up, can cause a crash. (Muraoka Taro) + +When 'insertmode' is set, using File/New menu and then double clicking, "i" is +soon inserted. (Merlin Hansen) + +When Select mode is active and using the Buffers menu to switch to another +buffer, an old selection comes back. Reset VIsual_reselect for a ":buffer" +command. + +When Select mode is active and 'insertmode' is set, using the Buffers menu to +switch to another buffer, did not return to Insert mode. Make sure +"restart_edit" is set. + +When double clicking on the first character of a word while 'selection' is +"exclusive" didn't select that word. + + +Patch 6.0.001 +Problem: Loading the sh.vim syntax file causes error messages. (Corinna + Vinschen) +Solution: Add an "if". (Charles Campbell) +Files: runtime/syntax/sh.vim + +Patch 6.0.002 +Problem: Using a '@' item in 'viminfo' doesn't work. (Marko Leipert) +Solution: Add '@' to the list of accepted items. +Files: src/option.c + +Patch 6.0.003 +Problem: The configure check for ACLs on AIX doesn't work. +Solution: Fix the test program so that it compiles. (Tomas Ogren) +Files: src/configure.in, src/auto/configure + +Patch 6.0.004 +Problem: The find/replace dialog doesn't reuse a previous argument + properly. +Solution: After removing a "\V" terminate the string. (Zwane Mwaikambo) +Files: src/gui.c + +Patch 6.0.005 +Problem: In Insert mode, "CTRL-O :ls" has a delay before redrawing. +Solution: Don't delay just after wait_return() was called. Added the + did_wait_return flag. +Files: src/globals.h, src/message.c, src/normal.c, src/screen.c + +Patch 6.0.006 +Problem: With a vertical split, 'number' set and 'scrolloff' non-zero, + making the window width very small causes a crash. (Niklas + Lindstrom) +Solution: Check for a zero width. +Files: src/move.c + +Patch 6.0.007 +Problem: When setting 'filetype' while there is no FileType autocommand, a + following ":setfiletype" would set 'filetype' again. (Kobus + Retief) +Solution: Set did_filetype always when 'filetype' has been set. +Files: src/option.c + +Patch 6.0.008 +Problem: 'imdisable' is missing from the options window. (Michael Naumann) +Solution: Add an entry for it. +Files: runtime/optwin.vim + +Patch 6.0.009 +Problem: Nextstep doesn't have S_ISBLK. (John Beppu) +Solution: Define S_ISBLK using S_IFBLK. +Files: src/os_unix.h + +Patch 6.0.010 +Problem: Using "gf" on a file name starting with "./" or "../" in a buffer + without a name causes a crash. (Roy Lewis) +Solution: Check for a NULL file name. +Files: src/misc2.c + +Patch 6.0.011 +Problem: Python: After replacing or deleting lines get an ml_get error. + (Leo Lipelis) +Solution: Adjust the cursor position for deleted or added lines. +Files: src/if_python.c + +Patch 6.0.012 +Problem: Polish translations contain printf format errors, this can result + in a crash when using one of them. +Solution: Fix for translated messages. (Michal Politowski) +Files: src/po/pl.po + +Patch 6.0.013 +Problem: Using ":silent! cmd" still gives some error messages, like for an + invalid range. (Salman Halim) +Solution: Reset emsg_silent after calling emsg() in do_one_cmd(). +Files: src/ex_docmd.c + +Patch 6.0.014 +Problem: When 'modifiable' is off and 'virtualedit' is "all", "rx" on a TAB + still changes the buffer. (Muraoka Taro) +Solution: Check if saving the line for undo fails. +Files: src/normal.c + +Patch 6.0.015 +Problem: When 'cpoptions' includes "S" and "filetype plugin on" has been + used, can get an error for deleting the b:did_ftplugin variable. + (Ralph Henderson) +Solution: Only delete the variable when it exists. +Files: runtime/ftplugin.vim + +Patch 6.0.016 +Problem: bufnr(), bufname() and bufwinnr() don't find unlisted buffers when + the argument is a string. (Hari Krishna Dara) + Also for setbufvar() and getbufvar(). +Solution: Also find unlisted buffers. +Files: src/eval.c + +Patch 6.0.017 +Problem: When 'ttybuiltin' is set and a builtin termcap entry defines t_Co + and the external one doesn't, it gets reset to empty. (David + Harrison) +Solution: Only set t_Co when it wasn't set yet. +Files: src/term.c + +Patch 6.0.018 +Problem: Initializing 'encoding' may cause a crash when setlocale() is not + used. (Dany St-Amant) +Solution: Check for a NULL pointer. +Files: src/mbyte.c + +Patch 6.0.019 +Problem: Converting a string with multibyte characters to a printable + string, e.g., with strtrans(), may cause a crash. (Tomas Zellerin) +Solution: Correctly compute the length of the result in transstr(). +Files: src/charset.c + +Patch 6.0.020 +Problem: When obtaining the value of a global variable internally, could + get the function-local value instead. Applies to using <Leader> + and <LocalLeader> and resetting highlighting in a function. +Solution: Prepend "g:" to the variable name. (Aric Blumer) +Files: src/syntax.c, src/term.c + +Patch 6.0.021 +Problem: The 'cscopepathcomp' option didn't work. +Solution: Change USE_CSCOPE to FEAT_CSCOPE. (Mark Feng) +Files: src/option.c + +Patch 6.0.022 +Problem: When using the 'langmap' option, the second character of a command + starting with "g" isn't adjusted. +Solution: Apply 'langmap' to the second character. (Alex Kapranoff) +Files: src/normal.c + +Patch 6.0.023 +Problem: Loading the lhaskell syntax doesn't work. (Thore B. Karlsen) +Solution: Use ":runtime" instead of "source" to load haskell.vim. +Files: runtime/syntax/lhaskell.vim + +Patch 6.0.024 +Problem: Using "CTRL-V u 9900" in Insert mode may cause a crash. (Noah + Levitt) +Solution: Don't insert a NUL byte in the text, use a newline. +Files: src/misc1.c + +Patch 6.0.025 +Problem: The pattern "\vx(.|$)" doesn't match "x" at the end of a line. + (Preben Peppe Guldberg) +Solution: Always see a "$" as end-of-line after "\v". Do the same for "^". +Files: src/regexp.c + +Patch 6.0.026 +Problem: GTK: When using arrow keys to navigate through the menus, the + separators are selected. +Solution: Set the separators "insensitive". (Pavel Kankovsky) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.027 +Problem: VMS: Printing doesn't work, the file is deleted too quickly. + No longer need the VMS specific printing menu. + gethostname() is not available with VAXC. + The makefile was lacking selection of the tiny-huge feature set. +Solution: Adjust the 'printexpr' option default. Fix the other problems and + update the documentation. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, runtime/menu.vim, src/INSTALLvms.txt, + src/Make_vms.mms, src/option.c, src/os_unix.c, src/os_vms_conf.h + +Patch 6.0.028 +Problem: Can't compile without +virtualedit and with +visualextra. (Geza + Lakner) +Solution: Add an #ifdef for +virtualedit. +Files: src/ops.c + +Patch 6.0.029 +Problem: When making a change in line 1, then in line 2 and then deleting + line 1, undo info could be wrong. Only when the changes are undone + at once. (Gerhard Hochholzer) +Solution: When not saving a line for undo because it was already done + before, remember for which entry the last line must be computed. + Added ue_getbot_entry pointer for this. When the number of lines + changes, adjust the position of newer undo entries. +Files: src/structs.h, src/undo.c + +Patch 6.0.030 +Problem: Using ":source! file" doesn't work inside a loop or after + ":argdo". (Pavol Juhas) +Solution: Execute the commands in the file right away, do not let the main + loop do it. +Files: src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, src/globals.h, + src/proto/ex_docmd.pro, src/proto/getchar.pro + +Patch 6.0.031 +Problem: Nextstep doesn't have setenv() or putenv(). (John Beppu) +Solution: Move putenv() from pty.c to misc2.c +Files: src/misc2.c, src/pty.c + +Patch 6.0.032 +Problem: When changing a setting that affects all folds, they are not + displayed immediately. +Solution: Set the redraw flag in foldUpdateAll(). +Files: src/fold.c + +Patch 6.0.033 +Problem: Using 'wildmenu' on MS-Windows, file names that include a space + are only displayed starting with that space. (Xie Yuheng) +Solution: Don't recognize a backslash before a space as a path separator. +Files: src/screen.c + +Patch 6.0.034 +Problem: Calling searchpair() with three arguments could result in a crash + or strange error message. (Kalle Bjorklid) +Solution: Don't use the fifth argument when there is no fourth argument. +Files: src/eval.c + +Patch 6.0.035 +Problem: The menu item Edit/Global_Settings/Toggle_Toolbar doesn't work + when 'ignorecase' is set. (Allen Castaban) +Solution: Always match case when checking if a flag is already present in + 'guioptions'. +Files: runtime/menu.vim + +Patch 6.0.036 +Problem: OS/2, MS-DOS and MS-Windows: Using a path that starts with a + slash in 'tags' doesn't work as expected. (Mathias Koehrer) +Solution: Only use the drive, not the whole path to the current directory. + Also make it work for "c:dir/file". +Files: src/misc2.c + +Patch 6.0.037 +Problem: When the user has set "did_install_syntax_menu" to avoid the + default Syntax menu it still appears. (Virgilio) +Solution: Don't add the three default items when "did_install_syntax_menu" + is set. +Files: runtime/menu.vim + +Patch 6.0.038 +Problem: When 'selection' is "exclusive", deleting a block of text at the + end of a line can leave the cursor beyond the end of the line. +Solution: Correct the cursor position. +Files: src/ops.c + +Patch 6.0.039 +Problem: "gP" leaves the cursor in the wrong position when 'virtualedit' is + used. Using "c" in blockwise Visual mode leaves the cursor in a + strange position. +Solution: For "gP" reset the "coladd" field for the '] mark. For "c" leave + the cursor on the last inserted character. +Files: src/ops.c + +Patch 6.0.040 +Problem: When 'fileencoding' is invalid and writing fails because of + this, the original file is gone. (Eric Carlier) +Solution: Restore the original file from the backup. +Files: src/fileio.c + +Patch 6.0.041 +Problem: Using ":language messages en" when LC_MESSAGES is undefined + results in setting LC_CTYPE. (Eric Carlier) +Solution: Set $LC_MESSAGES instead. +Files: src/ex_cmds2.c + +Patch 6.0.042 +Problem: ":mksession" can't handle file names with a space. +Solution: Escape special characters in file names with a backslash. +Files: src/ex_docmd.c + +Patch 6.0.043 +Problem: Patch 6.0.041 was wrong. +Solution: Use mch_getenv() instead of vim_getenv(). +Files: src/ex_cmds2.c + +Patch 6.0.044 +Problem: Using a "containedin" list for a syntax item doesn't work for an + item that doesn't have a "contains" argument. Also, "containedin" + doesn't ignore a transparent item. (Timo Frenay) +Solution: When there is a "containedin" argument somewhere, always check for + contained items. Don't check for the transparent item but the + item it's contained in. +Files: src/structs.h, src/syntax.c + +Patch 6.0.045 +Problem: After creating a fold with a Visual selection, another window + with the same buffer still has inverted text. (Sami Salonen) +Solution: Redraw the inverted text. +Files: src/normal.c + +Patch 6.0.046 +Problem: When getrlimit() returns an 8 byte number the check for running + out of stack may fail. (Anthony Meijer) +Solution: Skip the stack check if the limit doesn't fit in a long. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.0.047 +Problem: Using a regexp with "\(\)" inside a "\%[]" item causes a crash. + (Samuel Lacas) +Solution: Don't allow nested atoms inside "\%[]". +Files: src/regexp.c + +Patch 6.0.048 +Problem: Win32: In the console the mouse doesn't always work correctly. + Sometimes after getting focus a mouse movement is interpreted like + a button click. +Solution: Use a different function to obtain the number of mouse buttons. + Avoid recognizing a button press from undefined bits. (Vince Negri) +Files: src/os_win32.c + +Patch 6.0.049 +Problem: When using evim the intro screen is misleading. (Adrian Nagle) +Solution: Mention whether 'insertmode' is set and the menus to be used. +Files: runtime/menu.vim, src/version.c + +Patch 6.0.050 +Problem: UTF-8: "viw" doesn't include non-ASCII characters before the + cursor. (Bertilo Wennergren) +Solution: Use dec_cursor() instead of decrementing the column number. +Files: src/search.c + +Patch 6.0.051 +Problem: UTF-8: Using CTRL-R on the command line doesn't insert composing + characters. (Ron Aaron) +Solution: Also include the composing characters and fix redrawing them. +Files: src/ex_getln.c, src/ops.c + +Patch 6.0.052 +Problem: The check for rlim_t in patch 6.0.046 does not work on some + systems. (Zdenek Sekera) +Solution: Also look in sys/resource.h for rlim_t. +Files: src/auto/configure, src/configure.in + +Patch 6.0.053 (extra) +Problem: Various problems with QNX. +Solution: Minor fix for configure. Switch on terminal clipboard support in + main.c. Fix "pterm" mouse support. os_qnx.c didn't build without + photon. (Julian Kinraid) +Files: src/auto/configure, src/configure.in, src/gui_photon.c, + src/main.c, src/misc2.c, src/option.h, src/os_qnx.c, src/os_qnx.h, + src/syntax.c + +Patch 6.0.054 +Problem: When using mswin.vim, CTRL-V pastes a block of text like it is + normal text. Using CTRL-V in blockwise Visual mode leaves "x" + characters behind. +Solution: Make CTRL-V work as it should. Do the same for the Paste menu + entries. +Files: runtime/menu.vim, runtime/mswin.vim + +Patch 6.0.055 +Problem: GTK: The selection isn't copied the first time. +Solution: Own the selection at the right moment. +Files: src/gui_gtk_x11.c + +Patch 6.0.056 +Problem: Using "CTRL-O cw" in Insert mode results in a nested Insert mode. + <Esc> doesn't leave Insert mode then. +Solution: Only use nested Insert mode when 'insertmode' is set or when a + mapping is used. +Files: src/normal.c + +Patch 6.0.057 +Problem: Using ":wincmd g}" in a function doesn't work. (Gary Holloway) +Solution: Execute the command directly, instead of putting it in the + typeahead buffer. +Files: src/normal.c, src/proto/normal.pro, src/window.c + +Patch 6.0.058 +Problem: When a Cursorhold autocommand moved the cursor, the ruler wasn't + updated. (Bohdan Vlasyuk) +Solution: Update the ruler after executing the autocommands. +Files: src/gui.c + +Patch 6.0.059 +Problem: Highlighting for 'hlsearch' isn't visible in lines that are + highlighted for diff highlighting. (Gary Holloway) +Solution: Let 'hlsearch' highlighting overrule diff highlighting. +Files: src/screen.c + +Patch 6.0.060 +Problem: Motif: When the tooltip is to be popped up, Vim crashes. + (Gary Holloway) +Solution: Check for a NULL return value from gui_motif_fontset2fontlist(). +Files: src/gui_beval.c + +Patch 6.0.061 +Problem: The toolbar buttons to load and save a session do not correctly + use v:this_session. +Solution: Check for v:this_session to be empty instead of existing. +Files: runtime/menu.vim + +Patch 6.0.062 +Problem: Crash when 'verbose' is > 3 and using ":shell". (Yegappan + Lakshmanan) +Solution: Avoid giving a NULL pointer to printf(). Also output a newline + and switch the cursor on. +Files: src/misc2.c + +Patch 6.0.063 +Problem: When 'cpoptions' includes "$", using "cw" to type a ')' on top of + the "$" doesn't update syntax highlighting after it. +Solution: Stop displaying the "$" when typing a ')' in its position. +Files: src/search.c + +Patch 6.0.064 (extra) +Problem: The NSIS install script doesn't work with newer versions of NSIS. + The diff feature doesn't work when there isn't a good diff.exe on + the system. +Solution: Replace the GetParentDir instruction by a user function. + Fix a few cosmetic problems. Use defined constants for the + version number, so that it's defined in one place only. + Only accept the install directory when it ends in "vim". + (Eduardo Fernandez) + Add a diff.exe and use it from the default _vimrc. +Files: nsis/gvim.nsi, nsis/README.txt, src/dosinst.c + +Patch 6.0.065 +Problem: When using ":normal" in 'indentexpr' it may use redo characters + before its argument. (Neil Bird) +Solution: Save and restore the stuff buffer in ex_normal(). +Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h + +Patch 6.0.066 +Problem: Sometimes undo for one command is split into two undo actions. + (Halim Salman) +Solution: Don't set the undo-synced flag when reusing a line that was + already saved for undo. +Files: src/undo.c + +Patch 6.0.067 +Problem: if_xcmdsrv.c doesn't compile on systems where fd_set isn't defined + in the usual header file (e.g., AIX). (Mark Waggoner) +Solution: Include sys/select.h in if_xcmdsrv.c for systems that have it. +Files: src/if_xcmdsrv.c + +Patch 6.0.068 +Problem: When formatting a Visually selected area with "gq" and the number + of lines increases the last line may not be redrawn correctly. + (Yegappan Lakshmanan) +Solution: Correct the area to be redrawn for inserted/deleted lines. +Files: src/ops.c + +Patch 6.0.069 +Problem: Using "K" on a word that includes a "!" causes a "No previous + command" error, because the "!" is expanded. (Craig Jeffries) +Solution: Put a backslash before the "!". +Files: src/normal.c + +Patch 6.0.070 +Problem: Win32: The error message for a failed dynamic linking of a Perl, + Ruby, Tcl and Python library is unclear about what went wrong. +Solution: Give the name of the library or function that could not be loaded. + Also for the iconv and gettext libraries when 'verbose' is set. +Files: src/eval.c, src/if_perl.xs, src/if_python.c, src/if_ruby.c, + src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/if_perl.pro, + src/proto/if_python.pro, src/proto/if_ruby.pro, + src/proto/if_tcl.pro, src/proto/mbyte.pro + +Patch 6.0.071 +Problem: The "iris-ansi" builtin termcap isn't very good. +Solution: Fix the wrong entries. (David Harrison) +Files: src/term.c + +Patch 6.0.072 +Problem: When 'lazyredraw' is set, a mapping that stops Visual mode, moves + the cursor and starts Visual mode again causes a redraw problem. + (Brian Silverman) +Solution: Redraw both the old and the new Visual area when necessary. +Files: src/normal.c, src/screen.c + +Patch 6.0.073 (extra) +Problem: DJGPP: When using CTRL-Z to start a shell, the prompt is halfway + the text. (Volker Kiefel) +Solution: Position the system cursor before starting the shell. +Files: src/os_msdos.c + +Patch 6.0.074 +Problem: When using "&" in a substitute string a multibyte character with + a trailbyte 0x5c is not handled correctly. +Solution: Recognize multibyte characters inside the "&" part. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.0.075 +Problem: When closing a horizontally split window while 'eadirection' is + "hor" another horizontally split window is still resized. (Aron + Griffis) +Solution: Only resize windows in the same top frame as the window that is + split or closed. +Files: src/main.c, src/proto/window.pro, src/window.c + +Patch 6.0.076 +Problem: Warning for wrong pointer type when compiling. +Solution: Use char instead of char_u pointer. +Files: src/version.c + +Patch 6.0.077 +Problem: Patch 6.0.075 was incomplete. +Solution: Fix another call to win_equal(). +Files: src/option.c + +Patch 6.0.078 +Problem: Using "daw" at the end of a line on a single-character word didn't + include the white space before it. At the end of the file it + didn't work at all. (Gavin Sinclair) +Solution: Include the white space before the word. +Files: src/search.c + +Patch 6.0.079 +Problem: When "W" is in 'cpoptions' and 'backupcopy' is "no" or "auto", can + still overwrite a read-only file, because it's renamed. (Gary + Holloway) +Solution: Add a check for a read-only file before renaming the file to + become the backup. +Files: src/fileio.c + +Patch 6.0.080 +Problem: When using a session file that has the same file in two windows, + the fileinfo() call in do_ecmd() causes a scroll and a hit-enter + prompt. (Robert Webb) +Solution: Don't scroll this message when 'shortmess' contains 'O'. +Files: src/ex_cmds.c + +Patch 6.0.081 +Problem: After using ":saveas" the new buffer name is added to the Buffers + menu with a wrong number. (Chauk-Mean Proum) +Solution: Trigger BufFilePre and BufFilePost events for the renamed buffer + and BufAdd for the old name (which is with a new buffer). +Files: src/ex_cmds.c + +Patch 6.0.082 +Problem: When swapping screens in an xterm and there is an (error) message + from the vimrc script, the shell prompt is after the message. +Solution: Output a newline when there was output on the alternate screen. + Also when starting the GUI. +Files: src/main.c + +Patch 6.0.083 +Problem: GTK: When compiled without menu support the buttons in a dialog + don't have any text. (Erik Edelmann) +Solution: Add the text also when GTK_USE_ACCEL isn't defined. And define + GTK_USE_ACCEL also when not using menus. +Files: src/gui_gtk.c + +Patch 6.0.084 +Problem: UTF-8: a "r" command with an argument that is a keymap for a + character with a composing character can't be repeated with ".". + (Raphael Finkel) +Solution: Add the composing characters to the redo buffer. +Files: src/normal.c + +Patch 6.0.085 +Problem: When 'mousefocus' is set, using "s" to go to Insert mode and then + moving the mouse pointer to another window stops Insert mode, + while this doesn't happen with "a" or "i". (Robert Webb) +Solution: Reset finish_op before calling edit(). +Files: src/normal.c + +Patch 6.0.086 +Problem: When using "gu" the message says "~ed". +Solution: Make the message say "changed". +Files: src/ops.c + +Patch 6.0.087 (lang) +Problem: Message translations are incorrect, which may cause a crash. + (Peter Figura) + The Turkish translations needed more work and the maintainer + didn't have time. +Solution: Fix order of printf arguments. Remove %2$d constructs. + Add "-v" to msgfmt to get a warning for wrong translations. + Don't install the Turkish translations for now. + Update a few more translations. +Files: src/po/Makefile, src/po/af.po, src/po/cs.po, src/po/cs.cp1250.po, + src/po/de.po, src/po/es.po, src/po/fr.po, src/po/it.po, + src/po/ja.po, src/po/ja.sjis.po, src/po/ko.po, src/po/pl.po, + src/po/sk.po, src/po/uk.po, src/po/zh_CN.UTF-8.po, + src/po/zh_CN.cp936.po, src/po/zh_CN.po, src/po/zh_TW.po + +Patch 6.0.088 +Problem: "." doesn't work after using "rx" in Visual mode. (Charles + Campbell) +Solution: Also store the replacement character in the redo buffer. +Files: src/normal.c + +Patch 6.0.089 +Problem: In a C file, using "==" to align a line starting with "* " after + a line with "* -" indents one space too few. (Piet Delport) +Solution: Align with the previous line if the comment-start-string matches + there. +Files: src/misc1.c + +Patch 6.0.090 +Problem: When a wrapping line does not fit in a window and 'scrolloff' is + bigger than half the window height, moving the cursor left or + right causes the screen to flash badly. (Lubomir Host) +Solution: When there is not enough room to show 'scrolloff' screen lines and + near the end of the line, show the end of the line. +Files: src/move.c + +Patch 6.0.091 +Problem: Using CTRL-O in Insert mode, while 'virtualedit' is "all" and the + cursor is after the end-of-line, moves the cursor left. (Yegappan + Lakshmanan) +Solution: Keep the cursor in the same position. +Files: src/edit.c + +Patch 6.0.092 +Problem: The explorer plugin doesn't ignore case of 'suffixes' on + MS-Windows. (Mike Williams) +Solution: Match or ignore case as appropriate for the OS. +Files: runtime/plugin/explorer.vim + +Patch 6.0.093 +Problem: When the Tcl library couldn't be loaded dynamically, get an error + message when closing a buffer or window. (Muraoka Taro) +Solution: Only free structures if already using the Tcl interpreter. +Files: src/if_tcl.c + +Patch 6.0.094 +Problem: Athena: When clicking in the horizontal scrollbar Vim crashes. + (Paul Ackersviller) +Solution: Use the thumb size instead of the window pointer of the scrollbar + (which is NULL). (David Harrison) + Also avoid that scrolling goes the wrong way in a narrow window. +Files: src/gui_athena.c + +Patch 6.0.095 +Problem: Perl: Deleting lines may leave the cursor beyond the end of the + file. +Solution: Check the cursor position after deleting a line. (Serguei) +Files: src/if_perl.xs + +Patch 6.0.096 +Problem: When ":saveas fname" fails because the file already exists, the + file name is changed anyway and a following ":w" will overwrite + the file. (Eric Carlier) +Solution: Don't change the file name if the file already exists. +Files: src/ex_cmds.c + +Patch 6.0.097 +Problem: Re-indenting in Insert mode with CTRL-F may cause a crash with a + multibyte encoding. +Solution: Avoid using a character before the start of a line. (Sergey + Vlasov) +Files: src/edit.c + +Patch 6.0.098 +Problem: GTK: When using Gnome the "Search" and "Search and Replace" dialog + boxes are not translated. +Solution: Define ENABLE_NLS before including gnome.h. (Eduardo Fernandez) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.099 +Problem: Cygwin: When running Vi compatible MS-DOS line endings cause + trouble. +Solution: Make the default for 'fileformats' "unix,dos" in Vi compatible + mode. (Michael Schaap) +Files: src/option.h + +Patch 6.0.100 +Problem: ":badd +0 test%file" causes a crash. +Solution: Take into account that the "+0" is NUL terminated when allocating + room for replacing the "%". +Files: src/ex_docmd.c + +Patch 6.0.101 +Problem: ":mksession" doesn't restore editing a file that has a '#' or '%' + in its name. (Wolfgang Blankenburg) +Solution: Put a backslash before the '#' and '%'. +Files: src/ex_docmd.c + +Patch 6.0.102 +Problem: When changing folds the cursor may appear halfway a closed fold. + (Nam SungHyun) +Solution: Set w_cline_folded correctly. (Yasuhiro Matsumoto) +Files: src/move.c + +Patch 6.0.103 +Problem: When using 'scrollbind' a large value of 'scrolloff' will make the + scroll binding stop near the end of the file. (Coen Engelbarts) +Solution: Don't use 'scrolloff' when limiting the topline for scroll + binding. (Dany StAmant) +Files: src/normal.c + +Patch 6.0.104 +Problem: Multi-byte: When '$' is in 'cpoptions', typing a double-wide + character that overwrites the left half of an old double-wide + character causes a redraw problem and the cursor stops blinking. +Solution: Clear the right half of the old character. (Yasuhiro Matsumoto) +Files: src/edit.c, src/screen.c + +Patch 6.0.105 +Problem: Multi-byte: In a window of one column wide, with syntax + highlighting enabled a crash might happen. +Solution: Skip getting the syntax attribute when the character doesn't fit + anyway. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.106 (extra) +Problem: Win32: When the printer font is wrong, there is no error message. +Solution: Give an appropriate error message. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.0.107 (extra) +Problem: VisVim: When editing another file, a modified file may be written + unexpectedly and without warning. +Solution: Split the window if a file was modified. +Files: VisVim/Commands.cpp + +Patch 6.0.108 +Problem: When using folding could try displaying line zero, resulting in an + error for a NULL pointer. +Solution: Stop decrementing w_topline when the first line of a window is in + a closed fold. +Files: src/window.c + +Patch 6.0.109 +Problem: XIM: When the input method is enabled, repeating an insertion with + "." disables it. (Marcel Svitalsky) +Solution: Don't store the input method status when a command comes from the + stuff buffer. +Files: src/ui.c + +Patch 6.0.110 +Problem: Using undo after executing "OxjAxkdd" from a register in + an empty buffer gives an error message. (Gerhard Hochholzer) +Solution: Don't adjust the bottom line number of an undo block when it's + zero. Add a test for this problem. +Files: src/undo.c, src/testdir/test20.in, src/testdir/test20.ok + +Patch 6.0.111 +Problem: The virtcol() function doesn't take care of 'virtualedit'. +Solution: Add the column offset when needed. (Yegappan Lakshmanan) +Files: src/eval.c + +Patch 6.0.112 +Problem: The explorer plugin doesn't sort directories with a space or + special character after a directory with a shorter name. +Solution: Ignore the trailing slash when comparing directory names. (Mike + Williams) +Files: runtime/plugin/explorer.vim + +Patch 6.0.113 +Problem: ":edit ~/fname" doesn't work if $HOME includes a space. Also, + expanding wildcards with the shell may fail. (John Daniel) +Solution: Escape spaces with a backslash when needed. +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/os_unix.c + +Patch 6.0.114 +Problem: Using ":p" with fnamemodify() didn't expand "~/" or "~user/" to a + full path. For Win32 the current directory was prepended. + (Michael Geddes) +Solution: Expand the home directory. +Files: src/eval.c + +Patch 6.0.115 (extra) +Problem: Win32: When using a dialog with a textfield it cannot scroll the + text. +Solution: Add ES_AUTOHSCROLL to the textfield style. (Pedro Gomes) +Files: src/gui_w32.c + +Patch 6.0.116 (extra) +Problem: MS-Windows NT/2000/XP: filewritable() doesn't work correctly for + filesystems that use ACLs. +Solution: Use ACL functions to check if a file is writable. (Mike Williams) +Files: src/eval.c, src/macros.h, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.0.117 (extra) +Problem: Win32: when disabling the menu, "set lines=999" doesn't use all + the available screen space. +Solution: Don't subtract the fixed caption height but the real menu height + from the available screen space. Also: Avoid recursion in + gui_mswin_get_menu_height(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.0.118 +Problem: When $TMPDIR is a relative path, the temp directory is missing a + trailing slash and isn't deleted when Vim exits. (Peter Holm) +Solution: Add the slash after expanding the directory to an absolute path. +Files: src/fileio.c + +Patch 6.0.119 (depends on patch 6.0.116) +Problem: VMS: filewritable() doesn't work properly. +Solution: Use the same method as for Unix. (Zoltan Arpadffy) +Files: src/eval.c + +Patch 6.0.120 +Problem: The conversion to html isn't compatible with XHTML. +Solution: Quote the values. (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.0.121 (extra) (depends on patch 6.0.116) +Problem: Win32: After patch 6.0.116 Vim doesn't compile with mingw32. +Solution: Add an #ifdef HAVE_ACL. +Files: src/os_win32.c + +Patch 6.0.122 (extra) +Problem: Win16: Same resize problems as patch 6.0.117 fixed for Win32. And + dialog textfield problem from patch 6.0.115. +Solution: Set old_menu_height only when used. Add ES_AUTOHSCROLL flag. + (Vince Negri) +Files: src/gui_w16.c + +Patch 6.0.123 (depends on patch 6.0.119) +Problem: Win16: Compilation problems. +Solution: Move "&&" to other lines. (Vince Negri) +Files: src/eval.c + +Patch 6.0.124 +Problem: When using a ":substitute" command that starts with "\=" + (evaluated as an expression), "~" was still replaced with the + previous substitute string. +Solution: Skip the replacement when the substitute string starts with "\=". + Also adjust the documentation about doubling backslashes. +Files: src/ex_cmds.c, runtime/doc/change.txt + +Patch 6.0.125 (extra) +Problem: Win32: When using the multi_byte_ime feature pressing the shift + key would be handled as if a character was entered, thus mappings + with a shifted key didn't work. (Charles Campbell) +Solution: Ignore pressing the shift, control and alt keys. +Files: src/os_win32.c + +Patch 6.0.126 +Problem: The python library was always statically linked. +Solution: Link the python library dynamically. (Matthias Klose) +Files: src/auto/configure, src/configure.in + +Patch 6.0.127 +Problem: When using a terminal that swaps screens and the Normal background + color has a different background, using an external command may + cause the color of the wrong screen to be changed. (Mark Waggoner) +Solution: Don't call screen_stop_highlight() in stoptermcap(). +Files: src/term.c + +Patch 6.0.128 +Problem: When moving a vertically split window to the far left or right, + the scrollbars are not adjusted. (Scott E Lee) When 'mousefocus' + is set the mouse pointer wasn't adjusted. +Solution: Adjust the scrollbars and the mouse pointer. +Files: src/window.c + +Patch 6.0.129 +Problem: When using a very long file name, ":ls" (repeated a few times) + causes a crash. Test with "vim `perl -e 'print "A"x1000'`". + (Tejeda) +Solution: Terminate a string before getting its length in buflist_list(). +Files: src/buffer.c + +Patch 6.0.130 +Problem: When using ":cprev" while the error window is open, and the new + line at the top wraps, the window isn't correctly drawn. + (Yegappan Lakshmanan) +Solution: When redrawing the topline don't scroll twice. +Files: src/screen.c + +Patch 6.0.131 +Problem: When using bufname() and there are two matches for listed buffers + and one match for an unlisted buffer, the unlisted buffer is used. + (Aric Blumer) +Solution: When there is a match with a listed buffer, don't check for + unlisted buffers. +Files: src/buffer.c + +Patch 6.0.132 +Problem: When setting 'iminsert' in the vimrc and using an xterm with two + screens the ruler is drawn in the wrong screen. (Igor Goldenberg) +Solution: Only draw the ruler when using the right screen. +Files: src/option.c + +Patch 6.0.133 +Problem: When opening another buffer while 'keymap' is set and 'iminsert' + is zero, 'iminsert' is set to one unexpectedly. (Igor Goldenberg) +Solution: Don't set 'iminsert' as a side effect of defining a ":lmap" + mapping. Only do that when 'keymap' is set. +Files: src/getchar.c, src/option.c + +Patch 6.0.134 +Problem: When completing ":set tags=" a path with an embedded space causes + the completion to stop. (Sektor van Skijlen) +Solution: Escape spaces with backslashes, like for ":set path=". Also take + backslashes into account when searching for the start of the path + to complete (e.g., for 'backupdir' and 'cscopeprg'). +Files: src/ex_docmd.c, src/ex_getln.c, src/option.c, src/structs.h + +Patch 6.0.135 +Problem: Menus that are not supposed to do anything used "<Nul>", which + still produced an error beep. + When CTRL-O is mapped for Insert mode, ":amenu" commands didn't + work in Insert mode. + Menu language falls back to English when $LANG ends in "@euro". +Solution: Use "<Nop>" for a menu item that doesn't do anything, just like + mappings. + Use ":anoremenu" instead of ":amenu". + Ignore "@euro" in the locale name. +Files: runtime/makemenu.vim, runtime/menu.vim, src/menu.c + +Patch 6.0.136 +Problem: When completing in Insert mode, a mapping could be unexpectedly + applied. +Solution: Don't use mappings when checking for a typed character. +Files: src/edit.c + +Patch 6.0.137 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the input mode is stopped. +Solution: Don't use the input method status when the main window doesn't + have focus. +Files: src/ui.c + +Patch 6.0.138 +Problem: GUI: When using the find or find/replace dialog from Insert mode, + the text is inserted when CTRL-O is mapped. (Andre Pang) + When opening the dialog again, a whole word search isn't + recognized. + When doing "replace all" a whole word search was never done. +Solution: Don't put a search or replace command in the input buffer, + execute it directly. + Recognize "\<" and "\>" after removing "\V". + Add "\<" and "\>" also for "replace all". +Files: src/gui.c + +Patch 6.0.139 +Problem: When stopping 'wildmenu' completion, the statusline of the + bottom-left vertically split window isn't redrawn. (Yegappan + Lakshmanan) +Solution: Redraw all the bottom statuslines. +Files: src/ex_getln.c, src/proto/screen.pro, src/screen.c + +Patch 6.0.140 +Problem: Memory allocated for local mappings and abbreviations is leaked + when the buffer is wiped out. +Solution: Clear the local mappings when deleting a buffer. +Files: src/buffer.c, src/getchar.c, src/proto/getchar.pro, src/vim.h + +Patch 6.0.141 +Problem: When using ":enew" in an empty buffer, some buffer-local things + are not cleared. b:keymap_name is not set. +Solution: Clear user commands and mappings local to the buffer when re-using + the current buffer. Reload the keymap. +Files: src/buffer.c + +Patch 6.0.142 +Problem: When Python is linked statically, loading dynamic extensions might + fail. +Solution: Add an extra linking flag when needed. (Andrew Rodionoff) +Files: src/configure.in, src/auto/configure + +Patch 6.0.143 +Problem: When a syntax item includes a line break in a pattern, the syntax + may not be updated properly when making a change. +Solution: Add the "linebreaks" argument to ":syn sync". +Files: runtime/doc/syntax.txt, src/screen.c, src/structs.h, src/syntax.c + +Patch 6.0.144 +Problem: After patch 6.0.088 redoing "veU" doesn't work. +Solution: Don't add the "U" to the redo buffer, it will be used as an undo + command. +Files: src/normal.c + +Patch 6.0.145 +Problem: When Vim can't read any input it might get stuck. When + redirecting stdin and stderr Vim would not read commands from a + file. (Servatius Brandt) +Solution: When repeatedly trying to read a character when it's not possible, + exit Vim. When stdin and stderr are not a tty, still try reading + from them, but don't do a blocking wait. +Files: src/ui.c + +Patch 6.0.146 +Problem: When 'statusline' contains "%{'-'}" this results in a zero. + (Milan Vancura) +Solution: Don't handle numbers with a minus as a number, they were not + displayed anyway. +Files: src/buffer.c + +Patch 6.0.147 +Problem: It's not easy to mark a Vim version as being modified. The new + license requires this. +Solution: Add the --modified-by argument to configure and the MODIFIED_BY + define. It's used in the intro screen and the ":version" output. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/feature.h, src/version.c + +Patch 6.0.148 +Problem: After "p" in an empty line, `[ goes to the second character. + (Kontra Gergely) +Solution: Don't increment the column number in an empty line. +Files: src/ops.c + +Patch 6.0.149 +Problem: The pattern "\(.\{-}\)*" causes a hang. When using a search + pattern that causes a stack overflow to be detected Vim could + still hang. +Solution: Correctly report "operand could be empty" when using "\{-}". + Check for "out_of_stack" inside loops to avoid a hang. +Files: src/regexp.c + +Patch 6.0.150 +Problem: When using a multibyte encoding, patch 6.0.148 causes "p" to work + like "P". (Sung-Hyun Nam) +Solution: Compute the byte length of a multibyte character. +Files: src/ops.c + +Patch 6.0.151 +Problem: Redrawing the status line and ruler can be wrong when it contains + multibyte characters. +Solution: Use character width and byte length correctly. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.0.152 +Problem: strtrans() could hang on an illegal UTF-8 byte sequence. +Solution: Skip over illegal bytes. (Yasuhiro Matsumoto) +Files: src/charset.c + +Patch 6.0.153 +Problem: When using (illegal) double-byte characters and Vim syntax + highlighting Vim can crash. (Yasuhiro Matsumoto) +Solution: Increase a pointer over a character instead of a byte. +Files: src/regexp.c + +Patch 6.0.154 +Problem: MS-DOS and MS-Windows: The menu entries for xxd don't work when + there is no xxd in the path. + When converting back from Hex the filetype may remain "xxd" if it + is not detected. +Solution: When xxd is not in the path use the one in the runtime directory, + where the install program has put it. + Clear the 'filetype' option before detecting the new value. +Files: runtime/menu.vim + +Patch 6.0.155 +Problem: Mac: compilation problems in ui.c after patch 6.0.145. (Axel + Kielhorn) +Solution: Don't call mch_inchar() when NO_CONSOLE is defined. +Files: src/ui.c + +Patch 6.0.156 +Problem: Starting Vim with the -b argument and two files, ":next" doesn't + set 'binary' in the second file, like Vim 5.7. (Norman Diamond) +Solution: Set the global value for 'binary'. +Files: src/option.c + +Patch 6.0.157 +Problem: When defining a user command with "-complete=dir" files will also + be expanded. Also, "-complete=mapping" doesn't appear to work. + (Michael Naumann) +Solution: Use the expansion flags defined with the user command. + Handle expanding mappings specifically. +Files: src/ex_docmd.c + +Patch 6.0.158 +Problem: When getting the warning for a file being changed outside of Vim + and reloading the file, the 'readonly' option is reset, even when + the permissions didn't change. (Marcel Svitalsky) +Solution: Keep 'readonly' set when reloading a file and the permissions + didn't change. +Files: src/fileio.c + +Patch 6.0.159 +Problem: Wildcard expansion for ":emenu" also shows separators. +Solution: Skip menu separators for ":emenu", ":popup" and ":tearoff". + Also, don't handle ":tmenu" as if it was ":tearoff". And leave + out the alternatives with "&" included. +Files: src/menu.c + +Patch 6.0.160 +Problem: When compiling with GCC 3.0.2 and using the "-O2" argument, the + optimizer causes a problem that makes Vim crash. +Solution: Add a configure check to avoid "-O2" for this version of gcc. +Files: src/configure.in, src/auto/configure + +Patch 6.0.161 (extra) +Problem: Win32: Bitmaps don't work with signs. +Solution: Make it possible to use bitmaps with signs. (Muraoka Taro) +Files: src/ex_cmds.c, src/feature.h, src/gui_w32.c, src/gui_x11.c, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 6.0.162 +Problem: Client-server: An error message for a wrong expression appears in + the server instead of the client. +Solution: Pass the error message from the server to the client. Also + adjust the example code. (Flemming Madsen) +Files: src/globals.h, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro, + runtime/doc/eval.txt, runtime/tools/xcmdsrv_client.c + +Patch 6.0.163 +Problem: When using a GUI dialog, a file name is sometimes used like it was + a directory. +Solution: Separate path and file name properly. + For GTK, Motif and Athena concatenate directory and file name for + the default selection. +Files: src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, src/message.c + +Patch 6.0.164 +Problem: After patch 6.0.135 the menu entries for pasting don't work in + Insert and Visual mode. (Muraoka Taro) +Solution: Add <script> to allow script-local mappings. +Files: runtime/menu.vim + +Patch 6.0.165 +Problem: Using --remote and executing locally gives unavoidable error + messages. +Solution: Add --remote-silent and --remote-wait-silent to silently execute + locally. + For Win32 there was no error message when a server didn't exist. +Files: src/eval.c, src/if_xcmdsrv.c, src/main.c, src/os_mswin.c, + src/proto/if_xcmdsrv.pro, src/proto/os_mswin.pro + +Patch 6.0.166 +Problem: GUI: There is no way to avoid dialogs to pop up. +Solution: Add the 'c' flag to 'guioptions': Use console dialogs. (Yegappan + Lakshmanan) +Files: runtime/doc/options.txt, src/option.h, src/message.c + +Patch 6.0.167 +Problem: When 'fileencodings' is "latin2" some characters in the help files + are displayed wrong. +Solution: Force the 'fileencoding' for the help files to be "latin1". +Files: src/fileio.c + +Patch 6.0.168 +Problem: ":%s/\n/#/" doesn't replace at an empty line. (Bruce DeVisser) +Solution: Don't skip matches after joining two lines. +Files: src/ex_cmds.c + +Patch 6.0.169 +Problem: When run as evim and the GUI can't be started we get stuck in a + terminal without menus in Insert mode. +Solution: Exit when using "evim" and "gvim -y" when the GUI can't be + started. +Files: src/main.c + +Patch 6.0.170 +Problem: When printing double-width characters the size of tabs after them + is wrong. (Muraoka Taro) +Solution: Correctly compute the column after a double-width character. +Files: src/ex_cmds2.c + +Patch 6.0.171 +Problem: With 'keymodel' including "startsel", in Insert mode after the end + of a line, shift-Left does not move the cursor. (Steve Hall) +Solution: CTRL-O doesn't move the cursor left, need to do that explicitly. +Files: src/edit.c + +Patch 6.0.172 +Problem: CTRL-Q doesn't replace CTRL-V after CTRL-X in Insert mode while it + does in most other situations. +Solution: Make CTRL-X CTRL-Q work like CTRL-X CTRL-V in Insert mode. +Files: src/edit.c + +Patch 6.0.173 +Problem: When using "P" to insert a line break the cursor remains past the + end of the line. +Solution: Check for the cursor being beyond the end of the line. +Files: src/ops.c + +Patch 6.0.174 +Problem: After using "gd" or "gD" the search direction for "n" may still be + backwards. (Servatius Brandt) +Solution: Reset the search direction to forward. +Files: src/normal.c, src/search.c, src/proto/search.pro + +Patch 6.0.175 +Problem: ":help /\z(\)" doesn't work. (Thomas Koehler) +Solution: Double the backslashes. +Files: src/ex_cmds.c + +Patch 6.0.176 +Problem: When killed by a signal autocommands are still triggered as if + nothing happened. +Solution: Add the v:dying variable to allow autocommands to work differently + when a deadly signal has been trapped. +Files: src/eval.c, src/os_unix.c, src/vim.h + +Patch 6.0.177 +Problem: When 'commentstring' is empty and 'foldmethod' is "marker", "zf" + doesn't work. (Thomas S. Urban) +Solution: Add the marker even when 'commentstring' is empty. +Files: src/fold.c, src/normal.c + +Patch 6.0.178 +Problem: Uninitialized memory read from xp_backslash field. +Solution: Initialize xp_backslash field properly. +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/tag.c + +Patch 6.0.179 +Problem: Win32: When displaying UTF-8 characters may read uninitialized + memory. +Solution: Add utfc_ptr2len_check_len() to avoid reading past the end of a + string. +Files: src/mbyte.c, src/proto/mbyte.pro, src/gui_w32.c + +Patch 6.0.180 +Problem: Expanding environment variables in a string that ends in a + backslash could go past the end of the string. +Solution: Detect the trailing backslash. +Files: src/misc1.c + +Patch 6.0.181 +Problem: When using ":cd dir" memory was leaked. +Solution: Free the allocated memory. Also avoid an uninitialized memory + read. +Files: src/misc2.c + +Patch 6.0.182 +Problem: When using a regexp on multibyte characters, could try to read a + character before the start of the line. +Solution: Don't decrement a pointer to before the start of the line. +Files: src/regexp.c + +Patch 6.0.183 +Problem: Leaking memory when ":func!" redefines a function. +Solution: Free the function name when it's not used. +Files: src/eval.c + +Patch 6.0.184 +Problem: Leaking memory when expanding option values. +Solution: Don't always copy the expanded option into allocated memory. +Files: src/option.c + +Patch 6.0.185 +Problem: Crash in Vim when pasting a selection in another application, on a + 64 bit machine. +Solution: Fix the format for an Atom to 32 bits. (Peter Derr) +Files: src/ui.c + +Patch 6.0.186 +Problem: X11: Three warnings when compiling the client-server code. +Solution: Add a typecast to unsigned char. +Files: src/if_xcmdsrv.c + +Patch 6.0.187 +Problem: "I" in Visual mode and then "u" reports too many changes. (Andrew + Stryker) + "I" in Visual linewise mode adjusts the indent for no apparent + reason. +Solution: Only save those lines for undo that are changed. + Don't change the indent after inserting in Visual linewise mode. +Files: src/ops.c + +Patch 6.0.188 +Problem: Win32: After patch 6.0.161 signs defined in the vimrc file don't + work. +Solution: Initialize the sign icons after initializing the GUI. (Vince + Negri) +Files: src/gui.c, src/gui_x11.c + +Patch 6.0.189 +Problem: The size of the Visual area isn't always displayed when scrolling + ('ruler' off, 'showcmd' on). Also not when using a search + command. (Sylvain Hitier) +Solution: Redisplay the size of the selection after showing the mode. +Files: src/screen.c + +Patch 6.0.190 +Problem: GUI: when 'mouse' is empty a click with the middle button still + moves the cursor. +Solution: Paste at the cursor position instead of the mouse position. +Files: src/normal.c + +Patch 6.0.191 +Problem: When no servers are available serverlist() gives an error instead + of returning an empty string. (Hari Krishna) +Solution: Don't give an error message. +Files: src/eval.c + +Patch 6.0.192 +Problem: When 'virtualedit' is set, "ylj" goes to the wrong column. (Andrew + Nikitin) +Solution: Reset the flag that w_virtcol is valid when moving the cursor back + to the start of the operated area. +Files: src/normal.c + +Patch 6.0.193 +Problem: When 'virtualedit' is set, col(".") after the end of the line + should return one extra. +Solution: Add one to the column. +Files: src/eval.c + +Patch 6.0.194 +Problem: "--remote-silent" tries to send a reply to the client, like it was + "--remote-wait". +Solution: Properly check for the argument. +Files: src/main.c + +Patch 6.0.195 +Problem: When 'virtualedit' is set and a search starts in virtual space + ":call search('x')" goes to the wrong position. (Eric Long) +Solution: Reset coladd when finding a match. +Files: src/search.c + +Patch 6.0.196 +Problem: When 'virtualedit' is set, 'selection' is "exclusive" and visually + selecting part of a tab at the start of a line, "x" joins it with + the previous line. Also, when the selection spans more than one + line the whole tab is deleted. +Solution: Take coladd into account when adjusting for 'selection' being + "exclusive". Also expand a tab into spaces when deleting more + than one line. +Files: src/normal.c, src/ops.c + +Patch 6.0.197 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", "v$x" + doesn't delete the last character in the line. (Eric Long) +Solution: Don't reset the inclusive flag. (Helmut Stiegler) +Files: src/normal.c + +Patch 6.0.198 +Problem: When 'virtualedit' is set and 'showbreak' is not empty, moving the + cursor over the line break doesn't work properly. (Eric Long) +Solution: Make getviscol() and getviscol2() use getvvcol() to obtain the + virtual cursor position. Adjust coladvance() and oneleft() to + skip over the 'showbreak' characters. +Files: src/edit.c, src/misc2.c + +Patch 6.0.199 +Problem: Multi-byte: could use iconv() after calling iconv_end(). + (Yasuhiro Matsumoto) +Solution: Stop converting input and output stream after calling iconv_end(). +Files: src/mbyte.c + +Patch 6.0.200 +Problem: A script that starts with "#!perl" isn't recognized as a Perl + filetype. +Solution: Ignore a missing path in a script header. Also, speed up + recognizing scripts by simplifying the patterns used. +Files: runtime/scripts.vim + +Patch 6.0.201 +Problem: When scrollbinding and doing a long jump, switching windows jumps + to another position in the file. Scrolling a few lines at a time + is OK. (Johannes Zellner) +Solution: When setting w_topline reset the flag that indicates w_botline is + valid. +Files: src/diff.c + +Patch 6.0.202 +Problem: The "icon=" argument for the menu command to define a toolbar icon + with a file didn't work for GTK. (Christian J. Robinson) + For Motif and Athena a full path was required. +Solution: Search the icon file using the specified path. Expand environment + variables in the file name. +Files: src/gui_gtk.c, src/gui_x11.c + +Patch 6.0.203 +Problem: Can change 'fileformat' even though 'modifiable' is off. + (Servatius Brandt) +Solution: Correct check for kind of set command. +Files: src/option.c + +Patch 6.0.204 +Problem: ":unlet" doesn't work for variables with curly braces. (Thomas + Scott Urban) +Solution: Handle variable names with curly braces properly. (Vince Negri) +Files: src/eval.c + +Patch 6.0.205 (extra) +Problem: "gvim -f" still forks when using the batch script to start Vim. +Solution: Add an argument to "start" to use a foreground session (Michael + Geddes) +Files: src/dosinst.c + +Patch 6.0.206 +Problem: Unix: if expanding a wildcard in a file name results in a + wildcard character and there are more parts in the path with a + wildcard, it is expanded again. + Windows: ":edit \[abc]" could never edit the file "[abc]". +Solution: Don't expand wildcards in already expanded parts. + Don't remove backslashes used to escape the special meaning of a + wildcard; can edit "[abc]" if '[' is removed from 'isfname'. +Files: src/misc1.c, src/os_unix.c + +Patch 6.0.207 (extra) +Problem: Win32: The shortcuts and start menu entries let Vim startup in the + desktop directory, which is not very useful. +Solution: Let shortcuts start Vim in $HOME or $HOMEDIR$HOMEPATH. +Files: src/dosinst.c + +Patch 6.0.208 +Problem: GUI: When using a keymap and the cursor is not blinking, CTRL-^ in + Insert mode doesn't directly change the cursor color. (Alex + Solow) +Solution: Force a redraw of the cursor after CTRL-^. +Files: src/edit.c + +Patch 6.0.209 +Problem: GUI GTK: After selecting a 'guifont' with the font dialog there + are redraw problems for multibyte characters. +Solution: Separate the font dialog from setting the new font name to avoid + that "*" is used to find wide and bold fonts. + When redrawing extra characters for the bold trick, take care of + UTF-8 characters. +Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/proto/gui.pro, + src/proto/gui_gtk_x11.pro + +Patch 6.0.210 +Problem: After patch 6.0.167 it's no longer possible to edit a help file in + another encoding than latin1. +Solution: Let the "++enc=" argument overrule the encoding. +Files: src/fileio.c + +Patch 6.0.211 +Problem: When reading a file fails, the buffer is empty, but it might still + be possible to write it with ":w" later. The original file is + lost then. (Steve Amerige) +Solution: Set the 'readonly' option for the buffer. +Files: src/fileio.c + +Patch 6.0.212 +Problem: GUI GTK: confirm("foo", "") causes a crash. +Solution: Don't make a non-existing button the default. Add a default "OK" + button if none is specified. +Files: src/eval.c, src/gui_gtk.c + +Patch 6.0.213 +Problem: When a file name contains unprintable characters, CTRL-G and other + commands don't work well. +Solution: Turn unprintable into printable characters. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/charset.c + +Patch 6.0.214 +Problem: When there is a buffer without a name, empty entries appear in the + jumplist saved in the viminfo file. +Solution: Don't write jumplist entries without a file name. +Files: src/mark.c + +Patch 6.0.215 +Problem: After using "/" from Visual mode the Paste menu and Toolbar + entries don't work. Pasting with the middle mouse doesn't work + and modeless selection doesn't work. +Solution: Use the command line mode menus and use the mouse like in the + command line. +Files: src/gui.c, src/menu.c, src/ui.c + +Patch 6.0.216 +Problem: After reloading a file, displayed in another window than the + current one, which was changed outside of Vim the part of the file + around the cursor set by autocommands may be displayed, but + jumping back to the original cursor position when entering the + window again. +Solution: Restore the topline of the window. +Files: src/fileio.c + +Patch 6.0.217 +Problem: When getting help from a help file that was used before, an empty + unlisted buffer remains in the buffer list. (Eric Long) +Solution: Wipe out the buffer used to do the tag jump from. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.0.218 +Problem: With explorer plugin: "vim -o filename dirname" doesn't load the + explorer window until entering the window. +Solution: Call s:EditDir() for each window after starting up. +Files: runtime/plugin/explorer.vim + +Patch 6.0.219 +Problem: ":setlocal" and ":setglobal", without arguments, display terminal + options. (Zdenek Sekera) +Solution: Skip terminal options for these two commands. +Files: src/option.c + +Patch 6.0.220 +Problem: After patch 6.0.218 get a beep on startup. (Muraoka Taro) +Solution: Don't try going to another window when there isn't one. +Files: runtime/plugin/explorer.vim + +Patch 6.0.221 +Problem: When using ":bdel" and all other buffers are unloaded the lowest + numbered buffer is jumped to instead of the most recent one. (Dave + Cecil) +Solution: Prefer an unloaded buffer from the jumplist. +Files: src/buffer.c + +Patch 6.0.222 +Problem: When 'virtualedit' is set and using autoindent, pressing Esc after + starting a new line leaves behind part of the autoindent. (Helmut + Stiegler) +Solution: After deleting the last char in the line adjust the cursor + position in del_bytes(). +Files: src/misc1.c, src/ops.c + +Patch 6.0.223 +Problem: When splitting a window that contains the explorer, hitting CR on + a file name gives error messages. +Solution: Set the window variables after splitting the window. +Files: runtime/plugin/explorer.vim + +Patch 6.0.224 +Problem: When 'sidescroll' and 'sidescrolloff' are set in a narrow window + the text may jump left-right and the cursor is displayed in the + wrong position. (Aric Blumer) +Solution: When there is not enough room, compute the left column for the + window to put the cursor in the middle. +Files: src/move.c + +Patch 6.0.225 +Problem: In Visual mode "gk" gets stuck in a closed fold. (Srinath + Avadhanula) +Solution: Behave differently in a closed fold. +Files: src/normal.c + +Patch 6.0.226 +Problem: When doing ":recover file" get the ATTENTION prompt. + After recovering the same file five times get a read error or a + crash. (Alex Davis) +Solution: Set the recoverymode flag before setting the file name. + Correct the amount of used memory for the size of block zero. +Files: src/ex_docmd.c + +Patch 6.0.227 (extra) +Problem: The RISC OS port has several problems. +Solution: Update the makefile and fix some of the problems. (Andy Wingate) +Files: src/Make_ro.mak, src/os_riscos.c, src/os_riscos.h, + src/proto/os_riscos.pro, src/search.c + +Patch 6.0.228 +Problem: After putting text in Visual mode the '] mark is not at the end of + the put text. + Undo doesn't work properly when putting a word into a Visual + selection that spans more than one line. +Solution: Correct the '] mark for the deleting the Visually selected text. + #ifdef code that depends on FEAT_VISUAL properly. + Also fix that "d" crossing line boundary puts '[ just before + deleted text. + Fix undo by saving all deleted lines at once. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/ops.c, + src/structs.h, src/vim.h + +Patch 6.0.229 +Problem: Multi-byte: With 'm' in 'formatoptions', formatting doesn't break + at a multibyte char followed by an ASCII char, and the other way + around. (Muraoka Taro) + When joining lines a space is inserted between multibyte + characters, which is not always wanted. +Solution: Check for multibyte character before and after the breakpoint. + Don't insert a space before or after a multibyte character when + joining lines and the 'M' flag is in 'formatoptions'. Don't + insert a space between multibyte characters when the 'B' flag is + in 'formatoptions'. +Files: src/edit.c, src/ops.c, src/option.h + +Patch 6.0.230 +Problem: The ":" used as a motion after an operator is exclusive, but + sometimes it should be inclusive. +Solution: Make the "v" in between an operator and motion toggle + inclusive/exclusive. (Servatius Brandt) +Files: runtime/doc/motion.txt, src/normal.c + +Patch 6.0.231 +Problem: "gd" and "gD" don't work when the variable matches in a comment + just above the match to be found. (Servatius Brandt) +Solution: Continue searching in the first column below the comment. +Files: src/normal.c + +Patch 6.0.232 +Problem: "vim --version" prints on stderr while "vim --help" prints on + stdout. +Solution: Make "vim --version" use stdout. +Files: runtime/doc/starting.txt, src/globals.h, src/main.c, src/message.c + +Patch 6.0.233 +Problem: "\1\{,8}" in a regexp is not allowed, but it should work, because + there is an upper limit. (Jim Battle) +Solution: Allow using "\{min,max}" after an atom that can be empty if there + is an upper limit. +Files: src/regexp.c + +Patch 6.0.234 +Problem: It's not easy to set the cursor position without modifying marks. +Solution: Add the cursor() function. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.235 +Problem: When writing a file and renaming the original file to make the + backup, permissions could change when setting the owner. +Solution: Only set the owner when it's needed and set the permissions again + afterwards. + When 'backupcopy' is "auto" check that the owner and permissions + of a newly created file can be set properly. +Files: src/fileio.c + +Patch 6.0.236 +Problem: ":edit" without argument should move cursor to line 1 in Vi + compatible mode. +Solution: Add 'g' flag to 'cpoptions'. +Files: runtime/doc/options.txt, src/ex_docmd.c, src/option.h + +Patch 6.0.237 +Problem: In a C file, using the filetype plugin, re-indenting a comment + with two spaces after the middle "*" doesn't align properly. +Solution: Don't use a middle entry from a start/middle/end to line up with + the start of the comment when the start part doesn't match with + the actual comment start. +Files: src/misc1.c + +Patch 6.0.238 +Problem: Using a ":substitute" command with a substitute() call in the + substitution expression causes errors. (Srinath Avadhanula) +Solution: Save and restore pointers when doing substitution recursively. +Files: src/regexp.c + +Patch 6.0.239 +Problem: Using "A" to append after a Visually selected block which is after + the end of the line, spaces are inserted in the wrong line and + other unexpected effects. (Michael Naumann) +Solution: Don't advance the cursor to the next line. +Files: src/ops.c + +Patch 6.0.240 +Problem: Win32: building with Python 2.2 doesn't work. +Solution: Add support for Python 2.2 with dynamic linking. (Paul Moore) +Files: src/if_python.c + +Patch 6.0.241 +Problem: Win32: Expanding the old value of an option that is a path that + starts with a backslash, an extra backslash is inserted. +Solution: Only insert backslashes where needed. + Also handle multibyte characters properly when removing + backslashes. +Files: src/option.c + +Patch 6.0.242 +Problem: GUI: On a system with an Exceed X server sometimes get a "Bad + Window" error. (Tommi Maekitalo) +Solution: When forking, use a pipe to wait in the parent for the child to + have done the setsid() call. +Files: src/gui.c + +Patch 6.0.243 +Problem: Unix: "vim --version" outputs a NL before the last line instead of + after it. (Charles Campbell) +Solution: Send the NL to the same output stream as the text. +Files: src/message.c, src/os_unix.c, src/proto/message.pro + +Patch 6.0.244 +Problem: Multi-byte: Problems with (illegal) UTF-8 characters in menu and + file name (e.g., icon text, status line). +Solution: Correctly handle unprintable characters. Catch illegal UTF-8 + characters and replace them with <xx>. Truncating the status line + wasn't done correctly at a multibyte character. (Yasuhiro + Matsumoto) + Added correct_cmdspos() and transchar_byte(). +Files: src/buffer.c, src/charset.c, src/ex_getln.c, src/gui.c, + src/message.c, src/screen.c, src/vim.h + +Patch 6.0.245 +Problem: After using a color scheme, setting the 'background' option might + not work. (Peter Horst) +Solution: Disable the color scheme if it switches 'background' back to the + wrong value. +Files: src/option.c + +Patch 6.0.246 +Problem: ":echomsg" didn't use the highlighting set by ":echohl". (Gary + Holloway) +Solution: Use the specified attributes for the message. (Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 6.0.247 +Problem: GTK GUI: Can't use gvim in a kpart widget. +Solution: Add the "--echo-wid" argument to let Vim echo the window ID on + stdout. (Philippe Fremy) +Files: runtime/doc/starting.txt, src/globals.h, src/gui_gtk_x11.c, + src/main.c + +Patch 6.0.248 +Problem: When using compressed help files and 'encoding' isn't "latin1", + Vim converts the help file before decompressing. (David Reviejo) +Solution: Don't convert a help file when 'binary' is set. +Files: src/fileio.c + +Patch 6.0.249 +Problem: "vim -t edit -c 'sta ex_help'" doesn't move cursor to edit(). +Solution: Don't set the cursor on the first line for "-c" arguments when + there also is a "-t" argument. +Files: src/main.c + +Patch 6.0.250 (extra) +Problem: Macintosh: Various problems when compiling. +Solution: Various fixes, mostly #ifdefs. (Dany St. Amant) +Files: src/gui_mac.c, src/main.c, src/misc2.c, src/os_mac.h, + src/os_mac.pbproj/project.pbxproj, src/os_unix.c + +Patch 6.0.251 (extra) +Problem: Macintosh: menu shortcuts are not very clear. +Solution: Show the shortcut with the Mac clover symbol. (raindog) +Files: src/gui_mac.c + +Patch 6.0.252 +Problem: When a user function was defined with "abort", an error that is + not inside if/endif or while/endwhile doesn't abort the function. + (Servatius Brandt) +Solution: Don't reset did_emsg when the function is to be aborted. +Files: src/ex_docmd.c + +Patch 6.0.253 +Problem: When 'insertmode' is set, after "<C-O>:edit file" the next <C-O> + doesn't work. (Benji Fisher) <C-L> has the same problem. +Solution: Reset need_start_insertmode once in edit(). +Files: src/edit.c + +Patch 6.0.254 (extra) +Problem: Borland C++ 5.5: Checking for stack overflow doesn't work + correctly. Matters when using a complicated regexp. +Solution: Remove -N- from Make_bc5.mak. (Yasuhiro Matsumoto) +Files: src/Make_bc5.mak + +Patch 6.0.255 (extra) (depends on patch 6.0.116 and 6.0.121) +Problem: Win32: ACL support doesn't work well on Samba drives. +Solution: Add a check for working ACL support. (Mike Williams) +Files: src/os_win32.c + +Patch 6.0.256 (extra) +Problem: Win32: ":highlight Comment guifg=asdf" does not give an error + message. (Randall W. Morris) Also for other systems. +Solution: Add gui_get_color() to give one error message for all systems. +Files: src/gui.c, src/gui_amiga.c, src/gui_athena.c, src/gui_motif.c, + src/gui_riscos.c, src/gui_x11.c, src/gui_gtk_x11.c, + src/proto/gui.pro, src/syntax.c + +Patch 6.0.257 +Problem: Win32: When 'mousefocus' is set and there is a BufRead + autocommand, after the dialog for permissions changed outside of + Vim: 'mousefocus' stops working. (Robert Webb) +Solution: Reset need_mouse_correct after checking timestamps. +Files: src/fileio.c + +Patch 6.0.258 +Problem: When 'scrolloff' is 999 and there are folds, the text can jump up + and down when moving the cursor down near the end of the file. + (Lubomir Host) +Solution: When putting the cursor halfway the window start counting lines at + the end of a fold. +Files: src/move.c + +Patch 6.0.259 +Problem: MS-DOS: after editing the command line the cursor shape may remain + like in Insert mode. (Volker Kiefel) +Solution: Reset the cursor shape after editing the command line. +Files: src/ex_getln.c + +Patch 6.0.260 +Problem: GUI: May crash while starting up when giving an error message for + missing color. (Servatius Brandt) +Solution: Don't call gui_write() when still starting up. Don't give error + message for empty color name. Don't use 't_vb' while the GUI is + still starting up. +Files: src/fileio.c, src/gui.c, src/misc1.c, src/ui.c + +Patch 6.0.261 +Problem: nr2char() and char2nr() don't work with multibyte characters. +Solution: Use 'encoding' for these functions. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.0.262 (extra) +Problem: Win32: IME doesn't work properly. OnImeComposition() isn't used + at all. +Solution: Adjust various things for IME. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/proto/ui.pro, + src/structs.h, src/ui.c + +Patch 6.0.263 +Problem: GTK: When a dialog is closed by the window manager, Vim hangs. + (Christian J. Robinson) +Solution: Use GTK_WIDGET_DRAWABLE() instead of GTK_WIDGET_VISIBLE(). +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 6.0.264 +Problem: The amount of virtual memory is used to initialize 'maxmemtot', + which may be much more than the amount of physical memory, + resulting in a lot of swapping. +Solution: Get the amount of physical memory with sysctl(), sysconf() or + sysinfo() when possible. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c, src/os_unix.h + +Patch 6.0.265 +Problem: Win32: Using backspace while 'fkmap' is set causes a crash. + (Jamshid Oasjmoha) +Solution: Don't try mapping special keys. +Files: src/farsi.c + +Patch 6.0.266 +Problem: The rename() function deletes the file if the old and the new name + are the same. (Volker Kiefel) +Solution: Don't do anything if the names are equal. +Files: src/fileio.c + +Patch 6.0.267 +Problem: UTF-8: Although 'isprint' says a character is printable, + utf_char2cells() still considers it unprintable. +Solution: Use vim_isprintc() for characters up to 0x100. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.0.268 (extra) (depends on patch 6.0.255) +Problem: Win32: ACL check crashes when using forward slash in file name. +Solution: Improve the check for the path in the file name. +Files: src/os_win32.c + +Patch 6.0.269 +Problem: Unprintable characters in a file name may cause problems when + using the 'statusline' option or when 'buftype' is "nofile". +Solution: call trans_characters() for the resulting statusline. (Yasuhiro + Matsumoto) +Files: src/buffer.c, src/screen.c, src/charset.c + +Patch 6.0.270 (depends on patch 6.0.267) +Problem: A tab causes UTF-8 text to be displayed in the wrong position. + (Ron Aaron) +Solution: Correct utf_char2cells() again. +Files: src/mbyte.c + +Patch 6.1a.001 (extra) +Problem: 32bit DOS: copying text to the clipboard may cause a crash. + (Jonathan D Johnston) +Solution: Don't copy one byte too much in SetClipboardData(). +Files: src/os_msdos.c + +Patch 6.1a.002 +Problem: GTK: On some configurations, when closing a dialog from the window + manager, Vim hangs. +Solution: Catch the "destroy" signal. (Aric Blumer) +Files: src/gui_gtk.c + +Patch 6.1a.003 +Problem: Multi-byte: With UTF-8 double-wide char and 'virtualedit' set: + yanking in Visual mode doesn't include the last byte. (Eric Long) +Solution: Don't add a space for a double-wide character. +Files: src/ops.c + +Patch 6.1a.004 (extra) +Problem: MINGW: undefined type. (Ron Aaron) +Solution: Make GetCompositionString_inUCS2() static. +Files: src/gui_w32.c, src/gui_w48.c, src/proto/gui_w32.pro + +Patch 6.1a.005 (extra) +Problem: Win32: ":hardcopy" doesn't work after ":hardcopy!". (Jonathan + Johnston) +Solution: Don't keep the driver context when using ":hardcopy!". (Vince + Negri) +Files: src/os_mswin.c + +Patch 6.1a.006 +Problem: multibyte: after setting 'encoding' the window title might be + wrong. +Solution: Force resetting the title. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1a.007 +Problem: Filetype detection for "*.inc" doesn't work. +Solution: Use a ":let" command. (David Schweikert) +Files: runtime/filetype.vim + +Patch 6.1a.008 (extra) +Problem: Win32: ACL detection for network shares doesn't work. +Solution: Include the trailing (back)slash in the root path. (Mike Williams) +Files: src/os_win32.c + +Patch 6.1a.009 +Problem: When using "\@<=" or "\@<!" in a pattern, a "\1" may refer to a () + part that follows, but it generates an error message. +Solution: Allow a forward reference when there is a following "\@<=" or + "\@<!". +Files: runtime/doc/pattern.txt, src/regexp.c + +Patch 6.1a.010 +Problem: When using ":help" and opening a new window, the alternate file + isn't set. +Solution: Set the alternate file to the previously edited file. +Files: src/ex_cmds.c + +Patch 6.1a.011 +Problem: GTK: ":set co=77", change width with the mouse, ":set co=77" + doesn't resize the window. (Darren Hiebert) +Solution: Set the form size after handling a resize event. +Files: src/gui_gtk_x11.c + +Patch 6.1a.012 +Problem: GTK: The file browser always returns a full path. (Lohner) +Solution: Shorten the file name if possible. +Files: src/gui_gtk.c + +Patch 6.1a.013 +Problem: When using "=~word" in 'cinkeys' or 'indentkeys', the case of the + last character of the word isn't ignored. (Raul Segura Acevedo) +Solution: Ignore case when checking the last typed character. +Files: src/edit.c + +Patch 6.1a.014 +Problem: After patch 6.1a.006 can't compile without the title feature. +Solution: Add an #ifdef. +Files: src/option.c + +Patch 6.1a.015 +Problem: MS-Windows: When expanding a file name that contains a '[' or '{' + an extra backslash is inserted. (Raul Segura Acevedo) +Solution: Avoid adding the backslash. +Files: src/ex_getln.c + +Patch 6.1a.016 +Problem: Completion after ":language" doesn't include "time". (Raul Segura + Acevedo) +Solution: Add the alternative to the completions. +Files: src/ex_cmds2.c + +Patch 6.1a.017 +Problem: Clicking the mouse in the top row of a window where the first line + doesn't fit moves the cursor to the wrong column. +Solution: Add the skipcol also for the top row of a window. +Files: src/ui.c + +Patch 6.1a.018 +Problem: When 'scrolloff' is one and the window height is one, "gj" can put + the cursor above the window. (Raul Segura Acevedo) +Solution: Don't let skipcol become bigger than the cursor column. +Files: src/move.c + +Patch 6.1a.019 +Problem: When using a composing character on top of an ASCII character, the + "l" command clears the composing character. Only when 'ruler' and + 'showcmd' are off. (Raphael Finkel) +Solution: Don't move the cursor by displaying characters when there are + composing characters. +Files: src/screen.c + +Patch 6.1a.020 +Problem: GTK: after patch 6.1a.011 resizing with the mouse doesn't always + work well for small sizes. (Adrien Beau) +Solution: Use another way to avoid the problem with ":set co=77". +Files: src/gui_gtk_x11.c + +Patch 6.1a.021 +Problem: Several Syntax menu entries are wrong or confusing. +Solution: Rephrase and correct the menu entries. (Adrien Beau) +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.022 +Problem: A tags file might be used twice on case insensitive systems. + (Rick Swanton) +Solution: Don't use the same file name twice in the default for the 'tags' + option. Ignore case when comparing names of already visited + files. +Files: src/misc2.c, src/option.c + +Patch 6.1a.023 +Problem: When starting the GUI get "C" characters echoed in the terminal. +Solution: Don't try sending a clear-screen command while the GUI is starting + up. +Files: src/screen.c + +Patch 6.1a.024 +Problem: In other editors CTRL-F is often used for a find dialog. +Solution: In evim use CTRL-F for the find dialog. +Files: runtime/evim.vim + +Patch 6.1a.025 +Problem: The choices for the fileformat dialog can't be translated. +Solution: Add g:menutrans_fileformat_choices. (Adrien Beau) +Files: runtime/menu.vim + +Patch 6.1a.026 +Problem: Indenting Java files is wrong with "throws", "extends" and + "implements" clauses. +Solution: Update the Java indent script. +Files: runtime/indent/java.vim + +Patch 6.1a.027 +Problem: A few Syntax menu entries missing or incorrect. +Solution: Add and correct the menu entries. (Adrien Beau) + Shorten a few menus to avoid they become too long. +Files: runtime/makemenu.vim, runtime/menu.vim + +Patch 6.1a.028 +Problem: XIM: problems with feedback and some input methods. +Solution: Use iconv for calculating the cells. Remove the queue for + key_press_event only when text was changed. (Yasuhiro Matsumoto) +Files: src/globals.h, src/mbyte.c, src/screen.c + +Patch 6.1a.029 +Problem: After patch 6.1a.028 can't compile GTK version with XIM but + without multibyte chars. +Solution: Add an #ifdef. (Aschwin Marsman) +Files: src/mbyte.c + +Patch 6.1a.030 +Problem: With double-byte encodings toupper() and tolower() may have wrong + results. +Solution: Skip double-byte characters. (Eric Long) +Files: src/eval.c + +Patch 6.1a.031 +Problem: Accessing the 'balloondelay' variable may cause a crash. +Solution: Make the variable for 'balloondelay' a long. (Olaf Seibert) +Files: src/option.h + +Patch 6.1a.032 (extra) +Problem: Some menu files used a wrong encoding name for "scriptencoding". +Solution: Move the translations to a separate file, which is sourced after + setting "scriptencoding". + Also add Czech menu translations in ASCII and update the other + encodings. +Files: runtime/lang/menu_cs_cz.iso_8859-1.vim, + runtime/lang/menu_cs_cz.iso_8859-2.vim, + runtime/lang/menu_czech_czech_republic.1250.vim, + runtime/lang/menu_czech_czech_republic.1252.vim, + runtime/lang/menu_czech_czech_republic.ascii.vim, + runtime/lang/menu_de_de.iso_8859-1.vim, + runtime/lang/menu_de_de.latin1.vim, + runtime/lang/menu_fr_fr.iso_8859-1.vim, + runtime/lang/menu_fr_fr.latin1.vim, + runtime/lang/menu_french_france.1252.vim, + runtime/lang/menu_german_germany.1252.vim, + runtime/lang/menu_ja_jp.euc-jp.vim, + runtime/lang/menu_ja_jp.utf-8.vim, + runtime/lang/menu_japanese_japan.932.vim + +Patch 6.1a.033 +Problem: XIM: doesn't reset input context. +Solution: call xim_reset() with im_set_active(FALSE). (Takuhiro Nishioka) +Files: src/mbyte.c + +Patch 6.1a.034 (extra) +Problem: Win32: The ACL checks for a readonly file still don't work well. +Solution: Remove the ACL checks, go back to how it worked in Vim 6.0. +Files: src/os_win32.c + +Patch 6.1a.035 +Problem: multibyte: When using ":sh" in the GUI, typed and displayed + multibyte characters are not handled correctly. +Solution: Deal with multibyte characters to and from the shell. (Yasuhiro + Matsumoto) Also handle UTF-8 composing characters. +Files: src/os_unix.c + +Patch 6.1a.036 +Problem: GTK: the save-yourself event was not handled. +Solution: Catch the save-yourself event and preserve swap files. (Neil Bird) +Files: src/gui_gtk_x11.c + +Patch 6.1a.037 +Problem: The MS-Windows key mapping doesn't include CTRL-S for saving. + (Vlad Sandrini) +Solution: Map CTRL-S to ":update". +Files: runtime/mswin.vim + +Patch 6.1a.038 +Problem: Solaris: Including both sys/sysctl.h and sys/sysinfo.h doesn't + work. (Antonio Colombo) +Solution: Don't include sys/sysinfo.h when not calling sysinfo(). +Files: src/os_unix.c + +Patch 6.1a.039 +Problem: Not all visual basic files are recognized. +Solution: Add checks to catch *.ctl files. (Raul Segura Acevedo) +Files: runtime/filetype.vim + +Patch 6.1a.040 +Problem: A *.pl file is recognized as Perl, but it could be a prolog file. +Solution: Check the first non-empty line. (Kontra Gergely) +Files: runtime/filetype.vim + +Patch 6.1a.041 +Problem: When pressing the left mouse button in the command line and them + moving the mouse upwards, nearly all the text is selected. +Solution: Don't try extending a modeless selection when there isn't one. +Files: src/ui.c + +Patch 6.1a.042 +Problem: When merging files, ":diffput" and ":diffget" are used a lot, but + they require a lot of typing. +Solution: Add "dp" for ":diffput" and "do" for ":diffget". +Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro + + +Patch 6.1b.001 (extra) +Problem: Checking for wildcards in a path does not handle multibyte + characters with a trail byte which is a wildcard. +Solution: Handle multibyte characters correctly. (Muraoka Taro) +Files: src/os_amiga.c, src/os_mac.c, src/os_msdos.c, src/os_mswin.c, + src/os_unix.c + +Patch 6.1b.002 +Problem: A regexp that ends in "\{" is not flagged as an error. May cause + a stack overflow when 'incsearch' is set. (Gerhard Hochholzer) +Solution: Handle a missing "}" as an error. +Files: src/regexp.c + +Patch 6.1b.003 (extra) +Problem: The RISC OS GUI doesn't compile. +Solution: Include changes since Vim 5.7. (Andy Wingate) +Files: src/Make_ro.mak, src/gui_riscos.c, src/os_riscos.c, + src/os_riscos.h, src/proto/gui_riscos.pro + +Patch 6.1b.004 +Problem: col("'>") returns a negative number for linewise selection. (Neil + Bird) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + +Patch 6.1b.005 +Problem: Using a search pattern that causes an out-of-stack error while + 'hlsearch' is set keeps giving the hit-Enter prompt. + A search pattern that takes a long time delays typing when + 'incsearch' is set. +Solution: Stop 'hlsearch' highlighting when the regexp causes an error. + Stop searching for 'incsearch' when a character is typed. +Files: src/globals.h, src/message.c, src/screen.c, src/search.c, + src/vim.h + +Patch 6.1b.006 +Problem: When entering a composing character on the command line with + CTRL-V, the text isn't redrawn correctly. +Solution: Redraw the text under and after the cursor. +Files: src/ex_getln.c + +Patch 6.1b.007 +Problem: When the cursor is in the white space between two sentences, "dis" + deletes the first character of the following sentence, "das" + deletes a space after the sentence. +Solution: Backup the cursor one character in these situations. +Files: src/search.c + +Patch 6.1b.008 +Problem: *.xsl files are not recognized as xslt but xml. + Monk files are not recognized. +Solution: Delete the duplicate line for *.xsl. (Johannes Zellner) + Recognize monk files. +Files: runtime/filetype.vim + +Patch 6.1b.009 +Problem: Can't always compile small features and then adding eval feature, + "sandbox" is undefined. (Axel Kielhorn) +Solution: Always define "sandbox" when the eval feature is used. +Files: src/globals.h + +Patch 6.1b.010 (extra) +Problem: When compiling gvimext.cpp with MSVC 4.2 get a number of warnings. +Solution: Change "true" to "TRUE". (Walter Briscoe) +Files: GvimExt/gvimext.cpp + +Patch 6.1b.011 +Problem: When using a very long string for confirm(), can't quit the + displaying at the more prompt. (Hari Krishna Dara) +Solution: Jump to the end of the message to show the choices. +Files: src/message.c + +Patch 6.1b.012 +Problem: Multi-byte: When 'showbreak' is set and a double-wide character + doesn't fit at the right window edge the cursor gets stuck there. + Using cursor-left gets stuck when 'virtualedit' is set. (Eric + Long) +Solution: Fix the way the extra ">" character is counted when 'showbreak' is + set. Don't correct cursor for virtual editing on a double-wide + character. +Files: src/charset.c, src/edit.c + +Patch 6.1b.013 +Problem: A user command that partly matches with a buffer-local user + command and matches full with a global user command unnecessarily + gives an 'ambiguous command' error. +Solution: Find the full global match even after a partly local match. +Files: src/ex_docmd.c + +Patch 6.1b.014 +Problem: EBCDIC: switching mouse events off causes garbage on screen. + Positioning the cursor in the GUI causes garbage. +Solution: Insert an ESC in the terminal code. (Ralf Schandl) + Use "\b" instead of "\010" for KS_LE. +Files: src/os_unix.c, src/term.c + +Patch 6.1b.015 +Problem: Vimtutor has a typo. Get a warning for "tempfile" if it + doesn't exist. +Solution: Move a quote to the end of a line. (Max Ischenko) + Use "mktemp" first, more systems have it. +Files: src/vimtutor + +Patch 6.1b.016 +Problem: GTK: loading a fontset that works partly, Vim might hang or crash. +Solution: Avoid that char_width becomes zero. (Yasuhiro Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.1b.017 +Problem: GUI: When using ":shell" and there is a beep, nothing happens. +Solution: Call vim_beep() to produce the beep from the shell. (Yasuhiro + Matsumoto) +Files: src/message.c + +Patch 6.1b.018 (depends on 6.1b.006) +Problem: When entering the encryption key, special keys may still reveal + the typed characters. +Solution: Make sure stars are used or nothing is shown in all cases. +Files: src/digraph.c, src/getchar.c, src/ex_getln.c + +Patch 6.1b.019 (depends on 6.1b.005) +Problem: A search pattern that takes a long time slows down typing when + 'incsearch' is set. +Solution: Pass SEARCH_PEEK to dosearch(). +Files: src/ex_getln.c + +Patch 6.1b.020 +Problem: When using the matchit plugin, "%" finds a match on the "end" of a + ":syntax region" command in Vim scripts. +Solution: Skip over ":syntax region" commands by setting b:match_skip. +Files: runtime/ftplugin/vim.vim + +Patch 6.1b.021 +Problem: when 'mousefocus' is set, CTRL-W CTRL-] sometimes doesn't warp the + pointer to the new window. (Robert Webb) +Solution: Don't reset need_mouse_correct when checking the timestamp of a + file. +Files: src/fileio.c + +Patch 6.1b.022 +Problem: With lots of folds "j" does not obey 'scrolloff' properly. + (Srinath Avadhanula) +Solution: Go to end of the fold before counting context lines. +Files: src/move.c + +Patch 6.1b.023 +Problem: On MS-Windows system() may cause checking timestamps, because Vim + loses and gains input focus, while this doesn't happen on Unix. +Solution: Don't check timestamps while system() is busy. +Files: src/ex_cmds2.c, src/fileio.c, src/globals.h, src/misc1.c + +Patch 6.1b.024 (extra) +Problem: Gettext 0.11 complains that "sjis" is not a standard name. +Solution: Use "cp932" instead. +Files: src/po/sjiscorr.c + +Patch 6.1b.025 (extra) +Problem: Win32: When closing gvim while it is minimized and has a changed + file, the file-changed dialog pops up in a corner of the screen. +Solution: Put the dialog in the middle of the screen. +Files: src/gui_w48.c + +Patch 6.1b.026 +Problem: When 'diffopt' contains 'iwhite' but not 'icase': differences in + case are not highlighted properly. (Gerhard Hochholzer) +Solution: Don't ignore case when ignoring white space differences. +Files: src/diff.c + +Patch 6.1b.027 +Problem: "vim --remote +" may cause a crash. +Solution: Check for missing file name argument. (Martin Kahlert) +Files: src/main.c + +Patch 6.1b.028 (extra) +Problem: Win16: Can't compile after patch 6.1b.025. +Solution: Add code specifically for Win16. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1b.029 +Problem: Win32: When a directory on an NTFS partition is read/execute (no + delete,modify,write) and the file has modify rights, trying to + write the file deletes it. Making the file read/write/execute + (not delete) solves it. (Mark Canup) +Solution: Use the Unix code to check for a writable directory. If not, then + make a backup copy and overwrite the file. +Files: src/fileio.c + +Patch 6.1b.030 (extra) +Problem: Mac: small mistake in the build script and prototypes. +Solution: Fix the build script and add the prototypes. (Axel Kielhorn) +Files: src/os_mac.build, src/gui_mac.c + +Patch 6.1b.031 (extra) +Problem: Win32 GUI: ":set guifont=*" doesn't set 'guifont' to the resulting + font name. (Vlad Sandrini) +Solution: Put the code back in gui_mch_init_font() to form the font name out + of the logfont. +Files: src/gui_w48.c + +Patch 6.1b.032 +Problem: Athena: Setting a color scheme before the GUI has started causes a + crash. (Todd Blumer) +Solution: Don't try using color names that haven't been set yet. +Files: src/gui_athena.c + +Patch 6.1b.033 +Problem: When using a count after a ":s" command may get ml_get errors. + (Dietmar Lang) +Solution: Check that the resulting range does not go past the end of the + buffer. +Files: src/ex_cmds.c + +Patch 6.1b.034 +Problem: After sourcing mswin.vim, when using <C-S-Right> after + auto-indenting and then <Del>, get warning for allocating + ridiculous amount of memory. (Dave Delgreco) +Solution: Adjust the start of the Visual area when deleting the auto-indent. +Files: src/edit.c + +Patch 6.1b.035 +Problem: When using evim, dropping a file on Vim and then double clicking + on a word, it is changed to "i". (Merlin Hansen) +Solution: Reset need_start_insertmode after editing the file. +Files: src/ex_docmd.c + + +============================================================================== +VERSION 6.2 *version-6.2* + +This section is about improvements made between version 6.1 and 6.2. + +This is mainly a bug-fix release. There are also a few new features. + +Main new features: +- Support for GTK 2. (Daniel Elstner) +- Support for editing Arabic text. (Nadim Shaikli & Isam Bayazidi) +- ":try" command and exception handling. (Servatius Brandt) +- Support for the neXtaw GUI toolkit (mostly like Athena). (Alexey Froloff) +- Cscope support for Win32. (Khorev Sergey) +- Support for PostScript printing in various 8-bit encodings. (Mike Williams) + + +Changed *changed-6.2* +------- + +Removed the scheme indent file, the internal Lisp indenting works well now. + +Moved the GvimEXt, OleVim and VisVim directories into the "src" directory. +This is more consistent with how xxd is handled. + +The VisVim.dll file is installed in the top directory, next to gvimext.dll, +instead of in a subdirectory "VisVim". Fixes that NSIS was uninstalling it +from the wrong directory. + +Removed the art indent file, it didn't do anything. + +submatch() returned line breaks with CR instead of LF. + +Changed the Win32 Makefiles to become more uniform and compile gvimext.dll. +(Dan Sharp) + +'cindent': Align a "//" comment with a "//" comment in a previous line. +(Helmut Stiegler) + +Previously only for xterm-like terminals parent widgets were followed to find +the title and icon label. Now do this for all terminal emulators. + +Made it possible to recognize backslashes for "%" matching. The 'M' flag in +'cpoptions' disables it. (Haakon Riiser) + +Removed the Make_tcc.mak makefile for Turbo C. It didn't work and we probably +can't make it work (the compiler runs out of memory). + +Even though the documentation refers to keywords, "[ CTRL-D" was using +'isident' to find matches. Changed it to use 'iskeyword'. Also applies to +other commands that search for defined words in included files such as +":dsearch", "[D" and "[d". + +Made 'keywordprg' global-local. (Christian Robinson) + +Enabled the Netbeans interface by default. Reversed the configure argument +from "--enable-netbeans" to "--disable-netbeans". + + +Added *added-6.2* +----- + +New options: + 'arabic' + 'arabicshape' + 'ambiwidth' + 'autochdir' + 'casemap' + 'copyindent' + 'cscopequickfix' + 'preserveindent' + 'printencoding' + 'rightleftcmd' + 'termbidi' + 'toolbariconsize' + 'winfixheight' + +New keymaps: + Serbian (Aleksandar Veselinovic) + Chinese Pinyin (Fredrik Roubert) + Esperanto (Antoine J. Mechelynck) + +New syntax files: + Valgrind (Roger Luethi) + Smarty template (Manfred Stienstra) + MySQL (Kenneth Pronovici) + RockLinux package description (Piotr Esden-Tempski) + MMIX (Dirk Huesken) + gkrellmrc (David Necas) + Tilde (Tobias Rundtrom) + Logtalk (Paulo Moura) + PLP (Juerd Waalboer) + fvwm2m4 (David Necas) + IPfilter (Hendrik Scholz) + fstab (Radu Dineiu) + Quake (Nikolai Weibull) + Occam (Mario Schweigler) + lpc (Shizhu Pan) + Exim conf (David Necas) + EDIF (Artem Zankovich) + .cvsrc (Nikolai Weibull) + .fetchmailrc (Nikolai Weibull) + GNU gpg (Nikolai Weibull) + Grub (Nikolai Weibull) + Modconf (Nikolai Weibull) + RCS (Dmitry Vasiliev) + Art (Dorai Sitaram) + Renderman Interface Bytestream (Andrew J Bromage) + Mailcap (Doug Kearns) + Subversion commit file (Dmitry Vasiliev) + Microsoft IDL (Vadim Zeitlin) + WildPackets EtherPeek Decoder (Christopher Shinn) + Spyce (Rimon Barr) + Resolv.conf (Radu Dineiu) + A65 (Clemens Kirchgatterer) + sshconfig and sshdconfig (David Necas) + Cheetah and HTMLCheetah (Max Ischenko) + Packet filter (Camiel Dobbelaar) + +New indent files: + Eiffel (David Clarke) + Tilde (Tobias Rundtrom) + Occam (Mario Schweigler) + Art (Dorai Sitaram) + PHP (Miles Lott) + Dylan (Brent Fulgham) + +New tutor translations: + Slovak (Lubos Celko) + Greek (Christos Kontas) + German (Joachim Hofmann) + Norwegian (脴yvind Holm) + +New filetype plugins: + Occam (Mario Schweigler) + Art (Dorai Sitaram) + ant.vim, aspvbs.vim, config.vim, csc.vim, csh.vim, dtd.vim, html.vim, + jsp.vim, pascal.vim, php.vim, sgml.vim, sh.vim, svg.vim, tcsh.vim, + xhtml.vim, xml.vim, xsd.vim. (Dan Sharp) + +New compiler plugins: + Checkstyle (Doug Kearns) + g77 (Ralf Wildenhues) + fortran (Johann-Guenter Simon) + Xmllint (Doug Kearns) + Ruby (Tim Hammerquist) + Modelsim vcom (Paul Baleme) + +New menu translations: + Brazilian (Jos茅 de Paula) + British (Mike Williams) + Korean in UTF-8. (Nam SungHyun) + Norwegian (脴yvind Holm) + Serbian (Aleksandar Jelenak) + +New message translation for Norwegian. (脴yvind Holm) + +New color scheme: + desert (Hans Fugal) + +Arabic specific features. 'arabicshape', 'termbidi', 'arabic' and +'rightleftcmd' options. (Nadim Shaikli & Isam Bayazidi) + +Support for neXtaw GUI toolkit, mostly like Athena. (Alexey Froloff) + +Win32: cscope support. (Khorev Sergey) + +VMS: various improvements to documentation and makefiles. (Zoltan Arpadffy) + +Added "x" key to the explorer plugin: execute the default action. (Yasuhiro +Matsumoto) + +Compile gvimext.dll with MingW. (Rene de Zwart) + +Add the "tohtml.vim" plugin. It defines the ":TOhtml" user command, an easy +way to convert text to HTML. + +Added ":try" / ":catch" / ":finally" / ":endtry" commands. Add E999 numbers +to all error messages, so that they can be caught by the number. +(Servatius Brandt) +Moved part of ex_docmd.c to the new ex_eval.c source file. + +Include support for GTK+ 2.2.x (Daniel Elstner) +Adds the "~" register: drag & drop text. +Adds the 'toolbariconsize' option. +Add -Dalloca when running lint to work around a problem with alloca() +prototype. + +When selecting an item in the error window to jump to, take some effort to +find an ordinary window to show the file in (not a preview window). + +Support for PostScript printing of various 8-bit encodings. (Mike Williams) + +inputdialog() accepts a third argument that is used when the dialog is +cancelled. Makes it possible to see a difference between cancelling and +entering nothing. + +Included Aap recipes. Can be used to update Vim to the latest version, +building and installing. + +"/" option in 'cinoptions': extra indent for comment lines. (Helmut Stiegler) + +Vim variable "v:register" and functions setreg(), getreg() and getregtype(). +(Michael Geddes) + +"v" flag in 'cpoptions': Leave text on screen with backspace in Insert mode. +(Phillip Vandry) + +Dosinst.exe also finds gvimext.dll in the "GvimExt" directory. Useful when +running install in the "src" directory for testing. + +Support tag files that were sorted with case ignored. (Flemming Madsen) + +When completing a wildcard in a leading path element, as in "../*/Makefile", +only the last part ("Makefile") was listed. Support custom defined +command line completion. (Flemming Madsen) + +Also recognize "rxvt" as an xterm-like terminal. (Tomas Styblo) + +Proper X11 session management. Fixes that the WM_SAVE_YOURSELF event was not +used by popular desktops. (Neil Bird) +Not used for Gnome 2, it has its own handling. + +Support BOR, DEBUG and SPAWNO arguments for the Borland 3 Makefile. (Walter +Briscoe) + +Support page breaks for printing. Adds the "formfeed" field in +'printoptions'. (Mike Williams) + +Mac OSX: multi-language support: iconv and gettext. (Muraoka Taro, Axel +Kielhorn) + +"\Z" flag in patterns: ignore differences in combining characters. (Ron Aaron) + +Added 'preserveindent' and 'copyindent' options. They use existing white +space characters instead of using Tabs as much as possible. (Chris Leishman) + +Updated Unicode tables to Unicode 4.0. (Raphael Finkel) + +Support for the mouse wheel in rxvt. (AIDA Shinra) + +Win32: Added ":8" file modifier to get short filename. Test50 tests the ":8" +expansion on Win32 systems. (Michael Geddes) + +'cscopequickfix' option: Open quickfix window for Cscope commands. Also +cleanup the code for giving messages. (Khorev Sergey) + +GUI: Support more than 222 columns for mouse positions. + +":stopinsert" command: Don't return to Insert mode. + +"interrupt" command for debug mode. Useful for simulating CTRL-C. (Servatius +Brandt) + + +Fixed *fixed-6.2* +----- + +Removed a few unused #defines from config.h.in, os_os2_cfg.h and os_vms_conf.h. + +The Vim icons in PNG format didn't have a transparent background. (Greg +Roelofs) + +Fixed a large number of spelling mistakes in the docs. (Adri Verhoef) + +The #defines for prototype generation were causing trouble. Changed them to +typedefs. + +A new version of libintl.h uses __asm__, which confuses cproto. Define a +dummy __asm__ macro. + +When 'virtualedit' is set can't move to halfway an unprintable character. +Cripples CTRL-V selection. (Taro Muraoka) +Allow moving to halfway an unprintable character. Don't let getvvcol() change +the pos->coladd argument. + +When a tab wraps to the next line, 'listchars' is set and 'foldcolumn' is +non-zero, only one character of the foldcolumn is highlighted. (Muraoka Taro) + +When using ":catch" without an argument Vim crashes. (Yasuhiro Matsumoto) +When no argument given use the ".*" pattern. + +Win32: When gvim.exe is started from a shortcut with the window style property +set to maximize Vim doesn't start with a maximized window. (Yasuhiro +Matsumoto) Open the window with the default size and don't call ShowWindow() +again when it's already visible. (Helmut Stiegler) + +gui_gtk.c used MAX, but it's undefined to avoid a conflict with system header +files. + +Win32: When closing a window from a mapping some pixels remain on the +statusline. (Yasuhiro Matsumoto) + +A column number in an errorformat that goes beyond the end of the line may +cause a crash. + +":throw 'test'" crashes Vim. (Yasuhiro Matsumoto) + +The file selector's scrollbar colors are not set after doing a ":hi Scrollbar +guifg=color". And the file selector's colors are not changed by the +colorscheme command. (David Harrison) + +Motif: When compiling with FEAT_FOOTER defined, the text area gets a few +pixels extra space on the right. Remove the special case in +gui_get_base_width(). (David Harrison) + +Using CTRL-R CTRL-P in Insert mode puts the '] mark in the wrong position. +(Helmut Stiegler) + +When 'formatoptions' includes "awct" a non-comment wasn't auto-formatted. + +Using a "--cmd" argument more than 10 times caused a crash. + +DEC style mouse support didn't work if the page field is not empty. +(Uribarri) + +"vim -l one two" did only set 'lisp' in the first file. Vi does it for every +file. + +":set tw<" didn't work. Was checking for '^' instead of '<'. + +In ":hardcopy > %.ps" the "%" was not expanded to the current filename. + +Made ":redraw" also update the Visual area. + +When a not implemented command, such as ":perl", has wrong arguments the less +important error was reported, giving the user the idea the command could work. + +On non-Unix systems autocommands for writing did not attempt a match with the +short file name, causing a pattern like "a/b" to fail. + +VMS: e_screenmode was not defined and a few other fixes for VMS. (Zoltan +Arpadffy) + +redraw_msg() depended on FEAT_ARABIC instead of FEAT_RIGHTLEFT. (Walter +Briscoe) + +Various changes for the PC Makefiles. (Walter Briscoe) + +Use _truename() instead of our own code to expand a file name into a full +path. (Walter Briscoe) + +Error in filetype check for /etc/modutils. (Lubomir Host) + +Cscope interface: allocated a buffer too small. + +Win16: remove a trailing backslash from a path when obtaining the permission +flags. (Vince Negri) + +When searching for tags with case ignored Vim could hang. + +When searching directories with a stopdir could get a crash. Did not +re-allocate enough memory. (Vince Negri) + +A user command may cause a crash. Don't use the command index when it's +negative. (Vince Negri) + +putenv() didn't work for MingW and Cygwin. (Dan Sharp) + +Many functions were common between os_msdos.c and os_win16.c. Use os_msdos.c +for compiling the Win16 version and remove the functions from os_win16.c. +(Vince Negri) + +For terminals that behave like an xterm but didn't have a name that is +recognized, the window title would not always be set. + +When syntax highlighting is off ":hardcopy" could still attempt printing +colors. + +Crash when using ":catch" without an argument. (Servatius Brandt) + +Win32: ":n #" doubled the backslashes. + +Fixed Arabic shaping for the command line. (Nadim Shaikli) + +Avoid splitting up a string displayed on the command line into individual +characters, it breaks Arabic shaping. + +Updated Cygwin and MingW makefiles to use more dependencies. (Dan Sharp) + +2html.vim didn't work with 'nomagic' set. + +When a local argument list is used and doing ":only" Vim could crash later. +(Muraoka Taro) + +When using "%P" in 'statusline' and the fillchar is "-", a percentage of 3% +could result in "-3%". Also avoid changing a space inside a filename to the +fill character. + +MSwin: Handling of backslashes and double quotes for command line arguments +was not like what other applications do. (Walter Briscoe) + +Test32 sometimes didn't work, because test11.out was written as TEST11.OUT. + +Avoid pointer conversions warnings for Borland C 5.5 in dosinst.c and +uninstal.c. + +More improvements for Make_bc3.mak file. (Walter Briscoe) + +When ":syn sync linebreaks=1" is used, editing the first line caused a redraw +of the whole screen. + +Making translated messages didn't work, if_perl.xs wasn't found. (Vlad +Sandrini) + +Motif and Athena: moving Vim to the foreground didn't uniconify it. Use +XMapRaised() instead of XRaiseWindow(). (Srikanth Sankaran) + +When using ":ptag" in a window where 'scrollbind' is set the preview window +would also have 'scrollbind' set. Also reset 'foldcolumn' and 'diff'. + +Various commands that split a window took over 'scrollbind', which is hardly +ever desired. Esp. for "q:" and ":copen". Mostly reset 'scrollbind' when +splitting a window. + +When 'shellslash' is set in the vimrc file the first entry of ":scriptnames" +would still have backslashes. Entries in the quickfix list could also have +wrong (back)slashes. + +Win32: printer dialog texts were not translated. (Yasuhiro Matsumoto) + +When using a multibyte character with a K_SPECIAL byte or a special key code +with "--remote-send" the received byte sequence was mangled. Put it in the +typeahead buffer instead of the input buffer. + +Win32: The cursor position was incorrect after changing cursor shape. +(Yasuhiro Matsumoto). + +Win32: When 'encoding' is not the current codepage the title could not be set +to non-ascii characters. + +"vim -d scp://machine/file1 scp://machine/file2" did not work, there was only +one window. Fixed the netrw plugin not to wipe out the buffer if it is +displayed in other windows. + +"/$" caused "e" in last column of screen to disappear, a highlighted blank was +displayed instead. + +":s/ *\ze\n//e" removed the line break and introduced arbitrary text. Was +using the line count including what matched after the "\ze". + +Using the "c" flag with ":s" changed the behavior when a line break is +replaced and "\@<=" is used. Without "c" a following match was not found. + +":%s/\vA@<=\nB@=//gce" got stuck on "A\nB" when entering "n". + +VMS: add HAVE_STRFTIME in the config file. (Zoltan Arpadffy) + +When a delete prompts if a delete should continue when yanking is not +possible, restore msg_silent afterwards. + +":sign" did not complain about a missing argument. + +When adding or deleting a sign 'hlsearch' highlighting could disappear. +Use the generic functions for updating signs. + +On MS-Windows NT, 2K and XP don't use command.com but cmd.exe for testing. +Makes the tests work on more systems. + +In the DOS tests don't create "/tmp" to avoid an error. + +Mac classic: Problems with reading files with CR vs CR/LF. Rely on the +library version of fgets() to work correctly for Metrowerks 2.2. (Axel +Kielhorn) + +When typing a password a "*" was shown for each byte instead of for each +character. Added multibyte handling to displaying the stars. (Yasuhiro +Matsumoto) + +When using Perl 5.6 accessing $curbuf doesn't work. Add an #ifdef to use +different code for 5.6 and 5.8. (Dan Sharp) + +MingW and Cygwin: Don't strip the debug executable. (Dan Sharp) + +An assignment to a variable with curlies that includes "==" doesn't work. +Skip over the curlies before searching for an "=". (Vince Negri) + +When cancelling the selection of alternate matching tags the tag stack index +could be advanced too far, resulting in an error message when using CTRL-T. + + +Patch 6.1.001 +Problem: When formatting UTF-8 text it might be wrapped at a space that is + followed by a composing character. (Raphael Finkel) + Also correct a display error for removing a composing char on top + of a space. +Solution: Check for a composing character on a space. +Files: src/edit.c, src/misc1.c, src/screen.c + +Patch 6.1.002 (extra) +Problem: Win32: after a ":popup" command the mouse pointer stays hidden. +Solution: Unhide the mouse pointer before showing the menu. +Files: src/gui_w48.c + +Patch 6.1.003 +Problem: When 'laststatus' is zero and there is a vertical split, the + vertical separator is drawn in the command line. (Srikant + Sankaran) +Solution: Don't draw the vertical separator where there is no statusline. +Files: src/screen.c + +Patch 6.1.004 +Problem: Unicode 3.2 changes width and composing of a few characters. + (Markus Kuhn) +Solution: Adjust the Unicode functions for the character width and composing + characters. +Files: src/mbyte.c + +Patch 6.1.005 +Problem: When using more than 50 items in 'statusline' Vim might crash. + (Steve Hall) +Solution: Increment itemcnt in check_stl_option(). (Flemming Madsen) +Files: src/option.c + +Patch 6.1.006 +Problem: When using "P" in Visual mode to put linewise selected text, the + wrong text is deleted. (Jakub Turski) +Solution: Put the text before the Visual area and correct the text to be + deleted for the inserted lines. + Also fix that "p" of linewise text in Visual block mode doesn't + work correctly. +Files: src/normal.c, src/ops.c + +Patch 6.1.007 +Problem: Using ":filetype plugin off" when filetype plugins were never + enabled causes an error message. (Yiu Wing) +Solution: Use ":silent!" to avoid the error message. +Files: runtime/ftplugof.vim + +Patch 6.1.008 +Problem: The "%" command doesn't ignore \" inside a string, it's seen as + the end of the string. (Ken Clark) +Solution: Skip a double quote preceded by an odd number of backslashes. +Files: src/search.c + +Patch 6.1.009 +Problem: Vim crashes when using a huge number for the maxwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes maxwid negative. +Files: src/buffer.c + +Patch 6.1.010 +Problem: Searching backwards for a question mark with "?\?" doesn't work. + (Alan Isaac) Same problem in ":s?\??" and ":g?\??". +Solution: Change the "\?" in a pattern to "?" when using "?" as delimiter. +Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/regexp.pro, src/regexp.c, + src/search.c, src/syntax.c, src/tag.c + +Patch 6.1.011 +Problem: XIM: doesn't work correctly when 'number' is set. Also, a focus + problem when selecting candidates. +Solution: Fix the XIM problems. (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/screen.c + +Patch 6.1.012 +Problem: A system() call might fail if fread() does CR-LF to LF + translation. +Solution: Open the output file in binary mode. (Pavol Huhas) +Files: src/misc1.c + +Patch 6.1.013 +Problem: Win32: The default for 'printexpr' doesn't work when there are + special characters in 'printdevice'. +Solution: Add double quotes around the device name. (Mike Williams) +Files: runtime/doc/option.txt, src/option.c + +Patch 6.1.014 +Problem: An operator like "r" used in Visual block mode doesn't use + 'virtualedit' when it's set to "block". +Solution: Check for 'virtualedit' being active in Visual block mode when the + operator was started. +Files: src/ex_docmd.c, src/globals.h, src/misc2.c, src/normal.c, + src/ops.c, src/undo.c + +Patch 6.1.015 +Problem: After patch 6.1.014 can't compile with tiny features. (Christian + J. Robinson) +Solution: Add the missing define of virtual_op. +Files: src/vim.h + +Patch 6.1.016 (extra) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing. +Solution: Replace the RevOut() function with ETO_IGNORELANGUAGE. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.017 +Problem: Cygwin: After patch 6.1.012 Still doesn't do binary file I/O. + (Pavol Juhas) +Solution: Define BINARY_FILE_IO for Cygwin. +Files: src/os_unix.h + +Patch 6.1.018 +Problem: Error message when using cterm highlighting. (Leonardo Di Lella) +Solution: Remove a backslash before a question mark. +Files: runtime/syntax/cterm.vim + +Patch 6.1.019 (extra) +Problem: Win32: File name is messed up when editing just a drive name. + (Walter Briscoe) +Solution: Append a NUL after the drive name. (Vince Negri) +Files: src/os_win32.c + +Patch 6.1.020 +Problem: col("'>") returns a huge number after using Visual line mode. +Solution: Return the length of the line instead. +Files: src/eval.c + +Patch 6.1.021 (depends on patch 6.1.009) +Problem: Vim crashes when using a huge number for the minwid value in a + statusline. (Robert M. Nowotniak) +Solution: Check for an overflow that makes minwid negative. +Files: src/buffer.c + +Patch 6.1.022 +Problem: Grabbing the status line above the command-line window works like + the bottom status line was grabbed. (Jim Battle) +Solution: Make it possible to grab the status line above the command-line + window, so that it can be resized. +Files: src/ui.c + +Patch 6.1.023 (extra) +Problem: VMS: running tests doesn't work properly. +Solution: Adjust the makefile. (Zoltan Arpadffy) +Files: src/testdir/Make_vms.mms + +Patch 6.1.024 +Problem: When header files use a new syntax for declaring functions, Vim + can't figure out missing prototypes properly. +Solution: Accept braces around a function name. (M. Warner Losh) +Files: src/osdef.sh + +Patch 6.1.025 +Problem: Five messages for "vim --help" don't start with a capital. (Vlad + Sandrini) +Solution: Make the messages consistent. +Files: src/main.c + +Patch 6.1.026 +Problem: *.patch files are not recognized as diff files. In a script a + "VAR=val" argument after "env" isn't ignored. PHP scripts are not + recognized. +Solution: Add *.patch for diff filetypes. Ignore "VAR=val". Recognize PHP + scripts. (Roman Neuhauser) +Files: runtime/filetype.vim, runtime/scripts.vim + +Patch 6.1.027 +Problem: When 'foldcolumn' is non-zero, a special character that wraps to + the next line disturbs the foldcolumn highlighting. (Yasuhiro + Matsumoto) +Solution: Only use the special highlighting when drawing text characters. +Files: src/screen.c + +Patch 6.1.028 +Problem: Client-server: When a --remote-expr fails, Vim still exits with + status zero. +Solution: Exit Vim with a non-zero status to indicate the --remote-expr + failed. (Thomas Scott Urban) +Files: src/main.c + +Patch 6.1.029 +Problem: When 'encoding' is an 8-bit encoding other than "latin1", editing + a utf-8 or other Unicode file uses the wrong conversion. (Jan + Fedak) +Solution: Don't use Unicode to latin1 conversion for 8-bit encodings other + than "latin1". +Files: src/fileio.c + +Patch 6.1.030 +Problem: When CTRL-N is mapped in Insert mode, it is also mapped after + CTRL-X CTRL-N, while it is not mapped after CTRL-X CTRL-F. + (Kontra Gergely) +Solution: Don't map CTRL-N after CTRL-X CTRL-N. Same for CTRL-P. +Files: src/getchar.c + +Patch 6.1.031 +Problem: Cygwin: Xxd could read a file in text mode instead of binary mode. +Solution: Use "rb" or "rt" when needed. (Pavol Juhas) +Files: src/xxd/xxd.c + +Patch 6.1.032 +Problem: Can't specify a quickfix file without jumping to the first error. +Solution: Add the ":cgetfile" command. (Yegappan Lakshmanan) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, + src/quickfix.c + +Patch 6.1.033 +Problem: GUI: When the selection is lost and the Visual highlighting is + changed to underlining, the cursor is left in a different + position. (Christian Michon) +Solution: Update the cursor position after redrawing the selection. +Files: src/ui.c + +Patch 6.1.034 +Problem: A CVS diff file isn't recognized as diff filetype. +Solution: Skip lines starting with "? " before checking for an "Index:" line. +Files: runtime/scripts.vim + +Patch 6.1.035 (extra, depends on 6.1.016) +Problem: Win32: Outputting Hebrew or Arabic text might have a problem with + reversing on MS-Windows 95/98/ME. +Solution: Restore the RevOut() function and use it in specific situations + only. (Ron Aaron) +Files: src/gui_w32.c + +Patch 6.1.036 +Problem: This command may cause a crash: ":v/./,//-j". (Ralf Arens) +Solution: Compute the right length of the regexp when it's empty. +Files: src/search.c + +Patch 6.1.037 +Problem: When 'lazyredraw' is set, pressing "q" at the hit-enter prompt + causes an incomplete redraw and the cursor isn't positioned. + (Lubomir Host) +Solution: Overrule 'lazyredraw' when do_redraw is set. +Files: src/main.c, src/screen.c + +Patch 6.1.038 +Problem: Multi-byte: When a ":s" command contains a multibyte character + where the trail byte is '~' the text is messed up. +Solution: Properly skip multibyte characters in regtilde() (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.039 +Problem: When folds are defined and the file is changed outside of Vim, + reloading the file doesn't update the folds. (Anders + Schack-Nielsen) +Solution: Recompute the folds after reloading the file. +Files: src/fileio.c + +Patch 6.1.040 +Problem: When changing directory for expanding a file name fails there is + no error message. +Solution: Give an error message for this situation. Don't change directory + if we can't return to the original directory. +Files: src/diff.c, src/ex_docmd.c, src/globals.h, src/misc1.c, + src/os_unix.c + +Patch 6.1.041 +Problem: ":mkvimrc" doesn't handle a mapping that has a leading space in + the rhs. (Davyd Ondrejko) +Solution: Insert a CTRL-V before the leading space. Also display leading + and trailing white space in <> form. +Files: src/getchar.c, src/message.c + +Patch 6.1.042 +Problem: "vim -r" doesn't show all matches when 'wildignore' removes swap + files. (Steve Talley) +Solution: Keep all matching swap file names. +Files: src/memline.c + +Patch 6.1.043 +Problem: After patch 6.1.040 a few warnings are produced. +Solution: Add a type cast to "char *" for mch_chdir(). (Axel Kielhorn) +Files: src/diff.c, src/ex_docmd.c.c, src/misc1.c, src/os_unix.c + +Patch 6.1.044 (extra) +Problem: GUI: When using the find/replace dialog with text that contains a + slash, an invalid substitute command is generated. + On Win32 a find doesn't work when 'insertmode' is set. +Solution: Escape slashes with a backslash. + Make the Win32, Motif and GTK gui use common code for the + find/replace dialog. + Add the "match case" option for Motif and GTK. +Files: src/feature.h, src/proto/gui.pro, src/gui.c, src/gui.h, + src/gui_motif.c, src/gui_gtk.c, src/gui_w48.c + +Patch 6.1.045 +Problem: In Visual mode, with lots of folds and 'scrolloff' set to 999, + moving the cursor down near the end of the file causes the text to + jump up and down. (Lubomir Host) +Solution: Take into account that the cursor may be on the last line of a + closed fold. +Files: src/move.c + +Patch 6.1.046 +Problem: X11 GUI: ":set lsp=2 gcr=n-v-i:hor1-blinkon0" draws a black + rectangle. ":set lsp=2 gcr=n-v-i:hor10-blinkon0" makes the cursor + disappear. (Nam SungHyun) +Solution: Correctly compute the height of the horizontal cursor. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.047 +Problem: When skipping commands after an error was encountered, expressions + for ":if", ";elseif" and ":while" are still evaluated. +Solution: Skip the expression after an error. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.048 +Problem: Unicode 3.2 changes were missing a few Hangul Jamo characters. +Solution: Recognize more characters as composing characters. (Jungshik Shin) +Files: src/mbyte.c + +Patch 6.1.049 (extra) +Problem: On a 32 bit display a valid color may cause an error message, + because its pixel value is negative. (Chris Paulson-Ellis) +Solution: Check for -11111 instead of the color being negative. + Don't add one to the pixel value, -1 may be used for white. +Files: src/globals.h, src/gui.c, src/gui.h, src/gui_amiga.c, + src/gui_athena.c, src/gui_beos.cc, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, + src/gui_riscos.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, + src/gui_x11.c, src/mbyte.c, src/syntax.c + +Patch 6.1.050 (depends on 6.1.049) +Problem: After patch 6.1.049 the non-GUI version doesn't compile. +Solution: Add an #ifdef FEAT_GUI. (Robert Stanton) +Files: src/syntax.c + +Patch 6.1.051 (depends on 6.1.044) +Problem: Doesn't compile with GUI and small features. +Solution: Adjust the #if for ga_append(). +Files: src/misc2.c + +Patch 6.1.052 +Problem: Unix: The executable() function doesn't work when the "which" + command isn't available. +Solution: Go through $PATH manually. Also makes it work for VMS. +Files: src/os_unix.c + +Patch 6.1.053 +Problem: When 'sessionoptions' contains "globals", or "localoptions" and an + option value contains a line break, the resulting script is wrong. +Solution: Use "\n" and "\r" for a line break. (Srinath Avadhanula) +Files: src/eval.c + +Patch 6.1.054 +Problem: GUI: A mouse click is not recognized at the more prompt, even when + 'mouse' includes 'r'. +Solution: Recognize a mouse click at the more prompt. + Also accept a mouse click in the last line in the GUI. + Add "ml" entry in 'mouseshape'. +Files: src/gui.c, src/message.c, src/misc1.c, src/misc2.c, src/option.c, + src/structs.h + +Patch 6.1.055 +Problem: When editing a compressed file, Vim will inspect the contents to + guess the filetype. +Solution: Don't source scripts.vim for .Z, .gz, .bz2, .zip and .tgz files. +Files: runtime/filetype.vim, runtime/plugin/gzip.vim + +Patch 6.1.056 +Problem: Loading the Syntax menu can take quite a bit of time. +Solution: Add the "skip_syntax_sel_menu" variable. When it's defined the + available syntax files are not in the Syntax menu. +Files: runtime/doc/gui.txt, runtime/menu.vim + +Patch 6.1.057 +Problem: An ESC inside a mapping doesn't work as documented when + 'insertmode' is set, it does go from Visual or Normal mode to + Insert mode. (Benji Fisher) +Solution: Make it work as documented. +Files: src/normal.c + +Patch 6.1.058 +Problem: When there is a closed fold just above the first line in the + window, using CTRL-X CTRL-Y in Insert mode will show only one line + of the fold. (Alexey Marinichev) +Solution: Correct the topline by putting it at the start of the fold. +Files: src/move.c + +Patch 6.1.059 +Problem: ":redir > ~/file" doesn't work. (Stephen Rasku) +Solution: Expand environment variables in the ":redir >" argument. +Files: src/ex_docmd.c + +Patch 6.1.060 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", deleting + a character just before a tab changes the tab into spaces. Undo + doesn't restore the tab. (Helmut Stiegler) +Solution: Don't replace the tab by spaces when it's not needed. Correctly + save the line before it's changed. +Files: src/ops.c + +Patch 6.1.061 +Problem: When 'virtualedit' is set and 'selection' is "exclusive", a Visual + selection that ends just after a tab doesn't include that tab in + the highlighting. (Helmut Stiegler) +Solution: Use a different way to exclude the character under the cursor. +Files: src/screen.c + +Patch 6.1.062 +Problem: The "man" filetype plugin doesn't work properly on Solaris 5. +Solution: Use a different way to detect that "man -s" should be used. (Hugh + Sasse) +Files: runtime/ftplugin/man.vim + +Patch 6.1.063 +Problem: Java indenting doesn't work properly. +Solution: Ignore comments when checking if the indent doesn't increase after + a "}". +Files: runtime/indent/java.vim + +Patch 6.1.064 +Problem: The URLs that the netrw plugin recognized for ftp and rcp did not + conform to the standard method://[user@]host[:port]/path. +Solution: Use ftp://[user@]host[[:#]port]/path, which supports both the new + and the previous style. Also added a bit of dav/cadaver support. + (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.065 +Problem: VMS: The colorscheme, keymap and compiler menus are not filled in. +Solution: Ignore case when looking for ".vim" files. (Coen Engelbarts) +Files: runtime/menu.vim + +Patch 6.1.066 (extra) +Problem: When calling system() in a plugin reading stdin hangs. +Solution: Don't set the terminal to RAW mode when it wasn't in RAW mode + before the system() call. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_unix.c, + src/os_win16.c, src/os_win32.c + +Patch 6.1.067 +Problem: ":set viminfo+=f0" is not working. (Benji Fisher) +Solution: Check the "f" flag instead of "'" in 'viminfo'. +Files: src/mark.c + +Patch 6.1.068 +Problem: When a file is reloaded after it was changed outside of Vim, diff + mode isn't updated. (Michael Naumann) +Solution: Invalidate the diff info so that it's updated when needed. +Files: src/fileio.c + +Patch 6.1.069 +Problem: When 'showmatch' is set and "$" is in 'cpoptions', using + "C}<Esc>" may forget to remove the "$". (Preben Guldberg) +Solution: Restore dollar_vcol after displaying the matching cursor position. +Files: src/search.c + +Patch 6.1.070 (depends on 6.1.060) +Problem: Compiler warning for signed/unsigned mismatch. (Mike Williams) +Solution: Add a typecast to int. +Files: src/ops.c + +Patch 6.1.071 +Problem: When 'selection' is exclusive, g CTRL-G in Visual mode counts one + character too much. (David Necas) +Solution: Subtract one from the end position. +Files: src/ops.c + +Patch 6.1.072 +Problem: When a file name in a tags file starts with http:// or something + else for which there is a BufReadCmd autocommand, the file isn't + opened anyway. +Solution: Check if there is a matching BufReadCmd autocommand and try to + open the file. +Files: src/fileio.c, src/proto/fileio.pro, src/tag.c + +Patch 6.1.073 (extra) +Problem: BC5: Can't easily specify a tiny, small, normal, big or huge + version. +Solution: Allow selecting the version with the FEATURES variable. (Ajit + Thakkar) +Files: src/Make_bc5.mak + +Patch 6.1.074 +Problem: When 'cdpath' includes "../..", changing to a directory in which + we currently already are doesn't work. ff_check_visited() adds + the directory both when using it as the root for searching and for + the actual matches. (Stephen Rasku) +Solution: Use a separate list for the already searched directories. +Files: src/misc2.c + +Patch 6.1.075 (depends on 6.1.072) +Problem: Can't compile fileio.c on MS-Windows. +Solution: Add a declaration for the "p" pointer. (Madoka Machitani) +Files: src/fileio.c + +Patch 6.1.076 (extra) +Problem: Macintosh: explorer plugin doesn't work on Mac Classic. + IME doesn't work. Dialog boxes don't work on Mac OS X +Solution: Fix explorer plugin and key modifiers. (Axel Kielhorn) + Fix IME support. (Muraoka Taro) + Disable dialog boxes. (Benji Fisher) +Files: src/edit.c, src/feature.h, src/gui_mac.c, src/os_mac.c + +Patch 6.1.077 +Problem: On a Debian system with ACL linking fails. (Lubomir Host) +Solution: When the "acl" library is used, check if the "attr" library is + present and use it. +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.1.078 +Problem: When using 'foldmethod' "marker" and the end marker appears before + the start marker in the file, no fold is found. (Nazri Ramliy) +Solution: Don't let the fold depth go negative. +Files: src/fold.c + +Patch 6.1.079 +Problem: When using "s" in Visual block mode with 'virtualedit' set, when + the selected block is after the end of some lines the wrong text + is inserted and some lines are skipped. (Servatius Brandt) +Solution: Insert the right text and extend short lines. +Files: src/ops.c + +Patch 6.1.080 +Problem: When using gcc with /usr/local already in the search path, adding + it again causes problems. +Solution: Adjust configure.in to avoid adding /usr/local/include and + /usr/local/lib when using GCC and they are already used. (Johannes + Zellner) +Files: src/auto/configure, src/configure.in + +Patch 6.1.081 +Problem: ":help CTRL-\_CTRL-N" doesn't work. (Christian J. Robinson) +Solution: Double the backslash to avoid the special meaning of "\_". +Files: src/ex_cmds.c + +Patch 6.1.082 +Problem: On MS-Windows the vimrc_example.vim script is sourced and then + mswin.vim. This enables using select mode, but since "p" is + mapped it doesn't replace the selection. +Solution: Remove the mapping of "p" from vimrc_example.vim, it's obsolete. + (Vlad Sandrini) +Files: runtime/vimrc_example.vim + +Patch 6.1.083 +Problem: When $LANG is "sk" or "sk_sk", the Slovak menu file isn't found. + (Martin Lacko) +Solution: Guess the right menu file based on the system. +Files: runtime/lang/menu_sk_sk.vim + +Patch 6.1.084 (depends on 6.1.080) +Problem: "include" and "lib" are mixed up when checking the directories gcc + already searches. +Solution: Swap the variable names. (SunHo Kim) +Files: src/auto/configure, src/configure.in + +Patch 6.1.085 +Problem: When using CTRL-O CTRL-\ CTRL-N from Insert mode, the displayed + mode "(insert)" isn't removed. (Benji Fisher) +Solution: Clear the command line. +Files: src/normal.c + +Patch 6.1.086 (depends on 6.1.049) +Problem: The guifg color for CursorIM doesn't take effect. +Solution: Use the foreground color when it's defined. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.087 +Problem: A thesaurus with Japanese characters has problems with characters + in different word classes. +Solution: Only separate words with single-byte non-word characters. + (Muraoka Taro) +Files: src/edit.c + +Patch 6.1.088 (extra) +Problem: Win32: no debugging info is generated. Tags file excludes .cpp + files. +Solution: Add "/map" to compiler flags. Add "*.cpp" to ctags command. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.089 +Problem: On BSDI systems there is no ss_sp field in stack_t. (Robert Jan) +Solution: Use ss_base instead. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/os_unix.c + +Patch 6.1.090 +Problem: CTRL-F gets stuck when 'scrolloff' is non-zero and there is a mix + of long wrapping lines and a non-wrapping line. +Solution: Check that CTRL-F scrolls at least one line. +Files: src/move.c + +Patch 6.1.091 +Problem: GTK: Can't change preeditstate without setting 'imactivatekey'. +Solution: Add some code to change preeditstate for OnTheSpot. (Yasuhiro + Matsumoto) +Files: src/mbyte.c + +Patch 6.1.092 +Problem: ":mapclear <buffer>" doesn't work. (Srikanth Adayapalam) +Solution: Allow an argument for ":mapclear". +Files: src/ex_cmds.h + +Patch 6.1.093 (extra) +Problem: Mac and MS-Windows GUI: when scrolling while ":s" is working the + results can be messed up, because the cursor is moved. +Solution: Disallow direct scrolling when not waiting for a character. +Files: src/gui_mac.c, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.094 +Problem: Cygwin: Passing a file name that has backslashes isn't handled + very well. +Solution: Convert file name arguments to Posix. (Chris Metcalf) +Files: src/main.c + +Patch 6.1.095 +Problem: When using signs can free an item on the stack. + Overruling sign colors doesn't work. (Srikanth Sankaran) +Solution: Don't free the item on the stack. Use NULL instead of "none" for + the value of the color. +Files: src/gui_x11.c + +Patch 6.1.096 +Problem: When erasing the right half of a double-byte character, it may + cause further characters to be erased. (Yasuhiro Matsumoto) +Solution: Make sure only one character is erased. +Files: src/screen.c + +Patch 6.1.097 (depends on 6.1.090) +Problem: When 'scrolloff' is set to a huge value, CTRL-F at the end of the + file scrolls one line. (Lubomir Host) +Solution: Don't scroll when CTRL-F detects the end-of-file. +Files: src/move.c + +Patch 6.1.098 +Problem: MS-Windows: When the xxd program is under "c:\program files" the + "Convert to Hex" menu doesn't work. (Brian Mathis) +Solution: Put the path to xxd in double quotes. +Files: runtime/menu.vim + +Patch 6.1.099 +Problem: Memory corrupted when closing a fold with more than 99999 lines. +Solution: Allocate more space for the fold text. (Walter Briscoe) +Files: src/eval.c + +Patch 6.1.100 (extra, depends on 6.1.088) +Problem: Win32: VC5 and earlier don't support the /mapinfo option. +Solution: Add "/mapinfo" only when "MAP=lines" is specified. (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.101 +Problem: After using ":options" the tabstop of a new window is 15. Entry + in ":options" window for 'autowriteall' is wrong. (Antoine J + Mechelynck) Can't insert a space in an option value. +Solution: Use ":setlocal" instead of ":set". Change "aw" to "awa". + Don't map space in Insert mode. +Files: runtime/optwin.vim + +Patch 6.1.102 +Problem: Unprintable and multibyte characters in a statusline item are not + truncated correctly. (Yasuhiro Matsumoto) +Solution: Count the width of characters instead of the number of bytes. +Files: src/buffer.c + +Patch 6.1.103 +Problem: A function returning from a while loop, with 'verbose' set to 12 + or higher, doesn't mention the return value. A function with the + 'abort' attribute may return -1 while the verbose message says + something else. +Solution: Move the verbose message about returning from a function to + call_func(). (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.104 +Problem: GCC 3.1 appears to have an optimizer problem that makes test 3 + crash. +Solution: For GCC 3.1 add -fno-strength-reduce to avoid the optimizer bug. + Filter out extra info from "gcc --version". +Files: src/auto/configure, src/configure.in + +Patch 6.1.105 +Problem: Win32: The default for 'shellpipe' doesn't redirect stderr. (Dion + Nicolaas) +Solution: Redirect stderr, depending on the shell (like for 'shellredir'). +Files: src/option.c + +Patch 6.1.106 +Problem: The maze program crashes. +Solution: Change "11" to "27" and it works. (Greg Roelofs) +Files: runtime/macros/maze/mazeansi.c + +Patch 6.1.107 +Problem: When 'list' is set the current line in the error window may be + displayed wrong. (Muraoka Taro) +Solution: Don't continue the line after the $ has been displayed and the + rightmost column is reached. +Files: src/screen.c + +Patch 6.1.108 +Problem: When interrupting a filter command such as "!!sleep 20" the file + becomes read-only. (Mark Brader) +Solution: Only set the read-only flag when opening a buffer is interrupted. + When the shell command was interrupted, read the output that was + produced so far. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.1.109 +Problem: When 'eadirection' is "hor", using CTRL-W = doesn't equalize the + window heights. (Roman Neuhauser) +Solution: Ignore 'eadirection' for CTRL-W = +Files: src/window.c + +Patch 6.1.110 +Problem: When using ":badd file" when "file" is already present but not + listed, it stays unlisted. (David Frey) +Solution: Set 'buflisted'. +Files: src/buffer.c + +Patch 6.1.111 +Problem: It's not possible to detect using the Unix sources on Win32 or Mac. +Solution: Add has("macunix") and has("win32unix"). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.112 +Problem: When using ":argdo", ":bufdo" or ":windo", CTRL-O doesn't go to + the cursor position from before this command but every position + where the argument was executed. +Solution: Only remember the cursor position from before the ":argdo", + ":bufdo" and ":windo". +Files: src/ex_cmds2.c, src/mark.c + +Patch 6.1.113 +Problem: ":bufdo bwipe" only wipes out half the buffers. (Roman Neuhauser) +Solution: Decide what buffer to go to next before executing the command. +Files: src/ex_cmds2.c + +Patch 6.1.114 +Problem: ":python import vim", ":python vim.current.buffer[0:0] = []" gives + a lalloc(0) error. (Chris Southern) +Solution: Don't allocate an array when it's size is zero. +Files: src/if_python.c + +Patch 6.1.115 +Problem: "das" on the white space at the end of a paragraph does not delete + the "." the sentence ends with. +Solution: Don't exclude the last character when it is not white space. +Files: src/search.c + +Patch 6.1.116 +Problem: When 'endofline' is changed while 'binary' is set a file should be + considered modified. (Olaf Buddenhagen) +Solution: Remember the 'eol' value when editing started and consider the + file changed when the current value is different and 'binary' is + set. Also fix that the window title isn't updated when 'ff' or + 'bin' changes. +Files: src/option.c, src/structs.h + +Patch 6.1.117 +Problem: Small problem with editing a file over ftp: and with Cygwin. +Solution: Remove a dot from a ":normal" command. Use "cygdrive" where + appropriate. (Charles Campbell) +Files: runtime/plugin/netrw.vim + +Patch 6.1.118 +Problem: When a file in diff mode is reloaded because it changed outside + of Vim, other windows in diff mode are not always updated. + (Michael Naumann) +Solution: After reloading a file in diff mode mark all windows in diff mode + for redraw. +Files: src/diff.c + +Patch 6.1.119 (extra) +Problem: With the Sniff interface, using Sniff 4.0.X on HP-UX, there may be + a crash when connecting to Sniff. +Solution: Initialize sniff_rq_sep such that its value can be changed. + (Martin Egloff) +Files: src/if_sniff.c + +Patch 6.1.120 (depends on 6.1.097) +Problem: When 'scrolloff' is non-zero and there are folds, CTRL-F at the + end of the file scrolls part of a closed fold. (Lubomir Host) +Solution: Adjust the first line to the start of a fold. +Files: src/move.c + +Patch 6.1.121 (depends on 6.1.098) +Problem: When starting Select mode from Insert mode, then using the Paste + menu entry, the cursor is left before the last pasted character. + (Mario Schweigler) +Solution: Set the cursor for Insert mode one character to the right. +Files: runtime/menu.vim + +Patch 6.1.122 +Problem: ":file name" creates a new buffer to hold the old buffer name, + which becomes the alternate file. This buffer is unexpectedly + listed. +Solution: Create the buffer for the alternate name unlisted. +Files: src/ex_cmds.c + +Patch 6.1.123 +Problem: A ":match" command with more than one argument doesn't report an + error. +Solution: Check for extra characters. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.124 +Problem: When trying to exit and there is a hidden buffer that had 'eol' + off and 'bin' set exiting isn't possible. (John McGowan) +Solution: Set b_start_eol when clearing the buffer. +Files: src/buffer.c + +Patch 6.1.125 +Problem: Explorer plugin asks for saving a modified buffer even when it's + open in another window as well. +Solution: Count the number of windows using the buffer. +Files: runtime/plugin/explorer.vim + +Patch 6.1.126 +Problem: Adding the choices in the syntax menu is consuming much of the + startup time of the GUI while it's not often used. +Solution: Only add the choices when the user wants to use them. +Files: Makefile, runtime/makemenu.vim, runtime/menu.vim, + runtime/synmenu.vim, src/Makefile + +Patch 6.1.127 +Problem: When using "--remote file" and the server has 'insertmode' set, + commands are inserted instead of being executed. (Niklas Volbers) +Solution: Go to Normal mode again after the ":drop" command. +Files: src/main.c + +Patch 6.1.128 +Problem: The expression "input('very long prompt')" puts the cursor in the + wrong line (column is OK). +Solution: Add the wrapped lines to the indent. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 6.1.129 +Problem: On Solaris editing "file/" and then "file" results in using the + same buffer. (Jim Battle) +Solution: Before using stat(), check that there is no illegal trailing + slash. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/macros.h src/misc2.c, src/proto/misc2.pro + +Patch 6.1.130 +Problem: The documentation for some of the 'errorformat' items is unclear. +Solution: Add more examples and explain hard to understand items. (Stefan + Roemer) +Files: runtime/doc/quickfix.txt + +Patch 6.1.131 +Problem: X11 GUI: when expanding a CSI byte in the input stream to K_CSI, + the CSI byte itself isn't copied. +Solution: Copy the CSI byte. +Files: src/gui_x11.c + +Patch 6.1.132 +Problem: Executing a register in Ex mode may cause commands to be skipped. + (John McGowan) +Solution: In Ex mode use an extra check if the register contents was + consumed, to avoid input goes into the typeahead buffer. +Files: src/ex_docmd.c + +Patch 6.1.133 +Problem: When drawing double-wide characters in the statusline, may clear + half of a character. (Yasuhiro Matsumoto) +Solution: Force redraw of the next character by setting the attributes + instead of putting a NUL in ScreenLines[]. Do put a NUL in + ScreenLines[] when overwriting half of a double-wide character. +Files: src/screen.c + +Patch 6.1.134 +Problem: An error for a trailing argument of ":match" should not be given + after ":if 0". (Servatius Brandt) +Solution: Only do the check when executing commands. +Files: src/ex_docmd.c + +Patch 6.1.135 +Problem: Passing a command to the shell that includes a newline always has + a backslash before the newline. +Solution: Remove one backslash before the newline. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.136 +Problem: When $TERM is "linux" the default for 'background' is "dark", even + though the GUI uses a light background. (Hugh Allen) +Solution: Don't mark the option as set when defaulting to "dark" for the + linux console. Also reset 'background' to "light" when the GUI + has a light background. +Files: src/option.c + +Patch 6.1.137 +Problem: Converting to HTML has a clumsy way of dealing with tabs which may + change the highlighting. +Solution: Replace tabs with spaces after converting a line to HTML. (Preben + Guldberg) +Files: runtime/syntax/2html.vim + +Patch 6.1.138 (depends on 6.1.126) +Problem: Adding extra items to the Syntax menu can't be done when the "Show + individual choices" menu is used. +Solution: Use ":runtime!" instead of ":source", so that all synmenu.vim + files in the runtime path are loaded. (Servatius Brandt) + Also fix that a translated menu can't be removed. +Files: runtime/menu.vim + +Patch 6.1.139 +Problem: Cygwin: PATH_MAX is not defined. +Solution: Include limits.h. (Dan Sharp) +Files: src/main.c + +Patch 6.1.140 +Problem: Cygwin: ":args `ls *.c`" does not work if the shell command + produces CR NL line separators. +Solution: Remove the CR characters ourselves. (Pavol Juhas) +Files: src/os_unix.c + +Patch 6.1.141 +Problem: ":wincmd gx" may cause problems when mixed with other commands. + ":wincmd c" doesn't close the window immediately. (Benji Fisher) +Solution: Pass the extra command character directly instead of using the + stuff buffer and call ex_close() directly. +Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, + src/proto/window.pro, src/window.c + +Patch 6.1.142 +Problem: Defining paragraphs without a separating blank line isn't + possible. Paragraphs can't be formatted automatically. +Solution: Allow defining paragraphs with lines that end in white space. + Added the 'w' and 'a' flags in 'formatoptions'. +Files: runtime/doc/change.txt, src/edit.c, src/misc1.c, src/normal.c, + src/option.h, src/ops.c, src/proto/edit.pro, src/proto/ops.pro, + src/vim.h + +Patch 6.1.143 (depends on 6.1.142) +Problem: Auto formatting near the end of the file moves the cursor to a + wrong position. In Insert mode some lines are made one char too + narrow. When deleting a line undo might not always work properly. +Solution: Don't always move to the end of the line in the last line. Don't + position the cursor past the end of the line in Insert mode. + After deleting a line save the cursor line for undo. +Files: src/edit.c, src/ops.c, src/normal.c + +Patch 6.1.144 +Problem: Obtaining the size of a line in screen characters can be wrong. + A pointer may wrap around zero. +Solution: In win_linetabsize() check for a MAXCOL length argument. (Jim + Dunleavy) +Files: src/charset.c + +Patch 6.1.145 +Problem: GTK: Drag&drop with more than 3 files may cause a crash. (Mickael + Marchand) +Solution: Rewrite the code that parses the received list of files to be more + robust. +Files: src/charset.c, src/gui_gtk_x11.c + +Patch 6.1.146 +Problem: MS-Windows: When $HOME is constructed from $HOMEDRIVE and + $HOMEPATH, it is not used for storing the _viminfo file. (Normal + Diamond) +Solution: Set $HOME with the value obtained from $HOMEDRIVE and $HOMEPATH. +Files: src/misc1.c + +Patch 6.1.147 (extra) +Problem: MS-Windows: When a dialog has no default button, pressing Enter + ends it anyway and all buttons are selected. +Solution: Don't end a dialog when there is no default button. Don't select + all button when there is no default. (Vince Negri) +Files: src/gui_w32.c + +Patch 6.1.148 (extra) +Problem: MS-Windows: ACL is not properly supported. +Solution: Add an access() replacement that also works for ACL. (Mike + Williams) +Files: runtime/doc/editing.txt, src/os_win32.c + +Patch 6.1.149 (extra) +Problem: MS-Windows: Can't use diff mode from the file explorer. +Solution: Add a "diff with Vim" context menu entry. (Dan Sharp) +Files: GvimExt/gvimext.cpp, GvimExt/gvimext.h + +Patch 6.1.150 +Problem: OS/2, MS-Windows and MS-DOS: When 'shellslash' is set getcwd() + still uses backslash. (Yegappan Lakshmanan) +Solution: Adjust slashes in getcwd(). +Files: src/eval.c + +Patch 6.1.151 (extra) +Problem: Win32: The NTFS substream isn't copied. +Solution: Copy the substream when making a backup copy. (Muraoka Taro) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 6.1.152 +Problem: When $LANG is iso8859-1 translated menus are not used. +Solution: Change iso8859 to iso_8859. +Files: runtime/menu.vim + +Patch 6.1.153 +Problem: Searching in included files may search recursively when the path + starts with "../". (Sven Berkvens-Matthijsse) +Solution: Compare full file names, use inode/device when possible. +Files: src/search.c + +Patch 6.1.154 (extra) +Problem: DJGPP: "vim -h" leaves the cursor in a wrong position. +Solution: Don't position the cursor using uninitialized variables. (Jim + Dunleavy) +Files: src/os_msdos.c + +Patch 6.1.155 +Problem: Win32: Cursor may sometimes disappear in Insert mode. +Solution: Change "hor10" in 'guicursor' to "hor15". (Walter Briscoe) +Files: src/option.c + +Patch 6.1.156 +Problem: Conversion between DBCS and UCS-2 isn't implemented cleanly. +Solution: Clean up a few things. +Files: src/mbyte.c, src/structs.h + +Patch 6.1.157 +Problem: 'hlsearch' highlights only the second comma in ",,,,," with + "/,\@<=[^,]*". (Preben Guldberg) +Solution: Also check for an empty match to start just after a previous + match. +Files: src/screen.c + +Patch 6.1.158 +Problem: "zs" and "ze" don't work correctly with ":set nowrap siso=1". + (Preben Guldberg) +Solution: Take 'siso' into account when computing the horizontal scroll + position for "zs" and "ze". +Files: src/normal.c + +Patch 6.1.159 +Problem: When expanding an abbreviation that includes a multibyte + character too many characters are deleted. (Andrey Urazov) +Solution: Delete the abbreviation counting characters instead of bytes. +Files: src/getchar.c + +Patch 6.1.160 +Problem: ":$read file.gz" doesn't work. (Preben Guldberg) +Solution: Don't use the '[ mark after it has become invalid. +Files: runtime/plugin/gzip.vim + +Patch 6.1.161 (depends on 6.1.158) +Problem: Warning for signed/unsigned compare. Can set 'siso' to a negative + value. (Mike Williams) +Solution: Add a typecast. Add a check for 'siso' being negative. +Files: src/normal.c, src/option.c + +Patch 6.1.162 +Problem: Python interface: Didn't initialize threads properly. +Solution: Call PyEval_InitThreads() when starting up. +Files: src/if_python.c + +Patch 6.1.163 +Problem: Win32: Can't compile with Python after 6.1.162. +Solution: Dynamically load PyEval_InitThreads(). (Dan Sharp) +Files: src/if_python.c + +Patch 6.1.164 +Problem: If 'modifiable' is off, converting to xxd fails and 'filetype' is + changed to "xxd" anyway. +Solution: Don't change 'filetype' when conversion failed. +Files: runtime/menu.vim + +Patch 6.1.165 +Problem: Making changes in several lines and then a change in one of these + lines that splits it in two or more lines, undo information was + corrupted. May cause a crash. (Dave Fishburn) +Solution: When skipping to save a line for undo because it was already + saved, move it to become the last saved line, so that when the + command changes the line count other saved lines are not involved. +Files: src/undo.c + +Patch 6.1.166 +Problem: When 'autoindent' is set and mswin.vim has been sourced, pasting + with CTRL-V just after auto-indenting removes the indent. (Shlomi + Fish) +Solution: First insert an "x" and delete it again, so that the auto-indent + remains. +Files: runtime/mswin.vim + +Patch 6.1.167 +Problem: When giving a negative argument to ":retab" strange things start + happening. (Hans Ginzel) +Solution: Check for a negative value. +Files: src/ex_cmds.c + +Patch 6.1.168 +Problem: Pressing CTRL-C at the hit-enter prompt doesn't end the prompt. +Solution: Make CTRL-C stop the hit-enter prompt. +Files: src/message.c + +Patch 6.1.169 +Problem: bufexists() finds a buffer by using the name of a symbolic link to + it, but bufnr() doesn't. (Yegappan Lakshmanan) +Solution: When bufnr() can't find a buffer, try using the same method as + bufexists(). +Files: src/eval.c + +Patch 6.1.170 +Problem: Using ":mksession" uses the default session file name, but "vim + -S" doesn't. (Hans Ginzel) +Solution: Use the default session file name if "-S" is the last command + line argument or another option follows. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.171 +Problem: When opening a line just above a closed fold with "O" and the + comment leader is automatically inserted, the cursor is displayed + in the first column. (Sung-Hyun Nam) +Solution: Update the flag that indicates the cursor is in a closed fold. +Files: src/misc1.c + +Patch 6.1.172 +Problem: Command line completion of ":tag /pat" does not show the same + results as the tags the command actually finds. (Gilles Roy) +Solution: Don't modify the pattern to make it a regexp. +Files: src/ex_getln.c, src/tag.c + +Patch 6.1.173 +Problem: When using remote control to edit a position in a file and this + file is the current buffer and it's modified, the window is split + and the ":drop" command fails. +Solution: Don't split the window, keep editing the same buffer. + Use the ":drop" command in VisVim to avoid the problem there. +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + VisVim/Commands.cpp + +Patch 6.1.174 +Problem: It is difficult to know in a script whether an option not only + exists but really works. +Solution: Add "exists('+option')". +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.1.175 +Problem: When reading commands from a pipe and a CTRL-C is pressed, Vim + will hang. (Piet Delport) +Solution: Don't keep reading characters to clear typeahead when an interrupt + was detected, stop when a single CTRL-C is read. +Files: src/getchar.c, src/ui.c + +Patch 6.1.176 +Problem: When the stack limit is very big a false out-of-stack error may + be detected. +Solution: Add a check for overflow of the stack limit computation. (Jim + Dunleavy) +Files: src/os_unix.c + +Patch 6.1.177 (depends on 6.1.141) +Problem: ":wincmd" does not allow a following command. (Gary Johnson) +Solution: Check for a following " | cmd". Also give an error for trailing + characters. +Files: src/ex_docmd.c + +Patch 6.1.178 +Problem: When 'expandtab' is set "r<C-V><Tab>" still expands the Tab. + (Bruce deVisser) +Solution: Replace with a literal Tab. +Files: src/normal.c + +Patch 6.1.179 (depends on 6.1.091) +Problem: When using X11R5 XIMPreserveState is undefined. (Albert Chin) +Solution: Include the missing definitions. +Files: src/mbyte.c + +Patch 6.1.180 +Problem: Use of the GUI code for forking is inconsistent. +Solution: Define MAY_FORK and use it for later #ifdefs. (Ben Fowlwer) +Files: src/gui.c + +Patch 6.1.181 +Problem: If the terminal doesn't wrap from the last char in a line to the + next line, the last column is blanked out. (Peter Karp) +Solution: Don't output a space to mark the wrap, but the same character + again. +Files: src/screen.c + +Patch 6.1.182 (depends on 6.1.142) +Problem: It is not possible to auto-format comments only. (Moshe Kaminsky) +Solution: When the 'a' and 'c' flags are in 'formatoptions' only auto-format + comments. +Files: runtime/doc/change.txt, src/edit.c + +Patch 6.1.183 +Problem: When 'fencs' is empty and 'enc' is utf-8, reading a file with + illegal bytes gives "CONVERSION ERROR" even though no conversion + is done. 'readonly' is set, even though writing the file results + in an unmodified file. +Solution: For this specific error use "ILLEGAL BYTE" and don't set + 'readonly'. +Files: src/fileio.c + +Patch 6.1.184 (extra) +Problem: The extra mouse buttons found on some mice don't work. +Solution: Support two extra buttons for MS-Windows. (Michael Geddes) +Files: runtime/doc/term.txt, src/edit.c, src/ex_getln.c, src/gui.c, + src/gui_w32.c, src/gui_w48.c, src/keymap.h, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c, src/vim.h + +Patch 6.1.185 (depends on 6.1.182) +Problem: Can't compile without +comments feature. +Solution: Add #ifdef FEAT_COMMENTS. (Christian J. Robinson) +Files: src/edit.c + +Patch 6.1.186 (depends on 6.1.177) +Problem: ":wincmd" does not allow a following comment. (Aric Blumer) +Solution: Check for a following double quote. +Files: src/ex_docmd.c + +Patch 6.1.187 +Problem: Using ":doarg" with 'hidden' set and the current file is the only + argument and was modified gives an error message. (Preben + Guldberg) +Solution: Don't try re-editing the same file. +Files: src/ex_cmds2.c + +Patch 6.1.188 (depends on 6.1.173) +Problem: Unused variable in the small version. +Solution: Move the declaration for "p" inside #ifdef FEAT_LISTCMDS. +Files: src/ex_cmds2.c + +Patch 6.1.189 +Problem: inputdialog() doesn't work when 'c' is in 'guioptions'. (Aric + Blumer) +Solution: Fall back to the input() function in this situation. +Files: src/eval.c + +Patch 6.1.190 (extra) +Problem: VMS: doesn't build with GTK GUI. Various other problems. +Solution: Fix building for GTK. Improved Perl, Python and TCL support. + Improved VMS documentation. (Zoltan Arpadffy) + Added Vimtutor for VMS (T. R. Wyant) +Files: runtime/doc/os_vms.txt, src/INSTALLvms.txt, src/gui_gtk_f.h, + src/if_tcl.c, src/main.c, src/gui_gtk_vms.h, src/Make_vms.mms, + src/os_vms.opt, src/proto/if_tcl.pro, vimtutor.com, + src/testdir/Make_vms.mms + +Patch 6.1.191 +Problem: When using "vim -s script" and redirecting the output, the delay + for the "Output is not to a terminal" warning slows Vim down too + much. +Solution: Don't delay when reading commands from a script. +Files: src/main.c + +Patch 6.1.192 +Problem: ":diffsplit" doesn't add "hor" to 'scrollopt'. (Gary Johnson) +Solution: Add "hor" to 'scrollopt' each time ":diffsplit" is used. +Files: src/diff.c, src/main.c + +Patch 6.1.193 +Problem: Crash in in_id_list() for an item with a "containedin" list. (Dave + Fishburn) +Solution: Check for a negative syntax id, used for keywords. +Files: src/syntax.c + +Patch 6.1.194 +Problem: When "t_ti" is set but it doesn't cause swapping terminal pages, + "ZZ" may cause the shell prompt to appear on top of the file-write + message. +Solution: Scroll the text up in the Vim page before swapping to the terminal + page. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.1.195 +Problem: The quickfix and preview windows always keep their height, while + other windows can't fix their height. +Solution: Add the 'winfixheight' option, so that a fixed height can be + specified for any window. Also fix that the wildmenu may resize a + one-line window to a two-line window if 'ls' is zero. +Files: runtime/doc/options.txt, runtime/optwin.vim, src/ex_cmds.c, + src/ex_getln.c, src/globals.h, src/option.c, src/quickfix.c, + src/screen.c, src/structs.h, src/window.c + +Patch 6.1.196 (depends on 6.1.084) +Problem: On Mac OS X 10.2 generating osdef.h fails. +Solution: Add -no-cpp-precomp to avoid using precompiled header files, which + disables printing the search path. (Ben Fowler) +Files: src/auto/configure, src/configure.in + +Patch 6.1.197 +Problem: ":help <C-V><C-\><C-V><C-N>" (resulting in <1c><0e>) gives an + error message. (Servatius Brandt) +Solution: Double the backslash in "CTRL-\". +Files: src/ex_cmds.c + +Patch 6.1.198 (extra) (depends on 6.1.076) +Problem: Mac OS X: Dialogues don't work. +Solution: Fix a crashing problem for some GUI dialogues. Fix a problem when + saving to a new file from the GUI. (Peter Cucka) +Files: src/feature.h, src/gui_mac.c + +Patch 6.1.199 +Problem: 'guifontwide' doesn't work on Win32. +Solution: Output each wide character separately. (Michael Geddes) +Files: src/gui.c + +Patch 6.1.200 +Problem: ":syn sync fromstart" is not skipped after ":if 0". This can make + syntax highlighting very slow. +Solution: Check "eap->skip" appropriately. (Rob West) +Files: src/syntax.c + +Patch 6.1.201 (depends on 6.1.192) +Problem: Warning for illegal pointer combination. (Zoltan Arpadffy) +Solution: Add a typecast. +Files: src/diff.c + +Patch 6.1.202 (extra)(depends on 6.1.148) +Problem: Win32: filewritable() doesn't work properly on directories. +Solution: fix filewritable(). (Mike Williams) +Files: src/os_win32.c + +Patch 6.1.203 +Problem: ":%s/~//" causes a crash after ":%s/x//". (Gary Holloway) +Solution: Avoid reading past the end of a line when "~" is empty. +Files: src/regexp.c + +Patch 6.1.204 (depends on 6.1.129) +Problem: Warning for an illegal pointer on Solaris. +Solution: Add a typecast. (Derek Wyatt) +Files: src/misc2.c + +Patch 6.1.205 +Problem: The gzip plugin changes the alternate file when editing a + compressed file. (Oliver Fuchs) +Solution: Temporarily remove the 'a' and 'A' flags from 'cpo'. +Files: runtime/plugin/gzip.vim + +Patch 6.1.206 +Problem: The script generated with ":mksession" doesn't work properly when + some commands are mapped. +Solution: Use ":normal!" instead of ":normal". And use ":wincmd" where + possible. (Muraoka Taro) +Files: src/ex_docmd.c, src/fold.c + +Patch 6.1.207 +Problem: Indenting a Java file hangs below a line with a comment after a + command. +Solution: Break out of a loop. (Andre Pang) + Also line up } with matching {. +Files: runtime/indent/java.vim + +Patch 6.1.208 +Problem: Can't use the buffer number from the Python interface. +Solution: Add buffer.number. (Michal Vitecek) +Files: src/if_python.c + +Patch 6.1.209 +Problem: Printing doesn't work on Mac OS classic. +Solution: Use a ":" for path separator when opening the resource file. (Axel + Kielhorn) +Files: src/ex_cmds2.c + +Patch 6.1.210 +Problem: When there is an iconv() conversion error when reading a file + there can be an error the next time iconv() is used. +Solution: Reset the state of the iconv() descriptor. (Yasuhiro Matsumoto) +Files: src/fileio.c + +Patch 6.1.211 +Problem: The message "use ! to override" is confusing. +Solution: Make it "add ! to override". +Files: src/buffer.c, src/eval.c, src/ex_docmd.c, src/fileio.c, + src/globals.h + +Patch 6.1.212 +Problem: When Vim was started with "-R" ":new" creates a buffer + 'noreadonly' while ":enew" has 'readonly' set. (Preben Guldberg) +Solution: Don't set 'readonly' in a new empty buffer for ":enew". +Files: src/ex_docmd.c + +Patch 6.1.213 +Problem: Using CTRL-W H may cause a big gap to appear below the last + window. (Aric Blumer) +Solution: Don't set the window height when there is a vertical split. + (Yasuhiro Matsumoto) +Files: src/window.c + +Patch 6.1.214 +Problem: When installing Vim and the runtime files were checked out from + CVS the CVS directories will also be installed. +Solution: Avoid installing the CVS dirs and their contents. +Files: src/Makefile + +Patch 6.1.215 +Problem: Win32: ":pwd" uses backslashes even when 'shellslash' is set. + (Xiangjiang Ma) +Solution: Adjust backslashes before printing the message. +Files: src/ex_docmd.c + +Patch 6.1.216 +Problem: When dynamically loading the iconv library, the error codes may be + confused. +Solution: Use specific error codes for iconv and redefine them for dynamic + loading. (Yasuhiro Matsumoto) +Files: src/fileio.c, src/mbyte.c, src/vim.h + +Patch 6.1.217 +Problem: When sourcing the same Vim script using a different name (symbolic + link or MS-Windows 8.3 name) it is listed twice with + ":scriptnames". (Tony Mechelynck) +Solution: Turn the script name into a full path before using it. On Unix + compare inode/device numbers. +Files: src/ex_cmds2.c + +Patch 6.1.218 +Problem: No error message for using the function argument "5+". (Servatius + Brandt) +Solution: Give an error message if a function or variable is expected but is + not found. +Files: src/eval.c + +Patch 6.1.219 +Problem: When using ":amenu :b 1<CR>" with a Visual selection and + 'insertmode' is set, Vim does not return to Insert mode. (Mickael + Marchand) +Solution: Add the command CTRL-\ CTRL-G that goes to Insert mode if + 'insertmode' is set and to Normal mode otherwise. Append this to + menus defined with ":amenu". +Files: src/edit.c, src/ex_getln.c, src/normal.c + +Patch 6.1.220 +Problem: When using a BufReadPost autocommand that changes the line count, + e.g., "$-1join", reloading a file that was changed outside Vim + does not work properly. (Alan G Isaac) +Solution: Make the buffer empty before reading the new version of the file. + Save the lines in a dummy buffer, so that they can be put back + when reading the file fails. +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h, + src/proto/buffer.pro + +Patch 6.1.221 +Problem: Changing case may not work properly, depending on the current + locale. +Solution: Add the 'casemap' option to let the user choose how changing case + is to be done. + Also fix lowering case when an UTF-8 character doesn't keep the + same byte length. +Files: runtime/doc/options.txt, src/ascii.h, src/auto/configure, + src/buffer.c, src/charset.c, src/config.h.in, src/configure.in, + src/diff.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/gui_amiga.c + src/gui_mac.c, src/gui_photon.c, src/gui_w48.c, src/gui_beos.cc, + src/macros.h, src/main.c, src/mbyte.c, src/menu.c, src/message.c, + src/misc1.c, src/misc2.c, src/option.c, src/os_msdos.c, + src/os_mswin.c, src/proto/charset.pro, src/regexp.c, src/option.h, + src/syntax.c + +Patch 6.1.222 (depends on 6.1.219) +Problem: Patch 6.1.219 was incomplete. +Solution: Add the changes for ":amenu". +Files: src/menu.c + +Patch 6.1.223 (extra) +Problem: Win32: When IME is activated 'iminsert' is set, but it might never + be reset when IME is disabled. (Muraoka Taro) + All systems: 'iminsert' is set to 2 when leaving Insert mode, even + when langmap is being used. (Peter Valach) +Solution: Don't set "b_p_iminsert" in _OnImeNotify(). (Muraoka Taro) + Don't store the status of the input method in 'iminsert' when + 'iminsert' is one. Also for editing the command line and for + arguments to Normal mode commands. +Files: src/edit.c, src/ex_getln.c, src/gui_w32.c, src/normal.c + +Patch 6.1.224 +Problem: "expand('$VAR')" returns an empty string when the expanded $VAR + is not an existing file. (Aric Blumer) +Solution: Included non-existing files, as documented. +Files: src/eval.c + +Patch 6.1.225 +Problem: Using <C-O><C-^> in Insert mode has a delay when starting "vim -u + NONE" and ":set nocp hidden". (Emmanuel) do_ecmd() uses + fileinfo(), the redraw is done after a delay to give the user time + to read the message. +Solution: Put the message from fileio() in "keep_msg", so that the redraw is + done before the delay (still needed to avoid the mode message + overwrites the fileinfo() message). +Files: src/buffer.c + +Patch 6.1.226 +Problem: Using ":debug" with a ":normal" command may cause a hang. (Colin + Keith) +Solution: Save the typeahead buffer when obtaining a debug command. +Files: src/ex_cmds2.c, src/getchar.c, src/proto/getchar.pro + +Patch 6.1.227 +Problem: It is possible to use a variable name "asdf:asdf" and ":let j:asdf + = 5" does not give an error message. (Mikolaj Machowski) +Solution: Check for a ":" inside the variable name. +Files: src/eval.c + +Patch 6.1.228 (extra) +Problem: Win32: The special output function for Hangul is used too often, + causing special handling for other situations to be skipped. + bInComposition is always FALSE, causing ImeGetTempComposition() + always to return NULL. +Solution: Remove HanExtTextOut(). Delete the dead code around + bInComposition and ImeGetTempComposition(). +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.229 +Problem: Win32: Conversion to/from often used codepages requires the iconv + library, which is not always available. +Solution: Use standard MS-Windows functions for the conversion when + possible. (mostly by Glenn Maynard) + Also fixes missing declaration for patch 6.1.220. +Files: src/fileio.c + +Patch 6.1.230 (extra) +Problem: Win16: building doesn't work. +Solution: Exclude the XBUTTON handling. (Vince Negri) +Files: src/gui_w48.c + +Patch 6.1.231 +Problem: Double clicking with the mouse to select a word does not work for + multibyte characters. +Solution: Use vim_iswordc() instead of vim_isIDc(). This means 'iskeyword' + is used instead of 'isident'. Also fix that mixing ASCII with + multibyte word characters doesn't work, the mouse class for + punctuation and word characters was mixed up. +Files: src/normal.c + +Patch 6.1.232 (depends on 6.1.226) +Problem: Using ex_normal_busy while it might not be available. (Axel + Kielhorn) +Solution: Only use ex_normal_busy when FEAT_EX_EXTRA is defined. +Files: src/ex_cmds2.c + +Patch 6.1.233 +Problem: ":help expr-||" does not work. +Solution: Don't use the '|' as a command separator +Files: src/ex_cmds.c + +Patch 6.1.234 (depends on 6.1.217) +Problem: Get a warning for using a negative value for st_dev. +Solution: Don't assign a negative value to st_dev. +Files: src/ex_cmds2.c + +Patch 6.1.235 (depends on 6.1.223) +Problem: 'iminsert' is changed from 1 to 2 when leaving Insert mode. (Peter + Valach) +Solution: Check "State" before resetting it to NORMAL. +Files: src/edit.c + +Patch 6.1.236 +Problem: Memory leaks when appending lines for ":diffget" or ":diffput" and + when reloading a changed buffer. +Solution: Free a line after calling ml_append(). +Files: src/diff.c, src/fileio.c + +Patch 6.1.237 +Problem: Putting in Visual block mode does not work correctly when "$" was + used or when the first line is short. (Christian Michon) +Solution: First delete the selected text and then put the new text. Save + and restore registers as necessary. +Files: src/globals.h, src/normal.c, src/ops.c, src/proto/ops.pro, + src/vim.h + +Patch 6.1.238 (extra) +Problem: Win32: The "icon=" argument for the ":menu" command does not + search for the bitmap file. +Solution: Expand environment variables and search for the bitmap file. + (Vince Negri) + Make it consistent, use the same mechanism for X11 and GTK. +Files: src/gui.c src/gui_gtk.c, src/gui_w32.c, src/gui_x11.c, + src/proto/gui.pro + +Patch 6.1.239 +Problem: Giving an error for missing :endif or :endwhile when being + interrupted. +Solution: Don't give these messages when interrupted. +Files: src/ex_docmd.c, src/os_unix.c + +Patch 6.1.240 (extra) +Problem: Win32 with BCC 5: CPU may be defined in the environment, which + causes a wrong argument for the compiler. (Walter Briscoe) +Solution: Use CPUNR instead of CPU. +Files: src/Make_bc5.mak + +Patch 6.1.241 +Problem: Something goes wrong when drawing or undrawing the cursor. +Solution: Remember when the cursor invalid in a better way. +Files: src/gui.c + +Patch 6.1.242 +Problem: When pasting a large number of lines on the command line it is not + possible to interrupt. (Jean Jordaan) +Solution: Check for an interrupt after each pasted line. +Files: src/ops.c + +Patch 6.1.243 (extra) +Problem: Win32: When the OLE version is started and wasn't registered, a + message pops up to suggest registering, even when this isn't + possible (when the registry is not writable). +Solution: Check if registering is possible before asking whether it should + be done. (Walter Briscoe) + Also avoid restarting Vim after registering. +Files: src/if_ole.cpp + +Patch 6.1.244 +Problem: Patch 6.1.237 was missing the diff for vim.h. (Igor Goldenberg) +Solution: Include it here. +Files: src/vim.h + +Patch 6.1.245 +Problem: Comparing with ignored case does not work properly for Unicode + with a locale where case folding an ASCII character results in a + multibyte character. (Glenn Maynard) +Solution: Handle ignore-case compare for Unicode differently. +Files: src/mbyte.c + +Patch 6.1.246 +Problem: ":blast" goes to the first buffer if the last one is unlisted. + (Andrew Stryker) +Solution: From the last buffer search backwards for the first listed buffer + instead of forwards. +Files: src/ex_docmd.c + +Patch 6.1.247 +Problem: ACL support doesn't always work properly. +Solution: Add a configure argument to disable ACL "--disable-acl". (Thierry + Vignaud) +Files: src/auto/configure, src/configure.in + +Patch 6.1.248 +Problem: Typing 'q' at the more-prompt for ":let" does not quit the + listing. (Hari Krishna Dara) +Solution: Quit the listing when got_int is set. +Files: src/eval.c + +Patch 6.1.249 +Problem: Can't expand a path on the command line if it includes a "|" as a + trail byte of a multibyte character. +Solution: Check for multibyte characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 6.1.250 +Problem: When changing the value of 'lines' inside the expression set with + 'diffexpr' Vim might crash. (Dave Fishburn) +Solution: Don't allow changing the screen size while updating the screen. +Files: src/globals.h, src/option.c, src/screen.c + +Patch 6.1.251 +Problem: Can't use completion for ":lcd" and ":lchdir" like ":cd". +Solution: Expand directory names for these commands. (Servatius Brandt) +Files: src/ex_docmd.c + +Patch 6.1.252 +Problem: "vi}" does not include a line break when the "}" is at the start + of a following line. (Kamil Burzynski) +Solution: Include the line break. +Files: src/search.c + +Patch 6.1.253 (extra) +Problem: Win32 with Cygwin: Changes the path of arguments in a wrong way. + (Xiangjiang Ma) +Solution: Don't use cygwin_conv_to_posix_path() for the Win32 version. + Update the Cygwin makefile to support more features. (Dan Sharp) +Files: src/Make_cyg.mak, src/if_ole.cpp, src/main.c + +Patch 6.1.254 +Problem: exists("foo{bar}") does not work. ':unlet v{"a"}r' does not work. + ":let v{a}r1 v{a}r2" does not work. ":func F{(1)}" does not work. + ":delfunc F{" does not give an error message. ':delfunc F{"F"}' + does not work. +Solution: Support magic braces for the exists() argument. (Vince Negri) + Check for trailing comments explicitly for ":unlet". Add support + for magic braces in further arguments of ":let". Look for a + parenthesis only after the function name. (Servatius Brandt) + Also expand magic braces for "exists('*expr')". Give an error + message for an invalid ":delfunc" argument. Allow quotes in the + ":delfunc" argument. +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 6.1.255 (depends on 6.1.254) +Problem: Crash when loading menu.vim a second time. (Christian Robinson) + ":unlet garbage foo" tries unletting "foo" after an error message. + (Servatius Brandt) + Very long function arguments cause very long messages when + 'verbose' is 14 or higher. +Solution: Avoid reading from uninitialized memory. + Break out of a loop after an invalid argument for ":unlet". + Truncate long function arguments to 80 characters. +Files: src/eval.c + +Patch 6.1.256 (depends on 6.1.255) +Problem: Defining a function after ":if 0" could still cause an error + message for an existing function. + Leaking memory when there are trailing characters for ":delfunc". +Solution: Check the "skip" flag. Free the memory. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.257 +Problem: ":cwindow" always sets the previous window to the last but one + window. (Benji Fisher) +Solution: Set the previous window properly. +Files: src/globals.c, src/quickfix.c, src/window.c + +Patch 6.1.258 +Problem: Buffers menu doesn't work properly for multibyte buffer names. +Solution: Use a pattern to get the left and right part of the name. + (Yasuhiro Matsumoto) +Files: runtime/menu.vim + +Patch 6.1.259 (extra) +Problem: Mac: with 'patchmode' is used filenames are truncated. +Solution: Increase the BASENAMELEN for Mac OS X. (Ed Ralston) +Files: src/os_mac.h + +Patch 6.1.260 (depends on 6.1.104) +Problem: GCC 3.2 still seems to have an optimizer problem. (Zvi Har'El) +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.261 +Problem: When deleting a line in a buffer which is not the current buffer, + using the Perl interface Delete(), the cursor in the current + window may move. (Chris Houser) +Solution: Don't adjust the cursor position when changing another buffer. +Files: src/if_perl.xs + +Patch 6.1.262 +Problem: When jumping over folds with "z[", "zj" and "zk" the previous + position is not remembered. (Hari Krishna Dara) +Solution: Set the previous context mark before jumping. +Files: src/fold.c + +Patch 6.1.263 +Problem: When typing a multibyte character that triggers an abbreviation + it is not inserted properly. +Solution: Handle adding the typed multibyte character. (Yasuhiro Matsumoto) +Files: src/getchar.c + +Patch 6.1.264 (depends on patch 6.1.254) +Problem: exists() does not work for built-in functions. (Steve Wall) +Solution: Don't check for the function name to start with a capital. +Files: src/eval.c + +Patch 6.1.265 +Problem: libcall() can be used in 'foldexpr' to call any system function. + rename(), delete() and remote_send() can also be used in + 'foldexpr'. These are security problems. (Georgi Guninski) +Solution: Don't allow using libcall(), rename(), delete(), remote_send() and + similar functions in the sandbox. +Files: src/eval.c + +Patch 6.1.266 (depends on 6.1.265) +Problem: Win32: compile error in eval.c. (Bill McCarthy) +Solution: Move a variable declaration. +Files: src/eval.c + +Patch 6.1.267 +Problem: Using "p" to paste into a Visual selected area may cause a crash. +Solution: Allocate enough memory for saving the register contents. (Muraoka + Taro) +Files: src/ops.c + +Patch 6.1.268 +Problem: When triggering an abbreviation with a multibyte character, this + character is not correctly inserted after expanding the + abbreviation. (Taro Muraoka) +Solution: Add ABBR_OFF to all characters above 0xff. +Files: src/edit.c, src/ex_getln.c, src/getchar.c + +Patch 6.1.269 +Problem: After using input() text written with ":redir" gets extra indent. + (David Fishburn) +Solution: Restore msg_col after using input(). +Files: src/ex_getln.c + +Patch 6.1.270 (depends on 6.1.260) +Problem: GCC 3.2.1 still seems to have an optimizer problem. +Solution: Use the same configure check as used for GCC 3.1. +Files: src/auto/configure, src/configure.in + +Patch 6.1.271 +Problem: When compiling without the +syntax feature there are errors. +Solution: Don't use some code for syntax highlighting. (Roger Cornelius) + Make test 45 work without syntax highlighting. + Also fix an error in a pattern matching: "\%(" was not supported. +Files: src/ex_cmds2.c, src/regexp.c, src/testdir/test45.in + +Patch 6.1.272 +Problem: After using ":set define<" a crash may happen. (Christian Robinson) +Solution: Make a copy of the option value in allocated memory. +Files: src/option.c + +Patch 6.1.273 +Problem: When the cursor doesn't blink, redrawing an exposed area may hide + the cursor. +Solution: Always draw the cursor, also when it didn't move. (Muraoka Taro) +Files: src/gui.c + +Patch 6.1.274 (depends on 6.1.210) +Problem: Resetting the iconv() state after each error is wrong for an + incomplete sequence. +Solution: Don't reset the iconv() state. +Files: src/fileio.c + +Patch 6.1.275 +Problem: When using "v" in a startup script, get warning message that + terminal cannot highlight. (Charles Campbell) +Solution: Only give the message after the terminal has been initialized. +Files: src/normal.c + +Patch 6.1.276 +Problem: "gvim --remote file" doesn't prompt for an encryption key. +Solution: The further characters the client sends to the server are used. + Added inputsave() and inputrestore() to allow prompting the + user directly and not using typeahead. + Also fix possible memory leak for ":normal". +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/getchar.c, + src/main.c, src/proto/getchar.pro, src/proto/ui.pro, + src/runtime/doc/eval.txt, src/structs.h, src/ui.c, src/vim.h + +Patch 6.1.277 (depends on 6.1.276) +Problem: Compilation error when building with small features. +Solution: Define trash_input_buf() when needed. (Kelvin Lee) +Files: src/ui.c + +Patch 6.1.278 +Problem: When using signs the line number of a closed fold doesn't line up + with the other line numbers. (Kamil Burzynski) +Solution: Insert two spaces for the sign column. +Files: src/screen.c + +Patch 6.1.279 +Problem: The prototype for smsg() and smsg_attr() do not match the function + definition. This may cause trouble for some compilers. (Nix) +Solution: Use va_list for systems that have stdarg.h. Use "int" instead of + "void" for the return type. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/proto.h, src/message.c + +Patch 6.1.280 +Problem: It's possible to use an argument "firstline" or "lastline" for a + function but using "a:firstline" or "a:lastline" in the function + won't work. (Benji Fisher) +Solution: Give an error message for these arguments. + Also avoid that the following function body causes a whole row of + errors, skip over it after an error in the first line. +Files: src/eval.c + +Patch 6.1.281 +Problem: In Insert mode CTRL-X CTRL-G leaves the cursor after the ruler. +Solution: Set the cursor position before waiting for the argument of CTRL-G. + (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.1.282 +Problem: Elvis uses "se" in a modeline, Vim doesn't recognize this. +Solution: Also accept "se " where "set " is accepted in a modeline. + (Yasuhiro Matsumoto) +Files: src/buffer.c + +Patch 6.1.283 +Problem: For ":sign" the icon file name cannot contain a space. +Solution: Handle backslashes in the file name. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 6.1.284 +Problem: On Solaris there is a warning for "struct utimbuf". +Solution: Move including "utime.h" to outside the function. (Derek Wyatt) +Files: src/fileio.c + +Patch 6.1.285 +Problem: Can't wipe out a buffer with 'bufhide' option. +Solution: Add "wipe" value to 'bufhide'. (Yegappan Lakshmanan) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, + src/quickfix.c + +Patch 6.1.286 +Problem: 'showbreak' cannot contain multibyte characters. +Solution: Allow using all printable characters for 'showbreak'. +Files: src/charset.c, src/move.c, src/option.c + +Patch 6.1.287 (depends on 6.1.285) +Problem: Effect of "delete" and "wipe" in 'bufhide' were mixed up. +Solution: Wipe out when wiping out is asked for. +Files: src/buffer.c + +Patch 6.1.288 +Problem: ":silent function F" hangs. (Hari Krishna Dara) +Solution: Don't use msg_col, it is not incremented when using ":silent". + Also made the function output look a bit better. Don't translate + "function". +Files: src/eval.c + +Patch 6.1.289 (depends on 6.1.278) +Problem: Compiler warning for pointer. (Axel Kielhorn) +Solution: Add a typecast for " ". +Files: src/screen.c + +Patch 6.1.290 (extra) +Problem: Truncating long text for message box may break multibyte + character. +Solution: Adjust to start of multibyte character. (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 6.1.291 (extra) +Problem: Win32: CTRL-@ doesn't work. Don't even get a message for it. +Solution: Recognize the keycode for CTRL-@. (Yasuhiro Matsumoto) +Files: src/gui_w48.c + +Patch 6.1.292 (extra, depends on 6.1.253) +Problem: Win32: Can't compile with new MingW compiler. + Borland 5 makefile doesn't generate pathdef.c. +Solution: Remove -wwide-multiply argument. (Rene de Zwart) + Various fixes for other problems in Win32 makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 6.1.293 +Problem: byte2line() returns a wrong result for some values. +Solution: Change ">=" to ">" in ml_find_line_or_offset(). (Bradford C Smith) + Add one to the line number when at the end of a block. +Files: src/memline.c + +Patch 6.1.294 +Problem: Can't include a multibyte character in a string by its hex value. + (Benji Fisher) +Solution: Add "\u....": a character specified with up to four hex numbers + and stored according to the value of 'encoding'. +Files: src/eval.c + +Patch 6.1.295 (extra) +Problem: Processing the cs.po file generates an error. (Rahul Agrawal) +Solution: Fix the printf format characters in the translation. +Files: src/po/cs.po + +Patch 6.1.296 +Problem: Win32: When cancelling the font dialog 'guifont' remains set to + "*". +Solution: Restore the old value of 'guifont' (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 6.1.297 +Problem: "make test" fails in test6 in an UTF-8 environment. (Benji Fisher) +Solution: Before executing the BufReadPost autocommands save the current + fileencoding, so that the file isn't marked changed. +Files: src/fileio.c + +Patch 6.1.298 +Problem: When using signs and the first line of a closed fold has a sign + it can be redrawn as if the fold was open. (Kamil Burzynski) +Solution: Don't redraw a sign inside a closed fold. +Files: src/screen.c + +Patch 6.1.299 +Problem: ":edit +set\ ro file" doesn't work. +Solution: Halve the number of backslashes in the "+cmd" argument. +Files: src/ex_docmd.c + +Patch 6.1.300 (extra) +Problem: Handling of ETO_IGNORELANGUAGE is confusing. +Solution: Clean up the handling of ETO_IGNORELANGUAGE. (Glenn Maynard) +Files: src/gui_w32.c + +Patch 6.1.301 (extra) +Problem: French translation of file-save dialog doesn't show file name. +Solution: Insert a star in the printf string. (Francois Terrot) +Files: src/po/fr.po + +Patch 6.1.302 +Problem: Counting lines of the Visual area is incorrect for closed folds. + (Mikolaj Machowski) +Solution: Correct the start and end for the closed fold. +Files: src/normal.c + +Patch 6.1.303 (extra) +Problem: The Top/Bottom/All text does not always fit in the ruler when + translated to Japanese. Problem with a character being wider when + in a bold font. +Solution: Use ETO_PDY to specify the width of each character. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.304 (extra, depends on 6.1.292) +Problem: Win32: Postscript is always enabled in the MingW Makefile. + Pathdef.c isn't generated properly with Make_bc5.mak. (Yasuhiro + Matsumoto) +Solution: Change an ifdef to an ifeq. (Madoka Machitani) + Use the Borland make redirection to generate pathdef.c. (Maurice + Barnum) +Files: src/Make_bc5.mak, src/Make_ming.mak + +Patch 6.1.305 +Problem: When 'verbose' is 14 or higher, a function call may cause reading + uninitialized data. (Walter Briscoe) +Solution: Check for end-of-string in trunc_string(). +Files: src/message.c + +Patch 6.1.306 +Problem: The AIX VisualAge cc compiler doesn't define __STDC__. +Solution: Use __EXTENDED__ like __STDC__. (Jess Thrysoee) +Files: src/os_unix.h + +Patch 6.1.307 +Problem: When a double-byte character has an illegal tail byte the display + is messed up. (Yasuhiro Matsumoto) +Solution: Draw "XX" instead of the wrong character. +Files: src/screen.c + +Patch 6.1.308 +Problem: Can't reset the Visual mode returned by visualmode(). +Solution: Use an optional argument to visualmode(). (Charles Campbell) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, + src/structs.h + +Patch 6.1.309 +Problem: The tutor doesn't select German if the locale name is + "German_Germany.1252". (Joachim Hofmann) +Solution: Check for "German" in the locale name. Also check for + ".ge". And include the German and Greek tutors. +Files: runtime/tutor/tutor.de, runtime/tutor/tutor.vim, + runtime/tutor/tutor.gr, runtime/tutor/tutor.gr.cp737 + +Patch 6.1.310 (depends on 6.1.307) +Problem: All double-byte characters are displayed as "XX". +Solution: Use ">= 32" instead of "< 32". (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.1.311 (extra) +Problem: VMS: path in window title doesn't include necessary separator. + file version doesn't always work properly with Unix. + Crashes because of memory overwrite in GUI. + Didn't always handle files with lowercase and correct path. +Solution: Fix the problems. Remove unnecessary file name translations. + (Zoltan Arpadffy) +Files: src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, + src/misc1.c, src/misc2.c, src/os_unix.c, src/os_vms.c, src/tag.c + +Patch 6.1.312 +Problem: When using ":silent" debugging is also done silently. +Solution: Disable silence while at the debug prompt. +Files: src/ex_cmds2.c + +Patch 6.1.313 +Problem: When a ":drop fname" command is used and "fname" is open in + another window, it is also opened in the current window. +Solution: Change to the window with "fname" instead. + Don't redefine the argument list when dropping only one file. +Files: runtime/doc/windows.txt, src/ex_cmds2.c, src/ex_cmds.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro + +Patch 6.1.314 (depends on 6.1.126) +Problem: Missing backslash in "Generic Config file" syntax menu. +Solution: Insert the backslash. (Zak Beck) +Files: runtime/makemenu.vim, runtime/synmenu.vim + +Patch 6.1.315 (extra) +Problem: A very long hostname may lead to an unterminated string. Failing + to obtain a hostname may result in garbage. (Walter Briscoe) +Solution: Add a NUL at the end of the hostname buffer. +Files: src/os_mac.c, src/os_msdos.c, src/os_unix.c, src/os_win16.c, + src/os_win32.c + +Patch 6.1.316 +Problem: When exiting with "wq" and there is a hidden buffer, after the + "file changed" dialog there is a warning for a changed buffer. + (Ajit Thakkar) +Solution: Do update the buffer timestamps when exiting. +Files: src/fileio.c + +Patch 6.1.317 +Problem: Closing a window may cause some of the remaining windows to be + positioned wrong if there is a mix of horizontal and vertical + splits. (Stefan Ingi Valdimarsson) +Solution: Update the frame sizes before updating the window positions. +Files: src/window.c + +Patch 6.1.318 +Problem: auto/pathdef.c can include wrong quotes when a compiler flag + includes quotes. +Solution: Put a backslash before the quotes in compiler flags. (Shinra Aida) +Files: src/Makefile + +Patch 6.1.319 (depends on 6.1.276) +Problem: Using "--remote +cmd file" does not execute "cmd". +Solution: Call inputrestore() in the same command line as inputsave(), + otherwise it will never get executed. +Files: src/main.c + +Patch 6.1.320 (depends on 6.1.313) +Problem: When a ":drop one\ file" command is used the file "one\ file" is + opened, the backslash is not removed. (Taro Muraoka) +Solution: Handle backslashes correctly. Always set the argument list to + keep it simple. +Files: runtime/doc/windows.txt, src/ex_cmds.c + +Patch 6.1.321 +Problem: When 'mouse' includes 'n' but not 'v', don't allow starting Visual + mode with the mouse. +Solution: Don't use MOUSE_MAY_VIS when there is no 'v' in 'mouse'. (Flemming + Madsen) +Files: src/normal.c + +Patch 6.1.322 (extra, depends on 6.1.315) +Problem: Win32: The host name is always "PC " plus the real host name. +Solution: Don't insert "PC " before the host name. +Files: src/os_win32.c + +Patch 6.1.323 +Problem: ":registers" doesn't stop listing for a "q" at the more prompt. + (Hari Krishna Dara) +Solution: Check for interrupt and got_int. +Files: src/ops.c, src/proto/ops.pro + +Patch 6.1.324 +Problem: Crash when dragging a vertical separator when <LeftMouse> is + remapped to jump to another window. +Solution: Pass the window pointer to the function doing the dragging instead + of always using the current window. (Daniel Elstner) + Also fix that starting a drag changes window focus. +Files: src/normal.c, src/proto/window.pro, src/ui.c, src/vim.h, + src/window.c + +Patch 6.1.325 +Problem: Shift-Tab is not automatically recognized in an xterm. +Solution: Add <Esc>[Z as the termcap code. (Andrew Pimlott) +Files: src/term.c + +Patch 6.1.326 +Problem: Using a search pattern may read from uninitialized data (Yasuhiro + Matsumoto) +Solution: Initialize pointers to NULL. +Files: src/regexp.c + +Patch 6.1.327 +Problem: When opening the "mbyte.txt" help file the utf-8 characters are + unreadable, because the fileencoding is forced to be latin1. +Solution: Check for utf-8 encoding first in help files. (Daniel Elstner) +Files: runtime/doc/mbyte.txt, src/fileio.c + +Patch 6.1.328 +Problem: Prototype for enc_canon_search() is missing. +Solution: Add the prototype. (Walter Briscoe) +Files: src/mbyte.c + +Patch 6.1.329 +Problem: When editing a file "a b c" replacing "%" in ":Cmd %" or ":next %" + does not work properly. (Hari Krishna Dara) +Solution: Always escape spaces when expanding "%". Don't split argument for + <f-args> in a user command when only one argument is used. +Files: src/ex_docmd.c + +Patch 6.1.330 +Problem: GTK, Motif and Athena: Keypad keys produce the same code as + non-keypad keys, making it impossible to map them separately. +Solution: Use different termcap codes for the keypad keys. (Neil Bird) +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.331 +Problem: When translating the help files, "LOCAL ADDITIONS" no longer marks + the spot where help files from plugins are to be listed. +Solution: Add a "local-additions" tag and use that to find the right spot. +Files: runtime/doc/help.txt, src/ex_cmds.c + +Patch 6.1.332 (extra) +Problem: Win32: Loading Perl dynamically doesn't work with Perl 5.8. + Perl 5.8 also does not work with Cygwin and Ming. +Solution: Adjust the function calls. (Taro Muraoka) + Adjust the cyg and ming makefiles. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/if_perl.xs + +Patch 6.1.333 (extra) +Problem: Win32: Can't handle Unicode text on the clipboard. + Can't pass NUL byte, it becomes a line break. (Bruce DeVisser) +Solution: Support Unicode for the clipboard (Ron Aaron and Glenn Maynard) + Also support copy/paste of NUL bytes. +Files: src/os_mswin.c, src/os_win16.c src/os_win32.c + +Patch 6.1.334 (extra, depends on 6.1.303) +Problem: Problem with drawing Hebrew characters. +Solution: Only use ETO_PDY for Windows NT and the like. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.335 (extra) +Problem: Failure of obtaining the cursor position and window size is + ignored. +Solution: Remove a semicolon after an "if". (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.1.336 (extra) +Problem: Warning for use of function prototypes of smsg(). +Solution: Define HAVE_STDARG_H. (Walter Briscoe) +Files: src/os_win32.h + +Patch 6.1.337 +Problem: When using "finish" in debug mode in function B() for ":call + A(B())" does not stop after B() is finished. +Solution: Increase debug_level while evaluating a function. +Files: src/ex_docmd.c + +Patch 6.1.338 +Problem: When using a menu that checks out the current file from Insert + mode, there is no warning for the changed file until exiting + Insert mode. (Srikanth Sankaran) +Solution: Add a check for need_check_timestamps in the Insert mode loop. +Files: src/edit.c + +Patch 6.1.339 +Problem: Completion doesn't allow "g:" in ":let g:did_<Tab>". (Benji + Fisher) +Solution: Return "g:var" for global variables when that is what is being + expanded. (Flemming Madsen) +Files: src/eval.c + +Patch 6.1.340 (extra, depends on 6.1.332) +Problem: Win32: Can't compile the Perl interface with nmake. +Solution: Don't compare the version number as a string but as a number. + (Juergen Kraemer) +Files: src/Make_mvc.mak + +Patch 6.1.341 +Problem: In Insert mode with 'rightleft' set the cursor is drawn halfway a + double-wide character. For CTRL-R and CTRL-K in Insert mode the " + or ? is not displayed. +Solution: Draw the cursor in the next character cell. Display the " or ? + over the right half of the double-wide character. (Yasuhiro + Matsumoto) Also fix that cancelling a digraph doesn't redraw + a double-byte character correctly. +Files: src/edit.c, src/gui.c, src/mbyte.c + +Patch 6.1.342 (depends on 6.1.341) +Problem: With 'rightleft' set typing "c" on a double-wide character causes + the cursor to be displayed one cell to the left. +Solution: Draw the cursor in the next character cell. (Yasuhiro Matsumoto) +Files: src/gui.c + +Patch 6.1.343 (depends on 6.1.342) +Problem: Cannot compile with the +multi_byte feature but without +rightleft. + Cannot compile without the GUI. +Solution: Fix the #ifdefs. (partly by Nam SungHyun) +Files: src/gui.c, src/mbyte.c, src/ui.c + +Patch 6.1.344 +Problem: When using ":silent filetype" the output is still put in the + message history. (Hari Krishna Dara) +Solution: Don't add messages in the history when ":silent" is used. +Files: src/message.c + +Patch 6.1.345 (extra) +Problem: Win32: 'imdisable' doesn't work. +Solution: Make 'imdisable' work. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.1.346 +Problem: The scroll wheel can only scroll the current window. +Solution: Make the scroll wheel scroll the window that the mouse points to. + (Daniel Elstner) +Files: src/edit.c, src/gui.c, src/normal.c, src/term.c + +Patch 6.1.347 +Problem: When using cscope to list matching tags, the listed number is + sometimes not equal to what cscope uses. (Vihren Milev) +Solution: For cscope tags use only one table, don't give tags in the current + file a higher priority. +Files: src/tag.c + +Patch 6.1.348 +Problem: Wildmode with wildmenu: ":set wildmode=list,full", ":colorscheme + <tab>" results in "zellner" instead of the first entry. (Anand + Hariharan) +Solution: Don't call ExpandOne() from globpath(). (Flemming Madsen) +Files: src/ex_getln.c + +Patch 6.1.349 +Problem: "vim --serverlist" when no server was ever started gives an error + message without "\n". + "vim --serverlist" doesn't exit when the X server can't be + contacted, it starts Vim unexpectedly. (Ricardo Signes) +Solution: Don't give an error when no Vim server was ever started. + Treat failing of opening the display equal to errors inside the + remote*() functions. (Flemming Madsen) +Files: src/if_xcmdsrv.c, src/main.c + +Patch 6.1.350 +Problem: When entering a buffer with ":bnext" for the first time, using an + autocommand to restore the last used cursor position doesn't work. + (Paolo Giarusso) +Solution: Don't use the last known cursor position of the current Vim + invocation if an autocommand changed the position. +Files: src/buffer.c + +Patch 6.1.351 (depends on 6.1.349) +Problem: Crash when starting Vim the first time in an X server. (John + McGowan) +Solution: Don't call xFree() with a fixed string. +Files: src/if_xcmdsrv.c + +Patch 6.1.352 (extra, depends on 6.1.345) +Problem: Win32: Crash when setting "imdisable" in _vimrc. +Solution: Don't call IME functions when imm32.dll was not loaded (yet). + Also add typecasts to avoid Compiler warnings for + ImmAssociateContext() argument. +Files: src/gui_w32.c + +Patch 6.1.353 (extra, depends on 6.1.334) +Problem: Problem with drawing Arabic characters. +Solution: Don't use ETO_PDY, do use padding. +Files: src/gui_w32.c + +Patch 6.1.354 (extra, depends on 6.1.333) +Problem: MS-Windows 98: Notepad can't paste text copied from Vim when + 'encoding' is "utf-8". +Solution: Also make CF_TEXT available on the clipboard. (Ron Aaron) +Files: src/os_mswin.c + +Patch 6.1.355 +Problem: In a regexp '\n' will never match anything in a string. +Solution: Make '\n' match a newline character. +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/misc1.c, + src/option.c, src/os_mac.c, src/os_unix.c, src/quickfix.c, + src/regexp.c, src/search.c, src/syntax.c, src/tag.c, src/vim.h + +Patch 6.1.356 (extra, depends on, well, eh, several others) +Problem: Compiler warnings for using convert_setup() and a few other + things. +Solution: Add typecasts. +Files: src/mbyte.c, src/os_mswin.c, src/proto/os_win32.pro, src/os_win32.c + +Patch 6.1.357 +Problem: CR in the quickfix window jumps to the error under the cursor, but + this doesn't work in Insert mode. (Srikanth Sankaran) +Solution: Handle CR in Insert mode in the quickfix window. +Files: src/edit.c + +Patch 6.1.358 +Problem: The tutor doesn't select another locale version properly. +Solution: Insert the "let" command. (Yasuhiro Matsumoto) +Files: runtime/tutor/tutor.vim + +Patch 6.1.359 (extra) +Problem: Mac Carbon: Vim doesn't get focus when started from the command + line. Crash when using horizontal scroll bar. +Solution: Set Vim as the frontprocess. Fix scrolling. (Peter Cucka) +Files: src/gui_mac.c + +Patch 6.1.360 (depends on 6.1.341) +Problem: In Insert mode CTRL-K ESC messes up a multibyte character. + (Anders Helmersson) +Solution: Save all bytes of a character when displaying a character + temporarily. +Files: src/edit.c, src/proto/screen.pro, src/screen.c + +Patch 6.1.361 +Problem: Cannot jump to a file mark with ":'M". +Solution: Allow jumping to another file for a mark in an Ex address when it + is the only thing in the command line. +Files: src/ex_docmd.c + +Patch 6.1.362 +Problem: tgetent() may return zero for success. tgetflag() may return -1 + for an error. +Solution: Check tgetflag() for returning a positive value. Add an autoconf + check for the value that tgetent() returns. +Files: src/auto/configure, src/config.h.in, src/configure.in, src/term.c + +Patch 6.1.363 +Problem: byte2line() can return one more than the number of lines. +Solution: Return -1 if the offset is one byte past the end. +Files: src/memline.c + +Patch 6.1.364 +Problem: That the FileChangedShell autocommand event never nests makes it + difficult to reload a file in a normal way. +Solution: Allow nesting for the FileChangedShell event but do not allow + triggering itself again. + Also avoid autocommands for the cmdline window in rare cases. +Files: src/ex_getln.c, src/fileio.c, src/window.c + +Patch 6.1.365 (depends on 6.1.217) +Problem: Setting a breakpoint in a sourced file with a relative path name + doesn't work. (Servatius Brandt) +Solution: Expand the file name to a full path. +Files: src/ex_cmds2.c + +Patch 6.1.366 +Problem: Can't use Vim with Netbeans. +Solution: Add the Netbeans interface. Includes support for sign icons and + "-fg" and "-bg" arguments for GTK. Add the 'autochdir' + option. (Gordon Prieur, George Hernandez, Dave Weatherford) + Make it possible to display both a sign with a text and one with + line highlighting in the same line. + Add support for Agide, interface version 2.1. + Also fix that when 'iskeyword' includes '?' the "*" command + doesn't work properly on a word that includes "?" (Bill McCarthy): + Don't escape "?" to "\?" when searching forward. +Files: runtime/doc/Makefile, runtime/doc/netbeans.txt, + runtime/doc/options.txt, runtime/doc/various.txt, + src/Makefile, src/auto/configure, src/buffer.c, src/config.h.in, + src/config.mk.in, src/configure.in, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, + src/gui.c, src/gui_beval.c, src/gui_gtk_x11.c, src/gui_x11.c, + src/main.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, + src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/proto/buffer.pro, + src/proto/gui_beval.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_x11.pro, src/proto/misc2.pro, + src/proto/netbeans.pro, src/proto/normal.pro, src/proto/ui.pro, + src/proto.h, src/screen.c, src/structs.h, src/ui.c, src/undo.c, + src/vim.h, src/window.c, src/workshop.c + +Patch 6.1.367 (depends on 6.1.365) +Problem: Setting a breakpoint in a function doesn't work. For a sourced + file it doesn't work when symbolic links are involved. (Servatius + Brandt) +Solution: Expand the file name in the same way as do_source() does. Don't + prepend the path to a function name. +Files: src/ex_cmds2.c + +Patch 6.1.368 +Problem: Completion for ":map" does not include <silent> and <script>. + ":mkexrc" do not save the <silent> attribute of mappings. +Solution: Add "<silent>" to the generated map commands when appropriate. + (David Elstner) + Add <silent> and <script> to command line completion. +Files: src/getchar.c + +Patch 6.1.369 (extra) +Problem: VMS: Vim hangs when attempting to edit a read-only file in the + terminal. Problem with VMS filenames for quickfix. +Solution: Rewrite low level input. Remove version number from file name in + a couple more places. Fix crash after patch 6.1.362. Correct + return code for system(). (Zoltan Arpadffy, Tomas Stehlik) +Files: src/misc1.c, src/os_unix.c, src/os_vms.c, src/proto/os_vms.pro, + src/os_vms_conf.h, src/quickfix.c, src/ui.c + +Patch 6.1.370 +Problem: #ifdef nesting is unclear. +Solution: Insert spaces to indicate the nesting. +Files: src/os_unix.c + +Patch 6.1.371 +Problem: "%V" in 'statusline' doesn't show "0-1" in an empty line. +Solution: Add one to the column when comparing with virtual column (Andrew + Pimlott) +Files: src/buffer.c + +Patch 6.1.372 +Problem: With 16 bit ints there are compiler warnings. (Walter Briscoe) +Solution: Change int into long. +Files: src/structs.h, src/syntax.c + +Patch 6.1.373 +Problem: The default page header for printing is not translated. +Solution: Add _() around the two places where "Page" is used. (Mike + Williams) Translate the default value of the 'titleold' and + 'printheader' options. +Files: src/ex_cmds2.c, src/option.c + +Patch 6.1.374 (extra) +Problem: MS-Windows: Cannot build GvimExt with MingW or Cygwin. +Solution: Add makefile and modified resource files. (Rene de Zwart) + Also support Cygwin. (Alejandro Lopez_Valencia) +Files: GvimExt/Make_cyg.mak, GvimExt/Make_ming.mak, GvimExt/Makefile, + GvimExt/gvimext_ming.def, GvimExt/gvimext_ming.rc + +Patch 6.1.375 +Problem: MS-Windows: ':!dir "%"' does not work for a file name with spaces. + (Xiangjiang Ma) +Solution: Don't insert backslashes for spaces in a shell command. +Files: src/ex_docmd.c + +Patch 6.1.376 +Problem: "vim --version" and "vim --help" have a non-zero exit code. + That is unusual. (Petesea) +Solution: Use a zero exit code. +Files: src/main.c + +Patch 6.1.377 +Problem: Can't add words to 'lispwords' option. +Solution: Add P_COMMA and P_NODUP flags. (Haakon Riiser) +Files: src/option.c + +Patch 6.1.378 +Problem: When two buffer-local user commands are ambiguous, a full match + with a global user command isn't found. (Hari Krishna Dara) +Solution: Detect this situation and accept the global command. +Files: src/ex_docmd.c + +Patch 6.1.379 +Problem: Linux with kernel 2.2 can't use the alternate stack in combination + with threading, causes an infinite loop. +Solution: Don't use the alternate stack in this situation. +Files: src/os_unix.c + +Patch 6.1.380 +Problem: When 'winminheight' is zero and the quickfix window is zero lines, + entering the window doesn't make it higher. (Christian J. + Robinson) +Solution: Make sure the current window is at least one line high. +Files: src/window.c + +Patch 6.1.381 +Problem: When a BufWriteCmd is used and it leaves the buffer modified, the + window may still be closed. (Hari Krishna Dara) +Solution: Return FAIL from buf_write() when the buffer is still modified + after a BufWriteCmd autocommand was used. +Files: src/fileio.c + +Patch 6.1.382 (extra) +Problem: Win32 GUI: When using two monitors, the code that checks/fixes the + window size and position (e.g. when a font changes) doesn't work + properly. (George Reilly) +Solution: Handle a double monitor situation. (Helmut Stiegler) +Files: src/gui_w32.c + +Patch 6.1.383 +Problem: The filling of the status line doesn't work properly for + multibyte characters. (Nam SungHyun) + There is no check for going past the end of the buffer. +Solution: Properly distinguish characters and bytes. Properly check for + running out of buffer space. +Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, src/screen.c + +Patch 6.1.384 +Problem: It is not possible to find if a certain patch has been included. + (Lubomir Host) +Solution: Support using has() to check if a patch was included. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/version.pro, + src/version.c + +Patch 6.1.385 (depends on 6.1.383) +Problem: Can't compile without the multibyte feature. +Solution: Move an #ifdef. (Christian J. Robinson) +Files: src/buffer.c + +Patch 6.1.386 +Problem: Get duplicate tags when running ":helptags". +Solution: Do the other half of moving a section to another help file. +Files: runtime/tagsrch.txt + +Patch 6.1.387 (depends on 6.1.373) +Problem: Compiler warning for pointer cast. +Solution: Add (char_u *). +Files: src/option.c + +Patch 6.1.388 (depends on 6.1.384) +Problem: Compiler warning for pointer cast. +Solution: Add (char *). Only include has_patch() when used. +Files: src/eval.c, src/version.c + +Patch 6.1.389 (depends on 6.1.366) +Problem: Balloon evaluation doesn't work for GTK. + has("balloon_eval") doesn't work. +Solution: Add balloon evaluation for GTK. Also improve displaying of signs. + (Daniel Elstner) + Also make ":gui" start the netbeans connection and avoid using + netbeans functions when the connection is not open. +Files: src/Makefile, src/feature.h, src/gui.c, src/gui.h, + src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, + src/gui_gtk_x11.c, src/eval.c, src/memline.c, src/menu.c, + src/netbeans.c, src/proto/gui_beval.pro, src/proto/gui_gtk.pro, + src/structs.h, src/syntax.c, src/ui.c, src/workshop.c + +Patch 6.1.390 (depends on 6.1.389) +Problem: It's not possible to tell Vim to save and exit through the + Netbeans interface. Would still try to send balloon eval text + after the connection is closed. + Can't use Unicode characters for sign text. +Solution: Add functions "saveAndExit" and "getModified". Check for a + working connection before sending a balloonText event. + various other cleanups. + Support any character for sign text. (Daniel Elstner) +Files: runtime/doc/netbeans.txt, runtime/doc/sign.txt, src/ex_cmds.c, + src/netbeans.c, src/screen.c + +Patch 6.1.391 +Problem: ml_get() error when using virtualedit. (Charles Campbell) +Solution: Get a line from a specific window, not the current one. +Files: src/charset.c + +Patch 6.1.392 (depends on 6.1.383) +Problem: Highlighting in the 'statusline' is in the wrong position when an + item is truncated. (Zak Beck) +Solution: Correct the start of 'statusline' items properly for a truncated + item. +Files: src/buffer.c + +Patch 6.1.393 +Problem: When compiled with Python and threads, detaching the terminal may + cause Vim to loop forever. +Solution: Add -pthread to $CFLAGS when using Python and gcc. (Daniel + Elstner) +Files: src/auto/configure,, src/configure.in + +Patch 6.1.394 (depends on 6.1.390) +Problem: The netbeans interface doesn't recognize multibyte glyph names. +Solution: Check the number of cells rather than bytes to decide + whether a glyph name is not a filename. (Daniel Elstner) +Files: src/netbeans.c + +Patch 6.1.395 (extra, depends on 6.1.369) +Problem: VMS: OLD_VMS is never defined. Missing function prototype. +Solution: Define OLD_VMS in Make_vms.mms. Add vms_sys_status() to + os_vms.pro. (Zoltan Arpadffy) +Files: src/Make_vms.mms, src/proto/os_vms.pro + +Patch 6.1.396 (depends on 6.1.330) +Problem: Compiler warnings for using enum. +Solution: Add typecast to char_u. +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 6.1.397 (extra) +Problem: The install program may use a wrong path for the diff command if + there is a space in the install directory path. +Solution: Use double quotes around the path if necessary. (Alejandro + Lopez-Valencia) Also use double quotes around the file name + arguments. +Files: src/dosinst.c + +Patch 6.1.398 +Problem: Saving the typeahead for debug mode causes trouble for a test + script. (Servatius Brandt) +Solution: Add the ":debuggreedy" command to avoid saving the typeahead. +Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/ex_docmd.c, src/proto/ex_cmds2.pro + +Patch 6.1.399 +Problem: Warning for unused variable. +Solution: Remove the variable two_or_more. +Files: src/ex_cmds.c + +Patch 6.1.400 (depends on 6.1.381) +Problem: When a BufWriteCmd wipes out the buffer it may still be accessed. +Solution: Don't try accessing a buffer that has been wiped out. +Files: src/fileio.c + +Patch 6.1.401 (extra) +Problem: Building the Win16 version with Borland 5.01 doesn't work. + "make test" doesn't work with Make_dos.mak. (Walter Briscoe) +Solution: Various fixes to the w16 makefile. (Walter Briscoe) + Don't use deltree. Use "mkdir \tmp" instead of "mkdir /tmp". +Files: src/Make_w16.mak, src/testdir/Make_dos.mak + +Patch 6.1.402 +Problem: When evaluating a function name with curly braces, an error + is not handled consistently. +Solution: Accept the result of a curly braces expression when an + error was encountered. Skip evaluating an expression in curly + braces when skipping. (Servatius Brandt) +Files: src/eval.c + +Patch 6.1.403 (extra) +Problem: MS-Windows 16 bit: compiler warnings. +Solution: Add typecasts. (Walter Briscoe) +Files: src/ex_cmds2.c, src/gui_w48.c, src/os_mswin.c, src/os_win16.c, + src/syntax.c + +Patch 6.1.404 (extra) +Problem: Various small problems. +Solution: Fix comments. Various small additions, changes in indent, removal + of unused items and fixes. +Files: Makefile, README.txt, runtime/menu.vim, runtime/vimrc_example.vim, + src/INSTALL, src/INSTALLole.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Makefile, + src/config.h.in, src/edit.c, src/eval.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/gui.c, src/gui_gtk.c, src/gui_photon.c, src/if_cscope.c, + src/if_python.c, src/keymap.h, src/mark.c, src/mbyte.c, + src/message.c, src/misc1.c, src/misc2.c, src/normal.c, + src/option.c, src/os_os2_cfg.h, src/os_win32.c, + src/proto/getchar.pro, src/proto/message.pro, + src/proto/regexp.pro, src/screen.c, src/structs.h, src/syntax.c, + src/term.c, src/testdir/test15.in, src/testdir/test15.ok, + src/vim.rc, src/xxd/Make_cyg.mak, src/xxd/Makefile + +Patch 6.1.405 +Problem: A few files are missing from the toplevel Makefile. +Solution: Add the missing files. +Files: Makefile + +Patch 6.1.406 (depends on 6.1.392) +Problem: When a statusline item doesn't fit arbitrary text appears. + (Christian J. Robinson) +Solution: When there is just enough room but not for the "<" truncate the + statusline item like there is no room. +Files: src/buffer.c + +Patch 6.1.407 +Problem: ":set scrollbind | help" scrollbinds the help window. (Andrew + Pimlott) +Solution: Reset 'scrollbind' when opening a help window. +Files: src/ex_cmds.c + +Patch 6.1.408 +Problem: When 'rightleft' is set unprintable character 0x0c is displayed as + ">c0<". +Solution: Reverse the text of the hex character. +Files: src/screen.c + +Patch 6.1.409 +Problem: Generating tags for the help doesn't work for some locales. +Solution: Set LANG=C LC_ALL=C in the environment for "sort". (Daniel + Elstner) +Files: runtime/doc/Makefile + +Patch 6.1.410 (depends on 6.1.390) +Problem: Linking error when compiling with Netbeans but without sign icons. + (Malte Neumann) +Solution: Don't define buf_signcount() when sign icons are unavailable. +Files: src/buffer.c + +Patch 6.1.411 +Problem: When 'virtualedit' is set, highlighting a Visual block beyond the + end of a line may be wrong. +Solution: Correct the virtual column when the end of the line is before the + displayed part of the line. (Muraoka Taro) +Files: src/screen.c + +Patch 6.1.412 +Problem: When swapping terminal screens and using ":gui" to start the GUI, + the shell prompt may be after a hit-enter prompt. +Solution: Output a newline in the terminal when starting the GUI and there + was a hit-enter prompt.. +Files: src/gui.c + +Patch 6.1.413 +Problem: When 'clipboard' contains "unnamed", "p" in Visual mode doesn't + work correctly. +Solution: Save the register before overwriting it and put the resulting text + on the clipboard afterwards. (Muraoka Taro) +Files: src/normal.c, src/ops.c + +Patch 6.1.414 (extra, depends on 6.1.369) +Problem: VMS: Vim busy waits when waiting for input. +Solution: Delay for a short while before getting another character. (Zoltan + Arpadffy) +Files: src/os_vms.c + +Patch 6.1.415 +Problem: When there is a vertical split and a quickfix window, reducing the + size of the Vim window may result in a wrong window layout and a + crash. +Solution: When reducing the window size and there is not enough space for + 'winfixheight' set the frame height to the larger height, so that + there is a retry while ignoring 'winfixheight'. (Yasuhiro + Matsumoto) +Files: src/window.c + +Patch 6.1.416 (depends on 6.1.366) +Problem: When using the Netbeans interface, a line with a sign cannot be + changed. +Solution: Respect the GUARDEDOFFSET for sign IDs when checking for a guarded + area. +Files: src/netbeans.c + +Patch 6.1.417 +Problem: Unprintable multibyte characters are not handled correctly. + Multi-byte characters above 0xffff are displayed as another + character. +Solution: Handle unprintable multibyte characters. Display multibyte + characters above 0xffff with a marker. Recognize UTF-16 words and + BOM words as unprintable. (Daniel Elstner) +Files: src/charset.c, src/mbyte.c, src/screen.c + +Patch 6.1.418 +Problem: The result of strftime() is in the current locals. Need to + convert it to 'encoding'. +Solution: Obtain the current locale and convert the argument for strftime() + to it and the result back to 'encoding'. (Daniel Elstner) +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/mbyte.c, + src/proto/mbyte.pro, src/option.c, src/os_mswin.c + +Patch 6.1.419 +Problem: Vim doesn't compile on AIX 5.1. +Solution: Don't define _NO_PROTO on this system. (Uribarri) +Files: src/auto/configure, src/configure.in + +Patch 6.1.420 (extra) +Problem: convert_input() has an unnecessary STRLEN(). + Conversion from UCS-2 to a codepage uses word count instead of + byte count. +Solution: Remove the STRLEN() call. (Daniel Elstner) + Always use byte count for string_convert(). +Files: src/gui_w32.c, src/mbyte.c + +Patch 6.1.421 (extra, depends on 6.1.354) +Problem: MS-Windows 9x: When putting text on the clipboard it can be in + the wrong encoding. +Solution: Convert text to the active codepage for CF_TEXT. (Glenn Maynard) +Files: src/os_mswin.c + +Patch 6.1.422 +Problem: Error in .vimrc doesn't cause hit-enter prompt when swapping + screens. (Neil Bird) +Solution: Set msg_didany also when sending a message to the terminal + directly. +Files: src/message.c + +Patch 6.1.423 +Problem: Can't find arbitrary text in help files. +Solution: Added the ":helpgrep" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/proto/quickfix.pro, src/quickfix.c + +Patch 6.1.424 (extra) +Problem: Win32: gvim compiled with VC++ 7.0 run on Windows 95 does not show + menu items. +Solution: Define $WINVER to avoid an extra item is added to MENUITEMINFO. + (Muraoka Taro) +Files: src/Make_mvc.mak + +Patch 6.1.425 +Problem: ":helptags $VIMRUNTIME/doc" does not add the "help-tags" tag. +Solution: Do add the "help-tags" tag for that specific directory. +Files: src/ex_cmds.c + +Patch 6.1.426 +Problem: "--remote-wait +cmd file" waits forever. (Valery Kondakoff) +Solution: Don't wait for the "+cmd" argument to have been edited. +Files: src/main.c + +Patch 6.1.427 +Problem: Several error messages for regexp patterns are not translated. +Solution: Use _() properly. (Muraoka Taro) +Files: src/regexp.c + +Patch 6.1.428 +Problem: FreeBSD: wait() may hang when compiled with Python support and + doing a system() call in a startup script. +Solution: Use waitpid() instead of wait() and poll every 10 msec, just like + what is done in the GUI. +Files: src/os_unix.c + +Patch 6.1.429 (depends on 6.1.390) +Problem: Crash when using showmarks.vim plugin. (Charles Campbell) +Solution: Check for sign_get_text() returning a NULL pointer. +Files: src/screen.c + +Patch 6.1.430 +Problem: In Lisp code backslashed parens should be ignored for "%". (Dorai) +Solution: Skip over backslashed parens. +Files: src/search.c + +Patch 6.1.431 +Problem: Debug commands end up in redirected text. +Solution: Disable redirection while handling debug commands. +Files: src/ex_cmds2.c + +Patch 6.1.432 (depends on 6.1.375) +Problem: MS-Windows: ":make %:p" inserts extra backslashes. (David Rennalls) +Solution: Don't add backslashes, handle it like ":!cmd". +Files: src/ex_docmd.c + +Patch 6.1.433 +Problem: ":popup" only works for Win32. +Solution: Add ":popup" support for GTK. (Daniel Elstner) +Files: runtime/doc/gui.txt, src/ex_docmd.c, src/gui_gtk.c, src/menu.c, + src/proto/gui_gtk.pro + +Patch 6.1.434 (extra) +Problem: Win32: When there are more than 32767 lines, the scrollbar has a + roundoff error. +Solution: Make a click on an arrow move one line. Also move the code to + gui_w48.c, there is hardly any difference between the 16 bit and + 32 bit versions. (Walter Briscoe) +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.1.435 +Problem: ":winsize x" resizes the Vim window to the minimal size. (Andrew + Pimlott) +Solution: Give an error message for wrong arguments of ":winsize" and + ":winpos". +Files: src/ex_docmd.c + +Patch 6.1.436 +Problem: When a long UTF-8 file contains an illegal byte it's hard to find + out where it is. (Ron Aaron) +Solution: Add the line number to the error message. +Files: src/fileio.c + +Patch 6.1.437 (extra, depends on 6.1.421) +Problem: Using multibyte functions when they are not available. +Solution: Put the clipboard conversion inside an #ifdef. (Vince Negri) + Also fix a pointer type mistake. (Walter Briscoe) +Files: src/os_mswin.c + +Patch 6.1.438 +Problem: When Perl has thread support Vim cannot use the Perl interface. +Solution: Add a configure check and disable Perl when it will not work. + (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.1.439 +Problem: Netbeans: A "create" function doesn't actually create a buffer, + following functions may fail. +Solution: Create a Vim buffer without a name when "create" is called. + (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/netbeans.c + +Patch 6.1.440 +Problem: The "@*" command doesn't obtain the actual contents of the + clipboard. (Hari Krishna Dara) +Solution: Obtain the clipboard text before executing the command. +Files: src/ops.c + +Patch 6.1.441 +Problem: "zj" and "zk" cannot be used as a motion command after an + operator. (Ralf Hetzel) +Solution: Accept these commands as motion commands. +Files: src/normal.c + +Patch 6.1.442 +Problem: Unicode 3.2 defines more space and punctuation characters. +Solution: Add the new characters to the Unicode tables. (Raphael Finkel) +Files: src/mbyte.c + +Patch 6.1.443 (extra) +Problem: Win32: The gvimext.dll build with Borland 5.5 requires another + DLL. +Solution: Build a statically linked version by default. (Dan Sharp) +Files: GvimExt/Make_bc5.mak + +Patch 6.1.444 (extra) +Problem: Win32: Enabling a build with gettext support is not consistent. +Solution: Use "GETTEXT" for Borland and msvc makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_mvc.mak + +Patch 6.1.445 (extra) +Problem: DJGPP: get warning for argument of putenv() +Solution: Define HAVE_PUTENV to use DJGPP's putenv(). (Walter Briscoe) +Files: src/os_msdos.h + +Patch 6.1.446 (extra) +Problem: Win32: The MingW makefile uses a different style of arguments than + other makefiles. + Dynamic IME is not supported for Cygwin. +Solution: Use "no" and "yes" style arguments. Remove the use of the + dyn-ming.h include file. (Dan Sharp) + Do not include the ime.h file and adjust the makefile. (Alejandro + Lopez-Valencia) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/gui_w32.c, + src/if_perl.xs, src/if_python.c, src/if_ruby.c, src/os_win32.c + +Patch 6.1.447 +Problem: "make install" uses "make" directly for generating help tags. +Solution: Use $(MAKE) instead of "make". (Tim Mooney) +Files: src/Makefile + +Patch 6.1.448 +Problem: 'titlestring' has a default maximum width of 50 chars per item. +Solution: Remove the default maximum (also for 'statusline'). +Files: src/buffer.c + +Patch 6.1.449 +Problem: When "1" and "a" are in 'formatoptions', auto-formatting always + moves a newly added character to the next line. (Servatius Brandt) +Solution: Don't move a single character to the next line when it was just + typed. +Files: src/edit.c + +Patch 6.1.450 +Problem: Termcap entry "kB" for back-tab is not recognized. +Solution: Use back-tab as the shift-tab code. +Files: src/keymap.h, src/misc2.c, src/term.c + +Patch 6.1.451 +Problem: GUI: When text in the find dialog contains a slash, a backslash is + inserted the next time it is opened. (Mezz) +Solution: Remove escaped backslashes and question marks. (Daniel Elstner) +Files: src/gui.c + +Patch 6.1.452 (extra, after 6.1.446) +Problem: Win32: IME support doesn't work for MSVC. +Solution: Use _MSC_VER instead of __MSVC. (Alejandro Lopez-Valencia) +Files: src/gui_w32.c + +Patch 6.1.453 (after 6.1.429) +Problem: When compiled without sign icons but with sign support, adding a + sign may cause a crash. +Solution: Check for the text sign to exist before using it. (Kamil + Burzynski) +Files: src/screen.c + +Patch 6.1.454 (extra) +Problem: Win32: pasting Russian text in Vim with 'enc' set to cp1251 + results in utf-8 bytes. (Perelyubskiy) + Conversion from DBCS to UCS2 does not work when 'encoding' is not + the active codepage. +Solution: Introduce enc_codepage and use it for conversion to 'encoding' + (Glenn Maynard) + Use MultiByteToWideChar() and WideCharToMultiByte() instead of + iconv(). Should do most needed conversions without iconv.dll. +Files: src/globals.h, src/gui_w32.c, src/mbyte.c, src/os_mswin.c, + src/proto/mbyte.pro, src/proto/os_mswin.pro, src/structs.h + +Patch 6.1.455 +Problem: Some Unicode characters can be one or two character cells wide. +Solution: Add the 'ambiwidth' option to tell Vim how to display these + characters. (Jungshik Shin) + Also reset the script ID when setting an option to its default + value, so that ":verbose set" won't give wrong info. +Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h + +Patch 6.1.456 (extra, after 6.1.454) +Problem: Win32: IME doesn't work. +Solution: ImmGetCompositionStringW() returns the size in bytes, not words. + (Yasuhiro Matsumoto) Also fix typecast problem. +Files: src/gui_w32.c, src/os_mswin.c + +Patch 6.1.457 +Problem: An empty register in viminfo causes conversion to fail. +Solution: Don't convert an empty string. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c, src/mbyte.c + +Patch 6.1.458 +Problem: Compiler warning for pointer. +Solution: Add a typecast. +Files: src/ex_cmds.c + +Patch 6.1.459 (extra) +Problem: Win32: libcall() may return an invalid pointer and cause Vim to + crash. +Solution: Add a strict check for the returned pointer. (Bruce Mellows) +Files: src/os_mswin.c + +Patch 6.1.460 +Problem: GTK: after scrolling the text one line with a key, clicking the + arrow of the scrollbar does not always work. (Nam SungHyun) +Solution: Always update the scrollbar thumb when the value changed, even + when it would not move, like for RISCOS. (Daniel Elstner) +Files: src/gui.c, src/gui.h + +Patch 6.1.461 +Problem: When a keymap is active, typing a character in Select mode does + not use it. (Benji Fisher) +Solution: Apply Insert mode mapping to the character typed in Select mode. +Files: src/normal.c + +Patch 6.1.462 +Problem: When autocommands wipe out a buffer, a crash may happen. (Hari + Krishna Dara) +Solution: Don't decrement the window count of a buffer before calling the + autocommands for it. When re-using the current buffer, watch out + for autocommands changing the current buffer. +Files: src/buffer.c, src/ex_cmds.c, src/proto/buffer.pro + +Patch 6.1.463 +Problem: When writing a compressed file, the file name that gzip stores in + the file is the weird temporary file name. (David Rennalls) +Solution: Use the real file name when possible. +Files: runtime/plugin/gzip.vim + +Patch 6.1.464 +Problem: Crash when using C++ syntax highlighting. (Gerhard Hochholzer) +Solution: Check for a negative index. +Files: src/syntax.c + +Patch 6.1.465 (after 6.1.454) +Problem: Compile error when using cygwin. +Solution: Change #ifdef WIN32 to #ifdef WIN3264. (Alejandro Lopez-Valencia) + Undefine WIN32 after including windows.h +Files: src/mbyte.c + +Patch 6.1.466 +Problem: The "-f" argument is a bit obscure. +Solution: Add the "--nofork" argument. Improve the help text a bit. +Files: runtime/doc/starting.txt, src/main.c + +Patch 6.1.467 +Problem: Setting the window title doesn't work for Chinese. +Solution: Use an X11 function to convert text to a text property. (Kentaro + Nakazawa) +Files: src/os_unix.c + +Patch 6.1.468 +Problem: ":mksession" also stores folds for buffers which will not be + restored. +Solution: Only store folds for a buffer with 'buftype' empty and help files. +Files: src/ex_docmd.c + +Patch 6.1.469 +Problem: 'listchars' cannot contain multibyte characters. +Solution: Handle multibyte UTF-8 list characters. (Matthew Samsonoff) +Files: src/message.c, src/option.c, src/screen.c + +Patch 6.1.470 (lang) +Problem: Polish messages don't show up correctly on MS-Windows. +Solution: Convert messages to cp1250. (Mikolaj Machowski) + Also add English message translations, because it got in the way + of the patch. +Files: Makefile, src/po/Makefile, src/po/en_gb.po, src/po/pl.po + +Patch 6.1.471 +Problem: ":jumps" output continues after pressing "q" at the more-prompt. + (Hari Krishna Dara) +Solution: Check for "got_int" being set. +Files: src/mark.c + +Patch 6.1.472 +Problem: When there is an authentication error when connecting to the X + server Vim exits. +Solution: Use XSetIOErrorHandler() to catch the error and longjmp() to avoid + the exit. Also do this in the main loop, so that when the X + server exits a Vim running in a console isn't killed. +Files: src/globals.h, src/main.c, src/os_unix.c + +Patch 6.1.473 +Problem: Referring to $curwin or $curbuf in Perl 5.6 causes a crash. +Solution: Add "pTHX_" to cur_val(). (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 6.1.474 +Problem: When opening the command-line window in Ex mode it's impossible to + go back. (Pavol Juhas) +Solution: Reset "exmode_active" and restore it when the command-line window + is closed. +Files: src/ex_getln.c + + +Patch 6.2f.001 +Problem: The configure check for Ruby didn't work properly for Ruby 1.8.0. +Solution: Change the way the Ruby check is done. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2f.002 +Problem: The output of ":ls" doesn't show whether a buffer had read errors. +Solution: Add the "x" flag in the ":ls" output. +Files: runtime/doc/windows.txt, src/buffer.c + +Patch 6.2f.003 +Problem: Test49 doesn't properly test the behavior of ":catch" without an + argument. +Solution: Update test49. (Servatius Brandt) +Files: src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.004 +Problem: "vim --version" always uses CR/LF in the output. +Solution: Omit the CR. +Files: src/message.c, src/os_unix.c + +Patch 6.2f.005 +Problem: Two error messages without a colon after the number. +Solution: Add the colon. (Taro Muraoka) +Files: src/if_cscope.c + +Patch 6.2f.006 +Problem: When saving a file takes a while and Vim regains focus this can + result in a "file changed outside of Vim" warning and ml_get() + errors. (Mike Williams) +Solution: Add the "b_saving" flag to avoid checking the timestamp while the + buffer is being saved. (Michael Schaap) +Files: src/fileio.c, src/structs.h + +Patch 6.2f.007 +Problem: Irix compiler complains about multiple defined symbols. + vsnprintf() is not available. (Charles Campbell) +Solution: Insert EXTERN for variables in globals.h. Change the configure + check for vsnprintf() from compiling to linking. +Files: src/auto/configure, src/configure.in, src/globals.h + +Patch 6.2f.008 +Problem: The Aap recipe doesn't work with Aap 0.149. +Solution: Change targetarg to TARGETARG. Update the mysign file. +Files: src/main.aap, src/mysign + +Patch 6.2f.009 (extra) +Problem: Small problem when building with Borland 5.01. +Solution: Use mkdir() instead of _mkdir(). (Walter Briscoe) +Files: src/dosinst.h + +Patch 6.2f.010 +Problem: Warning for missing prototypes. +Solution: Add missing prototypes. (Walter Briscoe) +Files: src/if_cscope.c + +Patch 6.2f.011 +Problem: The configure script doesn't work with autoconf 2.5x. +Solution: Add square brackets around a header check. (Aron Griffis) + Note: touch src/auto/configure after applying this patch. +Files: src/configure.in + +Patch 6.2f.012 +Problem: ":echoerr" doesn't work correctly inside try/endtry. +Solution: Don't reset did_emsg inside a try/endtry. (Servatius Brandt) +Files: src/eval.c + +Patch 6.2f.013 (extra) +Problem: Macintosh: Compiler warning for a trigraph. +Solution: Insert a backslash before each question mark. (Peter Cucka) +Files: src/os_mac.h + +Patch 6.2f.014 (extra) +Problem: Macintosh: ex_eval is not included in the project file. +Solution: Add ex_eval. (Dany St-Amant) +Files: src/os_mac.pbproj/project.pbxproj + +Patch 6.2f.015 (extra) +Problem: Win32: When changing header files not all source files involved + are recompiled. +Solution: Improve the dependency rules. (Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2f.016 +Problem: "vim --version > ff" on non-Unix systems results in a file with a + missing line break at the end. (Bill McCarthy) +Solution: Add a line break. +Files: src/main.c + +Patch 6.2f.017 +Problem: Unix: starting Vim in the background and then bringing it to the + foreground may cause the terminal settings to be wrong. +Solution: Check for tcsetattr() to return an error, retry when it does. + (Paul Tapper) +Files: src/os_unix.c + +Patch 6.2f.018 +Problem: Mac OS X 10.2: OK is defined to zero in curses.h while Vim uses + one. Redefining it causes a warning message. +Solution: Undefine OK before defining it to one. (Taro Muraoka) +Files: src/vim.h + +Patch 6.2f.019 +Problem: Mac OS X 10.2: COLOR_BLACK and COLOR_WHITE are defined in + curses.h. +Solution: Rename them to PRCOLOR_BLACK and PRCOLOR_WHITE. +Files: src/ex_cmds2.c + +Patch 6.2f.020 +Problem: Win32: test50 produces beeps and fails with some versions of diff. +Solution: Remove empty lines and convert the output to dos fileformat. +Files: src/testdir/test50.in + +Patch 6.2f.021 +Problem: Running configure with "--enable-netbeans" disables Netbeans. + (Gordon Prieur) +Solution: Fix the tests in configure.in where the default is to enable a + feature. Fix that "--enable-acl" reported "yes" confusingly. +Files: src/auto/configure, src/configure.in, src/mysign + +Patch 6.2f.022 +Problem: A bogus value for 'foldmarker' is not rejected, possibly causing a + hang. (Derek Wyatt) +Solution: Check for a non-empty string before and after the comma. +Files: src/option.c + +Patch 6.2f.023 +Problem: When the help files are not in $VIMRUNTIME but 'helpfile' is + correct Vim still can't find the help files. +Solution: Also look for a tags file in the directory of 'helpfile'. +Files: src/tag.c + +Patch 6.2f.024 +Problem: When 'delcombine' is set and a character has more than two + composing characters "x" deletes them all. +Solution: Always delete only the last composing character. +Files: src/misc1.c + +Patch 6.2f.025 +Problem: When reading a file from stdin that has DOS line endings but a + missing end-of-line for the last line 'fileformat' becomes "unix". + (Bill McCarthy) +Solution: Don't add the missing line break when re-reading the text from the + buffer. +Files: src/fileio.c + +Patch 6.2f.026 +Problem: When typing new text at the command line, old composing characters + may be displayed. +Solution: Don't read composing characters from after the end of the + text to be displayed. +Files: src/ex_getln.c, src/mbyte.c, src/message.c, src/proto/mbyte.pro, + src/screen.c + +Patch 6.2f.027 +Problem: Compiler warnings for unsigned char pointers. (Tony Leneis) +Solution: Add typecasts to char pointer. +Files: src/quickfix.c + +Patch 6.2f.028 +Problem: GTK: When 'imactivatekey' is empty and XIM is inactive it can't be + made active again. Cursor isn't updated immediately when changing + XIM activation. Japanese XIM may hang when using 'imactivatekey'. + Can't activate XIM after typing fFtT command or ":sh". +Solution: Properly set the flag that indicates the IM is active. Update the + cursor right away. Do not send a key-release event. Handle + Normal mode and running an external command differently. + (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.029 +Problem: Mixing use of int and enum. +Solution: Adjust argument type of cs_usage_msg(). Fix wrong typedef. +Files: src/if_cscope.c, src/if_cscope.h + +Patch 6.2f.030 (after 6.2f.028) +Problem: Cursor moves up when using XIM. +Solution: Reset im_preedit_cursor. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2f.031 +Problem: Crash when listing a function argument in the debugger. (Ron Aaron) +Solution: Init the name field of an argument to NULL. +Files: src/eval.c + +Patch 6.2f.032 +Problem: When a write fails for a ":silent!" while inside try/endtry the + BufWritePost autocommands are not triggered. +Solution: Check the emsg_silent flag in should_abort(). (Servatius Brandt) +Files: src/ex_eval.c, src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2f.033 +Problem: Cscope: re-entrance problem for ":cscope" command. Checking for + duplicate database didn't work well for Win95. Didn't check for + duplicate databases after an empty entry. +Solution: Don't set postponed_split too early. Remember first empty + database entry. (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2f.034 +Problem: The netbeans interface cannot be used on systems without + vsnprintf(). (Tony Leneis) +Solution: Use EMSG(), EMSGN() and EMSG2() instead. +Files: src/auto/configure, src/configure.in, src/netbeans.c + +Patch 6.2f.035 +Problem: The configure check for the netbeans interface doesn't work if the + socket and nsl libraries are required. +Solution: Check for the socket and nsl libraries before the netbeans check. +Files: src/auto/configure, src/configure.in + +Patch 6.2f.036 +Problem: Moving leftwards over text with an illegal UTF-8 byte moves one + byte instead of one character. +Solution: Ignore an illegal byte after the cursor position. +Files: src/mbyte.c + +Patch 6.2f.037 +Problem: When receiving a Netbeans command at the hit-enter or more prompt + the screen is redrawn but Vim is still waiting at the prompt. +Solution: Quit the prompt like a CTRL-C was typed. +Files: src/netbeans.c + +Patch 6.2f.038 +Problem: The dependency to run autoconf causes a patch for configure.in + to run autoconf, even though the configure script was updated as + well. +Solution: Only run autoconf with "make autoconf". +Files: src/Makefile + +Patch 6.2f.039 +Problem: CTRL-W K makes the new top window very high. +Solution: When 'equalalways' is set equalize the window heights. +Files: src/window.c + + +============================================================================== +VERSION 6.3 *version-6.3* + +This section is about improvements made between version 6.2 and 6.3. + +This is mainly a bug-fix release. There are also a few new features. +The major number of new items is in the runtime files and translations. + + +Changed *changed-6.3* +------- + +The intro message also displays a note about sponsoring Vim, mixed randomly +with the message about helping children in Uganda. + +Included the translated menus, keymaps and tutors with the normal runtime +files. The separate "lang" archive now only contains translated messages. + +Made the translated menu file names a bit more consistent. Use "latin1" for +"iso_8859-1" and "iso_8859-15". + +Removed the "file_select.vim" script from the distribution. It's not more +useful than other scripts that can be downloaded from www.vim.org. + +The "runtime/doc/tags" file is now always in unix fileformat. On MS-Windows +it used to be dos fileformat, but ":helptags" generates a unix format file. + + +Added *added-6.3* +----- + +New commands: + :cNfile go to last error in previous file + :cpfile idem + :changes print the change list + :keepmarks following command keeps marks where they are + :keepjumps following command keeps jumplist and marks + :lockmarks following command keeps marks where they are + :redrawstatus force a redraw of the status line(s) + +New options: + 'antialias' Mac OS X: use smooth, antialiased fonts + 'helplang' preferred help languages + +Syntax files: + Arch inventory (Nikolai Weibull) + Calendar (Nikolai Weibull) + Ch (Wayne Cheng) + Controllable Regex Mutilator (Nikolai Weibull) + D (Jason Mills) + Desktop (Mikolaj Machowski) + Dircolors (Nikolai Weibull) + Elinks configuration (Nikolai Weibull) + FASM (Ron Aaron) + GrADS scripts (Stefan Fronzek) + Icewm menu (James Mahler) + LDIF (Zak Johnson) + Locale input, fdcc. (Dwayne Bailey) + Pinfo config (Nikolai Weibull) + Pyrex (Marco Barisione) + Relax NG Compact (Nikolai Weibull) + Slice (Morel Bodin) + VAX Macro Assembly (Tom Uijldert) + grads (Stefan Fronzek) + libao (Nikolai Weibull) + mplayer (Nikolai Weibull) + rst (Nikolai Weibull) + tcsh (Gautam Iyer) + yaml (Nikolai Weibull) + +Compiler plugins: + ATT dot (Marcos Macedo) + Apple Project Builder (Alexander von Below) + Intel (David Harrison) + bdf (Nikolai Weibull) + icc (Peter Puck) + javac (Doug Kearns) + neato (Marcos Macedo) + onsgmls (Robert B. Rowsome) + perl (Christian J. Robinson) + rst (Nikolai Weibull) + se (SmartEiffel) (Doug Kearns) + tcl (Doug Kearns) + xmlwf (Robert B. Rowsome) + +Filetype plugins: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + Css (Nikolai Weibull) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + +Indent scripts: + Aap (Bram Moolenaar) + Ch (Wayne Cheng) + DocBook (Nikolai Weibull) + MetaPost (Eugene Minkovskii) + Objective-C (Kazunobu Kuriyama) + Pyrex (Marco Barisione) + Rst (Nikolai Weibull) + Tcsh (Gautam Iyer) + XFree86 configuration file (Nikolai Weibull) + Zsh (Nikolai Weibull) + +Keymaps: + Greek for cp1253 (Panagiotis Louridas) + Hungarian (Magyar) (Laszlo Zavaleta) + Persian-Iranian (Behnam Esfahbod) + +Message translations: + Catalan (Ernest Adrogue) + Russian (Vassily Ragosin) + Swedish (Johan Svedberg) + +Menu translations: + Catalan (Ernest Adrogue) + Russian (Tim Alexeevsky) + Swedish (Johan Svedberg) + +Tutor translations: + Catalan (Ernest Adrogue) + Russian in cp1251 (Alexey Froloff) + Slovak in cp1250 and iso8859-2 (Lubos Celko) + Swedish (Johan Svedberg) + Korean (Kee-Won Seo) + UTF-8 version of the Japanese tutor (Yasuhiro Matsumoto) Use this as + the original, create the other Japanese tutor by conversion. + +Included "russian.txt" help file. (Vassily Ragosin) + +Include Encapsulated PostScript and PDF versions of the Vim logo in the extra +archive. + +The help highlighting finds the highlight groups and shows them in the color +that is actually being used. (idea from Yakov Lerner) + +The big Win32 version is now compiled with Ruby interface, version 1.8. For +Python version 2.3 is used. For Perl version 5.8 is used. + +The "ftdetect" directory is mentioned in the documentation. The DOS install +program creates it. + + +Fixed *fixed-6.3* +----- + +Test 42 failed on MS-Windows. Set and reset 'fileformat' and 'binary' options +here and there. (Walter Briscoe) + +The explorer plugin didn't work for double-byte 'encoding's. + +Use "copy /y" in Make_bc5.mak to avoid a prompt for overwriting. + +Patch 6.2.001 +Problem: The ":stopinsert" command doesn't have a help tag. +Solution: Add the tag. (Antoine J. Mechelynck) +Files: runtime/doc/insert.txt, runtime/doc/tags + +Patch 6.2.002 +Problem: When compiled with the +multi_byte feature but without +eval, + displaying UTF-8 characters may cause a crash. (Karsten Hopp) +Solution: Also set the default for 'ambiwidth' when compiled without the + +eval feature. +Files: src/option.c + +Patch 6.2.003 +Problem: GTK 2: double-wide characters below 256 are not displayed + correctly. +Solution: Check the cell width for characters above 127. (Yasuhiro + Matsumoto) +Files: src/gui_gtk_x11.c + +Patch 6.2.004 +Problem: With a line-Visual selection at the end of the file a "p" command + puts the text one line upwards. +Solution: Detect that the last line was deleted and put forward. (Taro + Muraoka) +Files: src/normal.c + +Patch 6.2.005 +Problem: GTK: the "Find" and "Find and Replace" tools don't work. (Aschwin + Marsman) +Solution: Show the dialog after creating it. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.006 +Problem: The Netbeans code contains an obsolete function that uses "vim61" + and sets the fall-back value for $VIMRUNTIME. +Solution: Delete the obsolete function. +Files: src/main.c, src/netbeans.c, src/proto/netbeans.pro + +Patch 6.2.007 +Problem: Listing tags for Cscope doesn't always work. +Solution: Avoid using smgs_attr(). (Sergey Khorev) +Files: src/if_cscope.c + +Patch 6.2.008 +Problem: XIM with GTK 2: After backspacing preedit characters are wrong. +Solution: Reset the cursor position. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 6.2.009 +Problem: Win32: The self-installing executable "Full" selection only + selects some of the items to install. (Salman Mohsin) +Solution: Change commas to spaces in between section numbers. +Files: nsis/gvim.nsi + +Patch 6.2.010 +Problem: When 'virtualedit' is effective and a line starts with a + multibyte character, moving the cursor right doesn't work. +Solution: Obtain the right character to compute the column offset. (Taro + Muraoka) +Files: src/charset.c + +Patch 6.2.011 +Problem: Alpha OSF1: stat() is a macro and doesn't allow an #ifdef halfway. + (Moshe Kaminsky) +Solution: Move the #ifdef outside of stat(). +Files: src/os_unix.c + +Patch 6.2.012 +Problem: May hang when polling for a character. +Solution: Break the wait loop when not waiting for a character. +Files: src/os_unix.c + +Patch 6.2.013 (extra) +Problem: Win32: The registry key for uninstalling GvimExt still uses "6.1". +Solution: Change the version number to "6.2". (Ajit Thakkar) +Files: src/GvimExt/GvimExt.reg + +Patch 6.2.014 (after 6.2.012) +Problem: XSMP doesn't work when using poll(). +Solution: Use xsmp_idx instead of gpm_idx. (Neil Bird) +Files: src/os_unix.c + +Patch 6.2.015 +Problem: The +xsmp feature is never enabled. +Solution: Move the #define for USE_XSMP to below where WANT_X11 is defined. + (Alexey Froloff) +Files: src/feature.h + +Patch 6.2.016 +Problem: Using ":scscope find" with 'cscopequickfix' does not always split + the window. (Gary Johnson) + Win32: ":cscope add" could make the script that contains it + read-only until the corresponding ":cscope kill". + Errors during ":cscope add" may not be handled properly. +Solution: When using the quickfix window may need to split the window. + Avoid file handle inheritance for the script. + Check for a failed connection and/or process. (Sergey Khorev) +Files: src/ex_cmds2.c, src/if_cscope.c + +Patch 6.2.017 +Problem: Test11 sometimes prompts the user, because a file would have been + changed outside of Vim. (Antonio Colombo) +Solution: Add a FileChangedShell autocommand to avoid the prompt. +Files: src/testdir/test11.in + +Patch 6.2.018 +Problem: When using the XSMP protocol and reading from stdin Vim may wait + for a key to be pressed. +Solution: Avoid that RealWaitForChar() is used recursively. +Files: src/os_unix.c + +Patch 6.2.019 (lang) +Problem: Loading the Portuguese menu causes an error message. +Solution: Join two lines. (Jose Pedro Oliveira, Jos茅 de Paula) +Files: runtime/lang/menu_pt_br.vim + +Patch 6.2.020 +Problem: The "Syntax/Set syntax only" menu item causes an error message. + (Oyvind Holm) +Solution: Set the script-local variable in a function. (Benji Fisher) +Files: runtime/synmenu.vim + +Patch 6.2.021 +Problem: The user manual section on exceptions contains small mistakes. +Solution: Give a good example of an error that could be missed and other + improvements. (Servatius Brandt) +Files: runtime/doc/usr_41.txt + +Patch 6.2.022 (extra) +Problem: Win32: After deleting a menu item it still appears in a tear-off + window. +Solution: Set the mode to zero for the deleted item. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.023 (extra) +Problem: Win32: Make_ivc.mak does not clean everything. +Solution: Delete more files in the clean rule. (Walter Briscoe) +Files: src/Make_ivc.mak + +Patch 6.2.024 (extra) +Problem: Win32: Compiler warnings for typecasts. +Solution: Use DWORD instead of WORD. (Walter Briscoe) +Files: src/gui_w32.c + +Patch 6.2.025 +Problem: Missing prototype for sigaltstack(). +Solution: Add the prototype when it is not found in a header file. +Files: src/os_unix.c + +Patch 6.2.026 +Problem: Warning for utimes() argument. +Solution: Add a typecast. +Files: src/fileio.c + +Patch 6.2.027 +Problem: Warning for uninitialized variable. +Solution: Set mb_l to one when not using multibyte characters. +Files: src/message.c + +Patch 6.2.028 +Problem: Cscope connection may kill Vim process and others. +Solution: Check for pid being larger than one. (Khorev Sergey) +Files: src/if_cscope.c + +Patch 6.2.029 +Problem: When using the remote server functionality Vim may leak memory. + (Srikanth Sankaran) +Solution: Free the result of XListProperties(). +Files: src/if_xcmdsrv.c + +Patch 6.2.030 +Problem: Mac: Warning for not being able to use precompiled header files. +Solution: Don't redefine select. Use -no-cpp-precomp for compiling, so that + function prototypes are still found. +Files: src/os_unix.c, src/osdef.sh + +Patch 6.2.031 +Problem: The langmenu entry in the options window doesn't work. (Rodolfo + Lima) + With GTK 1 the ":options" command causes an error message. + (Michael Naumann) +Solution: Change "lmenu" to "langmenu". Only display the 'tbis' option for + GTK 2. +Files: runtime/optwin.vim + +Patch 6.2.032 +Problem: The lpc filetype is never recognized. (Shizhu Pan) +Solution: Check for g:lpc_syntax_for_c instead of the local variable + lpc_syntax_for_c. (Benji Fisher) +Files: runtime/filetype.vim + +Patch 6.2.033 (extra) +Problem: Mac: Various compiler warnings. +Solution: Don't include Classic-only headers in Unix version. + Remove references to several unused variables. (Ben Fowler) + Fix double definition of DEFAULT_TERM. + Use int instead of unsigned short for pixel values, so that the + negative error values are recognized. +Files: src/gui_mac.c, src/term.c + +Patch 6.2.034 +Problem: Mac: Compiler warning for redefining DEFAULT_TERM. +Solution: Fix double definition of DEFAULT_TERM. +Files: src/term.c + +Patch 6.2.035 +Problem: Mac: Compiler warnings in Python interface. +Solution: Make a difference between pure Mac and Unix-Mac. (Peter Cucka) +Files: src/if_python.c + +Patch 6.2.036 (extra) +Problem: Mac Unix version: If foo is a directory, then ":e f<Tab>" should + expand to ":e foo/" instead of ":e foo" . (Vadim Zeitlin) +Solution: Define DONT_ADD_PATHSEP_TO_DIR only for pure Mac. (Benji Fisher) +Files: src/os_mac.h + +Patch 6.2.037 +Problem: Win32: converting an encoding name to a codepage could result in + an arbitrary number. +Solution: make encname2codepage() return zero if the encoding name doesn't + contain a codepage number. +Files: src/mbyte.c + +Patch 6.2.038 (extra) +Problem: Warning messages when using the MingW compiler. (Bill McCarthy) + Can't compile console version without +mouse feature. +Solution: Initialize variables, add parenthesis. + Add an #ifdef around g_nMouseClick. (Ajit Thakkar) +Files: src/eval.c, src/os_win32.c, src/gui_w32.c, src/dosinst.c + +Patch 6.2.039 (extra) +Problem: More warning messages when using the MingW compiler. +Solution: Initialize variables. (Bill McCarthy) +Files: src/os_mswin.c + +Patch 6.2.040 +Problem: FreeBSD: Crash while starting up when compiled with +xsmp feature. +Solution: Pass a non-NULL argument to IceAddConnectionWatch(). +Files: src/os_unix.c + +Patch 6.2.041 (extra, after 6.2.033) +Problem: Mac: Compiler warnings for conversion types, missing prototype, + missing return type. +Solution: Change sscanf "%hd" to "%d", the argument is an int now. Add + gui_mch_init_check() prototype. Add "int" to termlib functions. +Files: src/gui_mac.c, src/proto/gui_mac.pro, src/termlib.c. + +Patch 6.2.042 (extra) +Problem: Cygwin: gcc 3.2 has an optimizer problem, sometimes causing a + crash. +Solution: Add -fno-strength-reduce to the compiler arguments. (Dan Sharp) +Files: src/Make_cyg.mak + +Patch 6.2.043 +Problem: Compiling with both netbeans and workshop doesn't work. +Solution: Move the shellRectangle() function to gui_x11.c. (Gordon Prieur) +Files: src/gui_x11.c, src/integration.c, src/netbeans.c, + src/proto/netbeans.pro + +Patch 6.2.044 +Problem: ":au filetypedetect" gives an error for a non-existing event name, + but it's actually a non-existing group name. (Antoine Mechelynck) +Solution: Make the error message clearer. +Files: src/fileio.c + +Patch 6.2.045 +Problem: Obtaining the '( mark changes the '' mark. (Gary Holloway) +Solution: Don't set the '' mark when searching for the start/end of the + current sentence/paragraph. +Files: src/mark.c + +Patch 6.2.046 +Problem: When evaluating an argument of a function throws an exception the + function is still called. (Hari Krishna Dara) +Solution: Don't call the function when an exception was thrown. +Files: src/eval.c + +Patch 6.2.047 (extra) +Problem: Compiler warnings when using MingW. (Bill McCarthy) +Solution: Give the s_dwLastClickTime variable a type. Initialize dwEndTime. +Files: src/os_win32.c + +Patch 6.2.048 +Problem: The Python interface doesn't compile with Python 2.3 when + dynamically loaded. +Solution: Use dll_PyObject_Malloc and dll_PyObject_Free. (Paul Moore) +Files: src/if_python.c + +Patch 6.2.049 +Problem: Using a "-range=" argument with ":command" doesn't work and + doesn't generate an error message. +Solution: Generate an error message. +Files: src/ex_docmd.c + +Patch 6.2.050 +Problem: Test 32 didn't work on MS-Windows. +Solution: Write the temp file in Unix fileformat. (Walter Briscoe) +Files: src/testdir/test32.in + +Patch 6.2.051 +Problem: When using "\=submatch(0)" in a ":s" command, line breaks become + NUL characters. +Solution: Change NL to CR characters, so that they become line breaks. +Files: src/regexp.c + +Patch 6.2.052 +Problem: A few messages are not translated. +Solution: Add _() to the messages. (Muraoka Taro) +Files: src/ex_cmds.c + +Patch 6.2.053 +Problem: Prototype for bzero() doesn't match most systems. +Solution: Use "void *" instead of "char *" and "size_t" instead of "int". +Files: src/osdef1.h.in + +Patch 6.2.054 +Problem: A double-byte character with a second byte that is a backslash + causes problems inside a string. +Solution: Skip over multibyte characters in a string properly. (Yasuhiro + Matsumoto) +Files: src/eval.c + +Patch 6.2.055 +Problem: Using col('.') from CTRL-O in Insert mode does not return the + correct value for multibyte characters. +Solution: Correct the cursor position when it is necessary, move to the + first byte of a multibyte character. (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 6.2.056 (extra) +Problem: Building with Sniff++ doesn't work. +Solution: Use the multi-threaded libc when needed. (Holger Ditting) +Files: src/Make_mvc.mak + +Patch 6.2.057 (extra) +Problem: Mac: With -DMACOS_X putenv() is defined twice, it is in a system + library. Get a warning for redefining OK. Unused variables in + os_mac.c +Solution: Define HAVE_PUTENV. Undefine OK after including curses.h. + Remove declarations for unused variables. +Files: src/os_mac.c, src/os_mac.h, src/vim.h + +Patch 6.2.058 +Problem: When 'autochdir' is set ":bnext" to a buffer without a name causes + a crash. +Solution: Don't call vim_chdirfile() when the file name is NULL. (Taro + Muraoka) +Files: src/buffer.c + +Patch 6.2.059 +Problem: When 'scrolloff' is a large number and listing completion results + on the command line, then executing a command that jumps close to + where the cursor was before, part of the screen is not updated. + (Yakov Lerner) +Solution: Don't skip redrawing part of the window when it was scrolled. +Files: src/screen.c + +Patch 6.2.060 (extra) +Problem: Win32: When 'encoding' is set to "iso-8859-7" copy/paste to/from + the clipboard gives a lalloc(0) error. (Kriton Kyrimis) +Solution: When the string length is zero allocate one byte. Also fix that + when the length of the Unicode text is zero (conversion from + 'encoding' to UCS-2 was not possible) the normal text is used. +Files: src/os_mswin.c + +Patch 6.2.061 +Problem: GUI: Using the left mouse button with the shift key should work + like "*" but it scrolls instead. (Martin Beller) +Solution: Don't recognize an rxvt scroll wheel event when using the GUI. +Files: src/term.c + +Patch 6.2.062 +Problem: When one buffer uses a syntax with "containedin" and another + buffer does not, redrawing depends on what the current buffer is. + (Brett Pershing Stahlman) +Solution: Use "syn_buf" instead of "curbuf" to get the b_syn_containedin + flag. +Files: src/syntax.c + +Patch 6.2.063 +Problem: When using custom completion end up with no matches. +Solution: Make cmd_numfiles and cmd_files local to completion to avoid that + they are overwritten when ExpandOne() is called recursively by + f_glob(). +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/ex_getln.pro, + src/misc1.c, src/structs.h, src/tag.c + +Patch 6.2.064 +Problem: resolve() only handles one symbolic link, need to repeat it to + resolve all of them. Then need to simplify the file name. +Solution: Make resolve() resolve all symbolic links and simplify the result. + Add simplify() to just simplify a file name. Fix that test49 + doesn't work if /tmp is a symbolic link. (Servatius Brandt) +Files: runtime/doc/eval.txt, src/eval.c, src/tag.c, + src/testdir/test49.vim + +Patch 6.2.065 +Problem: ":windo 123" only updates other windows when entering them. + (Walter Briscoe) +Solution: Update the topline before going to the next window. +Files: src/ex_cmds2.c + +Patch 6.2.066 (extra) +Problem: Ruby interface doesn't work with Ruby 1.8.0. +Solution: Change "defout" to "stdout". (Aron Griffis) + Change dynamic loading. (Taro Muraoka) +Files: src/if_ruby.c, src/Make_mvc.mak + +Patch 6.2.067 +Problem: When searching for a string that starts with a composing character + the command line isn't drawn properly. +Solution: Don't count the space to draw the composing character on and + adjust the cursor column after drawing the string. +Files: src/message.c + +Patch 6.2.068 +Problem: Events for the netbeans interface that include a file name with + special characters don't work properly. +Solution: Use nb_quote() on the file name. (Sergey Khorev) +Files: src/netbeans.c + +Patch 6.2.069 (after 6.2.064) +Problem: Unused variables "limit" and "new_st" and unused label "fail" in + some situation. (Bill McCarthy) +Solution: Put the declarations inside an #ifdef. (Servatius Brandt) +Files: src/eval.c, src/tag.c + +Patch 6.2.070 (after 6.2.069) +Problem: Still unused variable "new_st". (Bill McCarthy) +Solution: Move the declaration to the right block this time. +Files: src/tag.c + +Patch 6.2.071 +Problem: 'statusline' can only contain 50 % items. (Antony Scriven) +Solution: Allow 80 items and mention it in the docs. +Files: runtime/doc/option.txt, src/vim.h + +Patch 6.2.072 +Problem: When using expression folding, foldexpr() mostly returns -1 for + the previous line, which makes it difficult to write a fold + expression. +Solution: Make the level of the previous line available while still looking + for the end of a fold. +Files: src/fold.c + +Patch 6.2.073 +Problem: When adding detection of a specific filetype for a plugin you need + to edit "filetype.vim". +Solution: Source files from the "ftdetect" directory, so that a filetype + detection plugin only needs to be dropped in a directory. +Files: runtime/doc/filetype.txt, runtime/doc/usr_05.txt, + runtime/doc/usr_41.txt, runtime/filetype.vim + +Patch 6.2.074 +Problem: Warnings when compiling the Python interface. (Ajit Thakkar) +Solution: Use ANSI function declarations. +Files: src/if_python.c + +Patch 6.2.075 +Problem: When the temp file for writing viminfo can't be used "NULL" + appears in the error message. (Ben Lavender) +Solution: Print the original file name when there is no temp file name. +Files: src/ex_cmds.c + +Patch 6.2.076 +Problem: The tags listed for cscope are in the wrong order. (Johannes + Stezenbach) +Solution: Remove the reordering of tags for the current file. (Sergey + Khorev) +Files: src/if_cscope.c + +Patch 6.2.077 +Problem: When a user function specifies custom completion, the function + gets a zero argument instead of an empty string when there is no + word before the cursor. (Preben Guldberg) +Solution: Don't convert an empty string to a zero. +Files: src/eval.c + +Patch 6.2.078 +Problem: "make test" doesn't work if Vim wasn't compiled yet. (Ed Avis) +Solution: Build Vim before running the tests. +Files: src/Makefile + +Patch 6.2.079 +Problem: ":w ++enc=utf-8 !cmd" doesn't work. +Solution: Check for the "++" argument before the "!". +Files: src/ex_docmd.c + +Patch 6.2.080 +Problem: When 't_ti' is not empty but doesn't swap screens, using "ZZ" in + an unmodified file doesn't clear the last line. +Solution: Call msg_clr_eos() when needed. (Michael Schroeder) +Files: src/os_unix.c + +Patch 6.2.081 +Problem: Problem when using a long multibyte string for the statusline. +Solution: Use the right pointer to get the cell size. (Taro Muraoka) +Files: src/buffer.c + +Patch 6.2.082 +Problem: Can't compile with Perl 5.8.1. +Solution: Rename "e_number" to "e_number_exp". (Sascha Blank) +Files: src/digraph.c, src/globals.h + +Patch 6.2.083 +Problem: When a compiler uses ^^^^ to mark a word the information is not + visible in the quickfix window. (Srikanth Sankaran) +Solution: Don't remove the indent for a line that is not recognized as an + error message. +Files: src/quickfix.c + +Patch 6.2.084 +Problem: "g_" in Visual mode always goes to the character after the line. + (Jean-Rene David) +Solution: Ignore the NUL at the end of the line. +Files: src/normal.c + +Patch 6.2.085 +Problem: ":verbose set ts" doesn't say an option was set with a "-c" or + "--cmd" argument. +Solution: Remember the option was set from a Vim argument. +Files: src/main.c, src/ex_cmds2.c, src/vim.h + +Patch 6.2.086 +Problem: "{" and "}" stop inside a closed fold. +Solution: Only stop once inside a closed fold. (Stephen Riehm) +Files: src/search.c + +Patch 6.2.087 +Problem: CTRL-^ doesn't use the 'confirm' option. Same problem with + ":bnext". (Yakov Lerner) +Solution: Put up a dialog for a changed file when 'confirm' is set in more + situations. +Files: src/buffer.c, src/ex_cmds.c + +Patch 6.2.088 +Problem: When 'sidescrolloff' is set 'showmatch' doesn't work correctly if + the match is less than 'sidescrolloff' off from the side of the + window. (Roland Stahn) +Solution: Set 'sidescrolloff' to zero while displaying the match. +Files: src/search.c + +Patch 6.2.089 +Problem: ":set isk+=" adds a comma. (Mark Waggoner) +Solution: Don't add a comma when the added value is empty. +Files: src/option.c + +Patch 6.2.090 (extra) +Problem: Win32: MingW compiler complains about #pragmas. (Bill McCarthy) +Solution: Put an #ifdef around the #pragmas. +Files: src/os_win32.c + +Patch 6.2.091 +Problem: When an autocommand is triggered when a file is dropped on Vim and + it produces output, messages from a following command may be + scrolled unexpectedly. (David Rennalls) +Solution: Save and restore msg_scroll in handle_drop(). +Files: src/ex_docmd.c + +Patch 6.2.092 +Problem: Invalid items appear in the help file tags. (Antonio Colombo) +Solution: Only accept tags with white space before the first "*". +Files: runtime/doc/doctags.c, src/ex_cmds.c + +Patch 6.2.093 +Problem: ":nnoremenu" also defines menu for Visual mode. (Klaus Bosau) +Solution: Check the second command character for an "o", not the third. +Files: src/menu.c + +Patch 6.2.094 +Problem: Can't compile with GTK and tiny features. +Solution: Include handle_drop() and vim_chdirfile() when FEAT_DND is defined. + Do not try to split the window. +Files: src/ex_docmd.c, src/misc2.c + +Patch 6.2.095 +Problem: The message "Cannot go to buffer x" is confusing for ":buf 6". + (Frans Englich) +Solution: Make it "Buffer x does not exist". +Files: src/buffer.c + +Patch 6.2.096 +Problem: Win32: ":let @* = ''" put a newline on the clipboard. (Klaus + Bosau) +Solution: Put zero bytes on the clipboard for an empty string. +Files: src/ops.c + +Patch 6.2.097 +Problem: Setting or resetting 'insertmode' in a BufEnter autocommand + doesn't always have immediate effect. (Nagger) +Solution: When 'insertmode' is set, set need_start_insertmode, when it's + reset set stop_insert_mode. +Files: src/option.c + +Patch 6.2.098 (after 6.2.097) +Problem: Can't build Vim with tiny features. (Christian J. Robinson) +Solution: Declare stop_insert_mode always. +Files: src/edit.c, src/globals.h + +Patch 6.2.099 (extra) +Problem: Test 49 fails. (Mikolaj Machowski) +Solution: The Polish translation must not change "E116" to "R116". +Files: src/po/pl.po + +Patch 6.2.100 +Problem: "make proto" fails when compiled with the Perl interface. +Solution: Remove "-fno.*" from PERL_CFLAGS, cproto sees it as its option. +Files: src/auto/configure, src/configure.in + +Patch 6.2.101 +Problem: When using syntax folding, opening a file slows down a lot when + it's size increases by only 20%. (Gary Johnson) +Solution: The array with cached syntax states is leaking entries. After + cleaning up the list obtain the current entry again. +Files: src/syntax.c + +Patch 6.2.102 +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the non-extra files only. +Files: src/ascii.h, src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_getln.c, src/fileio.c, + src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk_x11.c, + src/gui_motif.c, src/macros.h, src/mark.c, src/message.c, + src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, src/os_unix.c, + src/regexp.c, src/search.c, src/ui.c, src/workshop.c + +Patch 6.2.103 (extra) +Problem: The macros equal() and CR conflict with a Carbon header file. +Solution: Rename equal() to equalpos(). Rename CR to CAR. + Do this in the extra files only. +Files: src/gui_photon.c, src/gui_w48.c + +Patch 6.2.104 +Problem: Unmatched braces in the table with options. +Solution: Move the "}," outside of the #ifdef. (Yakov Lerner) +Files: src/option.c + +Patch 6.2.105 +Problem: When the cursor is past the end of the line when calling + get_c_indent() a crash might occur. +Solution: Don't look past the end of the line. (NJ Verenini) +Files: src/misc1.c + +Patch 6.2.106 +Problem: Tag searching gets stuck on a very long line in the tags file. +Solution: When skipping back to search the first matching tag remember the + offset where searching started looking for a line break. +Files: src/tag.c + +Patch 6.2.107 (extra) +Problem: The NetBeans interface cannot be used on Win32. +Solution: Add support for the NetBeans for Win32. Add support for reading + XPM files on Win32. Also fixes that a sign icon with a space in + the file name did not work through the NetBeans interface. + (Sergey Khorev) + Also: avoid repeating error messages when the connection is lost. +Files: Makefile, runtime/doc/netbeans.txt, src/Make_bc5.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/bigvim.bat, src/feature.h, src/gui_beval.c, src/gui_beval.h, + src/gui_w32.c, src/gui_w48.c, src/menu.c, src/nbdebug.c, + src/nbdebug.h, src/netbeans.c, src/os_mswin.c, src/os_win32.h, + src/proto/gui_beval.pro, src/proto/gui_w32.pro, + src/proto/netbeans.pro, src/proto.h, src/version.c, src/vim.h, + src/xpm_w32.c, src/xpm_w32.h + +Patch 6.2.108 +Problem: Crash when giving a message about ignoring case in a tag. (Manfred + Kuehn) +Solution: Use a longer buffer for the message. +Files: src/tag.c + +Patch 6.2.109 +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. that are also useful for other + systems. (Flavio Stanchina) +Files: src/eval.c, src/ops.c + +Patch 6.2.110 +Problem: When $LANG includes the encoding, a menu without an encoding name + is not found. +Solution: Also look for a menu file without any encoding. +Files: runtime/menu.vim + +Patch 6.2.111 +Problem: Encoding "cp1251" is not recognized. +Solution: Add "cp1251" to the table of encodings. (Alexey Froloff) +Files: src/mbyte.c + +Patch 6.2.112 +Problem: After applying patches test32 fails. (Antonio Colombo) +Solution: Have "make clean" in the testdir delete *.rej and *.orig files. + Use this when doing "make clean" in the src directory. +Files: src/Makefile, src/testdir/Makefile + +Patch 6.2.113 +Problem: Using ":startinsert" after "$" works like "a" instead of "i". + (Ajit Thakkar) +Solution: Reset "w_curswant" for ":startinsert" and reset o_eol in edit(). +Files: src/edit.c, src/ex_docmd.c + +Patch 6.2.114 +Problem: When stdout is piped through "tee", the size of the screen may not + be correct. +Solution: Use stdin instead of stdout for ioctl() when stdin is a tty and + stdout isn't. +Files: src/os_unix.c + +Patch 6.2.115 (extra) +Problem: Compiler warnings with various Amiga compilers. +Solution: Add typecast, prototypes, et al. Those changes that are + Amiga-specific. (Flavio Stanchina) +Files: src/fileio.c, src/memfile.c, src/os_amiga.c, src/os_amiga.h, + src/vim.h + +Patch 6.2.116 (extra) +Problem: German keyboard with Numlock set different from system startup + causes problems. +Solution: Ignore keys with code 0xff. (Helmut Stiegler) +Files: src/gui_w48.c + +Patch 6.2.117 +Problem: Breakpoints in loops of sourced files and functions are not + detected. (Hari Krishna Dara) +Solution: Check for breakpoints when using lines that were previously read. + (Servatius Brandt) +Files: src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/proto/eval.pro, + src/proto/ex_cmds2.pro + +Patch 6.2.118 (extra) +Problem: Mac: Compiling is done in a non-standard way. +Solution: Use the Unix method for Mac OS X, with autoconf. Add "CARBONGUI" + to Makefile and configure. (Eric Kow) + Move a few prototypes from os_mac.pro to gui_mac.pro. +Files: src/Makefile, src/auto/configure, src/configure.in, + src/config.mk.in, src/gui_mac.c, src/os_mac.h, src/os_macosx.c, + src/proto/gui_mac.pro, src/proto/os_mac.pro, + src/infplist.xml, src/vim.h + +Patch 6.2.119 (after 6.2.107) +Problem: When packing the MS-Windows archives a few files are missing. + (Guopeng Wen) +Solution: Add gui_beval.* to the list of generic source files. +Files: Makefile + +Patch 6.2.120 +Problem: Win32 GUI: The console dialogs are not supported on MS-Windows, + disabling the 'c' flag of 'guioptions'. (Servatius Brandt) +Solution: Define FEAT_CON_DIALOG also for GUI-only builds. +Files: src/feature.h + +Patch 6.2.121 (after 6.2.118) +Problem: Not all make programs support "+=". (Charles Campbell) +Solution: Use a normal assignment. +Files: src/Makefile + +Patch 6.2.122 (after 6.2.119) +Problem: Not all shells can expand [^~]. File missing. (Guopeng Wen) +Solution: Use a simpler pattern. Add the Aap recipe for the maze program + and a clean version of the source code. +Files: Makefile, runtime/macros/maze/Makefile, + runtime/macros/maze/README.txt, runtime/macros/maze/main.aap, + runtime/macros/maze/mazeclean.c + +Patch 6.2.123 (after 6.2.118) +Problem: Running configure fails. (Tony Leneis) +Solution: Change "==" to "=" for a test. +Files: src/auto/configure, src/configure.in + +Patch 6.2.124 (after 6.2.121)(extra) +Problem: Mac: Recursive use of M4FLAGS causes problems. When running Vim + directly it can't find the runtime files. (Emily Jackson) + Using GNU constructs causes warnings with other make programs. + (Ronald Schild) +Solution: Use another name for the M4FLAGS variable. + Don't remove "Vim.app" from the path. + Update the explanation for compiling on the Mac. (Eric Kow) + Don't use $(shell ) and $(addprefix ). +Files: src/INSTALLmac.txt, src/Makefile, src/misc1.c + +Patch 6.2.125 (after 6.2.107) +Problem: The "winsock2.h" file isn't always available. +Solution: Don't include this header file. +Files: src/netbeans.c + +Patch 6.2.126 +Problem: Typing CTRL-C at a confirm() prompt doesn't throw an exception. +Solution: Reset "mapped_ctrl_c" in get_keystroke(), so that "got_int" is set + in _OnChar(). +Files: src/misc1.c + +Patch 6.2.127 (extra) +Problem: Win32 console: Typing CTRL-C doesn't throw an exception. +Solution: Set got_int immediately when CTRL-C is typed, don't wait for + mch_breakcheck() being called. +Files: src/os_win32.c + +Patch 6.2.128 (after 6.2.118) +Problem: src/auto/configure is not consistent with src/configure.in. +Solution: Use the newly generated configure script. +Files: src/auto/configure + +Patch 6.2.129 +Problem: When 'number' is set 'wrapmargin' does not work Vi-compatible. + (Yasuhiro Matsumoto) +Solution: Reduce the textwidth when 'number' is set. Also for 'foldcolumn' + and similar things. +Files: src/edit.c + +Patch 6.2.130 (extra) +Problem: Win32 console: When 'restorescreen' is not set exiting Vim causes + the screen to be cleared. (Michael A. Mangino) +Solution: Don't clear the screen when exiting and 'restorescreen' isn't set. +Files: src/os_win32.c + +Patch 6.2.131 (extra) +Problem: Win32: Font handles are leaked. +Solution: Free italic, bold and bold-italic handles before overwriting them. + (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.132 (extra) +Problem: Win32: console version doesn't work on latest Windows Server 2003. +Solution: Copy 12000 instead of 15000 cells at a time to avoid running out + of memory. +Files: src/os_win32.c + +Patch 6.2.133 +Problem: When starting the GUI a bogus error message about 'imactivatekey' + may be given. +Solution: Only check the value of 'imactivatekey' when the GUI is running. +Files: src/gui.c, src/option.c + +Patch 6.2.134 (extra) +Problem: Win32: When scrolling parts of the window are redrawn when this + isn't necessary. +Solution: Only invalidate parts of the window when they are obscured by + other windows. (Michael Wookey) +Files: src/gui_w48.c + +Patch 6.2.135 +Problem: An item <> in the ":command" argument is interpreted as <args>. +Solution: Avoid that <> is recognized as <args>. +Files: src/ex_docmd.c + +Patch 6.2.136 +Problem: ":e ++enc=latin1 newfile" doesn't set 'fenc' when the file doesn't + exist. (Miroslaw Dobrzanski-Neumann) +Solution: Set 'fileencoding' to the specified encoding when editing a file + that does not exist. +Files: src/fileio.c + +Patch 6.2.137 +Problem: "d:cmd<CR>" cannot be repeated with ".". Breaks repeating "d%" + when using the matchit plugin. +Solution: Store the command to be repeated. This is restricted to + single-line commands. +Files: src/ex_docmd.c, src/globals.h, src/normal.c, src/vim.h + +Patch 6.2.138 (extra) +Problem: Compilation problem on VMS with dynamic buffer on the stack. +Solution: Read one byte less than the size of the buffer, so that we can + check for the string length without an extra buffer. +Files: src/os_vms.c + +Patch 6.2.139 +Problem: Code is repeated in the two Perl files. +Solution: Move common code from if_perl.xs and if_perlsfio.c to vim.h. + Also fix a problem with generating prototypes. +Files: src/if_perl.xs, src/if_perlsfio.c, src/vim.h + +Patch 6.2.140 (after 6.2.121) +Problem: Mac: Compiling with Python and Perl doesn't work. +Solution: Adjust the configure check for Python to use "-framework Python" + for Python 2.3 on Mac OS/X. + Move "-ldl" after "DynaLoader.a" in the link command. + Change "perllibs" to "PERL_LIBS". +Files: src/auto/configure, src/configure.in, src/config.mk.in + +Patch 6.2.141 (extra) +Problem: Mac: The b_FSSpec field is sometimes unused. +Solution: Change the #ifdef to FEAT_CW_EDITOR and defined it in feature.h +Files: src/fileio.c, src/gui_mac.c, src/structs.h, src/feature.h + +Patch 6.2.142 (after 6.2.124) +Problem: Mac: building without GUI through configure doesn't work. + When the system is slow, unpacking the resource file takes too + long. +Solution: Don't always define FEAT_GUI_MAC when MACOS is defined, define it + in the Makefile. + Add a configure option to skip Darwin detection. + Use a Python script to unpack the resources to avoid a race + condition. (Taro Muraoka) +Files: Makefile, src/Makefile, src/auto/configure, src/configure.in, + src/dehqx.py, src/vim.h + +Patch 6.2.143 +Problem: Using "K" on Visually selected text doesn't work if it ends in + a multibyte character. +Solution: Include all the bytes of the last character. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.144 +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is wrong. +Solution: Add the header after adding HREF for links. + Also use ":normal!" instead of ":normal" to avoid mappings + getting in the way. +Files: runtime/syntax/2html.vim + +Patch 6.2.145 (after 6.2.139) +Problem: Undefining "bool" doesn't work for older systems. (Wojtek Pilorz) +Solution: Only undefine "bool" on Mac OS. +Files: src/vim.h + +Patch 6.2.146 +Problem: On some systems the prototype for iconv() is wrong, causing a + warning message. +Solution: Use a cast (void *) to avoid the warning. (Charles Campbell) +Files: src/fileio.c, src/mbyte.c + +Patch 6.2.147 +Problem: ":s/pat/\=col('.')" always replaces with "1". +Solution: Set the cursor to the start of the match before substituting. + (Helmut Stiegler) +Files: src/ex_cmds.c + +Patch 6.2.148 +Problem: Can't break an Insert into several undoable parts. +Solution: Add the CTRL-G u command. +Files: runtime/doc/insert.txt, src/edit.c + +Patch 6.2.149 +Problem: When the cursor is on a line past 21,474,748 the indicated + percentage of the position is invalid. With that many lines + "100%" causes a negative cursor line number, resulting in a crash. + (Daniel Goujot) +Solution: Divide by 100 instead of multiplying. Avoid overflow when + computing the line number for "100%". +Files: src/buffer.c, src/ex_cmds2.c, src/normal.c + +Patch 6.2.150 +Problem: When doing "vim - < file" lines are broken at NUL chars. + (Daniel Goujot) +Solution: Change NL characters back to NUL when reading from the temp + buffer. +Files: src/fileio.c + +Patch 6.2.151 +Problem: When doing "vim --remote +startinsert file" some commands are + inserted as text. (Klaus Bosau) +Solution: Put all the init commands in one Ex line, not using a <CR>, so + that Insert mode isn't started too early. +Files: src/main.c + +Patch 6.2.152 +Problem: The cursor() function doesn't reset the column offset for + 'virtualedit'. +Solution: Reset the offset to zero. (Helmut Stiegler) +Files: src/eval.c + +Patch 6.2.153 +Problem: Win32: ":lang german" doesn't use German messages. +Solution: Add a table to translate the Win32 language names to two-letter + language codes. +Files: src/ex_cmds2.c + +Patch 6.2.154 +Problem: Python bails out when giving a warning message. (Eugene + Minkovskii) +Solution: Set sys.argv[] to an empty string. +Files: src/if_python.c + +Patch 6.2.155 +Problem: Win32: Using ":tjump www" in a help file gives two results. + (Dave Roberts) +Solution: Ignore differences between slashes and backslashes when checking + for identical tag matches. +Files: src/tag.c + +Patch 6.2.156 (after 6.2.125) +Problem: Win32: Netbeans fails to build, EINTR is not defined. +Solution: Redefine EINTR to WSAEINTR. (Mike Williams) +Files: src/netbeans.c + +Patch 6.2.157 +Problem: Using "%p" in 'errorformat' gives a column number that is too + high. +Solution: Set the flag to use the number as a virtual column. (Lefteris + Koutsoloukas) +Files: src/quickfix.c + +Patch 6.2.158 +Problem: The sed command on Solaris and HPUX doesn't work for a line that + doesn't end in a newline. +Solution: Add a newline when feeding text to sed. (Mark Waggoner) +Files: src/configure.in, src/auto/configure + +Patch 6.2.159 +Problem: When using expression folding and 'foldopen' is "undo" an undo + command doesn't always open the fold. +Solution: Save and restore the KeyTyped variable when evaluating 'foldexpr'. + (Taro Muraoka) +Files: src/fold.c + +Patch 6.2.160 +Problem: When 'virtualedit' is "all" and 'selection' is "exclusive", + selecting a double-width character below a single-width character + may cause a crash. +Solution: Avoid overflow on unsigned integer decrement. (Taro Muraoka) +Files: src/normal.c + +Patch 6.2.161 (extra) +Problem: VMS: Missing header file. Reading input busy loops. +Solution: Include termdef.h. Avoid the use of a wait function in + vms_read(). (Frank Ries) +Files: src/os_unix.h, src/os_vms.c + +Patch 6.2.162 +Problem: ":redraw" doesn't always display the text that includes the cursor + position, e.g. after ":call cursor(1, 0)". (Eugene Minkovskii) +Solution: Call update_topline() before redrawing. +Files: src/ex_docmd.c + +Patch 6.2.163 +Problem: "make install" may also copy AAPDIR directories. +Solution: Delete AAPDIR directories, just like CVS directories. +Files: src/Makefile + +Patch 6.2.164 (after 6.2.144) +Problem: When "g:html_use_css" is set the HTML header generated by the + 2html script is still wrong. +Solution: Search for a string instead of jumping to a fixed line number. + Go to the start of the line before inserting the header. + (Jess Thrysoee) +Files: runtime/syntax/2html.vim + +Patch 6.2.165 +Problem: The configure checks hang when using autoconf 2.57. +Solution: Invoke AC_PROGRAM_EGREP to set $EGREP. (Aron Griffis) +Files: src/auto/configure, src/configure.in + +Patch 6.2.166 +Problem: When $GZIP contains "-N" editing compressed files doesn't work + properly. +Solution: Add "-n" to "gzip -d" to avoid restoring the file name. (Oyvind + Holm) +Files: runtime/plugin/gzip.vim + +Patch 6.2.167 +Problem: The Python interface leaks memory when assigning lines to a + buffer. (Sergey Khorev) +Solution: Do not copy the line when calling ml_replace(). +Files: src/if_python.c + +Patch 6.2.168 +Problem: Python interface: There is no way to get the indices from a range + object. +Solution: Add the "start" and "end" attributes. (Maurice S. Barnum) +Files: src/if_python.c, runtime/doc/if_pyth.txt + +Patch 6.2.169 +Problem: The prototype for _Xmblen() appears in a recent XFree86 header + file, causing a warning for our prototype. (Hisashi T Fujinaka) +Solution: Move the prototype to an osdef file, so that it's filtered out. +Files: src/mbyte.c, src/osdef2.h.in + +Patch 6.2.170 +Problem: When using Sun WorkShop the current directory isn't changed to + where the file is. +Solution: Set the 'autochdir' option when using WorkShop. And avoid using + the basename when 'autochdir' is not set. +Files: src/gui_x11.c, src/ex_cmds.c + +Patch 6.2.171 (after 6.2.163) +Problem: The "-or" argument of "find" doesn't work for SysV systems. +Solution: Use "-o" instead. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.172 (after 6.2.169) +Problem: The prototype for _Xmblen() still causes trouble. +Solution: Include the X11 header file that defines the prototype. +Files: src/osdef2.h.in, src/osdef.sh + +Patch 6.2.173 (extra) +Problem: Win32: Ruby interface doesn't work with Ruby 1.8.0 for other + compilers than MSVC. +Solution: Fix the BC5, Cygwin and Mingw makefiles. (Dan Sharp) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak + +Patch 6.2.174 +Problem: After the ":intro" message only a mouse click in the last line + gets past the hit-return prompt. +Solution: Accept a click at or below the hit-return prompt. +Files: src/gui.c, src/message.c + +Patch 6.2.175 +Problem: Changing 'backupext' in a *WritePre autocommand doesn't work. + (William Natter) +Solution: Move the use of p_bex to after executing the *WritePre + autocommands. Also avoids reading allocated memory after freeing. +Files: src/fileio.c + +Patch 6.2.176 +Problem: Accented characters in translated help files are not handled + correctly. (Fabien Vayssiere) +Solution: Include "192-255" in 'iskeyword' for the help window. +Files: src/ex_cmds.c + +Patch 6.2.177 (extra) +Problem: VisVim: Opening a file with a space in the name doesn't work. (Rob + Retter) Arbitrary commands are being executed. (Neil Bird) +Solution: Put a backslash in front of every space in the file name. + (Gerard Blais) Terminate the CTRL-\ CTRL-N command with a NUL. +Files: src/VisVim/Commands.cpp, src/VisVim/VisVim.rc + +Patch 6.2.178 +Problem: People who don't know how to exit Vim try pressing CTRL-C. +Solution: Give a message how to exit Vim when CTRL-C is pressed and it + doesn't cancel anything. +Files: src/normal.c + +Patch 6.2.179 (extra) +Problem: The en_gb messages file isn't found on case sensitive systems. +Solution: Rename en_gb to en_GB. (Mike Williams) +Files: src/po/en_gb.po, src/po/en_GB.po, src/po/Make_ming.mak, + src/po/Make_mvc.mak, src/po/Makefile, src/po/README_mvc.txt + +Patch 6.2.180 +Problem: Compiling with GTK2 on Win32 doesn't work. +Solution: Include gdkwin32.h instead of gdkx.h. (Srinath Avadhanula) +Files: src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/mbyte.c + +Patch 6.2.181 (after 6.2.171) +Problem: The "-o" argument of "find" has lower priority than the implied + "and" with "-print". +Solution: Add parenthesis around the "-o" expression. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.182 (after 6.2.094) +Problem: Compilation with tiny features fails because of missing + get_past_head() function. +Solution: Adjust the #ifdef for get_past_head(). +Files: src/misc1.c + +Patch 6.2.183 (after 6.2.178) +Problem: Warning for char/unsigned char mixup. +Solution: Use MSG() instead of msg(). (Tony Leneis) +Files: src/normal.c + +Patch 6.2.184 +Problem: With 'formatoptions' set to "1aw" inserting text may cause the + paragraph to be ended. (Alan Schmitt) +Solution: Temporarily add an extra space to make the paragraph continue + after moving the word after the cursor to the next line. + Also format when pressing Esc. +Files: src/edit.c, src/normal.c, src/proto/edit.pro + +Patch 6.2.185 +Problem: Restoring a session with zero-height windows does not work + properly. (Charles Campbell) +Solution: Accept a zero argument to ":resize" as intended. Add a window + number argument to ":resize" to be able to set the size of other + windows, because the current window cannot be zero-height. + Fix the explorer plugin to avoid changing the window sizes. Add + the winrestcmd() function for this. +Files: runtime/doc/eval.txt, runtime/plugin/explorer.vim, src/eval.c, + src/ex_cmds.h, src/ex_docmd.c, src/proto/window.pro, src/window.c + +Patch 6.2.186 (after 6.2.185) +Problem: Documentation file eval.txt contains examples without indent. +Solution: Insert the indent. Also fix other mistakes. +Files: runtime/doc/eval.txt + +Patch 6.2.187 +Problem: Using Insure++ reveals a number of bugs. (Dominique Pelle) +Solution: Initialize variables where needed. Free allocated memory to avoid + leaks. Fix comparing tags to avoid reading past allocated memory. +Files: src/buffer.c, src/diff.c, src/fileio.c, src/mark.c, src/misc1.c, + src/misc2.c, src/ops.c, src/option.c, src/tag.c, src/ui.c + +Patch 6.2.188 (extra) +Problem: MS-Windows: Multi-byte characters in a filename cause trouble for + the window title. +Solution: Return when the wide function for setting the title did its work. +Files: src/gui_w48.c + +Patch 6.2.189 +Problem: When setting 'viminfo' after editing a new buffer its marks are + not stored. (Keith Roberts) +Solution: Set the "b_marks_read" flag when skipping to read marks from the + viminfo file. +Files: src/fileio.c + +Patch 6.2.190 +Problem: When editing a compressed files, marks are lost. +Solution: Add the ":lockmarks" modifier and use it in the gzip plugin. + Make exists() also check for command modifiers, so that the + existence of ":lockmarks" can be checked for. + Also add ":keepmarks" to avoid that marks are deleted when + filtering text. + When deleting lines put marks 'A - 'Z and '0 - '9 at the first + deleted line instead of clearing the mark. They were kept in the + viminfo file anyway. + Avoid that the gzip plugin puts deleted text in registers. +Files: runtime/doc/motion.txt, runtime/plugin/gzip.vim, src/ex_cmds.c, + src/ex_docmd.c, src/mark.c, src/structs.h + +Patch 6.2.191 +Problem: The intro message is outdated. Information about sponsoring and + registering is missing. +Solution: Show info about sponsoring and registering Vim in the intro + message now and then. Add help file about sponsoring. +Files: runtime/doc/help.txt, runtime/doc/sponsor.txt, runtime/doc/tags, + runtime/menu.vim, src/version.c + +Patch 6.2.192 +Problem: Using CTRL-T and CTRL-D with "gR" messes up the text. (Jonathan + Hankins) +Solution: Avoid calling change_indent() recursively. +Files: src/edit.c + +Patch 6.2.193 +Problem: When recalling a search pattern from the history from a ":s,a/c," + command the '/' ends the search string. (JC van Winkel) +Solution: Store the separator character with the history entries. Escape + characters when needed, replace the old separator with the new one. + Also fixes that recalling a "/" search for a "?" command messes up + trailing flags. +Files: src/eval.c, src/ex_getln.c, src/normal.c, src/proto/ex_getln.pro, + src/search.c, src/tag.c + +Patch 6.2.194 (after 6.2.068) +Problem: For NetBeans, instead of writing the file and sending an event + about it, tell NetBeans to write the file. +Solution: Add the "save" command, "netbeansBuffer" command and + "buttonRelease" event to the netbeans protocol. Updated the + interface to version 2.2. (Gordon Prieur) + Also: open a fold when the cursor has been positioned. + Also: fix memory leak, free result of nb_quote(). +Files: runtime/doc/netbeans.txt, src/fileio.c, src/netbeans.c, + src/normal.c, src/proto/netbeans.pro, src/structs.h + +Patch 6.2.195 (after 6.2.190) +Problem: Compiling fails for missing CPO_REMMARK symbol. +Solution: Add the patch I forgot to include... +Files: src/option.h + +Patch 6.2.196 (after 6.2.191) +Problem: Rebuilding the documentation doesn't use the sponsor.txt file. +Solution: Add sponsor.txt to the Makefile. (Christian J. Robinson) +Files: runtime/doc/Makefile + +Patch 6.2.197 +Problem: It is not possible to force a redraw of status lines. (Gary + Johnson) +Solution: Add the ":redrawstatus" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c, + src/screen.c + +Patch 6.2.198 +Problem: A few messages are not translated. (Ernest Adrogue) +Solution: Mark the messages to be translated. +Files: src/ex_cmds.c + +Patch 6.2.199 (after 6.2.194) +Problem: Vim doesn't work perfectly well with NetBeans. +Solution: When NetBeans saves the file, reset the timestamp to avoid "file + changed" warnings. Close a buffer in a proper way. Don't try + giving a debug message with an invalid pointer. Send a + newDotAndMark message when needed. Report a change by the "r" + command to NetBeans. (Gordon Prieur) +Files: src/netbeans.c, src/normal.c + +Patch 6.2.200 +Problem: When recovering a file, 'fileformat' is always the default, thus + writing the file may result in differences. (Penelope Fudd) +Solution: Before recovering the file try reading the original file to obtain + the values of 'fileformat', 'fileencoding', etc. +Files: src/memline.c + +Patch 6.2.201 +Problem: When 'autowriteall' is set ":qall" still refuses to exit if there + is a modified buffer. (Antoine Mechelynck) +Solution: Attempt writing modified buffers as intended. +Files: src/ex_cmds2.c + +Patch 6.2.202 +Problem: Filetype names of CHILL and ch script are confusing. +Solution: Rename "ch" to "chill" and "chscript" to "ch". +Files: runtime/filetype.vim, runtime/makemenu.vim, runtime/synmenu.vim + runtime/syntax/ch.vim, runtime/syntax/chill.vim + +Patch 6.2.203 +Problem: With characterwise text that has more than one line, "3P" works + wrong. "3p" has the same problem. There also is a display + problem. (Daniel Goujot) +Solution: Perform characterwise puts with a count in the right position. +Files: src/ops.c + +Patch 6.2.204 (after 6.2.086) +Problem: "]]" in a file with closed folds moves to the end of the file. + (Nam SungHyun) +Solution: Find one position in each closed fold, then move to after the fold. +Files: src/search.c + +Patch 6.2.205 (extra) +Problem: MS-Windows: When the taskbar is at the left or top of the screen, + the Vim window placement is wrong. +Solution: Compute the size and position of the window correctly. (Taro + Muraoka) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.206 +Problem: Multi-byte characters cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Handle multibyte characters properly. Also put () or [] around + default hotkeys. +Files: src/message.c, src/macros.h + +Patch 6.2.207 +Problem: When 'encoding' is a multibyte encoding, expanding an + abbreviation that starts where insertion started results in + characters before the insertion to be deleted. (Xiangjiang Ma) +Solution: Stop searching leftwards for the start of the word at the position + where insertion started. +Files: src/getchar.c + +Patch 6.2.208 +Problem: When using fold markers, three lines in a row have the start + marker and deleting the first one with "dd", a nested fold is not + deleted. (Kamil Burzynski) + Using marker folding, a level 1 fold doesn't stop when it is + followed by "{{{2", starting a level 2 fold. +Solution: Don't stop updating folds at the end of a change when the nesting + level of folds is larger than the fold level. + Correctly compute the number of folds that start at "{{{2". + Also avoid a crash for a NULL pointer. +Files: src/fold.c + +Patch 6.2.209 +Problem: A bogus fold is created when using "P" while the cursor is in the + middle of a closed fold. (Kamil Burzynski) +Solution: Correct the line number where marks are modified for closed folds. +Files: src/ops.c + +Patch 6.2.210 (extra) +Problem: Mac OSX: antialiased fonts are not supported. +Solution: Add the 'antialias' option to switch on antialiasing on Mac OSX + 10.2 and later. (Peter Cucka) +Files: runtime/doc/options.txt, src/gui_mac.c, src/option.h, src/option.c + +Patch 6.2.211 (extra) +Problem: Code for handling file dropped on Vim is duplicated. +Solution: Move the common code to gui_handle_drop(). + Add code to drop the files in the window under the cursor. + Support drag&drop on the Macintosh. (Taro Muraoka) + When dropping a directory name edit that directory (using the + explorer plugin) + Fix that changing directory with Shift pressed didn't work for + relative path names. +Files: src/fileio.c, src/gui.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_w48.c, src/proto/fileio.pro, src/proto/gui.pro + +Patch 6.2.212 (after 6.2.199) +Problem: NetBeans: Replacing with a count is not handled correctly. +Solution: Move reporting the change outside of the loop for the count. + (Gordon Prieur) +Files: src/normal.c + +Patch 6.2.213 (after 6.2.208) +Problem: Using marker folding, "{{{1" doesn't start a new fold when already + at fold level 1. (Servatius Brandt) +Solution: Correctly compute the number of folds that start at "{{{1". +Files: src/fold.c + +Patch 6.2.214 (after 6.2.211) (extra) +Problem: Warning for an unused variable. +Solution: Delete the declaration. (Bill McCarthy) +Files: src/gui_w48.c + +Patch 6.2.215 +Problem: NetBeans: problems saving an unmodified file. +Solution: Add isNetbeansModified() function. Disable netbeans_unmodified(). + (Gordon Prieur) +Files: src/fileio.c, src/netbeans.c, src/proto/netbeans.pro, + runtime/doc/netbeans.txt, runtime/doc/tags + +Patch 6.2.216 (after 6.2.206) +Problem: Multi-byte characters still cannot be used as hotkeys in a console + dialog. (Mattias Erkisson) +Solution: Make get_keystroke() handle multibyte characters. +Files: src/misc1.c + +Patch 6.2.217 +Problem: GTK: setting the title doesn't always work correctly. +Solution: Invoke gui_mch_settitle(). (Tomas Stehlik) +Files: src/os_unix.c + +Patch 6.2.218 +Problem: Warning for function without prototype. +Solution: Add argument types to the msgCB field of the BalloonEval struct. +Files: src/gui_beval.h + +Patch 6.2.219 +Problem: Syntax highlighting hangs on an empty match of an item with a + nextgroup. (Charles Campbell) +Solution: Remember that the item has already matched and don't match it + again at the same position. +Files: src/syntax.c + +Patch 6.2.220 +Problem: When a Vim server runs in a console a remote command isn't handled + before a key is typed. (Joshua Neuheisel) +Solution: Don't try reading more input when a client-server command has been + received. +Files: src/os_unix.c + +Patch 6.2.221 +Problem: No file name completion for ":cscope add". +Solution: Add the XFILE flag to ":cscope". (Gary Johnson) +Files: src/ex_cmds.h + +Patch 6.2.222 +Problem: Using "--remote" several times on a row only opens some of the + files. (Dany St-Amant) +Solution: Don't delete all typeahead when the server receives a command from + a client, only delete typed characters. +Files: src/main.c + +Patch 6.2.223 +Problem: Cscope: Avoid a hang when cscope waits for a response while Vim + waits for a prompt. + Error messages from Cscope mess up the display. +Solution: Detect the hit-enter message and respond by sending a return + character to cscope. (Gary Johnson) + Use EMSG() and strerror() when possible. Replace perror() with + PERROR() everywhere, add emsg3(). +Files: src/diff.c, src/if_cscope.c, src/integration.c, src/message.c, + src/proto/message.pro, src/misc2.c, src/netbeans.c, src/vim.h + +Patch 6.2.224 +Problem: Mac: Can't compile with small features. (Axel Kielhorn) +Solution: Also include vim_chdirfile() when compiling for the Mac. +Files: src/misc2.c + +Patch 6.2.225 +Problem: NetBeans: Reported modified state isn't exactly right. +Solution: Report a file being modified in the NetBeans way. +Files: src/netbeans.c + +Patch 6.2.226 (after 6.2.107) (extra) +Problem: The "ws2-32.lib" file isn't always available. +Solution: Use "WSock32.lib" instead. (Taro Muraoka, Dan Sharp) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak + +Patch 6.2.227 (extra) +Problem: The "PC" symbol is defined but not used anywhere. +Solution: Remove "-DPC" from the makefiles. +Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, + src/Make_ming.mak + +Patch 6.2.228 +Problem: Receiving CTRL-\ CTRL-N after typing "f" or "m" doesn't switch Vim + back to Normal mode. Same for CTRL-\ CTRL-G. +Solution: Check if the character typed after a command is CTRL-\ and obtain + another character to check for CTRL-N or CTRL-G, waiting up to + 'ttimeoutlen' msec. +Files: src/normal.c + +Patch 6.2.229 +Problem: ":function" with a name that uses magic curlies does not work + inside a function. (Servatius Brandt) +Solution: Skip over the function name properly. +Files: src/eval.c + +Patch 6.2.230 (extra) +Problem: Win32: a complex pattern may cause a crash. +Solution: Use __try and __except to catch the exception and handle it + gracefully, when possible. Add myresetstkoflw() to reset the + stack overflow. (Benjamin Peterson) +Files: src/Make_bc5.mak, src/os_mswin.c src/os_win32.c, src/os_win32.h, + src/proto/os_win32.pro, src/regexp.c + +Patch 6.2.231 (after 6.2.046) +Problem: Various problems when an error exception is raised from within a + builtin function. When it is invoked while evaluating arguments + to a function following arguments are still evaluated. When + invoked with a line range it will be called for remaining lines. +Solution: Update "force_abort" also after calling a builtin function, so + that aborting() always returns the correct value. (Servatius + Brandt) +Files: src/eval.c, src/ex_eval.c, src/proto/ex_eval.pro, + src/testdir/test49.ok, src/testdir/test49.vim + +Patch 6.2.232 +Problem: ":python vim.command('python print 2*2')" crashes Vim. (Eugene + Minkovskii) +Solution: Disallow executing a Python command recursively and give an error + message. +Files: src/if_python.c + +Patch 6.2.233 +Problem: On Mac OSX adding -pthread for Python only generates a warning. + The test for Perl threads rejects Perl while it's OK. + Tcl doesn't work at all. + The test for Ruby fails if ruby exists but there are no header + files. The Ruby library isn't detected properly +Solution: Avoid adding -pthread on Mac OSX. Accept Perl threads when it's + not the 5.5 threads. + Use the Tcl framework for header files. For Ruby rename cWindow + to cVimWindow to avoid a name clash. (Ken Scott) + Only enable Ruby when the header files can be found. Use "-lruby" + instead of "libruby.a" when it can't be found. +Files: src/auto/configure, src/configure.in, src/if_ruby.c + +Patch 6.2.234 +Problem: GTK 2 GUI: ":sp" and the ":q" leaves the cursor on the command + line. +Solution: Flush output before removing scrollbars. Also do this in other + places where gui_mch_*() functions are invoked. +Files: src/ex_cmds.c, src/option.c, src/window.c + +Patch 6.2.235 (extra) +Problem: Win32: Cursor isn't removed with a 25x80 window and doing: + "1830ia<Esc>400a-<Esc>0w0". (Yasuhiro Matsumoto) +Solution: Remove the call to gui_undraw_cursor() from gui_mch_insert_lines(). +Files: src/gui_w48.c + +Patch 6.2.236 +Problem: Using gvim with Agide gives "connection lost" error messages. +Solution: Only give the "connection lost" message when the buffer was once + owned by NetBeans. +Files: src/netbeans.c, src/structs.h + +Patch 6.2.237 +Problem: GTK 2: Thai text is drawn wrong. It changes when moving the + cursor over it. +Solution: Disable the shaping engine, it moves combining characters to a + wrong position and combines characters, while drawing the cursor + doesn't combine characters. +Files: src/gui_gtk_x11.c + +Patch 6.2.238 (after 6.2.231) +Problem: ":function" does not work inside a while loop. (Servatius Brandt) +Solution: Add get_while_line() and pass it to do_one_cmd() when in a while + loop, so that all lines are stored and can be used again when + repeating the loop. + Adjust test 49 so that it checks for the fixed problems. + (Servatius Brandt) +Files: src/digraph.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, + src/testdir/test49.in, src/testdir/test49.ok, + src/testdir/test49.vim + +Patch 6.2.239 +Problem: GTK 2: With closed folds the arrow buttons of a vertical scrollbar + often doesn't scroll. (Moshe Kaminsky) +Solution: Hackish solution: Detect that the button was pressed from the + mouse pointer position. +Files: src/gui_gtk.c, src/gui.c + +Patch 6.2.240 +Problem: GTK 2: Searching for bitmaps for the toolbar doesn't work as with + other systems. Need to explicitly use "icon=name". (Ned Konz, + Christian J. Robinson) +Solution: Search for icons like done for Motif. +Files: src/gui_gtk.c + +Patch 6.2.241 +Problem: GTK 2: Search and Search/Replace dialogs are synced, that makes no + sense. Buttons are sometimes greyed-out. (Jeremy Messenger) +Solution: Remove the code to sync the two dialogs. Adjust the code to react + to an empty search string to also work for GTK2. (David Necas) +Files: src/gui_gtk.c + +Patch 6.2.242 +Problem: Gnome: "vim --help" only shows the Gnome arguments, not the Vim + arguments. +Solution: Don't let the Gnome code remove the "--help" argument and don't + exit at the end of usage(). +Files: src/gui_gtk_x11.c, src/main.c + +Patch 6.2.243 (extra) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt. +Solution: Move the dropped files to the global argument list, instead of the + usual drop handling. (Eckehard Berns) +Files: src/main.c, src/gui_mac.c + +Patch 6.2.244 +Problem: ':echo "\xf7"' displays the illegal byte as if it was a character + and leaves "cho" after it. +Solution: When checking the length of a UTF-8 byte sequence and it's shorter + than the number of bytes available, assume it's an illegal byte. +Files: src/mbyte.c + +Patch 6.2.245 +Problem: Completion doesn't work for ":keepmarks" and ":lockmarks". +Solution: Add the command modifiers to the table of commands. (Madoka + Machitani) +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.246 +Problem: Mac: Starting Vim from Finder doesn't show error messages. +Solution: Recognize that output is being displayed by stderr being + "/dev/console". (Eckehard Berns) +Files: src/main.c, src/message.c + +Patch 6.2.247 (after 6.2.193) +Problem: When using a search pattern from the viminfo file the last + character is replaced with a '/'. +Solution: Store the separator character in the right place. (Kelvin Lee) +Files: src/ex_getln.c + +Patch 6.2.248 +Problem: GTK: When XIM is enabled normal "2" and keypad "2" cannot be + distinguished. +Solution: Detect that XIM changes the keypad key to the expected ASCII + character and fall back to the non-XIM code. (Neil Bird) +Files: src/gui_gtk_x11.c, src/mbyte.c, src/proto/mbyte.pro + +Patch 6.2.249 +Problem: ":cnext" moves to the error in the next file, but there is no + method to go back. +Solution: Add ":cpfile" and ":cNfile". +Files: src/ex_cmds.h, src/quickfix.c, src/vim.h, runtime/doc/quickfix.txt + +Patch 6.2.250 +Problem: Memory leaks when using signs. (Xavier de Gaye) +Solution: Delete the list of signs when unloading a buffer. +Files: src/buffer.c + +Patch 6.2.251 +Problem: GTK: The 'v' flag in 'guioptions' doesn't work. (Steve Hall) + Order of buttons is reversed for GTK 2.2.4. Don't always get + focus back after handling a dialog. +Solution: Make buttons appear vertically when desired. Reverse the order in + which buttons are added to a dialog. Move mouse pointer around + when the dialog is done and we don't have focus. +Files: src/gui_gtk.c + +Patch 6.2.252 (extra, after 6.2.243) +Problem: Mac: Dropping a file on a Vim icon causes a hit-enter prompt for + Mac OS classic. +Solution: Remove the #ifdef from the code that fixes it for Mac OSX. +Files: src/gui_mac.c + +Patch 6.2.253 +Problem: When 'tagstack' is not set a ":tag id" command does not work after + a ":tjump" command. +Solution: Set "new_tag" when 'tagstack' isn't set. (G. Narendran) +Files: src/tag.c + +Patch 6.2.254 +Problem: May run out of space for error messages. +Solution: Keep room for two more bytes. +Files: src/quickfix.c + +Patch 6.2.255 +Problem: GTK: A new item in the popup menu is put just after instead of + just before the right item. (Gabriel Zachmann) +Solution: Don't increment the menu item index. +Files: src/gui_gtk.c + +Patch 6.2.256 +Problem: Mac: "macroman" encoding isn't recognized, need to use + "8bit-macroman". +Solution: Recognize "macroman" with an alias "mac". (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.257 (after 6.2.250) +Problem: Signs are deleted for ":bdel", but they could still be useful. +Solution: Delete signs only for ":bwipe". +Files: src/buffer.c + +Patch 6.2.258 +Problem: GUI: can't disable (grey-out) a popup menu item. (Ajit Thakkar) +Solution: Loop over the popup menus for all modes. +Files: src/menu.c + +Patch 6.2.259 +Problem: If there are messages when exiting, on the console there is a + hit-enter prompt while the message can be read; in the GUI the + message may not be visible. +Solution: Use the hit-enter prompt when there is an error message from + writing the viminfo file or autocommands, or when there is any + output in the GUI and 'verbose' is set. Don't use a hit-enter + prompt for the non-GUI version unless there is an error message. +Files: src/main.c + +Patch 6.2.260 +Problem: GTK 2: Can't quit a dialog with <Esc>. + GTK 1 and 2: <Enter> always gives a result, even when the default + button has been disabled. +Solution: Handle these keys explicitly. When no default button is specified + use the first one (works mostly like it was before). +Files: src/gui_gtk.c + +Patch 6.2.261 +Problem: When 'autoindent' and 'cindent' are set and a line is recognized + as a comment, starting a new line won't do 'cindent' formatting. +Solution: Also use 'cindent' formatting for lines that are used as a + comment. (Servatius Brandt) +Files: src/misc1.c + +Patch 6.2.262 +Problem: 1 CTRL-W w beeps, even though going to the first window is + possible. (Charles Campbell) +Solution: Don't beep. +Files: src/window.c + +Patch 6.2.263 +Problem: Lint warnings: Duplicate function prototypes, duplicate macros, + use of a zero character instead of a zero pointer, unused + variable. Clearing allocated memory in a complicated way. +Solution: Remove the function prototypes from farsi.h. Remove the + duplicated lines in keymap.h. Change getvcol() argument from NUL + to NULL. Remove the "col" variable in regmatch(). Use + lalloc_clear() instead of lalloc(). (Walter Briscoe) +Files: src/farsi.h, src/keymap.h, src/ops.c, src/regexp.c, src/search.c + +Patch 6.2.264 (after 6.2.247) +Problem: Writing past allocated memory when using a command line from the + viminfo file. +Solution: Store the NUL in the right place. +Files: src/ex_getln.c + +Patch 6.2.265 +Problem: Although ":set" is not allowed in the sandbox, ":let &opt = val" + works. +Solution: Do allow changing options in the sandbox, but not the ones that + can't be changed from a modeline. +Files: src/ex_cmds.h, src/options.c + +Patch 6.2.266 +Problem: When redirecting output and using ":silent", line breaks are + missing from output of ":map" and ":tselect". Alignment of + columns is wrong. +Solution: Insert a line break where "msg_didout" was tested. Update msg_col + when redirecting and using ":silent". +Files: src/getchar.c, src/message.c + +Patch 6.2.267 (extra) +Problem: Win32: "&&" in a tearoff menu is not shown. (Luc Hermitte) +Solution: Use the "name" item from the menu instead of the "dname" item. +Files: src/gui_w32.c, src/menu.c + +Patch 6.2.268 +Problem: GUI: When changing 'guioptions' part of the window may be off + screen. (Randall Morris) +Solution: Adjust the size of the window when changing 'guioptions', but only + when adding something. +Files: src/gui.c + +Patch 6.2.269 +Problem: Diff mode does not highlight a change in a combining character. + (Raphael Finkel) +Solution: Make diff_find_change() multibyte aware: find the start byte of + a character that contains a change. +Files: src/diff.c + +Patch 6.2.270 +Problem: Completion in Insert mode, then repeating with ".", doesn't handle + composing characters in the completed text. (Raphael Finkel) +Solution: Don't skip over composing chars when adding completed text to the + redo buffer. +Files: src/getchar.c + +Patch 6.2.271 +Problem: NetBeans: Can't do "tail -f" on the log. Passing socket info with + an argument or environment variable is not secure. +Solution: Wait after initializing the log. Allow passing the socket info + through a file. (Gordon Prieur) +Files: runtime/doc/netbeans.txt, src/main.c, src/netbeans.c + +Patch 6.2.272 +Problem: When the "po" directory exists, but "po/Makefile" doesn't, + building fails. Make loops when the "po" directory has been + deleted after running configure. +Solution: Check for the "po/Makefile" instead of just the "po" directory. + Check this again before trying to run make with that Makefile. +Files: src/auto/configure, src/configure.in, src/Makefile + +Patch 6.2.273 +Problem: Changing the sort order in an explorer window for an empty + directory produces error messages. (Doug Kearns) +Solution: When an invalid range is used for a function that is not going to + be executed, skip over the arguments anyway. +Files: src/eval.c + +Patch 6.2.274 +Problem: ":print" skips empty lines when 'list' is set and there is no + "eol" in 'listchars'. (Yakov Lerner) +Solution: Skip outputting a space for an empty line only when 'list' is set + and the end-of-line character is not empty. +Files: src/message.c + +Patch 6.2.275 (extra, after 6.2.267) +Problem: Warning for uninitialized variable when using gcc. +Solution: Initialize "acLen" to zero. (Bill McCarthy) +Files: src/gui_w32.c + +Patch 6.2.276 +Problem: ":echo X()" does not put a line break between the message that X() + displays and the text that X() returns. (Yakov Lerner) +Solution: Invoke msg_start() after evaluating the argument. +Files: src/eval.c + +Patch 6.2.277 +Problem: Vim crashes when a ":runtime ftplugin/ada.vim" causes a recursive + loop. (Robert Nowotniak) +Solution: Restore "msg_list" before returning from do_cmdline(). +Files: src/ex_docmd.c + +Patch 6.2.278 +Problem: Using "much" instead of "many". +Solution: Correct the error message. +Files: src/eval.c + +Patch 6.2.279 +Problem: There is no default choice for a confirm() dialog, now that it is + possible not to have a default choice. +Solution: Make the first choice the default choice. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 6.2.280 +Problem: "do" and ":diffget" don't work in the first line and the last line + of a buffer. (Aron Griffis) +Solution: Find a difference above the first line and below the last line. + Also fix a few display updating bugs. +Files: src/diff.c, src/fold.c, src/move.c + +Patch 6.2.281 +Problem: PostScript printing doesn't work on Mac OS X 10.3.2. +Solution: Adjust the header file. (Mike Williams) +Files: runtime/print/prolog.ps + +Patch 6.2.282 +Problem: When using CTRL-O to go back to a help file, it becomes listed. + (Andrew Nesbit) + Using ":tag" or ":tjump" in a help file doesn't keep the help file + settings (e.g. for 'iskeyword'). +Solution: Don't mark a buffer as listed when its help flag is set. Put all + the option settings for a help buffer together in do_ecmd(). +Files: src/ex_cmds.c + +Patch 6.2.283 +Problem: The "local additions" in help.txt are used without conversion, + causing latin1 characters showing up wrong when 'enc' is utf-8. + (Antoine J. Mechelynck) +Solution: Convert the text to 'encoding'. +Files: src/ex_cmds.c + +Patch 6.2.284 +Problem: Listing a function puts "endfunction" in the message history. + Typing "q" at the more prompt isn't handled correctly when listing + variables and functions. (Hara Krishna Dara) +Solution: Don't use msg() for "endfunction". Check "got_int" regularly. +Files: src/eval.c + +Patch 6.2.285 +Problem: GUI: In a single wrapped line that fills the window, "gj" in the + last screen line leaves the cursor behind. (Ivan Tarasov) +Solution: Undraw the cursor before scrolling the text up. +Files: src/gui.c + +Patch 6.2.286 +Problem: When trying to rename a file and it doesn't exist, the destination + file is deleted anyway. (Luc Deux) +Solution: Don't delete the destination when the source doesn't exist. (Taro + Muraoka) +Files: src/fileio.c + +Patch 6.2.287 (after 6.2.264) +Problem: Duplicate lines are added to the viminfo file. +Solution: Compare with existing entries without an offset. Also fixes + reading very long history lines from viminfo. +Files: src/ex_getln.c + +Patch 6.2.288 (extra) +Problem: Mac: An external program can't be interrupted. +Solution: Don't use the 'c' key for backspace. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.289 +Problem: Compiling the Tcl interface with thread support causes ":make" to + fail. (Juergen Salk) +Solution: Use $TCL_DEFS from the Tcl config script to obtain the required + compile flags for using the thread library. +Files: src/auto/configure, src/configure.in + +Patch 6.2.290 (extra) +Problem: Mac: The mousewheel doesn't work. +Solution: Add mousewheel support. Also fix updating the thumb after a drag + and then using another way to scroll. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.291 (extra) +Problem: Mac: the plus button and close button don't do anything. +Solution: Make the plus button maximize the window and the close button + close Vim. (Eckehard Berns) +Files: src/gui.c, src/gui_mac.c + +Patch 6.2.292 +Problem: Motif: When removing GUI arguments from argv[] a "ps -ef" shows + the last argument repeated. +Solution: Set argv[argc] to NULL. (Michael Jarvis) +Files: src/gui_x11.c + +Patch 6.2.293 (after 6.2.255) +Problem: GTK: A new item in a menu is put before the tearoff item. +Solution: Do increment the menu item index for non-popup menu items. +Files: src/gui_gtk.c + +Patch 6.2.294 (extra) +Problem: Mac: Cannot use modifiers with Space, Tab, Enter and Escape. +Solution: Handle all modifiers for these keys. (Eckehard Berns) +Files: src/gui_mac.c + +Patch 6.2.295 +Problem: When in debug mode, receiving a message from a remote client + causes a crash. Evaluating an expression causes Vim to wait for + "cont" to be typed, without a prompt. (Hari Krishna Dara) +Solution: Disable debugging when evaluating an expression for a client. + (Michael Geddes) Don't try reading into the typeahead buffer when + it may have been filled in another way. +Files: src/ex_getln.c, src/getchar.c, src/if_xcmdsrv.c, src/main.c, + src/misc1.c, src/proto/getchar.pro, src/proto/main.pro, + src/proto/os_unix.pro, src/proto/ui.pro, src/structs.h, + src/os_unix.c, src/ui.c + +Patch 6.2.296 (extra) +Problem: Same as 6.2.295. +Solution: Extra files for patch 6.2.295. +Files: src/os_amiga.c, src/os_msdos.c, src/os_riscos.c, src/os_win32.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_riscos.pro, src/proto/os_win32.pro + +Patch 6.2.297 (after 6.2.232) +Problem: Cannot invoke Python commands recursively. +Solution: With Python 2.3 and later use the available mechanisms to invoke + Python recursively. (Matthew Mueller) +Files: src/if_python.c + +Patch 6.2.298 +Problem: A change always sets the '. mark and an insert always sets the '^ + mark, even when this is not wanted. + Cannot go back to the position of older changes without undoing + those changes. +Solution: Add the ":keepjumps" command modifier. + Add the "g," and "g;" commands. +Files: runtime/doc/motion.txt, src/ex_cmds.h, src/ex_docmd.c, src/edit.c, + src/mark.c, src/misc1.c, src/normal.c, src/proto/mark.pro, + src/structs.h, src/undo.c + +Patch 6.2.299 +Problem: Can only use one language for help files. +Solution: Add the 'helplang' option to select the preferred language(s). + Make ":helptags" generate tags files for all languages. +Files: runtime/doc/options.txt, runtime/doc/various.txt, src/Makefile, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_cmds.h, src/ex_getln.c, + src/normal.c, src/option.c, src/option.h, src/proto/ex_cmds.pro, + src/proto/ex_cmds2.pro, src/proto/option.pro, src/structs.h, + src/tag.c, src/vim.h + +Patch 6.2.300 (after 6.2.297) +Problem: Cannot build Python interface with Python 2.2 or earlier. +Solution: Add a semicolon. +Files: src/if_python.c + +Patch 6.2.301 +Problem: The "select all" item from the popup menu doesn't work for Select + mode. +Solution: Use the same commands as for the "Edit.select all" menu. + (Benji Fisher) +Files: runtime/menu.vim + +Patch 6.2.302 +Problem: Using "CTRL-O ." in Insert mode doesn't work properly. (Benji + Fisher) +Solution: Restore "restart_edit" after an insert command that was not typed. + Avoid waiting with displaying the mode when there is no text to be + overwritten. + Fix that "CTRL-O ." sometimes doesn't put the cursor back after + the end-of-line. Only reset the flag that CTRL-O was used past + the end of the line when restarting editing. Update "o_lnum" + number when inserting text and "o_eol" is set. +Files: src/edit.c, src/normal.c + +Patch 6.2.303 +Problem: Cannot use Unicode digraphs while 'encoding' is not Unicode. +Solution: Convert the character from Unicode to 'encoding' when needed. + Use the Unicode digraphs for the Macintosh. (Eckehard Berns) +Files: src/digraph.c + +Patch 6.2.304 (extra, after 6.2.256) +Problem: Mac: No proper support for 'encoding'. Conversion without iconv() + is not possible. +Solution: Convert input from 'termencoding' to 'encoding'. Add + mac_string_convert(). Convert text for the clipboard when needed. + (Eckehard Berns) +Files: src/gui_mac.c, src/mbyte.c, src/structs.h, src/vim.h + +Patch 6.2.305 (after 6.2.300) +Problem: Win32: Cannot build Python interface with Python 2.3. (Ajit + Thakkar) +Solution: Add two functions to the dynamic loading feature. +Files: src/if_python.c + +Patch 6.2.306 (extra) +Problem: Win32: Building console version with BCC 5.5 gives a warning for + get_cmd_args() prototype missing. (Ajit Thakkar) +Solution: Don't build os_w32exe.c for the console version. +Files: src/Make_bc5.mak + +Patch 6.2.307 (after 6.2.299) +Problem: Installing help files fails. +Solution: Expand wildcards for translated help files separately. +Files: src/Makefile + +Patch 6.2.308 +Problem: Not all systems have "whoami", resulting in an empty user name. +Solution: Use "logname" when possible, "whoami" otherwise. (David Boyce) +Files: src/Makefile + +Patch 6.2.309 +Problem: "3grx" waits for two ESC to be typed. (Jens Paulus) +Solution: Append the ESC to the stuff buffer when redoing the "gr" insert. +Files: src/edit.c + +Patch 6.2.310 +Problem: When setting 'undolevels' to -1, making a change and setting + 'undolevels' to a positive value an "undo list corrupt" error + occurs. (Madoka Machitani) +Solution: Sync undo before changing 'undolevels'. +Files: src/option.c + +Patch 6.2.311 (after 6.2.298) +Problem: When making several changes in one line the changelist grows + quickly. There is no error message for reaching the end of the + changelist. Reading changelist marks from viminfo doesn't work + properly. +Solution: Only make a new entry in the changelist when making a change in + another line or 'textwidth' columns away. Add E662, E663 and E664 + error messages. Put a changelist mark from viminfo one position + before the end. +Files: runtime/doc/motion.txt, src/mark.c, src/misc1.c, src/normal.c + +Patch 6.2.312 (after 6.2.299) +Problem: "make install" clears the screen when installing the docs. +Solution: Execute ":helptags" in silent mode. +Files: runtime/doc/Makefile + +Patch 6.2.313 +Problem: When opening folds in a diff window, other diff windows no longer + show the same text. +Solution: Sync the folds in diff windows. +Files: src/diff.c, src/fold.c, src/move.c, src/proto/diff.pro, + src/proto/move.pro + +Patch 6.2.314 +Problem: When 'virtualedit' is set "rx" may cause a crash with a blockwise + selection and using "$". (Moritz Orbach) +Solution: Don't try replacing chars in a line that has no characters in the + block. +Files: src/ops.c + +Patch 6.2.315 +Problem: Using CTRL-C in a Visual mode mapping while 'insertmode' is set + stops Vim from returning to Insert mode. +Solution: Don't reset "restart_edit" when a CTRL-C is found and 'insertmode' + is set. +Files: src/normal.c + +Patch 6.2.316 (after 6.2.312) +Problem: "make install" tries connecting to the X server when installing + the docs. (Stephen Thomas) +Solution: Add the "-X" argument. +Files: runtime/doc/Makefile + +Patch 6.2.317 (after 6.2.313) +Problem: When using "zi" in a diff window, other diff windows are not + adjusted. (Richard Curnow) +Solution: Distribute a change in 'foldenable' to other diff windows. +Files: src/normal.c + +Patch 6.2.318 +Problem: When compiling with _THREAD_SAFE external commands don't echo + typed characters. +Solution: Don't set the terminal mode to TMODE_SLEEP when it's already at + TMODE_COOK. +Files: src/os_unix.c + +Patch 6.2.319 (extra) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Use gcc instead of dllwrap. Use long option names. (Alejandro + Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.320 +Problem: Win32: Adding and removing the menubar resizes the Vim window. + (Jonathon Merz) +Solution: Don't let a resize event change 'lines' unexpectedly. +Files: src/gui.c + +Patch 6.2.321 +Problem: When using modeless selection, wrapping lines are not recognized, + a line break is always inserted. +Solution: Add LineWraps[] to remember whether a line wrapped or not. +Files: src/globals.h, src/screen.c, src/ui.c + +Patch 6.2.322 +Problem: With 'showcmd' set, after typing "dd" the next "d" may not be + displayed. (Jens Paulus) +Solution: Redraw the command line after updating the screen, scrolling may + have set "clear_cmdline". +Files: src/screen.c + +Patch 6.2.323 +Problem: Win32: expanding "~/file" in an autocommand pattern results in + backslashes, while this pattern should only have forward slashes. +Solution: Make expanding environment variables respect 'shellslash' and set + p_ssl when expanding the autocommand pattern. +Files: src/fileio.c, src/misc1.c, src/proto/fileio.pro + +Patch 6.2.324 (extra) +Problem: Win32: when "vimrun.exe" has a path with white space, such as + "Program Files", executing external commands may fail. +Solution: Put double quotes around the path to "vimrun". +Files: src/os_win32.c + +Patch 6.2.325 +Problem: When $HOME includes a space, doing ":set tags=~/tags" doesn't + work, the space is used to separate file names. (Brett Stahlman) +Solution: Escape the space with a backslash. +Files: src/option.c + +Patch 6.2.326 +Problem: ":windo set syntax=foo" doesn't work. (Tim Chase) +Solution: Don't change 'eventignore' for ":windo". +Files: src/ex_cmds2.c + +Patch 6.2.327 +Problem: When formatting text all marks in the formatted lines are lost. + A word is not joined to a previous line when this would be + possible. (Mikolaj Machowski) +Solution: Try to keep marks in the same position as much as possible. + Also keep mark positions when joining lines. + Start auto-formatting in the previous line when appropriate. + Add the "gw" operator: Like "gq" but keep the cursor where it is. +Files: runtime/doc/change.txt, src/edit.c, src/globals.h, src/mark.c, + src/misc1.c, src/normal.c, src/ops.c, src/proto/edit.pro, + src/proto/mark.pro, src/proto/ops.pro, src/structs.h, src/vim.h + +Patch 6.2.328 +Problem: XIM with GTK: It is hard to understand what XIM is doing. +Solution: Add xim_log() to log XIM events and help with debugging. +Files: src/mbyte.c + +Patch 6.2.329 +Problem: ":=" does not work Vi compatible. (Antony Scriven) +Solution: Print the last line number instead of the current line. Don't + print "line". +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 6.2.330 (extra, after 6.2.267) +Problem: Win32: Crash when tearing off a menu. +Solution: Terminate a string with a NUL. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 6.2.331 (after 6.2.327) +Problem: "gwap" leaves cursor in the wrong line. +Solution: Remember the cursor position before finding the ends of the + paragraph. +Files: src/normal.c, src/ops.c, src/structs.h + +Patch 6.2.332 (extra) +Problem: Amiga: Compile error for string array. Compiling the Amiga GUI + doesn't work. +Solution: Use a char pointer instead. Move including "gui_amiga.h" to after + including "vim.h". Add a semicolon. (Ali Akcaagac) +Files: src/gui_amiga.c, src/os_amiga.c + +Patch 6.2.333 (extra) +Problem: Win32: printing doesn't work with specified font charset. +Solution: Use the specified font charset. (Mike Williams) +Files: src/os_mswin.c + +Patch 6.2.334 (extra, after 6.2.296) +Problem: Win32: evaluating client expression in debug mode requires typing + "cont". +Solution: Use eval_client_expr_to_string(). +Files: src/os_mswin.c + +Patch 6.2.335 +Problem: The ":sign" command cannot be followed by another command. +Solution: Add TRLBAR to the command flags. +Files: src/ex_cmds.h + +Patch 6.2.336 (after 6.2.327) +Problem: Mixup of items in an expression. +Solution: Move "== NUL" to the right spot. +Files: src/edit.c + +Patch 6.2.337 (extra, after 6.2.319) +Problem: Building gvimext.dll with Mingw doesn't work properly. +Solution: Fix white space and other details. (Alejandro Lopez-Valencia) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.338 (after 6.2.331) +Problem: When undoing "gwap" the cursor is always put at the start of the + paragraph. When undoing auto-formatting the cursor may be above + the change. +Solution: Try to move the cursor back to where it was or to the first line + that actually changed. +Files: src/normal.c, src/ops.c, src/undo.c + +Patch 6.2.339 +Problem: Crash when using many different highlight groups and a User + highlight group. (Juergen Kraemer) +Solution: Do not use the sg_name_u pointer when it is NULL. Also simplify + use of the highlight group table. +Files: src/syntax.c + +Patch 6.2.340 +Problem: ":reg" doesn't show the actual contents of the clipboard if it was + filled outside of Vim. (Stuart MacDonald) +Solution: Obtain the clipboard contents before displaying it. +Files: src/ops.c + +Patch 6.2.341 (extra) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode does not work. +Solution: Put the first double quote just before the space instead of before + the path. +Files: src/dosinst.c + +Patch 6.2.342 (extra) +Problem: Win32: macros are not always used as expected. +Solution: Define WINVER to 0x0400 instead of 0x400. (Alejandro + Lopez-Valencia) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_mvc.mak + +Patch 6.2.343 +Problem: Title doesn't work with some window managers. X11: Setting the + text property for the window title is hard coded. +Solution: Use STRING format when possible. Use the UTF-8 function when + it's available and 'encoding' is utf-8. Use + XStringListToTextProperty(). Do the same for the icon name. + (David Harrison) +Files: src/os_unix.c + +Patch 6.2.344 (extra, after 6.2.337) +Problem: Cannot build gvimext.dll with MingW on Linux. +Solution: Add support for cross compiling. (Ronald Hoellwarth) +Files: src/GvimExt/Make_ming.mak + +Patch 6.2.345 (extra) +Problem: Win32: Copy/paste between two Vims fails if 'encoding' is not set + properly or there are illegal bytes. +Solution: Use a raw byte format. Always set it when copying. When pasting + use the raw format if 'encoding' is the same. +Files: src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h + +Patch 6.2.346 +Problem: Win32 console: After using "chcp" Vim does not detect the + different codepage. +Solution: Use GetConsoleCP() and when it is different from GetACP() set + 'termencoding'. +Files: src/option.c + +Patch 6.2.347 (extra) +Problem: Win32: XP theme support is missing. +Solution: Add a manifest and refer to it from the resource file. (Michael + Wookey) +Files: Makefile, src/gvim.exe.mnf, src/vim.rc + +Patch 6.2.348 +Problem: Win32: "vim c:\dir\(test)" doesn't work, because the 'isfname' + default value doesn't contain parentheses. +Solution: Temporarily add '(' and ')' to 'isfname' when expanding file name + arguments. +Files: src/main.c + +Patch 6.2.349 +Problem: Finding a match using 'matchpairs' may cause a crash. + 'matchpairs' is not used for 'showmatch'. +Solution: Don't look past the NUL in 'matchpairs'. Use 'matchpairs' for + 'showmatch'. (Dave Olszewkski) +Files: src/misc1.c, src/normal.c, src/proto/search.pro, src/search.c + +Patch 6.2.350 +Problem: Not enough info about startup timing. +Solution: Add a few more TIME_MSG() calls. +Files: src/main.c + +Patch 6.2.351 +Problem: Win32: $HOME may be set to %USERPROFILE%. +Solution: Expand %VAR% at the start of $HOME. +Files: src/misc1.c + +Patch 6.2.352 (after 6.2.335) +Problem: ":sign texthl=||" does not work. +Solution: Remove the check for a following command. Give an error for extra + arguments after "buff=1". +Files: src/ex_cmds.c, src/ex_cmds.h + +Patch 6.2.353 (extra) +Problem: Win32: Supported server name length is limited. (Paul Bossi) +Solution: Use MAX_PATH instead of 25. +Files: src/os_mswin.c + +Patch 6.2.354 (extra) +Problem: Win32: When the mouse pointer is on a tear-off menu it is hidden + when typing but is not redisplayed when moved. (Markx Hackmann) +Solution: Handle the pointer move event for the tear-off menu window. +Files: src/gui_w32.c + +Patch 6.2.355 (after 6.2.303) +Problem: When 'encoding' is a double-byte encoding different from the + current locale, the width of characters is not correct. + Possible failure and memory leak when using iconv, Unicode + digraphs and 'encoding' is not "utf-8". +Solution: Use iconv() to discover the actual width of characters. + Add the "vc_fail" field to vimconv_T. + When converting a digraph, init the conversion type to NONE and + cleanup afterwards. +Files: src/digraph.c, src/mbyte.c, src/structs.h + +Patch 6.2.356 +Problem: When using a double-byte 'encoding' and 'selection' is + "exclusive", "vy" only yanks the first byte of a double-byte + character. (Xiangjiang Ma) +Solution: Correct the column in unadjust_for_sel() to position on the first + byte, always include the trailing byte of the selected text. +Files: src/normal.c + +Patch 6.2.357 (after 6.2.321) +Problem: Memory leak when resizing the Vim window. +Solution: Free the LineWraps array. +Files: src/screen.c + +Patch 6.2.358 (after 6.2.299) +Problem: Memory leak when using ":help" and the language doesn't match. +Solution: Free the array with matching tags. +Files: src/ex_cmds.c + +Patch 6.2.359 (after 6.2.352) +Problem: Compiler warning for long to int type cast. +Solution: Add explicit type cast. +Files: src/ex_cmds.c + +Patch 6.2.360 +Problem: "100|" in an empty line results in a ruler "1,0-100". (Pavol + Juhas) +Solution: Recompute w_virtcol if the target column was not reached. +Files: src/misc2.c + +Patch 6.2.361 (extra) +Problem: Win32: Run gvim, ":set go-=m", use Alt-Tab, keep Alt pressed while + pressing Esc, then release Alt: Cursor disappears and typing a key + causes a beep. (Hari Krishna Dara) +Solution: Don't ignore the WM_SYSKEYUP event when the menu is disabled. +Files: src/gui_w32.c + +Patch 6.2.362 (extra, after 6.2.347) +Problem: Win32: The manifest causes gvim not to work. (Dave Roberts) +Solution: Change "x86" to "X86". (Serge Pirotte) +Files: src/gvim.exe.mnf + +Patch 6.2.363 +Problem: In an empty file with 'showmode' off, "i" doesn't change the ruler + from "0-1" to "1". Typing "x<BS>" does show "1", but then <Esc> + doesn't make it "0-1" again. Same problem for ruler in + statusline. (Andrew Pimlott) +Solution: Remember the "empty line" flag with Insert mode and'ed to it. +Files: src/screen.c + +Patch 6.2.364 +Problem: HTML version of the documentation doesn't mention the encoding, + which is a problem for mbyte.txt. +Solution: Adjust the awk script. (Ilya Sher) +Files: runtime/doc/makehtml.awk + +Patch 6.2.365 +Problem: The configure checks for Perl and Python may add compile and link + arguments that break building Vim. +Solution: Do a sanity check: try building with the arguments. +Files: src/auto/configure, src/configure.in + +Patch 6.2.366 +Problem: When the GUI can't start because no valid font is found, there is + no error message. (Ugen) +Solution: Add an error message. +Files: src/gui.c + +Patch 6.2.367 +Problem: Building the help tags file while installing may fail if there is + another Vim in $PATH. +Solution: Specify the just installed Vim executable. (Gordon Prieur) +Files: src/Makefile + +Patch 6.2.368 +Problem: When 'autochdir' is set, closing a window doesn't change to the + directory of the new current window. (Salman Halim) +Solution: Handle 'autochdir' always when a window becomes the current one. +Files: src/window.c + +Patch 6.2.369 +Problem: Various memory leaks: when using globpath(), when searching for + help tags files, when defining a function inside a function, when + giving an error message through an exception, for the final "." + line in ":append", in expression "cond ? a : b" that fails and for + missing ")" in an expression. Using NULL pointer when adding + first user command and for pointer computations with regexp. + (tests by Dominique Pelle) +Solution: Fix the leaks by freeing the allocated memory. Don't use the + array of user commands when there are no entries. Use a macro + instead of a function call for saving and restoring regexp states. +Files: src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/misc2.c, src/regexp.c, src/screen.c, src/tag.c + +Patch 6.2.370 (extra, after6.2.341) +Problem: Win32: When the path to diff.exe contains a space and using the + vimrc generated by the install program, diff mode may not work. + (Alejandro Lopez-Valencia) +Solution: Do not use double quotes for arguments that do not have a space. +Files: src/dosinst.c + +Patch 6.2.371 +Problem: When 'virtualedit' is set and there is a Tab before the next "x", + "dtx" does not delete the whole Tab. (Ken Hashishi) +Solution: Move the cursor to the last position of the Tab. Also for + "df<Tab>". +Files: src/normal.c + +Patch 6.2.372 +Problem: When using balloon evaluation, no value is displayed for members + of structures and items of an array. +Solution: Include "->", "." and "[*]" in the expression. +Files: src/gui_beval.c, src/normal.c, src/vim.h + +Patch 6.2.373 +Problem: When 'winminheight' is zero and a window is reduced to zero + height, the ruler always says "Top" instead of the cursor + position. (Antoine J. Mechelynck) +Solution: Don't recompute w_topline for a zero-height window. +Files: src/window.c + +Patch 6.2.374 +Problem: ":echo "hello" | silent normal n" removes the "hello" message. + (Servatius Brandt) +Solution: Don't echo the search string when ":silent" was used. Also don't + show the mode. In general: don't clear to the end of the screen. +Files: src/gui.c, src/message.c, src/os_unix.c, src/proto/message.pro, + src/screen.c, src/search.c, src/window.c + +Patch 6.2.375 +Problem: When changing 'guioptions' the hit-enter prompt may be below the + end of the Vim window. +Solution: Call screen_alloc() before showing the prompt. +Files: src/message.c + +Patch 6.2.376 +Problem: Win32: Ruby interface cannot be dynamically linked with Ruby 1.6. +Solution: Add #ifdefs around use of rb_w32_snprintf(). (Beno卯t Cerrina) +Files: src/if_ruby.c + +Patch 6.2.377 (after 6.2.372) +Problem: Compiler warnings for signed/unsigned compare. (Michael Wookey) +Solution: Add type cast. +Files: src/normal.c + +Patch 6.2.378 (extra, after 6.2.118) +Problem: Mac: cannot build with Project Builder. +Solution: Add remove_tail_with_ext() to locate and remove the "build" + directory from the runtime path. Include os_unix.c when needed. + (Dany St Amant) +Files: src/misc1.c, src/os_macosx.c, src/vim.h + +Patch 6.2.379 +Problem: Using ":mkvimrc" in the ":options" window sets 'bufhidden' to + "delete". (Michael Naumann) +Solution: Do not add buffer-specific option values to a global vimrc file. +Files: src/option.c + +Patch 6.2.380 (extra) +Problem: DOS: "make test" fails when running it again. Can't "make test" + with Borland C. +Solution: Make sure ".out" files are deleted when they get in the way. Add + a "test" target to the Borland C Makefile. +Files: src/Make_bc5.mak, src/testdir/Make_dos.mak + +Patch 6.2.381 +Problem: Setting 'fileencoding' to a comma-separated list (confusing it + with 'fileencodings') does not result in an error message. + Setting 'fileencoding' in an empty file marks it as modified. + There is no "+" in the title after setting 'fileencoding'. +Solution: Check for a comma in 'fileencoding'. Only consider a non-empty + file modified by changing 'fileencoding'. Update the title after + changing 'fileencoding'. +Files: src/option.c + +Patch 6.2.382 +Problem: Running "make test" puts marks from test files in viminfo. +Solution: Specify a different viminfo file to use. +Files: src/testdir/test15.in, src/testdir/test49.in + +Patch 6.2.383 +Problem: ":hi foo term='bla" crashes Vim. (Antony Scriven) +Solution: Check that the closing ' is there. +Files: src/syntax.c + +Patch 6.2.384 +Problem: ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated. +Solution: Also compare the names without '&' characters. +Files: src/menu.c + +Patch 6.2.385 (extra) +Problem: Win32: forward_slash() and trash_input_buf() are undefined when + compiling with small features. (Ajit Thakkar) +Solution: Change the #ifdefs for forward_slash(). Don't call + trash_input_buf() if the input buffer isn't used. +Files: src/fileio.c, src/os_win32.c + +Patch 6.2.386 +Problem: Wasting time trying to read marks from the viminfo file for a + buffer without a name. +Solution: Skip reading marks when the buffer has no name. +Files: src/fileio.c + +Patch 6.2.387 +Problem: There is no highlighting of translated items in help files. +Solution: Search for a "help_ab.vim" syntax file when the help file is + called "*.abx". Also improve the help highlighting a bit. +Files: runtime/syntax/help.vim + +Patch 6.2.388 +Problem: GTK: When displaying some double-width characters they are drawn + as single-width, because of conversion to UTF-8. +Solution: Check the width that GTK uses and add a space if it's one instead + of two. +Files: src/gui_gtk_x11.c + +Patch 6.2.389 +Problem: When working over a slow connection, it's very annoying that the + last line is partly drawn and then cleared for every change. +Solution: Don't redraw the bottom line if no rows were inserted or deleted. + Don't draw the line if we know "@" lines will be used. +Files: src/screen.c + +Patch 6.2.390 +Problem: Using "r*" in Visual mode on multibyte characters only replaces + every other character. (Tyson Roberts) +Solution: Correct the cursor position after replacing each character. +Files: src/ops.c + +Patch 6.2.391 (extra) +Problem: The ":highlight" command is not tested. +Solution: Add a test script for ":highlight". +Files: src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/test51.in, + src/testdir/test51.ok + +Patch 6.2.392 (after 6.2.384) +Problem: Unused variable. +Solution: Remove "dlen". +Files: src/menu.c + +Patch 6.2.393 +Problem: When using very long lines the viminfo file can become very big. +Solution: Add the "s" flag to 'viminfo': skip registers with more than the + specified Kbyte of text. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.394 (after 6.2.391) +Problem: Test 51 fails on a terminal with 8 colors. (Tony Leneis) +Solution: Use "DarkBlue" instead of "Blue" to avoid the "bold" attribute. +Files: src/testdir/test51.in + +Patch 6.2.395 +Problem: When using ":tag" or ":pop" the previous matching tag is used. + But since the current file is different, the ordering of the tags + may change. +Solution: Remember what the current buffer was for when re-using cur_match. +Files: src/edit.c, src/ex_cmds.c, src/proto/tag.pro, src/structs.h, + src/tag.c + +Patch 6.2.396 +Problem: When CTRL-T jumps to another file and an autocommand moves the + cursor to the '" mark, don't end up on the right line. (Michal + Malecki) +Solution: Set the line number after loading the file. +Files: src/tag.c + +Patch 6.2.397 +Problem: When using a double-byte 'encoding' mapping <M-x> doesn't work. + (Yasuhiro Matsumoto) +Solution: Do not set the 8th bit of the character but use a modifier. +Files: src/gui_gtk_x11.c, src/gui_x11.c, src/misc2.c + +Patch 6.2.398 (extra) +Problem: Win32 console: no extra key modifiers are supported. +Solution: Encode the modifiers into the input stream. Also fix that special + keys are converted and stop working when 'tenc' is set. Also fix + that when 'tenc' is initialized the input and output conversion is + not setup properly until 'enc' or 'tenc' is set. +Files: src/getchar.c, src/option.c, src/os_win32.c + +Patch 6.2.399 +Problem: A ":set" command that fails still writes a message when it is + inside a try/catch block. +Solution: Include all the text of the message in the error message. +Files: src/charset.c, src/option.c + +Patch 6.2.400 +Problem: Can't compile if_xcmdsrv.c on HP-UX 11.0. +Solution: Include header file poll.h. (Malte Neumann) +Files: src/if_xcmdsrv.c + +Patch 6.2.401 +Problem: When opening a buffer that was previously opened, Vim does not + restore the cursor position if the first line starts with white + space. (Gregory Margo) +Solution: Don't skip restoring the cursor position if it is past the blanks + in the first line. +Files: src/buffer.c + +Patch 6.2.402 +Problem: Mac: "make install" doesn't generate help tags. (Benji Fisher) +Solution: Generate help tags before copying the runtime files. +Files: src/Makefile + +Patch 6.2.403 +Problem: ":@y" checks stdin if there are more commands to execute. This + fails if stdin is not connected, e.g., when starting the GUI from + KDE. (Ned Konz) +Solution: Only check for a next command if there still is typeahead. +Files: src/ex_docmd.c + +Patch 6.2.404 +Problem: Our own function to determine width of Unicode characters may get + outdated. (Markus Kuhn) +Solution: Use wcwidth() when it is available. Also use iswprint(). +Files: src/auto/configure, src/configure.in, src/config.h.in, src/mbyte.c + +Patch 6.2.405 +Problem: Cannot map zero without breaking the count before a command. + (Benji Fisher) +Solution: Disable mapping zero when entering a count. +Files: src/getchar.c, src/globals.h, src/normal.c + +Patch 6.2.406 +Problem: ":help \zs", ":help \@=" and similar don't find useful help. +Solution: Prepend "/\" to the arguments to find the desired help tag. +Files: src/ex_cmds.c + +Patch 6.2.407 (after 6.2.299) +Problem: ":help \@<=" doesn't find help. +Solution: Avoid that ":help \@<=" searches for the "<=" language. +Files: src/tag.c + +Patch 6.2.408 +Problem: ":compiler" is not consistent: Sets local options and a global + variable. (Douglas Potts) There is no error message when a + compiler is not supported. +Solution: Use ":compiler!" to set a compiler globally, otherwise it's local + to the buffer and "b:current_compiler" is used. Give an error + when no compiler script could be found. + Note: updated compiler plugins can be found at + ftp://ftp.vim.org/pub/vim/runtime/compiler/ +Files: runtime/compiler/msvc.vim, runtime/doc/quickfix.txt, src/eval.c, + src/ex_cmds2.c + +Patch 6.2.409 +Problem: The cursor ends up in the last column instead of after the line + when doing "i//<Esc>o" with 'indentexpr' set to "cindent(v:lnum)". + (Toby Allsopp) +Solution: Adjust the cursor as if in Insert mode. +Files: src/misc1.c + +Patch 6.2.410 (after 6.2.389) +Problem: In diff mode, when there are more filler lines than fit in the + window, they are not drawn. +Solution: Check for filler lines when skipping to draw a line that doesn't + fit. +Files: src/screen.c + +Patch 6.2.411 +Problem: A "\n" inside a string is not seen as a line break by the regular + expression matching. (Hari Krishna Dara) +Solution: Add the vim_regexec_nl() function for strings where "\n" is to be + matched with a line break. +Files: src/eval.c, src/ex_eval.c, src/proto/regexp.c, src/regexp.c + +Patch 6.2.412 +Problem: Ruby: "ruby << EOF" inside a function doesn't always work. Also + for ":python", ":tcl" and ":perl". +Solution: Check for "<< marker" and skip until "marker" before checking for + "endfunction". +Files: src/eval.c + +Patch 6.2.413 (after 6.2.411) +Problem: Missing prototype for vim_regexec_nl(). (Marcel Svitalsky) +Solution: Now really include the prototype. +Files: src/proto/regexp.pro + +Patch 6.2.414 +Problem: The function used for custom completion of user commands cannot + have <SID> to make it local. (Hari Krishna Dara) +Solution: Pass the SID of the script where the user command was defined on + to the completion. Also clean up #ifdefs. +Files: src/ex_docmd.c, src/eval.c, src/ex_getln.c, src/structs.h + +Patch 6.2.415 +Problem: Vim may crash after a sequence of events that change the window + size. The window layout assumes a larger window than is actually + available. (Servatius Brandt) +Solution: Invoke win_new_shellsize() from screenalloc() instead of from + set_shellsize(). +Files: src/screen.c, src/term.c + +Patch 6.2.416 +Problem: Compiler warning for incompatible pointer. +Solution: Remove the "&" in the call to poll(). (Xavier de Gaye) +Files: src/os_unix.c + +Patch 6.2.417 (after 6.2.393) +Problem: Many people forget that the '"' item in 'viminfo' needs to be + preceded with a backslash, +Solution: Add '<' as an alias for the '"' item. +Files: runtime/doc/options.txt, src/ops.c, src/option.c + +Patch 6.2.418 +Problem: Using ":nnoremap <F12> :echo "cheese" and ":cabbr cheese xxx": + when pressing <F12> still uses the abbreviation. (Hari Krishna) +Solution: Also apply "noremap" to abbreviations. +Files: src/getchar.c + +Patch 6.2.419 (extra) +Problem: Win32: Cannot open the Vim window inside another application. +Solution: Add the "-P" argument to specify the window title of the + application to run inside. (Zibo Zhao) +Files: runtime/doc/starting.txt, src/main.c, src/gui_w32.c, + src/gui_w48.c, src/if_ole.cpp, src/os_mswin.c, + src/proto/gui_w32.pro + +Patch 6.2.420 +Problem: Cannot specify a file to be edited in binary mode without setting + the global value of the 'binary' option. +Solution: Support ":edit ++bin file". +Files: runtime/doc/editing.txt, src/buffer.c, src/eval.c, src/ex_cmds.h, + src/ex_docmd.c, src/fileio.c, src/misc2.c + +Patch 6.2.421 +Problem: Cannot set the '[ and '] mark, which may be necessary when an + autocommand simulates reading a file. +Solution: Allow using "m[" and "m]". +Files: runtime/doc/motion.txt, src/mark.c + +Patch 6.2.422 +Problem: In CTRL-X completion messages the "/" makes them less readable. +Solution: Remove the slashes. (Antony Scriven) +Files: src/edit.c + +Patch 6.2.423 +Problem: ":vertical wincmd ]" does not split vertically. +Solution: Add "postponed_split_flags". +Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/tag.c + +Patch 6.2.424 +Problem: A BufEnter autocommand that sets an option stops 'mousefocus' from + working in Insert mode (Normal mode is OK). (Gregory Seidman) +Solution: In the Insert mode loop invoke gui_mouse_correct() when needed. +Files: src/edit.c + +Patch 6.2.425 +Problem: Vertical split and command line window: can only drag status line + above the cmdline window on the righthand side, not lefthand side. +Solution: Check the status line row instead of the window pointer. +Files: src/ui.c + +Patch 6.2.426 +Problem: A syntax region end match with a matchgroup that includes a line + break only highlights the last line with matchgroup. (Gary + Holloway) +Solution: Also use the line number of the position where the region + highlighting ends. +Files: src/syntax.c + +Patch 6.2.427 (extra) +Problem: When pasting a lot of text in a multibyte encoding, conversion + from 'termencoding' to 'encoding' may fail for some characters. + (Kuang-che Wu) +Solution: When there is an incomplete byte sequence at the end of the read + text keep it for the next time. +Files: src/mbyte.c, src/os_amiga.c, src/os_mswin.c, src/proto/mbyte.pro, + src/proto/os_mswin.pro, src/ui.c + +Patch 6.2.428 +Problem: The X11 clipboard supports the Vim selection for char/line/block + mode, but since the encoding is not included can't copy/paste + between two Vims with a different 'encoding'. +Solution: Add a new selection format that includes the 'encoding'. Perform + conversion when necessary. +Files: src/gui_gtk_x11.c, src/ui.c, src/vim.h + +Patch 6.2.429 +Problem: Unix: glob() doesn't work for a directory with a single quote in + the name. (Nazri Ramliy) +Solution: When using the shell to expand, only put double quotes around + spaces and single quotes, not the whole thing. +Files: src/os_unix.c + +Patch 6.2.430 +Problem: BOM at start of a vim script file is not recognized and causes an + error message. +Solution: Detect the BOM and skip over it. Also fix that after using + ":scriptencoding" the iconv() file descriptor was not closed + (memory leak). +Files: src/ex_cmds2.c + +Patch 6.2.431 +Problem: When using the horizontal scrollbar, the scrolling is limited to + the length of the cursor line. +Solution: Make the scroll limit depend on the longest visible line. The + cursor is moved when necessary. Including the 'h' flag in + 'guioptions' disables this. +Files: runtime/doc/gui.txt, runtime/doc/options.txt, src/gui.c, + src/misc2.c, src/option.h + +Patch 6.2.432 (after 6.2.430 and 6.2.431) +Problem: Lint warnings. +Solution: Add type casts. +Files: src/ex_cmds2.c, src/gui.c + +Patch 6.2.433 +Problem: Translating "VISUAL" and "BLOCK" separately doesn't give a good + result. (Alejandro Lopez Valencia) +Solution: Use a string for each combination. +Files: src/screen.c + +Patch 6.2.434 (after 6.2.431) +Problem: Compiler warning. (Salman Halim) +Solution: Add type casts. +Files: src/gui.c + +Patch 6.2.435 +Problem: When there are vertically split windows the minimal Vim window + height is computed wrong. +Solution: Use frame_minheight() to correctly compute the minimal height. +Files: src/window.c + +Patch 6.2.436 +Problem: Running the tests changes the user's viminfo file. +Solution: In test 49 tell the extra Vim to use the test viminfo file. +Files: src/testdir/test49.vim + +Patch 6.2.437 +Problem: ":mksession" always puts "set nocompatible" in the session file. + This changes option settings. (Ron Aaron) +Solution: Add an "if" to only change 'compatible' when needed. +Files: src/ex_docmd.c + +Patch 6.2.438 +Problem: When the 'v' flag is present in 'cpoptions', backspacing and then + typing text again: one character too much is overtyped before + inserting is done again. +Solution: Set "dollar_vcol" to the right column. +Files: src/edit.c + +Patch 6.2.439 +Problem: GTK 2: Changing 'lines' may cause a mismatch between the window + layout and the size of the window. +Solution: Disable the hack with force_shell_resize_idle(). +Files: src/gui_gtk_x11.c + +Patch 6.2.440 +Problem: When 'lazyredraw' is set the window title is still updated. + The size of the Visual area and the ruler are displayed too often. +Solution: Postpone redrawing the window title. Only show the Visual area + size when waiting for a character. Don't draw the ruler + unnecessary. +Files: src/buffer.c, src/normal.c, src/screen.c + +Patch 6.2.441 +Problem: ":unabbreviate foo " doesn't work, because of the trailing space, + while an abbreviation with a trailing space is not possible. (Paul + Jolly) +Solution: Accept a match with the lhs of an abbreviation without the + trailing space. +Files: src/getchar.c + +Patch 6.2.442 +Problem: Cannot manipulate the command line from a function. +Solution: Add getcmdline(), getcmdpos() and setcmdpos() functions and the + CTRL-\ e command. +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/eval.c + src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, + src/proto/ops.pro + +Patch 6.2.443 +Problem: With ":silent! echoerr something" you don't get the position of + the error. emsg() only writes the message itself and returns. +Solution: Also redirect the position of the error. +Files: src/message.c + +Patch 6.2.444 +Problem: When adding the 'c' flag to a ":substitute" command it may replace + more times than without the 'c' flag. Happens for a match that + starts with "\ze" (Marcel Svitalsky) and when using "\@<=" (Klaus + Bosau). +Solution: Correct "prev_matchcol" when replacing the line. Don't replace + the line when the pattern uses look-behind matching. +Files: src/ex_cmds.c, src/proto/regexp.pro, src/regexp.c + +Patch 6.2.445 +Problem: Copying vimtutor to /tmp/something is not secure, a symlink may + cause trouble. +Solution: Create a directory and create the file in it. Use "umask" to + create the directory with mode 700. (Stefan Nordhausen) +Files: src/vimtutor + +Patch 6.2.446 (after 6.2.404) +Problem: Using library functions wcwidth() and iswprint() results in + display problems for Hebrew characters. (Ron Aaron) +Solution: Disable the code to use the library functions, use our own. +Files: src/mbyte.c + +Patch 6.2.447 (after 6.2.440) +Problem: Now that the title is only updated when redrawing, it is no longer + possible to show it while executing a function. (Madoka Machitani) +Solution: Make ":redraw" also update the title. +Files: src/ex_docmd.c + +Patch 6.2.448 (after 6.2.427) +Problem: Mac: conversion done when 'termencoding' differs from 'encoding' + fails when pasting a longer text. +Solution: Check for an incomplete sequence at the end of the chunk to be + converted. (Eckehard Berns) +Files: src/mbyte.c + +Patch 6.2.449 (after 6.2.431) +Problem: Get error messages when switching files. +Solution: Check for a valid line number when calculating the width of the + horizontal scrollbar. (Helmut Stiegler) +Files: src/gui.c + +Patch 6.2.450 +Problem: " #include" and " #define" are not recognized with the default + option values for 'include' and 'defined'. (RG Kiran) +Solution: Adjust the default values to allow white space before the #. +Files: runtime/doc/options.txt, src/option.c + +Patch 6.2.451 +Problem: GTK: when using XIM there are various problems, including setting + 'modified' and breaking undo at the wrong moment. +Solution: Add "xim_changed_while_preediting", "preedit_end_col" and + im_is_preediting(). (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/globals.h, src/gui_gtk.c, src/gui_gtk_x11.c, + src/mbyte.c, src/misc1.c, src/proto/mbyte.pro, src/screen.c, + src/undo.c + +Patch 6.2.452 +Problem: In diff mode, when DiffAdd and DiffText highlight settings are + equal, an added line is highlighted with DiffChange. (Tom Schumm) +Solution: Remember the diff highlight type instead of the attributes. +Files: src/screen.c + +Patch 6.2.453 +Problem: ":s/foo\|\nbar/x/g" does not replace two times in "foo\nbar". + (Pavel Papushev) +Solution: When the pattern can match a line break also try matching at the + NUL at the end of a line. +Files: src/ex_cmds.c, src/regexp.c + +Patch 6.2.454 +Problem: ":let b:changedtick" doesn't work. (Alan Schmitt) ":let + b:changedtick = 99" does not give an error message. +Solution: Add code to recognize ":let b:changedtick". +Files: src/eval.c + +Patch 6.2.455 (after 6.2.297) +Problem: In Python commands the current locale changes how certain Python + functions work. (Eugene M. Minkovskii) +Solution: Set the LC_NUMERIC locale to "C" while executing a Python command. +Files: src/if_python.c + +Patch 6.2.456 (extra) +Problem: Win32: Editing a file by its Unicode name (dropping it on Vim or + using the file selection dialog) doesn't work. (Yakov Lerner, Alex + Jakushev) +Solution: Use wide character functions when file names are involved and + convert from/to 'encoding' where needed. +Files: src/gui_w48.c, src/macros.h, src/memfile.c, src/memline.c, + src/os_mswin.c, src/os_win32.c + +Patch 6.2.457 (after 6.2.244) +Problem: When 'encoding' is "utf-8" and writing text with chars above 0x80 + in latin1, conversion is wrong every 8200 bytes. (Oyvind Holm) +Solution: Correct the utf_ptr2len_check_len() function and fix the problem + of displaying 0xf7 in utfc_ptr2len_check_len(). +Files: src/mbyte.c + +Patch 6.2.458 +Problem: When 'virtualedit' is set "$" doesn't move to the end of an + unprintable character, causing "y$" not to include that character. + (Fred Ma) +Solution: Set "coladd" to move the cursor to the end of the character. +Files: src/misc2.c + +Patch 6.2.459 (after 6.2.454) +Problem: Variable "b" cannot be written. (Salman Halim) +Solution: Compare strings properly. +Files: src/eval.c + +Patch 6.2.460 (extra, after 6.2.456) +Problem: Compiler warnings for missing prototypes. +Solution: Include the missing prototypes. +Files: src/proto/os_win32.pro + +Patch 6.2.461 +Problem: After using a search command "x" starts putting single characters + in the numbered registers. +Solution: Reset "use_reg_one" at the right moment. +Files: src/normal.c + +Patch 6.2.462 +Problem: Finding a matching parenthesis does not correctly handle a + backslash in a trailing byte. +Solution: Handle multibyte characters correctly. (Taro Muraoka) +Files: src/search.c + +Patch 6.2.463 (extra) +Problem: Win32: An NTFS file system may contain files with extra info + streams. The current method to copy them creates one and then + deletes it again. (Peter Toennies) Also, only three streams with + hard coded names are copied. +Solution: Use BackupRead() to check which info streams the original file + contains and only copy these streams. +Files: src/os_win32.c + +Patch 6.2.464 (extra, after 6.2.427) +Problem: Amiga: Compilation error with gcc. (Ali Akcaagac) +Solution: Move the #ifdef outside of Read(). +Files: src/os_amiga.c + +Patch 6.2.465 +Problem: When resizing the GUI window the window manager sometimes moves it + left of or above the screen. (Michael McCarty) +Solution: Check the window position after resizing it and move it onto the + screen when it isn't. +Files: src/gui.c + +Patch 6.2.466 (extra, after 6.2.456) +Problem: Win32: Compiling with Borland C fails, and an un/signed warning. +Solution: Redefine wcsicmp() to wcscmpi() and add type casts. (Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 6.2.467 (extra, after 6.2.463) +Problem: Win32: can't compile without multibyte feature. (Ajit Thakkar) +Solution: Add #ifdefs around the info stream code. +Files: src/os_win32.c + +Patch 6.2.468 +Problem: Compiler warnings for shadowed variables. (Matthias Mohr) +Solution: Delete superfluous variables and rename others. +Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/if_cscope.c, + src/fold.c, src/option.c, src/os_unix.c, src/quickfix.c, + src/regexp.c + +Patch 6.2.469 (extra, after 6.2.456) +Problem: Win32: Can't create swap file when 'encoding' differs from the + active code page. (Kriton Kyrimis) +Solution: In enc_to_ucs2() terminate the converted string with a NUL +Files: src/os_mswin.c + +Patch 6.2.470 +Problem: The name returned by tempname() may be equal to the file used for + shell output when ignoring case. +Solution: Skip 'O' and 'I' in tempname(). +Files: src/eval.c + +Patch 6.2.471 +Problem: "-L/usr/lib" is used in the link command, even though it's + supposed to be filtered out. "-lw" and "-ldl" are not + automatically added when needed for "-lXmu". (Antonio Colombo) +Solution: Check for a space after the argument instead of before. Also + remove "-R/usr/lib" if it's there. Check for "-lw" and "-ldl" + before trying "-lXmu". +Files: src/auto/configure, src/configure.in, src/link.sh + +Patch 6.2.472 +Problem: When using a FileChangedShell autocommand that changes the current + buffer, a buffer exists that can't be wiped out. + Also, Vim sometimes crashes when executing an external command + that changes the buffer and a FileChangedShell autocommand is + used. (Hari Krishna Dara) + Users are confused by the warning for a file being changed outside + of Vim. +Solution: Avoid that the window counter for a buffer is incremented twice. + Avoid that buf_check_timestamp() is used recursively. + Add a hint to look in the help for more info. +Files: src/ex_cmds.c, src/fileio.c + +Patch 6.2.473 +Problem: Using CTRL-] in a help buffer without a name causes a crash. +Solution: Check for name to be present before using it. (Taro Muraoka) +Files: src/tag.c + +Patch 6.2.474 (extra, after 6.2.456) +Problem: When Vim is starting up conversion is done unnecessarily. Failure + to find the runtime files on Windows 98. (Randall W. Morris) +Solution: Init enc_codepage negative, only use it when not negative. + Don't use GetFileAttributesW() on Windows 98 or earlier. +Files: src/globals.h, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, + src/os_win32.c + +Patch 6.2.475 +Problem: Commands after "perl <<EOF" are parsed as Vim commands when they + are not executed. +Solution: Properly skip over the perl commands. +Files: src/ex_docmd.c, src/ex_getln.c, src/if_perl.xs, src/if_python.c, + src/if_ruby.c, src/if_tcl.c, src/misc2.c + +Patch 6.2.476 +Problem: When reloading a hidden buffer changed outside of Vim and the + current buffer is read-only, the reloaded buffer becomes + read-only. (Hari Krishna Dara) +Solution: Save the 'readonly' flag of the reloaded buffer instead of the + current buffer. +Files: src/fileio.c + +Patch 6.2.477 +Problem: Using remote_send(v:servername, "\<C-V>") causes Vim to hang. + (Yakov Lerner) +Solution: When the resulting string is empty don't set received_from_client. +Files: src/main.c + +Patch 6.2.478 +Problem: Win32: "--remote file" fails changing directory if the current + directory name starts with a single quote. (Iestyn Walters) +Solution: Add a backslash where it will be removed later. +Files: src/main.c, src/misc2.c, src/proto/misc2.pro + +Patch 6.2.479 +Problem: The error message for errors during recovery goes unnoticed. +Solution: Avoid that the hit-enter prompt overwrites the message. Add a few + lines to make the error stand out. +Files: src/main.c, src/message.c, src/memline.c + +Patch 6.2.480 +Problem: NetBeans: Using negative index in array. backslash at end of + message may cause Vim to crash. (Xavier de Gaye) +Solution: Initialize buf_list_used to zero. Check for trailing backslash. +Files: src/netbeans.c + +Patch 6.2.481 +Problem: When writing a file it is not possible to specify that hard and/or + symlinks are to be broken instead of preserved. +Solution: Add the "breaksymlink" and "breakhardlink" values to 'backupcopy'. + (Simon Ekstrand) +Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h + +Patch 6.2.482 +Problem: Repeating insert of CTRL-K 1 S doesn't work. The superscript 1 is + considered to be a digit. (Juergen Kraemer) +Solution: In vim_isdigit() only accept '0' to '9'. Use VIM_ISDIGIT() for + speed where possible. Also add vim_isxdigit(). +Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, + src/edit.c, src/eval.c,, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/if_xcmdsrv.c, src/farsi.c, src/fileio.c, src/fold.c, + src/getchar.c, src/gui.c, src/if_cscope.c, src/macros.h, + src/main.c, src/mark.c, src/mbyte.c, src/menu.c, src/misc1.c, + src/misc2.c, src/normal.c, src/ops.c, src/option.c, + src/proto/charset.pro, src/regexp.c, src/screen.c, src/search.c, + src/syntax.c, src/tag.c, src/term.c, src/termlib.c + +Patch 6.2.483 (extra, after 6.2.482) +Problem: See 6.2.482. +Solution: Extra part of patch 6.2.482. +Files: src/gui_photon.c, src/gui_w48.c, src/os_msdos.c, src/os_mswin.c + +Patch 6.2.484 +Problem: MS-Windows: With the included diff.exe, differences after a CTRL-Z + are not recognized. (Peter Keresztes) +Solution: Write the files with unix fileformat and invoke diff with --binary + if possible. +Files: src/diff.c + +Patch 6.2.485 +Problem: A BufWriteCmd autocommand cannot know if "!" was used or not. + (Hari Krishna Dara) +Solution: Add the v:cmdbang variable. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, + src/fileio.c, src/vim.h + +Patch 6.2.486 (6.2.482) +Problem: Diff for eval.c is missing. +Solution: Addition to patch 6.2.482. +Files: src/eval.c + +Patch 6.2.487 (extra, after 6.2.456) +Problem: Compiler warnings for wrong prototype. (Alejandro Lopez Valencia) +Solution: Delete the prototype for Handle_WM_Notify(). +Files: src/proto/gui_w32.pro + +Patch 6.2.488 +Problem: Missing ")" in *.ch filetype detection. +Solution: Add the ")". (Ciaran McCreesh) +Files: runtime/filetype.vim + +Patch 6.2.489 +Problem: When accidentally opening a session in Vim which has already been + opened in another Vim there is a long row of ATTENTION prompts. + Need to quit each of them to get out. (Robert Webb) +Solution: Add the "Abort" alternative to the dialog. +Files: src/memline.c + +Patch 6.2.490 +Problem: With 'paragraph' it is not possible to use a single dot as a + paragraph boundary. (Dorai Sitaram) +Solution: Allow using " " (two spaces) in 'paragraph' to match ".$" or + ". $" +Files: src/search.c + +Patch 6.2.491 +Problem: Decrementing a position doesn't take care of multibyte chars. +Solution: Adjust the column for multibyte characters. Remove mb_dec(). + (Yasuhiro Matsumoto) +Files: src/mbyte.c, src/misc2.c, src/proto/mbyte.pro + +Patch 6.2.492 +Problem: When using ":redraw" while there is a message, the next ":echo" + still causes text to scroll. (Yasuhiro Matsumoto) +Solution: Reset msg_didout and msg_col, so that after ":redraw" the next + message overwrites an existing one. +Files: src/ex_docmd.c + +Patch 6.2.493 +Problem: "@x" doesn't work when 'insertmode' is set. (Benji Fisher) +Solution: Put "restart_edit" in the typeahead buffer, so that it's used + after executing the register contents. +Files: src/ops.c + +Patch 6.2.494 +Problem: Using diff mode with two windows, when moving horizontally in + inserted lines, a fold in the other window may open. +Solution: Compute the line number in the other window correctly. +Files: src/diff.c + +Patch 6.2.495 (extra, after 6.2.456) +Problem: Win32: The file dialog doesn't work on Windows 95. +Solution: Put the wide code of gui_mch_browse() in gui_mch_browseW() and use + it only on Windows NT/2000/XP. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.2.496 +Problem: FreeBSD 4.x: When compiled with the pthread library (Python) a + complicated pattern may cause Vim to crash. Catching the signal + doesn't work. +Solution: When compiled with threads, instead of using the normal stacksize + limit, use the size of the initial stack. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c + +Patch 6.2.497 (extra) +Problem: Russian messages are only available in one encoding. +Solution: Convert the messages to MS-Windows codepages. (Vassily Ragosin) +Files: src/po/Makefile + +Patch 6.2.498 +Problem: Non-latin1 help files are not properly supported. +Solution: Support utf-8 help files and convert them to 'encoding' when + needed. +Files: src/fileio.c + +Patch 6.2.499 +Problem: When writing a file and halting the system, the file might be lost + when using a journaling file system. +Solution: Use fsync() to flush the file data to disk after writing a file. + (Radim Kolar) +Files: src/fileio.c + +Patch 6.2.500 (extra) +Problem: The DOS/MS-Windows the installer doesn't use the --binary flag for + diff. +Solution: Add --binary to the diff argument in MyDiff(). (Alejandro Lopez- + Valencia) +Files: src/dosinst.c + +Patch 6.2.501 +Problem: Vim does not compile with MorphOS. +Solution: Add a Makefile and a few changes to make Vim work with MorphOS. + (Ali Akcaagac) +Files: runtime/doc/os_amiga.txt, src/INSTALLami.txt, + src/Make_morphos.mak, src/memfile.c, src/term.c + +Patch 6.2.502 +Problem: Building fails for generating message files. +Solution: Add dummy message files. +Files: src/po/ca.po, src/po/ru.po, src/po/sv.po + +Patch 6.2.503 +Problem: Mac: Can't compile MacRoman conversions without the GUI. +Solution: Also link with the Carbon framework for the terminal version, for + the MacRoman conversion functions. (Eckehard Berns) + Remove -ltermcap from the GUI link command, it is not needed. +Files: src/auto/configure, src/Makefile, src/configure.in + +Patch 6.2.504 +Problem: Various problems with 'cindent', among which that a + list of variable declarations is not indented properly. +Solution: Fix the wrong indenting. Improve indenting of C++ methods. + Add the 'i', 'b' and 'W' options to 'cinoptions'. (mostly by + Helmut Stiegler) + Improve indenting of preprocessor-continuation lines. +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 6.2.505 +Problem: Help for -P argument is missing. (Ronald Hoellwarth) +Solution: Add the patch that was missing in 6.2.419. +Files: runtime/doc/starting.txt + +Patch 6.2.506 (extra) +Problem: Win32: When 'encoding' is a codepage then reading a utf-8 file + only works when iconv is available. Writing a file in another + codepage uses the wrong kind of conversion. +Solution: Use internal conversion functions. Enable reading and writing + files with 'fileencoding' different from 'encoding' for all valid + codepages and utf-8 without the need for iconv. +Files: src/fileio.c, src/testdir/Make_dos.mak, src/testdir/test52.in, + src/testdir/test52.ok + +Patch 6.2.507 +Problem: The ownership of the file with the password for the NetBeans + connection is not checked. "-nb={file}" doesn't work for GTK. +Solution: Only accept the file when owned by the user and not accessible by + others. Detect "-nb=" for GTK. +Files: src/netbeans.c, src/gui_gtk_x11.c + +Patch 6.2.508 +Problem: Win32: "v:lang" does not show the current language for messages if + it differs from the other locale settings. +Solution: Use the value of the $LC_MESSAGES environment variable. +Files: src/ex_cmds2.c + +Patch 6.2.509 (after 6.2.508) +Problem: Crash when $LANG is not set. +Solution: Add check for NULL pointer. (Ron Aaron) +Files: src/ex_cmds2.c + +Patch 6.2.510 (after 6.2.507) +Problem: Warning for pointer conversion. +Solution: Add a type cast. +Files: src/gui_gtk_x11.c + +Patch 6.2.511 +Problem: Tags in Russian help files are in utf-8 encoding, which may be + different from 'encoding'. +Solution: Use the "TAG_FILE_ENCODING" field in the tags file to specify the + encoding of the tags. Convert help tags from 'encoding' to the + tag file encoding when searching for matches, do the reverse when + listing help tags. +Files: runtime/doc/tagsrch.txt, src/ex_cmds.c, src/tag.c + +Patch 6.2.512 +Problem: Translating "\"\n" is useless. (Gerfried Fuchs) +Solution: Remove the _() around it. +Files: src/main.c, src/memline.c + +Patch 6.2.513 (after 6.2.507) +Problem: NetBeans: the check for owning the connection info file can be + simplified. (Nikolay Molchanov) +Solution: Only check if the access mode is right. +Files: src/netbeans.c + +Patch 6.2.514 +Problem: When a highlight/syntax group name contains invalid characters + there is no warning. +Solution: Add an error for unprintable characters and a warning for other + invalid characters. +Files: src/syntax.c + +Patch 6.2.515 +Problem: When using the options window 'swapfile' is reset. +Solution: Use ":setlocal" instead of ":set". +Files: runtime/optwin.vim + +Patch 6.2.516 +Problem: The sign column cannot be seen, looks like there are two spaces + before the text. (Rob Retter) +Solution: Add the SignColumn highlight group. +Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/option.c, + src/screen.c, src/syntax.c, src/vim.h + +Patch 6.2.517 +Problem: Using "r*" in Visual mode on multibyte characters replaces + too many characters. In Visual Block mode replacing with a + multibyte character doesn't work. +Solution: Adjust the operator end for the difference in byte length of the + original and the replaced character. Insert all bytes of a + multibyte character, take care of double-wide characters. +Files: src/ops.c + +Patch 6.2.518 +Problem: Last line of a window is not updated after using "J" and then "D". + (Adri Verhoef) +Solution: When no line is found below a change that doesn't need updating, + update all lines below the change. +Files: src/screen.c + +Patch 6.2.519 +Problem: Mac: cannot read/write files in MacRoman format. +Solution: Do internal conversion from/to MacRoman to/from utf-8 and latin1. + (Eckehard Berns) +Files: src/fileio.c + +Patch 6.2.520 (extra) +Problem: The NSIS installer is outdated. +Solution: Make it work with NSIS 2.0. Also include console executables for + Win 95/98/ME and Win NT/2000/XP. Use LZWA compression. Use + "/oname" to avoid having to rename files before running NSIS. +Files: Makefile, nsis/gvim.nsi + +Patch 6.2.521 +Problem: When using silent Ex mode the "changing a readonly file" warning + is omitted but the one second wait isn't. (Yakov Lerner) +Solution: Skip the delay when "silent_mode" is set. +Files: src/misc1.c + +Patch 6.2.522 +Problem: GUI: when changing 'cmdheight' in the gvimrc file the window + layout is messed up. (Keith Dart) +Solution: Skip updating the window layout when changing 'cmdheight' while + still starting up. +Files: src/option.c + +Patch 6.2.523 +Problem: When loading a session and aborting when a swap file already + exists, the user is left with useless windows. (Robert Webb) +Solution: Load one file before creating the windows. +Files: src/ex_docmd.c + +Patch 6.2.524 (extra, after 6.2.520) +Problem: Win32: (un)installing gvimext.dll may fail if it was used. + The desktop and start menu links are created for the current user + instead of all users. + Using the home directory as working directory for the links is a + bad idea for multi-user systems. + Cannot use Vim from the "Open With..." menu. +Solution: Force a reboot if necessary. (Alejandro Lopez-Valencia) Also use + macros for the directory of the source and runtime files. Use + "CSIDL_COMMON_*" instead of "CSIDL_*" when possible. + Do not specify a working directory in the links. + Add Vim to the "Open With..." menu. (Giuseppe Bilotta) +Files: nsis/gvim.nsi, src/dosinst.c, src/dosinst.h, src/uninstal.c + +Patch 6.2.525 +Problem: When the history contains a very long line ":history" causes a + crash. (Volker Kiefel) +Solution: Shorten the history entry to fit it in one line. +Files: src/ex_getln.c + +Patch 6.2.526 +Problem: When s:lang is "ja" the Japanese menus are not used. +Solution: Add 'encoding' to the language when there is no charset. +Files: runtime/menu.vim + +Patch 6.2.527 +Problem: The 2html script uses ":wincmd p", which breaks when using some + autocommands. +Solution: Remember the window numbers and jump to them with ":wincmd w". + Also add XHTML support. (Panagiotis Issaris) +Files: runtime/syntax/2html.vim + +Patch 6.2.528 +Problem: NetBeans: Changes of the "~" command are not reported. +Solution: Call netbeans_inserted() after performing "~". (Gordon Prieur) + Also change NetBeans debugging to append to the log file. + Also fix that "~" in Visual block mode changes too much if there + are multibyte characters. +Files: src/nbdebug.c, src/normal.c, src/ops.c + +Patch 6.2.529 (extra) +Problem: VisVim only works for Admin. Doing it for one user doesn't work. + (Alexandre Gouraud) +Solution: When registering the module fails, simply continue. +Files: src/VisVim/VisVim.cpp + +Patch 6.2.530 +Problem: Warning for missing prototype on the Amiga. +Solution: Include time.h +Files: src/version.c + +Patch 6.2.531 +Problem: In silent ex mode no messages are given, which makes debugging + very difficult. +Solution: Do output messages when 'verbose' is set. +Files: src/message.c, src/ui.c + +Patch 6.2.532 (extra) +Problem: Compiling for Win32s with VC 4.1 doesn't work. +Solution: Don't use CP_UTF8 if it's not defined. Don't use CSIDL_COMMON* + when not defined. +Files: src/dosinst.h, src/fileio.c + +Win32 console: After patch 6.2.398 Ex mode did not work. (Yasuhiro Matsumoto) + +Patch 6.3a.001 +Problem: Win32: if testing for the "--binary" option fails, diff isn't used + at all. +Solution: Handle the "ok" flag properly. (Yasuhiro Matsumoto) +Files: src/diff.c + +Patch 6.3a.002 +Problem: NetBeans: An insert command from NetBeans beyond the end of a + buffer crashes Vim. (Xavier de Gaye) +Solution: Use a local pos_T structure for the position. +Files: src/netbeans.c + +Patch 6.3a.003 +Problem: E315 error with auto-formatting comments. (Henry Van Roessel) +Solution: Pass the line number to same_leader(). +Files: src/ops.c + +Patch 6.3a.004 +Problem: Test32 fails on Windows XP for the DJGPP version. Renaming + test11.out fails. +Solution: Don't try renaming, create new files to use for the test. +Files: src/testdir/test32.in, src/testdir/test32.ok + +Patch 6.3a.005 +Problem: ":checkpath!" does not use 'includeexpr'. +Solution: Use a file name that was found directly. When a file was not + found and the located name is empty, use the rest of the line. +Files: src/search.c + +Patch 6.3a.006 +Problem: "yip" moves the cursor to the first yanked line, but not to the + first column. Looks like not all text was yanked. (Jens Paulus) +Solution: Move the cursor to the first column. +Files: src/search.c + +Patch 6.3a.007 +Problem: 'cindent' recognizes "enum" but not "typedef enum". +Solution: Skip over "typedef" before checking for "enum". (Helmut Stiegler) + Also avoid that searching for this item goes too far back. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 6.3a.008 (extra) +Problem: Windows 98: Some of the wide functions are not implemented, + resulting in file I/O to fail. This depends on what Unicode + support is installed. +Solution: Handle the failure and fall back to non-wide functions. +Files: src/os_win32.c + +Patch 6.3a.009 +Problem: Win32: Completion of filenames does not work properly when + 'encoding' differs from the active code page. +Solution: Use wide functions for expanding wildcards when appropriate. +Files: src/misc1.c + +Patch 6.3a.010 (extra) +Problem: Win32: Characters in the window title that do not appear in the + active codepage are replaced by a question mark. +Solution: Use DefWindowProcW() instead of DefWindowProc() when possible. +Files: src/glbl_ime.cpp, src/globals.h, src/proto/gui_w16.pro, + src/proto/gui_w32.pro, src/gui_w16.c, src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.011 +Problem: Using the explorer plugin changes a local directory to the global + directory. +Solution: Don't use ":chdir" to restore the current directory. Make + "expand('%:p')" remove "/../" and "/./" items from the path. +Files: runtime/plugin/explorer.vim, src/eval.c, src/os_unix.c + +Patch 6.3a.012 (extra) +Problem: On Windows 98 the installer doesn't work, don't even get the "I + agree" button. The check for the path ending in "vim" makes the + browse dialog hard to use. The default path when no previous Vim + is installed is "c:\vim" instead of "c:\Program Files\Vim". +Solution: Remove the background gradient command. Change the + .onVerifyInstDir function to a leave function for the directory + page. Don't let the install program default to c:\vim when no + path could be found. +Files: nsis/gvim.nsi, src/dosinst.c + +Patch 6.3a.013 (extra) +Problem: Win32: Characters in the menu that are not in the active codepage + are garbled. +Solution: Convert menu strings from 'encoding' to the active codepage. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.014 +Problem: Using multibyte text and highlighting in a statusline causes gaps + to appear. (Helmut Stiegler) +Solution: Advance the column by text width instead of number of bytes. Add + the vim_strnsize() function. +Files: src/charset.c, src/proto/charset.pro, src/screen.c + +Patch 6.3a.015 +Problem: Using the "select all" menu item when 'insertmode' is set and + clicking the mouse button doesn't return to Insert mode. The + Buffers/Delete menu doesn't offer a choice to abandon a changed + buffer. (Jens Paulus) +Solution: Don't use CTRL-\ CTRL-N. Add ":confirm" for the Buffers menu + items. +Files: runtime/menu.vim + +Patch 6.3a.016 +Problem: After cancelling the ":confirm" dialog the error message and + hit-enter prompt may not be displayed properly. +Solution: Flush output after showing the dialog. +Files: src/message.c + +Patch 6.3a.017 +Problem: servername() doesn't work when Vim was started with the "-X" + argument or when the "exclude" in 'clipboard' matches the terminal + name. (Robert Nowotniak) +Solution: Force connecting to the X server when using client-server + commands. +Files: src/eval.c, src/globals.h, src/os_unix.c + +Patch 6.3a.018 (after 6.3a.017) +Problem: Compiler warning for return value of make_connection(). +Solution: Use void return type. +Files: src/eval.c + +Patch 6.3a.019 (extra) +Problem: Win32: typing non-latin1 characters doesn't work. +Solution: Invoke _OnChar() directly to avoid that the argument is truncated + to a byte. Convert the UTF-16 character to bytes according to + 'encoding' and ignore 'termencoding'. Same for _OnSysChar(). +Files: src/gui_w32.c, src/gui_w48.c + +Patch 6.3a.020 (extra) +Problem: Missing support for AROS (AmigaOS reimplementation). Amiga GUI + doesn't work. +Solution: Add AROS support. (Adam Chodorowski) + Fix Amiga GUI problems. (Georg Steger, Ali Akcaagac) +Files: Makefile, src/Make_aros.mak, src/gui_amiga.c, src/gui_amiga.h, + src/memfile.c, src/os_amiga.c, src/term.c + +Patch 6.3a.021 (after 6.3a.017) +Problem: Can't compile with X11 but without GUI. +Solution: Put use of "gui.in_use" inside an #ifdef. +Files: src/eval.c + +Patch 6.3a.022 +Problem: When typing Tabs when 'softtabstop' is used and 'list' is set a + tab is counted for two spaces. +Solution: Use the "L" flag in 'cpoptions' to tell whether a tab is counted + as two spaces or as 'tabstop'. (Antony Scriven) +Files: runtime/doc/options.txt, src/edit.c + +Patch 6.3a.023 +Problem: Completion on the command line doesn't handle backslashes + properly. Only the tail of matches is shown, even when not + completing filenames. +Solution: When turning the string into a pattern double backslashes. Don't + omit the path when not expanding files or directories. +Files: src/ex_getln.c + +Patch 6.3a.024 +Problem: The "save all" toolbar item fails for buffers that don't have a + name. When using ":wa" or closing the Vim window and there are + nameless buffers, browsing for a name may cause the name being + given to the wrong buffer or not stored properly. ":browse" only + worked for one file. +Solution: Use ":confirm browse" for "save all". + Pass buffer argument to setfname(). Restore "browse" flag and + "forceit" after doing the work for one file. +Files: runtime/menu.vim, src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/memline.c, + src/message.c, src/window.c, src/proto/buffer.pro, + src/proto/ex_cmds2.pro, src/proto/memline.pro + +Patch 6.3a.025 +Problem: Setting 'virtualedit' moves the cursor. (Benji Fisher) +Solution: Update the virtual column before using it. +Files: src/option.c + +Patch 6.3a.026 (extra, after 6.3a.008) +Problem: Editing files on Windows 98 doesn't work when 'encoding' is + "utf-8" (Antoine Mechelynck) + Warning for missing function prototype. +Solution: For all wide functions check if it failed because it is not + implemented. Use ANSI function declaration for char_to_string(). +Files: src/gui_w48.c, src/os_mswin.c, src/os_win32.c + +Patch 6.3a.027 (extra, after 6.3a.026) +Problem: Compiler warning for function argument. +Solution: Declare both char and WCHAR arrays. +Files: src/gui_w48.c + +Patch 6.3a.028 +Problem: ":normal ." doesn't work inside a function, because redo is saved + and restored. (Benji Fisher) +Solution: Make a copy of the redo buffer when executing a function. +Files: src/getchar.c + +Patch 6.3b.001 (extra) +Problem: Bcc 5: The generated auto/pathdef can't be compiled. +Solution: Fix the way quotes and backslashes are escaped. +Files: src/Make_bc5.mak + +Patch 6.3b.002 +Problem: Win32: conversion during file write fails when a double-byte + character is split over two writes. +Solution: Fix the conversion retry without a trailing byte. (Taro Muraoka) +Files: src/fileio.c + +Patch 6.3b.003 (extra) +Problem: Win32: When compiling with Borland C 5.5 and 'encoding' is "utf-8" + then Vim can't open files under MS-Windows 98. (Antoine J. + Mechelynck) +Solution: Don't use _wstat(), _wopen() and _wfopen() in this situation. +Files: src/os_mswin.c, src/os_win32.c + +Patch 6.3b.004 +Problem: ":helpgrep" includes a trailing CR in the text line. +Solution: Remove the CR. +Files: src/quickfix.c + +Patch 6.3b.005 +Problem: ":echo &g:ai" results in the local option value. (Salman Halim) +Solution: Pass the flags from find_option_end() to get_option_value(). +Files: src/eval.c + +Patch 6.3b.006 +Problem: When using "mswin.vim", CTRL-V in Insert mode leaves cursor before + last pasted character. (Mathew Davis) +Solution: Use the same Paste() function as in menu.vim. +Files: runtime/mswin.vim + +Patch 6.3b.007 +Problem: Session file doesn't restore view on windows properly. (Robert + Webb) +Solution: Restore window sizes both before and after restoring the view, so + that the view, cursor position and size are restored properly. +Files: src/ex_docmd.c + +Patch 6.3b.008 +Problem: Using ":finally" in a user command doesn't always work. (Hari + Krishna Dara) +Solution: Don't assume that using getexline() means the command was typed. +Files: src/ex_docmd.c + +Patch 6.3b.009 (extra) +Problem: Win32: When the -P argument is not found in a window title, there + is no error message. +Solution: When the window can't be found give an error message and exit. + Also use try/except to catch failing to open the MDI window. + (Michael Wookey) +Files: src/gui_w32.c + +Patch 6.3b.010 +Problem: Win32: Using the "-D" argument and expanding arguments may cause a + hang, because the terminal isn't initialized yet. (Vince Negri) +Solution: Don't go into debug mode before the terminal is initialized. +Files: src/main.c + +Patch 6.3b.011 +Problem: Using CTRL-\ e while obtaining an expression aborts the command + line. (Hari Krishna Dara) +Solution: Insert the CTRL-\ e as typed. +Files: src/ex_getln.c + +Patch 6.3b.012 (after 6.3b.010) +Problem: Can't compile with tiny features. (Norbert Tretkowski) +Solution: Add #ifdefs. +Files: src/main.c + +Patch 6.3b.013 +Problem: Loading a session file results in editing the wrong file in the + first window when this is not the file at the current position in + the argument list. (Robert Webb) +Solution: Check w_arg_idx_invalid to decide whether to edit a file. +Files: src/ex_docmd.c + +Patch 6.3b.014 +Problem: ":runtime! foo*.vim" may using freed memory when a sourced script + changes the value of 'runtimepath'. +Solution: Make a copy of 'runtimepath' when looping over the matches. +Files: src/ex_cmds2.c + +Patch 6.3b.015 +Problem: Get lalloc(0) error when using "p" in Visual mode while + 'clipboard' contains "autoselect,unnamed". (Mark Wagonner) +Solution: Avoid allocating zero bytes. Obtain the clipboard when necessary. +Files: src/ops.c + +Patch 6.3b.016 +Problem: When 'virtualedit' is used "x" doesn't delete the last character + of a line that has as many characters as 'columns'. (Yakov Lerner) +Solution: When the cursor isn't moved let oneright() return FAIL. +Files: src/edit.c + +Patch 6.3b.017 +Problem: Win32: "vim --remote-wait" doesn't exit when the server finished + editing the file. (David Fishburn) +Solution: In the rrhelper plugin change backslashes to forward slashes and + escape special characters. +Files: runtime/plugin/rrhelper.vim + +Patch 6.3b.018 +Problem: The list of help files in the "local additions" table doesn't + recognize utf-8 encoding. (Yasuhiro Matsumoto) +Solution: Recognize utf-8 characters. +Files: src/ex_cmds.c + +Patch 6.3b.019 +Problem: When $VIMRUNTIME is not a full path name the "local additions" + table lists all the help files. +Solution: Use fullpathcmp() instead of fnamecmp() to compare the directory + names. +Files: src/ex_cmds.c + +Patch 6.3b.020 +Problem: When using CTRL-^ when entering a search string, the item in the + statusline that indicates the keymap is not updated. (Ilya + Dogolazky) +Solution: Mark the statuslines for updating. +Files: src/ex_getln.c + +Patch 6.3b.021 +Problem: The swapfile is not readable for others, the ATTENTION prompt does + not show all info when someone else is editing the same file. + (Marcel Svitalsky) +Solution: Use the protection of original file for the swapfile and set it + after creating the swapfile. +Files: src/fileio.c + +Patch 6.3b.022 +Problem: Using "4v" to select four times the old Visual area may put the + cursor beyond the end of the line. (Jens Paulus) +Solution: Correct the cursor column. +Files: src/normal.c + +Patch 6.3b.023 +Problem: When "3dip" starts in an empty line, white lines after the + non-white lines are not deleted. (Jens Paulus) +Solution: Include the white lines. +Files: src/search.c + +Patch 6.3b.024 +Problem: "2daw" does not delete leading white space like "daw" does. (Jens + Paulus) +Solution: Include the white space when a count is used. +Files: src/search.c + +Patch 6.3b.025 +Problem: Percentage in ruler isn't updated when a line is deleted. (Jens + Paulus) +Solution: Check for a change in line count when deciding to update the ruler. +Files: src/screen.c, src/structs.h + +Patch 6.3b.026 +Problem: When selecting "abort" at the ATTENTION prompt for a file that is + already being edited Vim crashes. +Solution: Don't abort creating a new buffer when we really need it. +Files: src/buffer.c, src/vim.h + +Patch 6.3b.027 +Problem: Win32: When enabling the menu in a maximized window, Vim uses more + lines than what is room for. (Shizhu Pan) +Solution: When deciding to call shell_resized(), also compare the text area + size with Rows and Columns, not just with screen_Rows and + screen_Columns. +Files: src/gui.c + +Patch 6.3b.028 +Problem: When in diff mode, setting 'rightleft' causes a crash. (Eddine) +Solution: Check for last column differently when 'rightleft' is set. +Files: src/screen.c + +Patch 6.3b.029 +Problem: Win32: warning for uninitialized variable. +Solution: Initialize to zero. +Files: src/misc1.c + +Patch 6.3b.030 +Problem: After Visually selecting four characters, changing it to other + text, Visually selecting and yanking two characters: "." changes + four characters, another "." changes two characters. (Robert Webb) +Solution: Don't store the size of the Visual area when redo is active. +Files: src/normal.c + +============================================================================== +VERSION 6.4 *version-6.4* + +This section is about improvements made between version 6.3 and 6.4. + +This is a bug-fix release. There are also a few new features. The major +number of new items is in the runtime files and translations. + +The big MS-Windows version now uses: + Ruby version 1.8.3 + Perl version 5.8.7 + Python version 2.4.2 + + +Changed *changed-6.4* +------- + +Removed runtime/tools/tcltags, Exuberant ctags does it better. + + +Added *added-6.4* +----- + +Alsaconf syntax file (Nikolai Weibull) +Eruby syntax, indent, compiler and ftplugin file (Doug Kearns) +Esterel syntax file (Maurizio Tranchero) +Mathematica indent file (Steve Layland) +Netrc syntax file (Nikolai Weibull) +PHP compiler file (Doug Kearns) +Pascal indent file (Neil Carter) +Prescribe syntax file (Klaus Muth) +Rubyunit compiler file (Doug Kearns) +SMTPrc syntax file (Kornel Kielczewski) +Sudoers syntax file (Nikolai Weibull) +TPP syntax file (Gerfried Fuchs) +VHDL ftplugin file (R. Shankar) +Verilog-AMS syntax file (S. Myles Prather) + +Bulgarian keymap (Alberto Mardegan) +Canadian keymap (Eric Joanis) + +Hungarian menu translations in UTF-8 (Kantra Gergely) +Ukrainian menu translations (Bohdan Vlasyuk) + +Irish message translations (Kevin Patrick Scannell) + +Configure also checks for tclsh8.4. + + +Fixed *fixed-6.4* +----- + +"dFxd;" deleted the character under the cursor, "d;" didn't remember the +exclusiveness of the motion. + +When using "set laststatus=2 cmdheight=2" in the .gvimrc you may only get one +line for the cmdline. (Christian Robinson) Invoke command_height() after the +GUI has started up. + +Gcc would warn "dereferencing type-punned pointer will break strict -aliasing +rules". Avoid using typecasts for variable pointers. + +Gcc 3.x interprets the -MM argument differently. Change "-I /path" to +"-isystem /path" for "make depend". + + +Patch 6.3.001 +Problem: ":browse split" gives the file selection dialog twice. (Gordon + Bazeley) Same problem for ":browse diffpatch". +Solution: Reset cmdmod.browse before calling do_ecmd(). +Files: src/diff.c, src/ex_docmd.c + +Patch 6.3.002 +Problem: When using translated help files with non-ASCII latin1 characters + in the first line the utf-8 detection is wrong. +Solution: Properly detect utf-8 characters. When a mix of encodings is + detected continue with the next language and avoid a "no matches" + error because of "got_int" being set. Add the directory name to + the error message for a duplicate tag. +Files: src/ex_cmds.c + +Patch 6.3.003 +Problem: Crash when using a console dialog and the first choice does not + have a default button. (Darin Ohashi) +Solution: Allocate two more characters for the [] around the character for + the default choice. +Files: src/message.c + +Patch 6.3.004 +Problem: When searching for a long string (140 chars in a 80 column + terminal) get three hit-enter prompts. (Robert Webb) +Solution: Avoid the hit-enter prompt when giving the message for wrapping + around the end of the buffer. Don't give that message again when + the string was not found. +Files: src/message.c, src/search.c + +Patch 6.3.005 +Problem: Crash when searching for a pattern with a character offset and + starting in a closed fold. (Frank Butler) +Solution: Check for the column to be past the end of the line. Also fix + that a pattern with a character offset relative to the end isn't + read back from the viminfo properly. +Files: src/search.c + +Patch 6.3.006 +Problem: ":breakadd file *foo" prepends the current directory to the file + pattern. (Hari Krishna Dara) +Solution: Keep the pattern as-is. +Files: src/ex_cmds2.c + +Patch 6.3.007 +Problem: When there is a buffer with 'buftype' set to "nofile" and using a + ":cd" command, the swap file is not deleted when exiting. +Solution: Use the full path of the swap file also for "nofile" buffers. +Files: src/fileio.c + +Patch 6.3.008 +Problem: Compiling fails under OS/2. +Solution: Include "e_screenmode" also for OS/2. (David Sanders) +Files: src/globals.h + +Patch 6.3.009 (after 6.3.006) +Problem: ":breakadd file /path/foo.vim" does not match when a symbolic link + is involved. (Servatius Brandt) +Solution: Do expand the pattern when it does not start with "*". +Files: runtime/doc/repeat.txt, src/ex_cmds2.c + +Patch 6.3.010 +Problem: When writing to a named pipe there is an error for fsync() + failing. +Solution: Ignore the fsync() error for devices. +Files: src/fileio.c + +Patch 6.3.011 +Problem: Crash when the completion function of a user-command uses a + "normal :cmd" command. (Hari Krishna Dara) +Solution: Save the command line when invoking the completion function. +Files: src/ex_getln.c + +Patch 6.3.012 +Problem: Internal lalloc(0) error when using a complicated multi-line + pattern in a substitute command. (Luc Hermitte) +Solution: Avoid going past the end of a line. +Files: src/ex_cmds.c + +Patch 6.3.013 +Problem: Crash when editing a command line and typing CTRL-R = to evaluate + a function that uses "normal :cmd". (Hari Krishna Dara) +Solution: Save and restore the command line when evaluating an expression + for CTRL-R =. +Files: src/ex_getln.c, src/ops.c, src/proto/ex_getln.pro, + src/proto/ops.pro + +Patch 6.3.014 +Problem: When using Chinese or Taiwanese the default for 'helplang' is + wrong. (Simon Liang) +Solution: Use the part of the locale name after "zh_". +Files: src/option.c + +Patch 6.3.015 +Problem: The string that winrestcmd() returns may end in garbage. +Solution: NUL-terminate the string. (Walter Briscoe) +Files: src/eval.c + +Patch 6.3.016 +Problem: The default value for 'define' has "\s" before '#'. +Solution: Add a star after "\s". (Herculano de Lima Einloft Neto) +Files: src/option.c + +Patch 6.3.017 +Problem: "8zz" may leave the cursor beyond the end of the line. (Niko + Maatjes) +Solution: Correct the cursor column after moving to another line. +Files: src/normal.c + +Patch 6.3.018 +Problem: ":0argadd zero" added the argument after the first one, instead of + before it. (Adri Verhoef) +Solution: Accept a zero range for ":argadd". +Files: src/ex_cmds.h + +Patch 6.3.019 +Problem: Crash in startup for debug version. (David Rennals) +Solution: Move the call to nbdebug_wait() to after allocating NameBuff. +Files: src/main.c + +Patch 6.3.020 +Problem: When 'encoding' is "utf-8" and 'delcombine' is set, "dw" does not + delete a word but only a combining character of the first + character, if there is one. (Raphael Finkel) +Solution: Correctly check that one character is being deleted. +Files: src/misc1.c + +Patch 6.3.021 +Problem: When the last character of a file name is a multibyte character + and the last byte is a path separator, the file cannot be edited. +Solution: Check for the last byte to be part of a multibyte character. + (Taro Muraoka) +Files: src/fileio.c + +Patch 6.3.022 (extra) +Problem: Win32: When the last character of a file name is a multibyte + character and the last byte is a path separator, the file cannot + be written. A trail byte that is a space makes that a file cannot + be opened from the command line. +Solution: Recognize double-byte characters when parsing the command line. + In mch_stat() check for the last byte to be part of a multibyte + character. (Taro Muraoka) +Files: src/gui_w48.c, src/os_mswin.c + +Patch 6.3.023 +Problem: When the "to" part of a mapping starts with its "from" part, + abbreviations for the same characters is not possible. For + example, when <Space> is mapped to something that starts with a + space, typing <Space> does not expand abbreviations. +Solution: Only disable expanding abbreviations when a mapping is not + remapped, don't disable it when the RHS of a mapping starts with + the LHS. +Files: src/getchar.c, src/vim.h + +Patch 6.3.024 +Problem: In a few places a string in allocated memory is not terminated + with a NUL. +Solution: Add ga_append(NUL) in script_get(), gui_do_findrepl() and + serverGetVimNames(). +Files: src/ex_getln.c, src/gui.c, src/if_xcmdsrv.c, src/os_mswin.c + +Patch 6.3.025 (extra) +Problem: Missing NUL for list of server names. +Solution: Add ga_append(NUL) in serverGetVimNames(). +Files: src/os_mswin.c + +Patch 6.3.026 +Problem: When ~/.vim/after/syntax/syncolor.vim contains a command that + reloads the colors an endless loop and/or a crash may occur. +Solution: Only free the old value of an option when it was originally + allocated. Limit recursiveness of init_highlight() to 5 levels. +Files: src/option.c, src/syntax.c + +Patch 6.3.027 +Problem: VMS: Writing a file may insert extra CR characters. Not all + terminals are recognized correctly. Vt320 doesn't support colors. + Environment variables are not expanded correctly. +Solution: Use another method to write files. Add vt320 termcap codes for + colors. (Zoltan Arpadffy) +Files: src/fileio.c, src/misc1.c, src/os_unix.c, src/structs.h, + src/term.c + +Patch 6.3.028 +Problem: When appending to a file the BOM marker may be written. (Alex + Jakushev) +Solution: Do not write the BOM marker when appending. +Files: src/fileio.c + +Patch 6.3.029 +Problem: Crash when inserting a line break. (Walter Briscoe) +Solution: In the syntax highlighting code, don't use an old state after a + change was made, current_col may be past the end of the line. +Files: src/syntax.c + +Patch 6.3.030 +Problem: GTK 2: Crash when sourcing a script that deletes the menus, sets + 'encoding' to "utf-8" and loads the menus again. GTK error + message when tooltip text is in a wrong encoding. +Solution: Don't copy characters from the old screen to the new screen when + switching 'encoding' to utf-8, they may be invalid. Only set the + tooltip when it is valid utf-8. +Files: src/gui_gtk.c, src/mbyte.c, src/proto/mbyte.pro, src/screen.c + +Patch 6.3.031 +Problem: When entering a mapping and pressing Tab halfway the command line + isn't redrawn properly. (Adri Verhoef) +Solution: Reposition the cursor after drawing over the "..." of the + completion attempt. +Files: src/ex_getln.c + +Patch 6.3.032 +Problem: Using Python 2.3 with threads doesn't work properly. +Solution: Release the lock after initialization. +Files: src/if_python.c + +Patch 6.3.033 +Problem: When a mapping ends in a Normal mode command of more than one + character Vim doesn't return to Insert mode. +Solution: Check that the mapping has ended after obtaining all characters of + the Normal mode command. +Files: src/normal.c + +Patch 6.3.034 +Problem: VMS: crash when using ":help". +Solution: Avoid using "tags-??", some Open VMS systems can't handle the "?" + wildcard. (Zoltan Arpadffy) +Files: src/tag.c + +Patch 6.3.035 (extra) +Problem: RISC OS: Compile errors. +Solution: Change e_screnmode to e_screenmode. Change the way + __riscosify_control is set. Improve the makefile. (Andy Wingate) +Files: src/os_riscos.c, src/search.c, src/Make_ro.mak + +Patch 6.3.036 +Problem: ml_get errors when the whole file is a fold, switching + 'foldmethod' and doing "zj". (Christian J. Robinson) Was not + deleting the fold but creating a fold with zero lines. +Solution: Delete the fold properly. +Files: src/fold.c + +Patch 6.3.037 (after 6.3.032) +Problem: Warning for unused variable. +Solution: Change the #ifdefs for the saved thread stuff. +Files: src/if_python.c + +Patch 6.3.038 (extra) +Problem: Win32: When the "file changed" dialog pops up after a click that + gives gvim focus and not moving the mouse after that, the effect + of the click may occur when moving the mouse later. (Ken Clark) + Happened because the release event was missed. +Solution: Clear the s_button_pending variable when any input is received. +Files: src/gui_w48.c + +Patch 6.3.039 +Problem: When 'number' is set and inserting lines just above the first + displayed line (in another window on the same buffer), the line + numbers are not updated. (Hitier Sylvain) +Solution: When 'number' is set and lines are inserted/deleted redraw all + lines below the change. +Files: src/screen.c + +Patch 6.3.040 +Problem: Error handling does not always work properly and may cause a + buffer to be marked as if it's viewed in a window while it isn't. + Also when selecting "Abort" at the attention prompt. +Solution: Add enter_cleanup() and leave_cleanup() functions to move + saving/restoring things for error handling to one place. + Clear a buffer read error when it's unloaded. +Files: src/buffer.c, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_eval.pro, src/structs.h, src/vim.h + +Patch 6.3.041 (extra) +Problem: Win32: When the path to a file has Russian characters, ":cd %:p:h" + doesn't work. (Valery Kondakoff) +Solution: Use a wide function to change directory. +Files: src/os_mswin.c + +Patch 6.3.042 +Problem: When there is a closed fold at the top of the window, CTRL-X + CTRL-E in Insert mode reduces the size of the fold instead of + scrolling the text up. (Gautam) +Solution: Scroll over the closed fold. +Files: src/move.c + +Patch 6.3.043 +Problem: 'hlsearch' highlighting sometimes disappears when inserting text + in PHP code with syntax highlighting. (Marcel Svitalsky) +Solution: Don't use pointers to remember where a match was found, use an + index. The pointers may become invalid when searching in other + lines. +Files: src/screen.c + +Patch 6.3.044 (extra) +Problem: Mac: When 'linespace' is non-zero the Insert mode cursor leaves + pixels behind. (Richard Sandilands) +Solution: Erase the character cell before drawing the text when needed. +Files: src/gui_mac.c + + +Patch 6.3.045 +Problem: Unusual characters in an option value may cause unexpected + behavior, especially for a modeline. (Ciaran McCreesh) +Solution: Don't allow setting termcap options or 'printdevice' in a + modeline. Don't list options for "termcap" and "all" in a + modeline. Don't allow unusual characters in 'filetype', 'syntax', + 'backupext', 'keymap', 'patchmode' and 'langmenu'. +Files: src/option.c, runtime/doc/options.txt + +Patch 6.3.046 +Problem: ":registers" doesn't show multibyte characters properly. + (Valery Kondakoff) +Solution: Get the length of each character before displaying it. +Files: src/ops.c + +Patch 6.3.047 (extra) +Problem: Win32 with Borland C 5.5 on Windows XP: A new file is created with + read-only attributes. (Tony Mechelynck) +Solution: Don't use the _wopen() function for Borland. +Files: src/os_win32.c + +Patch 6.3.048 (extra) +Problem: Build problems with VMS on IA64. +Solution: Add dependencies to the build file. (Zoltan Arpadffy) +Files: src/Make_vms.mms + +Patch 6.3.049 (after 6.3.045) +Problem: Compiler warning for "char" vs "char_u" mixup. (Zoltan Arpadffy) +Solution: Add a typecast. +Files: src/option.c + +Patch 6.3.050 +Problem: When SIGHUP is received while busy exiting, non-reentrant + functions such as free() may cause a crash. +Solution: Ignore SIGHUP when exiting because of an error. (Scott Anderson) +Files: src/misc1.c, src/main.c + +Patch 6.3.051 +Problem: When 'wildmenu' is set and completed file names contain multibyte + characters Vim may crash. +Solution: Reserve room for multibyte characters. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 6.3.052 (extra) +Problem: Windows 98: typed keys that are not ASCII may not work properly. + For example with a Russian input method. (Jiri Jezdinsky) +Solution: Assume that the characters arrive in the current codepage instead + of UCS-2. Perform conversion based on that. +Files: src/gui_w48.c + +Patch 6.3.053 +Problem: Win32: ":loadview" cannot find a file with non-ASCII characters. + (Valerie Kondakoff) +Solution: Use mch_open() instead of open() to open the file. +Files: src/ex_cmds2.c + +Patch 6.3.054 +Problem: When 'insertmode' is set <C-L>4ixxx<C-L> hangs Vim. (Jens Paulus) + Vim is actually still working but redraw is disabled. +Solution: When stopping Insert mode with CTRL-L don't put an Esc in the redo + buffer but a CTRL-L. +Files: src/edit.c + +Patch 6.3.055 (after 6.3.013) +Problem: Can't use getcmdline(), getcmdpos() or setcmdpos() with <C-R>= + when editing a command line. Using <C-\>e may crash Vim. (Peter + Winters) +Solution: When moving ccline out of the way for recursive use, make it + available to the functions that need it. Also save and restore + ccline when calling get_expr_line(). Make ccline.cmdbuf NULL at + the end of getcmdline(). +Files: src/ex_getln.c + +Patch 6.3.056 +Problem: The last characters of a multibyte file name may not be displayed + in the window title. +Solution: Avoid to remove a multibyte character where the last byte looks + like a path separator character. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/ex_getln.c + +Patch 6.3.057 +Problem: When filtering lines folds are not updated. (Carl Osterwisch) +Solution: Update folds for filtered lines. +Files: src/ex_cmds.c + +Patch 6.3.058 +Problem: When 'foldcolumn' is equal to the window width and 'wrap' is on + Vim may crash. Disabling the vertical split feature breaks + compiling. (Peter Winters) +Solution: Check for zero room for wrapped text. Make compiling without + vertical splits possible. +Files: src/move.c, src/quickfix.c, src/screen.c, src/netbeans.c + +Patch 6.3.059 +Problem: Crash when expanding an ":edit" command containing several spaces + with the shell. (Brian Hirt) +Solution: Allocate enough space for the quotes. +Files: src/os_unix.c + +Patch 6.3.060 +Problem: Using CTRL-R CTRL-O in Insert mode with an invalid register name + still causes something to be inserted. +Solution: Check the register name for being valid. +Files: src/edit.c + +Patch 6.3.061 +Problem: When editing a utf-8 file in an utf-8 xterm and there is a + multibyte character in the last column, displaying is messed up. + (Jo毛l Rio) +Solution: Check for a multibyte character, not a multi-column character. +Files: src/screen.c + +Patch 6.3.062 +Problem: ":normal! gQ" hangs. +Solution: Quit getcmdline() and do_exmode() when out of typeahead. +Files: src/ex_getln.c, src/ex_docmd.c + +Patch 6.3.063 +Problem: When a CursorHold autocommand changes to another window + (temporarily) 'mousefocus' stops working. +Solution: Call gui_mouse_correct() after triggering CursorHold. +Files: src/gui.c + +Patch 6.3.064 +Problem: line2byte(line("$") + 1) sometimes returns the wrong number. + (Charles Campbell) +Solution: Flush the cached line before counting the bytes. +Files: src/memline.c + +Patch 6.3.065 +Problem: The euro digraph doesn't always work. +Solution: Add an "e=" digraph for Unicode euro character and adjust the + help files. +Files: src/digraph.c, runtime/doc/digraph.txt + +Patch 6.3.066 +Problem: Backup file may get wrong permissions. +Solution: Use permissions of original file for backup file in more places. +Files: src/fileio.c + +Patch 6.3.067 (after 6.3.066) +Problem: Newly created file gets execute permission. +Solution: Check for "perm" to be negative before using it. +Files: src/fileio.c + +Patch 6.3.068 +Problem: When editing a compressed file xxx.gz which is a symbolic link to + the actual file a ":write" renames the link. +Solution: Resolve the link, so that the actual file is renamed and + compressed. +Files: runtime/plugin/gzip.vim + +Patch 6.3.069 +Problem: When converting text with illegal characters Vim may crash. +Solution: Avoid that too much is subtracted from the length. (Da Woon Jung) +Files: src/mbyte.c + +Patch 6.3.070 +Problem: After ":set number linebreak wrap" and a vertical split, moving + the vertical separator far left will crash Vim. (Georg Dahn) +Solution: Avoid dividing by zero. +Files: src/charset.c + +Patch 6.3.071 +Problem: The message for CTRL-X mode is still displayed after an error for + 'thesaurus' or 'dictionary' being empty. +Solution: Clear "edit_submode". +Files: src/edit.c + +Patch 6.3.072 +Problem: Crash in giving substitute message when language is Chinese and + encoding is utf-8. (Yongwei) +Solution: Make the msg_buf size larger when using multibyte. +Files: src/vim.h + +Patch 6.3.073 +Problem: Win32 GUI: When the Vim window is partly above or below the + screen, scrolling causes display errors when the taskbar is not on + that side. +Solution: Use the SW_INVALIDATE flag when the Vim window is partly below or + above the screen. +Files: src/gui_w48.c + +Patch 6.3.074 +Problem: When mswin.vim is used and 'insertmode' is set, typing text in + Select mode and then using CTRL-V results in <SNR>99_Pastegi. + (Georg Dahn) +Solution: When restart_edit is set use "d" instead of "c" to remove the + selected text to avoid calling edit() twice. +Files: src/normal.c + +Patch 6.3.075 +Problem: After unloading another buffer, syntax highlighting in the current + buffer may be wrong when it uses "containedin". (Eric Arnold) +Solution: Use "buf" instead of "curbuf" in syntax_clear(). +Files: src/syntax.c + +Patch 6.3.076 +Problem: Crash when using cscope and there is a parse error (e.g., line too + long). (Alexey I. Froloff) +Solution: Pass the actual number of matches to cs_manage_matches() and + correctly handle the error situation. +Files: src/if_cscope.c + +Patch 6.3.077 (extra) +Problem: VMS: First character input after ESC was not recognized. +Solution: Added TRM$M_TM_TIMED in vms_read(). (Zoltan Arpadffy) +Files: src/os_vms.c + +Patch 6.3.078 (extra, after 6.3.077) +Problem: VMS: Performance issue after patch 6.3.077 +Solution: Add a timeout in the itemlist. (Zoltan Arpadffy) +Files: src/os_vms.c + +Patch 6.3.079 +Problem: Crash when executing a command in the command line window while + syntax highlighting is enabled. (Pero Brbora) +Solution: Don't use a pointer to a buffer that has been deleted. +Files: src/syntax.c + +Patch 6.3.080 (extra) +Problem: Win32: With 'encoding' set to utf-8 while the current codepage is + Chinese editing a file with some specific characters in the name + fails. +Solution: Use _wfullpath() instead of _fullpath() when necessary. +Files: src/os_mswin.c + +Patch 6.3.081 +Problem: Unix: glob() may execute a shell command when it's not wanted. + (Georgi Guninski) +Solution: Verify the sandbox flag is not set. +Files: src/os_unix.c + +Patch 6.3.082 (after 6.3.081) +Problem: Unix: expand() may execute a shell command when it's not wanted. + (Georgi Guninski) +Solution: A more generic solution than 6.3.081. +Files: src/os_unix.c + +Patch 6.3.083 +Problem: VMS: The vt320 termcap entry is incomplete. +Solution: Add missing function keys. (Zoltan Arpadffy) +Files: src/term.c + +Patch 6.3.084 (extra) +Problem: Cygwin: compiling with DEBUG doesn't work. Perl path was ignored. + Failure when $(OUTDIR) already exists. "po" makefile is missing. +Solution: Use changes tested in Vim 7. (Tony Mechelynck) +Files: src/Make_cyg.mak, src/po/Make_cyg.mak + +Patch 6.3.085 +Problem: Crash in syntax highlighting code. (Marc Espie) +Solution: Prevent current_col going past the end of the line. +Files: src/syntax.c + +Patch 6.3.086 (extra) +Problem: Can't produce message translation file with msgfmt that checks + printf strings. +Solution: Fix the Russian translation. +Files: src/po/ru.po, src/po/ru.cp1251.po + +Patch 6.3.087 +Problem: MS-DOS: Crash. (Jason Hood) +Solution: Don't call fname_case() with a NULL pointer. +Files: src/ex_cmds.c + +Patch 6.3.088 +Problem: Editing ".in" causes error E218. (Stefan Karlsson) +Solution: Require some characters before ".in". Same for ".orig" and others. +Files: runtime/filetype.vim + +Patch 6.3.089 +Problem: A session file doesn't work when created while the current + directory contains a space or the directory of the session files + contains a space. (Paolo Giarrusso) +Solution: Escape spaces with a backslash. +Files: src/ex_docmd.c + +Patch 6.3.090 +Problem: A very big value for 'columns' or 'lines' may cause a crash. +Solution: Limit the values to 10000 and 1000. +Files: src/option.c + +Patch 6.4a.001 +Problem: The Unix Makefile contained too many dependencies and a few + uncommented lines. +Solution: Run "make depend" with manual changes to avoid a gcc + incompatibility. Comment a few lines. +Files: src/Makefile + +Patch 6.4b.001 +Problem: Vim reports "Vim 6.4a" in the ":version" output. +Solution: Change "a" to "b". (Tony Mechelynck) +Files: src/version.h + +Patch 6.4b.002 +Problem: In Insert mode, pasting a multibyte character after the end of + the line leaves the cursor just before that character. +Solution: Make sure "gP" leaves the cursor in the right place when + 'virtualedit' is set. +Files: src/ops.c + +Patch 6.4b.003 (after 6.4b.002) +Problem: The problem still exists when 'encoding' is set to "cp936". +Solution: Fix the problem in getvvcol(), compute the coladd field correctly. +Files: src/charset.c, src/ops.c + +Patch 6.4b.004 +Problem: Selecting a {} block with "viB" includes the '}' when there is an + empty line before it. +Solution: Don't advance the cursor to include a line break when it's already + at the line break. +Files: src/search.c + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt new file mode 100644 index 0000000..a546077 --- /dev/null +++ b/runtime/doc/version7.txt @@ -0,0 +1,18312 @@ +*version7.txt* For Vim version 9.1. Last change: 2021 May 17 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + *vim7* *version-7.0* *version7.0* +Welcome to Vim 7! A large number of features has been added. This file +mentions all the new items, changes to existing features and bug fixes +since Vim 6.x. Use this command to see the version you are using: > + :version + +See |vi_diff.txt| for an overview of differences between Vi and Vim 7.0. +See |version4.txt| for differences between Vim 3.x and Vim 4.x. +See |version5.txt| for differences between Vim 4.x and Vim 5.x. +See |version6.txt| for differences between Vim 5.x and Vim 6.x. + +INCOMPATIBLE CHANGES |incompatible-7| + +NEW FEATURES |new-7| + +Vim script enhancements |new-vim-script| +Spell checking |new-spell| +Omni completion |new-omni-completion| +MzScheme interface |new-MzScheme| +Printing multibyte text |new-print-multibyte| +Tab pages |new-tab-pages| +Undo branches |new-undo-branches| +Extended Unicode support |new-more-unicode| +More highlighting |new-more-highlighting| +Translated manual pages |new-manpage-trans| +Internal grep |new-vimgrep| +Scroll back in messages |new-scroll-back| +Cursor past end of the line |new-onemore| +POSIX compatibility |new-posix| +Debugger support |new-debug-support| +Remote file explorer |new-netrw-explore| +Define an operator |new-define-operator| +Mapping to an expression |new-map-expression| +Visual and Select mode mappings |new-map-select| +Location list |new-location-list| +Various new items |new-items-7| + +IMPROVEMENTS |improvements-7| + +COMPILE TIME CHANGES |compile-changes-7| + +BUG FIXES |bug-fixes-7| + +VERSION 7.1 |version-7.1| +Changed |changed-7.1| +Added |added-7.1| +Fixed |fixed-7.1| + +VERSION 7.2 |version-7.2| +Changed |changed-7.2| +Added |added-7.2| +Fixed |fixed-7.2| + +VERSION 7.3 |version-7.3| + +Persistent undo |new-persistent-undo| +More encryption |new-more-encryption| +Conceal text |new-conceal| +Lua interface |new-lua| +Python3 interface |new-python3| + +Changed |changed-7.3| +Added |added-7.3| +Fixed |fixed-7.3| + +VERSION 7.4 |version-7.4| +New regexp engine |new-regexp-engine| +Better Python interface |better-python-interface| +Changed |changed-7.4| +Added |added-7.4| +Fixed |fixed-7.4| + + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-7* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 6.x to 7.0. + +A ":write file" command no longer resets the 'modified' flag of the buffer, +unless the '+' flag is in 'cpoptions' |cpo-+|. This was illogical, since the +buffer is still modified compared to the original file. And when undoing +all changes the file would actually be marked modified. It does mean that +":quit" fails now. + +":helpgrep" now uses a help window to display a match. + +In an argument list double quotes could be used to include spaces in a file +name. This caused a difference between ":edit" and ":next" for escaping +double quotes and it is incompatible with some versions of Vi. + Command Vim 6.x file name Vim 7.x file name ~ + :edit foo\"888 foo"888 foo"888 + :next foo\"888 foo888 foo"888 + :next a\"b c\"d ab cd a"b and c"d + +In a |literal-string| a single quote can be doubled to get one. +":echo 'a''b'" would result in "a b", but now that two quotes stand for one it +results in "a'b". + +When overwriting a file with ":w! fname" there was no warning for when "fname" +was being edited by another Vim. Vim now gives an error message |E768|. + +The support for Mac OS 9 has been removed. + +Files ending in .tex now have 'filetype' set to "context", "plaintex", or +"tex". |ft-tex-plugin| + + +Minor incompatibilities: + +For filetype detection: For many types, use */.dir/filename instead of +~/.dir/filename, so that it also works for other user's files. + +For quite a few filetypes the indent settings have been moved from the +filetype plugin to the indent plugin. If you used: > + :filetype plugin on +Then some indent settings may be missing. You need to use: > + :filetype plugin indent on + +":0verbose" now sets 'verbose' to zero instead of one. + +Removed the old and incomplete "VimBuddy" code. + +Buffers without a name report "No Name" instead of "No File". It was +confusing for buffers with a name and 'buftype' set to "nofile". + +When ":file xxx" is used in a buffer without a name, the alternate file name +isn't set. This avoids creating buffers without a name, they are not useful. + +The "2html.vim" script now converts closed folds to HTML. This means the HTML +looks like it's displayed, with the same folds open and closed. Use "zR", or +"let html_ignore_folding=1", if no folds should appear in the HTML. (partly by +Carl Osterwisch) +Diff mode is now also converted to HTML as it is displayed. + +Win32: The effect of the <F10> key depended on 'winaltkeys'. Now it depends +on whether <F10> has been mapped or not. This allows mapping <F10> without +changing 'winaltkeys'. + +When 'octal' is in 'nrformats' and using CTRL-A on "08" it became "018", which +is illogical. Now it becomes "9". The leading zero(s) is(are) removed to +avoid the number becoming octal after incrementing "009" to "010". + +When 'encoding' is set to a Unicode encoding, the value for 'fileencodings' +now includes "default" before "latin1". This means that for files with 8-bit +encodings the default is to use the encoding specified by the environment, if +possible. Previously latin1 would always be used, which is wrong in a +non-latin1 environment, such as Russian. + +Previously Vim would exit when there are two windows, both of them displaying +a help file, and using ":quit". Now only the window is closed. + +"-w {scriptout}" only works when {scriptout} doesn't start with a digit. +Otherwise it's used to set the 'window' option. + +Previously <Home> and <xHome> could be mapped separately. This had the +disadvantage that all mappings (with modifiers) had to be duplicated, since +you can't be sure what the keyboard generates. Now all <xHome> are internally +translated to <Home>, both for the keys and for mappings. Also for <xEnd>, +<xF1>, etc. + +":put" now leaves the cursor on the last inserted line. + +When a .gvimrc file exists then 'compatible' is off, just like when a ".vimrc" +file exists. + +When making a string upper-case with "vlllU" or similar then the German sharp +s is replaced with "SS". This does not happen with "~" to avoid backwards +compatibility problems and because "SS" can't be changed back to a sharp s. + +"gd" previously found the very first occurrence of a variable in a function, +that could be the function argument without type. Now it finds the position +where the type is given. + +The line continuation in functions was not taken into account, line numbers in +errors were logical lines, not lines in the sourced file. That made it +difficult to locate errors. Now the line number in the sourced file is +reported, relative to the function start. This also means that line numbers +for ":breakadd func" are different. + +When defining a user command with |:command| the special items could be +abbreviated. This caused unexpected behavior, such as <li> being recognized +as <line1>. The items can no longer be abbreviated. + +When executing a FileChangedRO autocommand it is no longer allowed to switch +to another buffer or edit another file. This is to prevent crashes (the event +is triggered deep down in the code where changing buffers is not anticipated). +It is still possible to reload the buffer. + +At the |more-prompt| and the |hit-enter-prompt|, when the 'more' option is +set, the 'k', 'u', 'g' and 'b' keys are now used to scroll back to previous +messages. Thus they are no longer used as typeahead. + +============================================================================== +NEW FEATURES *new-7* + +Vim script enhancements *new-vim-script* +----------------------- + +In Vim scripts the following types have been added: + + |List| ordered list of items + |Dictionary| associative array of items + |Funcref| reference to a function + +Many functions and commands have been added to support the new types. + +The |string()| function can be used to get a string representation of a +variable. Works for Numbers, Strings and composites of them. Then |eval()| +can be used to turn the string back into the variable value. + +The |:let| command can now use "+=", "-=" and ".=": > + :let var += expr " works like :let var = var + expr + :let var -= expr " works like :let var = var - expr + :let var .= string " works like :let var = var . string + +With the |:profile| command you can find out where your function or script +is wasting time. + +In the Python interface vim.eval() also handles Dictionaries and Lists. +|python-eval| (G. Sumner Hayes) + +The |getscript| plugin was added as a convenient way to update scripts from +www.vim.org automatically. (Charles Campbell) + +The |vimball| plugin was added as a convenient way to distribute a set of +files for a plugin (plugin file, autoload script, documentation). (Charles +Campbell) + + +Spell checking *new-spell* +-------------- + +Spell checking has been integrated in Vim. There were a few implementations +with scripts, but they were slow and/or required an external program. + +The 'spell' option is used to switch spell checking on or off +The 'spelllang' option is used to specify the accepted language(s) +The 'spellfile' option specifies where new words are added +The 'spellsuggest' option specifies the methods used for making suggestions + +The |]s| and |[s| commands can be used to move to the next or previous error +The |zg| and |zw| commands can be used to add good and wrong words +The |z=| command can be used to list suggestions and correct the word +The |:mkspell| command is used to generate a Vim spell file from word lists + +The "undercurl" highlighting attribute was added to nicely point out spelling +mistakes in the GUI (based on patch from Marcin Dalecki). +The "guisp" color can be used to give it a color different from foreground and +background. +The number of possible different highlight attributes was raised from about +220 to over 30000. This allows for the attributes of spelling to be combined +with syntax highlighting attributes. This is also used for syntax +highlighting and marking the Visual area. + +Much more info here: |spell|. + + +Omni completion *new-omni-completion* +--------------- + +This could also be called "intellisense", but that is a trademark. It is a +smart kind of completion. The text in front of the cursor is inspected to +figure out what could be following. This may suggest struct and class +members, system functions, etc. + +Use CTRL-X CTRL-O in Insert mode to start the completion. |i_CTRL-X_CTRL-O| + +The 'omnifunc' option is set by filetype plugins to define the function that +figures out the completion. + +Currently supported languages: + C |ft-c-omni| + (X)HTML with CSS |ft-html-omni| + JavaScript |ft-javascript-omni| + PHP |ft-php-omni| + Python + Ruby |ft-ruby-omni| + SQL |ft-sql-omni| + XML |ft-xml-omni| + any language with syntax highlighting |ft-syntax-omni| + +You can add your own omni completion scripts. + +When the 'completeopt' option contains "menu" then matches for Insert mode +completion are displayed in a (rather primitive) popup menu. + + +MzScheme interface *new-MzScheme* +------------------ + +The MzScheme interpreter is supported. |MzScheme| + +The |:mzscheme| command can be used to execute MzScheme commands +The |:mzfile| command can be used to execute an MzScheme script file + +This depends on Vim being compiled with the |+mzscheme| feature. + + +Printing multibyte text *new-print-multibyte* +------------------------ + +The |:hardcopy| command now supports printing multibyte characters when using +PostScript. + +The 'printmbcharset' and 'printmbfont' options are used for this. +Also see |postscript-cjk-printing|. (Mike Williams) + + +Tab pages *new-tab-pages* +--------- + +A tab page is a page with one or more windows with a label (aka tab) at the top. +By clicking on the label you can quickly switch between the tab pages. And +with the keyboard, using the |gt| (Goto Tab) command. This is a convenient +way to work with many windows. + +To start Vim with each file argument in a separate tab page use the |-p| +argument. The maximum number of pages can be set with 'tabpagemax'. + +The line with tab labels is either made with plain text and highlighting or +with a GUI mechanism. The GUI labels look better but are only available on a +few systems. The line can be customized with 'tabline', 'guitablabel' and +'guitabtooltip'. Whether it is displayed is set with 'showtabline'. Whether +to use the GUI labels is set with the "e" flag in 'guioptions'. + +The |:tab| command modifier can be used to have most commands that open a new +window open a new tab page instead. + +The |--remote-tab| argument can be used to edit a file in a new tab page in an +already running Vim server. + +Variables starting with "t:" are local to a tab page. + +More info here: |tabpage| +Most of the GUI stuff was implemented by Yegappan Lakshmanan. + + +Undo branches *new-undo-branches* +------------- + +Previously there was only one line of undo-redo. If, after undoing a number +of changes, a new change was made all the undone changes were lost. This +could lead to accidentally losing work. + +Vim now makes an undo branch in this situation. Thus you can go back to the +text after any change, even if they were undone. So long as you do not run +into 'undolevels', when undo information is freed up to limit the memory used. + +To be able to navigate the undo branches each change is numbered sequentially. +The commands |g-| and |:earlier| go back in time, to older changes. The +commands |g+| and |:later| go forward in time, to newer changes. + +The changes are also timestamped. Use ":earlier 10m" to go to the text as it +was about ten minutes earlier. + +The |:undolist| command can be used to get an idea of which undo branches +exist. The |:undo| command now takes an argument to directly jump to a +specific position in this list. The |changenr()| function can be used to +obtain the change number. + +There is no graphical display of the tree with changes, navigation can be +quite confusing. + + +Extended Unicode support *new-more-unicode* +------------------------ + +Previously only two combining characters were displayed. The limit is now +raised to 6. This can be set with the 'maxcombine' option. The default is +still 2. + +|ga| now shows all combining characters, not just the first two. + +Previously only 16 bit Unicode characters were supported for displaying. Now +the full 32 bit character set can be used. Unless manually disabled at +compile time to save a bit of memory. + +For pattern matching it is now possible to search for individual composing +characters. |patterns-composing| + +The |8g8| command searches for an illegal UTF-8 byte sequence. + + +More highlighting *new-more-highlighting* +----------------- + +Highlighting matching parens: + +When moving the cursor through the text and it is on a paren, then the +matching paren can be highlighted. This uses the new |CursorMoved| +autocommand event. + +This means some commands are executed every time you move the cursor. If this +slows you down too much switch it off with: > + :NoMatchParen + +See |matchparen| for more information. + +The plugin uses the |:match| command. It now supports three match patterns. +The plugin uses the third one. The first one is for the user and the second +one can be used by another plugin. + +Highlighting the cursor line and column: + +The 'cursorline' and 'cursorcolumn' options have been added. These highlight +the screen line and screen column of the cursor. This makes the cursor +position easier to spot. 'cursorcolumn' is also useful to align text. This +may make screen updating quite slow. The CursorColumn and CursorLine +highlight groups allow changing the colors used. |hl-CursorColumn| +|hl-CursorLine| + +The number of possible different highlight attributes was raised from about +220 to over 30000. This allows for the attributes of spelling to be combined +with syntax highlighting attributes. This is also used for syntax +highlighting, marking the Visual area, CursorColumn, etc. + + +Translated manual pages *new-manpage-trans* +----------------------- + +The manual page of Vim and associated programs is now also available in +several other languages. + +French - translated by David Blanchet +Italian - translated by Antonio Colombo +Russian - translated by Vassily Ragosin +Polish - translated by Mikolaj Machowski + +The Unix Makefile installs the Italian manual pages in .../man/it/man1/, +.../man/it.ISO8859-1/man1/ and .../man/it.UTF-8/man1/. There appears to be no +standard for what encoding goes in the "it" directory, the 8-bit encoded file +is used there as a best guess. +Other languages are installed in similar places. +The translated pages are not automatically installed when Vim was configured +with "--disable-nls", but "make install-languages install-tool-languages" will +do it anyway. + + +Internal grep *new-vimgrep* +------------- + +The ":vimgrep" command can be used to search for a pattern in a list of files. +This is like the ":grep" command, but no external program is used. Besides +better portability, handling of different file encodings and using multi-line +patterns, this also allows grepping in compressed and remote files. +|:vimgrep|. + +If you want to use the search results in a script you can use the +|getqflist()| function. + +To grep files in various directories the "**" pattern can be used. It expands +into an arbitrary depth of directories. "**" can be used in all places where +file names are expanded, thus also with |:next| and |:args|. + + +Scroll back in messages *new-scroll-back* +----------------------- + +When displaying messages, at the |more-prompt| and the |hit-enter-prompt|, The +'k', 'u', 'g' and 'b' keys can be used to scroll back to previous messages. +This is especially useful for commands such as ":syntax", ":autocommand" and +":highlight". This is implemented in a generic way thus it works for all +commands and highlighting is kept. Only works when the 'more' option is set. +Previously it only partly worked for ":clist". + +The |g<| command can be used to see the last page of messages after you have +hit <Enter> at the |hit-enter-prompt|. Then you can scroll further back. + + +Cursor past end of the line *new-onemore* +--------------------------- + +When the 'virtualedit' option contains "onemore" the cursor can move just past +the end of the line. As if it's on top of the line break. + +This makes some commands more consistent. Previously the cursor was always +past the end of the line if the line was empty. But it is far from Vi +compatible. It may also break some plugins or Vim scripts. Use with care! + +The patch was provided by Mattias Flodin. + + +POSIX compatibility *new-posix* +------------------- + +The POSIX test suite was used to verify POSIX compatibility. A number of +problems have been fixed to make Vim more POSIX compatible. Some of them +conflict with traditional Vi or expected behavior. The $VIM_POSIX environment +variable can be set to get POSIX compatibility. See |posix|. + +Items that were fixed for both Vi and POSIX compatibility: +- repeating "R" with a count only overwrites text once; added the 'X' flag to + 'cpoptions' |cpo-X| +- a vertical movement command that moves to a non-existing line fails; added + the '-' flag to 'cpoptions' |cpo--| +- when preserving a file and doing ":q!" the file can be recovered; added the + '&' flag to 'cpoptions' |cpo-&| +- The 'window' option is partly implemented. It specifies how much CTRL-F and + CTRL-B scroll when there is one window. The "-w {number}" argument is now + accepted. "-w {scriptout}" only works when {scriptout} doesn't start with a + digit. +- Allow "-c{command}" argument, no space between "-c" and {command}. +- When writing a file with ":w!" don't reset 'readonly' when 'Z' is present in + 'cpoptions'. +- Allow 'l' and '#' flags for ":list", ":print" and ":number". +- Added the '.' flag to 'cpoptions': ":cd" fails when the buffer is modified. +- In Ex mode with an empty buffer ":read file" doesn't keep an empty line + above or below the new lines. +- Remove a backslash before a NL for the ":global" command. +- When ":append", ":insert" or ":change" is used with ":global", get the + inserted lines from the command. Can use backslash-NL to separate lines. +- Can use ":global /pat/ visual" to execute Normal mode commands at each + matched line. Use "Q" to continue and go to the next line. +- The |:open| command has been partially implemented. It stops Ex mode, but + redraws the whole screen, not just one line as open mode is supposed to do. +- Support using a pipe to read the output from and write input to an external + command. Added the 'shelltemp' option and has("filterpipe"). +- In ex silent mode the ":set" command output is displayed. +- The ":@@" and ":**" give an error message when no register was used before. +- The search pattern "[]-`]" matches ']', '^', '_' and '`'. +- Autoindent for ":insert" is using the line below the insert. +- Autoindent for ":change" is using the first changed line. +- Editing Ex command lines is not done in cooked mode, because CTRL-D and + CTRL-T cannot be handled then. +- In Ex mode, "1,3" prints three lines. "%" prints all lines. +- In Ex mode "undo" would undo all changes since Ex mode was started. +- Implemented the 'prompt' option. + + +Debugger support *new-debug-support* +---------------- + +The 'balloonexpr' option has been added. This is a generic way to implement +balloon functionality. You can use it to show info for the word under the +mouse pointer. + + +Remote file explorer *new-netrw-explore* +-------------------- + +The netrw plugin now also supports viewing a directory, when "scp://" is used. +Deleting and renaming files is possible. + +To avoid duplicating a lot of code, the previous file explorer plugin has been +integrated in the netrw plugin. This means browsing local and remote files +works the same way. + +":browse edit" and ":browse split" use the netrw plugin when it's available +and a GUI dialog is not possible. + +The netrw plugin is maintained by Charles Campbell. + + +Define an operator *new-define-operator* +------------------ + +Previously it was not possible to define your own operator; a command that is +followed by a {motion}. Vim 7 introduces the 'operatorfunc' option and the +|g@| operator. This makes it possible to define a mapping that works like an +operator. The actual work is then done by a function, which is invoked +through the |g@| operator. + +See |:map-operator| for the explanation and an example. + + +Mapping to an expression *new-map-expression* +------------------------ + +The {rhs} argument of a mapping can be an expression. That means the +resulting characters can depend on the context. Example: > + :inoremap <expr> . InsertDot() +Here the dot will be mapped to whatever InsertDot() returns. + +This also works for abbreviations. See |:map-<expr>| for the details. + + +Visual and Select mode mappings *new-map-select* +------------------------------- + +Previously Visual mode mappings applied both to Visual and Select mode. With +a trick to have the mappings work in Select mode like they would in Visual +mode. + +Commands have been added to define mappings for Visual and Select mode +separately: |:xmap| and |:smap|. With the associated "noremap" and "unmap" +commands. + +The same is done for menus: |:xmenu|, |:smenu|, etc. + + +Location list *new-location-list* +------------- + +The support for a per-window quickfix list (location list) is added. The +location list can be displayed in a location window (similar to the quickfix +window). You can open more than one location list window. A set of commands +similar to the quickfix commands are added to browse the location list. +(Yegappan Lakshmanan) + + +Various new items *new-items-7* +----------------- + +Normal mode commands: ~ + +a", a' and a` New text objects to select quoted strings. |a'| +i", i' and i` (Taro Muraoka) + +CTRL-W <Enter> In the quickfix window: opens a new window to show the + location of the error under the cursor. + +|at| and |it| text objects select a block of text between HTML or XML tags. + +<A-LeftMouse> ('mousemodel' "popup" or "popup-setpos") +<A-RightMouse> ('mousemodel' "extend") + Make a blockwise selection. |<A-LeftMouse>| + +gF Start editing the filename under the cursor and jump + to the line number following the file name. + (Yegappan Lakshmanan) + +CTRL-W F Start editing the filename under the cursor in a new + window and jump to the line number following the file + name. (Yegappan Lakshmanan) + +Insert mode commands: ~ + +CTRL-\ CTRL-O Execute a Normal mode command. Like CTRL-O but + without moving the cursor. |i_CTRL-\_CTRL-O| + +Options: ~ + +'balloonexpr' expression for text to show in evaluation balloon +'completefunc' The name of the function used for user-specified + Insert mode completion. CTRL-X CTRL-U can be used in + Insert mode to do any kind of completion. (Taro + Muraoka) +'completeopt' Enable popup menu and other settings for Insert mode + completion. +'cursorcolumn' highlight column of the cursor +'cursorline' highlight line of the cursor +'formatexpr' expression for formatting text with |gq| and when text + goes over 'textwidth' in Insert mode. +'formatlistpat' pattern to recognize a numbered list for formatting. + (idea by Hugo Haas) +'fsync' Whether fsync() is called after writing a file. + (Ciaran McCreesh) +'guitablabel' expression for text to display in GUI tab page label +'guitabtooltip' expression for text to display in GUI tab page tooltip +'macatsui' Mac: use ATSUI text display functions +'maxcombine' maximum number of combining characters displayed +'maxmempattern' maximum amount of memory to use for pattern matching +'mkspellmem' parameters for |:mkspell| memory use +'mzquantum' Time in msec to schedule MzScheme threads. +'numberwidth' Minimal width of the space used for the 'number' and + 'relativenumber' option. (Emmanuel Renieris) +'omnifunc' The name of the function used for omni completion. +'operatorfunc' function to be called for |g@| operator +'printmbcharset' CJK character set to be used for :hardcopy +'printmbfont' font names to be used for CJK output of :hardcopy +'pumheight' maximum number of items to show in the popup menu +'quoteescape' Characters used to escape quotes inside a string. + Used for the a", a' and a` text objects. |a'| +'shelltemp' whether to use a temp file or pipes for shell commands +'showtabline' whether to show the tab pages line +'spell' switch spell checking on/off +'spellcapcheck' pattern to locate the end of a sentence +'spellfile' file where good and wrong words are added +'spelllang' languages to check spelling for +'spellsuggest' methods for spell suggestions +'synmaxcol' maximum column to look for syntax items; avoids very + slow redrawing when there are very long lines +'tabline' expression for text to display in the tab pages line +'tabpagemax' maximum number of tab pages to open for |-p| +'verbosefile' Log messages in a file. +'wildoptions' "tagfile" value enables listing the file name of + matching tags for CTRL-D command line completion. + (based on an idea from Yegappan Lakshmanan) +'winfixwidth' window with fixed width, similar to 'winfixheight' + + +Ex commands: ~ + +Win32: The ":winpos" command now also works in the console. (Vipin Aravind) + +|:startreplace| Start Replace mode. (Charles Campbell) +|:startgreplace| Start Virtual Replace mode. + +|:0file| Removes the name of the buffer. (Charles Campbell) + +|:diffoff| Switch off diff mode in the current window or in all + windows. + +|:delmarks| Delete marks. + +|:exusage| Help for Ex commands (Nvi command). +|:viusage| Help for Vi commands (Nvi command). + +|:sort| Sort lines in the buffer without depending on an + external command. (partly by Bryce Wagner) + +|:vimgrep| Internal grep command, search for a pattern in files. +|:vimgrepadd| Like |:vimgrep| but don't make a new list. + +|:caddfile| Add error messages to an existing quickfix list + (Yegappan Lakshmanan). +|:cbuffer| Read error lines from a buffer. (partly by Yegappan + Lakshmanan) +|:cgetbuffer| Create a quickfix list from a buffer but don't jump to + the first error. +|:caddbuffer| Add errors from the current buffer to the quickfix + list. +|:cexpr| Read error messages from a Vim expression (Yegappan + Lakshmanan). +|:caddexpr| Add error messages from a Vim expression to an + existing quickfix list. (Yegappan Lakshmanan). +|:cgetexpr| Create a quickfix list from a Vim expression, but + don't jump to the first error. (Yegappan Lakshmanan). + +|:lfile| Like |:cfile| but use the location list. +|:lgetfile| Like |:cgetfile| but use the location list. +|:laddfile| Like |:caddfile| but use the location list. +|:lbuffer| Like |:cbuffer| but use the location list. +|:lgetbuffer| Like |:cgetbuffer| but use the location list. +|:laddbuffer| Like |:caddbuffer| but use the location list. +|:lexpr| Like |:cexpr| but use the location list. +|:lgetexpr| Like |:cgetexpr| but use the location list. +|:laddexpr| Like |:caddexpr| but use the location list. +|:ll| Like |:cc| but use the location list. +|:llist| Like |:clist| but use the location list. +|:lnext| Like |:cnext| but use the location list. +|:lprevious| Like |:cprevious| but use the location list. +|:lNext| Like |:cNext| but use the location list. +|:lfirst| Like |:cfirst| but use the location list. +|:lrewind| Like |:crewind| but use the location list. +|:llast| Like |:clast| but use the location list. +|:lnfile| Like |:cnfile| but use the location list. +|:lpfile| Like |:cpfile| but use the location list. +|:lNfile| Like |:cNfile| but use the location list. +|:lolder| Like |:colder| but use the location list. +|:lnewer| Like |:cnewer| but use the location list. +|:lwindow| Like |:cwindow| but use the location list. +|:lopen| Like |:copen| but use the location list. +|:lclose| Like |:cclose| but use the location list. +|:lmake| Like |:make| but use the location list. +|:lgrep| Like |:grep| but use the location list. +|:lgrepadd| Like |:grepadd| but use the location list. +|:lvimgrep| Like |:vimgrep| but use the location list. +|:lvimgrepadd| Like |:vimgrepadd| but use the location list. +|:lhelpgrep| Like |:helpgrep| but use the location list. +|:lcscope| Like |:cscope| but use the location list. +|:ltag| Jump to a tag and add matching tags to a location list. + +|:undojoin| Join a change with the previous undo block. +|:undolist| List the leafs of the undo tree. + +|:earlier| Go back in time for changes in the text. +|:later| Go forward in time for changes in the text. + +|:for| Loop over a |List|. +|:endfor| + +|:lockvar| Lock a variable, prevents it from being changed. +|:unlockvar| Unlock a locked variable. + +|:mkspell| Create a Vim spell file. +|:spellgood| Add a word to the list of good words. +|:spellwrong| Add a word to the list of bad words +|:spelldump| Dump list of good words. +|:spellinfo| Show information about the spell files used. +|:spellrepall| Repeat a spelling correction for the whole buffer. +|:spellundo| Remove a word from list of good and bad words. + +|:mzscheme| Execute MzScheme commands. +|:mzfile| Execute an MzScheme script file. + +|:nbkey| Pass a key to NetBeans for processing. + +|:profile| Commands for Vim script profiling. +|:profdel| Stop profiling for specified items. + +|:smap| Select mode mapping. +|:smapclear| +|:snoremap| +|:sunmap| + +|:xmap| Visual mode mapping, not used for Select mode. +|:xmapclear| +|:xnoremap| +|:xunmap| + +|:smenu| Select mode menu. +|:snoremenu| +|:sunmenu| + +|:xmenu| Visual mode menu, not used for Select mode. +|:xnoremenu| +|:xunmenu| + +|:tabclose| Close the current tab page. +|:tabdo| Perform a command in every tab page. +|:tabedit| Edit a file in a new tab page. +|:tabnew| Open a new tab page. +|:tabfind| Search for a file and open it in a new tab page. +|:tabnext| Go to the next tab page. +|:tabprevious| Go to the previous tab page. +|:tabNext| Go to the previous tab page. +|:tabfirst| Go to the first tab page. +|:tabrewind| Go to the first tab page. +|:tablast| Go to the last tab page. +|:tabmove| Move the current tab page elsewhere. +|:tabonly| Close all other tab pages. +|:tabs| List the tab pages and the windows they contain. + +Ex command modifiers: ~ + +|:keepalt| Do not change the alternate file. + +|:noautocmd| Do not trigger autocommand events. + +|:sandbox| Execute a command in the sandbox. + +|:tab| When opening a new window create a new tab page. + + +Ex command arguments: ~ + +|++bad| Specify what happens with characters that can't be + converted and illegal bytes. (code example by Yasuhiro + Matsumoto) + Also, when a conversion error occurs or illegal bytes + are found include the line number in the error + message. + + +New and extended functions: ~ + +|add()| append an item to a List +|append()| append List of lines to the buffer +|argv()| without an argument return the whole argument list +|browsedir()| dialog to select a directory +|bufnr()| takes an extra argument: create buffer +|byteidx()| index of a character (Ilya Sher) +|call()| call a function with List as arguments +|changenr()| number of current change +|complete()| set matches for Insert mode completion +|complete_add()| add match for 'completefunc' +|complete_check()| check for key pressed, for 'completefunc' +|copy()| make a shallow copy of a List or Dictionary +|count()| count nr of times a value is in a List or Dictionary +|cursor()| also accepts an offset for 'virtualedit', and + the first argument can be a list: [lnum, col, off] +|deepcopy()| make a full copy of a List or Dictionary +|diff_filler()| returns number of filler lines above line {lnum}. +|diff_hlID()| returns the highlight ID for diff mode +|empty()| check if List or Dictionary is empty +|eval()| evaluate {string} and return the result +|extend()| append one List to another or add items from one + Dictionary to another +|feedkeys()| put characters in the typeahead buffer +|filter()| remove selected items from a List or Dictionary +|finddir()| find a directory in 'path' +|findfile()| find a file in 'path' (Johannes Zellner) +|foldtextresult()| the text displayed for a closed fold at line "lnum" +|function()| make a Funcref out of a function name +|garbagecollect()| cleanup unused |Lists| and |Dictionaries| with circular + references +|get()| get an item from a List or Dictionary +|getbufline()| get a list of lines from a specified buffer + (Yegappan Lakshmanan) +|getcmdtype()| return the current command-line type + (Yegappan Lakshmanan) +|getfontname()| get actual font name being used +|getfperm()| get file permission string (Nikolai Weibull) +|getftype()| get type of file (Nikolai Weibull) +|getline()| with second argument: get List with buffer lines +|getloclist()| list of location list items (Yegappan Lakshmanan) +|getpos()| return a list with the position of cursor, mark, etc. +|getqflist()| list of quickfix errors (Yegappan Lakshmanan) +|getreg()| get contents of a register +|gettabwinvar()| get variable from window in specified tab page. +|has_key()| check whether a key appears in a Dictionary +|haslocaldir()| check if current window used |:lcd| +|hasmapto()| check for a mapping to a string +|index()| index of item in List +|inputlist()| prompt the user to make a selection from a list +|insert()| insert an item somewhere in a List +|islocked()| check if a variable is locked +|items()| get List of Dictionary key-value pairs +|join()| join List items into a String +|keys()| get List of Dictionary keys +|len()| number of items in a List or Dictionary +|map()| change each List or Dictionary item +|maparg()| extra argument: use abbreviation +|mapcheck()| extra argument: use abbreviation +|match()| extra argument: count +|matcharg()| return arguments of |:match| command +|matchend()| extra argument: count +|matchlist()| list with match and submatches of a pattern in a string +|matchstr()| extra argument: count +|max()| maximum value in a List or Dictionary +|min()| minimum value in a List or Dictionary +|mkdir()| create a directory +|pathshorten()| reduce directory names to a single character +|printf()| format text +|pumvisible()| check whether the popup menu is displayed +|range()| generate a List with numbers +|readfile()| read a file into a list of lines +|reltime()| get time value, possibly relative +|reltimestr()| turn a time value into a string +|remove()| remove one or more items from a List or Dictionary +|repeat()| repeat "expr" "count" times (Christophe Poucet) +|reverse()| reverse the order of a List +|search()| extra argument: +|searchdecl()| search for declaration of variable +|searchpair()| extra argument: line to stop searching +|searchpairpos()| return a List with the position of the match +|searchpos()| return a List with the position of the match +|setloclist()| modify a location list (Yegappan Lakshmanan) +|setpos()| set cursor or mark to a position +|setqflist()| modify a quickfix list (Yegappan Lakshmanan) +|settabwinvar()| set variable in window of specified tab page +|sort()| sort a List +|soundfold()| get the sound-a-like equivalent of a word +|spellbadword()| get a badly spelled word +|spellsuggest()| get suggestions for correct spelling +|split()| split a String into a List +|str2nr()| convert a string to a number, base 2, 8, 10 or 16 +|stridx()| extra argument: start position +|strridx()| extra argument: start position +|string()| string representation of a List or Dictionary +|system()| extra argument: filters {input} through a shell command +|tabpagebuflist()| List of buffers in a tab page +|tabpagenr()| number of current or last tab page +|tabpagewinnr()| window number in a tab page +|tagfiles()| List with tags file names +|taglist()| get list of matching tags (Yegappan Lakshmanan) +|tr()| translate characters (Ron Aaron) +|uniq()| remove copies of repeated adjacent list items +|values()| get List of Dictionary values +|winnr()| takes an argument: what window to use +|winrestview()| restore the view of the current window +|winsaveview()| save the view of the current window +|writefile()| write a list of lines into a file + +User defined functions can now be loaded automatically from the "autoload" +directory in 'runtimepath'. See |autoload-functions|. + + +New Vim variables: ~ + +|v:insertmode| used for |InsertEnter| and |InsertChange| autocommands +|v:val| item value in a |map()| or |filter()| function +|v:key| item key in a |map()| or |filter()| function +|v:profiling| non-zero after a ":profile start" command +|v:fcs_reason| the reason why |FileChangedShell| was triggered +|v:fcs_choice| what should happen after |FileChangedShell| +|v:beval_bufnr| buffer number for 'balloonexpr' +|v:beval_winnr| window number for 'balloonexpr' +|v:beval_lnum| line number for 'balloonexpr' +|v:beval_col| column number for 'balloonexpr' +|v:beval_text| text under the mouse pointer for 'balloonexpr' +|v:scrollstart| what caused the screen to be scrolled up +|v:swapname| name of the swap file for the |SwapExists| event +|v:swapchoice| what to do for an existing swap file +|v:swapcommand| command to be executed after handling |SwapExists| +|v:char| argument for evaluating 'formatexpr' + + +New autocommand events: ~ + +|ColorScheme| after loading a color scheme + +|CursorHoldI| the user doesn't press a key for a while in Insert mode +|CursorMoved| the cursor was moved in Normal mode +|CursorMovedI| the cursor was moved in Insert mode + +|FileChangedShellPost| after handling a file changed outside of Vim + +|InsertEnter| starting Insert or Replace mode +|InsertChange| going from Insert to Replace mode or back +|InsertLeave| leaving Insert or Replace mode + +|MenuPopup| just before showing popup menu + +|QuickFixCmdPre| before :make, :grep et al. (Ciaran McCreesh) +|QuickFixCmdPost| after :make, :grep et al. (Ciaran McCreesh) + +|SessionLoadPost| after loading a session file. (Yegappan Lakshmanan) + +|ShellCmdPost| after executing a shell command +|ShellFilterPost| after filtering with a shell command + +|SourcePre| before sourcing a Vim script + +|SpellFileMissing| when a spell file can't be found + +|SwapExists| found existing swap file when editing a file + +|TabEnter| just after entering a tab page +|TabLeave| just before leaving a tab page + +|VimResized| after the Vim window size changed (Yakov Lerner) + + +New highlight groups: ~ + +Pmenu Popup menu: normal item |hl-Pmenu| +PmenuSel Popup menu: selected item |hl-PmenuSel| +PmenuThumb Popup menu: scrollbar |hl-PmenuThumb| +PmenuSbar Popup menu: Thumb of the scrollbar |hl-PmenuSbar| + +TabLine tab pages line, inactive label |hl-TabLine| +TabLineSel tab pages line, selected label |hl-TabLineSel| +TabLineFill tab pages line, filler |hl-TabLineFill| + +SpellBad badly spelled word |hl-SpellBad| +SpellCap word with wrong caps |hl-SpellCap| +SpellRare rare word |hl-SpellRare| +SpellLocal word only exists in other region |hl-SpellLocal| + +CursorColumn 'cursorcolumn' |hl-CursorColumn| +CursorLine 'cursorline' |hl-CursorLine| + +MatchParen matching parens |pi_paren.txt| |hl-MatchParen| + + +New items in search patterns: ~ +|/\%d| \%d123 search for character with decimal number +|/\]| [\d123] idem, in a collection +|/\%o| \%o103 search for character with octal number +|/\]| [\o1o3] idem, in a collection +|/\%x| \%x1a search for character with 2 pos. hex number +|/\]| [\x1a] idem, in a collection +|/\%u| \%u12ab search for character with 4 pos. hex number +|/\]| [\u12ab] idem, in a collection +|/\%U| \%U1234abcd search for character with 8 pos. hex number +|/\]| [\U1234abcd] idem, in a collection + (The above partly by Ciaran McCreesh) + +|/[[=| [[=a=]] an equivalence class (only for latin1 characters) +|/[[.| [[.a.]] a collation element (only works with single char) + +|/\%'m| \%'m match at mark m +|/\%<'m| \%<'m match before mark m +|/\%>'m| \%>'m match after mark m +|/\%V| \%V match in Visual area + +Nesting |/multi| items no longer is an error when an empty match is possible. + +It is now possible to use \{0}, it matches the preceding atom zero times. Not +useful, just for compatibility. + + +New Syntax/Indent/FTplugin files: ~ + +Moved all the indent settings from the filetype plugin to the indent file. +Implemented b:undo_indent to undo indent settings when setting 'filetype' to a +different value. + +a2ps syntax and ftplugin file. (Nikolai Weibull) +ABAB/4 syntax file. (Marius van Wyk) +alsaconf ftplugin file. (Nikolai Weibull) +AppendMatchGroup ftplugin file. (Dave Silvia) +arch ftplugin file. (Nikolai Weibull) +asterisk and asteriskvm syntax file. (Tilghman Lesher) +BDF ftplugin file. (Nikolai Weibull) +BibTeX indent file. (Dorai Sitaram) +BibTeX Bibliography Style syntax file. (Tim Pope) +BTM ftplugin file. (Bram Moolenaar) +calendar ftplugin file. (Nikolai Weibull) +Changelog indent file. (Nikolai Weibull) +ChordPro syntax file. (Niels Bo Andersen) +Cmake indent and syntax file. (Andy Cedilnik) +conf ftplugin file. (Nikolai Weibull) +context syntax and ftplugin file. (Nikolai Weibull) +CRM114 ftplugin file. (Nikolai Weibull) +cvs RC ftplugin file. (Nikolai Weibull) +D indent file. (Jason Mills) +Debian Sources.list syntax file. (Matthijs Mohlmann) +dictconf and dictdconf syntax, indent and ftplugin files. (Nikolai Weibull) +diff ftplugin file. (Bram Moolenaar) +dircolors ftplugin file. (Nikolai Weibull) +django and htmldjango syntax file. (Dave Hodder) +doxygen syntax file. (Michael Geddes) +elinks ftplugin file. (Nikolai Weibull) +eterm ftplugin file. (Nikolai Weibull) +eviews syntax file. (Vaidotas Zemlys) +fetchmail RC ftplugin file. (Nikolai Weibull) +FlexWiki syntax and ftplugin file. (George Reilly) +Generic indent file. (Dave Silvia) +gpg ftplugin file. (Nikolai Weibull) +gretl syntax file. (Vaidotas Zemlys) +groovy syntax file. (Alessio Pace) +group syntax and ftplugin file. (Nikolai Weibull) +grub ftplugin file. (Nikolai Weibull) +Haskell ftplugin file. (Nikolai Weibull) +help ftplugin file. (Nikolai Weibull) +indent ftplugin file. (Nikolai Weibull) +Javascript ftplugin file. (Bram Moolenaar) +Kconfig ftplugin and syntax file. (Nikolai Weibull) +ld syntax, indent and ftplugin file. (Nikolai Weibull) +lftp ftplugin file. (Nikolai Weibull) +libao config ftplugin file. (Nikolai Weibull) +limits syntax and ftplugin file. (Nikolai Weibull) +Lisp indent file. (Sergey Khorev) +loginaccess and logindefs syntax and ftplugin file. (Nikolai Weibull) +m4 ftplugin file. (Nikolai Weibull) +mailaliases syntax file. (Nikolai Weibull) +mailcap ftplugin file. (Nikolai Weibull) +manconf syntax and ftplugin file. (Nikolai Weibull) +matlab ftplugin file. (Jake Wasserman) +Maxima syntax file. (Robert Dodier) +MGL syntax file. (Gero Kuhlmann) +modconf ftplugin file. (Nikolai Weibull) +mplayer config ftplugin file. (Nikolai Weibull) +Mrxvtrc syntax and ftplugin file. (Gautam Iyer) +MuPAD source syntax, indent and ftplugin. (Dave Silvia) +mutt RC ftplugin file. (Nikolai Weibull) +nanorc syntax and ftplugin file. (Nikolai Weibull) +netrc ftplugin file. (Nikolai Weibull) +pamconf syntax and ftplugin file. (Nikolai Weibull) +Pascal indent file. (Neil Carter) +passwd syntax and ftplugin file. (Nikolai Weibull) +PHP compiler plugin. (Doug Kearns) +pinfo ftplugin file. (Nikolai Weibull) +plaintex syntax and ftplugin files. (Nikolai Weibull, Benji Fisher) +procmail ftplugin file. (Nikolai Weibull) +prolog ftplugin file. (Nikolai Weibull) +protocols syntax and ftplugin file. (Nikolai Weibull) +quake ftplugin file. (Nikolai Weibull) +racc syntax and ftplugin file. (Nikolai Weibull) +readline ftplugin file. (Nikolai Weibull) +rhelp syntax file. (Johannes Ranke) +rnoweb syntax file. (Johannes Ranke) +Relax NG compact ftplugin file. (Nikolai Weibull) +Scheme indent file. (Sergey Khorev) +screen ftplugin file. (Nikolai Weibull) +sensors syntax and ftplugin file. (Nikolai Weibull) +services syntax and ftplugin file. (Nikolai Weibull) +setserial syntax and ftplugin file. (Nikolai Weibull) +sieve syntax and ftplugin file. (Nikolai Weibull) +SiSU syntax file (Ralph Amissah) +Sive syntax file. (Nikolai Weibull) +slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull) +SML indent file. (Saikat Guha) +SQL anywhere syntax and indent file. (David Fishburn) +SQL indent file. +SQL-Informix syntax file. (Dean L Hill) +SQL: Handling of various variants. (David Fishburn) +sshconfig ftplugin file. (Nikolai Weibull) +Stata and SMCL syntax files. (Jeff Pitblado) +sudoers ftplugin file. (Nikolai Weibull) +sysctl syntax and ftplugin file. (Nikolai Weibull) +terminfo ftplugin file. (Nikolai Weibull) +trustees syntax file. (Nima Talebi) +Vera syntax file. (David Eggum) +udev config, permissions and rules syntax and ftplugin files. (Nikolai Weibull) +updatedb syntax and ftplugin file. (Nikolai Weibull) +VHDL indent file (Gerald Lai) +WSML syntax file. (Thomas Haselwanter) +Xdefaults ftplugin file. (Nikolai Weibull) +XFree86 config ftplugin file. (Nikolai Weibull) +xinetd syntax, indent and ftplugin file. (Nikolai Weibull) +xmodmap ftplugin file. (Nikolai Weibull) +Xquery syntax file. (Jean-Marc Vanel) +xsd (XML schema) indent file. +YAML ftplugin file. (Nikolai Weibull) +Zsh ftplugin file. (Nikolai Weibull) + + +New Keymaps: ~ + +Sinhala (Sri Lanka) (Harshula Jayasuriya) +Tamil in TSCII encoding (Yegappan Lakshmanan) +Greek in cp737 (Panagiotis Louridas) +Polish-slash (HS6_06) +Ukrainian-jcuken (Anatoli Sakhnik) +Kana (Edward L. Fox) + + +New message translations: ~ + +The Ukrainian messages are now also available in cp1251. +Vietnamese message translations and menu. (Phan Vinh Thinh) + + +Others: ~ + +The |:read| command has the |++edit| argument. This means it will use the +detected 'fileformat', 'fileencoding' and other options for the buffer. This +also fixes the problem that editing a compressed file didn't set these +options. + +The Netbeans interface was updated for Sun Studio 10. The protocol number +goes from 2.2 to 2.3. (Gordon Prieur) + +Mac: When starting up Vim will load the $VIMRUNTIME/macmap.vim script to +define default command-key mappings. (mostly by Benji Fisher) + +Mac: Add the selection type to the clipboard, so that Block, line and +character selections can be used between two Vims. (Eckehard Berns) +Also fixes the problem that setting 'clipboard' to "unnamed" breaks using +"yyp". + +Mac: GUI font selector. (Peter Cucka) + +Mac: support for multibyte characters. (Da Woon Jung) +This doesn't always work properly. If you see text drawing problems try +switching the 'macatsui' option off. + +Mac: Support the xterm mouse in the non-GUI version. + +Mac: better integration with Xcode. Post a fake mouse-up event after the odoc +event and the drag receive handler to work around a stall after Vim loads a +file. Fixed an off-by-one line number error. (Da Woon Jung) + +Mac: When started from Finder change directory to the file being edited or the +user home directory. + +Added the t_SI and t_EI escape sequences for starting and ending Insert mode. +To be used to set the cursor shape to a bar or a block. No default values, +they are not supported by termcap/terminfo. + +GUI font selector for Motif. (Marcin Dalecki) + +Nicer toolbar buttons for Motif. (Marcin Dalecki) + +Mnemonics for the Motif find/replace dialog. (Marcin Dalecki) + +Included a few improvements for Motif from Marcin Dalecki. Draw label +contents ourselves to make them handle fonts in a way configurable by Vim and +a bit less dependent on the X11 font management. + +Autocommands can be defined local to a buffer. This means they will also work +when the buffer does not have a name or no specific name. See +|autocmd-buflocal|. (Yakov Lerner) + +For xterm most combinations of modifiers with function keys are recognized. +|xterm-modifier-keys| + +When 'verbose' is set the output of ":highlight" will show where a highlight +item was last set. +When 'verbose' is set the output of the ":map", ":abbreviate", ":command", +":function" and ":autocmd" commands will show where it was last defined. +(Yegappan Lakshmanan) + +":function /pattern" lists functions matching the pattern. + +"1gd" can be used like "gd" but ignores matches in a {} block that ends before +the cursor position. Likewise for "1gD" and "gD". + +'scrolljump' can be set to a negative number to scroll a percentage of the +window height. + +The |v:scrollstart| variable has been added to help find the location in +your script that causes the hit-enter prompt. + +To make it possible to handle the situation that a file is being edited that +is already being edited by another Vim instance, the |SwapExists| event has +been added. The |v:swapname|, |v:swapchoice| and |v:swapcommand| variables +can be used, for example to use the |client-server| functionality to bring the +other Vim to the foreground. +When starting Vim with a "-t tag" argument, there is an existing swapfile and +the user selects "quit" or "abort" then exit Vim. + +Undo now also restores the '< and '> marks. "gv" selects the same area as +before the change and undo. + +When editing a search pattern for a "/" or "?" command and 'incsearch' is set +CTRL-L can be used to add a character from the current match. CTRL-R CTRL-W +will add a word, but exclude the part of the word that was already typed. + +Ruby interface: add line number methods. (Ryan Paul) + +The $MYVIMRC environment variable is set to the first found vimrc file. +The $MYGVIMRC environment variable is set to the first found gvimrc file. + +============================================================================== +IMPROVEMENTS *improvements-7* + +":helpgrep" accepts a language specifier after the pattern: "pat@it". + +Moved the help for printing to a separate help file. It's quite a lot now. + +When doing completion for ":!cmd", ":r !cmd" or ":w !cmd" executable files are +found in $PATH instead of looking for ordinary files in the current directory. + +When ":silent" is used and a backwards range is given for an Ex command the +range is swapped automatically instead of asking if that is OK. + +The pattern matching code was changed from a recursive function to an +iterative mechanism. This avoids out-of-stack errors. State is stored in +allocated memory, running out of memory can always be detected. Allows +matching more complex things, but Vim may seem to hang while doing that. + +Previously some options were always evaluated in the |sandbox|. Now that only +happens when the option was set from a modeline or in secure mode. Applies to +'balloonexpr', 'foldexpr', 'foldtext' and 'includeexpr'. (Sumner Hayes) + +Some commands and expressions could have nasty side effects, such as using +CTRL-R = while editing a search pattern and the expression invokes a function +that jumps to another window. The |textlock| has been added to prevent this +from happening. + +":breakadd here" and ":breakdel here" can be used to set or delete a +breakpoint at the cursor. + +It is now possible to define a function with: > + :exe "func Test()\n ...\n endfunc" + +The tutor was updated to make it simpler to use and text was added to explain +a few more important commands. Used ideas from Gabriel Zachmann. + +Unix: When libcall() fails obtain an error message with dlerror() and display +it. (Johannes Zellner) + +Mac and Cygwin: When editing an existing file make the file name the same case +of the edited file. Thus when typing ":e os_UNIX.c" the file name becomes +"os_unix.c". + +Added "nbsp" in 'listchars'. (David Blanchet) + +Added the "acwrite" value for the 'buftype' option. This is for a buffer that +does not have a name that refers to a file and is written with BufWriteCmd +autocommands. + +For lisp indenting and matching parenthesis: (Sergey Khorev) +- square brackets are recognized properly +- #\(, #\), #\[ and #\] are recognized as character literals +- Lisp line comments (delimited by semicolon) are recognized + +Added the "count" argument to match(), matchend() and matchstr(). (Ilya Sher) + +winnr() takes an optional "$" or "#" argument. (Nikolai Weibull, Yegappan +Lakshmanan) + +Added 's' flag to search(): set ' mark if cursor moved. (Yegappan Lakshmanan) +Added 'n' flag to search(): don't move the cursor. (Nikolai Weibull) +Added 'c' flag to search(): accept match at the cursor. +Added 'e' flag to search(): move to end of the match. (Benji Fisher) +Added 'p' flag to search(): return number of sub-pattern. (Benji Fisher) +These also apply to searchpos(), searchpair() and searchpairpos(). + +The search() and searchpair() functions have an extra argument to specify +where to stop searching. Speeds up searches that should not continue too far. + +When uncompressing fails in the gzip plugin, give an error message but don't +delete the raw text. Helps if the file has a .gz extension but is not +actually compressed. (Andrew Pimlott) + +When C, C++ or IDL syntax is used, may additionally load doxygen syntax. +(Michael Geddes) + +Support setting 'filetype' and 'syntax' to "aaa.bbb" for "aaa" plus "bbb" +filetype or syntax. + +The ":registers" command now displays multibyte characters properly. + +VMS: In the usage message mention that a slash can be used to make a flag +upper case. Add color support to the builtin vt320 terminal codes. +(Zoltan Arpadffy) + +For the '%' item in 'viminfo', allow a number to set a maximum for the number +of buffers. + +For recognizing the file type: When a file looks like a shell script, check +for an "exec" command that starts the tcl interpreter. (suggested by Alexios +Zavras) + +Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that +digraphs still work when iconv is not available. + +When a session file is loaded while editing an unnamed, empty buffer that +buffer is wiped out. Avoids that there is an unused buffer in the buffer +list. + +Win32: When libintl.dll supports bind_textdomain_codeset(), use it. +(NAKADAIRA Yukihiro) + +Win32: Vim was not aware of hard links on NTFS file systems. These are +detected now for when 'backupcopy' is "auto". Also fixed a bogus "file has +been changed since reading it" error for links. + +When foldtext() finds no text after removing the comment leader, use the +second line of the fold. Helps for C-style /* */ comments where the first +line is just "/*". + +When editing the same file from two systems (e.g., Unix and MS-Windows) there +mostly was no warning for an existing swap file, because the name of the +edited file differs (e.g., y:\dir\file vs /home/me/dir/file). Added a flag to +the swap file to indicate it is in the same directory as the edited file. The +used path then doesn't matter and the check for editing the same file is much +more reliable. + +Unix: When editing a file through a symlink the swap file would use the name +of the symlink. Now use the name of the actual file, so that editing the same +file twice is detected. (suggestions by Stefano Zacchiroli and James Vega) + +Client-server communication now supports 'encoding'. When setting 'encoding' +in a Vim server to "utf-8", and using "vim --remote fname" in a console, +"fname" is converted from the console encoding to utf-8. Also allows Vims +with different 'encoding' settings to exchange messages. + +Internal: Changed ga_room into ga_maxlen, so that it doesn't need to be +incremented/decremented each time. + +When a register is empty it is not stored in the viminfo file. + +Removed the tcltags script, it's obsolete. + +":redir @*>>" and ":redir @+>>" append to the clipboard. Better check for +invalid characters after the register name. |:redir| + +":redir => variable" and ":redir =>> variable" write or append to a variable. +(Yegappan Lakshmanan) |:redir| + +":redir @{a-z}>>" appends to register a to z. (Yegappan Lakshmanan) + +The 'verbosefile' option can be used to log messages in a file. Verbose +messages are not displayed then. The "-V{filename}" argument can be used to +log startup messages. + +":let g:" lists global variables. +":let b:" lists buffer-local variables. +":let w:" lists window-local variables. +":let v:" lists Vim variables. + +The stridx() and strridx() functions take a third argument, where to start +searching. (Yegappan Lakshmanan) + +The getreg() function takes an extra argument to be able to get the expression +for the '=' register instead of the result of evaluating it. + +The setline() function can take a List argument to set multiple lines. When +the line number is just below the last line the line is appended. + +g CTRL-G also shows the number of characters if it differs from the number of +bytes. + +Completion for ":debug" and entering an expression for the '=' register. Skip +":" between range and command name. (Peter Winters) + +CTRL-Q in Insert mode now works like CTRL-V by default. Previously it was +ignored. + +When "beep" is included in 'debug' a function or script that causes a beep +will result in a message with the source of the error. + +When completing buffer names, match with "\(^\|[\/]\)" instead of "^", so that +":buf stor<Tab>" finds both "include/storage.h" and "storage/main.c". + +To count items (pattern matches) without changing the buffer the 'n' flag has +been added to |:substitute|. See |count-items|. + +In a |:substitute| command the \u, \U, \l and \L items now also work for +multibyte characters. + +The "screen.linux" $TERM name is recognized to set the default for +'background' to "dark". (Ciaran McCreesh) Also for "cygwin" and "putty". + +The |FileChangedShell| autocommand event can now use the |v:fcs_reason| +variable that specifies what triggered the event. |v:fcs_choice| can be used +to reload the buffer or ask the user what to do. + +Not all modifiers were recognized for xterm function keys. Added the +possibility in term codes to end in ";*X" or "O*X", where X is any character +and the * stands for the modifier code. +Added the <xUp>, <xDown>, <xLeft> and <xRight> keys, to be able to recognize +the two forms that xterm can send their codes in and still handle all possible +modifiers. + +getwinvar() now also works to obtain a buffer-local option from the specified +window. + +Added the "%s" item to 'errorformat'. (Yegappan Lakshmanan) +Added the "%>" item to 'errorformat'. + +For 'errorformat' it was not possible to have a file name that contains the +character that follows after "%f". For example, in "%f:%l:%m" the file name +could not contain ":". Now include the first ":" where the rest of the +pattern matches. In the example a ":" not followed by a line number is +included in the file name. (suggested by Emanuele Giaquinta) + +GTK GUI: use the GTK file dialog when it's available. Mix from patches by +Grahame Bowland and Evan Webb. + +Added ":scriptnames" to bugreport.vim, so that we can see what plugins were +used. + +Win32: If the user changes the setting for the number of lines a scroll wheel +click scrolls it is now used immediately. Previously Vim would need to be +restarted. + +When using @= in an expression the value is expression @= contains. ":let @= += value" can be used to set the register contents. + +A ! can be added to ":popup" to have the popup menu appear at the mouse +pointer position instead of the text cursor. + +The table with encodings has been expanded with many MS-Windows codepages, +such as cp1250 and cp737, so that these can also be used on Unix without +prepending "8bit-". +When an encoding name starts with "microsoft-cp" ignore the "microsoft-" part. + +Added the "customlist" completion argument to a user-defined command. The +user-defined completion function should return the completion candidates as a +Vim List and the returned results are not filtered by Vim. (Yegappan +Lakshmanan) + +Win32: Balloons can have multiple lines if common controls supports it. +(Sergey Khorev) + +For command-line completion the matches for various types of arguments are now +sorted: user commands, variables, syntax names, etc. + +When no locale is set, thus using the "C" locale, Vim will work with latin1 +characters, using its own isupper()/toupper()/etc. functions. + +When using an rxvt terminal emulator guess the value of 'background' using the +COLORFGBG environment variable. (Ciaran McCreesh) + +Also support t_SI and t_EI on Unix with normal features. (Ciaran McCreesh) + +When 'foldcolumn' is one then put as much info in it as possible. This allows +closing a fold with the mouse by clicking on the '-'. + +input() takes an optional completion argument to specify the type of +completion supported for the input. (Yegappan Lakshmanan) + +"dp" works with more than two buffers in diff mode if there is only one where +'modifiable' is set. + +The 'diffopt' option has three new values: "horizontal", "vertical" and +"foldcolumn". + +When the 'include' option contains \zs the file name found is what is being +matched from \zs to the end or \ze. Useful to pass more to 'includeexpr'. + +Loading plugins on startup now supports subdirectories in the plugin +directory. |load-plugins| + +In the foldcolumn always show the '+' for a closed fold, so that it can be +opened easily. It may overwrite another character, esp. if 'foldcolumn' is 1. + +It is now possible to get the W10 message again by setting 'readonly'. Useful +in the FileChangedRO autocommand when checking out the file fails. + +Unix: When open() returns EFBIG give an appropriate message. + +":mksession" sets the SessionLoad variable to notify plugins. A modeline is +added to the session file to set 'filetype' to "vim". + +In the ATTENTION prompt put the "Delete it" choice before "Quit" to make it +more logical. (Robert Webb) + +When appending to a file while the buffer has no name the name of the appended +file would be used for the current buffer. But the buffer contents is +actually different from the file content. Don't set the file name, unless the +'P' flag is present in 'cpoptions'. + +When starting to edit a new file and the directory for the file doesn't exist +then Vim will report "[New DIRECTORY]" instead of "[New File] to give the user +a hint that something might be wrong. + +Win32: Preserve the hidden attribute of the viminfo file. + +In Insert mode CTRL-A didn't keep the last inserted text when using CTRL-O and +then a cursor key. Now keep the previously inserted text if nothing is +inserted after the CTRL-O. Allows using CTRL-O commands to move the cursor +without losing the last inserted text. + +The exists() function now supports checking for autocmd group definition +and for supported autocommand events. (Yegappan Lakshmanan) + +Allow using ":global" in the sandbox, it doesn't do anything harmful by +itself. + +":saveas asdf.c" will set 'filetype' to c when it's empty. Also for ":w +asdf.c" when it sets the filename for the buffer. + +Insert mode completion for whole lines now also searches unloaded buffers. + +The colortest.vim script can now be invoked directly with ":source" or +":runtime syntax/colortest.vim". + +The 'statusline' option can be local to the window, so that each window can +have a different value. (partly by Yegappan Lakshmanan) + +The 'statusline' option and other options that support the same format can now +use these new features: +- When it starts with "%!" the value is first evaluated as an expression + before parsing the value. +- "%#HLname#" can be used to start highlighting with HLname. + +When 'statusline' is set to something that causes an error message then it is +made empty to avoid an endless redraw loop. Also for other options, such at +'tabline' and 'titlestring'. ":verbose set statusline" will mention that it +was set in an error handler. + +When there are several matching tags, the ":tag <name>" and CTRL-] commands +jump to the [count] matching tag. (Yegappan Lakshmanan) + +Win32: In the batch files generated by the install program, use $VIMRUNTIME or +$VIM if it's set. Example provided by Mathias Michaelis. +Also create a vimtutor.bat batch file. + +The 'balloonexpr' option is now |global-local|. + +The system() function now runs in cooked mode, thus can be interrupted by +CTRL-C. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-7* + +Dropped the support for the BeOS and Amiga GUI. They were not maintained and +probably didn't work. If you want to work on this: get the Vim 6.x version +and merge it back in. + +When running the tests and one of them fails to produce "test.out" the +following tests are still executed. This helps when running out of memory. + +When compiling with EXITFREE defined and the ccmalloc library, it is possible +to detect memory leaks. Some memory will always be reported as leaked, such +as allocated by X11 library functions and the memory allocated in +alloc_cmdbuff() to store the ":quit" command. + +Moved the code for printing to src/hardcopy.c. + +Moved some code from main() to separate functions to make it easier to see +what is being done. Using a structure to avoid a lot of arguments to the +functions. + +Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c +without copying the code. + +--- Mac --- + +"make" now creates the Vim.app directory and "make install" copies it to its +final destination. (Raf) + +Put the runtime directory not directly in Vim.app but in +Vim.app/Contents/Resources/vim, so that it's according to Mac specs. + +Made it possible to compile with Motif, Athena or GTK without tricks and still +being able to use the MacRoman conversion. Added the os_mac_conv.c file. + +When running "make install" the runtime files are installed as for Unix. +Avoids that too many files are copied. When running "make" a link to the +runtime files is created to avoid a recursive copy that takes much time. + +Configure will attempt to build Vim for both Intel and PowerPC. The +--with-mac-arch configure argument can change it. + +--- Win32 --- + +The Make_mvc.mak file was adjusted to work with the latest MS compilers, +including the free version of Visual Studio 2005. (George Reilly) + +INSTALLpc.txt was updated for the recent changes. (George Reilly) + +The distributed executable is now produced with the free Visual C++ Toolkit +2003 and other free SDK chunks. msvcsetup.bat was added to support this. + +Also generate the .pdb file that can be used to generate a useful crash report +on MS-Windows. (George Reilly) + +============================================================================== +BUG FIXES *bug-fixes-7* + +When using PostScript printing on MS-DOS the default 'printexpr' used "lpr" +instead of "copy". When 'printdevice' was empty the copy command did not +work. Use "LPT1" then. + +The GTK font dialog uses a font size zero when the font name doesn't include a +size. Use a default size of 10. + +This example in the documentation didn't work: > + :e `=foo . ".c"` +Skip over the expression in `=expr` when looking for comments, |, % and #. + +When ":helpgrep" doesn't find anything there is no error message. + +"L" and "H" did not take closed folds into account. + +Win32: The "-P title" argument stopped at the first title that matched, even +when it doesn't support MDI. + +Mac GUI: CTRL-^ and CTRL-@ did not work. + +"2daw" on "word." at the end of a line didn't include the preceding white +space. + +Win32: Using FindExecutable() doesn't work to find a program. Use +SearchPath() instead. For executable() use $PATHEXT when the program searched +for doesn't have an extension. + +When 'virtualedit' is set, moving the cursor up after appending a character +may move it to a different column. Was caused by auto-formatting moving the +cursor and not putting it back where it was. + +When indent was added automatically and then moving the cursor, the indent was +not deleted (like when pressing ESC). The "I" flag in 'cpoptions' can be used +to make it work the old way. + +When opening a command-line window, 'textwidth' gets set to 78 by the Vim +filetype plugin. Reset 'textwidth' to 0 to avoid lines are broken. + +After using cursor(line, col) moving up/down doesn't keep the same column. + +Win32: Borland C before 5.5 requires using ".u." for LowPart and HighPart +fields. (Walter Briscoe) + +On Sinix SYS_NMLN isn't always defined. Define it ourselves. (Cristiano De +Michele) + +Printing with PostScript may keep the printer waiting for more. Append a +CTRL-D to the printer output. (Mike Williams) + +When converting a string with a hex or octal number the leading '-' was +ignored. ":echo '-05' + 0" resulted in 5 instead of -5. + +Using "@:" to repeat a command line didn't work when it contains control +characters. Also remove "'<,'>" when in Visual mode to avoid that it appears +twice. + +When using file completion for a user command, it would not expand environment +variables like for a regular command with a file argument. + +'cindent': When the argument of a #define looks like a C++ class the next line +is indented too much. + +When 'comments' includes multibyte characters inserting the middle part and +alignment may go wrong. 'cindent' also suffers from this for right-aligned +items. + +Win32: when 'encoding' is set to "utf-8" getenv() still returns strings in the +active codepage. Convert to utf-8. Also for $HOME. + +The default for 'helplang' was "zh" for both "zh_cn" and "zh_tw". Now use +"cn" or "tw" as intended. + +When 'bin' is set and 'eol' is not set then line2byte() added the line break +after the last line while it's not there. + +Using foldlevel() in a WinEnter autocommand may not work. Noticed when +resizing the GUI shell upon startup. + +Python: Using buffer.append(f.readlines()) didn't work. Allow appending a +string with a trailing newline. The newline is ignored. + +When using the ":saveas f2" command for buffer "f1", the Buffers menu would +contain "f2" twice, one of them leading to "f1". Also trigger the BufFilePre +and BufFilePost events for the alternate buffer that gets the old name. + +strridx() did not work well when the needle is empty. (Ciaran McCreesh) + +GTK: Avoid a potential hang in gui_mch_wait_for_chars() when input arrives +just before it is invoked + +VMS: Occasionally CR characters were inserted in the file. Expansion of +environment variables was not correct. (Zoltan Arpadffy) + +UTF-8: When 'delcombine' is set "dw" only deleted the last combining character +from the first character of the word. + +When using ":sball" in an autocommand only the filetype in one buffer was +detected. Reset did_filetype in enter_buffer(). + +When using ":argdo" and the window already was at the first argument index, +but not actually editing it, the current buffer would be used instead. + +When ":next dir/*" includes many matches, adding the names to the argument +list may take an awful lot of time and can't be interrupted. Allow +interrupting this. + +When editing a file that was already loaded in a buffer, modelines were not +used. Now window-local options in the modeline are set. Buffer-local options +and global options remain unmodified. + +Win32: When 'encoding' is set to "utf-8" in the vimrc file, files from the +command line with non-ASCII characters are not used correctly. Recode the +file names when 'encoding' is set, using the Unicode command line. + +Win32 console: When the default for 'encoding' ends up to be "latin1", the +default value of 'isprint' was wrong. + +When an error message is given while waiting for a character (e.g., when an +xterm reports the number of colors), the hit-enter prompt overwrote the last +line. Don't reset msg_didout in normal_cmd() for K_IGNORE. + +Mac GUI: Shift-Tab didn't work. + +When defining tooltip text, don't translate terminal codes, since it's not +going to be used like a command. + +GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a +GTK error. Invalid characters may appear when 'encoding' is changed. + +GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango. + +Win32: When 'encoding' is changed while starting up, use the Unicode command +line to convert the file arguments to 'encoding'. Both for the GUI and the +console version. + +Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because +there is no codepage for latin9. Do our own conversion from latin9 to UCS2. + +When two versions of GTK+ 2 are installed it was possible to use the header +files from one and the library from the other. Use GTK_LIBDIR to put the +directory for the library early in the link flags. + +With the GUI find/replace dialog a replace only worked if the pattern was +literal text. Now it works for any pattern. + +When 'equalalways' is set and 'eadirection' is "hor", ":quit" would still +cause equalizing window heights in the vertical direction. + +When ":emenu" is used in a startup script the command was put in the typeahead +buffer, causing a prompt for the crypt key to be messed up. + +Mac OS/X: The default for 'isprint' included characters 128-160, causes +problems for Terminal.app. + +When a syntax item with "containedin" is used, it may match in the start or +end of a region with a matchgroup, while this doesn't happen for a "contains" +argument. + +When a transparent syntax items matches in another item where the highlighting +has already stopped (because of a he= argument), the highlighting would come +back. + +When cscope is used to set the quickfix error list, it didn't get set if there +was only one match. (Sergey Khorev) + +When 'confirm' is set and using ":bdel" in a modified buffer, then selecting +"cancel", would still give an error message. + +The PopUp menu items that started Visual mode didn't work when not in Normal +mode. Switching between selecting a word and a line was not possible. + +Win32: The keypad decimal point always resulted in a '.', while on some +keyboards it's a ','. Use MapVirtualKey(VK_DECIMAL, 2). + +Removed unused function DisplayCompStringOpaque() from gui_w32.c + +In Visual mode there is not always an indication whether the line break is +selected or not. Highlight the character after the line when the line break +is included, e.g., after "v$o". + +GTK: The <F10> key can't be mapped, it selects the menu. Disable that with a +GTK setting and do select the menu when <F10> isn't mapped. (David Necas) + +After "Y" '[ and '] were not at start/end of the yanked text. + +When a telnet connection is dropped Vim preserves files and exits. While +doing that a SIGHUP may arrive and disturb us, thus ignore it. (Scott +Anderson) Also postpone SIGHUP, SIGQUIT and SIGTERM until it's safe to +handle. Added handle_signal(). + +When completing a file name on the command line backslashes are required for +white space. Was only done for a space, not for a Tab. + +When configure could not find a terminal library, compiling continued for a +long time before reporting the problem. Added a configure check for tgetent() +being found in a library. + +When the cursor is on the first char of the last line a ":g/pat/s///" command +may cause the cursor to be displayed below the text. + +Win32: Editing a file with non-ASCII characters doesn't work when 'encoding' +is "utf-8". use _wfullpath() instead of _fullpath(). (Yu-sung Moon) + +When recovering the 'fileformat' and 'fileencoding' were taken from the +original file instead of from the swapfile. When the file didn't exist, was +empty or the option was changed (e.g., with ":e ++fenc=cp123 file") it could +be wrong. Now store 'fileformat' and 'fileencoding' in the swapfile and use +the values when recovering. + +":bufdo g/something/p" overwrites each last printed text line with the file +message for the next buffer. Temporarily clear 'shortmess' to avoid that. + +Win32: Cannot edit a file starting with # with --remote. Do escape % and # +when building the ":drop" command. + +A comment or | just after an expression-backtick argument was not recognized. +E.g. in :e `="foo"`"comment. + +"(" does not stop at an empty sentence (single dot and white space) while ")" +does. Also breaks "das" on that dot. + +When doing "yy" with the cursor on a TAB the ruler could be wrong and "k" +moved the cursor to another column. + +When 'commentstring' is '"%s' and there is a double quote in the line a double +quote before the fold marker isn't removed in the text displayed for a closed +fold. + +In Visual mode, when 'bin' and 'eol' set, g CTRL-G counted the last line +break, resulting in "selected 202 of 201 bytes". + +Motif: fonts were not used for dialog components. (Marcin Dalecki) + +Motif: After using a toolbar button the keyboard focus would be on the toolbar +(Lesstif problem). (Marcin Dalecki) + +When using "y<C-V>`x" where mark x is in the first column, the last line was +not included. + +Not all test scripts work properly on MS-Windows when checked out from CVS. +Use a Vim command to fix all fileformats to dos before executing the tests. + +When using ":new" and the file fits in the window, lines could still be above +the window. Now remove empty lines instead of keeping the relative position. + +Cmdline completion didn't work after ":let var1 var<Tab>". + +When using ":startinsert" or ":startreplace" when already in Insert mode +(possible when using CTRL-R =), pressing Esc would directly restart Insert +mode. (Peter Winters) + +"2daw" didn't work at end of file if the last word is a single character. + +Completion for ":next a'<Tab>" put a backslash before single quote, but it was +not removed when editing a file. Now halve backslashes in save_patterns(). +Also fix expanding a file name with the shell that contains "\'". + +When doing "1,6d|put" only "fewer lines" was reported. Now a following "more +lines" overwrites the message. + +Configure could not handle "-Dfoo=long\ long" in the TCL config output. + +When searching backwards, using a pattern that matches a newline and uses \zs +after that, didn't find a match. Could also get a hang or end up in the right +column in the wrong line. + +When $LANG is "sl" for slovenian, the slovak menu was used, since "slovak" +starts with "sl". + +When 'paste' is set in the GUI the Paste toolbar button doesn't work. Clear +'paste' when starting the GUI. + +A message about a wrong viminfo line included the trailing NL. + +When 'paste' is set in the GUI the toolbar button doesn't work in Insert mode. +Use ":exe" in menu.vim to avoid duplicating the commands, instead of using a +mapping. + +Treat "mlterm" as an xterm-like terminal. (Seiichi Sato) + +":z.4" and ":z=4" didn't work Vi compatible. + +When sourcing a file, editing it and sourcing it again, it could appear twice +in ":scriptnames" and get a new <SID>, because the inode has changed. + +When $SHELL is set but empty the 'shell' option would be empty. Don't use an +empty $SHELL value. + +A command "w! file" in .vimrc or $EXINIT didn't work. Now it writes an empty +file. + +When a CTRL-F command at the end of the file failed, the cursor was still +moved to the start of the line. Now it remains where it is. + +When using ":s" or "&" to repeat the last substitute and "$" was used to put +the cursor in the last column, put the cursor in the last column again. This +is Vi compatible. + +Vim is not fully POSIX compliant but sticks with traditional Vi behavior. +Added a few flags in 'cpoptions' to behave the POSIX way when wanted. The +$VIM_POSIX environment variable is checked to set the default. + +Appending to a register didn't insert a line break like Vi. Added the '>' +flag to 'cpoptions' for this. + +Using "I" in a line with only blanks appended to the line. This is not Vi +compatible. Added the 'H' flag in 'cpoptions' for this. + +When joining multiple lines the cursor would be at the last joint, but Vi +leaves it at the position where "J" would put it. Added the 'q' flag in +'cpoptions' for this. + +Autoindent didn't work for ":insert" and ":append". + +Using ":append" in an empty buffer kept the dummy line. Now it's deleted to +be Vi compatible. + +When reading commands from a file and stdout goes to a terminal, would still +request the xterm version. Vim can't read it, thus the output went to the +shell and caused trouble there. + +When redirecting to a register with an invalid name the redirection would +still be done (after an error message). Now reset "redir_reg". (Yegappan +Lakshmanan) + +It was not possible to use a NL after a backslash in Ex mode. This is +sometimes used to feed multiple lines to a shell command. + +When 'cmdheight' is set to 2 in .vimrc and the GUI uses the number of lines +from the terminal we actually get 3 lines for the cmdline in gvim. + +When setting $HOME allocated memory would leak. + +Win32: bold characters may sometimes write in another character cell. Use +unicodepdy[] as for UTF-8. (Taro Muraoka) + +":w fname" didn't work for files with 'buftype' set to "nofile". + +The method used to locate user commands for completion differed from when they +are executed. Ambiguous command names were not completed properly. + +Incremental search may cause a crash when there is a custom statusline that +indirectly invokes ":normal". + +Diff mode failed when $DIFF_OPTIONS was set in the environment. Unset it +before invoking "diff". + +Completion didn't work after ":argdo", ":windo" and ":bufdo". Also for ":set +&l:opt" and ":set &g:opt". (Peter Winters) + +When setting 'ttymouse' to "dec" in an xterm that supports the DEC mouse +locator it doesn't work. Now switch off the mouse before selecting another +mouse model. + +When the CursorHold event is triggered and the commands peek for typed +characters the typeahead buffer may be messed up, e.g., when a mouse-up event +is received. Avoid invoking the autocommands from the function waiting for a +character, let it put K_CURSORHOLD in the input buffer. + +Removed the "COUNT" flag from ":argadd", to avoid ":argadd 1*" to be used like +":1argadd *". Same for ":argdelete" and ":argedit". + +Avoid that $LANG is used for the menus when LC_MESSAGES is "en_US". + +Added backslashes before dashes in the vim.1 manual page to make them appear +as real dashes. (Pierre Habouzit) + +Where "gq" left the cursor depended on the value of 'formatprg'. Now "gq" +always leaves the cursor at the last line of the formatted text. + +When editing a compressed file, such as "changelog.Debian.gz" file, filetype +detection may try to check the contents of the file while it's still +compressed. Skip setting 'filetype' for compressed files until they have been +decompressed. Required for patterns that end in a "*". + +Starting with an argument "+cmd" or "-S script" causes the cursor to be moved +to the first line. That breaks a BufReadPost autocommand that uses g`". +Don't move the cursor if it's somewhere past the first line. + +"gg=G" while 'modifiable' is off was uninterruptible. + +When 'encoding' is "sjis" inserting CTRL-V u d800 a few times causes a crash. +Don't insert a DBCS character with a NUL second byte. + +In Insert mode CTRL-O <Home> didn't move the cursor. Made "ins_at_eol" global +and reset it in nv_home(). + +Wildcard expansion failed: ":w /tmp/$$.`echo test`". Don't put quotes around +spaces inside backticks. + +After this sequence of commands: Y V p gv: the wrong line is selected. Now +let "gv" select the text that was put, since the original text is deleted. +This should be the most useful thing to do. + +":sleep 100u" sleeps for 100 seconds, not 100 usec as one might expect. Give +an error message when the argument isn't recognized. + +In gui_mch_draw_string() in gui_w32.c "unibuflen" wasn't static, resulting in +reallocating the buffer every time. (Alexei Alexandrov) + +When using a Python "atexit" function it was not invoked when Vim exits. Now +call Py_Finalize() for that. (Ugo Di Girolamo) +This breaks the thread stuff though, fixed by Ugo. + +GTK GUI: using a .vimrc with "set cmdheight=2 lines=43" and ":split" right +after startup, the window layout is messed up. (Michael Schaap) Added +win_new_shellsize() call in gui_init() to fix the topframe size. + +Trick to get ...MOUSE_NM not used when there are vertical splits. Now pass +column -1 for the left most window and add MOUSE_COLOFF for others. Limits +mouse column to 10000. + +searchpair() may hang when the end pattern has "\zs" at the end. Check that +we find the same position again and advance one character. + +When in diff mode and making a change that causes the "changed" highlighting +to disappear or reappear, it was still highlighted in another window. + +When a ":next" command fails because the user selects "Abort" at the ATTENTION +prompt the argument index was advanced anyway. + +When "~" is in 'iskeyword' the "gd" doesn't work, it's used for the previous +substitute pattern. Put "\V" in the pattern to avoid that. + +Use of sprintf() sometimes didn't check properly for buffer overflow. Also +when using smsg(). Included code for snprintf() to avoid having to do size +checks where invoking them + +":help \=<Tab>" didn't find "sub-replace-\=". Wild menu for help tags didn't +show backslashes. ":he :s\=" didn't work. + +When reading an errorfile "~/" in a file name was not expanded. + +GTK GUI: When adding a scrollbar (e.g. when using ":vsplit") in a script or +removing it the window size may change. GTK sends us resize events when we +change the window size ourselves, but they may come at an unexpected moment. +Peek for a character to get any window resize events and fix 'columns' and +'lines' to undo this. + +When using the GTK plug mechanism, resizing and focus was not working +properly. (Neil Bird) + +After deleting files from the argument list a session file generated with +":mksession" may contain invalid ":next" commands. + +When 'shortmess' is empty and 'keymap' set to accents, in Insert mode CTRL-N +may cause the hit-enter prompt. Typing 'a then didn't result in the accented +character. Put the character typed at the prompt back in the typeahead buffer +so that mapping is done in the right mode. + +setbufvar() and setwinvar() did not give error messages. + +It was possible to set a variable with an illegal name, e.g. with setbufvar(). +It was possible to define a function with illegal name, e.t. ":func F{-1}()" + +CTRL-W F and "gf" didn't use the same method to get the file name. + +When reporting a conversion error the line number of the last error could be +given. Now report the first encountered error. + +When using ":e ++enc=name file" and iconv() was used for conversion an error +caused a fall-back to no conversion. Now replace a character with '?' and +continue. + +When opening a new buffer the local value of 'bomb' was not initialized from +the global value. + +Win32: When using the "Edit with Vim" entry the file name was limited to about +200 characters. + +When using command line completion for ":e *foo" and the file "+foo" exists +the resulting command ":e +foo" doesn't work. Now insert a backslash: ":e +\+foo". + +When the translation of "-- More --" was not 10 characters long the following +message would be in the wrong position. + +At the more-prompt the last character in the last line wasn't drawn. + +When deleting non-existing text while 'virtualedit' is set the '[ and '] marks +were not set. + +Win32: Could not use "**/" in 'path', it had to be "**\". + +The search pattern "\n" did not match at the end of the last line. + +Searching for a pattern backwards, starting on the NUL at the end of the line +and 'encoding' is "utf-8" would match the pattern just before it incorrectly. +Affected searchpair('/\*', '', '\*/'). + +For the Find/Replace dialog it was possible that not finding the text resulted +in an error message while redrawing, which cleared the syntax highlighting +while it was being used, resulting in a crash. Now don't clear syntax +highlighting, disable it with b_syn_error. + +Win32: Combining UTF-8 characters were drawn on the previous character. +Could be noticed with a Thai font. + +Output of ":function" could leave some of the typed text behind. (Yegappan +Lakshmanan) + +When the command line history has only a few lines the command line window +would be opened with these lines above the first window line. + +When using a command line window for search strings ":qa" would result in +searching for "qa" instead of quitting all windows. + +GUI: When scrolling with the scrollbar and there is a line that doesn't fit +redrawing may fail. Make sure w_skipcol is valid before redrawing. + +Limit the values of 'columns' and 'lines' to avoid an overflow in Rows * +Columns. Fixed bad effects when running out of memory (command line would be +reversed, ":qa!" resulted in ":!aq"). + +Motif: "gvim -iconic" opened the window anyway. (David Harrison) + +There is a tiny chance that a symlink gets created between checking for an +existing file and creating a file. Use the O_NOFOLLOW for open() if it's +available. + +In an empty line "ix<CTRL-O>0" moved the cursor to after the line instead of +sticking to the first column. + +When using ":wq" and a BufWriteCmd autocmd uses inputsecret() the text was +echoed anyway. Set terminal to raw mode in getcmdline(). + +Unix: ":w a;b~c" caused an error in expanding wildcards. + +When appending to a file with ":w >>fname" in a buffer without a name, causing +the buffer to use "fname", the modified flag was reset. + +When appending to the current file the "not edited" flag would be reset. +":w" would overwrite the file accidentally. + +Unix: When filtering text with an external command Vim would still read input, +causing text typed for the command (e.g., a password) to be eaten and echoed. +Don't read input when the terminal is in cooked mode. + +The Cygwin version of xxd used CR/LF line separators. (Corinna Vinschen) + +Unix: When filtering text through a shell command some resulting text may be +dropped. Now after detecting that the child has exited try reading some more +of its output. + +When inside input(), using "CTRL-R =" and the expression throws an exception +the command line was not abandoned but it wasn't used either. Now abandon +typing the command line. + +'delcombine' was also used in Visual and Select mode and for commands like +"cl". That was illogical and has been disabled. + +When recording while a CursorHold autocommand was defined special keys would +appear in the register. Now the CursorHold event is not triggered while +recording. + +Unix: the src/configure script used ${srcdir-.}, not all shells understand +that. Use ${srcdir:-.} instead. + +When editing file "a" which is a symlink to file "b" that doesn't exist, +writing file "a" to create "b" and then ":split b" resulted in two buffers on +the same file with two different swapfile names. Now set the inode in the +buffer when creating a new file. + +When 'esckeys' is not set don't send the xterm code to request the version +string, because it may cause trouble in Insert mode. + +When evaluating an expression for CTRL-R = on the command line it was possible +to call a function that opens a new window, resulting in errors for +incremental search, and many other nasty things were possible. Now use the +|textlock| to disallow changing the buffer or jumping to another window +to protect from unexpected behavior. Same for CTRL-\ e. + +"d(" deleted the character under the cursor, while the documentation specified +an exclusive motion. Vi also doesn't delete the character under the cursor. + +Shift-Insert in Insert mode could put the cursor before the last character +when it just fits in the window. In coladvance() don't stop at the window +edge when filling with spaces and when in Insert mode. In mswin.vim avoid +getting a beep from the "l" command. + +Win32 GUI: When Alt-F4 is used to close the window and Cancel is selected in +the dialog then Vim would insert <M-F4> in the text. Now it's ignored. + +When ":silent! {cmd}" caused the swap file dialog, which isn't displayed, +there would still be a hit-enter prompt. + +Requesting the termresponse (|t_RV|) early may cause problems with "-c" +arguments that invoke an external command or even "-c quit". Postpone it +until after executing "-c" arguments. + +When typing in Insert mode so that a new line is started, using CTRL-G u to +break undo and start a new change, then joining the lines with <BS> caused +undo info to be missing. Now reset the insertion start point. + +Syntax HL: When a region start match has a matchgroup and an offset that +happens to be after the end of the line then it continued in the next line and +stopped at the region end match, making the region continue after that. +Now check for the column being past the end of the line in syn_add_end_off(). + +When changing a file, setting 'swapfile' off and then on again, making another +change and killing Vim, then some blocks may be missing from the swapfile. +When 'swapfile' is switched back on mark all blocks in the swapfile as dirty. +Added mf_set_dirty(). + +Expanding wildcards in a command like ":e aap;<>!" didn't work. Put +backslashes before characters that are special to the shell. (Adri Verhoef) + +A CursorHold autocommand would cause a message to be cleared. Don't show the +special key for the event for 'showcmd'. + +When expanding a file name for a shell command, as in "!cmd foo<Tab>" or ":r +!cmd foo<Tab>" also escape characters that are special for the shell: +"!;&()<>". + +When the name of the buffer was set by a ":r fname" command |cpo-f| no +autocommands were triggered to notify about the change in the buffer list. + +In the quickfix buffer 'bufhidden' was set to "delete", which caused closing +the quickfix window to leave an unlisted "No Name" buffer behind every time. + +Win32: when using two screens of different size, setting 'lines' to a large +value didn't fill the whole screen. (SungHyun Nam) + +Win32 installer: The generated _vimrc contained an absolute path to diff.exe. +After upgrading it becomes invalid. Now use $VIMRUNTIME instead. + +The command line was cleared too often when 'showmode' was set and ":silent +normal vy" was used. Don't clear the command line unless the mode was +actually displayed. Added the "mode_displayed" variable. + +The "load session" toolbar item could not handle a space or other special +characters in v:this_session. + +":set sta ts=8 sw=4 sts=2" deleted 4 spaces halfway a line instead of 2. + +In a multibyte file the foldmarker could be recognized in the trail byte. +(Taro Muraoka) + +Pasting with CTRL-V and menu didn't work properly when some commands are +mapped. Use ":normal!" instead of ":normal". (Tony Apuzzo) + +Crashed when expanding a file name argument in backticks. + +In some situations the menu and scrollbar didn't work, when the value contains +a CSI byte. (Yukihiro Nakadaira) + +GTK GUI: When drawing the balloon focus changes and we might get a key release +event that removed the balloon again. Ignore the key release event. + +'titleold' was included in ":mkexrc" and ":mksession" files. + +":set background&" didn't use the same logic as was used when starting up. + +When "umask" is set such that nothing is writable then the viminfo file would +be written without write permission. (Julian Bridle) + +Motif: In diff mode dragging one scrollbar didn't update the scrollbar of the +other diff'ed window. + +When editing in an xterm with a different number of colors than expected the +screen would be cleared and redrawn, causing the message about the edited file +to be cleared. Now set "keep_msg" to redraw the last message. + +For a color terminal: When the Normal HL uses bold, possibly to make the color +lighter, and another HL group specifies a color it might become light as well. +Now reset bold if a HL group doesn't specify bold itself. + +When using 256 color xterm the color 255 would show up as color 0. Use a +short instead of a char to store the color number. + +ml_get errors when searching for "\n\zs" in an empty file. + +When selecting a block and using "$" to select until the end of every line and +not highlighting the character under the cursor the first character of the +block could be unhighlighted. + +When counting words for the Visual block area and using "$" to select until +the end of every line only up to the length of the last line was counted. + +"dip" in trailing empty lines left one empty line behind. + +The script ID was only remembered globally for each option. When a buffer- or +window-local option was set the same "last set" location was changed for all +buffers and windows. Now remember the script ID for each local option +separately. + +GUI: The "Replace All" button didn't handle backslashes in the replacement in +the same way as "Replace". Escape backslashes so that they are taken +literally. + +When using Select mode from Insert mode and typing a key, causing lines to be +deleted and a message displayed, delayed the effect of inserting the key. +Now overwrite the message without delay. + +When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line +worked differently. Now recognize all operators when using "l" at the end of +a line. + +GTK GUI: when the font selector returned a font name with a comma in it then +it would be handled like two font names. Now put a backslash before the +comma. + +MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for +'iskeyword' was still for CPxxx. And when 'nocompatible' was set 'isprint' +would also be the wrong value. + +When a command was defined not to take arguments and no '|' no warning message +would be given for using a '|'. Also with ":loadkeymap". + +Motif: When using a fontset and 'encoding' is "utf-8" and sizeof(wchar_t) != +sizeof(XChar2b) then display was wrong. (Yukihiro Nakadaira) + +":all" always set the current window to the first window, even when it +contains a buffer that is not in the argument list (can't be closed because it +is modified). Now go to the window that has the first item of the argument +list. + +GUI: To avoid left-over pixels from bold text all characters after a character +with special attributes were redrawn. Now only do this for characters that +actually are bold. Speeds up displaying considerably. + +When only highlighting changes and the text is scrolled at the same time +everything is redrawn instead of using a scroll and updating the changed text. +E.g., when using ":match" to highlight a paren that the cursor landed on. +Added SOME_VALID: Redraw the whole window but also try to scroll to minimize +redrawing. + +Win32: When using Korean IME making it active didn't work properly. (Moon, +Yu-sung, 2005 March 21) + +Ruby interface: when inserting/deleting lines display wasn't updated. (Ryan +Paul) + +--- fixes since Vim 7.0b --- + +Getting the GCC version in configure didn't work with Solaris sed. First +strip any "darwin." and then get the version number. + +The "autoload" directory was missing from the self-installing executable for +MS-Windows. + +The MS-Windows install program would find "vimtutor.bat" in the install +directory. After changing to "c:" also change to "\" to avoid looking in the +install directory. + +To make the 16 bit DOS version compile exclude not used highlight +initializations and build a tiny instead of small version. + +finddir() and findfile() accept a negative count and return a List then. + +The Python indent file contained a few debugging statements, removed. + +Expanding {} for a function name, resulting in a name starting with "s:" was +not handled correctly. + +Spelling: renamed COMPOUNDMAX to COMPOUNDWORDMAX. Added several items to be +able to handle the new Hungarian dictionary. + +Mac: Default to building for the current platform only, that is much faster +than building a universal binary. Also, using Perl/Python/etc. only works for +the current platform. + +The time on undo messages disappeared for someone. Using %T for strftime() +apparently doesn't work everywhere. Use %H:%M:%S instead. + +Typing BS at the "z=" prompt removed the prompt. + +--- fixes and changes since Vim 7.0c --- + +When jumping to another tab page the Vim window size was always set, even when +nothing in the layout changed. + +Win32 GUI tab pages line wasn't always enabled. Do a proper check for the +compiler version. + +Win32: When switching between tab pages the Vim window was moved when part of +it was outside of the screen. Now only do that in the direction of a size +change. + +Win32: added menu to GUI tab pages line. (Yegappan Lakshmanan) + +Mac: Added document icons. (Benji Fisher) + +Insert mode completion: Using Enter to accept the current match causes +confusion. Use CTRL-Y instead. Also, use CTRL-E to go back to the typed +text. + +GUI: When there are left and right scrollbars, ":tabedit" kept them instead of +using the one that isn't needed. + +Using "gP" to replace al the text could leave the cursor below the last line, +causing ml_get errors. + +When 'cursorline' is set don't use the highlighting when Visual mode is +active, otherwise it's difficult to see the selected area. + +The matchparen plugin restricts the search to 100 lines, to avoid a long delay +when there are closed folds. + +Sometimes using CTRL-X s to list spelling suggestions used text from another +line. + +Win32: Set the default for 'isprint' back to the wrong default "@,~-255", +because many people use Windows-1252 while 'encoding' is "latin1". + +GTK: Added a workaround for gvim crashing when used over an untrusted ssh +link, caused by GTK doing something nasty. (Ed Catmur) + +Win32: The font used for the tab page labels is too big. Use the system menu +font. (George Reilly) + +Win32: Adjusting the window position and size to keep it on the screen didn't +work properly when the taskbar is on the left or top of the screen. + +The installman.sh and installml.sh scripts use ${10}, that didn't work with +old shells. And use "test -f" instead of "test -e". + +Win32: When 'encoding' was set in the vimrc then a directory argument for diff +mode didn't work. + +GUI: at the inputlist() prompt the cursorshape was adjusted as if the windows +were still at their old position. + +The parenmatch plugin didn't remember the highlighting per window. + +Using ":bd" for a buffer that's the current window in another tab page caused +a crash. + +For a new tab page the 'scroll' option wasn't set to a good default. + +Using an end offset for a search "/pat/e" didn't work properly for multibyte +text. (Yukihiro Nakadaira) + +":s/\n/,/" doubled the text when used on the last line. + +When "search" is in 'foldopen' "[s" and "]s" now open folds. + +When using a numbered function "dict" can be omitted, but "self" didn't work +then. Always add FC_DICT to the function flags when it's part of a +dictionary. + +When "--remote-tab" executes locally it left an empty tab page. + +"gvim -u NONE", ":set cursorcolumn", "C" in the second line didn't update +text. Do update further lines even though the "$" is displayed. + +VMS: Support GTK better, also enable +clientserver. (Zoltan Arpadffy) + +When highlighting of statusline or tabline is changed there was no redraw to +show the effect. + +Mac: Added "CFBundleIdentifier" to infplist.xml. + +Added tabpage-local variables t:var. + +Win32: Added double-click in tab pages line creates new tab. (Yegappan +Lakshmanan) + +Motif: Added GUI tab pages line. (Yegappan Lakshmanan) + +Fixed crash when 'lines' was set to 1000 in a modeline. + +When init_spellfile() finds a writable directory in 'runtimepath' but it +doesn't contain a "spell" directory, create one. + +Win32: executable() also finds "xxd" in the directory where Vim was started, +but "!xxd" doesn't work. Append the Vim starting directory to $PATH. + +The tab page labels are shortened, directory names are reduced to a single +letter by default. Added the pathshorten() function to allow a user to do the +same. + +":saveas" now resets 'readonly' if the file was successfully written. + +Set $MYVIMRC file to the first found .vimrc file. +Set $MYGVIMRC file to the first found .gvimrc file. +Added menu item "Startup Settings" that edits the $MYVIMRC file + +Added matcharg(). + +Error message E745 appeared twice. Renamed one to E786. + +Fixed crash when using "au BufRead * Sexplore" and doing ":help". Was wiping +out a buffer that's still in a window. + +":hardcopy" resulted in an error message when 'encoding' is "utf-8" and +'printencoding' is empty. Now it assumes latin1. (Mike Williams) + +The check for the toolbar feature for Motif, depending on certain included +files, wasn't detailed enough, causing building to fail in gui_xmebw.c. + +Using CTRL-E in Insert mode completion after CTRL-P inserted the first match +instead of the original text. + +When displaying a UTF-8 character with a zero lower byte Vim might think the +previous character is double-wide. + +The "nbsp" item of 'listchars' didn't work when 'encoding' was utf-8. + +Motif: when Xm/xpm.h is missing gui_xmebw.c would not compile. +HAVE_XM_UNHIGHLIGHTT_H was missing a T. + +Mac: Moved the .icns files into src/os_mac_rsrc, so that they can all be +copied at once. Adjusted the Info.plist file for three icons. + +When Visual mode is active while switching to another tabpage could get ml_get +errors. + +When 'list' is set, 'nowrap' the $ in the first column caused 'cursorcolumn' +to move to the right. + +When a line wraps, 'cursorcolumn' was never displayed past the end of the +line. + +'autochdir' was only available when compiled with NetBeans and GUI. Now it's +a separate feature, also available in the "big" version. + +Added CTRL-W gf: open file under cursor in new tab page. + +When using the menu in the tab pages line, "New Tab" opens the new tab before +where the click was. Beyond the labels the new tab appears at the end instead +of after the current tab page. + +Inside a mapping with an expression getchar() could not be used. + +When vgetc is used recursively vgetc_busy protects it from being used +recursively. But after a ":normal" command the protection was reset. + +":s/a/b/n" didn't work when 'modifiable' was off. + +When $VIMRUNTIME includes a multibyte character then rgb.txt could not be +found. (Yukihiro Nakadaira) + +":mkspell" didn't work correctly for non-ASCII affix flags when conversion is +needed on the spell file. + +glob('/dir/\$ABC/*') didn't work. + +When using several tab pages and changing 'cmdheight' the display could become +messed up. Now store the value of 'cmdheight' separately for each tab page. + +The user of the Enter key while the popup menu is visible was still confusing. +Now use Enter to select the match after using a cursor key. + +Added "usetab" to 'switchbuf'. + + +--- fixes and changes since Vim 7.0d --- + +Added CTRL-W T: move a window to a new tab page. + +Using CTRL-X s in Insert mode to complete spelling suggestions and using BS +deleted characters before the bad word. + +A few small fixes for the VMS makefile. (Zoltan Arpadffy) + +With a window of 91 lines 45 cols, ":vsp" scrolled the window. Copy w_wrow +when splitting a window and skip setting the height when it's already at the +right value. + +Using <silent> in a mapping with a shell command and the GUI caused redraw +to use wrong attributes. + +Win32: Using MSVC 4.1 for install.exe resulted in the start menu items to be +created in the administrator directory instead of "All Users". Define the +CSIDL_ items if they are missing. + +Motif: The GUI tabline did not use the space above the right scrollbar. Work +around a bug in the Motif library. (Yegappan Lakshmanan) + +The extra files for XML Omni completion are now also installed. +|xml-omni-datafile| + +GTK GUI: when 'm' is missing from 'guioptions' during startup and pressing +<F10> GTK produced error messages. Now do create the menu but disable it just +after the first gui_mch_update(). + +":mkspell" doesn't work well with the Hungarian dictionary from the Hunspell +project. Back to the Myspell dictionary. + +In help files hide the | used around tags. + +Renamed pycomplete to pythoncomplete. + +Added "tabpages" to 'sessionoptions'. + +When 'guitablabel' is set the effect wasn't visible right away. + +Fixed a few 'cindent' errors. + +When completing menu names, e.g., after ":emenu", don't sort the entries but +keep them in the original order. + +Fixed a crash when editing a directory in diff mode. Don't trigger +autocommands when executing the diff command. + +Getting a keystroke could get stuck if 'encoding' is a multibyte encoding and +typing a special key. + +When 'foldignore' is set the folds were not updated right away. + +When a list is indexed with [a : b] and b was greater than the length an error +message was given. Now silently truncate the result. + +When using BS during Insert mode completion go back to the original text, so +that CTRL-N selects the first matching entry. + +Added the 'M' flag to 'cinoptions'. + +Win32: Make the "gvim --help" window appear in the middle of the screen +instead of at an arbitrary position. (Randall W. Morris) + +Added gettabwinvar() and settabwinvar(). + +Command line completion: pressing <Tab> after ":e /usr/*" expands the whole +tree, because it becomes ":e /usr/**". Don't add a star if there already is +one. + +Added grey10 to grey90 to all GUIs, so that they can all be used for +initializing highlighting. Use grey40 for CursorColumn and CursorLine when +'background' is "dark". + +When reading a file and using iconv for conversion, an incomplete byte +sequence at the end caused problems. (Yukihiro Nakadaira) + + +--- fixes and changes since Vim 7.0e --- + +Default color for MatchParen when 'background' is "dark" is now DarkCyan. + +":syn off" had to be used twice in a file that sets 'syntax' in a modeline. +(Michael Geddes) + +When using ":vsp" or ":sp" the available space wasn't used equally between +windows. (Servatius Brandt) + +Expanding <cWORD> on a trailing blank resulted in the first word in the line +if 'encoding' is a multibyte encoding. + +Spell checking: spellbadword() didn't see a missing capital in the first word +of a line. Popup menu now only suggest the capitalized word when appropriate. + +When using whole line completion CTRL-L moves through the matches but it +didn't work when at the original text. + +When completion finds the longest match, don't go to the first match but stick +at the original text, so that CTRL-N selects the first one. + +Recognize "zsh-beta" like "zsh" for setting the 'shellpipe' default. (James +Vega) + +When using ":map <expr>" and the expression results in something with a +special byte (NUL or CSI) then it didn't work properly. Now escape special +bytes. + +The default Visual highlighting for a color xterm with 8 colors was a magenta +background, which made magenta text disappear. Now use reverse in this +specific situation. + +After completing the longest match "." didn't insert the same text. Repeating +also didn't work correctly for multibyte text. + +When using Insert mode completion and BS the whole word that was completed +would result in all possible matches. Now stop completion. Also fixes that +for spell completion the previous word was deleted. + +GTK: When 'encoding' is "latin1" and using non-ASCII characters in a file name +the tab page label was wrong and an error message would be given. + +The taglist() function could hang on a tags line with a non-ASCII character. + +Win32: When 'encoding' differs from the system encoding tab page labels with +non-ASCII characters looked wrong. (Yegappan Lakshmanan) + +Motif: building failed when Xm/Notebook.h doesn't exist. Added a configure +check, disable GUI tabline when it's missing. + +Mac: When compiled without multibyte feature the clipboard didn't work. + +It was possible to switch to another tab page when the cmdline window is open. + +Completion could hang when 'lines' is 6 and a preview window was opened. + +Added CTRL-W gF: open file under cursor in new tab page and jump to the line +number following the file name. +Added 'guitabtooltip'. Implemented for Win32 (Yegappan Lakshmanan). + +Added "throw" to 'debug' option: throw an exception for error messages even +when they would otherwise be ignored. + +When 'keymap' is set and a line contains an invalid entry could get a "No +mapping found" warning instead of a proper error message. + +Motif: default to using XpmAttributes instead of XpmAttributes_21. + +A few more changes for 64 bit MS-Windows. (George Reilly) + +Got ml_get errors when doing "o" and selecting in other window where there are +less lines shorter than the cursor position in the other window. ins_mouse() +was using position in wrong window. + +Win32 GUI: Crash when giving a lot of messages during startup. Allocate twice +as much memory for the dialog template. + +Fixed a few leaks and wrong pointer use reported by coverity. + +When showing menus the mode character was sometimes wrong. + +Added feedkeys(). (Yakov Lerner) + +Made matchlist() always return all submatches. + +Moved triggering QuickFixCmdPost to before jumping to the first location. + +Mac: Added the 'macatsui' option as a temporary work around for text drawing +problems. + +Line completion on "/**" gave error messages when scanning an unloaded buffer. + +--- fixes and changes since Vim 7.0f --- + +Win32: The height of the tab page labels is now adjusted to the font height. +(Yegappan Lakshmanan) + +Win32: selecting the tab label was off by one. (Yegappan Lakshmanan) + +Added tooltips for Motif and GTK tab page labels. (Yegappan Lakshmanan) + +When 'encoding' is "utf-8" then ":help spell" would report an illegal byte and +the file was not converted from latin1 to utf-8. Now retry with latin1 if +reading the file as utf-8 results in illegal bytes. + +Escape the argument of feedkeys() before putting it in the typeahead buffer. +(Yukihiro Nakadaira) + +Added the v:char variable for evaluating 'formatexpr'. (Yukihiro Nakadaira) + +With 8 colors Search highlighting combined with Statement highlighted text +made the text disappear. + +VMS: avoid warnings for redefining MAX and MIN. (Zoltan Arpadffy) + +When 'virtualedit' includes "onemore", stopping Visual selection would still +move the cursor left. + +Prevent that using CTRL-R = in Insert mode can start Visual mode. + +Fixed a crash that occurred when in Insert mode with completion active and a +mapping caused edit() to be called recursively. + +When using CTRL-O in Insert mode just after the last character while +'virtualedit' is "all", then typing CR moved the last character to the next +line. Call coladvance() before starting the new line. + +When using |:shell| ignore clicks on the tab page labels. Also when using the +command line window. + +When 'eventignore' is "all" then adding more to ignoring some events, e.g., +for ":vimgrep", would actually trigger more events. + +Win32: When a running Vim uses server name GVIM1 then "gvim --remote fname" +didn't find it. When looking for a server name that doesn't end in a digit +and it is not found then use another server with that name and a number (just +like on Unix). + +When using "double" in 'spellsuggest' when the language doesn't support sound +folding resulted in too many suggestions. + +Win32: Dropping a shortcut on the Vim icon didn't edit the referred file like +editing it in another way would. Use fname_expand() in buf_set_name() instead +of simply make the file name a full path. + +Using feedkeys() could cause Vim to hang. + +When closing another tab page from the tabline menu in Insert mode the tabline +was not updated right away. + +The syntax menu didn't work in compatible mode. + +After using ":tag id" twice with the same "id", ":ts" and then ":pop" a ":ts" +reported no matching tag. Clear the cached tag name. + +In Insert mode the matchparen plugin highlighted the wrong paren when there is +a string just next to a paren. + +GTK: After opening a new tab page the text was sometimes not drawn correctly. +Flush output and catch up with events when updating the tab page labels. + +In the GUI, using CTRL-W q to close the last window of a tab page could cause +a crash. + +GTK: The tab pages line menu was not converted from 'encoding' to utf-8. + +Typing a multibyte character or a special key at the hit-enter prompt did not +work. + +When 'virtualedit' contains "onemore" CTRL-O in Insert mode still moved the +cursor left when it was after the end of the line, even though it's allowed to +be there. + +Added test for using tab pages. + +towupper() and towlower() were not used, because of checking for +__STDC__ISO_10646__ instead of __STDC_ISO_10646__. (sertacyildiz) + +For ":map <expr>" forbid changing the text, jumping to another buffer and +using ":normal" to avoid nasty side effects. + +--- fixes and changes since Vim 7.0g --- + +Compilation error on HP-UX, use of "dlerr" must be inside a #ifdef. +(Gary Johnson) + +Report +reltime feature in ":version" output. + +The tar and zip plugins detect failure to get the contents of the archive and +edit the file as-is. + +When the result of 'guitablabel' is empty fall back to the default label. + +Fixed crash when using ":insert" in a while loop and missing "endwhile". + +"gt" and other commands could move to another window when |textlock| active +and when the command line window was open. + +Spell checking a file with syntax highlighting and a bad word at the end of +the line is ignored could make "]s" hang. + +Mac: inputdialog() didn't work when compiled with big features. + +Interrupting ":vimgrep" while it is busy loading a file left a modified and +hidden buffer behind. Use enter_cleanup() and leave_cleanup() around +wipe_buffer(). + +When making 'keymap' empty the b:keymap_name variable wasn't deleted. + +Using CTRL-N that searches a long time, pressing space to interrupt the +searching and accept the first match, the popup menu was still displayed +briefly. + +When setting the Vim window height with -geometry the 'window' option could be +at a value that makes CTRL-F behave differently. + +When opening a quickfix window in two tabs they used different buffers, +causing redrawing problems later. Now use the same buffer for all quickfix +windows. (Yegappan Lakshmanan) + +When 'mousefocus' is set moving the mouse to the text tab pages line would +move focus to the first window. Also, the mouse pointer would jump to the +active window. + +In a session file, when an empty buffer is wiped out, do this silently. + +When one window has the cursor on the last line and another window is resized +to make that window smaller, the cursor line could go below the displayed +lines. In win_new_height() subtract one from the available space. +Also avoid that using "~" lines makes the window scroll down. + +Mac: When sourcing the "macmap.vim" script and then finding a .vimrc file the +'cpo' option isn't set properly, because it was already set and restored. +Added the <special> argument to ":map", so that 'cpo' doesn't need to be +changed to be able to use <> notation. Also do this for ":menu" for +consistency. + +When using "/encoding=abc" in a spell word list, only "bc" was used. + +When 'encoding' and 'printencoding' were both "utf-8" then ":hardcopy" didn't +work. (Mike Williams) + +Mac: When building with "--disable-gui" the install directory would still be +"/Applications" and Vim.app would be installed. Now install in /usr/local as +usual for a console application. + +GUI: when doing completion and there is one match and still searching for +another, the cursor was displayed at the end of the line instead of after the +match. Now show the cursor after the match while still searching for matches. + +GUI: The mouse shape changed on the statusline even when 'mouse' was empty and +they can't be dragged. + +GTK2: Selecting a button in the confirm() dialog with Tab or cursor keys and +hitting Enter didn't select that button. Removed GTK 1 specific code. (Neil +Bird) + +When evaluating 'balloonexpr' takes a long time it could be called +recursively, which could cause a crash. + +exists() could not be used to detect whether ":2match" is supported. Added a +check for it specifically. + +GTK1: Tab page labels didn't work. (Yegappan Lakshmanan) + +Insert mode completion: When finding matches use 'ignorecase', but when adding +matches to the list don't use it, so that all words with different case are +added, "word", "Word" and "WORD". + +When 'cursorline' and 'hlsearch' are set and the search pattern is "x\n" +the rest of the line was highlighted as a match. + +Cursor moved while evaluating 'balloonexpr' that invokes ":isearch" and +redirects the output. Don't move the cursor to the command line if msg_silent +is set. + +exists() ignored text after a function name and option name, which could +result in false positives. + +exists() ignored characters after the recognized word, which can be wrong when +using a name with non-keyword characters. Specifically, these calls no longer +allow characters after the name: exists('*funcname') exists('*funcname(...') +exists('&option') exists(':cmd') exists('g:name') exists('g:name[n]') +exists('g:name.n') + +Trigger the TabEnter autocommand only after entering the current window of the +tab page, otherwise the commands are executed with an invalid current window. + +Win32: When using two monitors and Vim is on the second monitor, changing the +width of the Vim window could make it jump to the first monitor. + +When scrolling back at the more prompt and the quitting a line of text would +be left behind when 'cmdheight' is 2 or more. + +Fixed a few things for Insert mode completion, especially when typing BS, +CTRL-N or a printable character while still searching for matches. + + +============================================================================== +VERSION 7.1 *version-7.1* *version7.1* + +This section is about improvements made between version 7.0 and 7.1. + +This is a bug-fix release, there are no fancy new features. + + +Changed *changed-7.1* +------- + +Added setting 'mouse' in vimrc_example.vim. + +When building with MZscheme also look for include files in the "plt" +subdirectory. That's where they are for FreeBSD. + +The Ruby interface module is now called "Vim" instead of "VIM". But "VIM" is +an alias, so it's backwards compatible. (Tim Pope) + + +Added *added-7.1* +----- + +New syntax files: + /var/log/messages (Yakov Lerner) + Autohotkey (Nikolai Weibull) + AutoIt v3 (Jared Breland) + Bazaar commit file "bzr". (Dmitry Vasiliev) + Cdrdao TOC (Nikolai Weibull) + Cmusrc (Nikolai Weibull) + Conary recipe (rPath Inc) + Framescript (Nikolai Weibull) + FreeBasic (Mark Manning) + Hamster (David Fishburn) + IBasic (Mark Manning) + Initng (Elan Ruusamae) + Ldapconf (Nikolai Weibull) + Litestep (Nikolai Weibull) + Privoxy actions file (Doug Kearns) + Streaming Descriptors "sd" (Puria Nafisi Azizi) + +New tutor files: + Czech (Lubos Turek) + Hungarian (Arpad Horvath) + Turkish (Serkan kkk) + utf-8 version of Greek tutor. + utf-8 version of Russian tutor. + utf-8 version of Slowak tutor. + +New filetype plugins: + Bst (Tim Pope) + Cobol (Tim Pope) + Fvwm (Gautam Iyer) + Hamster (David Fishburn) + Django HTML template (Dave Hodder) + +New indent files: + Bst (Tim Pope) + Cobol (Tim Pope) + Hamster (David Fishburn) + Django HTML template (Dave Hodder) + Javascript + JSP (David Fishburn) + +New keymap files: + Bulgarian (Boyko Bantchev) + Mongolian (Natsagdorj Shagdar) + Thaana (Ibrahim Fayaz) + Vietnamese (Samuel Thibault) + +Other new runtime files: + Ada support files. (Neil Bird, Martin Krischik) + Slovenian menu translations (Mojca Miklavec) + Mono C# compiler plugin (Jarek Sobiecki) + + +Fixed *fixed-7.1* +----- + +Could not build the Win32s version. Added a few structure definitions in +src/gui_w32.c + + +Patch 7.0.001 +Problem: ":set spellsuggest+=10" does not work. (Suresh Govindachar) +Solution: Add P_COMMA to the 'spellsuggest' flags. +Files: src/option.c + +Patch 7.0.002 +Problem: C omni completion has a problem with tags files with a path + containing "#" or "%". +Solution: Escape these characters. (Sebastian Baberowski) +Files: runtime/autoload/ccomplete.vim + +Patch 7.0.003 +Problem: GUI: clicking in the lower part of a label in the tab pages line + while 'mousefocus' is set may warp the mouse pointer. (Robert + Webb) +Solution: Check for a negative mouse position. +Files: src/gui.c + +Patch 7.0.004 +Problem: Compiler warning for debug_saved used before set. (Todd Blumer) +Solution: Remove the "else" for calling save_dbg_stuff(). +Files: src/ex_docmd.c + +Patch 7.0.005 (extra) +Problem: Win32: The installer doesn't remove the "autoload" and "spell" + directories. (David Fishburn) +Solution: Add the directories to the list to be removed. +Files: nsis/gvim.nsi + +Patch 7.0.006 +Problem: Mac: "make shadow" doesn't make a link for infplist.xml. (Axel + Kielhorn) +Solution: Make the link. +Files: src/Makefile + +Patch 7.0.007 +Problem: AIX: compiling fails for message.c. (Ruediger Hornig) +Solution: Move the #if outside of memchr(). +Files: src/message.c + +Patch 7.0.008 +Problem: Can't call a function that uses both <SID> and {expr}. (Thomas) +Solution: Check both the expanded and unexpanded name for <SID>. +Files: src/eval.c + +Patch 7.0.009 +Problem: ml_get errors with both 'sidescroll' and 'spell' set. +Solution: Use ml_get_buf() instead of ml_get(), get the line from the right + buffer, not the current one. +Files: src/spell.c + +Patch 7.0.010 +Problem: The spellfile plugin required typing login name and password. +Solution: Use "anonymous" and "vim7user" by default. No need to setup a + .netrc file. +Files: runtime/autoload/spellfile.vim + +Patch 7.0.011 +Problem: Can't compile without the folding and with the eval feature. +Solution: Add an #ifdef. (Vallimar) +Files: src/option.c + +Patch 7.0.012 +Problem: Using the matchparen plugin, moving the cursor in Insert mode to a + shorter line that ends in a brace, changes the preferred column +Solution: Use winsaveview()/winrestview() instead of getpos()/setpos(). +Files: runtime/plugin/matchparen.vim + +Patch 7.0.013 +Problem: Insert mode completion: using CTRL-L to add an extra character + also deselects the current match, making it impossible to use + CTRL-L a second time. +Solution: Keep the current match. Also make CTRL-L work at the original + text, using the first displayed match. +Files: src/edit.c + +Patch 7.0.014 +Problem: Compiling gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) +Solution: Disable some code for Motif 1.2 and older. +Files: src/gui_xmebw.c + +Patch 7.0.015 +Problem: Athena: compilation problems with modern compiler. +Solution: Avoid type casts for lvalue. (Alexey Froloff) +Files: src/gui_at_fs.c + +Patch 7.0.016 +Problem: Printing doesn't work for "dec-mcs" encoding. +Solution: Add "dec-mcs", "mac-roman" and "hp-roman8" to the list of + recognized 8-bit encodings. (Mike Williams) +Files: src/mbyte.c + +Patch 7.0.017 (after 7.0.014) +Problem: Linking gui_xmebw.c fails on Dec Alpha Tru64. (Rolfe) +Solution: Adjust defines for Motif 1.2 and older. +Files: src/gui_xmebw.c + +Patch 7.0.018 +Problem: VMS: plugins are not loaded on startup. +Solution: Remove "**" from the path. (Zoltan Arpadffy) +Files: src/main.c + +Patch 7.0.019 +Problem: Repeating "VjA789" may cause a crash. (James Vega) +Solution: Check the cursor column after moving it to another line. +Files: src/ops.c + +Patch 7.0.020 +Problem: Crash when using 'mousefocus'. (William Fulton) +Solution: Make buffer for mouse coordinates 2 bytes longer. (Juergen Weigert) +Files: src/gui.c + +Patch 7.0.021 +Problem: Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber) +Solution: Check for valid submatches after matching the pattern. +Files: src/quickfix.c + +Patch 7.0.022 +Problem: Using buffer.append() in Ruby may append the line to the wrong + buffer. (Alex Norman) +Solution: Properly switch to the buffer to do the appending. Also for + buffer.delete() and setting a buffer line. +Files: src/if_ruby.c + +Patch 7.0.023 +Problem: Crash when doing spell completion in an empty line and pressing + CTRL-E. +Solution: Check for a zero pointer. (James Vega) + Also handle a situation without a matching pattern better, report + "No matches" instead of remaining in undefined CTRL-X mode. And + get out of CTRL-X mode when typing a letter. +Files: src/edit.c + +Patch 7.0.024 +Problem: It is possible to set arbitrary "v:" variables. +Solution: Disallow setting "v:" variables that are not predefined. +Files: src/eval.c + +Patch 7.0.025 +Problem: Crash when removing an element of a:000. (Nikolai Weibull) +Solution: Mark the a:000 list with VAR_FIXED. +Files: src/eval.c + +Patch 7.0.026 +Problem: Using libcall() may show an old error. +Solution: Invoke dlerror() to clear a previous error. (Yukihiro Nakadaira) +Files: src/os_unix.c + +Patch 7.0.027 (extra) +Problem: Win32: When compiled with SNIFF gvim may hang on exit. +Solution: Translate and dispatch the WM_USER message. (Mathias Michaelis) +Files: src/gui_w48.c + +Patch 7.0.028 (extra) +Problem: OS/2: Vim doesn't compile with gcc 3.2.1. +Solution: Add argument to after_pathsep(), don't define vim_handle_signal(), + define HAVE_STDARG_H. (David Sanders) +Files: src/os_unix.c, src/vim.h, src/os_os2_cfg.h + +Patch 7.0.029 +Problem: getchar() may not position the cursor after a space. +Solution: Position the cursor explicitly. +Files: src/eval.c + +Patch 7.0.030 +Problem: The ":compiler" command can't be used in a FileChangedRO event. + (Hari Krishna Dara) +Solution: Add the CMDWIN flag to the ":compiler" command. +Files: src/ex_cmds.h + +Patch 7.0.031 +Problem: When deleting a buffer the buffer-local mappings for Select mode + remain. +Solution: Add the Select mode bit to MAP_ALL_MODES. (Edwin Steiner) +Files: src/vim.h + +Patch 7.0.032 (extra, after 7.0.027) +Problem: Missing semicolon. +Solution: Add the semicolon. +Files: src/gui_w48.c + +Patch 7.0.033 +Problem: When pasting text, with the menu or CTRL-V, autoindent is removed. +Solution: Use "x<BS>" to avoid indent to be removed. (Benji Fisher) +Files: runtime/autoload/paste.vim + +Patch 7.0.034 +Problem: After doing completion and typing more characters or using BS + repeating with "." didn't work properly. (Martin Stubenschrott) +Solution: Don't put BS and other characters in the redo buffer right away, + do this when finishing completion. +Files: src/edit.c + +Patch 7.0.035 +Problem: Insert mode completion works when typed but not when replayed from + a register. (Hari Krishna Dara) + Also: Mappings for Insert mode completion don't always work. +Solution: When finding a non-completion key in the input don't interrupt + completion when it wasn't typed. + Do use mappings when checking for typeahead while still finding + completions. Avoids that completion is interrupted too soon. + Use "compl_pending" in a different way. +Files: src/edit.c + +Patch 7.0.036 +Problem: Can't compile with small features and syntax highlighting or the + diff feature. +Solution: Define LINE_ATTR whenever syntax highlighting or the diff feature + is enabled. +Files: src/screen.c + +Patch 7.0.037 +Problem: Crash when resizing the GUI window vertically when there is a line + that doesn't fit. +Solution: Don't redraw while the screen data is invalid. +Files: src/screen.c + +Patch 7.0.038 +Problem: When calling complete() from an Insert mode expression mapping + text could be inserted in an improper way. +Solution: Make undo_allowed() global and use it in complete(). +Files: src/undo.c, src/proto/undo.pro, src/eval.c + +Patch 7.0.039 +Problem: Calling inputdialog() with a third argument in the console doesn't + work. +Solution: Make a separate function for input() and inputdialog(). (Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 7.0.040 +Problem: When 'cmdheight' is larger than 1 using inputlist() or selecting + a spell suggestion with the mouse gets the wrong entry. +Solution: Start listing the first alternative on the last line of the screen. +Files: src/eval.c, src/spell.c + +Patch 7.0.041 +Problem: cursor([1, 1]) doesn't work. (Peter Hodge) +Solution: Allow leaving out the third item of the list and use zero for the + virtual column offset. +Files: src/eval.c + +Patch 7.0.042 +Problem: When pasting a block of text in Insert mode Vim hangs or crashes. + (Noam Halevy) +Solution: Avoid that the cursor is positioned past the NUL of a line. +Files: src/ops.c + +Patch 7.0.043 +Problem: Using "%!" at the start of 'statusline' doesn't work. +Solution: Recognize the special item when the option is being set. +Files: src/option.c + +Patch 7.0.044 +Problem: Perl: setting a buffer line in another buffer may result in + changing the current buffer. +Solution: Properly change to the buffer to be changed. +Files: src/if_perl.xs + +Patch 7.0.045 (extra) +Problem: Win32: Warnings when compiling OLE version with MSVC 2005. +Solution: Move including vim.h to before windows.h. (Ilya Bobir) +Files: src/if_ole.cpp + +Patch 7.0.046 +Problem: The matchparen plugin ignores parens in strings, but not in single + quotes, often marked with "character". +Solution: Also ignore parens in syntax items matching "character". +Files: runtime/plugin/matchparen.vim + +Patch 7.0.047 +Problem: When running configure the exit status is wrong. +Solution: Handle the exit status properly. (Matthew Woehlke) +Files: configure, src/configure + +Patch 7.0.048 +Problem: Writing a compressed file fails when there are parens in the name. + (Wang Jian) +Solution: Put quotes around the temp file name. +Files: runtime/autoload/gzip.vim + +Patch 7.0.049 +Problem: Some TCL scripts are not recognized. (Steven Atkinson) +Solution: Check for "exec wish" in the file. +Files: runtime/scripts.vim + +Patch 7.0.050 +Problem: After using the netbeans interface close command a stale pointer + may be used. +Solution: Clear the pointer to the closed buffer. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.0.051 (after 7.0.44) +Problem: The Perl interface doesn't compile or doesn't work properly. +Solution: Remove the spaces before #ifdef and avoid an empty line above it. +Files: src/if_perl.xs + +Patch 7.0.052 +Problem: The user may not be aware that the Vim server allows others more + functionality than desired. +Solution: When running Vim as root don't become a Vim server without an + explicit --servername argument. +Files: src/main.c + +Patch 7.0.053 +Problem: Shortening a directory name may fail when there are multibyte + characters. +Solution: Copy the correct bytes. (Titov Anatoly) +Files: src/misc1.c + +Patch 7.0.054 +Problem: Mac: Using a menu name that only has a mnemonic or accelerator + causes a crash. (Elliot Shank) +Solution: Check for an empty menu name. Also delete empty submenus that + were created before detecting the error. +Files: src/menu.c + +Patch 7.0.055 +Problem: ":startinsert" in a CmdwinEnter autocommand doesn't take immediate + effect. (Bradley White) +Solution: Put a NOP key in the typeahead buffer. Also avoid that using + CTRL-C to go back to the command line moves the cursor left. +Files: src/edit.c, src/ex_getln.c + +Patch 7.0.056 +Problem: "#!something" gives an error message. +Solution: Ignore this line, so that it can be used in an executable Vim + script. +Files: src/ex_docmd.c + +Patch 7.0.057 (extra, after 7.0.45) +Problem: Win32: Compilation problem with Borland C 5.5. +Solution: Include vim.h as before. (Mark S. Williams) +Files: src/if_ole.cpp + +Patch 7.0.058 +Problem: The gbk and gb18030 encodings are not recognized. +Solution: Add aliases to cp936. (Edward L. Fox) +Files: src/mbyte.c + +Patch 7.0.059 +Problem: The Perl interface doesn't compile with ActiveState Perl 5.8.8. +Solution: Remove the __attribute__() items. (Liu Yubao) +Files: src/if_perl.xs + +Patch 7.0.060 (after 7.0.51) +Problem: Code for temporarily switching to another buffer is duplicated in + quite a few places. +Solution: Use aucmd_prepbuf() and aucmd_restbuf() also when FEAT_AUTOCMD is + not defined. +Files: src/buffer.c, src/eval.c, src/fileio.c, src/if_ruby.c, + src/if_perl.xs, src/quickfix.c, src/structs.h + +Patch 7.0.061 +Problem: Insert mode completion for Vim commands may crash if there is + nothing to complete. +Solution: Instead of freeing the pattern make it empty, so that a "not + found" error is given. (Yukihiro Nakadaira) +Files: src/edit.c + +Patch 7.0.062 +Problem: Mac: Crash when using the popup menu for spell correction. The + popup menu appears twice when letting go of the right mouse button + early. +Solution: Don't show the popup menu on the release of the right mouse + button. Also check that a menu pointer is actually valid. +Files: src/proto/menu.pro, src/menu.c, src/normal.c, src/term.c + +Patch 7.0.063 +Problem: Tiny chance for a memory leak. (coverity) +Solution: Free pointer when next memory allocation fails. +Files: src/eval.c + +Patch 7.0.064 +Problem: Using uninitialized variable. (Tony Mechelynck) +Solution: When not used set "temp" to zero. Also avoid a warning for + "files" in ins_compl_dictionaries(). +Files: src/edit.c + +Patch 7.0.065 (extra) +Problem: Mac: left-right movement of the scrollwheel causes up-down + scrolling. +Solution: Ignore mouse wheel events that are not up-down. (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.066 +Problem: After the popup menu for Insert mode completion overlaps the tab + pages line it is not completely removed. +Solution: Redraw the tab pages line after removing the popup menu. (Ori + Avtalion) +Files: src/popupmnu.c + +Patch 7.0.067 +Problem: Undo doesn't always work properly when using "scim" input method. + Undo is split up when using preediting. +Solution: Reset xim_has_preediting also when preedit_start_col is not + MAXCOL. Don't split undo when <Left> is used while preediting. + (Yukihiro Nakadaira) +Files: src/edit.c, src/mbyte.c + +Patch 7.0.068 +Problem: When 'ignorecase' is set and using Insert mode completion, + typing characters to change the list of matches, case is not + ignored. (Hugo Ahlenius) +Solution: Store the 'ignorecase' flag with the matches where needed. +Files: src/edit.c, src/search.c, src/spell.c + +Patch 7.0.069 +Problem: Setting 'guitablabel' to %!expand(\%) causes Vim to free an + invalid pointer. (Kim Schulz) +Solution: Don't try freeing a constant string pointer. +Files: src/buffer.c + +Patch 7.0.070 +Problem: Compiler warnings for shadowed variables and uninitialized + variables. +Solution: Rename variables such as "index", "msg" and "dup". Initialize + variables. +Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c, + src/hardcopy.c, src/if_cscope.c, src/main.c, src/mbyte.c, + src/memline.c, src/netbeans.c, src/normal.c, src/option.c, + src/os_unix.c, src/quickfix.c, src/regexp.c, src/screen.c, + src/search.c, src/spell.c, src/ui.c, src/undo.c, src/window.c, + src/version.c + +Patch 7.0.071 +Problem: Using an empty search pattern may cause a crash. +Solution: Avoid using a NULL pointer. +Files: src/search.c + +Patch 7.0.072 +Problem: When starting the GUI fails there is no way to adjust settings or + do something else. +Solution: Add the GUIFailed autocommand event. +Files: src/fileio.c, src/gui.c, src/vim.h + +Patch 7.0.073 +Problem: Insert mode completion: Typing <CR> sometimes selects the original + text instead of keeping what was typed. (Justin Constantino) +Solution: Don't let <CR> select the original text if there is no popup menu. +Files: src/edit.c + +Patch 7.0.074 (extra) +Problem: Win32: tooltips were not converted from 'encoding' to Unicode. +Solution: Set the tooltip to use Unicode and do the conversion. Also + cleanup the code for the tab pages tooltips. (Yukihiro Nakadaira) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.0.075 +Problem: winsaveview() did not store the actual value of the desired cursor + column. This could move the cursor in the matchparen plugin. +Solution: Call update_curswant() before using the value w_curswant. +Files: src/eval.c + +Patch 7.0.076 (after 7.0.010) +Problem: Automatic downloading of spell files only works for ftp. +Solution: Don't add login and password for non-ftp URLs. (Alexander Patrakov) +Files: runtime/autoload/spellfile.vim + +Patch 7.0.077 +Problem: ":unlet v:this_session" causes a crash. (Marius Roets) +Solution: When trying to unlet a fixed variable give an error message. +Files: src/eval.c + +Patch 7.0.078 +Problem: There are two error messages E46. +Solution: Change the number for the sandbox message to E794. +Files: src/globals.h + +Patch 7.0.079 +Problem: Russian tutor doesn't work when 'encoding' is "utf-8". +Solution: Use tutor.ru.utf-8 as the master, and generate the other encodings + from it. Select the right tutor depending on 'encoding'. (Alexey + Froloff) +Files: runtime/tutor/Makefile, runtime/tutor/tutor.vim, + runtime/tutor/tutor.ru.utf-8 + +Patch 7.0.080 +Problem: Generating auto/pathdef.c fails for CFLAGS with a backslash. +Solution: Double backslashes in the string. (Alexey Froloff) +Files: src/Makefile + +Patch 7.0.081 +Problem: Command line completion doesn't work for a shell command with an + absolute path. +Solution: Don't use $PATH when there is an absolute path. +Files: src/ex_getln.c + +Patch 7.0.082 +Problem: Calling a function that waits for input may cause List and + Dictionary arguments to be freed by the garbage collector. +Solution: Keep a list of all arguments to internal functions. +Files: src/eval.c + +Patch 7.0.083 +Problem: Clicking with the mouse on an item for inputlist() doesn't work + when 'compatible' is set and/or when 'cmdheight' is more than one. + (Christian J. Robinson) +Solution: Also decrement "lines_left" when 'more' isn't set. Set + "cmdline_row" to zero to get all mouse events. +Files: src/message.c, src/misc1.c + +Patch 7.0.084 +Problem: The garbage collector may do its work while some Lists or + Dictionaries are used internally, e.g., by ":echo" that runs into + the more-prompt or ":echo [garbagecollect()]". +Solution: Only do garbage collection when waiting for a character at the + toplevel. Let garbagecollect() set a flag that is handled at the + toplevel before waiting for a character. +Files: src/eval.c, src/getchar.c, src/globals.h, src/main.c + +Patch 7.0.085 +Problem: When doing "make test" the viminfo file is modified. +Solution: Use another viminfo file after setting 'compatible'. +Files: src/testdir/test56.in + +Patch 7.0.086 +Problem: getqflist() returns entries for pattern and text with the number + zero. Passing these to setqflist() results in the string "0". +Solution: Use an empty string instead of the number zero. +Files: src/quickfix.c + +Patch 7.0.087 +Problem: After ":file fname" and ":saveas fname" the 'autochdir' option + does not take effect. (Yakov Lerner) + Commands for handling 'autochdir' are repeated many times. +Solution: Add the DO_AUTOCHDIR macro and do_autochdir(). Use it for + ":file fname" and ":saveas fname". +Files: src/proto/buffer.pro, src/buffer.c, src/ex_cmds.c, src/macros.h, + src/netbeans.c, src/option.c, src/window.c + +Patch 7.0.088 +Problem: When compiled with Perl the generated prototypes have "extern" + unnecessarily added. +Solution: Remove the "-pipe" argument from PERL_CFLAGS. +Files: src/auto/configure, src/configure.in + +Patch 7.0.089 +Problem: "ga" does not work properly for a non-Unicode multibyte encoding. +Solution: Only check for composing chars for utf-8. (Taro Muraoka) +Files: src/ex_cmds.c + +Patch 7.0.090 +Problem: Cancelling the conform() dialog on the console with Esc requires + typing it twice. (Benji Fisher) +Solution: When the start of an escape sequence is found use 'timeoutlen' or + 'ttimeoutlen'. +Files: src/misc1.c + +Patch 7.0.091 +Problem: Using winrestview() while 'showcmd' is set causes the cursor to be + displayed in the wrong position. (Yakov Lerner) +Solution: Set the window topline properly. +Files: src/eval.c + +Patch 7.0.092 (after 7.0.082 and 7.0.084) +Problem: The list of internal function arguments is obsolete now that + garbage collection is only done at the toplevel. +Solution: Remove the list of all arguments to internal functions. +Files: src/eval.c + +Patch 7.0.093 +Problem: The matchparen plugin can't handle a 'matchpairs' value where a + colon is matched. +Solution: Change the split() that is used to change 'matchpairs' into a + List. +Files: runtime/plugin/matchparen.vim + +Patch 7.0.094 +Problem: When a hidden buffer is made the current buffer and another file + edited later, the file message will still be given. Using + ":silent" also doesn't prevent the file message. (Marvin Renich) +Solution: Reset the need_fileinfo flag when reading a file. Don't set + need_fileinfo when msg_silent is set. +Files: src/buffer.c, src/fileio.c + +Patch 7.0.095 +Problem: The Greek tutor is not available in utf-8. "el" is used for the + language, only "gr" for the country is recognized. +Solution: Add the utf-8 Greek tutor. Use it for conversion to iso-8859-7 + and cp737. (Lefteris Dimitroulakis) +Files: runtime/tutor/Makefile, runtime/tutor/tutor.gr.utf-8, + runtime/tutor/tutor.vim + +Patch 7.0.096 +Problem: taglist() returns the filename relative to the tags file, while + the directory of the tags file is unknown. (Hari Krishna Dara) +Solution: Expand the file name. (Yegappan Lakshmanan) +Files: src/tag.c + +Patch 7.0.097 +Problem: ":tabclose N" that closes another tab page does not remove the tab + pages line. Same problem when using the mouse. +Solution: Adjust the tab pages line when needed in tabpage_close_other(). +Files: src/ex_docmd.c + +Patch 7.0.098 +Problem: Redirecting command output in a cmdline completion function + doesn't work. (Hari Krishna Dara) +Solution: Enable redirection when redirection is started. +Files: src/ex_docmd.c, src/ex_getln.c + +Patch 7.0.099 +Problem: GUI: When the popup menu is visible using the scrollbar messes up + the display. +Solution: Disallow scrolling the current window. Redraw the popup menu + after scrolling another window. +Files: src/gui.c + +Patch 7.0.100 +Problem: "zug" may report the wrong filename. (Lawrence Kesteloot) +Solution: Call home_replace() to fill NameBuff[]. +Files: src/spell.c + +Patch 7.0.101 +Problem: When the "~/.vim/spell" directory does not exist "zg" may create + a wrong directory. "zw" doesn't work. +Solution: Use the directory of the file name instead of NameBuff. For "zw" + not only remove a good word but also add the word with "!". +Files: src/spell.c + +Patch 7.0.102 +Problem: Redrawing cmdline is not correct when using SCIM. +Solution: Don't call im_get_status(). (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.0.103 (after 7.0.101) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable. +Files: src/spell.c + +Patch 7.0.104 +Problem: The CursorHoldI event only triggers once in Insert mode. It also + triggers after CTRL-V and other two-key commands. +Solution: Set "did_cursorhold" before getting a second key. Reset + "did_cursorhold" after handling a command. +Files: src/edit.c, src/fileio.c + +Patch 7.0.105 +Problem: When using incremental search the statusline ruler isn't updated. + (Christoph Koegl) +Solution: Update the statusline when it contains the ruler. +Files: src/ex_getln.c + +Patch 7.0.106 +Problem: The spell popup menu uses ":amenu", triggering mappings. Other + PopupMenu autocommands are removed. (John Little) +Solution: Use ":anoremenu" and use an autocmd group. +Files: runtime/menu.vim + +Patch 7.0.107 +Problem: Incremental search doesn't redraw the text tabline. (Ilya Bobir) + Also happens in other situations with one window in a tab page. +Solution: Redraw the tabline after clearing the screen. +Files: src/screen.c + +Patch 7.0.108 (extra) +Problem: Amiga: Compilation problem. +Solution: Have mch_mkdir() return a failure flag. (Willy Catteau) +Files: src/os_amiga.c, src/proto/os_amiga.pro + +Patch 7.0.109 +Problem: Lisp indenting is confused by escaped quotes in strings. (Dorai + Sitaram) +Solution: Check for backslash inside strings. (Sergey Khorev) +Files: src/misc1.c + +Patch 7.0.110 +Problem: Amiga: Compilation problems when not using libnix. +Solution: Change a few #ifdefs. (Willy Catteau) +Files: src/memfile.c + +Patch 7.0.111 +Problem: The gzip plugin can't handle filenames with single quotes. +Solution: Add and use the shellescape() function. (partly by Alexey Froloff) +Files: runtime/autoload/gzip.vim, runtime/doc/eval.txt, src/eval.c, + src/mbyte.c, src/misc2.c, src/proto/misc2.pro + +Patch 7.0.112 +Problem: Python interface does not work with Python 2.5. +Solution: Change PyMem_DEL() to Py_DECREF(). (Sumner Hayes) +Files: src/if_python.c + +Patch 7.0.113 +Problem: Using CTRL-L in Insert completion when there is no current match + may cause a crash. (Yukihiro Nakadaira) +Solution: Check for compl_leader to be NULL +Files: src/edit.c + +Patch 7.0.114 +Problem: When aborting an insert with CTRL-C an extra undo point is + created in the GUI. (Yukihiro Nakadaira) +Solution: Call gotchars() only when advancing. +Files: src/getchar.c + +Patch 7.0.115 +Problem: When 'ignorecase' is set, Insert mode completion only adds "foo" + and not "Foo" when both are found. + A found match isn't displayed right away when 'completeopt' does + not have "menu" or "menuone". +Solution: Do not ignore case when checking if a completion match already + exists. call ins_compl_check_keys() also when not using a popup + menu. (Yukihiro Nakadaira) +Files: src/edit.c + +Patch 7.0.116 +Problem: 64 bit Windows version reports "32 bit" in the ":version" output. + (M. Veerman) +Solution: Change the text for Win64. +Files: src/version.c + +Patch 7.0.117 +Problem: Using "extend" on a syntax item inside a region with "keepend", an + intermediate item may be truncated. + When applying the "keepend" and there is an offset to the end + pattern the highlighting of a contained item isn't adjusted. +Solution: Use the seen_keepend flag to remember when to apply the "keepend" + flag. Adjust the keepend highlighting properly. (Ilya Bobir) +Files: src/syntax.c + +Patch 7.0.118 +Problem: printf() does not do zero padding for strings. +Solution: Do allow zero padding for strings. +Files: src/message.c + +Patch 7.0.119 +Problem: When going back from Insert to Normal mode the CursorHold event + doesn't trigger. (Yakov Lerner) +Solution: Reset "did_cursorhold" when leaving Insert mode. +Files: src/edit.c + +Patch 7.0.120 +Problem: Crash when using CTRL-R = at the command line and entering + "getreg('=')". (James Vega) +Solution: Avoid recursiveness of evaluating the = register. +Files: src/ops.c + +Patch 7.0.121 +Problem: GUI: Dragging the last status line doesn't work when there is a + text tabline. (Markus Wolf) +Solution: Take the text tabline into account when deciding to start modeless + selection. +Files: src/gui.c + +Patch 7.0.122 +Problem: GUI: When clearing after a bold, double-wide character half a + character may be drawn. +Solution: Check for double-wide character and redraw it. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.0.123 +Problem: On SCO Openserver configure selects the wrong terminal library. +Solution: Put terminfo before the other libraries. (Roger Cornelius) + Also fix a small problem compiling on Mac without Darwin. +Files: src/configure.in, src/auto/configure + +Patch 7.0.124 +Problem: getwinvar() obtains a dictionary with window-local variables, but + it's always for the current window. +Solution: Get the variables of the specified window. (Geoff Reedy) +Files: src/eval.c + +Patch 7.0.125 +Problem: When "autoselect" is in the 'clipboard' option then the '< and '> + marks are set while Visual mode is still active. +Solution: Don't set the '< and '> marks when yanking the selected area for + the clipboard. +Files: src/normal.c + +Patch 7.0.126 +Problem: When 'formatexpr' uses setline() and later internal formatting is + used undo information is not correct. (Jiri Cerny, Benji Fisher) +Solution: Set ins_need_undo after using 'formatexpr'. +Files: src/edit.c + +Patch 7.0.127 +Problem: Crash when swap file has invalid timestamp. +Solution: Check return value of ctime() for being NULL. +Files: src/memline.c + +Patch 7.0.128 +Problem: GUI: when closing gvim is cancelled because there is a changed + buffer the screen isn't updated to show the changed buffer in the + current window. (Krzysztof Kacprzak) +Solution: Redraw when closing gvim is cancelled. +Files: src/gui.c + +Patch 7.0.129 +Problem: GTK GUI: the GTK file dialog can't handle a relative path. +Solution: Make the initial directory a full path before passing it to GTK. + (James Vega) Also postpone adding the default file name until + after setting the directory. +Files: src/gui_gtk.c + +Patch 7.0.130 (extra) +Problem: Win32: Trying to edit or write devices may cause Vim to get stuck. +Solution: Add the 'opendevice' option, default off. Disallow + reading/writing from/to devices when it's off. + Also detect more devices by the full name starting with "\\.\". +Files: runtime/doc/options.txt, src/fileio.c, src/option.c, src/option.h, + src/os_win32.c + +Patch 7.0.131 +Problem: Win32: "vim -r" does not list all the swap files. +Solution: Also check for swap files starting with a dot. +Files: src/memline.c + +Patch 7.0.132 (after 7.0.130) +Problem: Win32: Crash when Vim reads from stdin. +Solution: Only use mch_nodetype() when there is a file name. +Files: src/fileio.c + +Patch 7.0.133 +Problem: When searching included files messages are added to the history. +Solution: Set msg_hist_off for messages about scanning included files. + Set msg_silent to avoid message about wrapping around. +Files: src/edit.c, src/globals.h, src/message.c, src/search.c + +Patch 7.0.134 +Problem: Crash when comparing a recursively looped List or Dictionary. +Solution: Limit recursiveness for comparing to 1000. +Files: src/eval.c + +Patch 7.0.135 +Problem: Crash when garbage collecting list or dict with loop. +Solution: Don't use DEL_REFCOUNT but don't recurse into Lists and + Dictionaries when freeing them in the garbage collector. + Also add allocated Dictionaries to the list of Dictionaries to + avoid leaking memory. +Files: src/eval.c, src/proto/eval.pro, src/tag.c + +Patch 7.0.136 +Problem: Using "O" while matching parens are highlighted may not remove the + highlighting. (Ilya Bobir) +Solution: Also trigger CursorMoved when a line is inserted under the cursor. +Files: src/misc1.c + +Patch 7.0.137 +Problem: Configure check for big features is wrong. +Solution: Change "==" to "=". (Martti Kuparinen) +Files: src/auto/configure, src/configure.in + +Patch 7.0.138 (extra) +Problem: Mac: modifiers don't work with function keys. +Solution: Use GetEventParameter() to obtain modifiers. (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.139 +Problem: Using CTRL-PageUp or CTRL-PageDown in Insert mode to go to another + tab page does not prepare for undo properly. (Stefano Zacchiroli) +Solution: Call start_arrow() before switching tab page. +Files: src/edit.c + +Patch 7.0.140 (after 7.0.134) +Problem: Comparing recursively looped List or Dictionary doesn't work well. +Solution: Detect comparing a List or Dictionary with itself. +Files: src/eval.c + +Patch 7.0.141 +Problem: When pasting a while line on the command line an extra CR is added + literally. +Solution: Don't add the trailing CR when pasting with the mouse. +Files: src/ex_getln.c, src/proto/ops.pro, src/ops.c + +Patch 7.0.142 +Problem: Using the middle mouse button in Select mode to paste text results + in an extra "y". (Kriton Kyrimis) +Solution: Let the middle mouse button replace the selected text with the + contents of the clipboard. +Files: src/normal.c + +Patch 7.0.143 +Problem: Setting 'scroll' to its default value was not handled correctly. +Solution: Compare the right field to PV_SCROLL. +Files: src/option.c + +Patch 7.0.144 +Problem: May compare two unrelated pointers when matching a pattern against + a string. (Dominique Pelle) +Solution: Avoid calling reg_getline() when REG_MULTI is false. +Files: src/regexp.c + +Patch 7.0.145 (after 7.0.142) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/normal.c + +Patch 7.0.146 +Problem: When 'switchbuf' is set to "usetab" and the current tab has only a + quickfix window, jumping to an error always opens a new window. + Also, when the buffer is open in another tab page it's not found. +Solution: Check for the "split" value of 'switchbuf' properly. Search in + other tab pages for the desired buffer. (Yegappan Lakshmanan) +Files: src/buffer.c, src/quickfix.c + +Patch 7.0.147 +Problem: When creating a session file and there are several tab pages and + some windows have a local directory a short file name may be used + when it's not valid. (Marius Roets) + A session with multiple tab pages may result in "No Name" buffers. + (Bill McCarthy) +Solution: Don't enter tab pages when going through the list, only use a + pointer to the first window in each tab page. + Use "tabedit" instead of "tabnew | edit" when possible. +Files: src/ex_docmd.c + +Patch 7.0.148 +Problem: When doing "call a.xyz()" and "xyz" does not exist in dictionary + "a" there is no error message. (Yegappan Lakshmanan) +Solution: Add the error message. +Files: src/eval.c + +Patch 7.0.149 +Problem: When resizing a window that shows "~" lines the text sometimes + jumps down. +Solution: Remove code that uses "~" lines in some situations. Fix the + computation of the screen line of the cursor. Also set w_skipcol + to handle very long lines. +Files: src/misc1.c, src/window.c + +Patch 7.0.150 +Problem: When resizing the Vim window scrollbinding doesn't work. (Yakov + Lerner) +Solution: Do scrollbinding in set_shellsize(). +Files: src/term.c + +Patch 7.0.151 +Problem: Buttons in file dialog are not according to Gnome guidelines. +Solution: Swap Cancel and Open buttons. (Stefano Zacchiroli) +Files: src/gui_gtk.c + +Patch 7.0.152 +Problem: Crash when using lesstif 2. +Solution: Fill in the extension field. (Ben Hutchings) +Files: src/gui_xmebw.c + +Patch 7.0.153 +Problem: When using cscope and opening the temp file fails Vim crashes. + (Kaya Bekiroglu) +Solution: Check for NULL pointer returned from mch_open(). +Files: src/if_cscope.c + +Patch 7.0.154 +Problem: When 'foldnestmax' is negative Vim can hang. (James Vega) +Solution: Avoid the fold level becoming negative. +Files: src/fold.c, src/syntax.c + +Patch 7.0.155 +Problem: When getchar() returns a mouse button click there is no way to get + the mouse coordinates. +Solution: Add v:mouse_win, v:mouse_lnum and v:mouse_col. +Files: runtime/doc/eval.txt, src/eval.c, src/vim.h + +Patch 7.0.156 (extra) +Problem: Vim doesn't compile for Amiga OS 4. +Solution: Various changes for Amiga OS4. (Peter Bengtsson) +Files: src/feature.h, src/mbyte.c, src/memfile.c, src/memline.c, + src/os_amiga.c, src/os_amiga.h, src/pty.c + +Patch 7.0.157 +Problem: When a function is used recursively the profiling information is + invalid. (Mikolaj Machowski) +Solution: Put the start time on the stack instead of in the function. +Files: src/eval.c + +Patch 7.0.158 +Problem: In a C file with ":set foldmethod=syntax", typing {<CR> on the + last line results in the cursor being in a closed fold. (Gautam + Iyer) +Solution: Open fold after inserting a new line. +Files: src/edit.c + +Patch 7.0.159 +Problem: When there is an I/O error in the swap file the cause of the error + cannot be seen. +Solution: Use PERROR() instead of EMSG() where possible. +Files: src/memfile.c + +Patch 7.0.160 +Problem: ":@a" echoes the command, Vi doesn't do that. +Solution: Set the silent flag in the typeahead buffer to avoid echoing the + command. +Files: src/ex_docmd.c, src/normal.c, src/ops.c, src/proto/ops.pro + +Patch 7.0.161 +Problem: Win32: Tab pages line popup menu isn't using the right encoding. + (Yongwei Wu) +Solution: Convert the text when necessary. Also fixes the Find/Replace + dialog title. (Yegappan Lakshmanan) +Files: src/gui_w48.c + +Patch 7.0.162 +Problem: "vim -o a b" when file "a" triggers the ATTENTION dialog, + selecting "Quit" exits Vim instead of editing "b" only. + When file "b" triggers the ATTENTION dialog selecting "Quit" or + "Abort" results in editing file "a" in that window. +Solution: When selecting "Abort" exit Vim. When selecting "Quit" close the + window. Also avoid hit-enter prompt when selecting Abort. +Files: src/buffer.c, src/main.c + +Patch 7.0.163 +Problem: Can't retrieve the position of a sign after it was set. +Solution: Add the netbeans interface getAnno command. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/netbeans.c + +Patch 7.0.164 +Problem: ":redir @+" doesn't work. +Solution: Accept "@+" just like "@*". (Yegappan Lakshmanan) +Files: src/ex_docmd.c + +Patch 7.0.165 +Problem: Using CTRL-L at the search prompt adds a "/" and other characters + without escaping, causing the pattern not to match. +Solution: Escape special characters with a backslash. +Files: src/ex_getln.c + +Patch 7.0.166 +Problem: Crash in cscope code when connection could not be opened. + (Kaya Bekiroglu) +Solution: Check for the file descriptor to be NULL. +Files: src/if_cscope.c + +Patch 7.0.167 +Problem: ":function" redefining a dict function doesn't work properly. + (Richard Emberson) +Solution: Allow a function name to be a number when it's a function + reference. +Files: src/eval.c + +Patch 7.0.168 +Problem: Using uninitialized memory and memory leak. (Dominique Pelle) +Solution: Use alloc_clear() instead of alloc() for w_lines. Free + b_ml.ml_stack after recovery. +Files: src/memline.c, src/window.c + +Patch 7.0.169 +Problem: With a Visual block selection, with the cursor in the left upper + corner, pressing "I" doesn't remove the highlighting. (Guopeng + Wen) +Solution: When checking if redrawing is needed also check if Visual + selection is still active. +Files: src/screen.c + +Patch 7.0.170 (extra) +Problem: Win32: Using "gvim --remote-tab foo" when gvim is minimized while + it previously was maximized, un-maximizing doesn't work properly. + And the labels are not displayed properly when 'encoding' is + utf-8. +Solution: When minimized check for SW_SHOWMINIMIZED. When updating the tab + pages line use TCM_SETITEMW instead of TCM_INSERTITEMW. (Liu + Yubao) +Files: src/gui_w48.c + +Patch 7.0.171 (extra) +Problem: VMS: A file name with multiple paths is written in the wrong file. +Solution: Get the actually used file name. (Zoltan Arpadffy) + Also add info to the :version command about compilation. +Files: src/Make_vms.mms, src/buffer.c, src/os_unix.c, src/version.c + +Patch 7.0.172 +Problem: Crash when recovering and quitting at the "press-enter" prompt. +Solution: Check for "msg_list" to be NULL. (Liu Yubao) +Files: src/ex_eval.c + +Patch 7.0.173 +Problem: ":call f().TT()" doesn't work. (Richard Emberson) +Solution: When a function returns a Dictionary or another composite continue + evaluating what follows. +Files: src/eval.c + +Patch 7.0.174 +Problem: ":mksession" doesn't restore window layout correctly in tab pages + other than the current one. (Zhibin He) +Solution: Use the correct topframe for producing the window layout commands. +Files: src/ex_docmd.c + +Patch 7.0.175 +Problem: The result of tr() is missing the terminating NUL. (Ingo Karkat) +Solution: Add the NUL. +Files: src/eval.c + +Patch 7.0.176 +Problem: ":emenu" isn't executed directly, causing the encryption key + prompt to fail. (Life Jazzer) +Solution: Fix wrong #ifdef. +Files: src/menu.c + +Patch 7.0.177 +Problem: When the press-enter prompt gets a character from a non-remappable + mapping, it's put back in the typeahead buffer as remappable, + which may cause an endless loop. +Solution: Restore the non-remappable flag and the silent flag when putting a + char back in the typeahead buffer. +Files: src/getchar.c, src/message.c, src/normal.c + +Patch 7.0.178 +Problem: When 'enc' is "utf-8" and 'ignorecase' is set the result of ":echo + ("\xe4" == "\xe4")" varies. +Solution: In mb_strnicmp() avoid looking past NUL bytes. +Files: src/mbyte.c + +Patch 7.0.179 +Problem: Using ":recover" or "vim -r" without a swapfile crashes Vim. +Solution: Check for "buf" to be unequal NULL. (Yukihiro Nakadaira) +Files: src/memline.c + +Patch 7.0.180 (extra, after 7.0.171) +Problem: VMS: build failed. Problem with swapfiles. +Solution: Add "compiled_arch". Always expand path and pass it to + buf_modname(). (Zoltan Arpadffy) +Files: src/globals.h, src/memline.c, src/os_unix.c, runtime/menu.vim + +Patch 7.0.181 +Problem: When reloading a file that starts with an empty line, the reloaded + buffer has an extra empty line at the end. (Motty Lentzitzky) +Solution: Delete all lines, don't use bufempty(). +Files: src/fileio.c + +Patch 7.0.182 +Problem: When using a mix of undo and "g-" it may no longer be possible to + go to every point in the undo tree. (Andy Wokula) +Solution: Correctly update pointers in the undo tree. +Files: src/undo.c + +Patch 7.0.183 +Problem: Crash in ":let" when redirecting to a variable that's being + displayed. (Thomas Link) +Solution: When redirecting to a variable only do the assignment when + stopping redirection to avoid that setting the variable causes a + freed string to be accessed. +Files: src/eval.c + +Patch 7.0.184 +Problem: When the cscope program is called "mlcscope" the Cscope interface + doesn't work. +Solution: Accept "\S*cscope:" instead of "cscope:". (Frodak D. Baksik) +Files: src/if_cscope.c + +Patch 7.0.185 +Problem: Multi-byte characters in a message are displayed with attributes + from what comes before it. +Solution: Don't use the attributes for a multibyte character. Do use + attributes for special characters. (Yukihiro Nakadaira) +Files: src/message.c + +Patch 7.0.186 +Problem: Get an ml_get error when 'encoding' is "utf-8" and searching for + "/\_s*/e" in an empty buffer. (Andrew Maykov) +Solution: Don't try getting the line just below the last line. +Files: src/search.c + +Patch 7.0.187 +Problem: Can't source a remote script properly. +Solution: Add the SourceCmd event. (Charles Campbell) +Files: runtime/doc/autocmd.txt, src/ex_cmds2.c, src/fileio.c, src/vim.h + +Patch 7.0.188 (after 7.0.186) +Problem: Warning for wrong pointer type. +Solution: Add a type cast. +Files: src/search.c + +Patch 7.0.189 +Problem: Translated message about finding matches is truncated. (Yukihiro + Nakadaira) +Solution: Enlarge the buffer. Also use vim_snprintf(). +Files: src/edit.c + +Patch 7.0.190 +Problem: "syntax spell default" results in an error message. +Solution: Change 4 to 7 for STRNICMP(). (Raul Nunez de Arenas Coronado) +Files: src/syntax.c + +Patch 7.0.191 +Problem: The items used by getqflist() and setqflist() don't match. +Solution: Support the "bufnum" item for setqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c + +Patch 7.0.192 +Problem: When 'swapfile' is switched off in an empty file it is possible + that not all blocks are loaded into memory, causing ml_get errors + later. +Solution: Rename "dont_release" to "mf_dont_release" and also use it to + avoid using the cached line and locked block. +Files: src/globals.h, src/memfile.c, src/memline.c + +Patch 7.0.193 +Problem: Using --remote or --remote-tab with an argument that matches + 'wildignore' causes a crash. +Solution: Check the argument count before using ARGLIST[0]. +Files: src/ex_cmds.c + +Patch 7.0.194 +Problem: Once an ml_get error is given redrawing part of the screen may + cause it again, resulting in an endless loop. +Solution: Don't give the error message for a recursive call. +Files: src/memline.c + +Patch 7.0.195 +Problem: When a buffer is modified and 'autowriteall' is set, ":quit" + results in an endless loop when there is a conversion error while + writing. (Nikolai Weibull) +Solution: Make autowrite() return FAIL if the buffer is still changed after + writing it. + /* put the cursor on the last char, for 'tw' formatting */ +Files: src/ex_cmds2.c + +Patch 7.0.196 +Problem: When using ":vert ball" the computation of the mouse pointer + position may be off by one column. (Stefan Karlsson) +Solution: Recompute the frame width when moving the vertical separator from + one window to another. +Files: src/window.c + +Patch 7.0.197 (extra) +Problem: Win32: Compiling with EXITFREE doesn't work. +Solution: Adjust a few #ifdefs. (Alexei Alexandrof) +Files: src/misc2.c, src/os_mswin.c + +Patch 7.0.198 (extra) +Problem: Win32: Compiler warnings. No need to generate gvim.exe.mnf. +Solution: Add type casts. Use "*" for processorArchitecture. (George Reilly) +Files: src/Make_mvc.mak, src/eval.c, src/gvim.exe.mnf, src/misc2.c + +Patch 7.0.199 +Problem: When using multibyte characters the combination of completion and + formatting may result in a wrong cursor position. +Solution: Don't decrement the cursor column, use dec_cursor(). (Yukihiro + Nakadaira) Also check for the column to be zero. +Files: src/edit.c + +Patch 7.0.200 +Problem: Memory leaks when out of memory. +Solution: Free the memory. +Files: src/edit.c, src/diff.c + +Patch 7.0.201 +Problem: Message for ":diffput" about buffer not being in diff mode may be + wrong. +Solution: Check for buffer in diff mode but not modifiable. +Files: src/diff.c + +Patch 7.0.202 +Problem: Problems on Tandem systems while compiling and at runtime. +Solution: Recognize root uid is 65535. Check select() return value for it + not being supported. Avoid wrong function prototypes. Mention + use of -lfloss. (Matthew Woehlke) +Files: src/Makefile, src/ex_cmds.c, src/fileio.c, src/main.c, + src/osdef1.h.in, src/osdef2.h.in, src/os_unix.c, src/pty.c, + src/vim.h + +Patch 7.0.203 +Problem: 0x80 characters in a register are not handled correctly for the + "@" command. +Solution: Escape CSI and 0x80 characters. (Yukihiro Nakadaira) +Files: src/ops.c + +Patch 7.0.204 +Problem: Cscope: Parsing matches for listing isn't done properly. +Solution: Check for line number being found. (Yu Zhao) +Files: src/if_cscope.c + +Patch 7.0.205 (after 7.0.203) +Problem: Can't compile. +Solution: Always include the vim_strsave_escape_csi function. +Files: src/getchar.c + +Patch 7.0.206 (after 7.0.058) +Problem: Some characters of the "gb18030" encoding are not handled + properly. +Solution: Do not use "cp936" as an alias for "gb18030" encoding. Instead + initialize 'encoding' to "cp936". +Files: src/mbyte.c, src/option.c + +Patch 7.0.207 +Problem: After patch 2.0.203 CSI and K_SPECIAL characters are escaped when + recorded and then again when the register is executed. +Solution: Remove escaping before putting the recorded characters in a + register. (Yukihiro Nakadaira) +Files: src/getchar.c, src/ops.c, src/proto/getchar.pro + +Patch 7.0.208 (after 7.0.171 and 7.0.180) +Problem: VMS: changes to path handling cause more trouble than they solve. +Solution: Revert changes. +Files: src/buffer.c, src/memline.c, src/os_unix.c + +Patch 7.0.209 +Problem: When replacing a line through Python the cursor may end up beyond + the end of the line. +Solution: Check the cursor column after replacing the line. +Files: src/if_python.c + +Patch 7.0.210 +Problem: ":cbuffer" and ":lbuffer" always fail when the buffer is modified. + (Gary Johnson) +Solution: Support adding a !. (Yegappan Lakshmanan) +Files: runtime/doc/quickfix.txt, src/ex_cmds.h + +Patch 7.0.211 +Problem: With ":set cindent noai bs=0" using CTRL-U in Insert mode will + delete auto-indent. After ":set ai" it doesn't. +Solution: Also check 'cindent' being set. (Ryan Lortie) +Files: src/edit.c + +Patch 7.0.212 +Problem: The GUI can't be terminated with SIGTERM. (Mark Logan) +Solution: Use the signal protection in the GUI as in the console, allow + signals when waiting for 100 msec or longer. +Files: src/ui.c + +Patch 7.0.213 +Problem: When 'spellfile' has two regions that use the same sound folding + using "z=" will cause memory to be freed twice. (Mark Woodward) +Solution: Clear the hashtable properly so that the items are only freed once. +Files: src/spell.c + +Patch 7.0.214 +Problem: When using <f-args> in a user command it's not possible to have an + argument end in '\ '. +Solution: Change the handling of backslashes. (Yakov Lerner) +Files: runtime/doc/map.txt, src/ex_docmd.c + +Patch 7.0.215 (extra) +Problem: Mac: Scrollbar size isn't set. Context menu has disabled useless + Help entry. Call to MoreMasterPointers() is ignored. +Solution: Call SetControlViewSize() in gui_mch_set_scrollbar_thumb(). Use + kCMHelpItemRemoveHelp for ContextualMenuSelect(). Remove call to + MoreMasterPointers(). (Nicolas Weber) +Files: src/gui_mac.c + +Patch 7.0.216 +Problem: ":tab wincmd ]" does not open a tab page. (Tony Mechelynck) +Solution: Copy the cmdmod.tab value to postponed_split_tab and use it. +Files: src/globals.h, src/ex_docmd.c, src/if_cscope.c, src/window.c + +Patch 7.0.217 +Problem: This hangs when pressing "n": ":%s/\n/,\r/gc". (Ori Avtalion) +Solution: Set "skip_match" to advance to the next line. +Files: src/ex_cmds.c + +Patch 7.0.218 +Problem: "%B" in 'statusline' always shows zero in Insert mode. (DervishD) +Solution: Remove the exception for Insert mode, check the column for being + valid instead. +Files: src/buffer.c + +Patch 7.0.219 +Problem: When using the 'editexisting.vim' script and a file is being + edited in another tab page the window is split. The "+123" + argument is not used. +Solution: Make the tab page with the file the current tab page. Set + v:swapcommand when starting up to the first "+123" or "-c" command + line argument. +Files: runtime/macros/editexisting.vim, src/main.c + +Patch 7.0.220 +Problem: Crash when using winnr('#') in a new tab page. (Andy Wokula) +Solution: Check for not finding the window. +Files: src/eval.c + +Patch 7.0.221 +Problem: finddir() uses 'path' by default, where "." means relative to the + current file. But it works relative to the current directory. + (Tye Zdrojewski) +Solution: Add the current buffer name to find_file_in_path_option() for the + relative file name. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.0.222 +Problem: Perl indenting using 'cindent' works almost right. +Solution: Recognize '#' to start a comment. (Alex Manoussakis) Added '#' + flag in 'cinoptions'. +Files: runtime/doc/indent.txt, src/misc1.c + +Patch 7.0.223 +Problem: Unprintable characters in completion text mess up the popup menu. + (Gombault Damien) +Solution: Use strtrans() to make the text printable. +Files: src/charset.c, src/popupmnu.c + +Patch 7.0.224 +Problem: When expanding "##" spaces are escaped twice. (Pavol Juhas) +Solution: Don't escape the spaces that separate arguments. +Files: src/eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 7.0.225 +Problem: When using setline() in an InsertEnter autocommand and doing "A" + the cursor ends up on the last byte in the line. (Yukihiro + Nakadaira) +Solution: Only adjust the column when using setline() for the cursor line. + Move it back to the head byte if necessary. +Files: src/eval.c, src/misc2.c + +Patch 7.0.226 +Problem: Display flickering when updating signs through the netbeans + interface. (Xavier de Gaye) +Solution: Remove the redraw_later(CLEAR) call. +Files: src/netbeans.c + +Patch 7.0.227 +Problem: Crash when closing a window in the GUI. (Charles Campbell) +Solution: Don't call out_flush() from win_free(). +Files: src/window.c + +Patch 7.0.228 +Problem: Cygwin: problem with symlink to DOS style path. +Solution: Invoke cygwin_conv_to_posix_path(). (Luca Masini) +Files: src/os_unix.c + +Patch 7.0.229 +Problem: When 'pastetoggle' starts with Esc then pressing Esc in Insert + mode will not time out. (Jeffery Small) +Solution: Use KL_PART_KEY instead of KL_PART_MAP, so that 'ttimeout' applies + to the 'pastetoggle' key. +Files: src/getchar.c + +Patch 7.0.230 +Problem: After using ":lcd" a script doesn't know how to restore the + current directory. +Solution: Add the haslocaldir() function. (Bob Hiestand) +Files: runtime/doc/usr_41.txt, runtime/doc/eval.txt, src/eval.c + +Patch 7.0.231 +Problem: When recovering from a swap file the page size is likely to be + different from the minimum. The block used for the first page + then has a buffer of the wrong size, causing a crash when it's + reused later. (Zephaniah Hull) +Solution: Reallocate the buffer when the page size changes. Also check that + the page size is at least the minimum value. +Files: src/memline.c + +Patch 7.0.232 (extra) +Problem: Mac: doesn't support GUI tab page labels. +Solution: Add GUI tab page labels. (Nicolas Weber) +Files: src/feature.h, src/gui.c, src/gui.h, src/gui_mac.c, + src/proto/gui_mac.pro + +Patch 7.0.233 (extra) +Problem: Mac: code formatted badly. +Solution: Fix code formatting +Files: src/gui_mac.c + +Patch 7.0.234 +Problem: It's possible to use feedkeys() from a modeline. That is a + security issue, can be used for a trojan horse. +Solution: Disallow using feedkeys() in the sandbox. +Files: src/eval.c + +Patch 7.0.235 +Problem: It is possible to use writefile() in the sandbox. +Solution: Add a few more checks for the sandbox. +Files: src/eval.c + +Patch 7.0.236 +Problem: Linux 2.4 uses sysinfo() with a mem_unit field, which is not + backwards compatible. +Solution: Add an autoconf check for sysinfo.mem_unit. Let mch_total_mem() + return Kbyte to avoid overflow. +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/option.c, src/os_unix.c + +Patch 7.0.237 +Problem: For root it is recommended to not use 'modeline', but in + not-compatible mode the default is on. +Solution: Let 'modeline' default to off for root. +Files: runtime/doc/options.txt, src/option.c + +Patch 7.0.238 +Problem: Crash when ":match" pattern runs into 'maxmempattern'. (Yakov + Lerner) +Solution: Don't free the regexp program of match_hl. +Files: src/screen.c + +Patch 7.0.239 +Problem: When using local directories and tab pages ":mksession" uses a + short file name when it shouldn't. Window-local options from a + modeline may be applied to the wrong window. (Teemu Likonen) +Solution: Add the did_lcd flag, use the full path when it's set. Don't use + window-local options from the modeline when using the current + window for another buffer in ":doautoall". +Files: src/fileio.c, src/ex_docmd.c + +Patch 7.0.240 +Problem: Crash when splitting a window in the GUI. (opposite of 7.0.227) +Solution: Don't call out_flush() from win_alloc(). Also avoid this for + win_delete(). Also block autocommands while the window structure + is invalid. +Files: src/window.c + +Patch 7.0.241 +Problem: ":windo throw 'foo'" loops forever. (Andy Wokula) +Solution: Detect that win_goto() doesn't work. +Files: src/ex_cmds2.c + +Patch 7.0.242 (extra) +Problem: Win32: Using "-register" in a Vim that does not support OLE causes + a crash. +Solution: Don't use EMSG() but mch_errmsg(). Check p_go for being NULL. + (partly by Michael Wookey) +Files: src/gui_w32.c + +Patch 7.0.243 (extra) +Problem: Win32: When GvimExt is built with MSVC 2005 or later, the "Edit + with vim" context menu doesn't appear in the Windows Explorer. +Solution: Embed the linker manifest file into the resources of GvimExt.dll. + (Mathias Michaelis) +Files: src/GvimExt/Makefile + + +Fixes after Vim 7.1a BETA: + +The extra archive had CVS directories included below "farsi" and +"runtime/icons". CVS was missing the farsi icon files. + +Fix compiling with Gnome 2.18, undefine bind_textdomain_codeset. (Daniel +Drake) + +Mac: "make install" didn't copy rgb.txt. + +When editing a compressed file while there are folds caused "ml_get" errors +and some lines could be missing. When decompressing failed option values were +not restored. + + +Patch 7.1a.001 +Problem: Crash when downloading a spell file. (Szabolcs Horvat) +Solution: Avoid that did_set_spelllang() is used recursively when a new + window is opened for the download. + Also avoid wiping out the wrong buffer. +Files: runtime/autoload/spellfile.vim, src/buffer.c, src/ex_cmds.c, + src/spell.c + +Patch 7.1a.002 (extra) +Problem: Compilation error with MingW. +Solution: Check for LPTOOLTIPTEXT to be defined. +Files: src/gui_w32.c + + +Fixes after Vim 7.1b BETA: + +Made the Mzscheme interface build both with old and new versions of Mzscheme, +using an #ifdef. (Sergey Khorev) +Mzscheme interface didn't link, missing function. Changed order of libraries +in the configure script. + +Ruby interface didn't compile on Mac. Changed #ifdef. (Lily Ballard) + +Patch 7.1b.001 (extra) +Problem: Random text in a source file. No idea how it got there. +Solution: Delete the text. +Files: src/gui_w32.c + +Patch 7.1b.002 +Problem: When 'maxmem' is large there can be an overflow in computations. + (Thomas Wiegner) +Solution: Use the same mechanism as in mch_total_mem(): first reduce the + multiplier as much as possible. +Files: src/memfile.c + +============================================================================== +VERSION 7.2 *version-7.2* *version7.2* + +This section is about improvements made between version 7.1 and 7.2. + +This is mostly a bug-fix release. The main new feature is floating point +support. |Float| + + +Changed *changed-7.2* +------- + +Changed the command line buffer name from "command-line" to "[Command Line]". + +Removed optional ! for ":caddexpr", ":cgetexpr", ":cgetfile", ":laddexpr", +":lgetexpr" and ":lgetfile". They are not needed. (Yegappan Lakshmanan) + +An offset for syntax matches worked on bytes instead of characters. That is +inconsistent and can easily be done wrong. Use character offsets now. +(Yukihiro Nakadaira) + +The FileChangedShellPost event was also given when a file didn't change. +(John Little) + +When the current line is long (doesn't fit) the popup menu can't be seen. +Display it below the screen line instead of below the text line. +(Francois Ingelrest) + +Switched to autoconf version 2.62. + +Moved including fcntl.h to vim.h and removed it from all .c files. + +Introduce macro STRMOVE(d, s), like STRCPY() for overlapping strings. +Use it instead of mch_memmove(p, p + x, STRLEN(p + x) + 1). + +Removed the bulgarian.vim keymap file, two more standard ones replace it. +(Boyko Bantchev) + +Increased the maximum number of tag matches for command line completion from +200 to 300. + +Renamed help file sql.txt to ft_sql.txt and ada.txt to ft_ada.txt. + + +Added *added-7.2* +----- + +New syntax files: + CUDA (Timothy B. Terriberry) + Cdrdao config (Nikolai Weibull) + Coco/R (Ashish Shukla) + Denyhosts config (Nikolai Weibull) + Dtrace script (Nicolas Weber) + Git output, commit, config, rebase, send-email (Tim Pope) + HASTE and HastePreProc (M. Tranchero) + Haml (Tim Pope) + Host conf (Nikolai Weibull) + Linden script (Timo Frenay) + MS messages (Kevin Locke) + PDF (Tim Pope) + ProMeLa (Maurizio Tranchero) + Reva Foth (Ron Aaron) + Sass (Tim Pope) + Symbian meta-makefile, MMP (Ron Aaron) + VOS CM macro (Andrew McGill) + XBL (Doug Kearns) + +New tutor files: + Made UTF-8 versions of all the tutor files. + Greek renamed from ".gr" to ".el" (Greek vs Greece). + Esperanto (Dominique Pelle) + Croatian (Paul B. Mahol) + +New filetype plugins: + Cdrdao config (Nikolai Weibull) + Debian control files (Debian Vim maintainers) + Denyhosts (Nikolai Weibull) + Dos .ini file (Nikolai Weibull) + Dtrace script (Nicolas Weber) + FnameScript (Nikolai Weibull) + Git, Git config, Git commit, Git rebase, Git send-email (Tim Pope) + Haml (Tim Pope) + Host conf (Nikolai Weibull) + Host access (Nikolai Weibull) + Logtalk (Paulo Moura) + MS messages (Kevin Locke) + NSIS script (Nikolai Weibull) + PDF (Tim Pope) + Reva Forth (Ron Aaron) + Sass (Tim Pope) + +New indent files: + DTD (Nikolai Weibull) + Dtrace script (Nicolas Weber) + Erlang (Csaba Hoch) + FrameScript (Nikolai Weibull) + Git config (Tim Pope) + Haml (Tim Pope) + Logtalk (Paulo Moura) + Sass (Tim Pope) + Tiny Fugue (Christian J. Robinson) + +New compiler plugins: + RSpec (Tim Pope) + +New keymap files: + Croatian (Paul B. Mahol) + Russian Dvorak (Serhiy Boiko) + Ukrainian Dvorak (Serhiy Boiko) + Removed plain Bulgarian, "bds" and phonetic are sufficient. + +Other new runtime files: + Esperanto menu and message translations. (Dominique Pelle) + Finnish menu and message translations. (Flammie Pirinen) + Brazilian Portuguese message translations. (Eduardo Dobay) + +Added floating point support. |Float| + +Added argument to mode() to return a bit more detail about the current mode. +(Ben Schmidt) + +Added support for BSD console mouse: |sysmouse|. (Paul B. Mahol) + +Added the "newtab" value for the 'switchbuf' option. (partly by Yegappan +Lakshmanan) + +Improved error messages for the netbeans interface. (Philippe Fremy) + +Added support for using xterm mouse codes for screen. (Micah Cowan) + +Added support for cross compiling: +Adjusted configure.in and added INSTALLcross.txt. (Marc Haisenko) Fixed +mistakes in configure.in after that. +Don't use /usr/local/include and /usr/local/lib in configure. (Philip +Prindeville) +For cross compiling the Cygwin version on Unix, change VIM.TLB to vim.tlb in +src/vim.rc. (Tsuneo Nakagawa) + +Added v:searchforward variable: What direction we're searching in. (Yakov +Lerner) + + +Fixed *fixed-7.2* +----- + +Patch 7.1.001 +Problem: Still can't build with Gnome libraries. +Solution: Fix typo in bind_textdomain_codeset. (Mike Kelly) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 7.1.002 +Problem: Oracle Pro*C/C++ files are not detected. +Solution: Add the missing star. (Micah J. Cowan) +Files: runtime/filetype.vim + +Patch 7.1.003 (extra) +Problem: The "Tear off this menu" message appears in the message history + when using a menu. (Yongwei Wu) +Solution: Disable message history when displaying the menu tip. +Files: src/gui_w32.c + +Patch 7.1.004 +Problem: Crash when doing ":next directory". (Raphael Finkel) +Solution: Do not use "buf", it may be invalid after autocommands. +Files: src/ex_cmds.c + +Patch 7.1.005 +Problem: "cit" used on <foo></foo> deletes <foo>. Should not delete + anything and start insertion, like "ci'" does on "". (Michal + Bozon) +Solution: Handle an empty object specifically. Made it work consistent for + various text objects. +Files: src/search.c + +Patch 7.1.006 +Problem: Resetting 'modified' in a StdinReadPost autocommand doesn't work. +Solution: Set 'modified' before the autocommands instead of after it. +Files: src/buffer.c + +Patch 7.1.007 (extra) +Problem: Mac: Context menu doesn't work on Intel Macs. + Scrollbars are not dimmed when Vim is not the active application. +Solution: Remove the test whether context menus are supported. They are + always there in OS/X. Handle the dimming. (Nicolas Weber) +Files: src/gui_mac.c, src/gui.h + +Patch 7.1.008 +Problem: getfsize() returns a negative number for very big files. +Solution: Check for overflow and return -2. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.009 +Problem: In diff mode, displaying the difference between a tab and spaces + is not highlighted correctly. +Solution: Only change highlighting at the end of displaying a tab. +Files: src/screen.c + +Patch 7.1.010 +Problem: The Gnome session file doesn't restore tab pages. +Solution: Add SSOP_TABPAGES to the session flags. (Matias D'Ambrosio) +Files: src/gui_gtk_x11.c + +Patch 7.1.011 +Problem: Possible buffer overflow when $VIMRUNTIME is very long. (Victor + Stinner) +Solution: Use vim_snprintf(). +Files: src/main.c + +Patch 7.1.012 +Problem: ":let &shiftwidth = 'asdf'" doesn't produce an error message. +Solution: Check for a string argument. (Chris Lubinski) +Files: src/option.c + +Patch 7.1.013 +Problem: ":syn include" only loads the first file, while it is documented + as doing the equivalent of ":runtime!". +Solution: Change the argument to source_runtime(). (James Vega) +Files: src/syntax.c + +Patch 7.1.014 +Problem: Crash when doing C indenting. (Chris Monson) +Solution: Obtain the current line again after invoking cin_islabel(). +Files: src/edit.c + +Patch 7.1.015 +Problem: MzScheme interface: current-library-collection-paths produces no + list. Interface doesn't build on a Mac. +Solution: Use a list instead of a pair. (Bernhard Fisseni) Use "-framework" + argument for MZSCHEME_LIBS in configure. +Files: src/configure.in, src/if_mzsch.c, src/auto/configure + +Patch 7.1.016 (after patch 7.1.012) +Problem: Error message about setting 'diff' to a string. +Solution: Don't pass an empty string to set_option_value() when setting + 'diff'. +Files: src/quickfix.c, src/popupmnu.c + +Patch 7.1.017 +Problem: ":confirm w" does give a prompt when 'readonly' is set, but not + when the file permissions are read-only. (Michael Schaap) +Solution: Provide a dialog in both situations. (Chris Lubinski) +Files: src/ex_cmds.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.1.018 +Problem: When 'virtualedit' is set a "p" of a block just past the end of + the line inserts before the cursor. (Engelke) +Solution: Check for the cursor being just after the line (Chris Lubinski) +Files: src/ops.c + +Patch 7.1.019 +Problem: ":py" asks for an argument, ":py asd" then gives the error that + ":py" isn't implemented. Should already happen for ":py". +Solution: Compare with ex_script_ni. (Chris Lubinski) +Files: src/ex_docmd.c + +Patch 7.1.020 +Problem: Reading from uninitialized memory when using a dialog. (Dominique + Pelle) +Solution: In msg_show_console_dialog() append a NUL after every appended + character. +Files: src/message.c + +Patch 7.1.021 (after 7.1.015) +Problem: Mzscheme interface doesn't compile on Win32. +Solution: Fix the problem that 7.1.015 fixed in a better way. (Sergey Khorev) +Files: src/if_mzsch.c + +Patch 7.1.022 +Problem: When setting 'keymap' twice the b:keymap_name variable isn't set. + (Milan Berta) +Solution: Don't unlet b:keymap_name for ":loadkeymap". (Martin Toft) +Files: src/digraph.c + +Patch 7.1.023 +Problem: "dw" in a line with one character deletes the line. Vi and nvi + don't do this. (Kjell Arne Rekaa) +Solution: Check for one-character words especially. +Files: src/search.c + +Patch 7.1.024 +Problem: Using a pointer that has become invalid. (Chris Monson) +Solution: Obtain the line pointer again after we looked at another line. +Files: src/search.c + +Patch 7.1.025 +Problem: search() and searchpos() don't use match under cursor at start of + line when using 'bc' flags. (Viktor Kojouharov) +Solution: Don't go to the previous line when the 'c' flag is present. + Also fix that "j" doesn't move the cursor to the right column. +Files: src/eval.c, src/search.c + +Patch 7.1.026 +Problem: "[p" doesn't work in Visual mode. (David Brown) +Solution: Use checkclearop() instead of checkclearopq(). +Files: src/normal.c + +Patch 7.1.027 +Problem: On Sun systems opening /dev/fd/N doesn't work, and they are used + by process substitutions. +Solution: Allow opening specific character special files for Sun systems. + (Gary Johnson) +Files: src/fileio.c, src/os_unix.h + +Patch 7.1.028 +Problem: Can't use last search pattern for ":sort". (Brian McKee) +Solution: When the pattern is empty use the last search pattern. (Martin + Toft) +Files: runtime/doc/change.txt, src/ex_cmds.c + +Patch 7.1.029 (after 7.1.019) +Problem: Can't compile when all interfaces are used. (Taylor Venable) +Solution: Only check for ex_script_ni when it's defined. +Files: src/ex_docmd.c + +Patch 7.1.030 +Problem: The "vimtutor" shell script checks for "vim6" but not for "vim7". + (Christian Robinson) +Solution: Check for more versions, but prefer using "vim". +Files: src/vimtutor + +Patch 7.1.031 +Problem: virtcol([123, '$']) doesn't work. (Michael Schaap) +Solution: When '$' is used for the column number get the last column. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.032 +Problem: Potential crash when editing a command line. (Chris Monson) +Solution: Check the position to avoid access before the start of an array. +Files: src/ex_getln.c + +Patch 7.1.033 +Problem: A buffer is marked modified when it was first deleted and then + added again using a ":next" command. (John Mullin) +Solution: When checking if a buffer is modified use the BF_NEVERLOADED flag. +Files: src/option.c + +Patch 7.1.034 +Problem: Win64: A few compiler warnings. Problems with optimizer. +Solution: Use int instead of size_t. Disable the optimizer in one function. + (George V. Reilly) +Files: src/eval.c, src/spell.c + +Patch 7.1.035 +Problem: After ":s/./&/#" all listed lines have a line number. (Yakov + Lerner) +Solution: Reset the line number flag when not using the "&" flag. +Files: src/ex_cmds.c + +Patch 7.1.036 +Problem: Completing ":echohl" argument should include "None". (Ori + Avtalion) ":match" should have "none" too. +Solution: Add flags to use expand_highlight(). Also fix that when disabling + FEAT_CMDL_COMPL compilation fails. (Chris Lubinski) +Files: src/eval.c, src/ex_docmd.c, src/ex_getln.c, src/proto/syntax.pro + src/syntax.c + +Patch 7.1.037 +Problem: strcpy() used for overlapping strings. (Chris Monson) +Solution: Use mch_memmove() instead. +Files: src/option.c + +Patch 7.1.038 +Problem: When 'expandtab' is set then a Tab copied for 'copyindent' is + expanded to spaces, even when 'preserveindent' is set. (Alexei + Alexandrov) +Solution: Remove the check for 'expandtab'. Also fix that ">>" doesn't obey + 'preserveindent'. (Chris Lubinski) +Files: src/misc1.c + +Patch 7.1.039 +Problem: A tag in a help file that starts with "help-tags" and contains a + percent sign may make Vim crash. (Ulf Harnhammar) +Solution: Use puts() instead of fprintf(). +Files: src/ex_cmds.c + +Patch 7.1.040 +Problem: ":match" only supports three matches. +Solution: Add functions clearmatches(), getmatches(), matchadd(), + matchdelete() and setmatches(). Changed the data structures for + this. A small bug in syntax.c is fixed, so newly created + highlight groups can have their name resolved correctly from their + ID. (Martin Toft) +Files: runtime/doc/eval.txt, runtime/doc/pattern.txt, + runtime/doc/usr_41.txt, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, src/syntax.c, + src/testdir/Makefile, src/testdir/test63.in, + src/testdir/test63.ok, src/window.c + +Patch 7.1.041 (extra, after 7.1.040) +Problem: Some changes for patch 7.1.040 are in extra files. +Solution: Update the extra files. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.1.042 (after 7.1.040) +Problem: Internal error when using matchadd(). (David Larson) +Solution: Check the third argument to be present before using the fourth + argument. (Martin Toft) +Files: src/eval.c + +Patch 7.1.043 +Problem: In Ex mode using CTRL-D twice may cause a crash. Cursor isn't + positioned properly after CTRL-D. +Solution: Set prev_char properly. Position the cursor correctly. (Antony + Scriven) +Files: src/ex_getln.c + +Patch 7.1.044 +Problem: In Insert mode 0 CTRL-T deletes all indent, it should add indent. + (Gautam Iyer) +Solution: Check for CTRL-D typed. +Files: src/edit.c + +Patch 7.1.045 +Problem: Unnecessary screen redrawing. (Jjgod Jiang) +Solution: Reset "must_redraw" after clearing the screen. +Files: src/screen.c + +Patch 7.1.046 +Problem: ":s" command removes combining characters. (Ron Aaron) +Solution: Copy composing characters individually. (Chris Lubinski) +Files: src/regexp.c + +Patch 7.1.047 +Problem: vim_regcomp() called with invalid argument. (Xiaozhou Liu) +Solution: Change TRUE to RE_MAGIC + RE_STRING. +Files: src/ex_eval.c + +Patch 7.1.048 +Problem: The matchparen plugin doesn't update the match when scrolling with + the mouse wheel. (Ilya Bobir) +Solution: Set the match highlighting for text that can be scrolled into the + viewable area without moving the cursor. (Chris Lubinski) +Files: runtime/plugin/matchparen.vim + +Patch 7.1.049 +Problem: Cannot compile GTK2 version with Hangul input feature. +Solution: Don't define FEAT_XFONTSET when using GTK2. +Files: src/feature.h + +Patch 7.1.050 +Problem: Possible crash when using C++ indenting. (Chris Monson) +Solution: Keep the line pointer to the line to compare with. Avoid going + past the end of line. +Files: src/misc1.c + +Patch 7.1.051 +Problem: Accessing uninitialized memory when finding spell suggestions. +Solution: Don't try swapping characters at the end of a word. +Files: src/spell.c + +Patch 7.1.052 +Problem: When creating a new match not all fields are initialized, which + may lead to unpredictable results. +Solution: Initialise rmm_ic and rmm_maxcol. +Files: src/window.c + +Patch 7.1.053 +Problem: Accessing uninitialized memory when giving a message. +Solution: Check going the length before checking for a NUL byte. +Files: src/message.c + +Patch 7.1.054 +Problem: Accessing uninitialized memory when displaying the fold column. +Solution: Add a NUL to the extra array. (Dominique Pelle). Also do this in + a couple of other situations. +Files: src/screen.c + +Patch 7.1.055 +Problem: Using strcpy() with arguments that overlap. +Solution: Use mch_memmove() instead. +Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_getln.c, + src/misc1.c, src/regexp.c, src/termlib.c + +Patch 7.1.056 +Problem: More prompt does not behave correctly after scrolling back. + (Randall W. Morris) +Solution: Avoid lines_left becomes negative. (Chris Lubinski) Don't check + mp_last when deciding to show the more prompt. (Martin Toft) +Files: src/message.c + +Patch 7.1.057 +Problem: Problem with CursorHoldI when using "r" in Visual mode (Max + Dyckhoff) +Solution: Ignore CursorHold(I) when getting a second character for a Normal + mode command. Also abort the "r" command in Visual when a special + key is typed. +Files: src/normal.c + +Patch 7.1.058 +Problem: When 'rightleft' is set the completion menu is positioned wrong. + (Baha-Eddine MOKADEM) +Solution: Fix the completion menu. (Martin Toft) +Files: src/popupmnu.c, src/proto/search.pro, src/search.c + +Patch 7.1.059 +Problem: When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim + hangs and beeps. (Antony Scriven) +Solution: Clear "got_int" in the main loop to avoid the hang. When typing + CTRL-C twice in a row abort the ":g" command. This is Vi + compatible. +Files: src/main.c + +Patch 7.1.060 +Problem: Splitting quickfix window messes up window layout. (Marius + Gedminas) +Solution: Compute the window size in a smarter way. (Martin Toft) +Files: src/window.c + +Patch 7.1.061 +Problem: Win32: When 'encoding' is "latin1" 'ignorecase' doesn't work for + characters with umlaut. (Joachim Hofmann) +Solution: Do not use islower()/isupper()/tolower()/toupper() but our own + functions. (Chris Lubinski) +Files: src/mbyte.c, src/regexp.c, src/vim.h + +Patch 7.1.062 (after 7.1.038) +Problem: Indents of C comments can be wrong. (John Mullin) +Solution: Adjust ind_len. (Chris Lubinski) +Files: src/misc1.c + +Patch 7.1.063 (after 7.1.040) +Problem: Warning for uninitialized variable. +Solution: Initialise it to NULL. +Files: src/ex_docmd.c + +Patch 7.1.064 +Problem: On Interix some files appear not to exist. +Solution: Remove the top bit from st_mode. (Ligesh) +Files: src/os_unix.c + +Patch 7.1.065 (extra) +Problem: Win32: Compilation problem for newer version of w32api. +Solution: Only define __IID_DEFINED__ when needed. (Chris Sutcliffe) +Files: src/Make_ming.mak, src/iid_ole.c + +Patch 7.1.066 +Problem: When 'bomb' is set or reset the file should be considered + modified. (Tony Mechelynck) +Solution: Handle like 'endofline'. (Martin Toft) +Files: src/buffer.c, src/fileio.c, src/option.c, src/structs.h + +Patch 7.1.067 +Problem: 'thesaurus' doesn't work when 'infercase' is set. (Mohsin) +Solution: Don't copy the characters being completed but check the case and + apply it to the suggested word. Also fix that the first word in + the thesaurus line is not used. (Martin Toft) +Files: src/edit.c + +Patch 7.1.068 +Problem: When 'equalalways' is set and splitting a window, it's possible + that another small window gets bigger. +Solution: Only equalize window sizes when after a split the windows are + smaller than another window. (Martin Toft) +Files: runtime/doc/options.txt, runtime/doc/windows.txt, src/window.c + +Patch 7.1.069 +Problem: GTK GUI: When using confirm() without a default button there still + is a default choice. +Solution: Ignore Enter and Space when there is no default button. (Chris + Lubinski) +Files: src/gui_gtk.c + +Patch 7.1.070 (extra) +Problem: Win32 GUI: When using confirm() without a default button there + still is a default choice. +Solution: Set focus on something else than a button. (Chris Lubinski) +Files: src/gui_w32.c + +Patch 7.1.071 (after 7.1.040) +Problem: Regexp patterns are not tested. +Solution: Add a basic test, to be expanded later. + Also add (commented-out) support for valgrind. +Files: src/testdir/Makefile, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.1.072 (extra, after 7.1.041 and 7.1.071) +Problem: Some changes for patch 7.1.071 are in extra files. +Solution: Update the extra files. Also fix a few warnings from the DOS test + makefile. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.1.073 (after 7.1.062) +Problem: Wrong cursor position and crash when 'preserveindent' is set. + (Charles Campbell) +Solution: Handle the situation that we start without indent. (Chris + Lubinski) +Files: src/misc1.c + +Patch 7.1.074 +Problem: Crash when calling string() on a recursively nested List. +Solution: Check result value for being NULL. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.1.075 +Problem: ":let v:statusmsg" reads memory already freed. +Solution: Don't set v:statusmsg when listing it. +Files: src/eval.c + +Patch 7.1.076 +Problem: Another strcpy() with overlapping arguments. +Solution: Use mch_memmove(). (Dominique Pelle) And another one. +Files: src/ex_docmd.c, src/normal.c + +Patch 7.1.077 +Problem: Using "can_spell" without initializing it. (Dominique Pelle) +Solution: Set a default for get_syntax_attr(). +Files: src/syntax.c + +Patch 7.1.078 +Problem: Dropping a file name on gvim that contains a CSI byte doesn't work + when editing the command line. +Solution: Escape the CSI byte when inserting in the input buffer. (Yukihiro + Nakadaira) +Files: src/gui.c, src/ui.c + +Patch 7.1.079 +Problem: When the locale is "C" and 'encoding' is "latin1" then the "@" + character in 'isfname', 'isprint', etc. doesn't pick up accented + characters. +Solution: Instead of isalpha() use MB_ISLOWER() and MB_ISUPPER(). +Files: src/charset.c, src/macros.h + +Patch 7.1.080 (extra) +Problem: Compiler warnings for using "const char *" for "char *". +Solution: Add type casts. (Chris Sutcliffe) +Files: src/GvimExt/gvimext.cpp + +Patch 7.1.081 +Problem: Command line completion for a shell command: "cat </tmp/file<Tab>" + doesn't work. +Solution: Start the file name at any character that can't be in a file name. + (Martin Toft) +Files: src/ex_docmd.c + +Patch 7.1.082 +Problem: After a ":split" the matchparen highlighting isn't there. +Solution: Install a WinEnter autocommand. Also fixes that after + ":NoMatchParen" only the current window is updated. (Martin Toft) +Files: runtime/doc/pi_paren.txt, runtime/plugin/matchparen.vim + +Patch 7.1.083 (after 7.1.081) +Problem: Command line completion doesn't work with wildcards. +Solution: Add vim_isfilec_or_wc() and use it. (Martin Toft) +Files: src/charset.c, src/proto/charset.pro, src/ex_docmd.c + +Patch 7.1.084 +Problem: Using the "-nb" argument twice causes netbeans not to get + fileOpened events. +Solution: Change "&" to "&&". (Xavier de Gaye) +Files: src/ex_cmds.c + +Patch 7.1.085 +Problem: ":e fold.c" then ":sp fold.c" results in folds of original window + to disappear. (Akita Noek) +Solution: Invoke foldUpdateAll() for all windows of the changed buffer. + (Martin Toft) +Files: src/ex_cmds.c + +Patch 7.1.086 +Problem: Crash when using specific Python syntax highlighting. (Quirk) +Solution: Check for a negative index, coming from a keyword match at the + start of a line from a saved state. +Files: src/syntax.c + +Patch 7.1.087 +Problem: Reading past ":cscope find" command. Writing past end of a buffer. +Solution: Check length of the argument before using the pattern. Use + vim_strncpy(). (Dominique Pelle) +Files: if_cscope.c + +Patch 7.1.088 (extra) +Problem: The coordinates used by ":winpos" differ from what getwinposx() + and getwinposy() return. +Solution: Use MoveWindowStructure() instead of MoveWindow(). (Michael Henry) +Files: src/gui_mac.c + +Patch 7.1.089 +Problem: ":let loaded_getscriptPlugin" doesn't clear to eol, result is + "#1in". +Solution: Clear to the end of the screen after displaying the first variable + value. +Files: src/eval.c + +Patch 7.1.090 +Problem: Compiler warning on Mac OS X 10.5. +Solution: Don't redeclare sigaltstack(). (Hisashi T Fujinaka) +Files: src/os_unix.c + +Patch 7.1.091 (extra) +Problem: Win32: Can't embed Vim inside another application. +Solution: Add the --windowid argument. (Nageshwar) +Files: runtime/doc/gui_w32.txt, runtime/doc/starting.txt, + runtime/doc/vi_diff.txt, src/globals.h, src/gui_w32.c, src/main.c + +Patch 7.1.092 (extra, after 7.1.088) +Problem: Wrong arguments for MoveWindowStructure(). +Solution: Remove "TRUE". (Michael Henry) +Files: src/gui_mac.c + +Patch 7.1.093 +Problem: Reading past end of a screen line when determining cell width. + (Dominique Pelle) +Solution: Add an argument to mb_off2cells() for the maximum offset. +Files: src/globals.h, src/gui.c, src/mbyte.c, src/proto/mbyte.pro, + src/screen.c + +Patch 7.1.094 +Problem: When checking if syntax highlighting is present, looking in the + current buffer instead of the specified one. +Solution: Use "buf" instead of "curbuf". +Files: src/syntax.c + +Patch 7.1.095 +Problem: The FocusLost and FocusGained autocommands are triggered + asynchronously in the GUI. This may cause arbitrary problems. +Solution: Put the focus event in the input buffer and handle it when ready + for it. +Files: src/eval.c, src/getchar.c, src/gui.c, src/gui_gtk_x11.c, + src/keymap.h + +Patch 7.1.096 +Problem: Reading past end of a string when resizing Vim. (Dominique Pelle) +Solution: Check the string pointer before getting the char it points to. +Files: src/message.c + +Patch 7.1.097 +Problem: ":setlocal stl=%!1+1" does not work. +Solution: Adjust check for pointer. (Politz) +Files: src/option.c + +Patch 7.1.098 +Problem: ":call s:var()" doesn't work if "s:var" is a Funcref. (Andy Wokula) +Solution: Before converting "s:" into a script ID, check if it is a Funcref. +Files: src/eval.c + +Patch 7.1.099 +Problem: When the 'keymap' and 'paste' options have a non-default value, + ":mkexrc" and ":mksession" do not correctly set the options. +Solution: Set the options with side effects before other options. +Files: src/option.c + +Patch 7.1.100 +Problem: Win32: Executing cscope doesn't always work properly. +Solution: Use another way to invoke cscope. (Mike Williams) +Files: src/if_cscope.c, src/if_cscope.h, src/main.c, + src/proto/if_cscope.pro + +Patch 7.1.101 +Problem: Ruby: The Buffer.line= method does not work. +Solution: Add the "self" argument to set_current_line(). (Jonathan Hankins) +Files: src/if_ruby.c + +Patch 7.1.102 +Problem: Perl interface doesn't compile with new version of Perl. +Solution: Add two variables to the dynamic library loading. (Suresh + Govindachar) +Files: src/if_perl.xs + +Patch 7.1.103 +Problem: Using "dw" with the cursor past the end of the last line (using + CTRL-\ CTRL-O from Insert mode) deletes a character. (Tim Chase) +Solution: Don't move the cursor back when the movement failed. +Files: src/normal.c + +Patch 7.1.104 (after 7.1.095) +Problem: When 'lazyredraw' is set a focus event causes redraw to be + postponed until a key is pressed. +Solution: Instead of not returning from vgetc() when a focus event is + encountered return K_IGNORE. Add plain_vgetc() for when the + caller doesn't want to get K_IGNORE. +Files: src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_getln.c, + src/getchar.c, src/normal.c, src/proto/getchar.pro, src/window.c + +Patch 7.1.105 +Problem: Internal error when using "0 ? {'a': 1} : {}". (A.Politz) +Solution: When parsing a dictionary value without using the value, don't try + obtaining the key name. +Files: src/eval.c + +Patch 7.1.106 +Problem: ":messages" doesn't quit listing on ":". +Solution: Break the loop when "got_int" is set. +Files: src/message.c + +Patch 7.1.107 +Problem: When doing a block selection and using "s" to change the text, + while triggering auto-indenting, causes the wrong text to be + repeated in other lines. (Adri Verhoef) +Solution: Compute the change of indent and compensate for that. +Files: src/ops.c + +Patch 7.1.108 (after 7.1.100) +Problem: Win32: Compilation problems in Cscope code. (Jeff Lanzarotta) +Solution: Use (long) instead of (intptr_t) when it's not defined. +Files: src/if_cscope.c + +Patch 7.1.109 +Problem: GTK: when there are many tab pages, clicking on the arrow left of + the labels moves to the next tab page on the right. (Simeon Bird) +Solution: Check the X coordinate of the click and pass -1 as value for the + left arrow. +Files: src/gui_gtk_x11.c, src/term.c + +Patch 7.1.110 (after 7.1.102) +Problem: Win32: Still compilation problems with Perl. +Solution: Change the #ifdefs. (Suresh Govindachar) +Files: src/if_perl.xs + +Patch 7.1.111 +Problem: When using ":vimgrep" with the "j" flag folds from another buffer + may be displayed. (A.Politz) +Solution: When not jumping to another buffer update the folds. +Files: src/quickfix.c + +Patch 7.1.112 +Problem: Using input() with a wrong argument may crash Vim. (A.Politz) +Solution: Init the input() return value to NULL. +Files: src/eval.c + +Patch 7.1.113 +Problem: Using map() to go over an empty list causes memory to be freed + twice. (A.Politz) +Solution: Don't clear the typeval in restore_vimvar(). +Files: src/eval.c + +Patch 7.1.114 +Problem: Memory leak in getmatches(). +Solution: Don't increment the refcount twice. +Files: src/eval.c + +Patch 7.1.115 (after 7.1.105) +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Init variable to NULL. +Files: src/eval.c + +Patch 7.1.116 +Problem: Cannot display Unicode characters above 0x10000. +Solution: Remove the replacement with a question mark when UNICODE16 is not + defined. (partly by Nicolas Weber) +Files: src/screen.c + +Patch 7.1.117 +Problem: Can't check whether Vim was compiled with Gnome. (Tony Mechelynck) +Solution: Add gui_gnome to the has() list. +Files: src/eval.c + +Patch 7.1.118 (after 7.1.107) +Problem: Compiler warning for Visual C compiler. +Solution: Add typecast. (Mike Williams) +Files: src/ops.c + +Patch 7.1.119 +Problem: Crash when 'cmdheight' set to very large value. (A.Politz) +Solution: Limit 'cmdheight' to 'lines' minus one. Store right value of + 'cmdheight' when running out of room. +Files: src/option.c, src/window.c + +Patch 7.1.120 +Problem: Can't properly check memory leaks while running tests. +Solution: Add an argument to garbagecollect(). Delete functions and + variables in the test scripts. +Files: runtime/doc/eval.txt src/eval.c, src/globals.h, src/main.c, + src/testdir/Makefile, src/testdir/test14.in, + src/testdir/test26.in, src/testdir/test34.in, + src/testdir/test45.in, src/testdir/test47.in, + src/testdir/test49.in, src/testdir/test55.in, + src/testdir/test56.in, src/testdir/test58.in, + src/testdir/test59.in, src/testdir/test60.in, + src/testdir/test60.vim, src/testdir/test62.in, + src/testdir/test63.in, src/testdir/test64.in, + +Patch 7.1.121 +Problem: Using ":cd %:h" when editing a file in the current directory + results in an error message for using an empty string. +Solution: When "%:h" results in an empty string use ".". +Files: src/eval.c + +Patch 7.1.122 +Problem: Mac: building Vim.app fails. Using wrong architecture. +Solution: Use line continuation for the gui_bundle dependency. Detect the + system architecture with "uname -a". +Files: src/main.aap + +Patch 7.1.123 +Problem: Win32: ":edit foo ~ foo" expands "~". +Solution: Change the call to expand_env(). +Files: src/ex_docmd.c, src/misc1.c, src/proto/misc1.pro, src/option.c + +Patch 7.1.124 (extra) +Problem: Mac: When dropping a file on Vim.app that is already in the buffer + list (from .viminfo) results in editing an empty, unnamed buffer. + (Axel Kielhorn) Also: warning for unused variable. +Solution: Move to the buffer of the first argument. Delete unused variable. +Files: src/gui_mac.c + +Patch 7.1.125 +Problem: The TermResponse autocommand event is not always triggered. (Aron + Griffis) +Solution: When unblocking autocommands check if v:termresponse changed and + trigger the event then. +Files: src/buffer.c, src/diff.c, src/ex_getln.c, src/fileio.c, + src/globals.h, src/misc2.c, src/proto/fileio.pro, src/window.c + +Patch 7.1.126 (extra) +Problem: ":vimgrep */*" fails when a BufRead autocommand changes directory. + (Bernhard Kuhn) +Solution: Change back to the original directory after loading a file. + Also: use shorten_fname1() to avoid duplicating code. +Files: src/buffer.c, src/ex_docmd.c, src/fileio.c, src/gui_gtk.c, + src/gui_w48.c, src/proto/ex_docmd.pro, src/proto/fileio.pro, + src/quickfix.c + +Patch 7.1.127 +Problem: Memory leak when doing cmdline completion. (Dominique Pelle) +Solution: Free "orig" argument of ExpandOne() when it's not used. +Files: src/ex_getln.c + +Patch 7.1.128 (extra) +Problem: Build problems with new version of Cygwin. +Solution: Remove -D__IID_DEFINED__, like with MingW. (Guopeng Wen) +Files: src/Make_cyg.mak + +Patch 7.1.129 (extra) +Problem: Win32: Can't get the user name when it is longer than 15 + characters. +Solution: Use UNLEN instead of MAX_COMPUTERNAME_LENGTH. (Alexei Alexandrov) +Files: src/os_win32.c + +Patch 7.1.130 +Problem: Crash with specific order of undo and redo. (A.Politz) +Solution: Clear and adjust pointers properly. Add u_check() for debugging. +Files: src/undo.c, src/structs.h + +Patch 7.1.131 +Problem: ":mksession" always adds ":setlocal autoread". (Christian J. + Robinson) +Solution: Skip boolean global/local option using global value. +Files: src/option.c + +Patch 7.1.132 +Problem: getpos("'>") may return a negative column number for a Linewise + selection. (A.Politz) +Solution: Don't add one to MAXCOL. +Files: src/eval.c + +Patch 7.1.133 (after 7.1.126) +Problem: shorten_fname1() linked when it's not needed. +Solution: Add #ifdef. +Files: src/fileio.c + +Patch 7.1.134 (extra) +Problem: Win32: Can't build with VC8 +Solution: Detect the MSVC version instead of using NMAKE_VER. + (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.1.135 +Problem: Win32: When editing a file c:\tmp\foo and c:\tmp\\foo we have two + buffers for the same file. (Suresh Govindachar) +Solution: Invoke FullName_save() when a path contains "//" or "\\". +Files: src/buffer.c + +Patch 7.1.136 +Problem: Memory leak when using Ruby syntax highlighting. (Dominique Pelle) +Solution: Free the contained-in list. +Files: src/syntax.c + +Patch 7.1.137 +Problem: Build failure when using EXITFREE. (Dominique Pelle) +Solution: Add an #ifdef around using clip_exclude_prog. +Files: src/misc2.c + +Patch 7.1.138 +Problem: The Perl Msg() function doesn't stop when "q" is typed at the more + prompt. (Hari Krishna Dara) +Solution: Check got_int. +Files: src/if_perl.xs + +Patch 7.1.139 +Problem: When using marker folding and ending Insert mode with CTRL-C the + current fold is truncated. (Fred Kater) +Solution: Ignore got_int while updating folds. +Files: src/fold.c + +Patch 7.1.140 +Problem: v:count is set only after typing a non-digit, that makes it + difficult to make a nice mapping. +Solution: Set v:count while still typing the count. +Files: src/normal.c + +Patch 7.1.141 +Problem: GTK: -geom argument doesn't support a negative offset. +Solution: Compute position from the right/lower corner. +Files: src/gui_gtk_x11.c + +Patch 7.1.142 +Problem: ":redir @A>" doesn't work. +Solution: Ignore the extra ">" also when appending. (James Vega) +Files: src/ex_docmd.c + +Patch 7.1.143 +Problem: Uninitialized memory read when diffing three files. (Dominique + Pelle) +Solution: Remove "+ !notset" so that we don't use fields that were not + computed. +Files: src/diff.c + +Patch 7.1.144 +Problem: After ":diffup" cursor can be in the wrong position. +Solution: Force recomputing the cursor position. +Files: src/diff.c + +Patch 7.1.145 +Problem: Insert mode completion: When using the popup menu, after + completing a word and typing a non-word character Vim is still + completing the same word, following CTRL-N doesn't work. + Insert mode Completion: When using CTRL-X O and there is only + "struct." before the cursor, typing one char to reduce the + matches, then BS completion stops. +Solution: When typing a character that is not part of the item being + completed, stop complete mode. For whole line completion also + accept a space. For file name completion stop at a path + separator. + For omni completion stay in completion mode even if completing + with empty string. +Files: src/edit.c + +Patch 7.1.146 (extra) +Problem: VMS: Files with a very rare record organization (VFC) cannot be + properly written by Vim. + On older VAX systems mms runs into a syntax error. +Solution: Check for this special situation. Do not wrap a comment, make it + one long line. (Zoltan Arpadffy) +Files: src/fileio.c, src/Make_vms.mms + +Patch 7.1.147 (after 7.1.127) +Problem: Freeing memory already freed when completing user name. (Meino + Cramer) +Solution: Use a flag to remember if "orig" needs to be freed. +Files: src/ex_getln.c + +Patch 7.1.148 +Problem: Some types are not found by configure. +Solution: Test for the sys/types.h header file. (Sean Boudreau) +Files: src/configure.in, src/auto/configure + +Patch 7.1.149 +Problem: GTK GUI: When the completion popup menu is used scrolling another + window by the scrollbar is OK, but using the scroll wheel it + behaves line <Enter>. +Solution: Ignore K_MOUSEDOWN and K_MOUSEUP. Fix redrawing the popup menu. +Files: src/edit.c, src/gui.c + +Patch 7.1.150 +Problem: When 'clipboard' has "unnamed" using "p" in Visual mode doesn't + work correctly. (Jianrong Yu) +Solution: When 'clipboard' has "unnamed" also obtain the selection when + getting the default register. +Files: src/ops.c + +Patch 7.1.151 +Problem: Using whole line completion with 'ignorecase' and 'infercase' set + and the line is empty get an lalloc(0) error. +Solution: Don't try changing case for an empty match. (Matthew Wozniski) +Files: src/edit.c + +Patch 7.1.152 +Problem: Display problem when 'hls' and 'cursorcolumn' are set and + searching for "$". (John Mullin) Also when scrolling + horizontally when 'wrap' is off. +Solution: Keep track of the column where highlighting was set. Check the + column offset when skipping characters. +Files: src/screen.c + +Patch 7.1.153 +Problem: Compiler warnings on SGI. Undefined XpmAllocColor (Charles + Campbell) +Solution: Add type casts. Init st_dev and st_ino separately. Don't use + type casts for vim_snprintf() when HAVE_STDARG_H is defined. + Define XpmAllocColor when needed. +Files: src/eval.c, src/ex_cmds.c, src/fileio.c, src/misc2.c, + src/gui_xmebw.c + +Patch 7.1.154 +Problem: Compiler warning for signed/unsigned compare. +Solution: Add type cast. +Files: src/screen.c + +Patch 7.1.155 +Problem: Crash when 'undolevels' is 0 and repeating "udd". (James Vega) +Solution: When there is only one branch use u_freeheader() to delete it. +Files: src/undo.c + +Patch 7.1.156 +Problem: Overlapping arguments for strcpy() when expanding command line + variables. +Solution: Use mch_memmove() instead of STRCPY(). Also fix a few typos. + (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.1.157 +Problem: In Ex mode, :" gives an error at end-of-file. (Michael Hordijk) +Solution: Only give an error for an empty line, not for a comment. +Files: src/ex_docmd.c + +Patch 7.1.158 (extra) +Problem: Win32 console: When 'encoding' is "utf-8" and typing Alt-y the + result is wrong. Win32 GUI: Alt-y results in "u" when 'encoding' + is "cp1250" (Lukas Cerman) +Solution: For utf-8 don't set the 7th bit in a byte, convert to the correct + byte sequence. For cp1250, when conversion to 'encoding' results + in the 7th bit not set, set the 7th bit after conversion. +Files: src/os_win32.c, src/gui_w48.c + +Patch 7.1.159 +Problem: strcpy() has overlapping arguments. +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.160 +Problem: When a focus autocommand is defined, getting or losing focus + causes the hit-enter prompt to be redrawn. (Bjorn Winckler) +Solution: Overwrite the last line. +Files: src/message.c + +Patch 7.1.161 +Problem: Compilation errors with tiny features and EXITFREE. +Solution: Add #ifdefs. (Dominique Pelle) +Files: src/edit.c, src/misc2.c + +Patch 7.1.162 +Problem: Crash when using a modifier before "while" or "for". (A.Politz) +Solution: Skip modifiers when checking for a loop command. +Files: src/proto/ex_docmd.pro, src/ex_docmd.c, src/ex_eval.c + +Patch 7.1.163 +Problem: Warning for the unknown option 'bufsecret'. +Solution: Remove the lines .vim that use this option. (Andy Wokula) +Files: runtime/menu.vim + +Patch 7.1.164 +Problem: Reading past end of regexp pattern. (Dominique Pelle) +Solution: Use utf_ptr2len(). +Files: src/regexp.c + +Patch 7.1.165 +Problem: Crash related to getting X window ID. (Dominique Pelle) +Solution: Don't trust the window ID that we got in the past, check it every + time. +Files: src/os_unix.c + +Patch 7.1.166 +Problem: Memory leak for using "gp" in Visual mode. +Solution: Free memory in put_register(). (Dominique Pelle) +Files: src/ops.c + +Patch 7.1.167 +Problem: Xxd crashes when using "xxd -b -c 110". (Debian bug 452789) +Solution: Allocate more memory. Fix check for maximum number of columns. +Files: src/xxd/xxd.c + +Patch 7.1.168 (extra) +Problem: Win32 GUI: Since patch 7.1.095, when the Vim window does not have + focus, clicking in it doesn't position the cursor. (Juergen + Kraemer) +Solution: Don't reset s_button_pending just after receiving focus. +Files: src/gui_w48.c + +Patch 7.1.169 +Problem: Using uninitialized variable when system() fails. (Dominique + Pelle) +Solution: Let system() return an empty string when it fails. +Files: src/eval.c + +Patch 7.1.170 +Problem: Valgrind warning for overlapping arguments for strcpy(). +Solution: Use mch_memmove() instead. (Dominique Pelle) +Files: src/getchar.c + +Patch 7.1.171 +Problem: Reading one byte before allocated memory. +Solution: Check index not to become negative. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.1.172 +Problem: When 'buftype' is "acwrite" Vim still checks if the file or + directory exists before overwriting. +Solution: Don't check for overwriting when the buffer name is not a file + name. +Files: src/ex_cmds.c + +Patch 7.1.173 +Problem: Accessing freed memory. (Dominique Pelle) +Solution: Don't call reg_getline() to check if a line is the first in the + file. +Files: src/regexp.c + +Patch 7.1.174 +Problem: Writing NUL past end of a buffer. +Solution: Copy one byte less when using strncat(). (Dominique Pelle) +Files: src/ex_cmds.c, src/ex_docmd.c, + +Patch 7.1.175 +Problem: <BS> doesn't work with some combination of 'sts', 'linebreak' and + 'backspace'. (Francois Ingelrest) +Solution: When adding white space results in not moving back delete one + character. +Files: src/edit.c + +Patch 7.1.176 +Problem: Building with Aap fails when the "compiledby" argument contains + '<' or '>' characters. (Alex Yeh) +Solution: Change how quoting is done in the Aap recipe. +Files: src/main.aap + +Patch 7.1.177 +Problem: Freeing memory twice when in debug mode while reading a script. +Solution: Ignore script input while in debug mode. +Files: src/ex_cmds2.c, src/getchar.c, src/globals.h + +Patch 7.1.178 +Problem: "%" doesn't work on "/* comment *//* comment */". +Solution: Don't handle the "//" in "*//*" as a C++ comment. (Markus + Heidelberg) +Files: src/search.c + +Patch 7.1.179 +Problem: Need to check for TCL 8.5. +Solution: Adjust configure script. (Alexey Froloff) +Files: src/configure.in, src/auto/configure + +Patch 7.1.180 +Problem: Regexp patterns not tested sufficiently. +Solution: Add more checks to the regexp test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.1.181 +Problem: Accessing uninitialized memory in Farsi mode. (Dominique Pelle) +Solution: Only invoke lrF_sub() when there is something to do. +Files: src/ex_cmds.c + +Patch 7.1.182 +Problem: When using tab pages and an argument list the session file may + contain wrong "next" commands. (Alexander Bluem) +Solution: Use "argu" commands and only when needed. +Files: src/ex_docmd.c + +Patch 7.1.183 +Problem: "Internal error" for ":echo matchstr('a', 'a\%[\&]')" (Mitanu + Paul) +Solution: Inside "\%[]" detect \&, \| and \) as an error. +Files: src/regexp.c + +Patch 7.1.184 +Problem: Crash when deleting backwards over a line break in Insert mode. +Solution: Don't advance the cursor when it's already on the NUL after a + line. (Matthew Wozniski) +Files: src/normal.c + +Patch 7.1.185 +Problem: Using "gR" with a multibyte encoding and typing a CR pushes + characters onto the replace stack incorrectly, resulting in BS + putting back the wrong characters. (Paul B. Mahol) +Solution: Push multibyte characters onto the replace stack in reverse byte + order. Add replace_push_mb(). +Files: src/edit.c, src/misc1.c, src/proto/edit.pro + +Patch 7.1.186 +Problem: "expand('<afile>')" returns a bogus value after changing + directory. (Dave Fishburn) +Solution: Copy "autocmd_fname" to allocated memory and expand to full + filename. Shorten the path when expanding <afile>. +Files: src/ex_docmd.c, src/fileio.c + +Patch 7.1.187 +Problem: Win32 GUI: Custom completion using system() no longer works + after patch 7.1.104. (Erik Falor) +Solution: Loop when safe_vgetc() returns K_IGNORE. +Files: src/ex_getln.c + +Patch 7.1.188 +Problem: When 'showmode' is off the message for changing a readonly file is + given in the second column instead of the first. (Payl B. Mahol) +Solution: Put the W10 message in the first column. +Files: src/edit.c + +Patch 7.1.189 (after 7.1.104) +Problem: Patch 7.1.104 was incomplete. +Solution: Also call plain_vgetc() in ask_yesno(). +Files: src/misc1.c + +Patch 7.1.190 +Problem: Cursor after end-of-line: "iA sentence.<Esc>)" +Solution: Move cursor back and make motion inclusive. +Files: src/normal.c + +Patch 7.1.191 +Problem: Win32 GUI: after patch 7.1.168 there is still a problem when + clicking in a scrollbar. (Juergen Jottkaerr) +Solution: Don't check the input buffer when dragging the scrollbar. +Files: src/gui.c + +Patch 7.1.192 +Problem: With Visual block selection, "s" and typing something, CTRL-C + doesn't stop Vim from repeating the replacement in other lines, + like happens for "I". +Solution: Check for "got_int" to be set. +Files: src/ops.c + +Patch 7.1.193 +Problem: Some Vim 5.x digraphs are missing in Vim 7, even though the + character pairs are not used. (Philippe de Muyter) +Solution: Add those Vim 5.x digraphs that don't conflict with others. +Files: src/digraph.c + +Patch 7.1.194 +Problem: ":echo glob('~/{}')" results in /home/user//. +Solution: Don't add a slash if there already is one. +Files: src/os_unix.c + +Patch 7.1.195 +Problem: '0 mark doesn't work for "~/foo ~ foo". +Solution: Don't expand the whole file name, only "~/". +Files: src/mark.c + +Patch 7.1.196 (extra) +Problem: Win32 GUI: "\n" in a tooltip doesn't cause a line break. (Erik + Falor) +Solution: Use the TTM_SETMAXTIPWIDTH message. +Files: src/gui_w32.c + +Patch 7.1.197 +Problem: Mac: "make install" doesn't work when prefix defined. +Solution: Pass different arguments to "make installruntime". (Jjgod Jiang) +Files: src/Makefile + +Patch 7.1.198 +Problem: Hang when using ":s/\n//gn". (Burak Gorkemli) +Solution: Set "skip_match". +Files: src/ex_cmds.c + +Patch 7.1.199 +Problem: Can't do command line completion for a specific file name + extension. +Solution: When the pattern ends in "$" don't add a star for completion and + remove the "$" before matching with file names. +Files: runtime/doc/cmdline.txt, src/ex_getln.c + +Patch 7.1.200 (after 7.1.177 and 7.1.182) +Problem: Compiler warnings for uninitialized variables. +Solution: Init variables. +Files: src/ex_cmds2.c, src/ex_docmd.c + +Patch 7.1.201 +Problem: When reading stdin 'fenc' and 'ff' are not set. +Solution: Set the options after reading stdin. (Ben Schmidt) +Files: src/fileio.c + +Patch 7.1.202 +Problem: Incomplete utf-8 byte sequence is not checked for validity. +Solution: Check the bytes that are present for being valid. (Ben Schmidt) +Files: src/mbyte.c + +Patch 7.1.203 +Problem: When 'virtualedit' is "onemore" then "99|" works but ":normal 99|" + doesn't. (Andy Wokula) +Solution: Check for "onemore" flag in check_cursor_col(). +Files: src/misc2.c + +Patch 7.1.204 (extra) +Problem: Win32: Using the example at 'balloonexpr' the balloon disappears + after four seconds and then comes back again. Also moves the + mouse pointer a little bit. (Yongwei Wu) +Solution: Set the autopop time to 30 seconds (the max value). (Sergey + Khorev) Move the mouse two pixels forward and one back to end up + in the same position (really!). +Files: src/gui_w32.c + +Patch 7.1.205 +Problem: Can't get the operator in an ":omap". +Solution: Add the "v:operator" variable. (Ben Schmidt) +Files: runtime/doc/eval.txt, src/eval.c, src/normal.c, src/vim.h + +Patch 7.1.206 +Problem: Compiler warnings when using MODIFIED_BY. +Solution: Add type casts. (Ben Schmidt) +Files: src/version.c + +Patch 7.1.207 +Problem: Netbeans: "remove" cannot delete one line. +Solution: Remove partial lines and whole lines properly. Avoid a memory + leak. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.1.208 +Problem: On Alpha get an unaligned access error. +Solution: Store the dictitem pointer before using it. (Matthew Luckie) +Files: src/eval.c + +Patch 7.1.209 +Problem: GTK: When using the netrw plugin and doing ":gui" Vim hangs. +Solution: Stop getting a selection after three seconds. This is a hack. +Files: src/gui_gtk_x11.c + +Patch 7.1.210 +Problem: Listing mapping for 0xdb fails when 'encoding' is utf-8. (Tony + Mechelynck) +Solution: Recognize K_SPECIAL KS_EXTRA KE_CSI as a CSI byte. +Files: src/mbyte.c + +Patch 7.1.211 +Problem: The matchparen plugin may take an unexpected amount of time, so + that it looks like Vim hangs. +Solution: Add a timeout to searchpair(), searchpairpos(), search() and + searchpos(). Use half a second timeout in the plugin. +Files: runtime/doc/eval.txt, runtime/plugin/matchparen.vim, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c, + src/proto/eval.pro, src/proto/ex_cmds2.pro, src/proto/search.pro, + src/search.c + +Patch 7.1.212 +Problem: Accessing a byte before a line. +Solution: Check that the column is 1 or more. (Dominique Pelle) +Files: src/edit.c + +Patch 7.1.213 +Problem: A ":tabedit" command that results in the "swap file exists" dialog + and selecting "abort" doesn't close the new tab. (Al Budden) +Solution: Pass "old_curwin" to do_exedit(). +Files: src/ex_docmd.c + +Patch 7.1.214 +Problem: ":1s/g\n\zs1//" deletes characters from the first line. (A Politz) +Solution: Start replacing in the line where the match starts. +Files: src/ex_cmds.c + +Patch 7.1.215 +Problem: It is difficult to figure out what syntax items are nested at a + certain position. +Solution: Add the synstack() function. +Files: runtime/doc/eval.txt, src/eval.c, src/proto/syntax.pro, + src/syntax.c + +Patch 7.1.216 +Problem: Variants of --remote-tab are not mentioned for "vim --help". +Solution: Display optional -wait and -silent. +Files: src/main.c + +Patch 7.1.217 +Problem: The "help-tags" tag may be missing from runtime/doc/tags when it + was generated during "make install". +Solution: Add the "++t" argument to ":helptags" to force adding the tag. +Files: runtime/doc/Makefile, runtime/doc/various.txt, src/ex_cmds.c, + src/ex_cmds.h + +Patch 7.1.218 +Problem: A syntax region without a "keepend", containing a region with + "extend" could be truncated at the end of the containing region. +Solution: Do not call syn_update_ends() when there are no keepend items. +Files: src/syntax.c + +Patch 7.1.219 (after 7.1.215) +Problem: synstack() returns situation after the current character, can't + see the state for a one-character region. +Solution: Don't update ending states in the requested column. +Files: runtime/doc/eval.txt, src/eval.c, src/hardcopy.c, + src/proto/syntax.pro, src/screen.c, src/spell.c, src/syntax.c + +Patch 7.1.220 +Problem: When a ")" or word movement command moves the cursor back from the + end of the line it may end up on the trail byte of a multibyte + character. It's also moved back when it isn't needed. +Solution: Add the adjust_cursor() function. +Files: src/normal.c + +Patch 7.1.221 +Problem: When inserting a "(", triggering the matchparen plugin, the + following highlighting may be messed up. +Solution: Before triggering the CursorMovedI autocommands update the display + to update the stored syntax stacks for the change. +Files: src/edit.c + +Patch 7.1.222 (after 7.1.217) +Problem: Wildcards in argument of ":helptags" are not expanded. (Marcel + Svitalsky) +Solution: Expand wildcards in the directory name. +Files: src/ex_cmds.c + +Patch 7.1.223 +Problem: glob() doesn't work properly when 'shell' is "sh" or "bash" and + the expanded name contains spaces, '~', single quotes and other + special characters. (Adri Verhoef, Charles Campbell) +Solution: For Posix shells define a vimglob() function to list the matches + instead of using "echo" directly. +Files: src/os_unix.c + +Patch 7.1.224 +Problem: When using "vim -F -o file1 file2" only one window is + right-to-left. Same for "-H". (Ben Schmidt) +Solution: use set_option_value() to set 'rightleft'. +Files: src/main.c + +Patch 7.1.225 +Problem: Using uninitialized value when XGetWMNormalHints() fails. +Solution: Check the return value. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.1.226 +Problem: Command line completion doesn't work when a file name contains a + '&' character. +Solution: Accept all characters in a file name, except ones that end a + command or white space. +Files: src/ex_docmd.c + +Patch 7.1.227 +Problem: Hang in syntax HL when moving over a ")". (Dominique Pelle) +Solution: Avoid storing a syntax state in the wrong position in the list of + remembered states. +Files: src/syntax.c + +Patch 7.1.228 +Problem: When 'foldmethod' is "indent" and a fold is created with ">>" it + can't be closed with "zc". (Daniel Shahaf) +Solution: Reset the "small" flag of a fold when adding a line to it. +Files: src/fold.c + +Patch 7.1.229 +Problem: A fold is closed when it shouldn't when 'foldmethod' is "indent" + and backspacing a non-white character so that the indent increases. +Solution: Keep the fold open after backspacing a character. +Files: src/edit.c + +Patch 7.1.230 +Problem: Memory leak when executing SourceCmd autocommands. +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.1.231 +Problem: When shifting lines the change is acted upon multiple times. +Solution: Don't have shift_line() call changed_bytes. +Files: src/edit.c, src/ops.c, src/proto/edit.pro, src/proto/ops.pro + +Patch 7.1.232 (after 7.1.207 and 7.1.211) +Problem: Compiler warnings with MSVC. +Solution: Add type casts. (Mike Williams) +Files: src/ex_cmds2.c, src/netbeans.c + +Patch 7.1.233 +Problem: Crash when doing Insert mode completion for a user defined + command. (Yegappan Lakshmanan) +Solution: Don't use the non-existing command line. +Files: src/ex_getln.c + +Patch 7.1.234 +Problem: When diff'ing three files the third one isn't displayed correctly. + (Gary Johnson) +Solution: Compute the size of diff blocks correctly when merging blocks. + Compute filler lines correctly when scrolling. +Files: src/diff.c + +Patch 7.1.235 +Problem: Pattern matching is slow when using a lot of simple patterns. +Solution: Avoid allocating memory by not freeing it when it's not so much. + (Alexei Alexandrov) +Files: src/regexp.c + +Patch 7.1.236 +Problem: When using 'incsearch' and 'hlsearch' a complicated pattern may + make Vim hang until CTRL-C is pressed. +Solution: Add the 'redrawtime' option. +Files: runtime/doc/options.txt, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/gui.c, src/misc1.c, src/normal.c, + src/option.c, src/quickfix.c, src/regexp.c, src/proto/regexp.pro, + src/proto/search.pro, src/search.c, src/screen.c, + src/option.h, src/spell.c, src/structs.h, src/syntax.c, src/tag.c, + src/vim.h + +Patch 7.1.237 +Problem: Compiler warning on an Alpha processor in Motif code. +Solution: Change a typecast. (Adri Verhoef) +Files: src/gui_motif.c + +Patch 7.1.238 +Problem: Using the 'c' flag with searchpair() may cause it to fail. Using + the 'r' flag doesn't work when 'wrapscan' is set. (A.Politz) +Solution: Only use the 'c' flag for the first search, not for repeating. + When using 'r' imply 'W'. (Antony Scriven) +Files: src/eval.c + +Patch 7.1.239 (after 7.1.233) +Problem: Compiler warning for sprintf() argument. +Solution: Add a typecast. (Nico Weber) +Files: src/ex_getln.c + +Patch 7.1.240 +Problem: When "gUe" turns a German sharp s into SS the operation stops + before the end of the word. Latin2 has the same sharp s but it's + not changed to SS there. +Solution: Make sure all the characters are operated upon. Detect the sharp + s in latin2. Also fixes that changing case of a multibyte + character that changes the byte count doesn't always work. +Files: src/ops.c + +Patch 7.1.241 +Problem: Focus change events not always ignored. (Erik Falor) +Solution: Ignore K_IGNORE in Insert mode in a few more places. +Files: src/edit.c + +Patch 7.1.242 (after 7.1.005) +Problem: "cib" doesn't work properly on "(x)". (Tim Pope) +Solution: Use ltoreq() instead of lt(). Also fix "ciT" on "<a>x</a>". +Files: src/search.c + +Patch 7.1.243 (after 7.1.240) +Problem: "U" doesn't work on all text in Visual mode. (Adri Verhoef) +Solution: Loop over all the lines to be changed. Add tests for this. +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.1.244 +Problem: GUI may have part of the command line cut off. +Solution: Don't round the number of lines up, always round down. + (Tony Houghton, Scott Dillard) +Files: src/gui.c + +Patch 7.1.245 +Problem: Pressing CTRL-\ three times causes Vim to quit. (Ranganath Rao). + Also for f CTRL-\ CTRL-\. +Solution: When going to cooked mode in mch_delay() set a flag to ignore + SIGQUIT. +Files: src/os_unix.c + +Patch 7.1.246 +Problem: Configure hangs when the man pager is something strange. (lorien) +Solution: Set MANPAGER and PAGER to "cat". (Micah Cowan) +Files: src/auto/configure, src/configure.in + +Patch 7.1.247 +Problem: When using Netbeans backspacing in Insert mode skips a character + now and then. (Ankit Jain) +Solution: Avoid calling netbeans_removed(), it frees the line pointer. + (partly by Dominique Pelle). +Files: src/misc1.c + +Patch 7.1.248 +Problem: Can't set the '" mark. Can't know if setpos() was successful. +Solution: Allow setting the '" mark with setpos(). Have setpos() return a + value indicating success/failure. +Files: runtime/doc/eval.txt, src/eval.c, src/mark.c + +Patch 7.1.249 +Problem: After "U" the cursor can be past end of line. (Adri Verhoef) +Solution: Adjust the cursor position in u_undoline(). +Files: src/undo.c + +Patch 7.1.250 +Problem: ":setglobal fenc=anything" gives an error message in a buffer + where 'modifiable' is off. (Ben Schmidt) +Solution: Don't give an error if 'modifiable' doesn't matter. +Files: src/option.c + +Patch 7.1.251 +Problem: Using freed memory when spell checking enabled. +Solution: Obtain the current line again after calling spell_move_to(). + (Dominique Pelle) +Files: src/screen.c + +Patch 7.1.252 (after 7.1.243) +Problem: Test 39 fails when the environment has a utf-8 locale. (Dominique + Pelle) +Solution: Force 'encoding' to be latin1. +Files: src/testdir/test39.in + +Patch 7.1.253 +Problem: ":sort" doesn't work in a one line file. (Patrick Texier) +Solution: Don't sort if there is only one line. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.254 +Problem: Tests 49 and 55 fail when the locale is French. +Solution: Using C messages for test 49. Filter the error message in test 55 + such that it works when the number is halfway the message. +Files: src/testdir/test49.in, src/testdir/test55.in + +Patch 7.1.255 +Problem: Vim doesn't support utf-32. (Yongwei Wu) +Solution: Add aliases for utf-32, it's the same as ucs-4. +Files: src/mbyte.c + +Patch 7.1.256 +Problem: findfile() also returns directories. +Solution: Cleanup the code for finding files and directories in a list of + directories. Remove the ugly global ff_search_ctx. +Files: src/eval.c, src/misc2.c, src/vim.h, src/tag.c + +Patch 7.1.257 +Problem: Configure can't always find the Tcl header files. +Solution: Also look in /usr/local/include/tcl$tclver and + /usr/include/tcl$tclver (James Vega) +Files: src/auto/configure, src/configure.in + +Patch 7.1.258 +Problem: Crash when doing "d/\n/e" and 'virtualedit' is "all". (Andy Wokula) +Solution: Avoid that the column becomes negative. Also fixes other problems + with the end of a pattern match is in column zero. (A.Politz) +Files: src/search.c + +Patch 7.1.259 +Problem: Cursor is in the wrong position when 'rightleft' is set, + 'encoding' is "utf-8" and on an illegal byte. (Dominique Pelle) +Solution: Only put the cursor in the first column when actually on a + double-wide character. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.1.260 +Problem: Cursor positioning problem after ^@ wrapping halfway when + 'encoding' is utf-8. +Solution: Only count a position for printable characters. (partly by + Yukihiro Nakadaira) +Files: src/charset.c + +Patch 7.1.261 +Problem: When a 2 byte BOM is detected Vim uses UCS-2, which doesn't work + for UTF-16 text. (Tony Mechelynck) +Solution: Default to UTF-16. +Files: src/fileio.c, src/testdir/test42.ok + +Patch 7.1.262 +Problem: Can't get the process ID of Vim. +Solution: Implement getpid(). +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.1.263 +Problem: The filetype can consist of two dot separated names. This works + for syntax and ftplugin, but not for indent. (Brett Stahlman) +Solution: Use split() and loop over each dot separated name. +Files: runtime/indent.vim + +Patch 7.1.264 +Problem: Crash when indenting lines. (Dominique Pelle) +Solution: Set the cursor column when changing the cursor line. +Files: src/ops.c, src/misc1.c + +Patch 7.1.265 +Problem: When 'isfname' contains a space, cmdline completion can hang. + (James Vega) +Solution: Reset the "len" variable. +Files: src/ex_docmd.c + +Patch 7.1.266 +Problem: When the version string returned by the terminal contains + unexpected characters, it is used as typed input. (James Vega) +Solution: Assume the escape sequence ends in a letter. +Files: src/term.c + +Patch 7.1.267 +Problem: When changing folds cursor may be positioned in the wrong place. +Solution: Call changed_window_setting_win() instead of + changed_window_setting(). +Files: src/fold.c + +Patch 7.1.268 +Problem: Always shows "+" at end of screen line with: ":set + listchars=eol:$,extends:+ nowrap list cursorline" (Gary Johnson) +Solution: Check for lcs_eol_one instead of lcs_eol. +Files: src/screen.c + +Patch 7.1.269 +Problem: The matchparen plugin has an arbitrary limit for the number of + lines to look for a match. +Solution: Rely on the searchpair() timeout. +Files: runtime/plugin/matchparen.vim + +Patch 7.1.270 +Problem: ":?foo?" matches in current line since patch 7.1.025. (A.Politz) +Solution: Remove the SEARCH_START flag. +Files: src/ex_docmd.c, src/search.c + +Patch 7.1.271 +Problem: In a Vim build without autocommands, checking a file that was + changed externally causes the current buffer to be changed + unexpectedly. (Karsten Hopp) +Solution: Store "curbuf" instead of "buf". +Files: src/fileio.c + +Patch 7.1.272 +Problem: The special buffer name [Location List] is not used for a buffer + displayed in another tab page. +Solution: Use FOR_ALL_TAB_WINDOWS instead of FOR_ALL_WINDOWS. (Hiroaki + Nishihara) +Files: src/buffer.c + +Patch 7.1.273 +Problem: When profiling on Linux Vim exits early. (Liu Yubao) +Solution: When profiling don't exit on SIGPROF. +Files: src/Makefile, src/os_unix.c + +Patch 7.1.274 (after 7.1.272) +Problem: Compiler warning for optimized build. +Solution: Init win to NULL. +Files: src/buffer.c + +Patch 7.1.275 (extra) +Problem: Mac: ATSUI and 'antialias' don't work properly together. +Solution: Fix this and the input method. (Jjgod Jiang) +Files: src/vim.h, src/gui_mac.c + +Patch 7.1.276 +Problem: "gw" uses 'formatexpr', even though the docs say it doesn't. +Solution: Don't use 'formatexpr' for "gw". +Files: src/vim.h, src/edit.c, src/ops.c, src/proto/ops.pro + +Patch 7.1.277 +Problem: Default for 'paragraphs' misses some items (Colin Watson) +Solution: Add TP, HP, Pp, Lp and It to 'paragraphs'. (James Vega) +Files: runtime/doc/options.txt, src/option.c + +Patch 7.1.278 (extra, after 7.1.275) +Problem: Build failure when USE_CARBONKEYHANDLER is not defined. +Solution: Remove #ifdef. +Files: src/gui_mac.c + +Patch 7.1.279 +Problem: When using cscope temporary files are left behind. +Solution: Send the quit command to cscope and give it two seconds to exit + nicely before killing it. (partly by Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.1.280 (after 7.1.275) +Problem: Mac: build problems when not using multibyte feature. (Nicholas + Stallard) +Solution: Don't define USE_IM_CONTROL when not using multibyte. +Files: src/vim.h + +Patch 7.1.281 (after 7.1.279) +Problem: sa.sa_mask is not initialized. Cscope may not exit. +Solution: Use sigemptyset(). Use SIGKILL instead of SIGTERM. (Dominique + Pelle) +Files: src/if_cscope.c + +Patch 7.1.282 (extra) +Problem: Win64: Edit with Vim context menu isn't installed correctly. + Compiler warnings and a few other things. +Solution: Add [ and ] to entry of class name. Use UINT_PTR instead of UINT. + And fixes for other things. (George V. Reilly) +Files: src/GvimExt/Makefile, src/dosinst.c, src/if_ole.cpp, src/if_ole.h, + src/if_ole.idl, src/INSTALLpc.txt, src/Make_mvc.mak, + src/os_win32.c, + +Patch 7.1.283 +Problem: Non-extra part for 7.1.282. +Solution: Various changes. +Files: src/ex_docmd.c, src/globals.h, src/if_cscope.c, src/main.c, + src/mark.c, src/netbeans.c, src/popupmnu.c, src/vim.h, + src/window.c + +Patch 7.1.284 +Problem: Compiler warnings for functions without prototype. +Solution: Add the function prototypes. (Patrick Texier) +Files: src/eval.c, src/quickfix.c + +Patch 7.1.285 (extra) +Problem: Mac: dialog hotkeys don't work. +Solution: Add hotkey support. (Dan Sandler) +Files: src/gui_mac.c + +Patch 7.1.286 (after 7.1.103) +Problem: "w" at the end of the buffer moves the cursor past the end of the + line. (Markus Heidelberg) +Solution: Move the cursor back from the NUL when it was moved forward. +Files: src/normal.c + +Patch 7.1.287 +Problem: Crash when reversing a list after using it. (Andy Wokula) +Solution: Update the pointer to the last used element. (Dominique Pelle) +Files: src/eval.c + +Patch 7.1.288 (after 7.1.281) +Problem: Cscope still leaves behind temp files when using gvim. +Solution: When getting the ECHILD error loop for a while until cscope exits. + (Dominique Pelle) +Files: if_cscope.c + +Patch 7.1.289 +Problem: When EXITFREE is defined and 'acd' is set freed memory is used. + (Dominique Pelle) +Solution: Reset p_acd before freeing all buffers. +Files: src/misc2.c + +Patch 7.1.290 +Problem: Reading bytes that were not written when spell checking and a line + has a very large indent. +Solution: Don't copy the start of the next line when it only contains + spaces. (Dominique Pelle) +Files: src/spell.c + +Patch 7.1.291 (after 7.1.288) +Problem: Compiler warning. +Solution: Change 50 to 50L. +Files: src/if_cscope.c + +Patch 7.1.292 +Problem: When using a pattern with "\@<=" the submatches can be wrong. + (Brett Stahlman) +Solution: Save the submatches when attempting a look-behind match. +Files: src/regexp.c + +Patch 7.1.293 +Problem: Spell checking considers super- and subscript characters as word + characters. +Solution: Recognize the Unicode super and subscript characters. +Files: src/spell.c + +Patch 7.1.294 +Problem: Leaking memory when executing a shell command. +Solution: Free memory when not able to save for undo. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.1.295 +Problem: Vimtutor only works with vim, not gvim. +Solution: Add the -g flag to vimtutor. (Dominique Pelle) Add gvimtutor. +Files: src/Makefile, src/gvimtutor, src/vimtutor, runtime/doc/vimtutor.1 + +Patch 7.1.296 +Problem: SELinux is not supported. +Solution: Detect the selinux library and use mch_copy_sec(). (James Vega) +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/fileio.c, src/memfile.c, src/os_unix.c, src/proto/os_unix.pro + +Patch 7.1.297 +Problem: When using the search/replace dialog the parenmatch highlighting + can be wrong. (Tim Duncan) +Solution: In the GUI redraw function invoke the CursorMoved autocmd. +Files: src/gui.c + +Patch 7.1.298 (after 7.1.295) +Problem: src/gvimtutor is not distributed. +Solution: Add it to the list of distributed files. +Files: Filelist + +Patch 7.1.299 +Problem: Filetype detection doesn't work properly for file names ending in + a part that is ignored and contain a space or other special + characters. +Solution: Escape the special characters using the new fnameescape function. +Files: runtime/doc/eval.txt, runtime/filetype.vim, src/eval.c, + src/ex_getln.c, src/proto/ex_getln.pro, src/vim.h + +Patch 7.1.300 +Problem: Value of asmsyntax argument isn't checked for valid characters. +Solution: Only accepts letters and digits. +Files: runtime/filetype.vim + +Patch 7.1.301 +Problem: When the "File/Save" menu is used in Insert mode, a tab page label + is not updated to remove the "+". +Solution: Call draw_tabline() from showruler(). (Bjorn Winckler) +Files: src/screen.c + +Patch 7.1.302 (after 7.1.299) +Problem: Compilation error on MS-Windows. +Solution: Don't use xp_shell when it's not defined. +Files: src/ex_getln.c + +Patch 7.1.303 (after 7.1.302) +Problem: Compilation error on MS-Windows, again. +Solution: Declare p. +Files: src/ex_getln.c + +Patch 7.1.304 +Problem: Shortpath_for_invalid_fname() does not work correctly and is + unnecessary complex. +Solution: Clean up shortpath_for_invalid_fname(). (mostly by Yegappan + Lakshmanan) +Files: src/eval.c + +Patch 7.1.305 +Problem: Editing a compressed file with special characters in the name + doesn't work properly. +Solution: Escape special characters. +Files: runtime/autoload/gzip.vim + +Patch 7.1.306 +Problem: Some Unicode characters are handled like word characters while + they are symbols. +Solution: Adjust the table for Unicode classification. +Files: src/mbyte.c + +Patch 7.1.307 +Problem: Many warnings when compiling with Python 2.5. +Solution: Use ssize_t instead of int for some types. (James Vega) +Files: src/if_python.c + +Patch 7.1.308 +Problem: When in readonly mode ":options" produces an error. +Solution: Reset 'readonly'. (Gary Johnson) +Files: runtime/optwin.vim + +Patch 7.1.309 +Problem: Installing and testing with a shadow directory doesn't work. + (James Vega) +Solution: Add "po" to the list of directories to link. Also link the Vim + scripts in testdir. And a few more small fixes. +Files: src/Makefile + +Patch 7.1.310 +Problem: Incomplete utf-8 byte sequence at end of the file is not detected. + Accessing memory that wasn't written. +Solution: Check the last bytes in the buffer for being a valid utf-8 + character. (mostly by Ben Schmidt) + Also fix that the reported line number of the error was wrong. +Files: src/fileio.c + +Patch 7.1.311 +Problem: Compiler warning for missing sentinel in X code. +Solution: Change 0 to NULL. (Markus Heidelberg) +Files: src/mbyte.c + +Patch 7.1.312 +Problem: The .po files have mistakes in error numbers. +Solution: Search for these mistakes in the check script. (Dominique Pelle) +Files: src/po/check.vim + +Patch 7.1.313 +Problem: When the netbeans interface setModified call is used the status + lines and window title are not updated. +Solution: Redraw the status lines and title. (Philippe Fremy) +Files: src/netbeans.c + +Patch 7.1.314 +Problem: The value of 'pastetoggle' is written to the session file without + any escaping. (Randall Hansen) +Solution: Use put_escstr(). (Ben Schmidt) +Files: src/option.c + +Patch 7.1.315 +Problem: Crash with specific search pattern using look-behind match. + (Andreas Politz) +Solution: Also save the value of "need_clear_subexpr". +Files: src/regexp.c + +Patch 7.1.316 +Problem: When 'cscopetag' is set ":tag" gives an error message instead of + going to the next tag in the tag stack. +Solution: Don't call do_cstag() when there is no argument. (Mark Goldman) +Files: src/ex_docmd.c + +Patch 7.1.317 +Problem: Compiler warnings in Motif calls. +Solution: Change zero to NULL. (Dominique Pelle) +Files: src/gui_motif.c + +Patch 7.1.318 +Problem: Memory leak when closing xsmp connection. Crash on exit when + using Lesstif. +Solution: Don't close the X display to work around a Lesstif bug. Free + clientid. Also fix a leak for Motif and Athena. (Dominique Pelle) +Files: src/gui_x11.c, src/os_unix.c + +Patch 7.1.319 +Problem: When a register has an illegal utf-8 sequence, pasting it on the + command line causes an illegal memory access. +Solution: Use mb_cptr2char_adv(). (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.1.320 (extra) +Problem: Win64: Warnings while compiling Python interface. +Solution: Use PyInt in more places. Also update version message for the + console. (George Reilly) +Files: src/if_python.c, src/version.c + +Patch 7.1.321 (extra) +Problem: Win32 / Win64: Install file is outdated. +Solution: Update the text for recent compiler. (George Reilly) +Files: src/INSTALLpc.txt + +Patch 7.1.322 +Problem: Can't get start of Visual area in an <expr> mapping. +Solution: Add the 'v' argument to getpos(). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.1.323 +Problem: Test 19 fails with some termcaps. (Dominique Pelle) +Solution: Set the t_kb and t_kD termcap values. +Files: src/testdir/test19.in, src/testdir/test38.in + +Patch 7.1.324 +Problem: File name path length on Unix is limited to 1024. +Solution: Use PATH_MAX when it's more than 1000. +Files: src/os_unix.h + +Patch 7.1.325 +Problem: When editing a command line that's longer than available space in + the window, the characters at the end are in reverse order. +Solution: Increment the insert position even when the command line doesn't + fit. (Ingo Karkat) +Files: src/ex_getln.c + +Patch 7.1.326 +Problem: ":s!from!to!" works, but ":smagic!from!to!" doesn't. It sees the + "!" as a flag to the command. Same for ":snomagic". (Johan Spetz) +Solution: When checking for a forced command also ignore ":smagic" and + ":snomagic". (Ian Kelling) +Files: src/ex_docmd.c + +Patch 7.1.327 +Problem: The GUI tutor is installed when there is no GUI version. +Solution: Only install gvimtutor when building a GUI version. +Files: src/Makefile + +Patch 7.1.328 +Problem: Crash when using Cygwin and non-posix path name in tags file. +Solution: Use separate buffer for posix path. (Ben Schmidt) +Files: src/os_unix.c + +Patch 7.1.329 +Problem: When the popup menu is removed a column of cells, the right half + of double-wide characters, may not be redrawn. +Solution: Check if the right half of a character needs to be redrawn. + (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.1.330 +Problem: Reading uninitialized memory when using Del in replace mode. +Solution: Use utfc_ptr2len_len() instead of mb_ptr2len(). (Dominique Pelle) +Files: src/misc1.c + + +Warning for missing sentinel in gui_xmldlg.c. (Dominique Pelle) + +A search offset from the end of a match didn't work properly for multibyte +characters. (Yukihiro Nakadaira) + +When displaying the value of 'key' don't show "*****" when the value is empty. +(Ben Schmidt) + +Internal error when compiled with EXITFREE and using the nerd_tree plugin. +Set last_msg_hist to NULL when history becomes empty. Call +free_all_functions() after garbage collection. (Dominique Pelle) + +GTK with XIM: <S-Space> does not work. (Yukihiro Nakadaira) + +Some shells do not support "echo -n", which breaks glob(). Use "echo" instead +of "echo -n $1; echo". (Gary Johnson) + +"echo 22,44" printed "22" on top of the command, the error messages caused +the rest not to be cleared. Added the need_clr_eos flag. + +Netbeans events are handled while updating the screen, causing a crash. +Change the moment when events are handled. Rename nb_parse_messages() to +netbeans_parse_messages(). (Xavier de Gaye) + +Test 11 was broken after patch 7.1.186 on Win32 console. (Daniel Shahaf) +Use shellescape() on the file name. + +IM was turned off in im_preedit_end_cb() for no good reason. (Takuhiro +Nishioka) + +A corrupted spell file could cause Vim to use lots of memory. Better +detection for running into the end of the file. (idea from James Vega) + +Mac: Included a patch to make it build with GTK. Moved language init to +mac_lang_init() function. (Ben Schmidt) + +Problem with 'wildmenu' after ":lcd", up/down arrows don't work. (Erik Falor) + +Fix configure.in to avoid "implicitly declared" warnings when running +configure. + +Fixed a memory leak when redefining a keymap. (Dominique Pelle) + +Setting 'pastetoggle' to "jj" didn't work. + +'ic' and 'smartcase' don't work properly when using \%V in a search pattern. +(Kana Natsuno) + +Patch 7.2a.001 +Problem: On some systems X11/Xlib.h exists (from X11-dev package) but + X11/Intrinsic.h does not (in Xt-dev package). This breaks the + build. Also, on Solaris 9 sys/ptem.h isn't found. +Solution: Have configure only accept X11 when X11/Intrinsic.h exists. + Check for sys/ptem.h while including sys/stream.h. (Vladimir + Marek) +Files: src/auto/configure, src/configure.in + +Patch 7.2a.002 +Problem: getbufvar(N, "") gets the dictionary of the current buffer instead + of buffer N. +Solution: Set curbuf before calling find_var_in_ht(). (Kana Natsuno) +Files: src/eval.c + +Patch 7.2a.003 +Problem: Leaking memory when using ":file name" and using access control + lists. +Solution: Invoke mch_free_acl() in vim_rename(). (Dominique Pelle) +Files: src/fileio.c + +Patch 7.2a.004 +Problem: Some systems can't get spell files by ftp. +Solution: Use http when it looks like it's possible. (James Vega) +Files: runtime/autoload/spellfile.vim + +Patch 7.2a.005 +Problem: A few error messages use confusing names. Misspelling. +Solution: Change "dissallows" to "disallows". (Dominique Pelle) Change + "number" to "Number". +Files: src/eval.c, src/fileio.c + +Patch 7.2a.006 +Problem: Reading past NUL in a string. +Solution: Check for invalid utf-8 byte sequence. (Dominique Pelle) +Files: src/charset.c + +Patch 7.2a.007 +Problem: ":let v = 1.2.3" was OK in Vim 7.1, now it gives an error. +Solution: Don't look for a floating point number after the "." operator. +Files: src/eval.c + +Patch 7.2a.008 +Problem: printf("%g", 1) doesn't work. +Solution: Convert Number to Float when needed. +Files: src/message.c + +Patch 7.2a.009 +Problem: cygwin_conv_to_posix_path() does not specify buffer size. +Solution: Use new Cygwin function: cygwin_conv_path(). (Corinna Vinschen) +Files: src/main.c, src/os_unix.c + +Patch 7.2a.010 +Problem: When a file name has an illegal byte sequence Vim may read + uninitialised memory. +Solution: Don't use UTF_COMPOSINGLIKE() on an illegal byte. In + msg_outtrans_len_attr() use char2cells() instead of ptr2cells(). + In utf_ptr2char() don't check second byte when first byte is + illegal. (Dominique Pelle) +Files: src/mbyte.c, src/message.c + +Patch 7.2a.011 +Problem: The Edit/Startup Settings menu doesn't work. +Solution: Expand environment variables. (Ben Schmidt) +Files: runtime/menu.vim + +Patch 7.2a.012 +Problem: Compiler warnings for casting int to pointer. +Solution: Add cast to long in between. (Martin Toft) +Files: src/gui_gtk_x11.c + +Patch 7.2a.013 +Problem: shellescape() does not escape "%" and "#" characters. +Solution: Add find_cmdline_var() and use it when the second argument to + shellescape() is non-zero. +Files: runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/proto/misc2.pro, src/misc2.c + +Patch 7.2a.014 +Problem: Problem with % in message. +Solution: Put % in single quotes. +Files: src/eval.c + +Patch 7.2a.015 (after 7.2a.010) +Problem: Misaligned messages. +Solution: Compute length of unprintable chars correctly. +Files: src/message.c + +Patch 7.2a.016 +Problem: Using CTRL-W v in the quickfix window results in two quickfix + windows, which is not allowed. ":tab split" should be allowed to + open a new quickfix window in another tab. +Solution: For CTRL-W v instead of splitting the window open a new one. + When using ":tab" do allow splitting the quickfix window (was + already included in patch 7.2a.013). +Files: src/window.c + +Patch 7.2a.017 +Problem: ":doautoall" executes autocommands for all buffers instead of just + for loaded buffers. +Solution: Change "curbuf" to "buf". +Files: src/fileio.c + +Patch 7.2a.018 +Problem: Compiler warnings when compiling with Gnome. (Tony Mechelynck) +Solution: Add type casts. +Files: src/gui_gtk_x11.c + +Patch 7.2a.019 +Problem: ":let &g:tw = 44" sets the local option value. (Cyril Slobin) +Solution: Use get_varp_scope() instead of get_varp(). (Ian Kelling) +Files: src/option.c + +There is no way to avoid adding /usr/local/{include|lib} to the build +commands. Add the --with-local-dir argument to configure. (Michael +Haubenwallner) + +When using CTRL-D after ":help", the number of matches could be thousands. +Restrict to TAG_MANY to avoid this taking too long. (Ian Kelling) + +The popup menu could be placed at a weird location. Caused by w_wcol computed +by curs_columns(). (Dominique Pelle) + +Overlapping STRCPY() arguments when using %r item in 'errorformat'. Use +STRMOVE() instead. (Ralf Wildenhues) + +Mac: On Leopard gvim, when using the mouse wheel nothing would happen until +another event occurs, such as moving the mouse. Then the recorded scrolling +would take place all at once. (Eckehard Berns) + +Solution for cursor color not reflecting IM status for GTK 2. Add +preedit_is_active flag. (SungHyun Nam) + +filereadable() can hang on a FIFO on Linux. Use open() instead of fopen(), +with O_NONBLOCK. (suggested by Lars Kotthoff) + +Included patch to support Perl 5.10. (Yasuhiro Matsumoto) + +When files are dropped on gvim while the screen is being updated, ignore the +drop command to avoid freeing memory that is being used. + +In a terminal, when drawing the popup menu over double-wide characters, half +characters may not be cleared properly. (Yukihiro Nakadaira) + +The #ifdef for including "vimio.h" was inconsistent. In a few files it +depended on MSWIN, which isn't defined until later. + +Patch 7.2b.001 +Problem: Compilation problem: mb_fix_col() missing with multibyte feature + but without GUI or clipboard. +Solution: Remove #ifdef. +Files: src/mbyte.c + +Patch 7.2b.002 +Problem: Compiler warnings for signed/unsigned mismatch. +Solution: Add type casts. +Files: src/screen.c + +Patch 7.2b.003 +Problem: Still a compilation problem, check_col() and check_row() missing. +Solution: Add FEAT_MBYTE to the #if. +Files: src/ui.c + +Patch 7.2b.004 +Problem: Trying to free memory for a static string when using ":helpgrep". + (George Reilly) +Solution: Set 'cpo' to empty_option instead of an empty string. Also for + searchpair() and substitute(). +Files: src/quickfix.c, src/eval.c + +Patch 7.2b.005 +Problem: The special character "!" isn't handled properly in shellescape(). + (Jan Minar) +Solution: Escape "!" when using a "csh" like shell and with + shellescape(s, 1). Twice for both. Also escape <NL>. +Files: src/misc2.c + +Patch 7.2b.006 +Problem: Reading past end of string when reading info from tags line. +Solution: Break the loop when encountering a NUL. (Dominique Pelle) +Files: src/tag.c + +Patch 7.2b.007 +Problem: Part of a message cannot be translated. +Solution: Put _() around the message. +Files: src/search.c + +Patch 7.2b.008 +Problem: A few filetypes are not detected or not detected properly. +Solution: Add filetype detection patterns. (Nikolai Weibull) +Files: runtime/filetype.vim + +Patch 7.2b.009 +Problem: Reading past end of screen line. (Epicurus) +Solution: Avoid going past the value of Columns. +Files: src/screen.c + +Patch 7.2b.010 +Problem: ":mksession" doesn't work for ":map , foo", ":sunmap ,". (Ethan + Mallove) +Solution: Check for "nxo", "nso" and other strange mapping combinations. +Files: src/getchar.c + +Patch 7.2b.011 +Problem: Configure for TCL ends up with include file in compiler command. + (Richard Hogg) +Solution: Delete items from $TCL_DEFS that do not start with a dash. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.012 +Problem: Build failure with +multi_byte but without +diff. +Solution: Add #ifdef. (Patrick Texier) +Files: src/main.c + +Patch 7.2b.013 +Problem: Build fails with tiny features and Perl. (Dominique Pelle) +Solution: Define missing functions. Also when compiling Python. +Files: src/if_perl.xs, src/if_python.c + +Patch 7.2b.014 +Problem: Configure uses an unsafe temp file to store commands. +Solution: Create the temp file in local directory. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.015 +Problem: Build fails on Mac when using Aap. +Solution: Fix typo in configure script. +Files: src/auto/configure, src/configure.in + +Patch 7.2b.016 +Problem: Build fails with normal features but without +autocmd. +Solution: Fix #ifdefs. (Ian Kelling) +Files: src/eval.c, src/ex_cmds.c, src/quickfix.c, src/option.c, + src/ex_docmd.c + +Patch 7.2b.017 +Problem: "vim -O foo foo" results in only one window. (Zdenek Sekera) +Solution: Handle result of ATTENTION prompt properly. (Ian Kelling) +Files: src/main.c + +Patch 7.2b.018 +Problem: When doing command line completion on a file name for a csh-like + shell argument a '!' character isn't escaped properly. +Solution: Add another backslash. +Files: src/ex_getln.c, src/misc2.c, src/proto/misc2.pro, src/screen.c + +Patch 7.2b.019 (extra) +Problem: Win32: Various compiler warnings. +Solution: Use __w64 attribute. Comment-out unused parameters. Adjust a few + #ifdefs. (George Reilly) +Files: src/gui_w48.c, src/GvimExt/gvimext.cpp, src/Make_mvc.mak, + src/os_mswin.c, src/os_win32.c, src/vim.h + +Patch 7.2b.020 +Problem: ":sort n" doesn't handle negative numbers. (James Vega) +Solution: Include '-' in the number. +Files: src/charset.c, src/ex_cmds.c + +Patch 7.2b.021 +Problem: Reloading doesn't read the BOM correctly. (Steve Gardner) +Solution: Accept utf-8 BOM when specified file encoding is utf-8. +Files: src/fileio.c + +Patch 7.2b.022 +Problem: When using ":normal" while updating the status line the count of + an operator is lost. (Dominique Pelle) +Solution: Save and restore "opcount". +Files: src/ex_docmd.c, src/globals.h, src/normal.c + +Patch 7.2b.023 +Problem: Crash when using the result of synstack(0,0). (Matt Wozniski) +Solution: Check for v_list to be NULL in a few more places. +Files: src/eval.c + +Patch 7.2b.024 +Problem: Using ":gui" while the netrw plugin is active causes a delay in + updating the display. +Solution: Don't check for terminal codes when starting the GUI. +Files: src/term.c + +Patch 7.2b.025 +Problem: When the CursorHold event triggers a pending count is lost. + (Juergen Kraemer) +Solution: Save the counts and restore them. +Files: src/normal.c, src/structs.h + +Patch 7.2b.026 +Problem: The GTK 2 file chooser causes the ~/.recently-used.xbel file to be + written over and over again. This may cause a significant + slowdown. (Guido Berhoerster) +Solution: Don't use the GTK 2 file chooser. +Files: src/gui_gtk.c + +Patch 7.2b.027 +Problem: Memory leak for Python, Perl, etc. script command with end marker. +Solution: Free the memory of the end marker. (Andy Kittner) +Files: src/ex_getln.c + +Patch 7.2b.028 +Problem: Reading uninitialized memory when doing ":gui -f". (Dominique + Pelle) +Solution: Don't position the cursor when the screen size is invalid. +Files: src/gui.c + +Patch 7.2b.029 +Problem: ":help a" doesn't jump to "a" tag in docs. (Tony Mechelynck) +Solution: Get all tags and throw away more than TAG_MANY after sorting. + When there is no argument find matches for "help" to avoid a long + delay. +Files: src/ex_cmds.c, src/ex_getln.c + +Patch 7.2b.030 +Problem: When changing the value of t_Co from 8 to 16 the Visual + highlighting keeps both reverse and a background color. +Solution: Remove the attribute when setting the default highlight color. + (Markus Heidelberg) +Files: src/syntax.c + +Error when cancelling completion menu and auto-formatting. (fixed by Ian +Kelling) + +Patch 7.2c.001 +Problem: ":let x=[''] | let x += x" causes hang. (Matt Wozniski) +Solution: Only insert elements up to the original length of the List. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2c.002 +Problem: fnameescape() doesn't handle a leading '+' or '>'. (Jan Minar) +Solution: Escape a leading '+' and '>'. And a single '-'. +Files: runtime/doc/eval.txt, src/ex_getln.c + +Patch 7.2c.003 +Problem: Searching for "foo\%[bar]\+" gives a "Corrupted regexp program" + error. (Joachim Hofmann) +Solution: Mark the \%[] item as not being simple. +Files: src/regexp.c + +On Vista access to system directories is virtualized. (Michael Mutschler) +Adjusted the manifest file to avoid this. (George Reilly) + +Memory leak when using CTRL-C to cancel listing the jump list. (Dominique +Pelle) + +Mac: Could not build with Perl interface. + +============================================================================== +VERSION 7.3 *version-7.3* *version7.3* + +This section is about improvements made between version 7.2 and 7.3. + +This release has hundreds of bug fixes and there are a few new features. The +most notable new features are: + + +Persistent undo *new-persistent-undo* +--------------- + +Store undo information in a file. Can undo to before when the file was read, +also for unloaded buffers. See |undo-persistence| (partly by Jordan Lewis) + +Added the ":earlier 1f" and ":later 1f" commands. +Added file save counter to undo information. +Added the |undotree()| and |undofile()| functions. + +Also added the 'undoreload' option. This makes it possible to save the +current text when reloading the buffer, so that the reload can be undone. + + +More encryption *new-more-encryption* +--------------- + +Support for Blowfish encryption. Added the 'cryptmethod' option. +Mostly by Mohsin Ahmed. + +Also encrypt the text in the swap file and the undo file. + + +Conceal text *new-conceal* +------------ + +Added the |+conceal| feature. (Vince Negri) +This allows hiding stretches of text, based on syntax highlighting. +It also allows replacing a stretch of text by a character |:syn-cchar|. +The 'conceallevel' option specifies what happens with text matching a syntax +item that has the conceal attribute. +The 'concealcursor' option specifies what happens in the cursor line. + +The help files conceal characters used to mark tags and examples. + +Added the |synconcealed()| function and use it for :TOhtml. (Benjamin Fritz) + +Added the 'cursorbind' option, keeps the cursor in two windows with the same +text in sync. + + +Lua interface *new-lua* +------------- + +Added the |Lua| interface. (Luis Carvalho) + + +Python3 interface *new-python3* +----------------- + +Added the Python3 interface. It exists next to Python 2.x, both can be used +at the same time. See |python3| (Roland Puntaier) + + +Changed *changed-7.3* +------- + +The MS-Windows installer no longer requires the user to type anything in the +console windows. The installer now also works on 64 bit systems, including +the "Edit with Vim" context menu. +The gvim executable is 32 bits, the installed gvimext.dll is either a 32 or 64 +bit version. (mostly by George Reilly) +Made the DOS installer work with more compilers. +The MS-Windows big gvim is now built with Python 2.7 and 3.1.2, Perl 5.12 and +Ruby 1.9.1. You need the matching .dll files to use them. + +The extra and language files are no longer distributed separately. +The source files for all systems are included in one distribution. + +After using ":recover" or recovering a file in another way, ":x" and "ZZ" +didn't save what you see. This could result in work being lost. Now the text +after recovery is compared to the original file contents. When they differ +the buffer is marked as modified. + +When Vim is exiting because of a deadly signal, when v:dying is 2 or more, +VimLeavePre, VimLeave, BufWinLeave and BufUnload autocommands are not +executed. + +Removed support for GTK 1. It was no longer maintained and required a lot of +#ifdefs in the source code. GTK 2 should be available for every system. +(James Vega) + +It is no longer allowed to set the 'encoding' option from a modeline. It +would corrupt the text. (Patrick Texier) + +Renamed runtime/spell/fixdup to runtime/spell/fixdup.vim. + +Removed obsolete Mac code. + +Updated spell files for Ubuntu locale names. + +Switched from autoconf 2.63 to 2.65. + +Removed Mupad indent and ftplugin files, they are not useful. + +The maximum number of messages remembered in the history is now 200 (was 100). + + +Added *added-7.3* +----- + +Added the 'relativenumber' option. (Markus Heidelberg) + +Added the 'colorcolumn' option: highlight one or more columns in a window. +E.g. to highlight the column after 'textwidth'. (partly by Gregor Uhlenheuer) + +Added support for NetBeans in a terminal. Added |:nbstart| and |:nbclose|. +(Xavier de Gaye) + +More floating point functions: |acos()|, |asin()|, |atan2()|, |cosh()|, +|exp()|, |fmod()|, |log()|, |sinh()|, |tan()|, |tanh()|. (Bill McCarthy) + +Added the |gettabvar()| and |settabvar()| functions. (Yegappan Lakshmanan) + +Added the |strchars()|, |strwidth()| and |strdisplaywidth()| functions. + +Support GDK_SUPER_MASK for GTK on Mac. (Stephan Schulz) + +Made CTRL and ALT modifier work for mouse wheel. (Benjamin Haskell) + +Added support for horizontal scroll wheel. (Bjorn Winckler) + +When the buffer is in diff mode, have :TOhtml create HTML to show the diff +side-by-side. (Christian Brabandt) + +Various improvements to ":TOhtml" and the 2html.vim script. (Benjamin Fritz) + +Add the 'L' item to 'cinoptions'. (Manuel Konig) + +Improve Javascript indenting. Add "J" flag to 'cinoptions'. (Hari Kumar G) + +Mac: Support disabling antialias. (LC Mi) + +Mac: Add clipboard support in the Mac console. (Bjorn Winckler) + +Make it possible to drag a tab page label to another position. (Paul B. Mahol) + +Better implementation of creating the Color Scheme menu. (Juergen Kraemer) + +In Visual mode with 'showcmd' display the number of bytes and characters. + +Allow synIDattr() getting GUI attributes when built without GUI. (Matt +Wozniski) + +Support completion for ":find". Added test 73. (Nazri Ramliy) + +Command line completion for :ownsyntax and :setfiletype. (Dominique Pelle) + +Command line completion for :lmap and :lunmap. + +Support syntax and filetype completion for user commands. (Christian Brabandt) + +Avoid use of the GTK main_loop() so that the GtkFileChooser can be used. +(James Vega) + +When 'formatexpr' evaluates to non-zero fall back to internal formatting, also +for "gq". (James Vega) + +Support :browse for commands that use an error file argument. (Lech Lorens) + +Support wide file names in gvimext. (Szabolcs Horvat) + +Improve test for joining lines. (Milan Vancura) +Make joining a range of lines much faster. (Milan Vancura) + +Add patch to improve support of z/OS (OS/390). (Ralf Schandl) + +Added the helphelp.txt file. Moved text from various.txt to it. + +Added "q" item for 'statusline'. Added |w:quickfix_title|. (Lech Lorens) + +Various improvements for VMS. (Zoltan Arpadffy) + + +New syntax files: ~ +Haskell Cabal build file (Vincent Berthoux) +ChaiScript (Jason Turner) +Cucumber (Tim Pope) +Datascript (Dominique Pelle) +Fantom (Kamil Toman) +Liquid (Tim Pope) +Markdown (Tim Pope) +wavefront's obj file (Vincent Berthoux) +Perl 6 (Andy Lester) +SDC - Synopsys Design Constraints (Maurizio Tranchero) +SVG - Scalable Vector Graphics (Vincent Berthoux) +task data (John Florian) +task 42 edit (John Florian) + +New filetype plugins: ~ +Cucumber (Tim Pope) +Liquid (Tim Pope) +Logcheck (Debian) +Markdown (Tim Pope) +Perl 6 (Andy Lester) +Quickfix window (Lech Lorens) +Tcl (Robert L Hicks) + +New indent plugins: ~ +CUDA (Bram Moolenaar) +ChaiScript (Jason Turner) +Cucumber (Tim Pope) +LifeLines (Patrick Texier) +Liquid (Tim Pope) +Mail (Bram Moolenaar) +Perl 6 (Andy Lester) + +Other new runtime files: ~ +Breton spell file (Dominique Pelle) +Dvorak keymap (Ashish Shukla) +Korean translations. (SungHyun Nam) +Python 3 completion (Aaron Griffin) +Serbian menu translations (Aleksandar Jelenak) +Tetum spell files +Tutor Bairish (Sepp Hell) +Tutor in Esperanto. (Dominique Pell茅) +Tutor in Portuguese. +Norwegian Tutor now also available as tutor.nb + +Removed the Mupad runtime files, they were not maintained. + + +Fixed *fixed-7.3* +----- + +Patch 7.2.001 +Problem: Mac: pseudo-ttys don't work properly on Leopard, resulting in the + shell not to have a prompt, CTRL-C not working, etc. +Solution: Don't use SVR4 compatible ptys, even though they are detected. + (Ben Schmidt) +Files: src/pty.c + +Patch 7.2.002 +Problem: Leaking memory when displaying menus. +Solution: Free allocated memory. (Dominique Pelle) +Files: src/menu.c + +Patch 7.2.003 +Problem: Typo in translated message. Message not translated. +Solution: Correct spelling. Add _(). (Dominique Pelle) +Files: src/spell.c, src/version.c + +Patch 7.2.004 +Problem: Cscope help message is not translated. +Solution: Put it in _(). (Dominique Pelle) +Files: src/if_cscope.c, src/if_cscope.h + +Patch 7.2.005 +Problem: A few problems when profiling. Using flag pointer instead of flag + value. Allocating zero bytes. Not freeing used memory. +Solution: Remove wrong '&' characters. Skip dumping when there is nothing + to dump. Free used memory. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.006 +Problem: HTML files are not recognized by contents. +Solution: Add a rule to the scripts file. (Nico Weber) +Files: runtime/scripts.vim + +Patch 7.2.007 (extra) +Problem: Minor issues for VMS. +Solution: Minor fixes for VMS. Add float support. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, src/os_vms_conf.h, src/Make_vms.mms, + src/testdir/Make_vms.mms, src/testdir/test30.in, + src/testdir/test54.in + +Patch 7.2.008 +Problem: With a BufHidden autocommand that invokes ":bunload" the window + count for a buffer can be wrong. (Bob Hiestand) +Solution: Don't call enter_buffer() when already in that buffer. +Files: src/buffer.c + +Patch 7.2.009 +Problem: Can't compile with Perl 5.10 on MS-Windows. (Cesar Romani) +Solution: Add the Perl_sv_free2 function for dynamic loading. (Dan Sharp) +Files: src/if_perl.xs + +Patch 7.2.010 +Problem: When using "K" in Visual mode not all characters are properly + escaped. (Ben Schmidt) +Solution: Use a function with the functionality of shellescape(). (Jan + Minar) +Files: src/mbyte.c, src/misc2.c, src/normal.c + +Patch 7.2.011 +Problem: Get an error when inserting a float value from the expression + register. +Solution: Convert the Float to a String automatically in the same place + where a List would be converted to a String. +Files: src/eval.c + +Patch 7.2.012 +Problem: Compiler warnings when building with startup timing. +Solution: Add type casts. +Files: src/ex_cmds2.c + +Patch 7.2.013 +Problem: While waiting for the X selection Vim consumes a lot of CPU time + and hangs until a response is received. +Solution: Sleep a bit when the selection event hasn't been received yet. + Time out after a couple of seconds to avoid a hang when the + selection owner isn't responding. +Files: src/ui.c + +Patch 7.2.014 +Problem: synstack() doesn't work in an empty line. +Solution: Accept column zero as a valid position. +Files: src/eval.c + +Patch 7.2.015 +Problem: "make all test install" doesn't stop when the test fails. (Daniel + Shahaf) +Solution: When test.log contains failures exit with non-zero status. +Files: src/testdir/Makefile + +Patch 7.2.016 +Problem: The pattern being completed may be in freed memory when the + command line is being reallocated. (Dominique Pelle) +Solution: Keep a pointer to the expand_T in the command line structure. + Don't use <S-Tab> as CTRL-P when there are no results. Clear the + completion when using a command line from the history. +Files: src/ex_getln.c + +Patch 7.2.017 +Problem: strlen() used on text that may not end in a NUL. (Dominique Pelle) + Pasting a very big selection doesn't work. +Solution: Use the length passed to the XtSelectionCallbackProc() function. + After getting the SelectionNotify event continue dispatching + events until the callback is actually called. Also dispatch the + PropertyNotify event. +Files: src/ui.c + +Patch 7.2.018 +Problem: Memory leak when substitute is aborted. +Solution: Free the buffer allocated for the new text. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.2.019 +Problem: Completion of ":noautocmd" doesn't work and exists(":noautocmd") + returns zero. (Ben Fritz) +Solution: Add "noautocmd" to the list of modifiers and commands. +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.020 +Problem: Starting the GUI when the executable starts with 'k', but the KDE + version no longer exists. +Solution: Don't have "kvim" start the GUI. +Files: src/main.c + +Patch 7.2.021 +Problem: When executing autocommands getting the full file name may be + slow. (David Kotchan) +Solution: Postpone calling FullName_save() until autocmd_fname is used. +Files: src/ex_docmd.c, src/fileio.c, src/globals.h + +Patch 7.2.022 (extra) +Problem: Testing is not possible when compiling with MingW. +Solution: Add a MingW specific test Makefile. (Bill McCarthy) +Files: Filelist, src/testdir/Make_ming.mak + +Patch 7.2.023 +Problem: 'cursorcolumn' is in the wrong place in a closed fold when the + display is shifted left. (Gary Johnson) +Solution: Subtract w_skipcol or w_leftcol when needed. +Files: src/screen.c + +Patch 7.2.024 +Problem: It's possible to set 'history' to a negative value and that causes + an out-of-memory error. +Solution: Check that 'history' has a positive value. (Doug Kearns) +Files: src/option.c + +Patch 7.2.025 +Problem: When a CursorHold event invokes system() it is retriggered over + and over again. +Solution: Don't reset did_cursorhold when getting K_IGNORE. +Files: src/normal.c + +Patch 7.2.026 (after 7.2.010) +Problem: "K" doesn't use the length of the identifier but uses the rest of + the line. +Solution: Copy the desired number of characters first. +Files: src/normal.c + +Patch 7.2.027 +Problem: Can use cscope commands in the sandbox. +Solution: Disallow them, they might not be safe. +Files: src/ex_cmds.h + +Patch 7.2.028 +Problem: Confusing error message for missing (). +Solution: Change "braces" to "parentheses". (Gary Johnson) +Files: src/eval.c + +Patch 7.2.029 +Problem: No completion for ":doautoall". +Solution: Complete ":doautoall" like ":doautocmd". (Doug Kearns) +Files: src/ex_docmd.c + +Patch 7.2.030 (after 7.2.027) +Problem: Can't compile. +Solution: Remove prematurely added ex_oldfiles. +Files: src/ex_cmds.h + +Patch 7.2.031 +Problem: Information in the viminfo file about previously edited files is + not available to the user. There is no way to get a complete list + of files edited in previous Vim sessions. +Solution: Add v:oldfiles and fill it with the list of old file names when + first reading the viminfo file. Add the ":oldfiles" command, + ":browse oldfiles" and the "#<123" special file name. Increase + the default value for 'viminfo' from '20 to '100. +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, + runtime/doc/starting.txt, runtime/doc/usr_21.txt, src/eval.c, + src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, src/feature.h, + src/fileio.c, src/main.c, src/mark.c, src/misc1.c, + src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/mark.pro, + src/option.c, src/structs.h, src/vim.h + +Patch 7.2.032 (after 7.2.031) +Problem: Can't build with EXITFREE defined. (Dominique Pelle) +Solution: Change vv_string to vv_str. +Files: src/eval.c + +Patch 7.2.033 +Problem: When detecting a little endian BOM "ucs-2le" is used, but the text + might be "utf-16le". +Solution: Default to "utf-16le", it also works for "ucs-2le". (Jia Yanwei) +Files: src/fileio.c, src/testdir/test42.ok + +Patch 7.2.034 +Problem: Memory leak in spell info when deleting buffer. +Solution: Free the memory. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.2.035 +Problem: Mismatches between alloc/malloc, free/vim_free, + realloc/vim_realloc. +Solution: Use the right function. (Dominique Pelle) +Files: src/gui_x11.c, src/mbyte.c, src/misc2.c, src/os_unix.c + +Patch 7.2.036 (extra) +Problem: Mismatches between alloc/malloc, free/vim_free, + realloc/vim_realloc. +Solution: Use the right function. (Dominique Pelle) +Files: src/gui_riscos.c, src/gui_w48.c, src/mbyte.c, src/os_vms.c, + src/os_w32exe.c, src/os_win16.c + +Patch 7.2.037 +Problem: Double free with GTK 1 and compiled with EXITFREE. +Solution: Don't close display. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.2.038 +Problem: Overlapping arguments to memcpy(). +Solution: Use mch_memmove(). (Dominique Pelle) +Files: src/if_xcmdsrv.c + +Patch 7.2.039 +Problem: Accessing freed memory on exit when EXITFREE is defined. +Solution: Call hash_init() on the v: hash table. +Files: src/eval.c + +Patch 7.2.040 +Problem: When using ":e ++ff=dos fname" and the file contains a NL without + a CR before it and 'ffs' contains "unix" then the fileformat + becomes unix. +Solution: Ignore 'ffs' when using the ++ff argument. (Ben Schmidt) + Also remove unreachable code. +Files: src/fileio.c + +Patch 7.2.041 +Problem: In diff mode, when using two tabs, each with two diffed buffers, + editing a buffer of the other tab messes up the diff. (Matt + Mzyzik) +Solution: Only copy options from a window where the buffer was edited that + doesn't have 'diff' set or is for the current tab page. + Also fix that window options for a buffer are stored with the + wrong window. +Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c, + src/normal.c, src/popupmnu.c, src/proto/buffer.pro, + src/proto/ex_cmds.pro src/quickfix.c, src/window.c + +Patch 7.2.042 +Problem: When using winrestview() in a BufWinEnter autocommand the window + is scrolled anyway. (Matt Zyzik) +Solution: Don't recompute topline when above 'scrolloff' from the bottom. + Don't always put the cursor halfway when entering a buffer. Add + "w_topline_was_set". +Files: src/buffer.c, src/move.c, src/structs.h + +Patch 7.2.043 +Problem: VMS: Too many characters are escaped in filename and shell + commands. +Solution: Escape fewer characters. (Zoltan Arpadffy) +Files: src/vim.h + +Patch 7.2.044 +Problem: Crash because of STRCPY() being over protective of the destination + size. (Dominique Pelle) +Solution: Add -D_FORTIFY_SOURCE=1 to CFLAGS. Use an intermediate variable + for the pointer to avoid a warning. +Files: src/auto/configure, src/configure.in, src/eval.c + +Patch 7.2.045 +Problem: The Python interface has an empty entry in sys.path. +Solution: Filter out the empty entry. (idea from James Vega) +Files: src/if_python.c + +Patch 7.2.046 +Problem: Wrong check for filling buffer with encoding. (Danek Duvall) +Solution: Remove pointers. (Dominique Pelle) +Files: src/mbyte.c + +Patch 7.2.047 +Problem: Starting Vim with the -nb argument while it's not supported causes + the other side to hang. +Solution: When -nb is used while it's not supported exit Vim. (Xavier de + Gaye) +Files: src/main.c, src/vim.h + +Patch 7.2.048 +Problem: v:prevcount is changed too often. Counts are not multiplied when + setting v:count. +Solution: Set v:prevcount properly. Multiply counts. (idea by Ben Schmidt) +Files: src/eval.c, src/normal.c, src/proto/eval.pro + +Patch 7.2.049 (extra) +Problem: Win32: the clipboard doesn't support UTF-16. +Solution: Change UCS-2 support to UTF-16 support. (Jia Yanwei) +Files: src/gui_w32.c, src/gui_w48.c, src/mbyte.c, src/misc1.c, + src/os_mswin.c, src/os_win32.c, src/proto/os_mswin.pro + +Patch 7.2.050 +Problem: Warnings for not checking return value of fwrite(). (Chip Campbell) +Solution: Use the return value. +Files: src/spell.c + +Patch 7.2.051 +Problem: Can't avoid 'wildignore' and 'suffixes' for glob() and globpath(). +Solution: Add an extra argument to these functions. (Ingo Karkat) +Files: src/eval.c, src/ex_getln.c, src/proto/ex_getln.pro, + runtime/doc/eval.txt, runtime/doc/options.txt + +Patch 7.2.052 +Problem: synIDattr() doesn't support "sp" for special color. +Solution: Recognize "sp" and "sp#". (Matt Wozniski) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.053 +Problem: Crash when using WorkShop command ":ws foo". (Dominique Pelle) +Solution: Avoid using a NULL pointer. +Files: src/workshop.c + +Patch 7.2.054 +Problem: Compilation warnings for format in getchar.c. +Solution: Use fputs() instead of fprintf(). (Dominique Pelle) +Files: src/getchar.c + +Patch 7.2.055 +Problem: Various compiler warnings with strict checking. +Solution: Avoid the warnings by using return values and renaming. +Files: src/diff.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, + src/fileio.c, src/fold.c, src/globals.h, src/gui.c, + src/gui_at_sb.c, src/gui_gtk_x11.c, src/gui_xmdlg.c, + src/gui_xmebw.c, src/main.c, src/mbyte.c, src/message.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/spell.c, + src/ui.c, src/window.c + +Patch 7.2.056 (after 7.2.050) +Problem: Tests 58 and 59 fail. +Solution: Don't invoke fwrite() with a zero length. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.057 (after 7.2.056) +Problem: Combination of int and size_t may not work. +Solution: Use size_t for variable. +Files: src/spell.c + +Patch 7.2.058 +Problem: Can't add a patch name to the ":version" output. +Solution: Add the extra_patches array. +Files: src/version.c + +Patch 7.2.059 +Problem: Diff display is not always updated. +Solution: Update the display more often. +Files: src/diff.c + +Patch 7.2.060 +Problem: When a spell files has many compound rules it may take a very long + time making the list of suggestions. Displaying also can be slow + when there are misspelled words. + Can't parse some Hunspell .aff files. +Solution: Check if a compounding can possibly work before trying a + combination, if the compound rules don't contain wildcards. + Implement using CHECKCOMPOUNDPATTERN. + Ignore COMPOUNDRULES. Ignore a comment after most items. + Accept ONLYINCOMPOUND as an alias for NEEDCOMPOUND. + Accept FORBIDDENWORD as an alias for BAD. +Files: runtime/doc/spell.txt, src/spell.c + +Patch 7.2.061 +Problem: Can't create a funcref for an autoload function without loading + the script first. (Marc Weber) +Solution: Accept autoload functions that don't exist yet in function(). +Files: src/eval.c + +Patch 7.2.062 +Problem: "[Scratch]" is not translated. +Solution: Mark the string for translation. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.2.063 +Problem: Warning for NULL argument of Perl_sys_init3(). +Solution: Use Perl_sys_init() instead. (partly by Dominique Pelle) +Files: src/if_perl.xs + +Patch 7.2.064 +Problem: Screen update bug when repeating "~" on a Visual block and the + last line doesn't change. +Solution: Keep track of changes for all lines. (Moritz Orbach) +Files: src/ops.c + +Patch 7.2.065 +Problem: GTK GUI: the cursor disappears when doing ":vsp" and the Vim + window is maximized. (Dominique Pelle, Denis Smolyar) +Solution: Don't change "Columns" back to an old value at a wrong moment. + Do change "Rows" when it should not be a problem. +Files: src/gui.c + +Patch 7.2.066 +Problem: It's not easy to see whether 'encoding' is a multibyte encoding. +Solution: Add has('multi_byte_encoding'). +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.067 +Problem: Session file can't load extra file when the path contains special + characters. +Solution: Escape the file name. (Lech Lorens) +Files: src/ex_docmd.c + +Patch 7.2.068 +Problem: Emacs tags file lines can be too long, resulting in an error + message. (James Vega) +Solution: Ignore lines with errors if they are too long. +Files: src/tag.c + +Patch 7.2.069 (after 7.2.060) +Problem: Compiler warning for storing size_t in int. +Solution: Add type cast. +Files: src/spell.c + +Patch 7.2.070 +Problem: Crash when a function returns a:000. (Matt Wozniski) +Solution: Don't put the function struct on the stack, allocate it. Free it + only when nothing in it is used. +Files: src/eval.c + +Patch 7.2.071 (extra) +Problem: Win32: Handling netbeans events while Vim is busy updating the + screen may cause a crash. +Solution: Like with GTK, only handle netbeans messages in the main loop. + (Xavier de Gaye) +Files: src/gui_w48.c, src/netbeans.c + +Patch 7.2.072 (extra) +Problem: Compiler warning in Sniff code. +Solution: Use return value of pipe(). (Dominique Pelle) +Files: src/if_sniff.c + +Patch 7.2.073 +Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt + Wozniski) +Solution: Don't translate "x" keys to its alternative for ":set". +Files: src/gui_mac.c, src/misc2.c, src/option.c, src/proto/misc2.pro + +Patch 7.2.074 (extra, after 7.2.073) +Problem: ":set <xHome>" has the same output as ":set <Home>". (Matt + Wozniski) +Solution: Don't translate "x" keys to its alternative for ":set". +Files: src/gui_mac.c + +Patch 7.2.075 (after 7.2.058) +Problem: Explanation about making a diff for extra_patches is unclear. +Solution: Adjust comment. +Files: src/version.c + +Patch 7.2.076 +Problem: rename(from, to) deletes the file if "from" and "to" are not equal + but still refer to the same file. E.g., on a FAT32 filesystem + under Unix. +Solution: Go through another file name. +Files: src/fileio.c + +Patch 7.2.077 (after 7.2.076) +Problem: rename(from, to) doesn't work if "from" and "to" differ only in + case on a system that ignores case in file names. +Solution: Go through another file name. +Files: src/fileio.c + +Patch 7.2.078 +Problem: When deleting a fold that is specified with markers the cursor + position may be wrong. Folds may not be displayed properly after + a delete. Wrong fold may be deleted. +Solution: Fix the problems. (mostly by Lech Lorens) +Files: src/fold.c + +Patch 7.2.079 +Problem: "killed" netbeans events are not handled correctly. +Solution: A "killed" netbeans event is sent when the buffer is deleted or + wiped out (in this case, the netbeans annotations in this buffer + have been removed). A user can still remove a sign with the + command ":sign unplace" and this does not trigger a "killed" + event. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/buffer.c, src/globals.h, + src/netbeans.c, src/proto/netbeans.pro + +Patch 7.2.080 +Problem: When typing a composing character just after starting completion + may access memory before its allocation point. (Dominique Pelle) +Solution: Don't delete before the completion start column. Add extra checks + for the offset not being negative. +Files: src/edit.c + +Patch 7.2.081 +Problem: Compiler warning for floating point overflow on VAX. +Solution: For VAX use a smaller number. (Zoltan Arpadffy) +Files: src/message.c + +Patch 7.2.082 +Problem: When 'ff' is "mac" then "ga" on a ^J shows 0x0d instead of 0x0a. + (Andy Wokula) +Solution: Use NL for this situation. (Lech Lorens) +Files: src/ex_cmds.c + +Patch 7.2.083 +Problem: ":tag" does not return to the right tag entry from the tag stack. +Solution: Don't change the current match when there is no argument. + (Erik Falor) +Files: src/tag.c + +Patch 7.2.084 +Problem: Recursive structures are not handled properly in Python + vim.eval(). +Solution: Keep track of references in a better way. (Yukihiro Nakadaira) +Files: src/if_python.c + +Patch 7.2.085 +Problem: ":set <M-b>=<Esc>b" does not work when 'encoding' is utf-8. +Solution: Put the <M-b> character in the input buffer as valid utf-8. + (partly by Matt Wozniski) +Files: src/term.c + +Patch 7.2.086 +Problem: Using ":diffget 1" in buffer 1 corrupts the text. +Solution: Don't do anything when source and destination of ":diffget" or + ":diffput" is the same buffer. (Dominique Pelle) +Files: src/diff.c + +Patch 7.2.087 +Problem: Adding URL to 'path' doesn't work to edit a file. +Solution: Skip simplify_filename() for URLs. (Matt Wozniski) +Files: src/misc2.c + +Patch 7.2.088 (extra) +Problem: OpenClipboard() may fail when another application is using the + clipboard. +Solution: Retry OpenClipboard() a few times. (Jianrong Yu) +Files: src/os_mswin.c + +Patch 7.2.089 (extra) +Problem: Win32: crash when using Ultramon buttons. +Solution: Don't use a WM_OLE message of zero size. (Ray Megal) +Files: src/if_ole.cpp, src/gui_w48.c + +Patch 7.2.090 +Problem: User command containing 0x80 in multibyte character does not work + properly. (Yasuhiro Matsumoto) +Solution: Undo replacement of K_SPECIAL and CSI characters when executing + the command. +Files: src/ex_docmd.c + +Patch 7.2.091 +Problem: ":cs help" output is not aligned for some languages. +Solution: Compute character size instead of byte size. (Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.2.092 +Problem: Some error messages are not translated. +Solution: Add _() around the messages. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.093 (extra) +Problem: Win32: inputdialog() and find/replace dialogs can't handle + multibyte text. +Solution: Use the wide version of dialog functions when available. (Yanwei + Jia) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.2.094 +Problem: Compiler warning for signed/unsigned compare. +Solution: Add type cast. Also fix a few typos. +Files: src/edit.c + +Patch 7.2.095 +Problem: With Visual selection, "r" and then CTRL-C Visual mode is stopped + but the highlighting is not removed. +Solution: Call reset_VIsual(). +Files: src/normal.c + +Patch 7.2.096 +Problem: After ":number" the "Press Enter" message may be on the wrong + screen, if switching screens for shell commands. +Solution: Reset info_message. (James Vega) +Files: src/ex_cmds.c + +Patch 7.2.097 +Problem: "!xterm&" doesn't work when 'shell' is "bash". +Solution: Ignore SIGHUP after calling setsid(). (Simon Schubert) +Files: src/os_unix.c + +Patch 7.2.098 +Problem: Warning for signed/unsigned pointer. +Solution: Add type cast. +Files: src/eval.c + +Patch 7.2.099 +Problem: Changing GUI options causes an unnecessary redraw when the GUI + isn't active. +Solution: Avoid the redraw. (Lech Lorens) +Files: src/option.c + +Patch 7.2.100 +Problem: When using ":source" on a FIFO or something else that can't rewind + the first three bytes are skipped. +Solution: Instead of rewinding read the first line and detect a BOM in that. + (mostly by James Vega) +Files: src/ex_cmds2.c + +Patch 7.2.101 (extra) +Problem: MSVC version not recognized. +Solution: Add the version number to the list. (Zhong Zhang) +Files: src/Make_mvc.mak + +Patch 7.2.102 (after 7.2.100) +Problem: When 'encoding' is "utf-8" a BOM at the start of a Vim script is + not removed. (Tony Mechelynck) +Solution: When no conversion is taking place make a copy of the line without + the BOM. +Files: src/ex_cmds2.c + +Patch 7.2.103 +Problem: When 'bomb' is changed the window title is updated to show/hide a + "+", but the tab page label isn't. (Patrick Texier) +Solution: Set "redraw_tabline" in most places where "need_maketitle" is set. + (partly by Lech Lorens) +Files: src/option.c + +Patch 7.2.104 +Problem: When using ":saveas bar.c" the tab label isn't updated right away. +Solution: Set redraw_tabline. (Francois Ingelrest) +Files: src/ex_cmds.c + +Patch 7.2.105 +Problem: Modeline setting for 'foldmethod' overrules diff options. (Ingo + Karkat) +Solution: Don't set 'foldmethod' and 'wrap' from a modeline when 'diff' is + on. +Files: src/option.c + +Patch 7.2.106 +Problem: Endless loop when using "]s" in HTML when there are no + misspellings. (Ingo Karkat) +Solution: Break the search loop. Also fix pointer alignment for systems + with pointers larger than int. +Files: src/spell.c + +Patch 7.2.107 +Problem: When using a GUI dialog and ":echo" commands the messages are + deleted after the dialog. (Vincent Birebent) +Solution: Don't call msg_end_prompt() since there was no prompt. +Files: src/message.c + +Patch 7.2.108 (after 7.2.105) +Problem: Can't build without the diff feature. +Solution: Add #ifdef. +Files: src/option.c + +Patch 7.2.109 +Problem: 'langmap' does not work for multibyte characters. +Solution: Add a list of mapped multibyte characters. (based on work by + Konstantin Korikov, Agathoklis Hatzimanikas) +Files: runtime/doc/options.txt, src/edit.c, src/getchar.c, src/macros.h, + src/normal.c, src/option.c, src/proto/option.pro, src/window.c + +Patch 7.2.110 +Problem: Compiler warning for unused variable. +Solution: Init the variable. +Files: src/ex_docmd.c + +Patch 7.2.111 +Problem: When using Visual block mode with 'cursorcolumn' it's unclear what + is selected. +Solution: Don't use 'cursorcolumn' highlighting inside the Visual selection. + (idea by Dominique Pelle) +Files: src/screen.c + +Patch 7.2.112 +Problem: Cursor invisible in Visual mode when 'number' is set and cursor in + first column. (Matti Niemenmaa, Renato Alves) +Solution: Check that vcol_prev is smaller than vcol. +Files: src/screen.c + +Patch 7.2.113 +Problem: Crash for substitute() call using submatch(1) while there is no + such submatch. (Yukihiro Nakadaira) +Solution: Also check the start of the submatch is set, it can be NULL when + an attempted match didn't work out. +Files: src/regexp.c + +Patch 7.2.114 +Problem: Using wrong printf format. +Solution: Use "%ld" instead of "%d". (Dominique Pelle) +Files: src/netbeans.c + +Patch 7.2.115 +Problem: Some debugging code is never used. +Solution: Remove nbtrace() and nbprt(). (Dominique Pelle) +Files: src/nbdebug.c, src/nbdebug.h + +Patch 7.2.116 +Problem: Not all memory is freed when EXITFREE is defined. +Solution: Free allocated memory on exit. (Dominique Pelle) +Files: src/ex_docmd.c, src/gui_gtk_x11.c, src/misc2.c, src/search.c, + src/tag.c + +Patch 7.2.117 +Problem: Location list incorrectly labelled "Quickfix List". +Solution: Break out of both loops for finding window for location list + buffer. (Lech Lorens) +Files: src/buffer.c, src/quickfix.c, src/screen.c + +Patch 7.2.118 +Problem: <PageUp> at the more prompt only does half a page. +Solution: Make <PageUp> go up a whole page. Also make 'f' go a page + forward, but not quit the more prompt. (Markus Heidelberg) +Files: src/message.c + +Patch 7.2.119 +Problem: Status line is redrawn too often. +Solution: Check ScreenLinesUC[] properly. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.2.120 +Problem: When opening the quickfix window or splitting the window and + setting the location list, the location list is copied and then + deleted, which is inefficient. +Solution: Don't copy the location list when not needed. (Lech Lorens) +Files: src/quickfix.c, src/vim.h, src/window.c + +Patch 7.2.121 +Problem: In gvim "!grep a *.c" spews out a lot of text that can't be + stopped with CTRL-C. +Solution: When looping to read and show text, do check for typed characters + every two seconds. +Files: src/os_unix.c + +Patch 7.2.122 +Problem: Invalid memory access when the VimResized autocommand changes + 'columns' and/or 'lines'. +Solution: After VimResized check for changed values. (Dominique Pelle) +Files: src/screen.c + +Patch 7.2.123 +Problem: Typing 'q' at more prompt for ":map" output still displays another + line, causing another more prompt. (Markus Heidelberg) +Solution: Quit listing maps when 'q' typed. +Files: src/getchar.c + +Patch 7.2.124 +Problem: Typing 'q' at more prompt for ":tselect" output still displays + more lines, causing another more prompt. (Markus Heidelberg) +Solution: Quit listing tags when 'q' typed. +Files: src/tag.c + +Patch 7.2.125 +Problem: Leaking memory when reading XPM bitmap for a sign. +Solution: Don't allocate the memory twice. (Dominique Pelle) +Files: src/gui_x11.c + +Patch 7.2.126 +Problem: When EXITFREE is defined signs are not freed. +Solution: Free all signs on exit. Also free keymaps. (Dominique Pelle) +Files: src/misc2.c, src/ex_cmds.c, src/proto/ex_cmds.pro + +Patch 7.2.127 +Problem: When listing mappings and a wrapping line causes the more prompt, + after typing 'q' there can be another more prompt. (Markus + Heidelberg) +Solution: Set "lines_left" to allow more lines to be displayed. +Files: src/message.c + +Patch 7.2.128 (after 7.2.055) +Problem: Using ":lcd" makes session files not work. +Solution: Compare return value of mch_chdir() properly. (Andreas Bernauer) +Files: src/ex_docmd.c + +Patch 7.2.129 +Problem: When opening a command window from input() it uses the search + history. +Solution: Use get_cmdline_type(). (James Vega) +Files: src/ex_getln.c + +Patch 7.2.130 +Problem: Vim may hang until CTRL-C is typed when using CTRL-Z. +Solution: Avoid using pause(). Also use "volatile" for variables used in + signal functions. (Dominique Pelle) +Files: src/auto/configure, src/configure.in, src/config.h.in, + src/globals.h, src/os_unix.c + +Patch 7.2.131 +Problem: When 'keymap' is cleared may still use the cursor highlighting for + when it's enabled. +Solution: Reset 'iminsert' and 'imsearch'. (partly by Dominique Pelle) + Also avoid ":setlocal" for these options have a global effect. +Files: src/option.c + +Patch 7.2.132 +Problem: When changing directory during a SwapExists autocmd freed memory + may be accessed. (Dominique Pelle) +Solution: Add the allbuf_lock flag. +Files: src/ex_getln.c, src/globals.h, src/fileio.c, + src/proto/ex_getln.pro + +Patch 7.2.133 +Problem: ":diffoff!" changes settings in windows not in diff mode. +Solution: Only change settings in other windows when 'diff' is set, always + do it for the current window. (Lech Lorens) +Files: src/diff.c + +Patch 7.2.134 +Problem: Warning for discarding "const" from pointer. +Solution: Don't pass const pointer to mch_memmove(). +Files: src/fileio.c + +Patch 7.2.135 +Problem: Memory leak when redefining user command with complete argument. +Solution: Free the old complete argument. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.2.136 (after 7.2.132) +Problem: ":cd" is still possible in a SwapExists autocmd. +Solution: Check the allbuf_lock flag in ex_cd(). +Files: src/ex_docmd.c + +Patch 7.2.137 +Problem: When 'virtualedit' is set, a left shift of a blockwise selection + that starts and ends inside a tab shifts too much. (Helmut + Stiegler) +Solution: Redo the block left shift code. (Lech Lorens) +Files: src/ops.c, src/testdir/Makefile, src/testdir/test66.in, + src/testdir/test66.ok + +Patch 7.2.138 (extra part of 7.2.137) +Problem: See 7.2.137. +Solution: See 7.2.137. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.139 +Problem: Crash when 'virtualedit' is "all". (James Vega) +Solution: Avoid overflow when column is MAXCOL. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.2.140 +Problem: Diff highlighting isn't displayed before the Visual area if it + starts at the cursor position. (Markus Heidelberg) +Solution: Also check fromcol_prev. +Files: src/screen.c + +Patch 7.2.141 +Problem: When redrawing a character for bold spill this causes the next + character to be redrawn as well. +Solution: Only redraw one extra character. (Yukihiro Nakadaira) +Files: src/screen.c + +Patch 7.2.142 +Problem: Motif and Athena balloons don't use tooltip colors. +Solution: Set the colors. (Matt Wozniski) +Files: src/gui_beval.c + +Patch 7.2.143 +Problem: No command line completion for ":cscope" command. +Solution: Add the completion for ":cscope". (Dominique Pelle) +Files: src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, + src/proto/if_cscope.pro, src/vim.h + +Patch 7.2.144 +Problem: When 't_Co' is set to the value it already had the color scheme is + reloaded anyway. +Solution: Only load the colorscheme when the t_Co value changes. (Dominique + Pelle) +Files: src/option.c + +Patch 7.2.145 +Problem: White space in ":cscope find" is not ignored. +Solution: Ignore the white space, but not when the leading white space is + useful for the argument. +Files: runtime/doc/if_scop.txt, src/if_cscope.c + +Patch 7.2.146 +Problem: v:warningmsg isn't used for all warnings. +Solution: Set v:warningmsg for relevant warnings. (Ingo Karkat) +Files: src/fileio.c, src/misc1.c, src/option.c + +Patch 7.2.147 +Problem: When compiled as small version and 'number' is on the cursor is + displayed in the wrong position after a tab. (James Vega) +Solution: Don't increment vcol when still displaying the line number. +Files: src/screen.c + +Patch 7.2.148 +Problem: When searching for "$" while 'hlsearch' is set, highlighting the + character after the line does not work in the cursor column. + Also highlighting for Visual mode after the line end when this + isn't needed. (Markus Heidelberg) +Solution: Only compare the cursor column in the cursor line. Only highlight + for Visual selection after the last character when it's needed to + see where the Visual selection ends. +Files: src/screen.c + +Patch 7.2.149 +Problem: Using return value of function that doesn't return a value results + in reading uninitialized memory. +Solution: Set the default to return zero. Make cursor() return -1 on + failure. Let complete() return an empty string in case of an + error. (partly by Dominique Pelle) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.150 (extra) +Problem: Can't use tab pages from VisVim. +Solution: Add tab page support to VisVim. (Adam Slater) +Files: src/VisVim/Commands.cpp, src/VisVim/Resource.h, + src/VisVim/VisVim.rc + +Patch 7.2.151 +Problem: ":hist a" doesn't work like ":hist all" as the docs suggest. +Solution: Make ":hist a" and ":hist al" work. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.152 +Problem: When using "silent echo x" inside ":redir" a next echo may start + halfway the line. (Tony Mechelynck, Dennis Benzinger) +Solution: Reset msg_col after redirecting silently. +Files: src/ex_docmd.c, src/message.c, src/proto/message.pro + +Patch 7.2.153 +Problem: Memory leak for ":recover empty_dir/". +Solution: Free files[] when it becomes empty. (Dominique Pelle) +Files: src/memline.c + +Patch 7.2.154 (after 7.2.132) +Problem: ":cd" is still possible in a SwapExists autocmd. +Solution: Set allbuf_lock in do_swapexists(). +Files: src/memline.c + +Patch 7.2.155 +Problem: Memory leak in ":function /pat". +Solution: Free the memory. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.156 (after 7.2.143) +Problem: No completion for :scscope and :lcscope commands. +Solution: Implement the completion. (Dominique Pelle) +Files: src/if_cscope.c, src/ex_docmd.c, src/proto/if_cscope.pro + +Patch 7.2.157 +Problem: Illegal memory access when searching in path. +Solution: Avoid looking at a byte after end of a string. (Dominique Pelle) +Files: src/search.c + +Patch 7.2.158 +Problem: Warnings from VisualC compiler. +Solution: Add type casts. (George Reilly) +Files: src/ops.c + +Patch 7.2.159 +Problem: When $x_includes ends up being "NONE" configure fails. +Solution: Check for $x_includes not to be "NONE" (Rainer) +Files: src/auto/configure, src/configure.in + +Patch 7.2.160 +Problem: Search pattern not freed on exit when 'rightleft' set. +Solution: Free mr_pattern_alloced. +Files: src/search.c + +Patch 7.2.161 +Problem: Folds messed up in other tab page. (Vlad Irnov) +Solution: Instead of going over all windows in current tab page go over all + windows in all tab pages. Also free memory for location lists in + other tab pages when exiting. (Lech Lorens) +Files: src/fileio.c, src/mark.c, src/misc1.c, src/misc2.c + +Patch 7.2.162 +Problem: The quickfix window may get wrong filetype. +Solution: Do not detect the filetype for the quickfix window. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.2.163 +Problem: The command line window may get folding. +Solution: Default to no/manual folding. (Lech Lorens) +Files: src/ex_getln.c + +Patch 7.2.164 +Problem: When 'showbreak' is set the size of the Visual block may be + reported wrong. (Eduardo Daudt Flach) +Solution: Temporarily make 'sbr' empty. +Files: src/normal.c, src/ops.c + +Patch 7.2.165 +Problem: The argument for the FuncUndefined autocmd event is expanded like + a file name. +Solution: Don't try expanding it. (Wang Xu) +Files: src/fileio.c + +Patch 7.2.166 +Problem: No completion for ":sign" command. +Solution: Add ":sign" completion. (Dominique Pelle) +Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/vim.h, + src/proto/ex_cmds.pro + +Patch 7.2.167 +Problem: Splint doesn't work well for checking the code. +Solution: Add splint arguments in the Makefile. Exclude some code from + splint that it can't handle. Tune splint arguments to give + reasonable errors. Add a filter for removing false warnings from + splint output. Many small changes to avoid warnings. More to + follow... +Files: Filelist, src/Makefile, src/buffer.c, src/charset.c, + src/cleanlint.vim, src/digraph.c, src/edit.c, src/ex_cmds.c, + src/globals.h, src/ops.c, src/os_unix.c, src/os_unix.h, + src/proto/buffer.pro, src/proto/edit.pro, src/screen.c, + src/structs.h + +Patch 7.2.168 +Problem: When no ctags program can be found, "make tags" attempts to + execute the first C file. +Solution: Default to "ctags" when no ctags program can be found. +Files: src/configure.in, src/auto/configure + +Patch 7.2.169 +Problem: Splint complains about a lot of things. +Solution: Add type casts, #ifdefs and other changes to avoid warnings. + Change colnr_T from unsigned to int. Avoids mistakes with + subtracting columns. +Files: src/cleanlint.vim, src/diff.c, src/edit.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/proto/ex_cmds.pro, + src/proto/spell.pro, src/quickfix.c, src/spell.c, src/structs.h, + src/term.h, src/vim.h + +Patch 7.2.170 +Problem: Using b_dev while it was not set. (Dominique Pelle) +Solution: Add the b_dev_valid flag. +Files: src/buffer.c, src/fileio.c, src/structs.h + +Patch 7.2.171 (after 7.2.169) +Problem: Compiler warnings. (Tony Mechelynck) +Solution: Add function prototype. (Patrick Texier) Init variable. +Files: src/ex_cmds.c + +Patch 7.2.172 (extra) +Problem: Compiler warning. +Solution: Adjust function prototype. (Patrick Texier) +Files: src/os_mswin.c + +Patch 7.2.173 +Problem: Without lint there is no check for unused function arguments. +Solution: Use gcc -Wunused-parameter instead of lint. For a few files add + attributes to arguments that are known not to be used. +Files: src/auto/configure, src/buffer.c, src/charset.c, src/diff.c, + src/configure.in, src/config.h.in, src/edit.c, src/ex_cmds.c, + src/ex_cmds2.c, src/version.c, src/vim.h + +Patch 7.2.174 +Problem: Too many warnings from gcc -Wextra. +Solution: Change initializer. Add UNUSED. Add type casts. +Files: src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, getchar.c, globals.h, main.c, + memline.c, message.c, src/misc1.c, src/move.c, src/normal.c, + src/option.c, src/os_unix.c, src/os_unix.h, src/regexp.c, + src/search.c, src/tag.c + +Patch 7.2.175 +Problem: Compiler warning in OpenBSD. +Solution: Add type cast for NULL. (Dasn) +Files: src/if_cscope.c + +Patch 7.2.176 +Problem: Exceptions for splint are not useful. +Solution: Remove the S_SPLINT_S ifdefs. +Files: src/edit.c, src/ex_cmds.c, src/ex_docmd.c, src/os_unix.c, + src/os_unix.h, src/os_unixx.h, src/structs.h, src/term.h + +Patch 7.2.177 +Problem: Compiler warnings when using -Wextra +Solution: Add UNUSED and type casts. +Files: src/eval.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/fileio.c, src/hardcopy.c, src/if_cscope.c, src/if_xcmdsrv.c, + src/farsi.c, src/mark.c, src/menu.c + +Patch 7.2.178 +Problem: Using negative value for device number might not work. +Solution: Use a separate flag for whether ffv_dev was set. +Files: src/misc2.c + +Patch 7.2.179 +Problem: Using negative value for device number might not work. +Solution: Use a separate flag for whether sn_dev was set. +Files: src/ex_cmds2.c + +Patch 7.2.180 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/buffer.c, src/ex_cmds.c, src/macros.h, src/main.c, + src/menu.c, src/message.c, src/misc1.c, src/mbyte.c, + src/normal.c, src/option.c, src/os_unix.c, src/quickfix.c, + src/screen.c, src/search.c, src/spell.c, src/syntax.c, src/tag.c, + src/term.c, src/ui.c + +Patch 7.2.181 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/if_mzsch.c, src/gui.c, src/gui_gtk.c, src/gui_gtk_x11.c, + src/gui_gtk_f.c, src/gui_beval.c, src/netbeans.c + +Patch 7.2.182 (after 7.2.181) +Problem: Compilation problems after previous patch for Motif. Gvim with + GTK crashes on startup. +Solution: Add comma. Init form structure to zeroes. +Files: src/netbeans.c, src/gui_gtk_f.c + +Patch 7.2.183 +Problem: Configure problem for sys/sysctl.h on OpenBSD. (Dasn) +Solution: Add separate check for this header file. Also switch to newer + version of autoconf. +Files: src/auto/configure, src/configure.in + +Patch 7.2.184 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. Autoconf check for wchar_t. +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/gui_athena.c, src/gui_x11.c, src/gui.c, src/gui_beval.c, + src/gui_at_sb.c, src/gui_at_fs.c, src/gui_motif.c, + src/gui_xmdlg.c, src/gui_xmebw.c, src/if_python.c, src/window.c, + src/workshop.c + +Patch 7.2.185 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Add UNUSED and type casts. +Files: src/Makefile, src/if_tlc.c, src/if_ruby.c + +Patch 7.2.186 +Problem: Some more compiler warnings when using gcc -Wextra. +Solution: Now with the intended if_tcl.c changes. +Files: src/if_tcl.c + +Patch 7.2.187 (after 7.2.186) +Problem: Doesn't build with older versions of TCL. (Yongwei Wu) +Solution: Add #ifdefs. (Dominique Pelle) +Files: src/if_tcl.c + +Patch 7.2.188 +Problem: Crash with specific use of function calls. (Meikel Brandmeyer) +Solution: Make sure the items referenced by a function call are not freed + twice. (based on patch from Nico Weber) +Files: src/eval.c + +Patch 7.2.189 +Problem: Possible hang for deleting auto-indent. (Dominique Pelle) +Solution: Make sure the position is not beyond the end of the line. +Files: src/edit.c + +Patch 7.2.190 +Problem: The register executed by @@ isn't restored. +Solution: Mark the executable register in the viminfo file. +Files: src/ops.c + +Patch 7.2.191 +Problem: Mzscheme interface doesn't work on Ubuntu. +Solution: Change autoconf rules. Define missing macro. Some changes to + avoid gcc warnings. Remove per-buffer namespace. (Sergey Khorev) +Files: runtime/doc/if_mzsch.txt, src/Makefile, src/Make_ming.mak, + src/Make_mvc.mak, src/auto/configure, src/configure.in, + src/config.mk.in, src/eval.c, src/if_mzsch.c, src/if_mzsch.h, + src/main.c, src/proto/if_mzsch.pro + +Patch 7.2.192 (after 7.2.188) +Problem: Still a crash in the garbage collector for a very rare situation. +Solution: Make sure current_copyID is always incremented correctly. (Kent + Sibilev) +Files: src/eval.c + +Patch 7.2.193 +Problem: Warning for uninitialized values. +Solution: Initialize all the struct items. +Files: src/eval.c + +Patch 7.2.194 (extra) +Problem: MSVC: rem commands are echoed. +Solution: Add commands to switch off echo. (Wang Xu) +Files: src/msvc2008.bat + +Patch 7.2.195 +Problem: Leaking memory for the command Vim was started with. +Solution: Remember the pointer and free it. +Files: src/gui_gtk_x11.c + +Patch 7.2.196 (after 7.2.167) +Problem: Turns out splint doesn't work well enough to be usable. +Solution: Remove splint support. +Files: Filelist, src/cleanlint.vim + +Patch 7.2.197 +Problem: Warning for uninitialized values. +Solution: Initialize all the struct items of typebuf. +Files: src/globals.h + +Patch 7.2.198 +Problem: Size of buffer used for tgetent() may be too small. +Solution: Use the largest known size everywhere. +Files: src/vim.h + +Patch 7.2.199 +Problem: Strange character in comment. +Solution: Change to "message". (Yongwei Wu) +Files: src/term.c + +Patch 7.2.200 +Problem: Reading past end of string when navigating the menu bar or + resizing the window. +Solution: Add and use mb_ptr2len_len(). (partly by Dominique Pelle) + Also add mb_ptr2cells_len() to prevent more trouble. +Files: src/gui_gtk_x11.c, src/os_unix.c, src/globals.h, src/mbyte.c, + src/proto/mbyte.pro + +Patch 7.2.201 +Problem: Cannot copy/paste HTML to/from Firefox via the clipboard. +Solution: Implement this for GTK. Add the "html" value to 'clipboard'. +Files: runtime/doc/options.txt, src/globals.h, src/gui_gtk_x11.c, + src/mbyte.c, src/proto/mbyte.pro, src/option.c + +Patch 7.2.202 +Problem: BufWipeout autocommand that edits another buffer causes problems. +Solution: Check for the situation, give an error and quit the operation. +Files: src/fileio.c + +Patch 7.2.203 +Problem: When reloading a buffer or doing anything else with a buffer that + is not displayed in a visible window, autocommands may be applied + to the current window, folds messed up, etc. +Solution: Instead of using the current window for the hidden buffer use a + special window, splitting the current one temporarily. +Files: src/fileio.c, src/globals.h, src/gui.c, src/if_perl.xs, + src/progo/gui.pro, src/proto/window.pro, src/screen.c, + src/structs.h, src/window.c + +Patch 7.2.204 (extra) +Problem: Win32: Can't build with Visual Studio 2010 beta 1. +Solution: Fix the makefile. (George Reilly) +Files: src/Make_mvc.mak + +Patch 7.2.205 (extra) +Problem: Win32: No support for High DPI awareness. +Solution: Fix the manifest file. (George Reilly) +Files: src/Make_mvc.mak, src/gvim.exe.mnf + +Patch 7.2.206 +Problem: Win32: Can't build netbeans interface with Visual Studio 2010. +Solution: Undefine ECONNREFUSED. (George Reilly) +Files: src/netbeans.c + +Patch 7.2.207 +Problem: Using freed memory with ":redrawstatus" when it works recursively. +Solution: Prevent recursively updating the status line. (partly by Dominique + Pelle) +Files: src/screen.c + +Patch 7.2.208 +Problem: "set novice" gives an error message, it should be ignored. +Solution: Don't see "no" in "novice" as unsetting an option. (Patrick + Texier) +Files: src/option.c + +Patch 7.2.209 +Problem: For xxd setmode() is undefined on Cygwin. +Solution: Include io.h. (Dominique Pelle) +Files: src/xxd/xxd.c + +Patch 7.2.210 +Problem: When a file that is being edited has its timestamp updated outside + of Vim and ":checktime" is used still get a warning when writing + the file. (Matt Mueller) +Solution: Store the timestamp in b_mtime_read when the timestamp is the only + thing that changed. +Files: src/fileio.c + +Patch 7.2.211 +Problem: Memory leak when expanding a series of file names. +Solution: Use ga_clear_strings() instead of ga_clear(). +Files: src/misc1.c + +Patch 7.2.212 (extra) +Problem: Warnings for redefining SIG macros. +Solution: Don't define them if already defined. (Bjorn Winckler) +Files: src/os_mac.h + +Patch 7.2.213 +Problem: Warning for using vsprintf(). +Solution: Use vim_vsnprintf(). +Files: src/netbeans.c + +Patch 7.2.214 +Problem: Crash with complete function for user command. (Andy Wokula) +Solution: Avoid using a NULL pointer (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.215 +Problem: ml_get error when using ":vimgrep". +Solution: Load the memfile for the hidden buffer before putting it in a + window. Correct the order of splitting the window and filling + the window and buffer with data. +Files: src/fileio.c, src/proto/window.pro, src/quickfix.c, src/window.c + +Patch 7.2.216 +Problem: Two error messages have the same number E812. +Solution: Give one message a different number. +Files: runtime/doc/autocmd.txt, runtime/doc/if_mzsch.txt, src/if_mzsch.c + +Patch 7.2.217 +Problem: Running tests with valgrind doesn't work as advertised. +Solution: Fix the line in the Makefile. +Files: src/testdir/Makefile + +Patch 7.2.218 +Problem: Cannot build GTK with hangul_input feature. (Dominique Pelle) +Solution: Adjust #ifdef. (SungHyun Nam) +Files: src/gui.c + +Patch 7.2.219 (extra) +Problem: Photon GUI is outdated. +Solution: Updates for QNX 6.4.0. (Sean Boudreau) +Files: src/gui_photon.c + +Patch 7.2.220 (after 7.2.215) +Problem: a BufEnter autocommand that changes directory causes problems. + (Ajit Thakkar) +Solution: Disable autocommands when opening a hidden buffer in a window. +Files: src/fileio.c + +Patch 7.2.221 +Problem: X cut_buffer0 text is used as-is, it may be in the wrong encoding. +Solution: Convert between 'enc' and latin1. (James Vega) +Files: src/gui_gtk_x11.c, src/message.c, src/ops.c, src/proto/ui.pro, + src/ui.c + +Patch 7.2.222 +Problem: ":mksession" doesn't work properly with 'acd' set. +Solution: Make it work. (Yakov Lerner) +Files: src/ex_docmd.c + +Patch 7.2.223 +Problem: When a script is run with ":silent" it is not able to give warning + messages. +Solution: Add the ":unsilent" command. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.224 +Problem: Crash when using 'completefunc'. (Ingo Karkat) +Solution: Disallow entering edit() recursively when doing completion. +Files: src/edit.c + +Patch 7.2.225 +Problem: When using ":normal" a saved character may be executed. +Solution: Also store old_char when saving typeahead. +Files: src/getchar.c, src/structs.h + +Patch 7.2.226 +Problem: ml_get error after deleting the last line. (Xavier de Gaye) +Solution: When adjusting marks a callback may be invoked. Adjust the cursor + position before invoking deleted_lines_mark(). +Files: src/ex_cmds.c, src/ex_docmd.c, src/if_mzsch.c, src/if_python.c, + src/if_perl.xs, src/misc1.c + +Patch 7.2.227 +Problem: When using ":cd" in a script there is no way to track this. +Solution: Display the directory when 'verbose' is 5 or higher. +Files: src/ex_docmd.c + +Patch 7.2.228 +Problem: Cscope is limited to 8 connections. +Solution: Allocated the connection array to handle any number of + connections. (Dominique Pelle) +Files: runtime/doc/if_cscop.txt, src/if_cscope.h, src/if_cscope.c + +Patch 7.2.229 +Problem: Warning for shadowed variable. +Solution: Rename "wait" to "wait_time". +Files: src/os_unix.c + +Patch 7.2.230 +Problem: A few old lint-style ARGUSED comments. +Solution: Change to the new UNUSED style. +Files: src/getchar.c + +Patch 7.2.231 +Problem: Warning for unreachable code. +Solution: Add #ifdef. +Files: src/if_perl.xs + +Patch 7.2.232 +Problem: Cannot debug problems with being in a wrong directory. +Solution: When 'verbose' is 5 or higher report directory changes. +Files: src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro + +Patch 7.2.233 (extra part of 7.2.232) +Problem: Cannot debug problems with being in a wrong directory. +Solution: When 'verbose' is 5 or higher report directory changes. +Files: src/os_msdos.c, src/os_mswin.c, src/os_riscos.c, src/os_mac.h + +Patch 7.2.234 +Problem: It is not possible to ignore file names without a suffix. +Solution: Use an empty entry in 'suffixes' for file names without a dot. +Files: runtime/doc/cmdline.txt, src/misc1.c + +Patch 7.2.235 +Problem: Using CTRL-O z= in Insert mode has a delay before redrawing. +Solution: Reset msg_didout and msg_scroll. +Files: src/misc1.c, src/spell.c + +Patch 7.2.236 +Problem: Mac: Compiling with Ruby doesn't always work. +Solution: In configure filter out the --arch argument (Bjorn Winckler) +Files: src/configure.in, src/auto/configure + +Patch 7.2.237 +Problem: Crash on exit when window icon not set. +Solution: Copy terminal name when using it for the icon name. +Files: src/os_unix.c + +Patch 7.2.238 +Problem: Leaking memory when setting term to "builtin_dumb". +Solution: Free memory when resetting term option t_Co. +Files: src/option.c, src/proto/option.pro, src/term.c + +Patch 7.2.239 +Problem: Using :diffpatch twice or when patching fails causes memory + corruption and/or a crash. (Bryan Venteicher) +Solution: Detect missing output file. Avoid using non-existing buffer. +Files: src/diff.c + +Patch 7.2.240 +Problem: Crash when using find/replace dialog repeatedly. (Michiel + Hartsuiker) +Solution: Avoid doing the operation while busy or recursively. Also refuse + replace when text is locked. +Files: src/gui.c + +Patch 7.2.241 +Problem: When using a combination of ":bufdo" and "doautoall" we may end up + in the wrong directory. (Ajit Thakkar) + Crash when triggering an autocommand in ":vimgrep". (Yukihiro + Nakadaira) +Solution: Clear w_localdir and globaldir when using the aucmd_win. + Use a separate flag to decide aucmd_win needs to be restored. +Files: src/fileio.c, src/globals.h, src/structs.h + +Patch 7.2.242 +Problem: Setting 'lazyredraw' causes the cursor column to be recomputed. + (Tom Link) +Solution: Only recompute the cursor column for a boolean option if changes + the cursor position. +Files: src/option.c + +Patch 7.2.243 +Problem: Memory leak when using :vimgrep and resizing. (Dominique Pelle) +Solution: Free memory for aucmd_win when resizing and don't allocate it + twice. +Files: src/screen.c + +Patch 7.2.244 +Problem: When 'enc' is utf-8 and 'fenc' is latin1, writing a non-latin1 + character gives a conversion error without any hint what is wrong. +Solution: When known add the line number to the error message. +Files: src/fileio.c + +Patch 7.2.245 +Problem: When 'enc' is "utf-16" and 'fenc' is "utf-8" writing a file does + conversion while none should be done. (Yukihiro Nakadaira) When + 'fenc' is empty the file is written as utf-8 instead of utf-16. +Solution: Do proper comparison of encodings, taking into account that all + Unicode values for 'enc' use utf-8 internally. +Files: src/fileio.c + +Patch 7.2.246 +Problem: Cscope home page link is wrong. +Solution: Update the URL. (Sergey Khorev) +Files: runtime/doc/if_cscop.txt + +Patch 7.2.247 +Problem: Mzscheme interface minor problem. +Solution: Better error message when build fails. (Sergey Khorev) +Files: src/if_mzsch.c + +Patch 7.2.248 (extra) +Problem: Mzscheme interface building minor problems. +Solution: Update Win32 makefiles. (Sergey Khorev) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.2.249 +Problem: The script to check .po files can't handle '%' in plural forms. +Solution: Remove "Plural-Forms:" from the checked string. +Files: src/po/check.vim + +Patch 7.2.250 (extra) +Problem: Possible buffer overflow. +Solution: Compute the remaining space. (Dominique Pelle) +Files: src/GvimExt/gvimext.cpp + +Patch 7.2.251 (after 7.2.044) +Problem: Compiler adds invalid memory bounds check. +Solution: Remove _FORTIFY_SOURCE=2 from CFLAGS. (Dominique Pelle) +Files: src/auto/configure, src/configure.in + +Patch 7.2.252 +Problem: When using a multibyte 'enc' the 'iskeyword' option cannot + contain characters above 128. +Solution: Use mb_ptr2char_adv(). +Files: src/charset.c + +Patch 7.2.253 +Problem: Netbeans interface: getLength always uses current buffer. +Solution: Use ml_get_buf() instead of ml_get(). (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.2.254 +Problem: Compiler warning for assigning size_t to int. +Solution: Use size_t for the variable. (George Reilly) +Files: src/fileio.c + +Patch 7.2.255 (after 7.2.242) +Problem: Setting 'rightleft', 'linebreak' and 'wrap' may cause cursor to be + in wrong place. +Solution: Recompute the cursor column for these options. +Files: src/option.c + +Patch 7.2.256 +Problem: When 'guifont' was not set GTK font dialog doesn't have a default. + (Andreas Metzler) +Solution: Set default to DEFAULT_FONT. (James Vega) +Files: src/gui_gtk_x11.c + +Patch 7.2.257 +Problem: With GTK 2.17 lots of assertion error messages. +Solution: Remove check for static gravity. (Sebastian Droege) +Files: src/gui_gtk_f.c + +Patch 7.2.258 +Problem: v:beval_col and b:beval_text are wrong in UTF-8 text. (Tony + Mechelynck) +Solution: Use byte number instead of character number for the column. +Files: src/ui.c + +Patch 7.2.259 +Problem: exists() doesn't work properly for an empty aucmd group. +Solution: Change how au_exists() handles a missing pattern. Also add a + test for this. (Bob Hiestand) +Files: src/fileio.c, src/testdir/Makefile, src/testdir/test67.in, + src/testdir/test67.ok + +Patch 7.2.260 (extra part of 7.2.259) +Problem: exists() doesn't work properly for empty aucmd group. +Solution: Change how au_exists() handles a missing pattern. Also add a + test for this. (Bob Hiestand) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.261 +Problem: When deleting lines with a specific folding configuration E38 may + appear. (Shahaf) +Solution: When adjusting nested folds for deleted lines take into account + that they don't start at the top of the enclosing fold. +Files: src/fold.c + +Patch 7.2.262 +Problem: When using custom completion for a user command the pattern string + goes beyond the cursor position. (Hari Krishna Dara) +Solution: Truncate the string at the cursor position. +Files: src/ex_getln.c, src/structs.h + +Patch 7.2.263 +Problem: GTK2: when using the -geom argument with an offset from the right + edge and the size is smaller than the default, the Vim window is + not positioned properly. +Solution: Use another function to set the size. (Vitaly Minko) +Files: src/gui_gtk_x11.c + +Patch 7.2.264 +Problem: GTK2: When the Vim window is maximized setting 'columns' or + 'lines' doesn't work. +Solution: Unmaximize the window before setting the size. (Vitaly Minko) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.2.265 +Problem: When using ":silent broken" inside try/catch silency may persist. + (dr-dr xp) +Solution: Set msg_silent when there is an error and it's bigger than the + saved value. +Files: src/ex_docmd.c + +Patch 7.2.266 +Problem: When an expression abbreviation is triggered, the typed character + is unknown. +Solution: Make the typed character available in v:char. +Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, src/ops.c, + src/proto/eval.pro + +Patch 7.2.267 +Problem: Crash for narrow window and double-width character. +Solution: Check for zero width. (Taro Muraoka) +Files: src/charset.c + +Patch 7.2.268 +Problem: Crash when using Python to set cursor beyond end of line. + (winterTTr) +Solution: Check the column to be valid. +Files: src/if_python.c + +Patch 7.2.269 +Problem: Many people struggle to find out why Vim startup is slow. +Solution: Add the --startuptime command line flag. +Files: runtime/doc/starting.txt, src/globals.h, src/feature.h, + src/main.c, src/macros.h + +Patch 7.2.270 +Problem: Using ":@c" when the c register contains a CR causes the rest to + be executed later. (Dexter Douglas) +Solution: Don't check for typeahead to start with ':', keep executing + commands until all added typeahead has been used. +Files: src/ex_docmd.c + +Patch 7.2.271 +Problem: Using freed memory in Motif GUI version when making a choice. +Solution: Free memory only after using it. (Dominique Pelle) +Files: src/gui_xmdlg.c + +Patch 7.2.272 +Problem: "_.svz" is not recognized as a swap file. (David M. Besonen) +Solution: Accept .s[uvw][a-z] as a swap file name extension. +Files: src/memline.c + +Patch 7.2.273 +Problem: Crash with redir to unknown array. (Christian Brabandt) +Solution: Don't assign the redir result when there was an error. +Files: src/eval.c + +Patch 7.2.274 +Problem: Syntax folding doesn't work properly when adding a comment. +Solution: Fix it and add a test. (Lech Lorens) +Files: src/fold.c, src/testdir/test45.in, src/testdir/test45.ok + +Patch 7.2.275 +Problem: Warning for unused argument and comparing signed and unsigned. +Solution: Add type cast. +Files: src/memline.c + +Patch 7.2.276 +Problem: Crash when setting 'isprint' to a small bullet. (Raul Coronado) +Solution: Check for the character to be < 256. Also make it possible to + specify a range of multibyte characters. (Lech Lorens) +Files: src/charset.c + +Patch 7.2.277 +Problem: CTRL-Y in a diff'ed window may move the cursor outside of the + window. (Lech Lorens) +Solution: Limit the number of filler lines to the height of the window. + Don't reset filler lines to zero for an empty buffer. +Files: src/move.c + +Patch 7.2.278 +Problem: Using magic number in the folding code. +Solution: Use the defined MAX_LEVEL. +Files: src/fold.c + +Patch 7.2.279 +Problem: Invalid memory read with visual mode "r". (Dominique Pelle) +Solution: Make sure the cursor position is valid. Don't check the cursor + position but the position being used. And make sure we get the + right line. +Files: src/misc2.c, src/ops.c + +Patch 7.2.280 +Problem: A redraw in a custom statusline with %! may cause a crash. + (Yukihiro Nakadaira) +Solution: Make a copy of 'statusline'. Also fix typo in function name + redraw_custom_statusline. (partly by Dominique Pelle) +Files: src/screen.c + +Patch 7.2.281 +Problem: 'cursorcolumn' highlighting is wrong in diff mode. +Solution: Adjust the column computation. (Lech Lorens) +Files: src/screen.c + +Patch 7.2.282 +Problem: A fold can't be closed. +Solution: Initialize fd_small to MAYBE. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.283 +Problem: Changing font while the window is maximized doesn't keep the + window maximized. +Solution: Recompute number of lines and columns after changing font. (James + Vega) +Files: src/gui_gtk_x11.c + +Patch 7.2.284 +Problem: When editing the same buffer in two windows, one with folding, + display may be wrong after changes. +Solution: Call set_topline() to take care of side effects. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.285 (after 7.2.169) +Problem: CTRL-U in Insert mode also deletes indent. (Andrey Voropaev) +Solution: Fix mistake made in patch 7.2.169. +Files: src/edit.c + +Patch 7.2.286 (after 7.2.269) +Problem: The "--startuptime=<file>" argument is not consistent with other + arguments. +Solution: Use "--startuptime <file>". Added the +startuptime feature. +Files: runtime/doc/eval.txt, runtime/doc/starting.txt, + runtime/doc/various.txt, src/eval.c, src/main.c, src/version.c + +Patch 7.2.287 +Problem: Warning from gcc 3.4 about uninitialized variable. +Solution: Move assignment outside of #ifdef. +Files: src/if_perl.xs + +Patch 7.2.288 +Problem: Python 2.6 pyconfig.h redefines macros. +Solution: Undefine the macros before including pyconfig.h. +Files: src/if_python.c + +Patch 7.2.289 +Problem: Checking wrong struct member. +Solution: Change tb_buf to tb_noremap. (Dominique Pelle) +Files: src/getchar.c + +Patch 7.2.290 +Problem: Not freeing memory from ":lmap", ":xmap" and ":menutranslate". +Solution: Free the memory when exiting. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.2.291 +Problem: Reading uninitialised memory in arabic mode. +Solution: Use utfc_ptr2char_len() rather than utfc_ptr2char(). (Dominique + Pelle) +Files: src/screen.c + +Patch 7.2.292 +Problem: Block right-shift doesn't work properly with multibyte encoding + and 'list' set. +Solution: Add the missing "else". (Lech Lorens) +Files: src/ops.c + +Patch 7.2.293 +Problem: When setting 'comments' option it may be used in a wrong way. +Solution: Don't increment after skipping over digits. (Yukihiro Nakadaira) +Files: src/misc1.c + +Patch 7.2.294 +Problem: When using TEMPDIRS dir name could get too long. +Solution: Overwrite tail instead of appending each time. Use mkdtemp() when + available. (James Vega) +Files: src/auto/configure, src/config.h.in, src/configure.in, src/fileio.c + +Patch 7.2.295 +Problem: When using map() on a List the index is not known. +Solution: Set v:key to the index. (Hari Krishna Dara) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.2.296 +Problem: Help message about startuptime is wrong. (Dominique Pelle) +Solution: Remove the equal sign. +Files: src/main.c + +Patch 7.2.297 +Problem: Reading freed memory when writing ":reg" output to a register. + (Dominique Pelle) +Solution: Skip the register being written to. +Files: src/ops.c + +Patch 7.2.298 +Problem: ":vimgrep" crashes when there is an autocommand that sets a + window-local variable. +Solution: Initialize the w: hashtab for re-use. (Yukihiro Nakadaira) +Files: src/fileio.c + +Patch 7.2.299 +Problem: Crash when comment middle is longer than start. +Solution: Fix size computation. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.300 +Problem: Vim doesn't close file descriptors when forking and executing + another command, e.g., ":shell". +Solution: Use FD_CLOEXEC when available. (James Vega) +Files: auto/configure, src/config.h.in, src/configure.in, + src/ex_cmdds2.c, src/fileio.c, src/memfile.c, src/memline.c + +Patch 7.2.301 +Problem: Formatting is wrong when 'tw' is set to a small value. +Solution: Fix it and add tests. Also fix behavior of "1" in 'fo'. (Yukihiro + Nakadaira) +Files: src/edit.c, src/testdir/Makefile, src/testdir/test68.in, + src/testdir/test68.ok, src/testdir/test69.in, + src/testdir/test69,ok + +Patch 7.2.302 (extra part of 7.2.301) +Problem: Formatting wrong with small 'tw' value. +Solution: Add build rules for tests. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.2.303 (after 7.2.294) +Problem: Can't build on MS-Windows. +Solution: Add #ifdef around vim_settempdir(). (James Vega) +Files: src/fileio.c + +Patch 7.2.304 +Problem: Compiler warning for bad pointer cast. +Solution: Use another variable for int pointer. +Files: src/ops.c + +Patch 7.2.305 +Problem: Recursively redrawing causes a memory leak. (Dominique Pelle) +Solution: Disallow recursive screen updating. +Files: src/screen.c + +Patch 7.2.306 +Problem: shellescape("10%%", 1) only escapes first %. (Christian Brabandt) +Solution: Don't copy the character after the escaped one. +Files: src/misc2.c + +Patch 7.2.307 +Problem: Crash with a very long syntax match statement. (Guy Gur Ari) +Solution: When the offset does not fit in the two bytes available give an + error instead of continuing with invalid pointers. +Files: src/regexp.c + +Patch 7.2.308 +Problem: When using a regexp in the "\=" expression of a substitute + command, submatch() returns empty strings for further lines. + (Clockwork Jam) +Solution: Save and restore the line number and line count when calling + reg_getline(). +Files: src/regexp.c + +Patch 7.2.309 (after 7.2.308) +Problem: Warning for missing function prototype. (Patrick Texier) +Solution: Add the prototype. +Files: src/regexp.c + +Patch 7.2.310 +Problem: When a filetype plugin in ~/.vim/ftdetect uses ":setfiletype" and + the file starts with a "# comment" it gets "conf" filetype. +Solution: Check for "conf" filetype after using ftdetect plugins. +Files: runtime/filetype.vim + +Patch 7.2.311 +Problem: Can't compile with FreeMiNT. +Solution: Change #ifdef for limits.h. (Alan Hourihane) +Files: src/fileio.c + +Patch 7.2.312 +Problem: iconv() returns an invalid character sequence when conversion + fails. It should return an empty string. (Yongwei Wu) +Solution: Be more strict about invalid characters in the input. +Files: src/mbyte.c + +Patch 7.2.313 +Problem: Command line completion doesn't work after "%:h" and similar. +Solution: Expand these items before doing the completion. +Files: src/ex_getln.c, src/misc1.c, src/proto/misc1.pro + +Patch 7.2.314 +Problem: Missing function in small build. +Solution: Always include concat_str. +Files: src/misc1.c + +Patch 7.2.315 +Problem: Python libs can't be found on 64 bit system. +Solution: Add lib64 to the list of directories. (Michael Henry) +Files: src/auto/configure, src/configure.in + +Patch 7.2.316 +Problem: May get multiple _FORTIFY_SOURCE arguments. (Tony Mechelynck) +Solution: First remove all these arguments and then add the one we want. + (Dominique Pelle) +Files: src/auto/configure, src/configure.in + +Patch 7.2.317 +Problem: Memory leak when adding a highlight group with unprintable + characters, resulting in E669. +Solution: Free the memory. And fix a few typos. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.2.318 +Problem: Wrong locale value breaks floating point numbers for gvim. +Solution: Set the locale again after doing GUI inits. (Dominique Pelle) +Files: src/main.c + +Patch 7.2.319 +Problem: Motif: accessing freed memory when cancelling font dialog. +Solution: Destroy the widget only after accessing it. (Dominique Pelle) +Files: src/gui_xmdlg.c + +Patch 7.2.320 +Problem: Unused function in Mzscheme interface. +Solution: Remove the function and what depends on it. (Dominique Pelle) +Files: src/if_mzsch.c, src/proto/if_mzsch.pro + +Patch 7.2.321 +Problem: histadd() and searching with "*" fails to add entry to history + when it is empty. +Solution: Initialize the history. (Lech Lorens) +Files: src/eval.c, src/normal.c + +Patch 7.2.322 +Problem: Wrong indenting in virtual replace mode with CTRL-Y below a short + line. +Solution: Check for character to be NUL. (suggested by Lech Lorens) +Files: src/edit.c + +Patch 7.2.323 (extra) +Problem: Balloon evaluation crashes on Win64. +Solution: Change pointer types. (Sergey Khorev) +Files: src/gui_w32.c + +Patch 7.2.324 +Problem: A negative column argument in setpos() may cause a crash. +Solution: Check for invalid column number. (James Vega) +Files: src/eval.c, src/misc2.c + +Patch 7.2.325 +Problem: A stray "w" in the startup vimrc file causes the edited file to be + replaced with an empty file. (Stone Kang). +Solution: Do not write a buffer when it has never been loaded. +Files: src/fileio.c + +Patch 7.2.326 +Problem: Win32: $HOME doesn't work when %HOMEPATH% is not defined. +Solution: Use "\" for %HOMEPATH% when it is not defined. +Files: src/misc1.c + +Patch 7.2.327 +Problem: Unused functions in Workshop. +Solution: Add "#if 0" and minor cleanup. (Dominique Pelle) +Files: src/workshop.c, src/integration.c, src/integration.h + +Patch 7.2.328 +Problem: has("win64") does not return 1 on 64 bit MS-Windows version. +Solution: Also check for _WIN64 besides WIN64. +Files: src/eval.c + +Patch 7.2.329 +Problem: "g_" doesn't position cursor correctly when in Visual mode and + 'selection' is "exclusive". (Ben Fritz) +Solution: Call adjust_for_sel(). +Files: src/normal.c + +Patch 7.2.330 +Problem: Tables for Unicode case operators are outdated. +Solution: Add a Vim script for generating the tables. Include tables for + Unicode 5.2. +Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.2.331 +Problem: Can't interrupt "echo list" for a very long list. +Solution: Call line_breakcheck() in list_join(). +Files: src/eval.c + +Patch 7.2.332 +Problem: Crash when spell correcting triggers an autocommand that reloads + the buffer. +Solution: Make a copy of the line to be modified. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.333 +Problem: Warnings from static code analysis. +Solution: Small changes to various lines. (Dominique Pelle) +Files: src/buffer.c, src/edit.c, src/ex_getln.c, src/fileio.c, + src/if_cscope.c, src/netbeans.c, src/ops.c, src/quickfix.c, + src/syntax.c, src/ui.c + +Patch 7.2.334 +Problem: Postponing keys in Netbeans interface does not work properly. +Solution: Store the key string instead of the number. Avoid an infinite + loop. (Mostly by Xavier de Gaye) +Files: src/netbeans.c, src/proto/netbeans.pro + +Patch 7.2.335 +Problem: The CTRL-] command escapes too many characters. +Solution: Use a different list of characters to be escaped. (Sergey Khorev) +Files: src/normal.c + +Patch 7.2.336 +Problem: MzScheme interface can't evaluate an expression. +Solution: Add mzeval(). (Sergey Khorev) +Files: runtime/doc/eval.txt, runtime/doc/if_mzsch.txt, + runtime/doc/usr_41.txt, src/eval.c, src/if_mzsch.c, + src/proto/eval.pro, src/proto/if_mzsch.pro, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Makefile, src/testdir/main.aap, src/testdir/test1.in, + src/testdir/test70.in, src/testdir/test70.ok + +Patch 7.2.337 +Problem: The :compiler command doesn't function properly when invoked in a + function. +Solution: Add "g:" before "current_compiler". (Yukihiro Nakadaira) +Files: src/ex_cmds2.c + +Patch 7.2.338 (after 7.2.300) +Problem: Part of FD_CLOEXEC change is missing. +Solution: Include source file skipped because of typo. +Files: src/ex_cmds2.c + +Patch 7.2.339 (after 7.2.269) +Problem: Part of --startuptime patch is missing. +Solution: Add check for time_fd. +Files: src/ex_cmds2.c + +Patch 7.2.340 +Problem: Gcc warning for condition that can never be true. (James Vega) +Solution: Use start_lvl instead flp->lvl. +Files: src/fold.c + +Patch 7.2.341 +Problem: Popup menu wraps to next line when double-wide character doesn't + fit. (Jiang Ma) +Solution: Display a ">" instead. (Dominique Pelle) +Files: src/screen.c + +Patch 7.2.342 +Problem: Popup menu displayed wrong in 'rightleft' mode when there are + multibyte characters. +Solution: Adjust the column computations. (Dominique Pelle) +Files: src/popupmnu.c + +Patch 7.2.343 (after 7.2.338) +Problem: Can't compile on Win32. +Solution: Insert the missing '|'. +Files: src/ex_cmds2.c + +Patch 7.2.344 (after 7.2.343) +Problem: Can't compile on some systems +Solution: Move the #ifdef outside of the mch_open macro. (Patrick Texier) +Files: src/ex_cmds2.c + +Patch 7.2.345 +Problem: Tab line is not updated when the value of 'bt' is changed. +Solution: Call redraw_titles(). (Lech Lorens) +Files: src/option.c + +Patch 7.2.346 +Problem: Repeating a command with @: causes a mapping to be applied twice. +Solution: Do not remap characters inserted in the typeahead buffer. (Kana + Natsuno) +Files: src/ops.c + +Patch 7.2.347 +Problem: Crash when executing <expr> mapping redefines that same mapping. +Solution: Save the values used before evaluating the expression. +Files: src/getchar.c + +Patch 7.2.348 (after 7.2.330) +Problem: Unicode double-width characters are not up-to date. +Solution: Produce the double-width table like the others. +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.2.349 +Problem: CTRL-W gf doesn't put the new tab in the same place as "tab split" + and "gf". (Tony Mechelynck) +Solution: Store the tab number in cmdmod.tab. +Files: src/window.c + +Patch 7.2.350 +Problem: Win32: When changing font the window may jump from the secondary + to the primary screen. (Michael Wookey) +Solution: When the screen position was negative don't correct it to zero. +Files: src/gui.c + +Patch 7.2.351 (after 7.2.347) +Problem: Can't build with some compilers. +Solution: Move the #ifdef outside of a macro. Cleanup the code. +Files: src/getchar.c + +Patch 7.2.352 (extra) +Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. +Solution: Always return TRUE for the WM_NCCREATE message. (Andy Kittner) +Files: src/gui_w48.c + +Patch 7.2.353 +Problem: No command line completion for ":profile". +Solution: Complete the subcommand and file name. +Files: src/ex_docmd.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/vim.h + +Patch 7.2.354 +Problem: Japanese single-width double-byte characters not handled correctly. +Solution: Put 0x8e in ScreenLines[] and the second byte in ScreenLines2[]. + (partly by Kikuchan) +Files: src/screen.c + +Patch 7.2.355 +Problem: Computing the cursor column in validate_cursor_col() is wrong when + line numbers are used and 'n' is not in 'cpoptions', causing the + popup menu to be positioned wrong. +Solution: Correctly use the offset. (partly by Dominique Pelle) +Files: src/move.c + +Patch 7.2.356 +Problem: When 'foldmethod' is changed not all folds are closed as expected. +Solution: In foldUpdate() correct the start position and reset fd_flags when + w_foldinvalid is set. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.357 +Problem: When changing 'fileformat' from/to "mac" and there is a CR in the + text the display is wrong. +Solution: Redraw the text when 'fileformat' is changed. (Ben Schmidt) +Files: src/option.c + +Patch 7.2.358 +Problem: Compiler warnings on VMS. (Zoltan Arpadffy) +Solution: Pass array itself instead its address. Return a value. +Files: src/gui_gtk_x11.c, src/os_unix.c + +Patch 7.2.359 +Problem: Crash when using the Netbeans join command. +Solution: Make sure the ml_flush_line() function is not used recursively. + (Xavier de Gaye) +Files: src/memline.c + +Patch 7.2.360 +Problem: Ruby on MS-Windows: can't use sockets. +Solution: Call NtInitialize() during initialization. (Ariya Mizutani) +Files: src/if_ruby.c + +Patch 7.2.361 +Problem: Ruby 1.9 is not supported. +Solution: Add Ruby 1.9 support. (Masaki Suketa) +Files: src/Makefile, src/auto/configure, src/configure.in, src/if_ruby.c + +Patch 7.2.362 (extra, after 7.2.352) +Problem: Win64: Vim doesn't work when cross-compiled with MingW libraries. +Solution: Instead of handling WM_NCCREATE, create wide text area window + class if the parent window iw side. (Sergey Khorev) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.2.363 +Problem: Can't dynamically load Perl 5.10. +Solution: Add the function Perl_croak_xs_usage. (Sergey Khorev) +Files: src/if_perl.xs + +Patch 7.2.364 (extra) +Problem: Can't build gvimext.dll on Win 7 x64 using MinGW (John Marriott) +Solution: Check if _MSC_VER is defined. (Andy Kittner) +Files: src/GvimExt/gvimext.h + +Patch 7.2.365 (extra) +Problem: MS-Windows with MingW: "File->Save As" does not work. (John + Marriott) +Solution: Correctly fill in structure size. (Andy Kittner) +Files: src/gui_w48.c + +Patch 7.2.366 +Problem: CTRL-B doesn't go back to the first line of the buffer. +Solution: Avoid an overflow when adding MAXCOL. +Files: src/move.c + +Patch 7.2.367 +Problem: "xxd -r -p" doesn't work as documented. +Solution: Skip white space. (James Vega) +Files: src/xxd/xxd.c + +Patch 7.2.368 (after 7.2.361) +Problem: Ruby interface: Appending line doesn't work. (Michael Henry) +Solution: Reverse check for NULL line. (James Vega) +Files: src/if_ruby.c + +Patch 7.2.369 +Problem: Error message is not easy to understand. +Solution: Add quotes. (SungHyun Nam) +Files: src/ex_cmds2.c + +Patch 7.2.370 (after 7.2.356) +Problem: A redraw may cause folds to be closed. +Solution: Revert part of the previous patch. Add a test. (Lech Lorens) +Files: src/diff.c, src/fold.c, src/option.c, src/testdir/test45.in, + src/testdir/test45.ok + +Patch 7.2.371 +Problem: Build problems on Tandem NonStop. +Solution: A few changes to #ifdefs (Joachim Schmitz) +Files: src/auto/configure, src/configure.in, src/config.h.in, src/vim.h, + src/if_cscope.c, src/osdef1.h.in, src/tag.c + +Patch 7.2.372 (extra) +Problem: Cross-compiling GvimExt and xxd doesn't work. +Solution: Change the build files. (Markus Heidelberg) +Files: src/INSTALLpc.txt, src/GvimExt/Make_ming.mak, src/Make_cyg.mak, + src/Make_ming.mak, src/xxd/Make_cyg.mak + +Patch 7.2.373 +Problem: Gcc 4.5 adds more error messages. (Chris Indy) +Solution: Update default 'errorformat'. +Files: src/option.h + +Patch 7.2.374 +Problem: Ruby eval() doesn't understand Vim types. +Solution: Add the vim_to_ruby() function. (George Gensure) +Files: src/eval.c, src/if_ruby.c + +Patch 7.2.375 +Problem: ml_get errors when using ":bprevious" in a BufEnter autocmd. + (Dominique Pelle) +Solution: Clear w_valid when entering another buffer. +Files: src/buffer.c + +Patch 7.2.376 +Problem: ml_get error when using SiSU syntax. (Nathan Thomas) +Solution: If the match ends below the last line move it to the end of the + last line. +Files: src/syntax.c + +Patch 7.2.377 (extra, after 7.2.372) +Problem: Misplaced assignment. Duplicate build line for gvimext.dll. +Solution: Move setting CROSS_COMPILE to before ifneq. Remove the wrong + build line. (Markus Heidelberg) +Files: src/Make_ming.mak + +Patch 7.2.378 +Problem: C function declaration indented too much. (Rui) +Solution: Don't see a line containing { or } as a type. (Matt Wozniski) +Files: src/misc1.c + +Patch 7.2.379 +Problem: 'eventignore' is set to an invalid value inside ":doau". (Antony + Scriven) +Solution: Don't include the leading comma when the option was empty. +Files: src/fileio.c + +Patch 7.2.380 (after 7.2.363) +Problem: Perl interface builds with 5.10.1 but not with 5.10.0. +Solution: Change the #ifdefs. (Sergey Khorev) +Files: src/if_perl.xs + +Patch 7.2.381 +Problem: No completion for :behave. +Solution: Add :behave completion. Minor related fixes. (Dominique Pelle) +Files: src/ex_docmd.c, src/ex_getln.c, src/proto/ex_docmd.pro, src/vim.h + +Patch 7.2.382 +Problem: Accessing freed memory when closing the cmdline window when + 'bufhide' is set to "wipe". +Solution: Check if the buffer still exists before invoking close_buffer() + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.383 +Problem: Vim doesn't build cleanly with MSVC 2010. +Solution: Change a few types. (George Reilly) +Files: src/ex_cmds2.c, src/if_python.c, src/syntax.c + +Patch 7.2.384 (extra) +Problem: Vim doesn't build properly with MSVC 2010. +Solution: Add the nmake version to the build file. (George Reilly) +Files: src/Make_mvc.mak, src/testdir/Make_dos.mak + +Patch 7.2.385 +Problem: When in the command line window dragging status line only works + for last-but-one window. (Jean Johner) +Solution: Remove the code that disallows this. +Files: src/ui.c + +Patch 7.2.386 +Problem: Focus hack for KDE 3.1 causes problems for other window managers. +Solution: Remove the hack. (forwarded by Joel Bradshaw) +Files: src/gui_gtk.c + +Patch 7.2.387 +Problem: Ruby with MingW still doesn't build all versions. +Solution: More #ifdefs for the Ruby code. (Sergey Khorev) +Files: src/if_ruby.c + +Patch 7.2.388 (extra part of 7.2.387) +Problem: Ruby with MingW still doesn't build all versions. +Solution: Different approach to build file. (Sergey Khorev) +Files: src/Make_ming.mak + +Patch 7.2.389 +Problem: synIDattr() cannot return the font. +Solution: Support the "font" argument. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/syntax.c + +Patch 7.2.390 +Problem: In some situations the popup menu can be displayed wrong. +Solution: Remove the popup menu if the cursor moved. (Lech Lorens) +Files: src/edit.c + +Patch 7.2.391 +Problem: Internal alloc(0) error when doing "CTRL-V $ c". (Martti Kuparinen) +Solution: Fix computations in getvcol(). (partly by Lech Lorens) +Files: src/charset.c, src/memline.c + +Patch 7.2.392 +Problem: Netbeans hangs reading from a socket at the maximum block size. +Solution: Use select() or poll(). (Xavier de Gaye) +Files: src/vim.h, src/os_unixx.h, src/if_xcmdsrv.c, src/netbeans.c + +Patch 7.2.393 +Problem: Mac: Can't build with different Xcode developer tools directory. +Solution: make "Developer" directory name configurable. (Rainer Muller) +Files: src/configure.in, src/auto/configure + +Patch 7.2.394 +Problem: .lzma and .xz files are not supported. +Solution: Recognize .lzma and .xz files so that they can be edited. +Files: runtime/plugin/gzip.vim + +Patch 7.2.395 +Problem: In help CTRL=] on g?g? escapes the ?, causing it to fail. (Tony + Mechelynck) +Solution: Don't escape ? for a help command. (Sergey Khorev) +Files: src/normal.c + +Patch 7.2.396 +Problem: Get E38 errors. (Dasn) +Solution: Set cursor to line 1 instead of 0. (Dominique Pelle) +Files: src/popupmnu.c + +Patch 7.2.397 +Problem: Redundant check for w_lines_valid. +Solution: Remove the if. (Lech Lorens) +Files: src/fold.c + +Patch 7.2.398 +Problem: When moving windows the cursor ends up in the wrong line. +Solution: Set the window width and height properly. (Lech Lorens) +Files: src/window.c + +Patch 7.2.399 (extra, after 7.2.388) +Problem: Cannot compile on MingW. +Solution: Move ifneq to separate line. (Vlad Sandrini, Dominique Pelle) +Files: src/Make_ming.mak + +Patch 7.2.400 (after 7.2.387) +Problem: Dynamic Ruby is not initialised properly for version 1.9.1. + Ruby cannot create strings from NULL. +Solution: Cleanup #ifdefs. Handle NULL like an empty string. Add + ruby_init_stack. (Sergey Khorev) +Files: src/if_ruby.c + +Patch 7.2.401 +Problem: ":e dir<Tab>" with 'wildmode' set to "list" doesn't highlight + directory names with a space. (Alexandre Provencio) +Solution: Remove the backslash before checking if the name is a directory. + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.402 +Problem: This gives a #705 error: let X = function('haslocaldir') + let X = function('getcwd') +Solution: Don't give E705 when the name is found in the hashtab. (Sergey + Khorev) +Files: src/eval.c + +Patch 7.2.403 (after 7.2.400) +Problem: Compiler warning for pointer type. (Tony Mechelynck) +Solution: Move type cast to the right place. +Files: src/if_ruby.c + +Patch 7.2.404 +Problem: Pointers for composing characters are not properly initialized. +Solution: Compute the size of the pointer, not what it points to. (Yukihiro + Nakadaira) +Files: src/screen.c + +Patch 7.2.405 +Problem: When built with small features the matching text is not + highlighted for ":s/pat/repl/c". +Solution: Remove the #ifdef for IncSearch. (James Vega) +Files: src/syntax.c + +Patch 7.2.406 +Problem: Patch 7.2.119 introduces uninit mem read. (Dominique Pelle) +Solution: Only used ScreenLinesC when ScreenLinesUC is not zero. (Yukihiro + Nakadaira) Also clear ScreenLinesC when allocating. +Files: src/screen.c + +Patch 7.2.407 +Problem: When using an expression in ":s" backslashes in the result are + dropped. (Sergey Goldgaber, Christian Brabandt) +Solution: Double backslashes. +Files: src/regexp.c + +Patch 7.2.408 +Problem: With ":g/the/s/foo/bar/" the '[ and '] marks can be set to a line + that was not changed. +Solution: Only set '[ and '] marks when a substitution was done. +Files: src/ex_cmds.c + +Patch 7.2.409 +Problem: Summary of number of substitutes is incorrect for ":folddo". (Jean + Johner) +Solution: Reset sub_nsubs and sub_nlines in global_exe(). +Files: src/ex_cmds.c + +Patch 7.2.410 +Problem: Highlighting directories for completion doesn't work properly. +Solution: Don't halve backslashes when not needed, expanded "~/". + (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.2.411 +Problem: When parsing 'cino' a comma isn't skipped properly. +Solution: Skip the comma. (Lech Lorens) +Files: src/misc1.c + +Patch 7.2.412 +Problem: [ or ] followed by mouse click doesn't work. +Solution: Reverse check for key being a mouse event. (Dominique Pelle) +Files: src/normal.c + +Patch 7.2.413 +Problem: Large file support is incorrect. +Solution: Add AC_SYS_LARGEFILE to configure. (James Vega) +Files: src/configure.in, src/config.h.in, src/auto/configure + +Patch 7.2.414 +Problem: CTRL-K <space> <space> does not produce 0xa0 as expected. (Tony + Mechelynck) +Solution: Remove the Unicode range 0xe000 - 0xefff from digraphs, these are + not valid characters. +Files: src/digraph.c + +Patch 7.2.415 +Problem: Win32: Can't open a remote file when starting Vim. +Solution: Don't invoke cygwin_conv_path() for URLs. (Tomoya Adachi) +Files: src/main.c + +Patch 7.2.416 +Problem: Logtalk.dict is not installed. +Solution: Add it to the install target. (Markus Heidelberg) +Files: src/Makefile + +Patch 7.2.417 +Problem: When 'shell' has an argument with a slash then 'shellpipe' is not + set properly. (Britton Kerin) +Solution: Assume there are no spaces in the path, arguments follow. +Files: src/option.c + +Patch 7.2.418 +Problem: Vim tries to set the background or foreground color in a terminal + to -1. (Graywh) Happens with ":hi Normal ctermbg=NONE". +Solution: When resetting the foreground or background color don't set the + color, let the clear screen code do that. +Files: src/syntax.c + +Patch 7.2.419 +Problem: Memory leak in Motif when clicking on "Search Vim Help". +Solution: Free string returned by XmTextGetString(). (Dominique Pelle) +Files: src/gui_motif.c + +Patch 7.2.420 +Problem: ":argedit" does not accept "++enc=utf8" as documented. (Dominique + Pelle) +Solution: Add the ARGOPT flag to ":argedit". +Files: src/ex_cmds.h + +Patch 7.2.421 +Problem: Folds are sometimes not updated properly and there is no way to + force an update. +Solution: Make "zx" and "zX" recompute folds (suggested by Christian + Brabandt) +Files: src/normal.c + +Patch 7.2.422 +Problem: May get E763 when using spell dictionaries. +Solution: Avoid utf-8 case folded character to be truncated to 8 bits and + differ from latin1. (Dominique Pelle) +Files: src/spell.c + +Patch 7.2.423 +Problem: Crash when assigning s: to variable. (Yukihiro Nakadaira) +Solution: Make ga_scripts contain pointer to scriptvar_T instead of + scriptvar_T itself. (Dominique Pelle) +Files: src/eval.c + +Patch 7.2.424 +Problem: ":colorscheme" without an argument doesn't do anything. +Solution: Make it echo the current color scheme name. (partly by Christian + Brabandt) +Files: runtime/doc/syntax.txt, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.425 +Problem: Some compilers complain about fourth EX() argument. +Solution: Add cast to long_u. +Files: src/ex_cmds.h + +Patch 7.2.426 +Problem: Commas in 'langmap' are not always handled correctly. +Solution: Require commas to be backslash escaped. (James Vega) +Files: src/option.c + +Patch 7.2.427 +Problem: The swapfile is created using the destination of a symlink, but + recovery doesn't follow symlinks. +Solution: When recovering, resolve symlinks. (James Vega) +Files: src/memline.c + +Patch 7.2.428 +Problem: Using setqflist([]) to clear the error list doesn't work properly. +Solution: Set qf_nonevalid to TRUE when appropriate. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.2.429 +Problem: A file that exists but access is denied may result in a "new file" + message. E.g. when its directory is unreadable. +Solution: Specifically check for ENOENT to decide a file doesn't exist. + (partly by James Vega) +Files: src/fileio.c + +Patch 7.2.430 +Problem: The ++bad argument is handled wrong, resulting in an invalid + memory access. +Solution: Use the bad_char field only for the replacement character, add + bad_char_idx to store the position. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.431 +Problem: ":amenu" moves the cursor when in Insert mode. +Solution: Use CTRL-\ CTRL-O instead of CTRL-O. (Christian Brabandt) +Files: src/menu.c + +Patch 7.2.432 +Problem: When menus are translated they can only be found by the translated + name. That makes ":emenu" difficult to use. +Solution: Store the untranslated name and use it for completion and :emenu. + (Liang Peng (Bezetek James), Edward L. Fox) +Files: src/menu.c, src/structs.h + +Patch 7.2.433 +Problem: Can't use cscope with QuickFixCmdPre and QuickFixCmdPost. +Solution: Add cscope support for these autocmd events. (Bryan Venteicher) +Files: runtime/doc/autocmd.txt, src/if_cscope.c + +Patch 7.2.434 (after 7.2.432) +Problem: Compilation fails without the multi-lang feature. +Solution: Add #ifdefs. (John Marriott) +Files: src/menu.c + +Patch 7.2.435 (after 7.2.430) +Problem: Crash when using bad_char_idx uninitialized. (Patrick Texier) +Solution: Don't use bad_char_idx, reproduce the ++bad argument from bad_char. +Files: src/eval.c, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.2.436 +Problem: Reproducible crash in syntax HL. (George Reilly, Dominique Pelle) +Solution: Make sst_stacksize an int instead of short. (Dominique Pelle) +Files: src/structs.h + +Patch 7.2.437 (after 7.2.407) +Problem: When "\\\n" appears in the expression result the \n doesn't result + in a line break. (Andy Wokula) +Solution: Also replace a \n after a backslash into \r. +Files: src/regexp.c + +Patch 7.2.438 (after 7.2.427) +Problem: "vim -r" crashes. +Solution: Don't use NULL pointer argument. +Files: src/memline.c + +Patch 7.2.439 +Problem: Invalid memory access when doing thesaurus completion and + 'infercase' is set. +Solution: Use the minimal length of completed word and replacement. + (Dominique Pelle) +Files: src/edit.c + +Patch 7.2.440 +Problem: Calling a function through a funcref, where the function deletes + the funcref, leads to an invalid memory access. +Solution: Make a copy of the function name. (Lech Lorens) +Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok + +Patch 7.2.441 +Problem: When using ":earlier" undo information may be wrong. +Solution: When changing alternate branches also adjust b_u_oldhead. +Files: src/undo.c + +Patch 7.2.442 (after 7.2.201) +Problem: Copy/paste with OpenOffice doesn't work. +Solution: Do not offer the HTML target when it is not supported. (James + Vega) +Files: src/gui_gtk_x11.c, src/option.c, src/proto/gui_gtk_x11.pro + +Patch 7.2.443 +Problem: Using taglist() on a tag file with duplicate fields generates an + internal error. (Peter Odding) +Solution: Check for duplicate field names. +Files: src/eval.c, src/proto/eval.pro, src/tag.c + +Patch 7.2.444 (after 7.2.442) +Problem: Can't build with GTK 1, gtk_selection_clear_targets() is not + available. (Patrick Texier) +Solution: Don't change the targets for GTK 1, set them once. +Files: src/gui_gtk_x11.c, src/option.c + +Patch 7.2.445 +Problem: Crash when using undo/redo and a FileChangedRO autocmd event that + reloads the buffer. (Dominique Pelle) +Solution: Do not allow autocommands while performing and undo or redo. +Files: src/misc1.c, src/undo.c + +Patch 7.2.446 +Problem: Crash in GUI when closing the last window in a tabpage. (ryo7000) +Solution: Remove the tabpage from the list before freeing the window. +Files: src/window.c + +When writing a file, switching tab pages and selecting a word the file write +message would be displayed again. This happened in Insert mode and with +'cmdheight' set to 2. + +When using ":lang" to set a locale that uses a comma for decimal separator and +using GTK floating point numbers stop working. Use gtk_disable_setlocale(). +(James Vega) + +"g8" didn't produce the right value on a NUL. (Dominique Pelle) + +Use BASEMODLIBS instead of MODLIBS for Python configuration to pick up the +right compiler flags. (Michael Bienia) + +Window title was not updated after dropping a file on Vim. (Hari G) + +synstack() did not return anything when just past the end of the line. Useful +when using the cursor position in Insert mode. + +When entering a digraph or special character after a line that fits the window +the '?' or '^' on the next line is not redrawn. (Ian Kelling) + +Composing characters in |:s| substitute text were dropped. + +|exists()| was causing an autoload script to be loaded. + +Filter out -pthread for cproto. + +Make CTRL-L in command line mode respect 'ignorecase' and 'smartcase'. (Martin +Toft) + +Spell menu moved the cursor, causing Copy not to work. Spell replacement +didn't work in 'compatible' mode. + +Various small fixes from Dominique Pelle. + +Fix that :mksession may generate "2argu" even though there is no such +argument. (Peter Odding) + +Fixes for time in clipboard request. Also fix ownership. (David Fries) + +Fixed completion of file names with '%' and '*'. + +Fixed MSVC makefile use of /Wp64 flag. + +Correct use of long instead of off_t for file size. (James Vega) + +Add a few #ifdefs to exclude functions that are not used. (Dominique Pelle) + +Remove old and unused method to allocate memory for undo. + +Fix definition of UINT_PTR for 64 bit systems. + +Some versions of Ruby redefine rb_str_new2 to rb_str_new_cstr. + +Window title not updated after file dropped. + +Fixed crash for ":find" completion, might also happen in other path expansion +usage. + +When 'searchhl' causes a hang make CTRL-C disable 'searchhl'. + +When resetting both 'title' and 'icon' the title would be set after a shell +command. + +Reset 'title' and 'icon' in test47 to avoid the xterm title getting messed up. + +Fix for compiler warning about function prototype in pty.c. + +Added 'window' to the options window. + +Fixed: errors for allocating zero bytes when profiling an empty function. + +Remove -arch flag from build flags for Perl. (Bjorn Wickler) + +Fix 'autochdir' not showing up in :options window. (Dominique Pelle) + +Fix: test 69 didn't work on MS-Windows. Test 72 beeped too often. + +Avoid illegal memory access in spell suggestion. (Dominique Pelle) +Fix: crash in spell checking with a 0x300 character. + +Avoid that running tests changes viminfo. + +Fix: changing case of a character removed combining characters. +Fixed: CTRL-R in Insert mode doesn't insert composing characters. + +Added the WOW64 flag to OLE registration, for 64 bit Windows systems. + +Various fixes for coverity warnings. + +Fix compile warnings, esp. for 64-bit systems. (Mike Williams) + +Fix: :redir to a dictionary that is changed before ":redir END" causes a +memory access error. + +Fix: terminal title not properly restored when there are multibyte +characters. (partly by James Vega) + +Set 'wrapscan' when checking the .po files. (Mike Williams) + +Win32: Put quotes around the gvim.exe path for the "Open with" menu entry. + +On MS-Windows sometimes files with number 4913 or higher are left behind. + +'suffixesadd' was used for finding tags file. + +Removed unused code. + +Improved positioning of combining characters in GTK. + +Made test 11 pass when there is no gzip program. (John Beckett) + +Changed readfile() to ignore byte order marks, unless in binary mode. + +On MS-Windows completion of shell commands didn't work. + +An unprintable multibyte character at the start of the screen line caused the +following text to be drawn at the wrong position. + +Got ml_get errors when using undo with 'virtualedit'. + +Call gui_mch_update() before triggering GuiEnter autocmd. (Ron Aaron) + +Unix "make install" installed a few Amiga .info files. + +Disallow setting 'ambiwidth' to "double" when 'listchars' or 'fillchars' +contains a character that would become double width. + +Set 'wrapscan' when checking the .po files. (Mike Williams) + +Fixed: using expression in command line may cause a crash. + +Avoid warnings from the clang compiler. (Dominique Pelle) + +Fix: Include wchar.h in charset.c for towupper(). + +Fixed: Using ":read file" in an empty buffer when 'compatible' is set caused +an error. Was caused by patch 7.2.132. + +Make the references to features in the help more consistent. (Sylvain Hitier) + +============================================================================== +VERSION 7.4 *version-7.4* *version7.4* *vim-7.4* + +This section is about improvements made between version 7.3 and 7.4. + +This release has hundreds of bug fixes and there are a few new features. The +most notable new features are: + +- New regexp engine |new-regexp-engine| +- A more pythonic Python interface |better-python-interface| + + +New regexp engine *new-regexp-engine* +----------------- + +What is now called the "old" regexp engine uses a backtracking algorithm. It +tries to match the pattern with the text in one way, and when that fails it +goes back and tries another way. This works fine for simple patterns, but +complex patterns can be very slow on longer text. + +The new engine uses a state machine. It tries all possible alternatives at +the current character and stores the possible states of the pattern. This is +a bit slower for simple patterns, but much faster for complex patterns and +long text. + +Most notably, syntax highlighting for Javascript and XML files with long lines +is now working fine. Previously Vim could get stuck. + +More information here: |two-engines| + + +Better Python interface *better-python-interface* +----------------------- + +Added |python-bindeval| function. Unlike |python-eval| this one returns +|python-Dictionary|, |python-List| and |python-Function| objects for +dictionaries lists and functions respectively in place of their Python +built-in equivalents (or None if we are talking about function references). + For simple types this function returns Python built-in types and not only +Python `str()` like |python-eval| does. On Python 3 it will return `bytes()` +objects in place of `str()` ones avoiding possibility of UnicodeDecodeError. + Interface of new objects mimics standard Python `dict()` and `list()` +interfaces to some extent. Extent will be improved in the future. + +Added special |python-vars| objects also available for |python-buffer| and +|python-window|. They ease access to Vim script variables from Python. + +Now you no longer need to alter `sys.path` to import your module: special +hooks are responsible for importing from {rtp}/python2, {rtp}/python3 and +{rtp}/pythonx directories (for Python 2, Python 3 and both respectively). +See |python-special-path|. + +Added possibility to work with |tabpage|s through |python-tabpage| object. + +Added automatic conversion of Vim errors and exceptions to Python +exceptions. + +Changed the behavior of the |python-buffers| object: it now uses buffer numbers +as keys in place of the index of the buffer in the internal buffer list. +This should not break anything as the only way to get this index was +iterating over |python-buffers|. + +Added |:pydo| and |:py3do| commands. + +Added the |pyeval()| and |py3eval()| functions. + +Now in all places which previously accepted `str()` objects, `str()` and +`unicode()` (Python 2) or `bytes()` and `str()` (Python 3) are accepted. + +|python-window| has gained `.col` and `.row` attributes that are currently +the only way to get internal window positions. + +Added or fixed support for `dir()` in Vim Python objects. + + +Changed *changed-7.4* +------- + +Old Python versions (鈮2.2) are no longer supported. Building with them did +not work anyway. + +Options: + Added ability to automatically save the selection into the system + clipboard when using non-GUI version of Vim (autoselectplus in + 'clipboard'). Also added ability to use the system clipboard as + default register (previously only primary selection could be used). + (Ivan Krasilnikov, Christian Brabandt, Bram Moolenaar) + + Added a special 'shiftwidth' value that makes 'sw' follow 'tabstop'. + As indenting via 'indentexpr' became tricky |shiftwidth()| function + was added. Also added equivalent special value to 'softtabstop' + option. (Christian Brabandt, so8res) + + Show absolute number in number column when 'relativenumber' option is + on. Now there are four combinations with 'number' and + 'relativenumber'. (Christian Brabandt) + +Commands: + |:diffoff| now saves the local values of some settings and restores + them in place of blindly resetting them to the defaults. (Christian + Brabandt) + +Other: + Lua interface now also uses userdata bound to Vim structures. (Taro + Muraoka, Luis Carvalho) + + glob() and autocommand patterns used to work with the undocumented + "\{n,m\}" item from a regexp. "\{" is now used for a literal "{", as + this is normal in shell file patterns. Now used "\\\{n,m\}" to get + "\{n,m}" in the regexp pattern. + +Added *added-7.4* +----- + +Various syntax, indent and other plugins were added. + +Added support for |Lists| and |Dictionaries| in |viminfo|. (Christian +Brabandt) + +Functions: + Bitwise functions: |and()|, |or()|, |invert()|, |xor()|. + + Added |luaeval()| function. (Taro Muraoka, Luis Carvalho) + + Added |sha256()| function. (Tyru, Hirohito Higashi) + + Added |wildmenumode()| function. (Christian Brabandt) + + Debugging functions: |screenattr()|, |screenchar()|, |screencol()|, + |screenrow()|. (Simon Ruderich, Bram Moolenaar) + + Added ability to use |Dictionary-function|s for |sort()|ing, via + optional third argument. (Nikolay Pavlov) + + Added special |expand()| argument that expands to the current line + number. + + Made it possible to force |char2nr()| to always give unicode codepoints + regardless of current encoding. (Yasuhiro Matsumoto) + + Made it possible for functions generating file list generate |List| + and not NL-separated string. (e.g. |glob()|, |expand()|) (Christian + Brabandt) + + Functions that obtain variables from the specific window, tabpage or + buffer scope dictionary can now return specified default value in + place of empty string in case variable is not found. (|gettabvar()|, + |getwinvar()|, |getbufvar()|) (Shougo Matsushita, Hirohito Higashi) + +Autocommands: + Added |InsertCharPre| event launched before inserting character. + (Jakson A. Aquino) + + Added |CompleteDone| event launched after finishing completion in + insert mode. (idea by Florian Klein) + + Added |QuitPre| event launched when commands that can either close Vim + or only some window(s) are launched. + + Added |TextChanged| and |TextChangedI| events launched when text is + changed. + +Commands: + |:syntime| command useful for debugging. + + Made it possible to remove all signs from the current buffer using + |:sign-unplace|. (Christian Brabandt) + + Added |:language| autocompletion. (Dominique Pelle) + + Added more |:command-complete| completion types: |:behave| suboptions, + color schemes, compilers, |:cscope| suboptions, files from 'path', + |:history| suboptions, locale names, |:syntime| suboptions, user + names. (Dominique Pelle) + + Added |:map-nowait| creating mapping which when having lhs that is the + prefix of another mapping鈥檚 lhs will not allow Vim to wait for user to + type more characters to resolve ambiguity, forcing Vim to take the + shorter alternative: one with <nowait>. + +Options: + Made it possible to ignore case when completing: 'wildignorecase'. + + Added ability to delete comment leader when using |J| by `j` flag in + 'formatoptions' (|fo-table|). (Lech Lorens) + + Added ability to control indentation inside namespaces: |cino-N|. + (Konstantin Lepa) + + Added ability to control alignment inside `if` condition separately + from alignment inside function arguments: |cino-k|. (Lech Lorens) + +Other: + Improved support for cmd.exe. (Ben Fritz, Bram Moolenaar) + + Added |v:windowid| variable containing current window number in GUI + Vim. (Christian J. Robinson, Lech Lorens) + + Added rxvt-unicode and SGR mouse support. (Yiding Jia, Hayaki Saito) + + +All changes in 7.4 *fixed-7.4* +------------------ + +Patch 7.3.001 +Problem: When editing "src/main.c" and 'path' set to "./proto", + ":find e<C-D" shows ./proto/eval.pro instead of eval.pro. +Solution: Check for path separator when comparing names. (Nazri Ramliy) +Files: src/misc1.c + +Patch 7.3.002 +Problem: ":find" completion doesn't work when halfway an environment + variable. (Dominique Pelle) +Solution: Only use in-path completion when expanding file names. (Nazri + Ramliy) +Files: src/ex_docmd.c + +Patch 7.3.003 +Problem: Crash with specific BufWritePost autocmd. (Peter Odding) +Solution: Don't free the quickfix title twice. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.004 +Problem: Crash when using very long regexp. (Peter Odding) +Solution: Reset reg_toolong. (Carlo Teubner) +Files: src/regexp.c + +Patch 7.3.005 +Problem: Crash when using undotree(). (Christian Brabandt) +Solution: Increase the list reference count. Add a test for undotree() + (Lech Lorens) +Files: src/eval.c, src/testdir/Makefile, src/testdir/test61.in + +Patch 7.3.006 +Problem: Can't build some multibyte code with C89. +Solution: Move code to after declarations. (Joachim Schmitz) +Files: src/mbyte.c, src/spell.c + +Patch 7.3.007 +Problem: Python code defines global "buffer". Re-implements a grow-array. +Solution: Use a grow-array instead of coding the same functionality. Handle + out-of-memory situation properly. +Files: src/if_py_both.h + +Patch 7.3.008 +Problem: 'cursorbind' is kept in places where 'scrollbind' is reset. +Solution: Reset 'cursorbind'. +Files: src/buffer.c, src/diff.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/if_cscope.c, src/macros.h, + src/quickfix.c, src/search.c, src/tag.c, src/window.c + +Patch 7.3.009 +Problem: Win32: Crash on Windows when using a bad argument for strftime(). + (Christian Brabandt) +Solution: Use the bad_param_handler(). (Mike Williams) +Files: src/os_win32.c + +Patch 7.3.010 +Problem: Mac GUI: Missing break statements. +Solution: Add the break statements. (Dominique Pelle) +Files: src/gui_mac.c + +Patch 7.3.011 +Problem: X11 clipboard doesn't work in Athena/Motif GUI. First selection + after a shell command doesn't work. +Solution: When using the GUI use XtLastTimestampProcessed() instead of + changing a property. (partly by Toni Ronkko) + When executing a shell command disown the selection. +Files: src/ui.c, src/os_unix.c + +Patch 7.3.012 +Problem: Problems building with MingW. +Solution: Adjust the MingW makefiles. (Jon Maken) +Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak + +Patch 7.3.013 +Problem: Dynamic loading with Ruby doesn't work for 1.9.2. +Solution: Handle rb_str2cstr differently. Also support dynamic loading on + Unix. (Jon Maken) +Files: src/if_ruby.c + +Patch 7.3.014 +Problem: Ending a line in a backslash inside an ":append" or ":insert" + command in Ex mode doesn't work properly. (Ray Frush) +Solution: Halve the number of backslashes, only insert a NUL after an odd + number of backslashes. +Files: src/ex_getln.c + +Patch 7.3.015 +Problem: Test is using error message that no longer exists. +Solution: Change E106 to E121. (Dominique Pelle) +Files: src/testdir/test49.vim + +Patch 7.3.016 +Problem: Netbeans doesn't work under Athena. +Solution: Support Athena, just like Motif. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/gui.c, src/main.c, src/netbeans.c + +Patch 7.3.017 +Problem: smatch reports errors. +Solution: Fix the reported errors. (Dominique Pelle) +Files: src/spell.c, src/syntax.c + +Patch 7.3.018 (after 7.3.012) +Problem: Missing argument to windres in MingW makefiles. +Solution: Add the argument that was wrapped in the patch. (Jon Maken) +Files: src/Make_ming.mak, src/GvimExt/Make_ming.mak + +Patch 7.3.019 +Problem: ":nbstart" can fail silently. +Solution: Give an error when netbeans is not supported by the GUI. (Xavier + de Gaye) +Files: src/netbeans.c + +Patch 7.3.020 +Problem: Cursor position wrong when joining multiple lines and + 'formatoptions' contains "a". (Moshe Kamensky) +Solution: Adjust cursor position for skipped indent. (Carlo Teubner) +Files: src/ops.c, src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.021 +Problem: Conflict for defining Boolean in Mac header files. +Solution: Define NO_X11_INCLUDES. (Rainer Muller) +Files: src/os_macosx.m, src/vim.h + +Patch 7.3.022 +Problem: When opening a new window the 'spellcapcheck' option is cleared. +Solution: Copy the correct option value. (Christian Brabandt) +Files: src/option.c + +Patch 7.3.023 +Problem: External program may hang when it tries to write to the tty. +Solution: Don't close the slave tty until after the child exits. (Nikola + Knezevic) +Files: src/os_unix.c + +Patch 7.3.024 +Problem: Named signs do not use a negative number as intended. +Solution: Fix the numbering of named signs. (Xavier de Gaye) +Files: src/ex_cmds.c + +Patch 7.3.025 +Problem: ":mksession" does not square brackets escape file name properly. +Solution: Improve escaping of file names. (partly by Peter Odding) +Files: src/ex_docmd.c + +Patch 7.3.026 +Problem: CTRL-] in a help file doesn't always work. (Tony Mechelynck) +Solution: Don't escape special characters. (Carlo Teubner) +Files: src/normal.c + +Patch 7.3.027 +Problem: Opening a file on a network share is very slow. +Solution: When fixing file name case append "\*" to directory, server and + network share names. (David Anderson, John Beckett) +Files: src/os_win32.c + +Patch 7.3.028 (after 7.3.024) +Problem: Signs don't show up. (Charles Campbell) +Solution: Don't use negative numbers. Also assign a number to signs that + have a name of all digits to avoid using a sign number twice. +Files: src/ex_cmds.c + +Patch 7.3.029 +Problem: ":sort n" sorts lines without a number as number zero. (Beeyawned) +Solution: Make lines without a number sort before lines with a number. Also + fix sorting negative numbers. +Files: src/ex_cmds.c, src/testdir/test57.in, src/testdir/test57.ok + +Patch 7.3.030 +Problem: Cannot store Dict and List in viminfo file. +Solution: Add support for this. (Christian Brabandt) +Files: runtime/doc/options.txt, src/eval.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/main.aap, src/testdir/test74.in, + src/testdir/test74.ok + +Patch 7.3.031 +Problem: Can't pass the X window ID to another application. +Solution: Add v:windowid. (Christian J. Robinson, Lech Lorens) +Files: runtime/doc/eval.txt, src/eval.c, src/gui.c, src/vim.h, + src/os_unix.c + +Patch 7.3.032 +Problem: maparg() doesn't return the flags, such as <buffer>, <script>, + <silent>. These are needed to save and restore a mapping. +Solution: Improve maparg(). (also by Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/getchar.c, src/gui_w48.c, + src/message.c, src/proto/getchar.pro, src/proto/message.pro, + src/structs.h src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.033 (after 7.3.032) +Problem: Can't build without FEAT_LOCALMAP. +Solution: Add an #ifdef. (John Marriott) +Files: src/getchar.c + +Patch 7.3.034 +Problem: Win32: may be loading .dll from the wrong directory. +Solution: Go to the Vim executable directory when opening a library. +Files: src/gui_w32.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs, + src/if_python.c, src/if_python3.c, src/if_ruby.c, src/mbyte.c, + src/os_mswin.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.3.035 (after 7.3.034) +Problem: Stray semicolon after if statement. (Hari G) +Solution: Remove the semicolon. +Files: src/os_win32.c + +Patch 7.3.036 +Problem: Win32 GUI: When building without menus, the font for dialogs and + tab page headers also changes. +Solution: Define USE_SYSMENU_FONT always. (Harig G.) +Files: src/gui_w32.c + +Patch 7.3.037 +Problem: Compiler warnings for loss of data. (Mike Williams) +Solution: Add type casts. +Files: src/if_py_both.h, src/getchar.c, src/os_win32.c + +Patch 7.3.038 +Problem: v:windowid isn't set on MS-Windows. +Solution: Set it to the window handle. (Chris Sutcliffe) +Files: runtime/doc/eval.txt, src/gui_w32.c + +Patch 7.3.039 +Problem: Crash when using skk.vim plugin. +Solution: Get length of expression evaluation result only after checking for + NULL. (Noriaki Yagi, Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.3.040 +Problem: Comparing strings while ignoring case goes beyond end of the + string when there are illegal bytes. (Dominique Pelle) +Solution: Explicitly check for illegal bytes. +Files: src/mbyte.c + +Patch 7.3.041 +Problem: Compiler warning for accessing mediumVersion. (Tony Mechelynck) +Solution: Use the pointer instead of the array itself. (Dominique Pelle) +Files: src/version.c + +Patch 7.3.042 +Problem: No spell highlighting when re-using an empty buffer. +Solution: Clear the spell checking info only when clearing the options for a + buffer. (James Vega) +Files: src/buffer.c + +Patch 7.3.043 +Problem: Can't load Ruby dynamically on Unix. +Solution: Adjust the configure script. (James Vega) +Files: src/Makefile, src/config.h.in, src/configure.in, + src/auto/configure, src/if_ruby.c + +Patch 7.3.044 +Problem: The preview window opened by the popup menu is larger than + specified with 'previewheight'. (Benjamin Haskell) +Solution: Use 'previewheight' if it's set and smaller. +Files: src/popupmnu.c + +Patch 7.3.045 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize the variable always. +Files: src/getchar.c + +Patch 7.3.046 (after 7.3.043) +Problem: Can't build Ruby on MS-Windows. +Solution: Add #ifdef, don't use WIN3264 before including vim.h. +Files: src/if_ruby.c + +Patch 7.3.047 (after 7.3.032) +Problem: Missing makefile updates for test 75. +Solution: Update the makefiles. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Makefile, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.048 +Problem: ":earlier 1f" doesn't work after loading undo file. +Solution: Set b_u_save_nr_cur when loading an undo file. (Christian + Brabandt) + Fix only showing time in ":undolist" +Files: src/undo.c + +Patch 7.3.049 +Problem: PLT has rebranded their Scheme to Racket. +Solution: Add support for Racket 5.x. (Sergey Khorev) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/auto/configure, src/configure.in, src/if_mzsch.c + +Patch 7.3.050 +Problem: The link script is clumsy. +Solution: Use the --as-needed linker option if available. (Kirill A. + Shutemov) +Files: src/Makefile, src/auto/configure, src/config.mk.in, + src/configure.in, src/link.sh + +Patch 7.3.051 +Problem: Crash when $PATH is empty. +Solution: Check for vim_getenv() returning NULL. (Yasuhiro Matsumoto) +Files: src/ex_getln.c, src/os_win32.c + +Patch 7.3.052 +Problem: When 'completefunc' opens a new window all kinds of errors follow. + (Xavier Deguillard) +Solution: When 'completefunc' goes to another window or buffer and when it + deletes text abort completion. Add a test for 'completefunc'. +Files: src/edit.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test76.in, src/testdir/test76.ok + +Patch 7.3.053 +Problem: complete() function doesn't reset complete direction. Can't use + an empty string in the list of matches. +Solution: Set compl_direction to FORWARD. Add "empty" key to allow empty + words. (Kikuchan) +Files: src/edit.c + +Patch 7.3.054 +Problem: Can define a user command for :Print, but it doesn't work. (Aaron + Thoma) +Solution: Let user command :Print overrule the builtin command (Christian + Brabandt) Disallow :X and :Next as a user defined command. +Files: src/ex_docmd.c + +Patch 7.3.055 +Problem: Recursively nested lists and dictionaries cause a near-endless + loop when comparing them with a copy. (ZyX) +Solution: Limit recursiveness in a way that non-recursive structures can + still be nested very deep. +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.056 +Problem: "getline" argument in do_cmdline() shadows global. +Solution: Rename the argument. +Files: src/ex_docmd.c + +Patch 7.3.057 +Problem: Segfault with command line abbreviation. (Randy Morris) +Solution: Don't retrigger the abbreviation when abandoning the command line. + Continue editing the command line after the error. +Files: src/ex_getln.c + +Patch 7.3.058 +Problem: Error "code converter not found" when loading Ruby script. +Solution: Load Gem module. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.059 +Problem: Netbeans: Problem with recursively handling messages for Athena + and Motif. +Solution: Call netbeans_parse_messages() in the main loop, like it's done + for GTK. (Xavier de Gaye) +Files: src/gui_x11.c, src/netbeans.c + +Patch 7.3.060 +Problem: Netbeans: crash when socket is disconnected unexpectedly. +Solution: Don't cleanup when a read fails, put a message in the queue and + disconnect later. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.061 +Problem: Remote ":drop" does not respect 'autochdir'. (Peter Odding) +Solution: Don't restore the directory when 'autochdir' is set. (Benjamin + Fritz) +Files: src/main.c + +Patch 7.3.062 +Problem: Python doesn't work properly when installed in another directory + than expected. +Solution: Figure out home directory in configure and use Py_SetPythonHome() + at runtime. (Roland Puntaier) +Files: src/configure.in, src/auto/configure, src/if_python.c, + src/if_python3.c + +Patch 7.3.063 +Problem: Win32: Running a filter command makes Vim lose focus. +Solution: Use SW_SHOWMINNOACTIVE instead of SW_SHOWMINIMIZED. (Hong Xu) +Files: src/os_win32.c + +Patch 7.3.064 +Problem: Win32: ":dis +" shows nothing, but "+p does insert text. +Solution: Display the * register, since that's what will be inserted. + (Christian Brabandt) +Files: src/globals.h, src/ops.c + +Patch 7.3.065 +Problem: Can't get current line number in a source file. +Solution: Add the <slnum> item, similar to <sfile>. +Files: src/ex_docmd.c + +Patch 7.3.066 +Problem: Crash when changing to another window while in a :vimgrep command. + (Christian Brabandt) +Solution: When wiping out the dummy before, remove it from aucmd_win. +Files: src/quickfix.c + +Patch 7.3.067 (after 7.3.058) +Problem: Ruby: Init_prelude is not always available. +Solution: Remove use of Init_prelude. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.068 +Problem: Using freed memory when doing ":saveas" and an autocommand sets + 'autochdir'. (Kevin Klement) +Solution: Get the value of fname again after executing autocommands. +Files: src/ex_cmds.c + +Patch 7.3.069 +Problem: GTK: pressing Enter in inputdialog() doesn't work like clicking OK + as documented. +Solution: call gtk_entry_set_activates_default(). (Britton Kerin) +Files: src/gui_gtk.c + +Patch 7.3.070 +Problem: Can set environment variables in the sandbox, could be abused. +Solution: Disallow it. +Files: src/eval.c + +Patch 7.3.071 +Problem: Editing a file in a window that's in diff mode resets 'diff' + but not cursor binding. +Solution: Reset cursor binding in two more places. +Files: src/quickfix.c, src/option.c + +Patch 7.3.072 +Problem: Can't complete file names while ignoring case. +Solution: Add 'wildignorecase'. +Files: src/ex_docmd.c, src/ex_getln.c, src/misc1.c, src/option.c, + src/option.h, src/vim.h, src/runtime/options.txt + +Patch 7.3.073 +Problem: Double free memory when netbeans command follows DETACH. +Solution: Only free the node when owned. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.074 +Problem: Can't use the "+ register like "* for yank and put. +Solution: Add "unnamedplus" to the 'clipboard' option. (Ivan Krasilnikov) +Files: runtime/doc/options.txt, src/eval.c, src/globals.h, src/ops.c, + src/option.c + +Patch 7.3.075 (after 7.3.072) +Problem: Missing part of 'wildignorecase' +Solution: Also adjust expand() +Files: src/eval.c + +Patch 7.3.076 +Problem: Clang warnings for dead code. +Solution: Remove it. (Carlo Teubner) +Files: src/gui_gtk.c, src/if_ruby.c, src/misc2.c, src/netbeans.c, + src/spell.c + +Patch 7.3.077 +Problem: When updating crypt of swapfile fails there is no error message. + (Carlo Teubner) +Solution: Add the error message. +Files: src/memline.c + +Patch 7.3.078 +Problem: Warning for unused variable. +Solution: Adjust #ifdefs. +Files: src/ops.c + +Patch 7.3.079 +Problem: Duplicate lines in makefile. +Solution: Remove the lines. (Hong Xu) +Files: src/Make_mvc.mak + +Patch 7.3.080 +Problem: Spell doesn't work on VMS. +Solution: Use different file names. (Zoltan Bartos, Zoltan Arpadffy) +Files: src/spell.c + +Patch 7.3.081 +Problem: Non-printable characters in 'statusline' cause trouble. (ZyX) +Solution: Use transstr(). (partly by Caio Ariede) +Files: src/screen.c + +Patch 7.3.082 +Problem: Leaking file descriptor when hostname doesn't exist. +Solution: Remove old debugging lines. +Files: src/netbeans.c + +Patch 7.3.083 +Problem: When a read() or write() is interrupted by a signal it fails. +Solution: Add read_eintr() and write_eintr(). +Files: src/fileio.c, src/proto/fileio.pro, src/memfile.c, src/memline.c, + src/os_unix.c, src/undo.c, src/vim.h + +Patch 7.3.084 +Problem: When splitting the window, the new one scrolls with the cursor at + the top. +Solution: Compute w_fraction before setting the new height. +Files: src/window.c + +Patch 7.3.085 (after 7.3.083) +Problem: Inconsistency with preproc symbols. void * computation. +Solution: Include vimio.h from vim.h. Add type cast. +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/fileio.c, + src/if_cscope.c, src/if_sniff.c, src/main.c, src/memfile.c, + src/memline.c, src/netbeans.c, src/os_msdos.c, src/os_mswin.c, + src/os_win16.c, src/os_win32.c, src/spell.c, src/tag.c, + src/undo.c, src/vim.h + +Patch 7.3.086 +Problem: When using a mapping with an expression and there was no count, + v:count has the value of the previous command. (ZyX) +Solution: Also set v:count and v:count1 before getting the character that + could be a command or a count. +Files: src/normal.c + +Patch 7.3.087 +Problem: EINTR is not always defined. +Solution: Include errno.h in vim.h. +Files: src/if_cscope.c, src/if_tcl.c, src/integration.c, src/memline.c, + src/os_mswin.c, src/os_win16.c, src/os_win32.c, src/vim.h, + src/workshop.c + +Patch 7.3.088 +Problem: Ruby can't load Gems sometimes, may cause a crash. +Solution: Undefine off_t. Use ruby_process_options(). (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.089 +Problem: Compiler warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/netbeans.c + +Patch 7.3.090 +Problem: Wrong help text for Cscope. +Solution: Adjust the help text for "t". (Dominique Pelle) +Files: src/if_cscope.c + +Patch 7.3.091 +Problem: "vim -w foo" writes special key codes for removed escape + sequences. (Josh Triplett) +Solution: Don't write K_IGNORE codes. +Files: src/getchar.c, src/misc1.c, src/term.c, src/vim.h + +Patch 7.3.092 +Problem: Resizing the window when exiting. +Solution: Don't resize when exiting. +Files: src/term.c + +Patch 7.3.093 +Problem: New DLL dependencies in MingW with gcc 4.5.0. +Solution: Add STATIC_STDCPLUS, LDFLAGS and split up WINDRES. (Guopeng Wen) +Files: src/GvimExt/Make_ming.mak, src/Make_ming.mak + +Patch 7.3.094 +Problem: Using abs() requires type cast to int. +Solution: Use labs() so that the value remains long. (Hong Xu) +Files: src/screen.c + +Patch 7.3.095 +Problem: Win32: In Chinese tear-off menu doesn't work. (Weasley) +Solution: Use menu_name_equal(). (Alex Jakushev) +Files: src/menu.c + +Patch 7.3.096 +Problem: "gvim -nb" is not interruptible. Leaking file descriptor on + netbeans connection error. +Solution: Check for CTRL-C typed. Free file descriptor. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.097 +Problem: Using ":call" inside "if 0" does not see that a function returns a + Dict and gives error for "." as string concatenation. +Solution: Use eval0() to skip over the expression. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.098 +Problem: Function that ignores error still causes called_emsg to be set. + E.g. when expand() fails the status line is disabled. +Solution: Move check for emsg_not_now() up. (James Vega) +Files: src/message.c + +Patch 7.3.099 +Problem: Crash when splitting a window with zero height. (Yukihiro + Nakadaira) +Solution: Don't set the fraction in a window with zero height. +Files: src/window.c + +Patch 7.3.100 +Problem: When using :normal v:count isn't set. +Solution: Call normal_cmd() with toplevel set to TRUE. +Files: src/ex_docmd.c + +Patch 7.3.101 +Problem: ino_t defined with wrong size. +Solution: Move including auto/config.h before other includes. (Marius + Geminas) +Files: src/if_ruby.c, src/if_lua.c + +Patch 7.3.102 +Problem: When using ":make", typing the next command and then getting the + "reload" prompt the next command is (partly) eaten by the reload + prompt. +Solution: Accept ':' as a special character at the reload prompt to accept + the default choice and execute the command. +Files: src/eval.c, src/fileio.c, src/gui.c, src/gui_xmdlg.c, + src/memline.c, src/message.c, src/proto/message.pro, + src/gui_athena.c, src/gui_gtk.c, src/gui_mac.c, src/gui_motif.c, + src/gui_photon.c, src/gui_w16.c, src/gui_w32.c, src/os_mswin.c + src/proto/gui_athena.pro, src/proto/gui_gtk.pro, + src/proto/gui_mac.pro, src/proto/gui_motif.pro, + src/proto/gui_photon.pro, src/proto/gui_w16.pro, + src/proto/gui_w32.pro + +Patch 7.3.103 +Problem: Changing 'fileformat' and then using ":w" in an empty file sets + the 'modified' option. +Solution: In unchanged() don't ignore 'ff' for an empty file. +Files: src/misc1.c, src/option.c, src/proto/option.pro, src/undo.c + +Patch 7.3.104 +Problem: Conceal: using Tab for cchar causes problems. (ZyX) +Solution: Do not accept a control character for cchar. +Files: src/syntax.c + +Patch 7.3.105 +Problem: Can't get the value of "b:changedtick" with getbufvar(). +Solution: Make it work. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.106 +Problem: When 'cursorbind' is set another window may scroll unexpectedly + when 'scrollbind' is also set. (Xavier Wang) +Solution: Don't call update_topline() if 'scrollbind' is set. +Files: src/move.c + +Patch 7.3.107 +Problem: Year number for :undolist can be confused with month or day. +Solution: Change "%y" to "%Y". +Files: src/undo.c + +Patch 7.3.108 +Problem: Useless check for NULL when calling vim_free(). +Solution: Remove the check. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds.c, src/os_win32.c + +Patch 7.3.109 +Problem: Processing new Esperanto spell file fails and crashes Vim. + (Dominique Pelle) +Solution: When running out of memory give an error. Handle '?' in + COMPOUNDRULE properly. +Files: src/spell.c + +Patch 7.3.110 +Problem: The "nbsp" item in 'listchars' isn't used for ":list". +Solution: Make it work. (Christian Brabandt) +Files: src/message.c + +Patch 7.3.111 (after 7.3.100) +Problem: Executing a :normal command in 'statusline' evaluation causes the + cursor to move. (Dominique Pelle) +Solution: When updating the cursor for 'cursorbind' allow the cursor beyond + the end of the line. When evaluating 'statusline' temporarily + reset 'cursorbind'. +Files: src/move.c, src/screen.c + +Patch 7.3.112 +Problem: Setting 'statusline' to "%!'asdf%' reads uninitialized memory. +Solution: Check for NUL after %. +Files: src/buffer.c + +Patch 7.3.113 +Problem: Windows: Fall back directory for creating temp file is wrong. +Solution: Use "." instead of empty string. (Hong Xu) +Files: src/fileio.c + +Patch 7.3.114 +Problem: Potential problem in initialization when giving an error message + early. +Solution: Initialize 'verbosefile' empty. (Ben Schmidt) +Files: src/option.h + +Patch 7.3.115 +Problem: Vim can crash when tmpnam() returns NULL. +Solution: Check for NULL. (Hong Xu) +Files: src/fileio.c + +Patch 7.3.116 +Problem: 'cursorline' is displayed too short when there are concealed + characters and 'list' is set. (Dennis Preiser) +Solution: Check for 'cursorline' when 'list' is set. (Christian Brabandt) +Files: src/screen.c + +Patch 7.3.117 +Problem: On some systems --as-needed does not work, because the "tinfo" + library is included indirectly from "ncurses". (Charles Campbell) +Solution: In configure prefer using "tinfo" instead of "ncurses". +Files: src/configure.in, src/auto/configure + +Patch 7.3.118 +Problem: Ruby uses SIGVTALARM which makes Vim exit. (Alec Tica) +Solution: Ignore SIGVTALARM. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.3.119 +Problem: Build problem on Mac. (Nicholas Stallard) +Solution: Use "extern" instead of "EXTERN" for p_vfile. +Files: src/option.h + +Patch 7.3.120 +Problem: The message for an existing swap file is too long to fit in a 25 + line terminal. +Solution: Make the message shorter. (Chad Miller) +Files: src/memline.c + +Patch 7.3.121 +Problem: Complicated 'statusline' causes a crash. (Christian Brabandt) +Solution: Check that the number of items is not too big. +Files: src/buffer.c + +Patch 7.3.122 +Problem: Having auto/config.mk in the repository causes problems. +Solution: Remove auto/config.mk from the distribution. In the toplevel + Makefile copy it from the "dist" file. +Files: Makefile, src/Makefile, src/auto/config.mk + +Patch 7.3.123 +Problem: ml_get error when executing register being recorded into, deleting + lines and 'conceallevel' is set. (ZyX) +Solution: Don't redraw a line for concealing when it doesn't exist. +Files: src/main.c + +Patch 7.3.124 +Problem: When writing a file in binary mode it may be missing the final EOL + if a file previously read was missing the EOL. (Kevin Goodsell) +Solution: Move the write_no_eol_lnum into the buffer struct. +Files: src/structs.h, src/fileio.c, src/globals.h, src/os_unix.c + +Patch 7.3.125 +Problem: MSVC: Problem with quotes in link argument. +Solution: Escape backslashes and quotes. (Weasley) +Files: src/Make_mvc.mak + +Patch 7.3.126 +Problem: Compiler warning for signed pointer. +Solution: Use unsigned int argument for sscanf(). +Files: src/blowfish.c + +Patch 7.3.127 +Problem: Compiler complains about comma. +Solution: Remove comma after last enum element. +Files: src/ex_cmds2.c + +Patch 7.3.128 +Problem: Another compiler warning for signed pointer. +Solution: Use unsigned int argument for sscanf(). +Files: src/mark.c + +Patch 7.3.129 +Problem: Using integer like a boolean. +Solution: Nicer check for integer being non-zero. +Files: src/tag.c + +Patch 7.3.130 +Problem: Variable misplaced in #ifdef. +Solution: Move clipboard_event_time outside of #ifdef. +Files: src/gui_gtk_x11.c + +Patch 7.3.131 +Problem: Including errno.h too often. +Solution: Don't include errno.h in Unix header file. +Files: src/os_unix.h + +Patch 7.3.132 +Problem: C++ style comments. +Solution: Change to C comments. +Files: src/if_python3.c + +Patch 7.3.133 +Problem: When using encryption it's not clear what method was used. +Solution: In the file message show "blowfish" when using blowfish. +Files: src/fileio.c + +Patch 7.3.134 +Problem: Drag-n-drop doesn't work in KDE Dolphin. +Solution: Add GDK_ACTION_MOVE flag. (Florian Degner) +Files: src/gui_gtk_x11.c + +Patch 7.3.135 +Problem: When there is no previous substitute pattern, the previous search + pattern is used. The other way around doesn't work. +Solution: When there is no previous search pattern, use the previous + substitute pattern if possible. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.136 +Problem: Duplicate include of assert.h. +Solution: Remove it. +Files: src/if_cscope.c + +Patch 7.3.137 (after 7.3.091) +Problem: When 'lazyredraw' is set the screen may not be updated. (Ivan + Krasilnikov) +Solution: Call update_screen() before waiting for input. +Files: src/misc1.c, src/getchar.c + +Patch 7.3.138 +Problem: ":com" changes the multibyte text of :echo. (Dimitar Dimitrov) +Solution: Search for K_SPECIAL as a byte, not a character. (Ben Schmidt) +Files: src/ex_docmd.c + +Patch 7.3.139 (after 7.3.137) +Problem: When 'lazyredraw' is set ":ver" output can't be read. +Solution: Don't redraw the screen when at a prompt or command line. +Files: src/getchar.c, src/message.c, src/misc1.c + +Patch 7.3.140 +Problem: Crash when drawing the "$" at end-of-line for list mode just after + the window border and 'cursorline' is set. +Solution: Don't check for 'cursorline'. (Quentin Carbonneaux) +Files: src/screen.c + +Patch 7.3.141 +Problem: When a key code is not set get a confusing error message. +Solution: Change the error message to say the key code is not set. +Files: src/option.c, runtime/doc/options.txt + +Patch 7.3.142 +Problem: Python stdout doesn't have a flush() method, causing an import to + fail. +Solution: Add a dummy flush() method. (Tobias Columbus) +Files: src/if_py_both.h + +Patch 7.3.143 +Problem: Memfile is not tested sufficiently. Looking up blocks in a + memfile is slow when there are many blocks. +Solution: Add high level test and unittest. Adjust the number of hash + buckets to the number of blocks. (Ivan Krasilnikov) +Files: Filelist, src/Makefile, src/main.c, src/memfile.c, + src/memfile_test.c src/structs.h src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mak, + src/testdir/Makefile, src/testdir/test77.in, src/testdir/test77.ok + +Patch 7.3.144 +Problem: Crash with ":python help(dir)". (Kearn Holliday) +Solution: Fix the way the type is set on objects. (Tobias Columbus) +Files: src/if_python.c + +Patch 7.3.145 (after 7.3.144) +Problem: Can't build with Python dynamically loading. +Solution: Add dll_PyType_Ready. +Files: src/if_python.c + +Patch 7.3.146 +Problem: It's possible to assign to a read-only member of a dict. + It's possible to create a global variable "0". (ZyX) + It's possible to add a v: variable with ":let v:.name = 1". +Solution: Add check for dict item being read-only. + Check the name of g: variables. + Disallow adding v: variables. +Files: src/eval.c + +Patch 7.3.147 (after 7.3.143) +Problem: Can't build on HP-UX. +Solution: Remove an unnecessary backslash. (John Marriott) +Files: src/Makefile + +Patch 7.3.148 +Problem: A syntax file with a huge number of items or clusters causes weird + behavior, a hang or a crash. (Yukihiro Nakadaira) +Solution: Check running out of IDs. (partly by Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.149 +Problem: The cursor disappears after the processing of the 'setDot' + netbeans command when vim runs in a terminal. +Solution: Show the cursor after a screen update. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.3.150 +Problem: readline() does not return the last line when the NL is missing. + (Hong Xu) +Solution: When at the end of the file Also check for a previous line. +Files: src/eval.c + +Patch 7.3.151 (after 7.3.074) +Problem: When "unnamedplus" is in 'clipboard' the selection is sometimes + also copied to the star register. +Solution: Avoid copy to the star register when undesired. (James Vega) +Files: src/ops.c + +Patch 7.3.152 +Problem: Xxd does not check for errors from library functions. +Solution: Add error checks. (Florian Zumbiehl) +Files: src/xxd/xxd.c + +Patch 7.3.153 (after 7.3.152) +Problem: Compiler warning for ambiguous else, missing prototype. +Solution: Add braces. (Dominique Pelle) Add prototype for die(). +Files: src/xxd/xxd.c + +Patch 7.3.154 (after 7.3.148) +Problem: Can't compile with tiny features. (Tony Mechelynck) +Solution: Move #define outside of #ifdef. +Files: src/syntax.c + +Patch 7.3.155 +Problem: Crash when using map(), filter() and remove() on v:. (ZyX) + Also for extend(). (Yukihiro Nakadaira) +Solution: Mark v: as locked. Also correct locking error messages. +Files: src/eval.c + +Patch 7.3.156 +Problem: Tty names possibly left unterminated. +Solution: Use vim_strncpy() instead of strncpy(). +Files: src/pty.c + +Patch 7.3.157 +Problem: Superfluous assignment. +Solution: Remove assignment. +Files: src/misc1.c + +Patch 7.3.158 +Problem: Might use uninitialized memory in C indenting. +Solution: Init arrays to empty. +Files: src/misc1.c + +Patch 7.3.159 +Problem: Using uninitialized pointer when out of memory. +Solution: Check for NULL return value. +Files: src/mbyte.c + +Patch 7.3.160 +Problem: Unsafe string copying. +Solution: Use vim_strncpy() instead of strcpy(). Use vim_strcat() instead + of strcat(). +Files: src/buffer.c, src/ex_docmd.c, src/hardcopy.c, src/menu.c, + src/misc1.c, src/misc2.c, src/proto/misc2.pro, src/netbeans.c, + src/os_unix.c, src/spell.c, src/syntax.c, src/tag.c + +Patch 7.3.161 +Problem: Items on the stack may be too big. +Solution: Make items static or allocate them. +Files: src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/fileio.c, src/hardcopy.c, src/quickfix.c, src/main.c, + src/netbeans.c, src/spell.c, src/tag.c, src/vim.h, src/xxd/xxd.c + +Patch 7.3.162 +Problem: No error message when assigning to a list with an index out of + range. (Yukihiro Nakadaira) +Solution: Add the error message. +Files: src/eval.c + +Patch 7.3.163 +Problem: For the default of 'shellpipe' "mksh" and "pdksh" are not + recognized. +Solution: Recognize these shell names. +Files: src/option.c + +Patch 7.3.164 +Problem: C-indenting: a preprocessor statement confuses detection of a + function declaration. +Solution: Ignore preprocessor lines. (Lech Lorens) Also recognize the style + to put a comma before the argument name. +Files: src/misc1.c, testdir/test3.in, testdir/test3.ok + +Patch 7.3.165 +Problem: ":find" completion does not escape spaces in a directory name. + (Isz) +Solution: Add backslashes for EXPAND_FILES_IN_PATH. (Carlo Teubner) +Files: src/ex_getln.c + +Patch 7.3.166 +Problem: Buffer on the stack may be too big +Solution: Allocate the space. +Files: src/option.c + +Patch 7.3.167 +Problem: When using the internal grep QuickFixCmdPost is not triggered. + (Yukihiro Nakadaira) +Solution: Change the place where autocommands are triggered. +Files: src/quickfix.c + +Patch 7.3.168 +Problem: When the second argument of input() contains a CR the text up to + that is used without asking the user. (Yasuhiro Matsumoto) +Solution: Change CR, NL and ESC in the text to a space. +Files: src/getchar.c + +Patch 7.3.169 +Problem: Freeing memory already freed, warning from static code analyzer. +Solution: Initialize pointers to NULL, correct use of "mustfree". (partly by + Dominique Pelle) +Files: src/mis1.c + +Patch 7.3.170 +Problem: VMS Makefile for testing was not updated for test77. +Solution: Add test77 to the Makefile. +Files: src/testdir/Make_vms.mms + +Patch 7.3.171 +Problem: When the clipboard isn't supported: ":yank*" gives a confusing + error message. +Solution: Specifically mention that the register name is invalid. + (Jean-Rene David) +Files: runtime/doc/change.txt, src/ex_docmd.c, src/globals.h + +Patch 7.3.172 +Problem: MS-Windows: rename() might delete the file if the name differs but + it's actually the same file. +Solution: Use the file handle to check if it's the same file. (Yukihiro + Nakadaira) +Files: src/if_cscope.c, src/fileio.c, src/os_win32.c, + src/proto/os_win32.pro, src/vim.h + +Patch 7.3.173 +Problem: After using setqflist() to make the quickfix list empty ":cwindow" + may open the window anyway. Also after ":vimgrep". +Solution: Correctly check whether the list is empty. (Ingo Karkat) +Files: src/quickfix.c + +Patch 7.3.174 +Problem: When Exuberant ctags binary is exctags it's not found. +Solution: Add configure check for exctags. (Hong Xu) +Files: src/configure.in, src/auto/configure + +Patch 7.3.175 +Problem: When 'colorcolumn' is set locally to a window, ":new" opens a + window with the same highlighting but 'colorcolumn' is empty. + (Tyru) +Solution: Call check_colorcolumn() after clearing and copying options. + (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.176 +Problem: Ruby linking doesn't work properly on Mac OS X. +Solution: Fix the configure check for Ruby. (Bjorn Winckler) +Files: src/configure.in, src/auto/configure + +Patch 7.3.177 +Problem: MS-Windows: mkdir() doesn't work properly when 'encoding' is + "utf-8". +Solution: Convert to utf-16. (Yukihiro Nakadaira) +Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro + +Patch 7.3.178 +Problem: C-indent doesn't handle code right after { correctly. +Solution: Fix detecting unterminated line. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.179 +Problem: C-indent doesn't handle colon in string correctly. +Solution: Skip the string. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.180 +Problem: When both a middle part of 'comments' matches and an end part, the + middle part was used erroneously. +Solution: After finding the middle part match continue looking for a better + end part match. (partly by Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.181 +Problem: When repeating the insert of CTRL-V or a digraph the display may + not be updated correctly. +Solution: Only call edit_unputchar() after edit_putchar(). (Lech Lorens) +Files: src/edit.c + +Patch 7.3.182 (after 7.3.180) +Problem: Compiler warning for uninitialized variable. +Solution: Add dummy initializer. +Files: src/misc1.c + +Patch 7.3.183 (after 7.3.174) +Problem: When Exuberant ctags binary is exuberant-ctags it's not found. +Solution: Add configure check for exuberant-ctags. +Files: src/configure.in, src/auto/configure + +Patch 7.3.184 +Problem: Static code analysis errors in riscOS. +Solution: Make buffer size bigger. (Dominique Pelle) +Files: src/gui_riscos.c + +Patch 7.3.185 +Problem: ":windo g/pattern/q" closes windows and reports "N more lines". + (Tim Chase) +Solution: Remember what buffer ":global" started in. (Jean-Rene David) +Files: src/ex_cmds.c + +Patch 7.3.186 +Problem: When 'clipboard' contains "unnamed" or "unnamedplus" the value of + v:register is wrong for operators without a specific register. +Solution: Adjust the register according to 'clipboard'. (Ingo Karkat) +Files: src/normal.c + +Patch 7.3.187 +Problem: The RISC OS port has obvious errors and is not being maintained. +Solution: Remove the RISC OS files and code. +Files: src/ascii.h, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/fileio.c, src/globals.h, src/gui.c, src/gui.h, + src/main.c, src/memfile.c, src/memline.c, src/misc1.c, + src/proto.h, src/quickfix.c, src/search.c, src/structs.h, + src/term.c, src/termlib.c, src/version.c, src/vim.h, + src/gui_riscos.h, src/os_riscos.h, src/gui_riscos.c, + src/os_riscos.c, runtime/doc/os_risc.txt + +Patch 7.3.188 +Problem: More RISC OS files to remove. +Solution: Remove them. Update the file list. +Files: src/proto/gui_riscos.pro, src/proto/os_riscos.pro, Filelist + +Patch 7.3.189 (after 7.3.186) +Problem: Can't build without +clipboard feature. (Christian Ebert) +Solution: Add the missing #ifdef. +Files: src/normal.c + +Patch 7.3.190 +Problem: When there is a "containedin" syntax argument highlighting may be + wrong. (Radek) +Solution: Reset current_next_list. (Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.191 +Problem: Still some RISC OS stuff to remove. +Solution: Remove files and lines. (Hong Xu) + Remove the 'osfiletype' option code. +Files: README_extra.txt, src/Make_ro.mak, src/INSTALL, src/Makefile, + src/buffer.c, src/eval.c, src/feature.h, src/option.c, + src/option.h, src/structs.h, src/version.c, src/pty.c, Filelist + +Patch 7.3.192 +Problem: Ex command ":s/ \?/ /g" splits multibyte characters into bytes. + (Dominique Pelle) +Solution: Advance over whole character instead of one byte. +Files: src/ex_cmds.c + +Patch 7.3.193 +Problem: In the command line window ":close" doesn't work properly. (Tony + Mechelynck) +Solution: Use Ctrl_C instead of K_IGNORE for cmdwin_result. (Jean-Rene + David) +Files: src/ex_docmd.c, src/ex_getln.c + +Patch 7.3.194 +Problem: When "b" is a symlink to directory "a", resolve("b/") doesn't + result in "a/". (ZyX) +Solution: Remove the trailing slash. (Jean-Rene David) +Files: src/eval.c + +Patch 7.3.195 +Problem: "} else" causes following lines to be indented too much. (Rouben + Rostamian) +Solution: Better detection for the "else". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.196 +Problem: Can't intercept a character that is going to be inserted. +Solution: Add the InsertCharPre autocommand event. (Jakson A. Aquino) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, src/edit.c, src/eval.c, src/fileio.c, + src/vim.h + +Patch 7.3.197 +Problem: When a QuickfixCmdPost event removes all errors, Vim still tries + to jump to the first error, resulting in E42. +Solution: Get the number of error after the autocmd event. (Mike Lundy) +Files: src/quickfix.c + +Patch 7.3.198 +Problem: No completion for ":lang". +Solution: Get locales to complete from. (Dominique Pelle) +Files: src/eval.c, src/ex_cmds2.c, src/ex_getln.c, + src/proto/ex_cmds2.pro, src/proto/ex_getln.pro, src/vim.h + +Patch 7.3.199 +Problem: MS-Windows: Compilation problem of OLE with MingW compiler. +Solution: Put #ifdef around declarations. (Guopeng Wen) +Files: src/if_ole.h + +Patch 7.3.200 (after 7.3.198) +Problem: CTRL-D doesn't complete :lang. +Solution: Add the missing part of the change. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.3.201 (after 7.3.195) +Problem: "} else" still causes following lines to be indented too much. +Solution: Better detection for the "else" block. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.202 +Problem: Cannot influence the indent inside a namespace. +Solution: Add the "N" 'cino' parameter. (Konstantin Lepa) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 7.3.203 +Problem: MS-Windows: Can't run an external command without a console window. +Solution: Support ":!start /b cmd". (Xaizek) +Files: runtime/doc/os_win32.txt, src/os_win32.c + +Patch 7.3.204 (after 7.3.201) +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.205 +Problem: Syntax "extend" doesn't work correctly. +Solution: Avoid calling check_state_ends() recursively (Ben Schmidt) +Files: src/syntax.c + +Patch 7.3.206 +Problem: 64bit MS-Windows compiler warning. +Solution: Use HandleToLong() instead of type cast. (Mike Williams) +Files: src/gui_w32.c + +Patch 7.3.207 +Problem: Can't compile with MSVC with pentium4 and 64 bit. +Solution: Only use SSE2 for 32 bit. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.3.208 +Problem: Early terminated if statement. +Solution: Remove the semicolon. (Lech Lorens) +Files: src/gui_mac.c + +Patch 7.3.209 +Problem: MSVC Install instructions point to wrong batch file. +Solution: Add a batch file for use with MSVC 10. +Files: src/msvc2010.bat, src/INSTALLpc.txt, Filelist + +Patch 7.3.210 +Problem: Can't always find the file when using cscope. +Solution: Add the 'cscoperelative' option. (Raghavendra D Prabhu) +Files: runtime/doc/if_cscop.txt, runtime/doc/options.txt, + src/if_cscope.c + +Patch 7.3.211 (after 7.3.210) +Problem: Compiler warning. +Solution: Add type cast. +Files: src/if_cscope.c + +Patch 7.3.212 +Problem: With Python 3.2 ":py3" fails. +Solution: Move PyEval_InitThreads() to after Py_Initialize(). (Roland + Puntaier) Check abiflags in configure. (Andreas Behr) +Files: src/if_python3.c, src/auto/configure, src/configure.in + +Patch 7.3.213 +Problem: Javascript object literal is not indented correctly. +Solution: Make a special case for when "J1" is in 'cino'. (Luc Deschenaux) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.214 +Problem: The text displayed by ":z-" isn't exactly like old Vi. +Solution: Add one to the start line number. (ChangZhuo Chen) +Files: src/ex_cmds.c + +Patch 7.3.215 (after 7.3.210) +Problem: Wrong file names in previous patch. (Toothpik) +Solution: Include the option changes. +Files: src/option.c, src/option.h + +Patch 7.3.216 +Problem: When recovering a file a range of lines is missing. (Charles Jie) +Solution: Reset the index when advancing to the next pointer block. Add a + test to verify recovery works. +Files: src/memline.c, src/testdir/test78.in, src/testdir/test78.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.217 +Problem: Inside an "if" a ":wincmd" causes problems. +Solution: When skipping commands let ":wincmd" skip over its argument. +Files: src/ex_docmd.c + +Patch 7.3.218 (after 7.3.212) +Problem: Tiny configuration problem with Python 3. +Solution: Add abiflags in one more place. (Andreas Behr) +Files: src/auto/configure, src/configure.in + +Patch 7.3.219 +Problem: Can't compile with GTK on Mac. +Solution: Add some #ifdef trickery. (Ben Schmidt) +Files: src/os_mac_conv.c, src/os_macosx.m, src/vim.h + +Patch 7.3.220 +Problem: Python 3: vim.error is a 'str' instead of an 'Exception' object, + so 'except' or 'raise' it causes a 'SystemError' exception. + Buffer objects do not support slice assignment. + When exchanging text between Vim and Python, multibyte texts become + garbage or cause Unicode Exceptions, etc. + 'py3file' tries to read in the file as Unicode, sometimes causes + UnicodeDecodeException +Solution: Fix the problems. (lilydjwg) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.221 +Problem: Text from the clipboard is sometimes handled as linewise, but not + consistently. +Solution: Assume the text is linewise when it ends in a CR or NL. +Files: src/gui_gtk_x11.c, src/gui_mac.c, src/ops.c, src/os_msdos.c, + src/os_mswin.c, src/os_qnx.c, src/ui.c + +Patch 7.3.222 +Problem: Warning for building GvimExt. +Solution: Comment-out the DESCRIPTION line. (Mike Williams) +Files: src/GvimExt/gvimext.def, src/GvimExt/gvimext_ming.def + +Patch 7.3.223 +Problem: MingW cross compilation doesn't work with tiny features. +Solution: Move acp_to_enc(), enc_to_utf16() and utf16_to_enc() outside of + "#ifdef CLIPBOARD". Fix typo in makefile. +Files: src/Make_ming.mak, src/os_mswin.c + +Patch 7.3.224 +Problem: Can't pass dict to sort function. +Solution: Add the optional {dict} argument to sort(). (ZyX) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.225 +Problem: Using "\n" in a substitute inside ":s" does not result in a line + break. +Solution: Change behavior inside vim_regexec_nl(). Add tests. (Motoya + Kurotsu) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, + src/testdir/test80.in, src/testdir/test80.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.226 +Problem: On a 64 bit system "syn sync fromstart" is very slow. (Bjorn + Steinbrink) +Solution: Store the state when starting to parse from the first line. +Files: src/syntax.c + +Patch 7.3.227 (after 7.3.221) +Problem: Mac OS doesn't have the linewise clipboard fix. +Solution: Also change the Mac OS file. (Bjorn Winckler) +Files: src/os_macosx.m + +Patch 7.3.228 +Problem: "2gj" does not always move to the correct position. +Solution: Get length of line after moving to a next line. (James Vega) +Files: src/normal.c + +Patch 7.3.229 +Problem: Using fork() makes gvim crash on Mac when build with + CoreFoundation. +Solution: Disallow fork() when __APPLE__ is defined. (Hisashi T Fujinaka) +Files: src/gui.c + +Patch 7.3.230 +Problem: ":wundo" and ":rundo" don't unescape their argument. (Aaron + Thoma) +Solution: Use FILE1 instead of XFILE. +Files: src/ex_cmds.h + +Patch 7.3.231 +Problem: Runtime file patches failed. +Solution: Redo the patches made against the patched files instead of the + files in the mercurial repository. +Files: runtime/doc/indent.txt, runtime/doc/os_win32.txt + +Patch 7.3.232 +Problem: Python doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. +Files: src/if_py_both.h + +Patch 7.3.233 +Problem: ":scriptnames" and ":breaklist" show long file names. +Solution: Shorten to use "~/" when possible. (Jean-Rene David) +Files: src/ex_cmds2.c + +Patch 7.3.234 +Problem: With GTK menu may be popping down. +Solution: Use event time instead of GDK_CURRENT_TIME. (Hong Xu) +Files: src/gui.c, src/gui.h, src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 7.3.235 +Problem: ";" gets stuck on a "t" command, it's not useful. +Solution: Add the ';' flag in 'cpo'. (Christian Brabandt) +Files: runtime/doc/motion.txt, runtime/doc/options.txt, src/option.h, + src/search.c src/testdir/test81.in, src/testdir/test81.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.236 (after 7.3.232) +Problem: Python 3 doesn't compile without +multi_byte +Solution: Use "latin1" when MULTI_BYTE is not defined. (lilydjwg) +Files: src/if_python3.c + +Patch 7.3.237 +Problem: "filetype" completion doesn't work on Windows. (Yue Wu) +Solution: Don't use a glob pattern for the directories, use a list of + directories. (Dominique Pelle) +Files: src/ex_getln.c + +Patch 7.3.238 +Problem: Compiler warning for conversion. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 7.3.239 +Problem: Python corrects the cursor column without taking 'virtualedit' + into account. (lilydjwg) +Solution: Call check_cursor_col_win(). +Files: src/if_py_both.h, src/mbyte.c, src/misc2.c, src/normal.c, + src/proto/mbyte.pro, src/proto/misc2.pro + +Patch 7.3.240 +Problem: External commands can't use pipes on MS-Windows. +Solution: Implement pipes and use them when 'shelltemp' isn't set. (Vincent + Berthoux) +Files: src/eval.c, src/ex_cmds.c, src/misc2.c, src/os_unix.c, + src/os_win32.c, src/proto/misc2.pro, src/ui.c + +Patch 7.3.241 +Problem: Using CTRL-R CTRL-W on the command line may insert only part of + the word. +Solution: Use the cursor position instead of assuming it is at the end of + the command. (Tyru) +Files: src/ex_getln.c + +Patch 7.3.242 +Problem: Illegal memory access in after_pathsep(). +Solution: Check that the pointer is not at the start of the file name. + (Dominique Pelle) +Files: src/misc2.c + +Patch 7.3.243 +Problem: Illegal memory access in readline(). +Solution: Swap the conditions. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.244 +Problem: MS-Windows: Build problem with old compiler. (John Beckett) +Solution: Only use HandleToLong() when available. (Mike Williams) +Files: src/gui_w32.c + +Patch 7.3.245 +Problem: Python 3.2 libraries not correctly detected. +Solution: Add the suffix to the library name. (Niclas Zeising) +Files: src/auto/configure, src/configure.in + +Patch 7.3.246 (after 7.3.235) +Problem: Repeating "f4" in "4444" skips one 4. +Solution: Check the t_cmd flag. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.247 +Problem: Running tests changes the users viminfo file. Test for patch + 7.3.246 missing. +Solution: Add "nviminfo" to the 'viminfo' option. Include the test. +Files: src/testdir/test78.in, src/testdir/test81.in + +Patch 7.3.248 +Problem: PC Install instructions missing install instructions. +Solution: Step-by-step explanation. (Michael Soyka) +Files: src/INSTALLpc.txt + +Patch 7.3.249 +Problem: Wrong indenting for array initializer. +Solution: Detect '}' in a better way. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.250 +Problem: Python: Errors in Unicode characters not handled nicely. +Solution: Add the surrogateescape error handler. (lilydjwg) +Files: src/if_python3.c + +Patch 7.3.251 +Problem: "gH<Del>" deletes the current line, except when it's the last + line. +Solution: Set the "include" flag to indicate the last line is to be deleted. +Files: src/normal.c, src/ops.c + +Patch 7.3.252 (after 7.3.247) +Problem: Tests fail. (David Northfield) +Solution: Add missing update for .ok file. +Files: src/testdir/test81.ok + +Patch 7.3.253 +Problem: "echo 'abc' > ''" returns 0 or 1, depending on 'ignorecase'. + Checks in mb_strnicmp() for illegal and truncated bytes are + wrong. Should not assume that byte length is equal before case + folding. +Solution: Add utf_safe_read_char_adv() and utf_strnicmp(). Add a test for + this. (Ivan Krasilnikov) +Files: src/mbyte.c src/testdir/test82.in, src/testdir/test82.ok, + src/testdir/Makefile, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.254 +Problem: The coladd field is not reset when setting the line number for a + ":call" command. +Solution: Reset it. +Files: src/eval.c + +Patch 7.3.255 +Problem: When editing a file such as "File[2010-08-15].vim" an E16 error is + given. (Manuel Stol) +Solution: Don't give an error for failing to compile the regexp. +Files: src/ex_docmd.c, src/misc1.c, src/vim.h + +Patch 7.3.256 +Problem: Javascript indenting not sufficiently tested. +Solution: Add more tests. (Luc Deschenaux) Mark the lines that are indented + wrong. +Files: src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.257 +Problem: Not all completions are available to user commands. +Solution: Add "color", "compiler", "file_in_path" and "locale". (Dominique + Pelle) +Files: src/ex_docmd.c, runtime/doc/map.txt + +Patch 7.3.258 +Problem: MS-Windows: The edit with existing vim context menu entries can be + unwanted. +Solution: Let a registry entry disable them. (Jerome Vuarand) +Files: src/GvimExt/gvimext.cpp + +Patch 7.3.259 +Problem: Equivalence classes only work for latin characters. +Solution: Add the Unicode equivalence characters. (Dominique Pelle) +Files: runtime/doc/pattern.txt, src/regexp.c, src/testdir/test44.in, + src/testdir/test44.ok + +Patch 7.3.260 +Problem: CursorHold triggers on an incomplete mapping. (Will Gray) +Solution: Don't trigger CursorHold when there is typeahead. +Files: src/fileio.c + +Patch 7.3.261 +Problem: G++ error message erroneously recognized as error. +Solution: Ignore "In file included from" line also when it ends in a colon. + (Fernando Castillo) +Files: src/option.h + +Patch 7.3.262 +Problem: Photon code style doesn't match Vim style. +Solution: Clean up some of it. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.263 +Problem: Perl and Tcl have a few code style problems. +Solution: Clean it up. (Elias Diem) +Files: src/if_perl.xs, src/if_tcl.c + +Patch 7.3.264 +Problem: When the current directory name contains wildcard characters, such + as "foo[with]bar", the tags file can't be found. (Jeremy + Erickson) +Solution: When searching for matching files also match without expanding + wildcards. This is a bit of a hack. +Files: src/vim.h, src/misc1.c, src/misc2.c + +Patch 7.3.265 +Problem: When storing a pattern in search history there is no proper check + for the separator character. +Solution: Pass the separator character to in_history(). (Taro Muraoka) +Files: src/ex_getln.c + +Patch 7.3.266 +Problem: In gvim with iBus typing space in Insert mode doesn't work. +Solution: Clear xim_expected_char after checking it. +Files: src/mbyte.c + +Patch 7.3.267 +Problem: Ruby on Mac OS X 10.7 may crash. +Solution: Avoid alloc(0). (Bjorn Winckler) +Files: src/if_ruby.c + +Patch 7.3.268 +Problem: Vim freezes when executing an external command with zsh. +Solution: Use O_NOCTTY both in the master and slave. (Bjorn Winckler) +Files: src/os_unix.c + +Patch 7.3.269 +Problem: 'shellcmdflag' only works with one flag. +Solution: Split into multiple arguments. (Gary Johnson) +Files: src/os_unix.c + +Patch 7.3.270 +Problem: Illegal memory access. +Solution: Swap conditions. (Dominique Pelle) +Files: src/ops.c + +Patch 7.3.271 +Problem: Code not following Vim coding style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.272 +Problem: ":put =list" does not add an empty line for a trailing empty + item. +Solution: Add a trailing NL when turning a list into a string. +Files: src/eval.c + +Patch 7.3.273 +Problem: A BOM in an error file is seen as text. (Aleksey Baibarin) +Solution: Remove the BOM from the text before evaluating. (idea by Christian + Brabandt) +Files: src/quickfix.c, src/mbyte.c, src/proto/mbyte.pro, + src/testdir/test10.in + +Patch 7.3.274 +Problem: With concealed characters tabs do not have the right size. +Solution: Use VCOL_HLC instead of vcol. (Eiichi Sato) +Files: src/screen.c + +Patch 7.3.275 +Problem: MS-Windows: When using a black background some screen updates + cause the window to flicker. +Solution: Add WS_CLIPCHILDREN to CreateWindow(). (Ren茅 Aguirre) +Files: src/gui_w32.c + +Patch 7.3.276 +Problem: GvimExt sets $LANG in the wrong way. +Solution: Save the environment and use it for gvim. (Yasuhiro Matsumoto) +Files: src/GvimExt/gvimext.cpp + +Patch 7.3.277 +Problem: MS-Windows: some characters do not show in dialogs. +Solution: Use the wide methods when available. (Yanwei Jia) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + +Patch 7.3.278 +Problem: Passing the file name to open in VisVim doesn't work. +Solution: Adjust the index and check for end of buffer. (Jiri Sedlak) +Files: src/VisVim/Commands.cpp + +Patch 7.3.279 +Problem: With GTK, when gvim is full-screen and a tab is opened and using a + specific monitor configuration the window is too big. +Solution: Adjust the window size like on MS-Windows. (Yukihiro Nakadaira) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.3.280 +Problem: ":lmake" does not update the quickfix window title. +Solution: Update the title. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + +Patch 7.3.281 +Problem: After using "expand('%:8')" the buffer name is changed. +Solution: Make a copy of the file name before shortening it. +Files: src/eval.c + +Patch 7.3.282 +Problem: When using input() and :echo in a loop the displayed text is + incorrect. (Benjamin Fritz) +Solution: Only restore the cursor position when there is a command line. + (Ben Schmidt) +Files: src/ex_getln.c + +Patch 7.3.283 +Problem: An expression mapping with a multibyte character containing a + 0x80 byte gets messed up. (ZyX) +Solution: Unescape the expression before evaluating it (Yukihiro Nakadaira) +Files: src/getchar.c + +Patch 7.3.284 +Problem: The str2special() function doesn't handle multibyte characters + properly. +Solution: Recognize multibyte characters. (partly by Vladimir Vichniakov) +Files: src/getchar.c, src/message.c, src/misc2.c + +Patch 7.3.285 (after 7.3.284) +Problem: Mapping <Char-123> no longer works. +Solution: Properly check for "char-". Add a test for it. +Files: src/misc2.c, src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.286 +Problem: Crash when using "zd" on a large number of folds. (Sam King) +Solution: Recompute pointer after reallocating array. Move fewer entries + when making room. +Files: src/fold.c + +Patch 7.3.287 +Problem: Can't compile with MSVC and tiny options. +Solution: Move variables and #ifdefs. (Sergey Khorev) +Files: src/os_win32.c + +Patch 7.3.288 +Problem: has('python') may give an error message for not being able to load + the library after using python3. +Solution: Only give the error when the verbose argument is true. +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.289 +Problem: Complete function isn't called when the leader changed. +Solution: Call ins_compl_restart() when the leader changed. (Taro Muraoka) +Files: src/edit.c + +Patch 7.3.290 +Problem: When a BufWriteCmd autocommand resets 'modified' this doesn't + change older buffer states to be marked as 'modified' like + ":write" does. (Yukihiro Nakadaira) +Solution: When the BufWriteCmd resets 'modified' then adjust the undo + information like ":write" does. +Files: src/fileio.c + +Patch 7.3.291 +Problem: Configure doesn't work properly with Python3. +Solution: Put -ldl before $LDFLAGS. Add PY3_NO_RTLD_GLOBAL. (Roland + Puntaier) +Files: src/config.h.in, src/auto/configure, src/configure.in + +Patch 7.3.292 +Problem: Crash when using fold markers and selecting a visual block that + includes a folded line and goes to end of line. (Sam Lidder) +Solution: Check for the column to be MAXCOL. (James Vega) +Files: src/screen.c + +Patch 7.3.293 +Problem: MSVC compiler has a problem with non-ASCII characters. +Solution: Avoid non-ASCII characters. (Hong Xu) +Files: src/ascii.h, src/spell.c + +Patch 7.3.294 (after 7.3.289) +Problem: Patch 289 causes more problems than it solves. +Solution: Revert the patch until a better solution is found. +Files: src/edit.c + +Patch 7.3.295 +Problem: When filtering text with an external command Vim may not read all + the output. +Solution: When select() is interrupted loop and try again. (James Vega) +Files: src/os_unix.c + +Patch 7.3.296 +Problem: When writing to an external command a zombie process may be left + behind. +Solution: Wait on the process. (James Vega) +Files: src/os_unix.c + +Patch 7.3.297 +Problem: Can't load Perl 5.14 dynamically. +Solution: Add code in #ifdefs. (Charles Cooper) +Files: if_perl.xs + +Patch 7.3.298 +Problem: Built-in colors are different from rgb.txt. +Solution: Adjust the color values. (Benjamin Haskell) +Files: src/gui_photon.c, src/gui_w48.c + +Patch 7.3.299 +Problem: Source code not in Vim style. +Solution: Adjust the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.300 +Problem: Python doesn't parse multibyte argument correctly. +Solution: Use "t" instead of "s". (lilydjwg) +Files: src/if_py_both.h + +Patch 7.3.301 +Problem: When 'smartindent' and 'copyindent' are set a Tab is used even + though 'expandtab' is set. +Solution: Do not insert Tabs. Add a test. (Christian Brabandt) +Files: src/misc1.c, src/testdir/test19.in, src/testdir/test19.ok + +Patch 7.3.302 (after 7.3.301) +Problem: Test 19 fails without 'smartindent' and +eval. +Solution: Don't use ":exe". Source small.vim. +Files: src/testdir/test19.in + +Patch 7.3.303 (after 7.3.296) +Problem: Compilation error. +Solution: Correct return type from int to pid_t. (Danek Duvall) +Files: src/os_unix.c + +Patch 7.3.304 +Problem: Strawberry Perl doesn't work on MS-Windows. +Solution: Use xsubpp if needed. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.3.305 +Problem: Auto-loading a function while editing the command line causes + scrolling up the display. +Solution: Don't set msg_scroll when defining a function and the user is not + typing. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.306 +Problem: When closing a window there is a chance that deleting a scrollbar + triggers a GUI resize, which uses the window while it is not in a + valid state. +Solution: Set the buffer pointer to NULL to be able to detect the invalid + situation. Fix a few places that used the buffer pointer + incorrectly. +Files: src/buffer.c, src/ex_cmds.c, src/term.c, src/window.c + +Patch 7.3.307 +Problem: Python 3 doesn't support slice assignment. +Solution: Implement slices. (Brett Overesch, Roland Puntaier) +Files: src/if_python3.c + +Patch 7.3.308 +Problem: Writing to 'verbosefile' has problems, e.g. for :highlight. +Solution: Do not use a separate verbose_write() function but write with the + same code that does redirecting. (Yasuhiro Matsumoto) +Files: src/message.c + +Patch 7.3.309 (after 7.3.307) +Problem: Warnings for pointer types. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + +Patch 7.3.310 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/gui_photon.c + +Patch 7.3.311 (replaces 7.3.289) +Problem: Complete function isn't called when the leader changed. +Solution: Allow the complete function to return a dictionary with a flag + that indicates ins_compl_restart() is to be called when the leader + changes. (Taro Muraoka) +Files: runtime/insert.txt, src/edit.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.312 (after 7.3.306) +Problem: Can't compile with tiny features. +Solution: Add #ifdef around win_valid(). +Files: src/buffer.c + +Patch 7.3.313 (after 7.3.307) +Problem: One more warning when compiling with dynamic Python 3. +Solution: Change PySliceObject to PyObject. +Files: src/if_python3.c + +Patch 7.3.314 (after 7.3.304) +Problem: Missing parenthesis. +Solution: Add it. (Benjamin R. Haskell) +Files: src/Make_mvc.mak + +Patch 7.3.315 +Problem: Opening a window before forking causes problems for GTK. +Solution: Fork first, create the window in the child and report back to the + parent process whether it worked. If successful the parent exits, + if unsuccessful the child exits and the parent continues in the + terminal. (Tim Starling) +Files: src/gui.c + +Patch 7.3.316 (after 7.3.306) +Problem: Crash when 'colorcolumn' is set and closing buffer. +Solution: Check for w_buffer to be NULL. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 7.3.317 +Problem: Calling debug.debug() in Lua may cause Vim to hang. +Solution: Add a better debug method. (Rob Hoelz, Luis Carvalho) +Files: src/if_lua.c + +Patch 7.3.318 +Problem: "C" on the last line deletes that line if it's blank. +Solution: Only delete the last line for a delete operation. (James Vega) +Files: src/ops.c + +Patch 7.3.319 (after 7.3.311) +Problem: Redobuff doesn't always include changes of the completion leader. +Solution: Insert backspaces as needed. (idea by Taro Muraoka) +Files: src/edit.c + +Patch 7.3.320 +Problem: When a 0xa0 character is in a sourced file the error message for + unrecognized command does not show the problem. +Solution: Display 0xa0 as <a0>. +Files: src/ex_docmd.c + +Patch 7.3.321 +Problem: Code not following Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_qnx.c + +Patch 7.3.322 +Problem: #ifdef for PDP_RETVAL doesn't work, INT_PTR can be a typedef. +Solution: Check the MSC version and 64 bit flags. (Sergiu Dotenco) +Files: src/os_mswin.c + +Patch 7.3.323 +Problem: The default 'errorformat' does not ignore some "included from" + lines. +Solution: Add a few more patterns. (Ben Boeckel) +Files: src/option.h + +Patch 7.3.324 (after 7.3.237) +Problem: Completion for ":compiler" shows color scheme names. +Solution: Fix the directory name. (James Vega) +Files: src/ex_getln.c + +Patch 7.3.325 +Problem: A duplicated function argument gives an internal error. +Solution: Give a proper error message. (based on patch by Tyru) +Files: src/eval.c + +Patch 7.3.326 +Problem: MingW 4.6 no longer supports the -mno-cygwin option. +Solution: Split the Cygwin and MingW makefiles. (Matsushita Shougo) +Files: src/GvimExt/Make_cyg.mak, src/GvimExt/Make_ming.mak, + src/Make_cyg.mak, src/Make_ming.mak, src/xxd/Make_ming.mak, + Filelist + +Patch 7.3.327 +Problem: When jumping to a help tag a closed fold doesn't open. +Solution: Save and restore KeyTyped. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.328 +Problem: When command line wraps the cursor may be displayed wrong when + there are multibyte characters. +Solution: Position the cursor before drawing the text. (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 7.3.329 +Problem: When skipping over code from ":for" to ":endfor" get an error for + calling a dict function. (Yasuhiro Matsumoto) +Solution: Ignore errors when skipping over :call command. +Files: src/ex_docmd.c, src/eval.c + +Patch 7.3.330 +Problem: When longjmp() is invoked if the X server gives an error the state + is not properly restored. +Solution: Reset vgetc_busy. (Yukihiro Nakadaira) +Files: src/main.c + +Patch 7.3.331 +Problem: "vit" selects wrong text when a tag name starts with the same text + as an outer tag name. (Ben Fritz) +Solution: Add "\>" to the pattern to check for word boundary. +Files: src/search.c + +Patch 7.3.332 (after 7.3.202) +Problem: Indent after "public:" is not increased in C++ code. (Lech Lorens) +Solution: Check for namespace after the regular checks. (partly by Martin + Gieseking) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.333 +Problem: Using "." to repeat a Visual delete counts the size in bytes, not + characters. (Connor Lane Smith) +Solution: Store the virtual column numbers instead of byte positions. +Files: src/normal.c + +Patch 7.3.334 +Problem: Latest MingW about XSUBPP referencing itself. (Gongqian Li) +Solution: Rename the first use to XSUBPPTRY. +Files: src/Make_ming.mak + +Patch 7.3.335 +Problem: When 'imdisable' is reset from an autocommand in Insert mode it + doesn't take effect. +Solution: Call im_set_active() in Insert mode. (Taro Muraoka) +Files: src/option.c + +Patch 7.3.336 +Problem: When a tags file specifies an encoding different from 'enc' it + may hang and using a pattern doesn't work. +Solution: Convert the whole line. Continue reading the header after the + SORT tag. Add test83. (Yukihiro Nakadaira) +Files: src/tag.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test83-tags2, src/testdir/test83-tags3, + src/testdir/test83.in, src/testdir/test83.ok + +Patch 7.3.337 (after 7.3.295) +Problem: Screen doesn't update after resizing the xterm until a character + is typed. +Solution: When the select call is interrupted check do_resize. (Taylor + Hedberg) +Files: src/os_unix.c + +Patch 7.3.338 +Problem: Using getchar() in an expression mapping doesn't work well. +Solution: Don't save and restore the typeahead. (James Vega) +Files: src/getchar.c, src/testdir/test34.ok + +Patch 7.3.339 +Problem: "make shadow" doesn't link all test files. +Solution: Add a line in Makefile and Filelist. +Files: src/Makefile, Filelist + +Patch 7.3.340 +Problem: When 'verbosefile' is set ftplugof.vim can give an error. +Solution: Only remove filetypeplugin autocommands when they exist. (Yasuhiro + Matsumoto) +Files: runtime/ftplugof.vim + +Patch 7.3.341 +Problem: Local help files are only listed in help.txt, not in translated + help files. +Solution: Also find translated help files. (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.342 +Problem: Code not in Vim style. +Solution: Fix the style. (Elias Diem) +Files: src/os_amiga.c, src/os_mac_conv.c, src/os_win16.c + +Patch 7.3.343 +Problem: No mouse support for urxvt. +Solution: Implement urxvt mouse support, also for > 252 columns. (Yiding + Jia) +Files: src/feature.h, src/keymap.h, src/option.h, src/os_unix.c, + src/term.c, src/version.c + +Patch 7.3.344 +Problem: Problem with GUI startup related to XInitThreads. +Solution: Use read() and write() instead of fputs() and fread(). (James + Vega) +Files: src/gui.c + +Patch 7.3.345 +Problem: When switching language with ":lang" the window title doesn't + change until later. +Solution: Update the window title right away. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.3.346 +Problem: It's hard to test netbeans commands. +Solution: Process netbeans commands after :sleep. (Xavier de Gaye) +Files: runtime/doc/netbeans.txt, src/ex_docmd.c, src/netbeans.c + +Patch 7.3.347 +Problem: When dropping text from a browser on Vim it receives HTML even + though "html" is excluded from 'clipboard'. (Andrei Avk) +Solution: Fix the condition for TARGET_HTML. +Files: src/gui_gtk_x11.c + +Patch 7.3.348 +Problem: "call range(1, 947948399)" causes a crash. (ZyX) +Solution: Avoid a loop in the out of memory message. +Files: src/misc2.c + +Patch 7.3.349 +Problem: When running out of memory during startup trying to open a + swapfile will loop forever. +Solution: Let findswapname() set dirp to NULL if out of memory. +Files: src/memline.c + +Patch 7.3.350 +Problem: Block of code after ":lua << EOF" may not work. (Paul Isambert) +Solution: Recognize the ":lua" command, skip to EOF. +Files: src/eval.c + +Patch 7.3.351 +Problem: Text formatting uses start of insert position when it should not. + (Peter Wagenaar) +Solution: Do not use Insstart when intentionally formatting. +Files: src/edit.c + +Patch 7.3.352 +Problem: When completing methods dict functions and script-local functions + get in the way. +Solution: Sort function names starting with "<" to the end. (Yasuhiro + Matsumoto) +Files: src/ex_getln.c + +Patch 7.3.353 (after 7.3.343) +Problem: Missing part of the urxvt patch. +Solution: Add the change in term.c +Files: src/term.c + +Patch 7.3.354 +Problem: ":set backspace+=eol" doesn't work when 'backspace' has a + backwards compatible value of 2. +Solution: Convert the number to a string. (Hirohito Higashi) +Files: src/option.c + +Patch 7.3.355 +Problem: GTK warnings when using netrw.vim. (Ivan Krasilnikov) +Solution: Do not remove the beval event handler twice. +Files: src/option.c + +Patch 7.3.356 +Problem: Using "o" with 'cindent' set may freeze Vim. (lolilolicon) +Solution: Skip over {} correctly. (Hari G) +Files: src/misc1.c + +Patch 7.3.357 +Problem: Compiler warning in MS-Windows console build. +Solution: Adjust return type of PrintHookProc(). (Mike Williams) +Files: src/os_mswin.c + +Patch 7.3.358 (after 7.3.353) +Problem: Mouse support doesn't work properly. +Solution: Add HMT_URXVT. (lilydjwg, James McCoy) +Files: src/term.c + +Patch 7.3.359 +Problem: Command line completion shows dict functions. +Solution: Skip dict functions for completion. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.360 +Problem: Interrupting the load of an autoload function may cause a crash. +Solution: Do not use the hashitem when not valid. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.3.361 +Problem: Accessing memory after it is freed when EXITFREE is defined. +Solution: Don't access curwin when firstwin is NULL. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.362 +Problem: ml_get error when using ":g" with folded lines. +Solution: Adjust the line number for changed_lines(). (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.363 +Problem: C indenting is wrong after #endif followed by a semicolon. +Solution: Add special handling for a semicolon in a line by itself. (Lech + Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.364 (after 7.3.353) +Problem: Can't compile on HP-UX. (John Marriott) +Solution: Only use TTYM_URXVT when it is defined. +Files: src/term.c + +Patch 7.3.365 +Problem: Crash when using a large Unicode character in a file that has + syntax highlighting. (ngollan) +Solution: Check for going past the end of the utf tables. (Dominique Pelle) +Files: src/mbyte.c + +Patch 7.3.366 +Problem: A tags file with an extremely long name causes errors. +Solution: Ignore tags that are too long. (Arno Renevier) +Files: src/tag.c + +Patch 7.3.367 +Problem: :wundo and :rundo use a wrong checksum. +Solution: Include the last line when computing the hash. (Christian Brabandt) +Files: src/undo.c + +Patch 7.3.368 +Problem: Gcc complains about redefining _FORTIFY_SOURCE. +Solution: Undefine it before redefining it. +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.369 +Problem: When compiled with Gnome get an error message when using --help. +Solution: Don't fork. (Ivan Krasilnikov) +Files: src/main.c + +Patch 7.3.370 +Problem: Compiler warns for unused variable in Lua interface. +Solution: Remove the variable. +Files: src/if_lua.c + +Patch 7.3.371 +Problem: Crash in autocomplete. (Greg Weber) +Solution: Check not going over allocated buffer size. +Files: src/misc2.c + +Patch 7.3.372 +Problem: When using a command line mapping to <Up> with file name + completion to go one directory up, 'wildchar' is inserted. + (Yasuhiro Matsumoto) +Solution: Set the KeyTyped flag. +Files: src/ex_getln.c + +Patch 7.3.373 (after 7.3.366) +Problem: A tags file with an extremely long name may cause an infinite loop. +Solution: When encountering a long name switch to linear search. +Files: src/tag.c + +Patch 7.3.374 +Problem: ++encoding does not work properly. +Solution: Recognize ++encoding before ++enc. (Charles Cooper) +Files: src/ex_docmd.c + +Patch 7.3.375 +Problem: Duplicate return statement. +Solution: Remove the superfluous one. (Dominique Pelle) +Files: src/gui_mac.c + +Patch 7.3.376 +Problem: Win32: Toolbar repainting does not work when the mouse pointer + hovers over a button. +Solution: Call DefWindowProc() when not handling an event. (Sergiu Dotenco) +Files: src/gui_w32.c + +Patch 7.3.377 +Problem: No support for bitwise AND, OR, XOR and invert. +Solution: Add and(), or(), invert() and xor() functions. +Files: src/eval.c, src/testdir/test49.in, src/testdir/test65.in, + src/testdir/test65.ok, runtime/doc/eval.txt + +Patch 7.3.378 +Problem: When cross-compiling the check for uint32_t fails. +Solution: Only give a warning message. (Maksim Melnikau) +Files: src/configure.in, src/auto/configure + +Patch 7.3.379 +Problem: C-indenting wrong for static enum. +Solution: Skip over "static". (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.380 +Problem: C-indenting wrong for a function header. +Solution: Skip to the start paren. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.381 +Problem: Configure silently skips interfaces that won't work. +Solution: Add the --enable-fail_if_missing argument. (Shlomi Fish) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.382 (after 7.3.376) +Problem: IME characters are inserted twice. +Solution: Do not call DefWindowProc() if the event was handled. (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.383 +Problem: For EBCDIC pound sign is defined as 't'. +Solution: Correctly define POUND. +Files: src/ascii.h + +Patch 7.3.384 +Problem: Mapping CTRL-K in Insert mode breaks CTRL-X CTRL-K for dictionary + completion. +Solution: Add CTRL-K to the list of recognized keys. (James McCoy) +Files: src/edit.c + +Patch 7.3.385 +Problem: When using an expression mapping on the command line the cursor + ends up in the wrong place. (Yasuhiro Matsumoto) +Solution: Save and restore msg_col and msg_row when evaluating the + expression. +Files: src/getchar. + +Patch 7.3.386 +Problem: Test 83 fails when iconv does not support cp932. (raf) +Solution: Test if conversion works. (Yukihiro Nakadaira) +Files: src/testdir/test83.in + +Patch 7.3.387 (after 7.3.386) +Problem: Test 83 may fail for some encodings. +Solution: Set 'encoding' to utf-8 earlier. +Files: src/testdir/test83.in + +Patch 7.3.388 +Problem: Crash on exit when EXITFREE is defined and using tiny features. +Solution: Check for NULL window pointer. (Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.389 +Problem: After typing at a prompt the "MORE" message appears too soon. +Solution: reset lines_left in msg_end_prompt(). (Eswald) +Files: src/message.c + +Patch 7.3.390 +Problem: Using NULL buffer pointer in a window. +Solution: Check for w_buffer being NULL in more places. (Bjorn Winckler) +Files: src/ex_cmds.c, src/quickfix.c, src/window.c + +Patch 7.3.391 +Problem: Can't check if the XPM_W32 feature is enabled. +Solution: Add xpm_w32 to the list of features. (kat) +Files: src/eval.c + +Patch 7.3.392 +Problem: When setting 'undofile' while the file is already loaded but + unchanged, try reading the undo file. (Andy Wokula) +Solution: Compute a checksum of the text when 'undofile' is set. (Christian + Brabandt) +Files: src/option.c, src/testdir/test72.in, src/testdir/test72.ok + +Patch 7.3.393 +Problem: Win32: When resizing Vim it is always moved to the primary monitor + if the secondary monitor is on the left. +Solution: Use the nearest monitor. (Yukihiro Nakadaira) +Files: src/gui_w32.c + +Patch 7.3.394 +Problem: When placing a mark while starting up a screen redraw messes up + the screen. (lith) +Solution: Don't redraw while still starting up. (Christian Brabandt) +Files: src/screen.c + +Patch 7.3.395 (after 7.3.251) +Problem: "dv?bar" in the last line deletes too much and breaks undo. +Solution: Only adjust the cursor position when it's after the last line of + the buffer. Add a test. (Christian Brabandt) +Files: src/ops.c, src/testdir/test43.in, src/testdir/test43.ok + +Patch 7.3.396 +Problem: After forcing an operator to be characterwise it can still become + linewise when spanning whole lines. +Solution: Don't make the operator linewise when motion_force was set. + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.397 +Problem: ":helpgrep" does not work properly when 'encoding' is not utf-8 or + latin1. +Solution: Convert non-ascii lines to 'encoding'. (Yasuhiro Matsumoto) +Files: src/quickfix.c, src/spell.c, src/misc2.c, src/proto/misc2.pro + +Patch 7.3.398 +Problem: When creating more than 10 location lists and adding items one by + one a previous location may be used. (Audrius Ka啪ukauskas) +Solution: Clear the location list completely when adding the tenth one. +Files: src/quickfix.c + +Patch 7.3.399 +Problem: ":cd" doesn't work when the path contains wildcards. (Yukihiro + Nakadaira) +Solution: Ignore wildcard errors when the EW_NOTWILD flag is used. +Files: src/misc1.c + +Patch 7.3.400 +Problem: Compiler warnings for shadowed variables. +Solution: Remove or rename the variables. +Files: src/charset.c, src/digraph.c, src/edit.c, src/eval.c, src/fold.c, + src/getchar.c, src/message.c, src/misc2.c, src/move.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/window.c + +Patch 7.3.401 +Problem: A couple more shadowed variables. +Solution: Rename the variables. +Files: src/netbeans.c + +Patch 7.3.402 +Problem: When jumping to the first error a line of the buffer is sometimes + redrawn on top of the list of errors. +Solution: Do not call update_topline_redraw() if the display was scrolled + up. +Files: src/quickfix.c + +Patch 7.3.403 +Problem: ":helpgrep" does not trigger QuickFixCmd* autocommands. +Solution: Trigger the autocommands. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.404 +Problem: When a complete function uses refresh "always" redo will not work + properly. +Solution: Do not reset compl_leader when compl_opt_refresh_always is set. + (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.405 +Problem: When xterm gets back the function keys it may delete the urxvt + mouse termcap code. +Solution: Check for the whole code, not just the start. (Egmont Koblinger) +Files: src/keymap.h, src/misc2.c, src/term.c + +Patch 7.3.406 +Problem: Multi-byte characters in b:browsefilter are not handled correctly. +Solution: First use convert_filter() normally and then convert to wide + characters. (Taro Muraoka) +Files: src/gui_w48.c + +Patch 7.3.407 +Problem: ":12verbose call F()" may duplicate text while trying to truncate. + (Thinca) +Solution: Only truncate when there is not enough room. Also check the byte + length of the buffer. +Files: src/buffer.c, src/eval.c, src/ex_getln.c, src/message.c, + src/proto/message.pro + +Patch 7.3.408 (after 7.3.406) +Problem: Missing declaration. +Solution: Add the declaration. (John Marriott) +Files: src/gui_w48.c + +Patch 7.3.409 +Problem: The license in pty.c is unclear. +Solution: Add a comment about the license. +Files: src/pty.c + +Patch 7.3.410 +Problem: Compiler error for // comment. (Joachim Schmitz) +Solution: Turn into /* comment */. +Files: src/message.c + +Patch 7.3.411 +Problem: Pasting in Visual mode using the "" register does not work. (John + Beckett) +Solution: Detect that the write is overwriting the pasted register. + (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.412 +Problem: Storing a float in a session file has an additional '&'. +Solution: Remove the '&'. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.413 +Problem: Build warnings on MS-Windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_getln.c, src/message.c, src/term.c + +Patch 7.3.414 +Problem: Using CTRL-A on "000" drops the leading zero, while on "001" it + doesn't. +Solution: Detect "000" as an octal number. (James McCoy) +Files: src/charset.c + +Patch 7.3.415 (after 7.3.359) +Problem: Completion of functions stops once a dictionary is encountered. + (James McCoy) +Solution: Return an empty string instead of NULL. +Files: src/eval.c + +Patch 7.3.416 (after 7.3.415) +Problem: Compiler warning for wrong pointer. +Solution: Add type cast. +Files: src/eval.c + +Patch 7.3.417 (after 7.3.395) +Problem: Test 43 fails with a tiny build. +Solution: Only run test 43 with at least a small build. +Files: src/testdir/test43.in + +Patch 7.3.418 +Problem: When a user complete function returns -1 an error message is + given. +Solution: When -2 is returned stop completion silently. (Yasuhiro Matsumoto) +Files: src/edit. + +Patch 7.3.419 +Problem: DBCS encoding in a user command does not always work. +Solution: Skip over DBCS characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.420 +Problem: "it" and "at" don't work properly with a dash in the tag name. +Solution: Require a space to match the tag name. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.421 +Problem: Get E832 when setting 'undofile' in vimrc and there is a file to + be edited on the command line. (Toothpik) +Solution: Do not try reading the undo file for a file that wasn't loaded. +Files: src/option.c + +Patch 7.3.422 +Problem: Python 3 does not have __members__. +Solution: Add "name" and "number" in another way. (lilydjwg) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.423 +Problem: Small mistakes in comments, proto and indent. +Solution: Fix the mistakes. +Files: src/ex_cmds2.c, src/structs.h, src/ui.c, src/proto/ex_docmd.pro + +Patch 7.3.424 +Problem: Win16 version missing some functions. +Solution: Add #defines for the functions. +Files: src/gui_w16.c + +Patch 7.3.425 (after 7.3.265) +Problem: Search history lines are duplicated. (Edwin Steiner) +Solution: Convert separator character from space to NUL. +Files: src/ex_getln.c + +Patch 7.3.426 +Problem: With '$' in 'cpoptions' the $ is not displayed in the first + column. +Solution: Use -1 instead of 0 as a special value. (Hideki Eiraku and + Hirohito Higashi) +Files: src/edit.c, src/globals.h, src/move.c, src/screen.c, src/search.c + +Patch 7.3.427 +Problem: readfile() can be slow with long lines. +Solution: Use realloc() instead of alloc(). (John Little) +Files: src/eval.c + +Patch 7.3.428 +Problem: Win32: an xpm file without a mask crashes Vim. +Solution: Fail when the mask is missing. (Dave Bodenstab) +Files: src/xpm_w32.c + +Patch 7.3.429 +Problem: When 'cpoptions' includes "E" "c0" in the first column is an + error. The redo register is then set to the erroneous command. +Solution: Do not set the redo register if the command fails because of an + empty region. (Hideki Eiraku) +Files: src/getchar.c, src/normal.c, src/proto/getchar.pro + +Patch 7.3.430 +Problem: When a custom filetype detection uses "augroup END" the conf + filetype detection does not have the filetypedetect group. +Solution: Always end the group and include filetypedetect in the conf + autocommand. (Lech Lorens) +Files: runtime/filetype.vim + +Patch 7.3.431 +Problem: Fetching a key at a prompt may be confused by escape sequences. + Especially when getting a prompt at a VimEnter autocommand. + (Alex Efros) +Solution: Properly handle escape sequences deleted by check_termcode(). +Files: src/getchar.c, src/misc1.c, src/term.c, src/proto/term.pro + +Patch 7.3.432 +Problem: ACLs are not supported for ZFS or NFSv4 on Solaris. +Solution: Add configure check and code. (Danek Duvall) +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/os_unix.c + +Patch 7.3.433 +Problem: Using continued lines in a Vim script can be slow. +Solution: Instead of reallocating for every line use a growarray. (Yasuhiro + Matsumoto) +Files: src/ex_cmds2.c + +Patch 7.3.434 +Problem: Using join() can be slow. +Solution: Compute the size of the result before allocation to avoid a lot of + allocations and copies. (Taro Muraoka) +Files: src/eval.c + +Patch 7.3.435 +Problem: Compiler warning for unused variable. +Solution: Move the variable inside #ifdef. +Files: src/ex_cmds2.c + +Patch 7.3.436 +Problem: Compiler warnings for types on Windows. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c + +Patch 7.3.437 +Problem: Continue looping inside FOR_ALL_TAB_WINDOWS even when already done. +Solution: Use goto instead of break. (Hirohito Higashi) +Files: src/fileio.c, src/globals.h + +Patch 7.3.438 +Problem: There is no way to avoid ":doautoall" reading modelines. +Solution: Add the <nomodeline> argument. Adjust documentation. +Files: src/fileio.c, runtime/doc/autocmd.txt + +Patch 7.3.439 +Problem: Compiler warnings to size casts in Perl interface. +Solution: Use XS macros. (James McCoy) +Files: src/if_perl.xs, src/typemap + +Patch 7.3.440 +Problem: Vim does not support UTF8_STRING for the X selection. +Solution: Add UTF8_STRING atom support. (Alex Efros) Use it only when + 'encoding' is set to Unicode. +Files: src/ui.c + +Patch 7.3.441 +Problem: Newer versions of MzScheme (Racket) require earlier (trampolined) + initialisation. +Solution: Call mzscheme_main() early in main(). (Sergey Khorev) +Files: src/Make_mvc.mak, src/if_mzsch.c, src/main.c, + src/proto/if_mzsch.pro + +Patch 7.3.442 (after 7.3.438) +Problem: Still read modelines for ":doautocmd". +Solution: Move check for <nomodeline> to separate function. +Files: src/fileio.c, src/ex_docmd.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + +Patch 7.3.443 +Problem: MS-Windows: 'shcf' and 'shellxquote' defaults are not very good. +Solution: Make a better guess when 'shell' is set to "cmd.exe". (Ben Fritz) +Files: src/option.c, runtime/doc/options.txt + +Patch 7.3.444 +Problem: ":all!" and ":sall!" give error E477, even though the + documentation says these are valid commands. +Solution: Support the exclamation mark. (Hirohito Higashi) +Files: src/ex_cmds.h, src/testdir/test31.in, src/testdir/test31.ok + +Patch 7.3.445 (after 7.3.443) +Problem: Can't properly escape commands for cmd.exe. +Solution: Default 'shellxquote' to '('. Append ')' to make '(command)'. + No need to use "/s" for 'shellcmdflag'. +Files: src/misc2.c, src/option.c, src/os_win32.c + +Patch 7.3.446 (after 7.3.445) +Problem: Win32: External commands with special characters don't work. +Solution: Add the 'shellxescape' option. +Files: src/misc2.c, src/option.c, src/option.h, runtime/doc/options.txt + +Patch 7.3.447 (after 7.3.446) +Problem: Win32: External commands with "start" do not work. +Solution: Unescape part of the command. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.448 (after 7.3.447) +Problem: Win32: Still a problem with "!start /b". +Solution: Escape only '|'. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.449 +Problem: Crash when a BufWinLeave autocommand closes the only other window. + (Daniel Hunt) +Solution: Abort closing a buffer when it becomes the only one. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, src/ex_getln.c, + src/misc2.c, src/quickfix.c, src/window.c, src/proto/window.pro + +Patch 7.3.450 (after 7.3.448) +Problem: Win32: Still a problem with "!start /b". +Solution: Fix pointer use. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.3.451 +Problem: Tcl doesn't work on 64 MS-Windows. +Solution: Make it work. (Dave Bodenstab) +Files: src/Make_mvc.mak, src/if_tcl.c + +Patch 7.3.452 +Problem: Undo broken when pasting close to the last line. (Andrey Radev) +Solution: Use a flag to remember if the deleted included the last line. + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.453 +Problem: Pasting in the command line is slow. +Solution: Don't redraw if there is another character to read. (Dominique + Pelle) +Files: src/ex_getln.c + +Patch 7.3.454 +Problem: Re-allocating memory slows Vim down. +Solution: Use realloc() in ga_grow(). (Dominique Pelle) +Files: src/misc2.c + +Patch 7.3.455 +Problem: Using many continuation lines can be slow. +Solution: Adjust the reallocation size to the current length. +Files: src/ex_cmds2.c + +Patch 7.3.456 +Problem: ":tab drop file" has several problems, including moving the + current window and opening a new tab for a file that already has a + window. +Solution: Refactor ":tab drop" handling. (Hirohito Higashi) +Files: src/buffer.c, src/testdir/test62.in, src/testdir/test62.ok + +Patch 7.3.457 +Problem: When setting $VIMRUNTIME later the directory for fetching + translated messages is not adjusted. +Solution: Put bindtextdomain() in vim_setenv(). +Files: src/misc1.c + +Patch 7.3.458 +Problem: Crash when calling smsg() during startup. +Solution: Don't use 'shortmess' when it is not set yet. +Files: src/option.c + +Patch 7.3.459 +Problem: Win32: Warnings for type conversion. +Solution: Add type casts. (Mike Williams) +Files: src/misc2.c, src/os_win32.c + +Patch 7.3.460 +Problem: Win32: UPX does not compress 64 bit binaries. +Solution: Mention and add the alternative: mpress. (Dave Bodenstab) +Files: src/INSTALLpc.txt, src/Make_ming.mak + +Patch 7.3.461 +Problem: The InsertCharPre autocommand event is not triggered during + completion and when typing several characters quickly. +Solution: Also trigger InsertCharPre during completion. Do not read ahead + when an InsertCharPre autocommand is defined. (Yasuhiro Matsumoto) +Files: src/edit.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.3.462 +Problem: When using ":loadview" folds may be closed unexpectedly. +Solution: Take into account foldlevel. (Xavier de Gaye) +Files: src/fold.c + +Patch 7.3.463 +Problem: When using ":s///c" the cursor is moved away from the match. + (Lawman) +Solution: Don't move the cursor when do_ask is set. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.464 +Problem: Compiler warning for sprintf. +Solution: Put the length in a variable. (Dominique Pelle) +Files: src/version.c + +Patch 7.3.465 +Problem: Cannot get file name with newline from glob(). +Solution: Add argument to glob() and expand() to indicate they must return a + list. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/vim.h + +Patch 7.3.466 +Problem: Get ml_get error hen ":behave mswin" was used and selecting + several lines. (A. Sinan Unur) +Solution: Adjust the end of the operation. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.467 +Problem: Cursor positioned wrong at the command line when regaining focus + and using some input method. +Solution: Do not position the cursor in command line mode. +Files: src/mbyte.c + +Patch 7.3.468 +Problem: For some compilers the error file is not easily readable. +Solution: Use QuickFixCmdPre for more commands. (Marcin Szamotulski) +Files: runtime/doc/autocmd.txt, src/quickfix.c + +Patch 7.3.469 +Problem: Compiler warning for unused argument without some features. +Solution: Add UNUSED. +Files: src/buffer.c + +Patch 7.3.470 +Problem: Test 62 fails when compiled without GUI and X11. +Solution: Don't test :drop when it is not supported. +Files: src/testdir/test62.in + +Patch 7.3.471 +Problem: Can't abort listing placed signs. +Solution: Check "got_int". (Christian Brabandt) +Files: src/buffer.c, src/ex_cmds.c + +Patch 7.3.472 +Problem: Crash when using ":redraw" in a BufEnter autocommand and + switching to another tab. (椹煎嘲) +Solution: Move triggering the autocommands to after correcting the + option values. Also check the row value to be out of bounds. + (Christian Brabandt, Sergey Khorev) +Files: src/screen.c, src/window.c + +Patch 7.3.473 +Problem: 'cursorbind' does not work correctly in combination with + 'virtualedit' set to "all". +Solution: Copy coladd. (Gary Johnson) +Files: src/move.c + +Patch 7.3.474 +Problem: Perl build with gcc 4 fails. +Solution: Remove XS() statements. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 7.3.475 +Problem: In a terminal with few colors the omnicomplete menu may be hard to + see when using the default colors. +Solution: Use more explicit colors. (suggested by Alex Henrie) +Files: src/syntax.c + +Patch 7.3.476 +Problem: When selecting a block, using "$" to include the end of each line + and using "A" and typing a backspace strange things happen. + (Yuangchen Xie) +Solution: Avoid using a negative length. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.477 +Problem: Using ":echo" to output enough lines to scroll, then using "j" and + "k" at the more prompt, displays the command on top of the output. + (Marcin Szamotulski) +Solution: Put the output below the command. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.478 +Problem: Memory leak using the ':rv!' command when reading dictionary or + list global variables i.e. with 'viminfo' containing !. +Solution: Free the typeval. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.479 +Problem: When 'cursorline' is set the line number highlighting can't be set + separately. +Solution: Add "CursorLineNr". (Howard Buchholz) +Files: src/option.c, src/screen.c, src/syntax.c, src/vim.h + +Patch 7.3.480 +Problem: When using ":qa" and there is a changed buffer picking the buffer + to jump to is not very good. +Solution: Consider current and other tab pages. (Hirohito Higashi) +Files: src/ex_cmds2.c + +Patch 7.3.481 +Problem: Changing 'virtualedit' in an operator function to "all" does not + have the desired effect. (Aaron Bohannon) +Solution: Save, reset and restore virtual_op when executing an operator + function. +Files: src/normal.c + +Patch 7.3.482 +Problem: With 'cursorbind' set moving up/down does not always keep the same + column. +Solution: Set curswant appropriately. (Gary Johnson) +Files: src/move.c + +Patch 7.3.483 (after 7.3.477) +Problem: More prompt shows up too often. +Solution: Instead of adding a line break, only start a new line in the + message history. (Christian Brabandt) +Files: src/eval.c, src/message.c, src/proto/message.pro + +Patch 7.3.484 +Problem: The -E and --echo-wid command line arguments are not mentioned in + "vim --help". +Solution: Add the help lines. (Dominique Pelle) +Files: src/main.c + +Patch 7.3.485 +Problem: When building Vim LDFLAGS isn't passed on to building xxd. +Solution: Pass the LDFLAGS value. (James McCoy) +Files: src/Makefile + +Patch 7.3.486 +Problem: Build error with mingw64 on Windows 7. +Solution: Avoid the step of going through vimres.res. (Guopeng Wen) +Files: src/Make_ming.mak + +Patch 7.3.487 +Problem: When setting 'timeoutlen' or 'ttimeoutlen' the column for vertical + movement is reset unnecessarily. +Solution: Do not set w_set_curswant for every option. Add a test for this. + (Kana Natsuno) Add the P_CURSWANT flag for options. +Files: src/option.c, src/testdir/test84.in, src/testdir/test84.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.488 +Problem: ":help!" in a help file does not work as documented. +Solution: When in a help file don't give an error message. (thinca) +Files: src/ex_cmds.c + +Patch 7.3.489 +Problem: CTRL-] in Insert mode does not expand abbreviation when used in a + mapping. (Yichao Zhou) +Solution: Special case using CTRL-]. (Christian Brabandt) +Files: src/getchar.c, src/edit.c + +Patch 7.3.490 +Problem: Member confusion in Lua interface. +Solution: Fix it. Add luaeval(). (Taro Muraoka, Luis Carvalho) +Files: runtime/doc/if_lua.txt, src/eval.c, src/if_lua.c, + src/proto/if_lua.pro + +Patch 7.3.491 +Problem: No tests for Lua. +Solution: Add some simple tests for Lua. (Luis Carvalho) +Files: src/testdir/test1.in, src/testdir/test85.in, src/testdir/test85.ok + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.492 +Problem: Can't indent conditions separately from function arguments. +Solution: Add the 'k' flag in 'cino'. (Lech Lorens) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + +Patch 7.3.493 (after 7.3.492) +Problem: Two unused variables. +Solution: Remove them. (Hong Xu) +Files: src/misc1.c + +Patch 7.3.494 (after 7.3.491) +Problem: Can't compile with Lua 5.1 or dynamic Lua. +Solution: Fix dll_ methods. Fix luado(). (Muraoka Taro, Luis Carvalho) +Files: src/if_lua.c + +Patch 7.3.495 (after 7.3.492) +Problem: Compiler warnings. +Solution: Add function declaration. Remove "offset" argument. +Files: src/misc1.c + +Patch 7.3.496 +Problem: MS-DOS: When "diff" trips over difference in line separators some + tests fail. +Solution: Make some .ok files use unix line separators. (David Pope) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 7.3.497 +Problem: Crash when doing ":python print" and compiled with gcc and + the optimizer enabled. +Solution: Avoid the crash, doesn't really fix the problem. (Christian + Brabandt) +Files: src/if_py_both.h + +Patch 7.3.498 +Problem: The behavior of the "- register changes depending on value of + the 'clipboard' option. (Szamotulski) +Solution: Also set the "- register when the register is "*" or "+". + (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.499 +Problem: When using any interface language when Vim is waiting for a child + process it gets confused by a child process started through the + interface. +Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto) +Files: src/os_unix.c + +Patch 7.3.500 +Problem: Ming makefile unconditionally sets WINVER. +Solution: Only defined when not already defined. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak + +Patch 7.3.501 +Problem: Error for "flush" not being defined when using Ruby command. +Solution: Defined "flush" as a no-op method. (Kent Sibilev) +Files: src/if_ruby.c + +Patch 7.3.502 +Problem: Netbeans insert halfway a line actually appends to the line. +Solution: Insert halfway the line. (Brian Victor) +Files: src/netbeans.c + +Patch 7.3.503 (after 7.3.501) +Problem: Warning for unused argument. +Solution: Add UNUSED. +Files: src/if_ruby.c + +Patch 7.3.504 +Problem: Commands in help files are not highlighted. +Solution: Allow for commands in backticks. Adjust CTRL-] to remove the + backticks. +Files: src/ex_cmds.c + +Patch 7.3.505 +Problem: Test 11 fails on MS-Windows in some versions. +Solution: Fix #ifdefs for whether filtering through a pipe is possible. Move + setting b_no_eol_lnum back to where it was before patch 7.3.124. + (David Pope) +Files: src/feature.h, src/eval.c, src/ex_cmds.c, src/fileio.c + +Patch 7.3.506 +Problem: GTK gives an error when selecting a non-existent file. +Solution: Add a handler to avoid the error. (Christian Brabandt) +Files: src/gui_gtk.c + +Patch 7.3.507 +Problem: When exiting with unsaved changes, selecting an existing file in + the file dialog, there is no dialog to ask whether the existing + file should be overwritten. (Felipe G. Nievinski) +Solution: Call check_overwrite() before writing. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/proto/ex_cmds.pro + +Patch 7.3.508 +Problem: Default for v:register is not set. +Solution: Init v:register in eval_init(). Correct for 'clipboard' before the + main loop. (Ingo Karkat) +Files: src/eval.c, src/main.c + +Patch 7.3.509 +Problem: ":vimgrep" fails when 'autochdir' is set. +Solution: A more generic solution for changing directory. (Ben Fritz) +Files: src/quickfix.c + +Patch 7.3.510 +Problem: Test 77 fails on Solaris 7. (Michael Soyka) +Solution: Replace any tabs with spaces. +Files: src/testdir/test77.in + +Patch 7.3.511 +Problem: Using a FileReadCmd autocommand that does ":e! {file}" may cause a + crash. (Christian Brabandt) +Solution: Properly restore curwin->w_s. +Files: src/fileio.c + +Patch 7.3.512 +Problem: undofile() returns a useless name when passed an empty string. +Solution: Return an empty string. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.513 +Problem: Cannot use CTRL-E and CTRL-Y with "r". +Solution: Make CTRL-E and CTRL-Y work like in Insert mode. (Christian + Brabandt) +Files: src/edit.c, src/normal.c, src/proto/edit.pro + +Patch 7.3.514 +Problem: No completion for :history command. +Solution: Add the completion and update the docs. Also fix ":behave" + completion. (Dominique Pelle) +Files: runtime/doc/cmdline.txt, runtime/doc/map.txt, src/ex_docmd.c, + src/ex_getln.c, src/vim.h + +Patch 7.3.515 +Problem: 'wildignorecase' only applies to the last part of the path. +Solution: Also ignore case for letters earlier in the path. +Files: src/misc1.c + +Patch 7.3.516 +Problem: extend(o, o) may crash Vim. +Solution: Fix crash and add test. (Thinca and Hirohito Higashi) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.517 +Problem: Crash when using "vipvv". (Alexandre Provencio) +Solution: Don't let the text length become negative. +Files: src/ops.c + +Patch 7.3.518 +Problem: When 'encoding' is a double-byte encoding ":helptags" may not find + tags correctly. +Solution: Use vim_strbyte() instead of vim_strchr(). (Yasuhiro Matsumoto) +Files: src/ex_cmds.c + +Patch 7.3.519 +Problem: When completefunction returns it cannot indicate end of completion + mode. +Solution: Recognize completefunction returning -3. (Matsushita Shougo) +Files: src/edit.c + +Patch 7.3.520 +Problem: gvim starts up slow on Ubuntu 12.04. +Solution: Move the call to gui_mch_init_check() to after fork(). (Yasuhiro + Matsumoto) Do check $DISPLAY being set. +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.3.521 +Problem: Using "z=" on a multibyte character may cause a crash. +Solution: Don't use strlen() on an int pointer. +Files: src/spell.c + +Patch 7.3.522 +Problem: Crash in vim_realloc() when using MEM_PROFILE. +Solution: Avoid using a NULL argument. (Dominique Pelle) +Files: src/eval.c + +Patch 7.3.523 +Problem: ":diffupdate" doesn't check for files changed elsewhere. +Solution: Add the ! flag. (Christian Brabandt) +Files: runtime/doc/diff.txt, src/diff.c, src/ex_cmds.h + +Patch 7.3.524 (after 7.3.523) +Problem: Missing comma. +Solution: Add the comma. +Files: src/version.c + +Patch 7.3.525 +Problem: Compiler warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 7.3.526 +Problem: Confusing indenting for #ifdef. +Solution: Remove and add indent. (Elias Diem) +Files: src/normal.c + +Patch 7.3.527 +Problem: Clang complains about non-ASCII characters in a string. +Solution: Change to \x88 form. (Dominique Pelle) +Files: src/charset.c + +Patch 7.3.528 +Problem: Crash when closing last window in a tab. (Alex Efros) +Solution: Use common code in close_last_window_tabpage(). (Christian + Brabandt) +Files: src/window.c + +Patch 7.3.529 +Problem: Using a count before "v" and "V" does not work (Kikyous) +Solution: Make the count select that many characters or lines. (Christian + Brabandt) +Files: src/normal.c + +Patch 7.3.530 (after 7.3.520) +Problem: gvim does not work when 'guioptions' includes "f". (Davido) +Solution: Call gui_mch_init_check() when running GUI in the foreground. + (Yasuhiro Matsumoto) +Files: src/gui.c + +Patch 7.3.531 (after 7.3.530) +Problem: GUI does not work on MS-Windows. +Solution: Add the missing #ifdef. (Patrick Avery) +Files: src/gui.c + +Patch 7.3.532 +Problem: Compiler warning from Clang. +Solution: Use a different way to point inside a string. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.3.533 +Problem: Memory leak when writing undo file. +Solution: Free the ACL. (Dominique Pelle) +Files: src/undo.c + +Patch 7.3.534 (after 7.3.461) +Problem: When using an InsertCharPre autocommand autoindent fails. +Solution: Proper handling of v:char. (Alexey Radkov) +Files: src/edit.c + +Patch 7.3.535 +Problem: Many #ifdefs for MB_MAXBYTES. +Solution: Also define MB_MAXBYTES without the +multi_byte feature. Fix + places where the buffer didn't include space for a NUL byte. +Files: src/arabic.c, src/edit.c, src/eval.c, src/getchar.c, src/mbyte.c, + src/misc1.c, src/screen.c, src/spell.c, src/vim.h + +Patch 7.3.536 +Problem: When spell checking the German sharp s is not seen as a word + character. (Aexl Bender) +Solution: In utf_islower() return true for the sharp s. Note: also need + updated spell file for this to take effect. +Files: src/mbyte.c + +Patch 7.3.537 +Problem: Unnecessary call to init_spell_chartab(). +Solution: Delete the call. +Files: src/spell.c + +Patch 7.3.538 +Problem: 'efm' does not handle Tabs in pointer lines. +Solution: Add Tab support. Improve tests. (Lech Lorens) +Files: src/quickfix.c, src/testdir/test10.in, src/testdir/test10.ok + +Patch 7.3.539 +Problem: Redrawing a character on the command line does not work properly + for multibyte characters. +Solution: Count the number of bytes in a character. (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.3.540 +Problem: Cursor is left on the text instead of the command line. +Solution: Don't call setcursor() in command line mode. +Files: src/getchar.c + +Patch 7.3.541 +Problem: When joining lines comment leaders need to be removed manually. +Solution: Add the 'j' flag to 'formatoptions'. (Lech Lorens) +Files: runtime/doc/change.txt, src/edit.c, src/ex_docmd.c, src/misc1.c, + src/normal.c, src/ops.c, src/option.h, src/proto/misc1.pro, + src/proto/ops.pro, src/search.c, src/testdir/test29.in, + src/testdir/test29.ok + +Patch 7.3.542 (after 7.3.506) +Problem: Function is sometimes unused. +Solution: Add #ifdef. +Files: src/gui_gtk.c + +Patch 7.3.543 +Problem: The cursor is in the wrong line after using ":copen". (John + Beckett) +Solution: Invoke more drastic redraw method. +Files: src/eval.c + +Patch 7.3.544 +Problem: There is no good way to close a quickfix window when closing the + last ordinary window. +Solution: Add the QuitPre autocommand. +Files: src/ex_docmd.c, src/fileio.c, src/vim.h + +Patch 7.3.545 +Problem: When closing a window or buffer autocommands may close it too, + causing problems for where the autocommand was invoked from. +Solution: Add the w_closing and b_closing flags. When set disallow ":q" and + ":close" to prevent recursive closing. +Files: src/structs.h, src/buffer.c, src/ex_docmd.c, src/window.c + +Patch 7.3.546 +Problem: Bogus line break. +Solution: Remove the line break. +Files: src/screen.c + +Patch 7.3.547 (after 7.3.541) +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/ops.c + +Patch 7.3.548 +Problem: Compiler warning on 64 bit Windows. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + +Patch 7.3.549 +Problem: In 'cinoptions' "0s" is interpreted as one shiftwidth. (David + Pineau) +Solution: Use the zero as zero. (Lech Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.550 (after 7.3.541) +Problem: With "j" in 'formatoptions' a list leader is not removed. (Gary + Johnson) +Solution: Don't ignore the start of a three part comment. (Lech Lorens) +Files: src/ops.c, src/testdir/test29.in, src/testdir/test29.ok + +Patch 7.3.551 +Problem: When using :tablose a TabEnter autocommand is triggered too early. + (Karthick) +Solution: Don't trigger *Enter autocommands before closing the tab. + (Christian Brabandt) +Files: src/buffer.c, src/eval.c, src/ex_cmds2.c, src/fileio.c, + src/proto/window.pro, src/window.c + +Patch 7.3.552 +Problem: Formatting inside comments does not use the "2" flag in + 'formatoptions'. +Solution: Support the "2" flag. (Tor Perkins) +Files: src/vim.h, src/ops.c, src/edit.c, src/misc1.c, + src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.553 +Problem: With double-width characters and 'listchars' containing "precedes" + the text is displayed one cell off. +Solution: Check for double-width character being overwritten by the + "precedes" character. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 7.3.554 (after 7.3.551) +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/window.c + +Patch 7.3.555 +Problem: Building on IBM z/OS fails. +Solution: Adjust configure. Use the QUOTESED value from config.mk instead of + the hard coded one in Makefile. (Stephen Bovy) +Files: src/configure.in, src/auto/configure, src/Makefile + +Patch 7.3.556 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.557 +Problem: Crash when an autocommand wipes out a buffer when it is hidden. +Solution: Restore the current window when needed. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.558 +Problem: Memory access error. (Gary Johnson) +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/misc1.c + +Patch 7.3.559 +Problem: home_replace() does not work with 8.3 filename. +Solution: Make ":p" expand 8.3 name to full path. (Yasuhiro Matsumoto) +Files: src/eval.c, src/misc1.c + +Patch 7.3.560 +Problem: Get an error for a locked argument in extend(). +Solution: Initialize the lock flag for a dictionary. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.3.561 +Problem: Using refresh: always in a complete function breaks the "." + command. (Val Markovic) +Solution: Add match leader to the redo buffer. (Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.562 +Problem: ":profdel" should not work when the +profile feature is disabled. +Solution: Call ex_ni(). (Yasuhiro Matsumoto) +Files: src/ex_cmds2.c + +Patch 7.3.563 (after 7.3.557) +Problem: Can't build with tiny features. +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 7.3.564 (after 7.3.559) +Problem: Warning for pointer conversion. +Solution: Add type cast. +Files: src/misc1.c + +Patch 7.3.565 +Problem: Can't generate proto file for Python 3. +Solution: Add PYTHON3_CFLAGS to LINT_CFLAGS. +Files: src/Makefile + +Patch 7.3.566 (after 7.3.561) +Problem: Redo after completion does not work correctly when refresh: always + is not used. (Raymond Ko) +Solution: Check the compl_opt_refresh_always flag. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.567 +Problem: Missing copyright notice. +Solution: Add Vim copyright notice. (Taro Muraoka) +Files: src/dehqx.py + +Patch 7.3.568 +Problem: Bad indents for #ifdefs. +Solution: Add and remove spaces. (Elias Diem) +Files: src/globals.h + +Patch 7.3.569 +Problem: Evaluating Vim expression in Python is insufficient. +Solution: Add vim.bindeval(). Also add pyeval() and py3eval(). (ZyX) +Files: runtime/doc/eval.txt, runtime/doc/if_pyth.txt, src/eval.c, + src/if_lua.c, src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/proto/eval.pro, src/proto/if_python.pro, + src/proto/if_python3.pro, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Makefile, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.570 +Problem: ":vimgrep" does not obey 'wildignore'. +Solution: Apply 'wildignore' and 'suffixes' to ":vimgrep". (Ingo Karkat) +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/quickfix.c, src/spell.c + +Patch 7.3.571 +Problem: Duplicated condition. +Solution: Remove one. (Dominique Pelle) +Files: src/os_win32.c + +Patch 7.3.572 +Problem: Duplicate statement in if and else. (Dominique Pelle) +Solution: Remove the condition and add a TODO. +Files: src/gui_xmebw.c + +Patch 7.3.573 +Problem: Using array index before bounds checking. +Solution: Swap the parts of the condition. (Dominique Pelle) +Files: src/ops.c + +Patch 7.3.574 +Problem: When pasting a register in the search command line a CTRL-L + character is not pasted. (Dominique Pelle) +Solution: Escape the CTRL-L. (Christian Brabandt) +Files: src/ex_getln.c + +Patch 7.3.575 +Problem: "ygt" tries to yank instead of giving an error. (Daniel Mueller) +Solution: Check for a pending operator. +Files: src/normal.c + +Patch 7.3.576 +Problem: Formatting of lists inside comments is not right yet. +Solution: Use another solution and add a test. (Tor Perkins) +Files: src/edit.c, src/misc1.c, src/testdir/test68.in, + src/testdir/test69.ok + +Patch 7.3.577 +Problem: Size of memory does not fit in 32 bit unsigned. +Solution: Use Kbyte instead of byte. Call GlobalMemoryStatusEx() instead of + GlobalMemoryStatus() when available. +Files: src/misc2.c, src/option.c, src/os_amiga.c, src/os_msdos.c, + src/os_win16.c, src/os_win32.c + +Patch 7.3.578 +Problem: Misplaced declaration. +Solution: Move declaration to start of block. +Files: src/if_py_both.h + +Patch 7.3.579 (after 7.3.569) +Problem: Can't compile with Python 2.5. +Solution: Use PyCObject when Capsules are not available. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.580 +Problem: Warning on 64 bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + +Patch 7.3.581 +Problem: Problems compiling with Python. +Solution: Pick UCS2 or UCS4 function at runtime. (lilydjwg) +Files: src/if_python.c + +Patch 7.3.582 (after 7.3.576) +Problem: Missing parts of the test OK file. +Solution: Add the missing parts. +Files: src/testdir/test68.ok + +Patch 7.3.583 +Problem: PyObject_NextNotImplemented is not defined before Python 2.7. + (Danek Duvall) +Solution: Add #ifdefs. +Files: src/if_python.c + +Patch 7.3.584 +Problem: PyCObject is not always defined. +Solution: Use PyObject instead. +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.585 +Problem: Calling changed_bytes() too often. +Solution: Move changed_bytes() out of a loop. (Tor Perkins) +Files: src/edit.c + +Patch 7.3.586 +Problem: When compiling with Cygwin or MingW MEMORYSTATUSEX is not defined. +Solution: Set the default for WINVER to 0x0500. +Files: src/Make_ming.mak, src/Make_cyg.mak + +Patch 7.3.587 +Problem: Compiler warning for local var shadowing global var. +Solution: Rename the var and move it to an inner block. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.588 +Problem: Crash on NULL pointer. +Solution: Fix the immediate problem by checking for NULL. (Lech Lorens) +Files: src/window.c + +Patch 7.3.589 +Problem: Crash when $HOME is not set. +Solution: Check for a NULL pointer. (Chris Webb) +Files: src/misc1.c + +Patch 7.3.590 +Problem: The '< and '> marks cannot be set directly. +Solution: Allow setting '< and '>. (Christian Brabandt) +Files: src/mark.c + +Patch 7.3.591 +Problem: Can only move to a tab by absolute number. +Solution: Move a number of tabs to the left or the right. (Lech Lorens) +Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test62.in, src/testdir/test62.ok, src/window.c + +Patch 7.3.592 +Problem: Vim on GTK does not support g:browsefilter. +Solution: Add a GtkFileFilter to the file chooser. (Christian Brabandt) +Files: src/gui_gtk.c + +Patch 7.3.593 +Problem: No easy way to decide if b:browsefilter will work. +Solution: Add the browsefilter feature. +Files: src/gui_gtk.c, src/eval.c, src/vim.h + +Patch 7.3.594 +Problem: The X command server doesn't work perfectly. It sends an empty + reply for as-keys requests. +Solution: Remove duplicate ga_init2(). Do not send a reply for as-keys + requests. (Brian Burns) +Files: src/if_xcmdsrv.c + +Patch 7.3.595 +Problem: The X command server responds slowly +Solution: Change the loop that waits for replies. (Brian Burns) +Files: src/if_xcmdsrv.c + +Patch 7.3.596 +Problem: Can't remove all signs for a file or buffer. +Solution: Support "*" for the sign id. (Christian Brabandt) +Files: runtime/doc/sign.txt, src/buffer.c, src/ex_cmds.c, + src/proto/buffer.pro + +Patch 7.3.597 +Problem: 'clipboard' "autoselect" only applies to the * register. (Sergey + Vakulenko) +Solution: Make 'autoselect' work for the + register. (Christian Brabandt) + Add the "autoselectplus" option in 'clipboard' and the "P" flag in + 'guioptions'. +Files: runtime/doc/options.txt, src/normal.c, src/ops.c, src/screen.c, + src/ui.c, src/globals.h, src/proto/ui.pro, src/option.h, src/gui.c + +Patch 7.3.598 +Problem: Cannot act upon end of completion. (Taro Muraoka) +Solution: Add an autocommand event that is triggered when completion has + finished. (Idea by Florian Klein) +Files: src/edit.c, src/fileio.c, src/vim.h + +Patch 7.3.599 (after 7.3.597) +Problem: Missing change in one file. +Solution: Patch for changed clip_autoselect(). +Files: src/option.c + +Patch 7.3.600 +Problem: <f-args> is not expanded properly with DBCS encoding. +Solution: Skip over character instead of byte. (Yukihiro Nakadaira) +Files: src/ex_docmd.c + +Patch 7.3.601 +Problem: Bad code style. +Solution: Insert space, remove parens. +Files: src/farsi.c + +Patch 7.3.602 +Problem: Missing files in distribution. +Solution: Update the list of files. +Files: Filelist + +Patch 7.3.603 +Problem: It is possible to add replace builtin functions by calling + extend() on g:. +Solution: Add a flag to a dict to indicate it is a scope. Check for + existing functions. (ZyX) +Files: src/buffer.c, src/eval.c, src/proto/eval.pro, src/structs.h, + src/testdir/test34.in, src/testdir/test34.ok, src/window.c + +Patch 7.3.604 +Problem: inputdialog() doesn't use the cancel argument in the console. + (David Fishburn) +Solution: Use the third argument. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.605 (after 7.3.577) +Problem: MS-Windows: Can't compile with older compilers. (Titov Anatoly) +Solution: Add #ifdef for MEMORYSTATUSEX. +Files: src/os_win32.c + +Patch 7.3.606 +Problem: CTRL-P completion has a problem with multibyte characters. +Solution: Check for next character being NUL properly. (Yasuhiro Matsumoto) +Files: src/search.c, src/macros.h + +Patch 7.3.607 +Problem: With an 8 color terminal the selected menu item is black on black, + because darkGrey as bg is the same as black. +Solution: Swap fg and bg colors. (James McCoy) +Files: src/syntax.c + +Patch 7.3.608 +Problem: winrestview() does not always restore the view correctly. +Solution: Call win_new_height() and win_new_width(). (Lech Lorens) +Files: src/eval.c, src/proto/window.pro, src/window.c + +Patch 7.3.609 +Problem: File names in :checkpath! output are garbled. +Solution: Check for \zs in the pattern. (Lech Lorens) +Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok + +Patch 7.3.610 +Problem: Cannot operate on the text that a search pattern matches. +Solution: Add the "gn" and "gN" commands. (Christian Brabandt) +Files: runtime/doc/index.txt, runtime/doc/visual.txt, src/normal.c, + src/proto/search.pro, src/search.c, src/testdir/test53.in, + src/testdir/test53.ok + +Patch 7.3.611 +Problem: Can't use Vim dictionary as self argument in Python. +Solution: Fix the check for the "self" argument. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.612 +Problem: Auto formatting messes up text when 'fo' contains "2". (ZyX) +Solution: Decrement "less_cols". (Tor Perkins) +Files: src/misc1.c, src/testdir/test68.in, src/testdir/test68.ok + +Patch 7.3.613 +Problem: Including Python's config.c in the build causes trouble. It is + not clear why it was there. +Solution: Omit the config file. (James McCoy) +Files: src/Makefile, src/auto/configure, src/configure.in + +Patch 7.3.614 +Problem: Number argument gets turned into a number while it should be a + string. +Solution: Add flag to the call_vim_function() call. (Yasuhiro Matsumoto) +Files: src/edit.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.615 +Problem: Completion for a user command does not recognize backslash before + a space. +Solution: Recognize escaped characters. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.616 (after 7.3.610) +Problem: Can't compile without +visual. +Solution: Add #ifdef. +Files: src/normal.c + +Patch 7.3.617 (after 7.3.615) +Problem: Hang on completion. +Solution: Skip over the space. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.3.618 (after 7.3.616) +Problem: Still doesn't compile with small features. +Solution: Move current_search() out of #ifdef. (Dominique Pelle) +Files: src/normal.c, src/search.c + +Patch 7.3.619 +Problem: When executing a shell command Vim may become slow to respond. +Solution: Don't wait after every processed message. (idea by Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 7.3.620 +Problem: Building with recent Ruby on Win32 doesn't work. +Solution: Add a separate argument for the API version. (Yasuhiro Matsumoto) +Files: src/Make_ming.mak, src/Make_mvc.mak + +Patch 7.3.621 +Problem: Compiler warnings on 64 bit windows. +Solution: Add type casts. (Mike Williams) +Files: src/ex_docmd.c, src/search.c + +Patch 7.3.622 +Problem: XPM library for Win32 can't be found. +Solution: Suggest using the one from the Vim ftp site. +Files: src/Make_mvc.mak + +Patch 7.3.623 +Problem: Perl 5.14 commands crash Vim on MS-Windows. +Solution: Use perl_get_sv() instead of GvSV(). (Raymond Ko) +Files: src/if_perl.xs + +Patch 7.3.624 +Problem: When cancelling input() it returns the third argument. That should + only happen for inputdialog(). +Solution: Check if inputdialog() was used. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.3.625 +Problem: "gn" does not handle zero-width matches correctly. +Solution: Handle zero-width patterns specially. (Christian Brabandt) +Files: src/search.c + +Patch 7.3.626 +Problem: Python interface doesn't build with Python 2.4 or older. +Solution: Define Py_ssize_t. (Benjamin Bannier) +Files: src/if_py_both.h + +Patch 7.3.627 +Problem: When using the "n" flag with the ":s" command a \= substitution + will not be evaluated. +Solution: Do perform the evaluation, so that a function can be invoked at + every matching position without changing the text. (Christian + Brabandt) +Files: src/ex_cmds.c + +Patch 7.3.628 +Problem: ":open" does not allow for a !, which results in a confusing error + message. (Shawn Wilson) +Solution: Allow ! on ":open". (Christian Brabandt) +Files: src/ex_cmds.h + +Patch 7.3.629 +Problem: There is no way to make 'shiftwidth' follow 'tabstop'. +Solution: When 'shiftwidth' is zero use the value of 'tabstop'. (Christian + Brabandt) +Files: src/edit.c, src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/option.c, src/proto/option.pro + +Patch 7.3.630 +Problem: "|" does not behave correctly when 'virtualedit' is set. +Solution: Call validate_virtcol(). (David B眉rgin) +Files: src/normal.c + +Patch 7.3.631 +Problem: Cannot complete user names. +Solution: Add user name completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/auto/configure, src/config.h.in, + src/configure.in, src/ex_docmd.c, src/ex_getln.c, src/misc1.c, + src/misc2.c, src/proto/misc1.pro, src/vim.h + +Patch 7.3.632 +Problem: Cannot select beyond 222 columns with the mouse in xterm. +Solution: Add support for SGR mouse tracking. (Hayaki Saito) +Files: runtime/doc/options.txt, src/feature.h, src/keymap.h, src/misc2.c, + src/option.h, src/os_unix.c, src/term.c, src/version.c + +Patch 7.3.633 +Problem: Selection remains displayed as selected after selecting another + text. +Solution: Call xterm_update() before select(). (Andrew Pimlott) +Files: src/os_unix.c + +Patch 7.3.634 +Problem: Month/Day format for undo is confusing. (Marcin Szamotulski) +Solution: Always use Year/Month/Day, should work for everybody. +Files: src/undo.c + +Patch 7.3.635 +Problem: Issue 21: System call during startup sets 'lines' to a wrong + value. (Karl Yngve) +Solution: Don't set the shell size while the GUI is still starting up. + (Christian Brabandt) +Files: src/ui.c + +Patch 7.3.636 (after 7.3.625) +Problem: Not all zero-width matches handled correctly for "gn". +Solution: Move zero-width detection to a separate function. (Christian + Brabandt) +Files: src/search.c + +Patch 7.3.637 +Problem: Cannot catch the error caused by a foldopen when there is no fold. + (ZyX, Issue 48) +Solution: Do not break out of the loop early when inside try/catch. + (Christian Brabandt) Except when there is a syntax error. +Files: src/ex_docmd.c, src/globals.h + +Patch 7.3.638 +Problem: Unnecessary redraw of the previous character. +Solution: Check if the character is double-width. (Jon Long) +Files: src/screen.c + +Patch 7.3.639 +Problem: It's not easy to build Vim on Windows with XPM support. +Solution: Include the required files, they are quite small. Update the + MSVC makefile to use them. Binary files are in the next patch. + (Sergey Khorev) +Files: src/xpm/COPYRIGHT, src/xpm/README.txt, src/xpm/include/simx.h, + src/xpm/include/xpm.h, src/Make_mvc.mak, src/bigvim.bat, + src/bigvim64.bat, Filelist + +Patch 7.3.640 +Problem: It's not easy to build Vim on Windows with XPM support. +Solution: Binary files for 7.3.639. (Sergey Khorev) +Files: src/xpm/x64/lib/libXpm.lib, src/xpm/x86/lib/libXpm.a, + src/xpm/x86/lib/libXpm.lib + +Patch 7.3.641 +Problem: ":mkview" uses ":normal" instead of ":normal!" for folds. (Dan) +Solution: Add the bang. (Christian Brabandt) +Files: src/fold.c + +Patch 7.3.642 +Problem: Segfault with specific autocommands. Was OK after 7.3.449 and + before 7.3.545. (Richard Brown) +Solution: Pass TRUE for abort_if_last in the call to close_buffer(). + (Christian Brabandt) +Files: src/window.c + +Patch 7.3.643 (after 7.3.635) +Problem: MS-Windows: When starting gvim maximized 'lines' and 'columns' are + wrong. (Christian Robinson) +Solution: Move the check for gui.starting from ui_get_shellsize() to + check_shellsize(). +Files: src/ui.c, src/term.c + +Patch 7.3.644 +Problem: Dead code for BeOS GUI. +Solution: Remove unused __BEOS__ stuff. +Files: src/gui.c + +Patch 7.3.645 +Problem: No tests for patch 7.3.625 and 7.3.637. +Solution: Add more tests for the "gn" command and try/catch. (Christian + Brabandt) +Files: src/testdir/test53.in, src/testdir/test53.ok, + src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.3.646 +Problem: When reloading a buffer the undo file becomes unusable unless ":w" + is executed. (Dmitri Frank) +Solution: After reloading the buffer write the undo file. (Christian + Brabandt) +Files: src/fileio.c + +Patch 7.3.647 +Problem: "gnd" doesn't work correctly in Visual mode. +Solution: Handle Visual mode differently in "gn". (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.648 +Problem: Crash when using a very long file name. (ZyX) +Solution: Properly check length of buffer space. +Files: src/buffer.c + +Patch 7.3.649 +Problem: When 'clipboard' is set to "unnamed" small deletes end up in the + numbered registers. (Ingo Karkat) +Solution: Use the original register name to decide whether to put a delete + in a numbered register. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.650 +Problem: Completion after ":help \{-" gives an error message and messes up + the command line. +Solution: Cancel the tag search if the pattern can't be compiled. (Yasuhiro + Matsumoto) +Files: src/tag.c + +Patch 7.3.651 +Problem: Completion after ":help \{-" gives an error message. +Solution: Prepend a backslash. +Files: src/ex_cmds.c + +Patch 7.3.652 +Problem: Workaround for Python crash isn't perfect. +Solution: Change the type of the length argument. (Sean Estabrooks) +Files: src/if_py_both.h + +Patch 7.3.653 +Problem: MingW needs build rule for included XPM files. Object directory + for 32 and 64 builds is the same, also for MSVC. +Solution: Add MingW build rule to use included XPM files. Add the CPU or + architecture to the object directory name. (Sergey Khorev) +Files: src/Make_ming.mak, src/Make_mvc.mak, src/xpm/README.txt + +Patch 7.3.654 +Problem: When creating a Vim dictionary from Python objects an empty key + might be used. +Solution: Do not use empty keys, throw an IndexError. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.655 +Problem: 64 bit MingW xpm .a file is missing. +Solution: Add the file. (Sergey Khorev) +Files: src/xpm/x64/lib/libXpm.a + +Patch 7.3.656 +Problem: Internal error in :pyeval. +Solution: Handle failed object conversion. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.657 +Problem: Python bindings silently truncate string values containing NUL. +Solution: Fail when a string contains NUL. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.658 +Problem: NUL bytes truncate strings when converted from Python. +Solution: Handle truncation as an error. (ZyX) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.659 +Problem: Recent Python changes are not tested. +Solution: Add tests for Python bindings. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.660 +Problem: ":help !" jumps to help for ":!". +Solution: Adjust check for tag header line. (Andy Wokula) +Files: src/tag.c + +Patch 7.3.661 (after 7.3.652) +Problem: SEGV in Python code. +Solution: Initialize len to zero. Use the right function depending on + version. (Maxim Philippov) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.662 +Problem: Can't build Ruby interface with Ruby 1.9.3. +Solution: Add missing functions. (V. Ondruch) +Files: src/if_ruby.c + +Patch 7.3.663 +Problem: End of color scheme name not clear in E185. (Aaron Lewis) +Solution: Put the name in single quotes. +Files: src/ex_docmd.c + +Patch 7.3.664 +Problem: Buffer overflow in unescaping text. (Raymond Ko) +Solution: Limit check for multibyte character to 4 bytes. +Files: src/mbyte.c + +Patch 7.3.665 +Problem: MSVC 11 is not supported. (Raymond Ko) +Solution: Recognize MSVC 11. (Gary Willoughby) +Files: src/Make_mvc.mak + +Patch 7.3.666 +Problem: With MSVC 11 Win32.mak is not found. +Solution: Add the SDK_INCLUDE_DIR variable. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.667 +Problem: Unused variables in Perl interface. +Solution: Adjust #ifdefs. +Files: src/if_perl.xs + +Patch 7.3.668 +Problem: Building with Perl loaded dynamically still uses static library. +Solution: Adjust use of PL_thr_key. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.3.669 +Problem: When building with Cygwin loading Python dynamically fails. +Solution: Use DLLLIBRARY instead of INSTSONAME. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.670 +Problem: Python: memory leaks when there are exceptions. +Solution: Add DICTKEY_UNREF in the right places. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.671 +Problem: More Python code can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.672 +Problem: Not possible to lock/unlock lists in Python interface. +Solution: Add .locked and .scope attributes. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.673 +Problem: Using "gN" while 'selection' is "exclusive" misses one character. + (Ben Fritz) +Solution: Check the direction when compensating for exclusive selection. + (Christian Brabandt) +Files: src/search.c + +Patch 7.3.674 +Problem: Can't compile with Lua/dyn on Cygwin. +Solution: Adjust configure to use the right library name. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.675 +Problem: Using uninitialized memory with very long file name. +Solution: Put NUL after text when it is truncated. (ZyX) +Files: src/buffer.c + +Patch 7.3.676 +Problem: Ruby compilation on Windows 32 bit doesn't work. +Solution: Only use some functions for 64 bit. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.3.677 +Problem: buf_spname() is used inconsistently. +Solution: Make the return type a char_u pointer. Check the size of the + returned string. +Files: src/buffer.c, src/proto/buffer.pro, src/ex_cmds2.c, + src/ex_docmd.c, src/memline.c, src/screen.c + +Patch 7.3.678 +Problem: Ruby .so name may not be correct. +Solution: Use the LIBRUBY_SO entry from the config. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + +Patch 7.3.679 +Problem: Ruby detection uses Config, newer Ruby versions use RbConfig. +Solution: Detect the need to use RbConfig. (Vit Ondruch) +Files: src/configure.in, src/auto/configure + +Patch 7.3.680 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + +Patch 7.3.681 (after 7.3.680) +Problem: List of distributed files picks up backup files. +Solution: Make tutor patterns more specific. +Files: Filelist + +Patch 7.3.682 (after 7.3.677) +Problem: Compiler complains about incompatible types. +Solution: Remove type casts. (hint by Danek Duvall) +Files: src/edit.c + +Patch 7.3.683 +Problem: ":python" may crash when vimbindeval() returns None. +Solution: Check for v_string to be NULL. (Yukihiro Nakadaira) +Files: src/if_py_both.h + +Patch 7.3.684 +Problem: "make test" does not delete lua.vim. +Solution: Add lua.vim to the clean target. (Simon Ruderich) +Files: src/testdir/Makefile, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms + +Patch 7.3.685 +Problem: No test for what patch 7.3.673 fixes. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.686 +Problem: Using CTRL-\ e mappings is useful also when entering an + expression, but it doesn't work. (Marcin Szamotulski) +Solution: Allow using CTRL-\ e when entering an expression if it was not + typed. +Files: src/ex_getln.c + +Patch 7.3.687 +Problem: Test 16 fails when $DISPLAY is not set. +Solution: Skip the test when $DISPLAY is not set. +Files: src/testdir/test16.in + +Patch 7.3.688 +Problem: Python 3.3 is not supported. +Solution: Add Python 3.3 support (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.689 +Problem: MzScheme and Lua may use a NULL string. +Solution: Use an empty string instead of NULL. (Yukihiro Nakadaira) +Files: src/if_lua.c, src/if_mzsch.c + +Patch 7.3.690 +Problem: When the current directory name is exactly the maximum path length + Vim may crash. +Solution: Only add "/" when there is room. (Danek Duvall) +Files: src/os_unix.c + +Patch 7.3.691 +Problem: State specific to the Python thread is discarded. +Solution: Keep state between threads. (Paul) +Files: src/if_python.c + +Patch 7.3.692 +Problem: Can't build GTK version with GTK 2.0. +Solution: Put GtkFileFilter declaration in the right place. (Yegappan + Lakshmanan) +Files: src/gui_gtk.c + +Patch 7.3.693 +Problem: Can't make 'softtabstop' follow 'shiftwidth'. +Solution: When 'softtabstop' is negative use the value of 'shiftwidth'. + (so8res) +Files: src/edit.c, src/option.c, src/proto/option.pro + +Patch 7.3.694 +Problem: Now that 'shiftwidth' may use the value of 'tabstop' it is not so + easy to use in indent files. +Solution: Add the shiftwidth() function. (so8res) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.695 +Problem: Balloon cannot show multibyte text. +Solution: Properly deal with multibyte characters. (Dominique Pelle) +Files: src/gui_beval.c, src/ui.c + +Patch 7.3.696 +Problem: Message about added spell language can be wrong. +Solution: Give correct message. Add g:menutrans_set_lang_to to allow for + translation. (Jiri Sedlak) +Files: runtime/menu.vim + +Patch 7.3.697 +Problem: Leaking resources when setting GUI font. +Solution: Free the font. (Ken Takata) +Files: src/syntax.c + +Patch 7.3.698 +Problem: Python 3 does not preserve state between commands. +Solution: Preserve the state. (Paul Ollis) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.699 +Problem: When 'ttymouse' is set to "sgr" manually, it is overruled by + automatic detection. +Solution: Do not use automatic detection when 'ttymouse' was set manually. + (Hayaki Saito) +Files: src/term.c + +Patch 7.3.700 +Problem: Cannot detect URXVT and SGR mouse support. +Solution: add +mouse_urxvt and +mouse_sgr. (Hayaki Saito) +Files: src/feature.h, src/eval.c + +Patch 7.3.701 +Problem: MS-Windows: Crash with stack overflow when setting 'encoding'. +Solution: Handle that loading the iconv library may be called recursively. + (Jiri Sedlak) +Files: src/os_win32.c + +Patch 7.3.702 +Problem: Nmake from VS6 service pack 6 is not recognized. +Solution: Detect the version number. (Jiri Sedlak) +Files: src/Make_mvc.mak + +Patch 7.3.703 +Problem: When 'undofile' is reset the hash is computed unnecessarily. +Solution: Only compute the hash when the option was set. (Christian Brabandt) +Files: src/option.c + +Patch 7.3.704 +Problem: Repeating "cgn" does not always work correctly. +Solution: Also fetch the operator character. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.705 +Problem: Mouse features are not sorted properly. (Tony Mechelynck) +Solution: Put the mouse features in alphabetical order. +Files: src/version.c + +Patch 7.3.706 (after 7.3.697) +Problem: Can't build Motif version. +Solution: Fix wrongly named variable. (Ike Devolder) +Files: src/syntax.c + +Patch 7.3.707 (after 7.3.701) +Problem: Problems loading a library for a file name with non-latin + characters. +Solution: Use wide system functions when possible. (Ken Takata) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.708 +Problem: Filler lines above the first line may be hidden when opening Vim. +Solution: Change how topfill is computed. (Christian Brabandt) +Files: src/diff.c, src/testdir/test47.in, src/testdir/test47.ok + +Patch 7.3.709 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/eval.c + +Patch 7.3.710 (after 7.3.704) +Problem: Patch 7.3.704 breaks "fn". +Solution: Add check for ca.cmdchar. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.711 (after 7.3.688) +Problem: vim.current.buffer is not available. (lilydjwg) +Solution: Use py3_PyUnicode_AsUTF8 instead of py3_PyUnicode_AsUTF8String. + (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.712 +Problem: Nmake from VS2010 SP1 is not recognized. +Solution: Add the version number. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 7.3.713 +Problem: printf() can only align to bytes, not characters. +Solution: Add the "S" item. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/message.c + +Patch 7.3.714 +Problem: Inconsistency: :set can be used in the sandbox, but :setlocal and + :setglobal cannot. (Michael Henry) +Solution: Fix the flags for :setlocal and :setglobal. (Christian Brabandt) +Files: src/ex_cmds.h + +Patch 7.3.715 +Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin + Szamotulski) +Solution: Set w_llist to NULL when it was freed. Also add a test. + (Christian Brabandt) +Files: src/quickfix.c, src/testdir/test49.ok, src/testdir/test49.vim + +Patch 7.3.716 +Problem: Error on exit when using Python 3. +Solution: Remove PythonIO_Fini(). (Roland Puntaier) +Files: src/if_python3.c + +Patch 7.3.717 +Problem: When changing the font size, only MS-Windows limits the window + size. +Solution: Also limit the window size on other systems. (Roland Puntaier) +Files: src/gui.c + +Patch 7.3.718 +Problem: When re-using the current buffer the buffer-local options stay. +Solution: Re-initialize the buffer-local options. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.719 +Problem: Cannot run new version of cproto, it fails on missing include + files. +Solution: Add lots of #ifndef PROTO +Files: src/os_amiga.c, src/os_amiga.h, src/gui_w16.c, src/gui_w48.c, + src/gui_w32.c, src/vimio.h, src/os_msdos.c, src/os_msdos.h, + src/os_win16.h, src/os_win16.c, src/os_win32.h, src/os_win32.c, + src/os_mswin.c, src/gui_photon.c, src/os_unix.h, src/os_beos.c, + src/os_beos.h + +Patch 7.3.720 +Problem: Proto files are outdated. +Solution: Update the newly generated proto files. +Files: src/proto/digraph.pro, src/proto/fold.pro, src/proto/misc1.pro, + src/proto/move.pro, src/proto/screen.pro, src/proto/search.pro, + src/proto/os_win32.pro, src/proto/os_mswin.pro, + src/proto/os_beos.pro + +Patch 7.3.721 +Problem: Ruby interface defines local functions globally. +Solution: Make the functions static. +Files: src/if_ruby.c + +Patch 7.3.722 +Problem: Perl flags may contain "-g", which breaks "make proto". +Solution: Filter out the "-g" flag for cproto. (Ken Takata) +Files: src/Makefile + +Patch 7.3.723 +Problem: Various tiny problems. +Solution: Various tiny fixes. +Files: src/gui_mac.c, src/xpm_w32.c, src/netbeans.c, src/sha256.c, + src/if_sniff.c, README.txt + +Patch 7.3.724 +Problem: Building with Ruby and Tcl on MS-Windows 64 bit does not work. +Solution: Remove Ruby and Tcl from the big MS-Windows build. +Files: src/bigvim64.bat + +Patch 7.3.725 +Problem: :aboveleft and :belowright have no effect on :copen. +Solution: Check for cmdmod.split. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.726 +Problem: Typos and duplicate info in README. +Solution: Fix the text. +Files: README.txt + +Patch 7.3.727 +Problem: Can't always find Win32.mak when building GvimExt. +Solution: Use same mechanism as in Make_mvc.mak. (Cade Foster) +Files: src/GvimExt/Makefile + +Patch 7.3.728 +Problem: Cannot compile with MzScheme interface on Ubuntu 12.10. +Solution: Find the collects directory under /usr/share. +Files: src/configure.in, src/auto/configure + +Patch 7.3.729 +Problem: Building with Ruby fails on some systems. +Solution: Remove "static" and add #ifndef PROTO. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.3.730 +Problem: Crash in PHP file when using syntastic. (Ike Devolder) +Solution: Avoid using NULL pointer. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.731 +Problem: Py3Init_vim() is exported unnecessarily. +Solution: Make it static. (Ken Takata) +Files: src/if_python3.c + +Patch 7.3.732 +Problem: Compiler warnings for function arguments. +Solution: Use inteptr_t instead of long. +Files: src/if_mzsch.c, src/main.c + +Patch 7.3.733 +Problem: Tests fail when including MzScheme. +Solution: Change #ifdefs for vim_main2(). +Files: src/main.c + +Patch 7.3.734 +Problem: Cannot put help files in a sub-directory. +Solution: Make :helptags work for sub-directories. (Charles Campbell) +Files: src/ex_cmds.c + +Patch 7.3.735 +Problem: Cannot build Ruby 1.9 with MingW or Cygwin. +Solution: Add another include directory. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.736 +Problem: File name completion in input() escapes white space. (Frederic + Hardy) +Solution: Do not escape white space. (Christian Brabandt) +Files: src/ex_getln.c + +Patch 7.3.737 +Problem: When using do_cmdline() recursively did_endif is not reset, + causing messages to be overwritten. +Solution: Reset did_endif. (Christian Brabandt) +Files: src/ex_docmd.c + +Patch 7.3.738 (after 7.3.730) +Problem: Unused function argument. +Solution: Remove it. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.739 +Problem: Computing number of lines may have an integer overflow. +Solution: Check for MAXCOL explicitly. (Dominique Pelle) +Files: src/move.c + +Patch 7.3.740 +Problem: IOC tool complains about undefined behavior for int. +Solution: Change to unsigned int. (Dominique Pelle) +Files: src/hashtab.c, src/misc2.c + +Patch 7.3.741 (after 7.3.737) +Problem: Tiny build fails. +Solution: Move #ifdef. (Ike Devolder) +Files: src/ex_docmd.c + +Patch 7.3.742 +Problem: Leaking memory when :vimgrep restores the directory. +Solution: Free the allocated memory. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.743 (after 7.3.741) +Problem: Tiny build still fails. +Solution: Add #else in the right place. +Files: src/ex_docmd.c + +Patch 7.3.744 +Problem: 64 bit compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/ex_cmds.c + +Patch 7.3.745 +Problem: Automatically setting 'ttymouse' doesn't work. +Solution: Reset the "option was set" flag when using the default. +Files: src/option.c, src/proto/option.pro, src/term.c + +Patch 7.3.746 +Problem: Memory leaks when using location lists. +Solution: Set qf_title to something. (Christian Brabandt) +Files: src/eval.c, src/quickfix.c + +Patch 7.3.747 +Problem: When characters are concealed text aligned with tabs are no longer + aligned, e.g. at ":help :index". +Solution: Compensate space for tabs for concealed characters. (Dominique + Pelle) +Files: src/screen.c + +Patch 7.3.748 +Problem: Cannot properly test conceal mode. +Solution: Add the screencol() and screenrow() functions. Use them in + test88. (Simon Ruderich) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/screen.pro, + src/screen.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + src/testdir/Makefile, src/testdir/test88.in, + src/testdir/test88.ok, + +Patch 7.3.749 +Problem: Python interface doesn't build without the multibyte feature. +Solution: Add #ifdef. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.750 +Problem: The justify macro does not always work correctly. +Solution: Fix off-by-one error (James McCoy) +Files: runtime/macros/justify.vim + +Patch 7.3.751 +Problem: Test 61 is flaky, it fails once in a while. +Solution: When it fails retry once. +Files: src/testdir/Makefile + +Patch 7.3.752 +Problem: Test 49 script file doesn't fold properly. +Solution: Add a colon. +Files: src/testdir/test49.vim + +Patch 7.3.753 +Problem: When there is a QuitPre autocommand using ":q" twice does not work + for exiting when there are more files to edit. +Solution: Do not decrement quitmore in an autocommand. (Techlive Zheng) +Files: src/ex_docmd.c, src/fileio.c, src/proto/fileio.pro + +Patch 7.3.754 +Problem: Latest nmake is not recognized. +Solution: Add nmake version 11.00.51106.1. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.755 +Problem: Autoconf doesn't find Python 3 if it's called "python". +Solution: Search for "python2" and "python3" first, then "python". +Files: src/configure.in, src/auto/configure + +Patch 7.3.756 +Problem: A location list can get a wrong count in :lvimgrep. +Solution: Check if the list was changed by autocommands. (mostly by + Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.757 +Problem: Issue 96: May access freed memory when a put command triggers + autocommands. (Dominique Pelle) +Solution: Call u_save() before getting y_array. +Files: src/ops.c + +Patch 7.3.758 +Problem: Matchit plugin does not handle space in #ifdef. +Solution: Change matching pattern to allow spaces. (Mike Morearty) +Files: runtime/macros/matchit.vim + +Patch 7.3.759 +Problem: MS-Windows: Updating the tabline is slow when there are many tabs. +Solution: Disable redrawing while performing the update. (Arseny Kapoulkine) +Files: src/gui_w48.c + +Patch 7.3.760 +Problem: dv_ deletes the white space before the line. +Solution: Move the cursor to the first non-white. (Christian Brabandt) +Files: src/normal.c, src/testdir/test19.in, src/testdir/test19.ok + +Patch 7.3.761 +Problem: In Visual mode a "-p does not work. (Marcin Szamotulski) +Solution: Avoid writing to "- before putting it. (Christian Brabandt) +Files: src/normal.c, src/testdir/test48.in, src/testdir/test48.ok + +Patch 7.3.762 (after 7.3.759) +Problem: On some systems the tabline is not redrawn. +Solution: Call RedrawWindow(). (Charles Peacech) +Files: src/gui_w48.c + +Patch 7.3.763 +Problem: Jumping to a mark does not open a fold if it is in the same line. + (Wiktor Ruben) +Solution: Also compare the column after the jump. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.764 +Problem: Not all message translation files are installed. +Solution: Also install the converted files. +Files: src/po/Makefile + +Patch 7.3.765 +Problem: Segfault when doing "cclose" on BufUnload in a python function. + (Sean Reifschneider) +Solution: Skip window with NULL buffer. (Christian Brabandt) +Files: src/main.c, src/window.c + +Patch 7.3.766 +Problem: ":help cpo-*" jumps to the wrong place. +Solution: Make it equivalent to ":help cpo-star". +Files: src/ex_cmds.c + +Patch 7.3.767 +Problem: (Win32) The _errno used for iconv may be the wrong one. +Solution: Use the _errno from iconv.dll. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.768 +Problem: settabvar() and setwinvar() may move the cursor. +Solution: Save and restore the cursor position when appropriate. (idea by + Yasuhiro Matsumoto) +Files: src/edit.c + +Patch 7.3.769 +Problem: 'matchpairs' does not work with multibyte characters. +Solution: Make it work. (Christian Brabandt) +Files: src/misc1.c, src/option.c, src/proto/option.pro, src/search.c, + src/testdir/test69.in, src/testdir/test69.ok + +Patch 7.3.770 +Problem: Vim.h indentation is inconsistent. +Solution: Adjust the indentation. (Elias Diem) +Files: src/vim.h + +Patch 7.3.771 (after 7.3.769) +Problem: Uninitialized variable. (Yasuhiro Matsumoto) +Solution: Set x2 to -1. +Files: src/option.c + +Patch 7.3.772 +Problem: Cursor is at the wrong location and below the end of the file + after doing substitutions with confirm flag: %s/x/y/c + (Dominique Pelle) +Solution: Update the cursor position. (Christian Brabandt & Dominique) +Files: src/ex_cmds.c + +Patch 7.3.773 (after 7.3.767) +Problem: Crash when OriginalFirstThunk is zero. +Solution: Skip items with OriginalFirstThunk not set. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.774 +Problem: Tiny GUI version misses console dialog feature. +Solution: Define FEAT_CON_DIALOG when appropriate. (Christian Brabandt) +Files: src/feature.h, src/gui.h + +Patch 7.3.775 +Problem: Cygwin and Mingw builds miss dependency on gui_w48.c. +Solution: Add a build rule. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.776 +Problem: ml_get error when searching, caused by curwin not matching curbuf. +Solution: Avoid changing curbuf. (Lech Lorens) +Files: src/charset.c, src/eval.c, src/mark.c, src/proto/charset.pro, + src/proto/mark.pro, src/regexp.c, src/syntax.c, + +Patch 7.3.777 +Problem: When building with Gnome locale gets reset. +Solution: Set locale after gnome_program_init(). (Christian Brabandt) +Files: src/gui_gtk_x11.c + +Patch 7.3.778 +Problem: Compiler error for adding up two pointers. (Titov Anatoly) +Solution: Add a type cast. (Ken Takata) +Files: src/mbyte.c + +Patch 7.3.779 +Problem: Backwards search lands in wrong place when started on a multibyte + character. +Solution: Do not set extra_col for a backwards search. (Sung Pae) +Files: src/search.c, src/testdir/test44.in, src/testdir/test44.ok + +Patch 7.3.780 +Problem: char2nr() and nr2char() always use 'encoding'. +Solution: Add argument to use utf-8 characters. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.3.781 +Problem: Drawing with 'guifontwide' can be slow. +Solution: Draw multiple characters at a time. (Taro Muraoka) +Files: src/gui.c + +Patch 7.3.782 +Problem: Windows: IME composition may use a wrong font. +Solution: Use 'guifontwide' for IME when it is set. (Taro Muraoka) +Files: runtime/doc/options.txt, src/gui.c, src/gui_w48.c, + src/proto/gui_w16.pro, src/proto/gui_w32.pro + +Patch 7.3.783 +Problem: Crash when mark is not set. (Dominique Pelle) +Solution: Check for NULL. +Files: src/normal.c + +Patch 7.3.784 (after 7.3.781) +Problem: Error when 'guifontwide' has a comma. +Solution: Use gui.wide_font. (Taro Muraoka) +Files: src/gui_w48.c + +Patch 7.3.785 (after 7.3.776) +Problem: Crash with specific use of search pattern. +Solution: Initialize reg_buf to curbuf. +Files: src/regexp.c + +Patch 7.3.786 +Problem: Python threads don't run in the background (issue 103). +Solution: Move the statements to manipulate thread state. +Files: src/if_python.c + +Patch 7.3.787 +Problem: With 'relativenumber' set it is not possible to see the absolute + line number. +Solution: For the cursor line show the absolute line number instead of a + zero. (Nazri Ramliy) +Files: src/screen.c + +Patch 7.3.788 +Problem: When only using patches build fails on missing nl.po. +Solution: Create an empty nl.po file. +Files: src/po/Makefile + +Patch 7.3.789 (after 7.3.776) +Problem: "\k" in regexp does not work in other window. +Solution: Use the right buffer. (Yukihiro Nakadaira) +Files: src/mbyte.c, src/proto/mbyte.pro, src/regexp.c + +Patch 7.3.790 +Problem: After reloading a buffer the modelines are not processed. +Solution: call do_modelines(). (Ken Takata) +Files: src/fileio.c + +Patch 7.3.791 +Problem: MzScheme interface doesn't work properly. +Solution: Make it work better. (Sergey Khorev) +Files: runtime/doc/if_mzsch.txt, src/configure.in, src/auto/configure, + src/eval.c, src/if_mzsch.c, src/if_mzsch.h, src/Make_ming.mak, + src/Make_mvc.mak, src/os_unix.c, src/proto/eval.pro, + src/testdir/test70.in, src/testdir/test70.ok + +Patch 7.3.792 +Problem: ":substitute" works differently without confirmation. +Solution: Do not change the text when asking for confirmation, only display + it. +Files: src/ex_cmds.c + +Patch 7.3.793 (after 7.3.792) +Problem: New interactive :substitute behavior is not tested. +Solution: Add tests. (Christian Brabandt) +Files: src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.794 +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Adjust #ifdefs. +Files: src/charset.c + +Patch 7.3.795 +Problem: MzScheme does not build with tiny features. +Solution: Add #ifdefs. Also add UNUSED to avoid warnings. And change + library ordering. +Files: src/if_mzsch.c, src/Makefile + +Patch 7.3.796 +Problem: "/[^\n]" does match at a line break. +Solution: Make it do the same as "/.". (Christian Brabandt) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok + +Patch 7.3.797 (after 7.3.792) +Problem: Compiler warning for size_t to int conversion. (Skeept) +Solution: Add type casts. +Files: src/ex_cmds.c + +Patch 7.3.798 (after 7.3.791) +Problem: MzScheme: circular list does not work correctly. +Solution: Separate Mac-specific code from generic code. (Sergey Khorev) +Files: src/if_mzsch.c, src/testdir/test70.in + +Patch 7.3.799 +Problem: The color column is not correct when entering a buffer. (Ben + Fritz) +Solution: Call check_colorcolumn() if 'textwidth' changed. (Christian + Brabandt) +Files: src/buffer.c + +Patch 7.3.800 +Problem: The " mark is not adjusted when inserting lines. (Roland Eggner) +Solution: Adjust the line number. (Christian Brabandt) +Files: src/mark.c + +Patch 7.3.801 +Problem: ":window set nu?" displays the cursor line. (Nazri Ramliy) +Solution: Do not update the cursor line when conceallevel is zero or the + screen has scrolled. (partly by Christian Brabandt) +Files: src/window.c + +Patch 7.3.802 +Problem: After setting 'isk' to a value ending in a comma appending to the + option fails. +Solution: Disallow a trailing comma for 'isk' and similar options. +Files: src/charset.c + +Patch 7.3.803 (after 7.3.792) +Problem: Substitute with confirmation and then "q" does not replace + anything. (John McGowan) +Solution: Do not break the loop, skip to the end. +Files: src/ex_cmds.c, src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.804 (after 7.3.799) +Problem: Compiler warning for tiny build. (Tony Mechelynck) +Solution: Add #ifdefs around variable. +Files: src/buffer.c + +Patch 7.3.805 +Problem: Lua version 5.2 is not detected properly on Arch Linux. +Solution: Adjust autoconf. (lilydjwg) +Files: src/configure.in, src/auto/configure + +Patch 7.3.806 +Problem: Compiler warnings in Perl code when building with Visual Studio + 2012. (skeept) +Solution: Add type casts. (Christian Brabandt, 2013 Jan 30) +Files: src/if_perl.xs + +Patch 7.3.807 +Problem: Popup menu does not work properly with the preview window, folds + and 'cursorcolumn'. +Solution: Redraw the popup menu after redrawing windows. (Christian + Brabandt) +Files: src/screen.c + +Patch 7.3.808 +Problem: Python threads still do not work properly. +Solution: Fix both Python 2 and 3. Add tests. (Ken Takata) +Files: src/if_python.c, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.809 +Problem: The dosinst.c program has a buffer overflow. (Thomas Gwae) +Solution: Ignore $VIMRUNTIME if it is too long. +Files: src/dosinst.c + +Patch 7.3.810 +Problem: 'relativenumber' is reset unexpectedly. (Fran莽ois Ingelrest) +Solution: After an option was reset also reset the global value. Add a test. + (Christian Brabandt) +Files: src/option.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test89.in, + src/testdir/test89.ok + +Patch 7.3.811 +Problem: Useless termresponse parsing for SGR mouse. +Solution: Skip the parsing. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.812 +Problem: When 'indentexpr' moves the cursor "curswant" not restored. +Solution: Restore "curswant". (Sung Pae) +Files: src/misc1.c + +Patch 7.3.813 +Problem: The CompleteDone event is not triggered when there are no pattern + matches. (Jianjun Mao) +Solution: Trigger the event. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.814 +Problem: Can't input multibyte characters on Win32 console if 'encoding' is + different from current codepage. +Solution: Use convert_input_safe() instead of convert_input(). Make + string_convert_ext() return an error for incomplete input. (Ken + Takata) +Files: src/mbyte.c, src/os_win32.c + +Patch 7.3.815 +Problem: Building with Cygwin and Ruby doesn't work. +Solution: Copy some things from the MingW build file. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.816 +Problem: Can't compute a hash. +Solution: Add the sha256() function. (Tyru, Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/sha256.pro, + src/sha256.c, src/testdir/test90.in, src/testdir/test90.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.817 +Problem: Test 89 fails with tiny and small features. +Solution: Add sourcing small.vim. +Files: src/testdir/test89.in + +Patch 7.3.818 +Problem: When test 40 fails because of a bad build it may leave files + behind that cause it to fail later. +Solution: Let the file names start with "X". +Files: src/testdir/test40.in + +Patch 7.3.819 +Problem: Compiling without +eval and with Python isn't working. +Solution: Add the eval feature when building with Python. +Files: src/if_py_both.h, src/feature.h, src/eval.c, src/ex_docmd.c, + src/normal.c, src/ex_docmd.c, src/gui_gtk_x11.c + +Patch 7.3.820 +Problem: Build errors and warnings when building with small features and + Lua, Perl or Ruby. +Solution: Add #ifdefs and UNUSED. +Files: src/if_perl.xs, src/if_lua.c, src/if_ruby.c + +Patch 7.3.821 +Problem: Build with OLE and Cygwin is broken. (Steve Hall) +Solution: Select static or shared stdc library. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.822 (after 7.3.799) +Problem: Crash when accessing freed buffer. +Solution: Get 'textwidth' in caller of enter_buffer(). (Christian Brabandt) +Files: src/buffer.c + +Patch 7.3.823 (after 7.3.821) +Problem: Building with Cygwin: '-lsupc++' is not needed. +Solution: Remove it. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.3.824 +Problem: Can redefine builtin functions. (ZyX) +Solution: Disallow adding a function to g:. +Files: src/eval.c + +Patch 7.3.825 +Problem: With Python errors are not always clear. +Solution: Print the stack trace, unless :silent is used. (ZyX) +Files: src/if_python3.c, src/if_python.c + +Patch 7.3.826 +Problem: List of features in :version output is hard to read. +Solution: Make columns. (Nazri Ramliy) +Files: src/version.c + +Patch 7.3.827 (after 7.3.825) +Problem: Python tests fail. +Solution: Adjust the output for the stack trace. +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.ok + +Patch 7.3.828 +Problem: Mappings are not aware of wildmenu mode. +Solution: Add wildmenumode(). (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.3.829 +Problem: When compiled with the +rightleft feature 'showmatch' also shows a + match for the opening paren. When 'revins' is set the screen may + scroll. +Solution: Only check the opening paren when the +rightleft feature was + enabled. Do not show a match that is not visible. (partly by + Christian Brabandt) +Files: src/search.c + +Patch 7.3.830 +Problem: :mksession confuses bytes, columns and characters when positioning + the cursor. +Solution: Use w_virtcol with "|" instead of w_cursor.col with "l". +Files: src/ex_docmd.c + +Patch 7.3.831 +Problem: Clumsy to handle the situation that a variable does not exist. +Solution: Add default value to getbufvar() et al. (Shougo Matsushita, + Hirohito Higashi) +Files: runtime/doc/eval.txt, src/eval.c src/testdir/test91.in, + src/testdir/test91.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.3.832 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/version.c + +Patch 7.3.833 +Problem: In the terminal the scroll wheel always scrolls the active window. +Solution: Scroll the window under the mouse pointer, like in the GUI. + (Bradie Rao) +Files: src/edit.c, src/normal.c + +Patch 7.3.834 +Problem: Ruby 2.0 has a few API changes. +Solution: Add handling of Ruby 2.0. (Yasuhiro Matsumoto) +Files: src/if_ruby.c + +Patch 7.3.835 +Problem: "xxd -i" fails on an empty file. +Solution: Do output the closing } for an empty file. (partly by Lawrence + Woodman) +Files: src/xxd/xxd.c + +Patch 7.3.836 +Problem: Clipboard does not work on Win32 when compiled with Cygwin. +Solution: Move the Win32 clipboard code to a separate file and use it when + building with os_unix.c. (Frodak Baksik, Ken Takata) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ivc.mak, + src/Make_ming.mak, src/Make_mvc.mak, src/Make_w16.mak, + src/Makefile, src/config.h.in, src/configure.in, + src/auto/configure, src/feature.h, src/globals.h, src/mbyte.c, + src/os_mswin.c, src/os_unix.c, src/os_win32.c, src/proto.h, + src/proto/os_mswin.pro, src/proto/winclip.pro, src/term.c, + src/vim.h, src/winclip.c + +Patch 7.3.837 (after 7.3.826) +Problem: Empty lines in :version output when 'columns' is 320. +Solution: Simplify the logic of making columns. (Nazri Ramliy, Roland + Eggner) +Files: src/version.c + +Patch 7.3.838 (after 7.3.830) +Problem: Insufficient testing for mksession. +Solution: Add tests. (mostly by Roland Eggner) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test92.in, src/testdir/test92.ok, + src/testdir/test93.in, src/testdir/test93.ok, + src/ex_docmd.c + +Patch 7.3.839 +Problem: Some files missing in the list of distributed files. +Solution: Add lines for new files. +Files: Filelist + +Patch 7.3.840 +Problem: "\@<!" in regexp does not work correctly with multibyte + characters, especially cp932. +Solution: Move column to start of multibyte character. (Yasuhiro Matsumoto) +Files: src/regexp.c + +Patch 7.3.841 +Problem: When a "cond ? one : two" expression has a subscript it is not + parsed correctly. (Andy Wokula) +Solution: Handle a subscript also when the type is unknown. (Christian + Brabandt) +Files: src/eval.c + +Patch 7.3.842 +Problem: Compiler warning for signed/unsigned pointer. +Solution: Add type cast. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.843 (after 7.3.841) +Problem: Missing test file changes. +Solution: Change the tests. +Files: src/testdir/test49.vim, src/testdir/test49.ok + +Patch 7.3.844 +Problem: Enum is not indented correctly with "public" etc. +Solution: Skip "public", "private" and "protected". (Hong Xu) +Files: src/misc1.c + +Patch 7.3.845 (after 7.3.844) +Problem: Enum indenting is not tested. +Solution: Add tests. (Hong Xu) +Files: src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.3.846 +Problem: Missing proto files. +Solution: Add the files. +Files: Filelist, src/proto/os_beos.pro + +Patch 7.3.847 +Problem: Test 55 fails when messages are translated. +Solution: Set language to C. (Ken Takata) +Files: src/testdir/test55.in + +Patch 7.3.848 +Problem: Can't build with Ruby 2.0 when using MinGW x64 or MSVC10. +Solution: Fix it. Also detect RUBY_PLATFORM and RUBY_INSTALL_NAME for x64. + (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_ruby.c + +Patch 7.3.849 +Problem: ":g//" gives "Pattern not found error" with E486. Should not use + the error number, it's not a regular error message. +Solution: Use a normal message. (David B眉rgin) +Files: src/ex_cmds.c + +Patch 7.3.850 +Problem: ":vimgrep //" matches everywhere. +Solution: Make it use the previous search pattern. (David B眉rgin) +Files: runtime/doc/quickfix.txt, src/quickfix.c + +Patch 7.3.851 +Problem: Using an empty pattern with :sort silently continues when there is + no previous search pattern. +Solution: Give an error message. (David B眉rgin) +Files: src/ex_cmds.c + +Patch 7.3.852 +Problem: system() breaks clipboard text. (Yukihiro Nakadaira) +Solution: Use Xutf8TextPropertyToTextList(). (Christian Brabandt) + Also do not put the text in the clip buffer if conversion fails. +Files: src/ui.c, src/ops.c + +Patch 7.3.853 +Problem: Using "ra" in multiple lines on multibyte characters leaves a few + characters not replaced. +Solution: Adjust the end column only in the last line. (Yasuhiro Matsumoto) +Files: src/testdir/test69.in, src/testdir/test69.ok, src/ops.c + +Patch 7.3.854 +Problem: After using backspace in insert mode completion, CTRL-N and CTRL-P + do not highlight the right entry. (Olivier Teuliere) +Solution: Set the current item to the shown item after using backspace. +Files: src/edit.c + +Patch 7.3.855 +Problem: Compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.856 +Problem: When calling system() multibyte clipboard contents is garbled. +Solution: Save and restore the clipboard contents. (Yukihiro Nakadaira) +Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/ops.c, + src/proto/ops.pro, src/os_unix.c, src/proto/ui.pro, src/ui.c + +Patch 7.3.857 +Problem: The QuitPre autocommand event does not trigger for :qa and :wq. +Solution: Trigger the event. (Tatsuro Fujii) +Files: src/ex_docmd.c + +Patch 7.3.858 +Problem: "gv" selects the wrong area after some operators. +Solution: Save and restore the type of selection. (Christian Brabandt) +Files: src/testdir/test66.in, src/testdir/test66.ok, src/normal.c + +Patch 7.3.859 +Problem: 'ambiwidth' must be set by the user. +Solution: Detects East Asian ambiguous width (UAX #11) state of the terminal + at the start-up time and 'ambiwidth' accordingly. (Hayaki Saito) +Files: src/main.c, src/option.c, src/term.c, src/term.h, + src/proto/term.pro + +Patch 7.3.860 +Problem: When using --remote-expr try/catch does not work. (Andrey Radev) +Solution: Set emsg_silent instead of emsg_skip. +Files: src/main.c + +Patch 7.3.861 +Problem: ":setlocal number" clears global value of 'relativenumber'. +Solution: Do it properly. (Markus Heidelberg) +Files: src/testdir/test89.in, src/testdir/test89.ok, src/option.c + +Patch 7.3.862 +Problem: Dragging the status line can be slow. +Solution: Look ahead and drop the drag event if there is a next one. +Files: src/eval.c, src/misc1.c, src/proto/misc1.pro, src/normal.c + +Patch 7.3.863 (after 7.3.859) +Problem: Problem with 'ambiwidth' detection for ANSI terminal. +Solution: Work around not recognizing a term response. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.864 (after 7.3.862) +Problem: Can't build without the mouse feature. +Solution: Add an #ifdef. (Ike Devolder) +Files: src/misc1.c + +Patch 7.3.865 (after 7.3.862) +Problem: Mouse position may be wrong. +Solution: Let vungetc() restore the mouse position. +Files: src/getchar.c + +Patch 7.3.866 +Problem: Not serving the X selection during system() isn't nice. +Solution: When using fork() do not loose the selection, keep serving it. + Add a loop similar to handling I/O. (Yukihiro Nakadaira) +Files: src/os_unix.c + +Patch 7.3.867 +Problem: Matchparen does not update match when using auto-indenting. + (Marc Aldorasi) +Solution: Add the TextChanged and TextChangedI autocommand events. +Files: runtime/plugin/matchparen.vim, src/main.c, src/edit.c, + src/globals.h, src/vim.h, src/fileio.c, src/proto/fileio.pro, + runtime/doc/autocmd.txt + +Patch 7.3.868 +Problem: When at the hit-return prompt and using "k" while no text has + scrolled off screen, then using "j", an empty line is displayed. +Solution: Only act on "k" when text scrolled off screen. Also accept + page-up and page-down. (cptstubing) +Files: src/message.c + +Patch 7.3.869 +Problem: bufwinnr() matches buffers in other tabs. +Solution: For bufwinnr() and ? only match buffers in the current tab. + (Alexey Radkov) +Files: src/buffer.c, src/diff.c, src/eval.c, src/ex_docmd.c, + src/if_perl.xs, src/proto/buffer.pro + +Patch 7.3.870 +Problem: Compiler warnings when using MingW 4.5.3. +Solution: Do not use MAKEINTRESOURCE. Adjust #if. (Ken Takata) +Files: src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, src/os_win32.c, + src/os_win32.h + +Patch 7.3.871 +Problem: search('^$', 'c') does not use the empty match under the cursor. +Solution: Special handling of the 'c' flag. (Christian Brabandt) + Add tests. +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.3.872 +Problem: On some systems case of file names is always ignored, on others + never. +Solution: Add the 'fileignorecase' option to control this at runtime. + Implies 'wildignorecase'. +Files: src/buffer.c, src/edit.c, src/ex_cmds2.c, src/ex_getln.c, + src/fileio.c, src/misc1.c, src/misc2.c, src/option.c, + src/option.h, src/vim.h, runtime/doc/options.txt + +Patch 7.3.873 +Problem: Cannot easily use :s to make title case. +Solution: Have "\L\u" result in title case. (James McCoy) +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, + src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.3.874 +Problem: Comparing file names does not handle multibyte characters + properly. +Solution: Implement multibyte handling. +Files: src/misc1.c, src/misc2.c + +Patch 7.3.875 (after 7.3.866) +Problem: Build problem with some combination of features. +Solution: Use FEAT_XCLIPBOARD instead of FEAT_CLIPBOARD. +Files: src/os_unix.c + +Patch 7.3.876 +Problem: #if indents are off. +Solution: Insert a space where appropriate. (Taro Muraoka) +Files: src/gui.c + +Patch 7.3.877 (after 7.3.871) +Problem: Forward searching with search() is broken. +Solution: Fix it and add tests. (Sung Pae) +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.3.878 +Problem: 'fileignorecase' is missing in options window and quickref. +Solution: Add the option. +Files: runtime/optwin.vim, runtime/doc/quickref.txt + +Patch 7.3.879 +Problem: When using an ex command in operator pending mode, using Esc to + abort the command still executes the operator. (David B眉rgin) +Solution: Clear the operator when the ex command fails. (Christian Brabandt) +Files: src/normal.c + +Patch 7.3.880 +Problem: When writing viminfo, old history lines may replace lines written + more recently by another Vim instance. +Solution: Mark history entries that were read from viminfo and overwrite + them when merging with the current viminfo. +Files: src/ex_getln.c + +Patch 7.3.881 +Problem: Python list does not work correctly. +Solution: Fix it and add a test. (Yukihiro Nakadaira) +Files: src/testdir/test86.in, src/testdir/test86.ok, src/if_py_both.h + +Patch 7.3.882 +Problem: CursorHold may trigger after receiving the termresponse. +Solution: Set the did_cursorhold flag. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.883 (after 7.3.880) +Problem: Can't build with some combination of features. +Solution: Adjust #ifdefs. +Files: src/ex_getln.c + +Patch 7.3.884 +Problem: Compiler warning for variable shadowing another. (John Little) +Solution: Rename the variable. (Christian Brabandt) +Files: src/term.c + +Patch 7.3.885 +Problem: Double free for list and dict in Lua. (Shougo Matsu) +Solution: Do not unref list and dict. (Yasuhiro Matsumoto) +Files: src/if_lua.c + +Patch 7.3.886 +Problem: Can't build with multibyte on Solaris 10. +Solution: Add #ifdef X_HAVE_UTF8_STRING. (Laurent Blume) +Files: src/ui.c + +Patch 7.3.887 +Problem: No tests for Visual mode operators, what 7.3.879 fixes. +Solution: Add a new test file. (David B眉rgin) +Files: src/testdir/test94.in, src/testdir/test94.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.888 +Problem: Filename completion with 'fileignorecase' does not work for + multibyte characters. +Solution: Make 'fileignorecase' work properly. (Hirohito Higashi) +Files: src/misc2.c + +Patch 7.3.889 +Problem: Can't build with Ruby 2.0 on a 64 bit system. +Solution: Define rb_fix2int and rb_num2int. (Kohei Suzuki) +Files: src/if_ruby.c + +Patch 7.3.890 +Problem: Test 79 fails on Windows. (Michael Soyka) +Solution: Add comment below line causing an error. +Files: src/testdir/test79.in + +Patch 7.3.891 +Problem: Merging viminfo history doesn't work well. +Solution: Don't stop when one type of history is empty. Don't merge history + when writing viminfo. +Files: src/ex_getln.c + +Patch 7.3.892 (after 7.3.891) +Problem: Still merging problems for viminfo history. +Solution: Do not merge lines when writing, don't write old viminfo lines. +Files: src/ex_getln.c, src/ex_cmds.c, src/proto/ex_getln.pro + +Patch 7.3.893 +Problem: Crash when using b:, w: or t: after closing the buffer, window or + tabpage. +Solution: Allocate the dictionary instead of having it part of the + buffer/window/tabpage struct. (Yukihiro Nakadaira) +Files: src/buffer.c, src/eval.c, src/fileio.c, src/structs.h, + src/window.c, src/proto/eval.pro + +Patch 7.3.894 +Problem: Using wrong RUBY_VER causing Ruby build to break. +Solution: Correct the RUBY_VER value. (Yongwei Wu) +Files: src/bigvim.bat + +Patch 7.3.895 +Problem: Valgrind error in test 91. (Issue 128) +Solution: Pass scope name to find_var_in_ht(). +Files: src/eval.c + +Patch 7.3.896 +Problem: Memory leaks in Lua interface. +Solution: Fix the leaks, add tests. (Yukihiro Nakadaira) +Files: src/testdir/test85.in, src/testdir/test85.ok, src/if_lua.c + +Patch 7.3.897 +Problem: Configure doesn't always find the shared library. +Solution: Change the configure script. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.898 +Problem: Memory leak reported by valgrind in test 91. +Solution: Only use default argument when needed. +Files: src/eval.c, src/testdir/test91.in, src/testdir/test91.ok + +Patch 7.3.899 +Problem: #if indents are off. +Solution: Fix the indents. +Files: src/os_unix.c + +Patch 7.3.900 +Problem: Not obvious that some mouse features are mutual-exclusive. +Solution: Add a comment. +Files: src/feature.h + +Patch 7.3.901 +Problem: Outdated comment, ugly condition. +Solution: Update a few comments, break line. +Files: src/getchar.c, src/misc1.c, src/undo.c + +Patch 7.3.902 +Problem: When deleting last buffer in other tab the tabline is not updated. +Solution: Set the redraw_tabline flag. (Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.3.903 (after 7.3.892) +Problem: Crash on exit writing viminfo. (Ron Aaron) +Solution: Check for the history to be empty. +Files: src/ex_getln.c + +Patch 7.3.904 (after 7.3.893) +Problem: Using memory freed by the garbage collector. +Solution: Mark items in aucmd_win as used. +Files: src/eval.c + +Patch 7.3.905 (after 7.3.903) +Problem: Crash when writing viminfo. (Ron Aaron) +Solution: Prevent freed history info to be used. +Files: src/ex_getln.c + +Patch 7.3.906 +Problem: The "sleep .2" for running tests does not work on Solaris. +Solution: Fall back to using "sleep 1". (Laurent Blume) +Files: src/testdir/Makefile + +Patch 7.3.907 +Problem: Python uses IndexError when a dict key is not found. +Solution: Use KeyError instead. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.908 +Problem: Possible crash when using a list in Python. +Solution: Return early if the list is NULL. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.909 +Problem: Duplicate Python code. +Solution: Move more items to if_py_both.h. (ZyX) Also avoid compiler + warnings for missing initializers. +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.910 +Problem: Python code in #ifdef branches with only minor differences. +Solution: Merge the #ifdef branches. (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.911 +Problem: Python: Access to Vim variables is not so easy. +Solution: Define vim.vars and vim.vvars. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/globals.h, + src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.912 +Problem: Typing a ":" command at the hit-enter dialog does not work if the + "file changed" dialog happens next. +Solution: Check for changed files before giving the hit-enter dialog. +Files: src/message.c + +Patch 7.3.913 (after 7.3.905) +Problem: Still a crash when writing viminfo. +Solution: Add checks for NULL pointers. (Ron Aaron) +Files: src/ex_getln.c + +Patch 7.3.914 +Problem: ~/.viminfo is messed up when running tests. +Solution: Set the viminfo filename. +Files: src/testdir/test89.in, src/testdir/test94.in + +Patch 7.3.915 +Problem: When reading a file with encoding conversion fails at the end the + next encoding in 'fencs' is not used. +Solution: Retry with another encoding when possible. (Taro Muraoka) +Files: src/fileio.c + +Patch 7.3.916 +Problem: Using freed memory when pasting with the mouse (Issue 130). +Solution: Get the byte value early. (hint by Dominique Pelle) +Files: src/buffer.c + +Patch 7.3.917 +Problem: When a path ends in a backslash appending a comma has the wrong + effect. +Solution: Replace a trailing backslash with a slash. (Nazri Ramliy) +Files: src/misc1.c, src/testdir/test73.in, src/testdir/test73.ok + +Patch 7.3.918 +Problem: Repeating an Ex command after using a Visual motion does not work. +Solution: Check for an Ex command being used. (David B眉rgin) +Files: src/normal.c + +Patch 7.3.919 (after 7.3.788) +Problem: An empty nl.po file does not work with an old msgfmt. +Solution: Put a single # in the file. (Laurent Blume) +Files: src/po/Makefile + +Patch 7.3.920 +Problem: Compiler warning for size_t to int. +Solution: Add a type cast. (Mike Williams) +Files: src/misc1.c + +Patch 7.3.921 (after 7.3.697) +Problem: Trying to create a fontset handle when 'guifontset' is not set. +Solution: Add curly braces around the code block. (Max Kirillov) +Files: src/syntax.c + +Patch 7.3.922 +Problem: No test for what 7.3.918 fixes. +Solution: Add a test. (David B眉rgin) +Files: src/testdir/test94.in, src/testdir/test94.ok + +Patch 7.3.923 +Problem: Check for X11 header files fails on Solaris. +Solution: Only use -Werror for gcc. (Laurent Blume) +Files: src/configure.in, src/auto/configure + +Patch 7.3.924 +Problem: Python interface can't easily access options. +Solution: Add vim.options, vim.window.options and vim.buffer.options. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python.c, src/if_python3.c, src/option.c, + src/proto/eval.pro, src/proto/option.pro, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, src/vim.h + +Patch 7.3.925 +Problem: Typos in source files. +Solution: Fix the typos. (Ken Takata) +Files: runtime/plugin/matchparen.vim, runtime/tools/vim_vs_net.cmd, + src/GvimExt/gvimext.cpp, src/INSTALLvms.txt, src/Make_cyg.mak, + src/Make_mvc.mak, src/Make_sas.mak, src/Make_vms.mms, + src/Make_w16.mak, src/Makefile, src/VisVim/OleAut.cpp, + src/VisVim/README_VisVim.txt, src/auto/configure, src/buffer.c, + src/configure.in, src/diff.c, src/dosinst.c, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/farsi.c, src/feature.h, src/fileio.c, src/glbl_ime.cpp, + src/gui.c, src/gui_athena.c, src/gui_beval.c, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w16.c, + src/gui_w32.c, src/gui_w48.c, src/gui_xmebw.c, src/gui_xmebwp.h, + src/hardcopy.c, src/if_cscope.c, src/if_mzsch.c, src/if_ole.cpp, + src/if_perl.xs, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/main.aap, src/mbyte.c, + src/memfile.c, src/memline.c, src/misc1.c, src/misc2.c, + src/nbdebug.c, src/normal.c, src/ops.c, src/os_amiga.c, + src/os_mac.h, src/os_msdos.c, src/os_mswin.c, src/os_win16.h, + src/os_win32.c, src/os_win32.h, src/quickfix.c, src/screen.c, + src/search.c, src/spell.c, src/structs.h, src/syntax.c, + src/window.c, vimtutor.com + + +Patch 7.3.926 +Problem: Autocommands are triggered by setwinvar() et al. Missing BufEnter + on :tabclose. Duplicate WinEnter on :tabclose. Wrong order of + events for :tablose and :tabnew. +Solution: Fix these autocommand events. (ZyX) +Files: runtime/doc/eval.txt, src/buffer.c, src/eval.c, src/ex_cmds2.c, + src/fileio.c, src/proto/window.pro, src/testdir/test62.in, + src/testdir/test62.ok, src/window.c + +Patch 7.3.927 +Problem: Missing combining characters when putting text in a register. +Solution: Include combining characters. (David B眉rgin) +Files: src/getchar.c, src/testdir/test44.in, src/testdir/test44.ok + +Patch 7.3.928 (after 7.3.924) +Problem: Can't build with strict C compiler. +Solution: Move declaration to start of block. (Taro Muraoka) +Files: src/if_py_both.h + +Patch 7.3.929 (after 7.3.924) +Problem: Compiler warning for unused variable. Not freeing unused string. +Solution: Remove the variable. Clear the options. +Files: src/option.c + +Patch 7.3.930 +Problem: MSVC 2012 update is not recognized. +Solution: Update the version in the makefile. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.3.931 +Problem: No completion for :xmap and :smap. (Yukihiro Nakadaira) +Solution: Add the case statements. (Christian Brabandt) +Files: src/ex_docmd.c + +Patch 7.3.932 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize the variable. +Files: src/option.c + +Patch 7.3.933 +Problem: Ruby on Mac crashes due to GC failure. +Solution: Init the stack from main(). (Hiroshi Shirosaki) +Files: src/main.c, src/if_ruby.c, src/proto/if_ruby.pro + +Patch 7.3.934 +Problem: E381 and E380 make the user think nothing happened. +Solution: Display the message indicating what error list is now active. + (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.3.935 (after 7.3.933) +Problem: Ruby: Init stack works differently on 64 bit systems. +Solution: Handle 64 bit systems and also static library. (Yukihiro + Nakadaira) +Files: src/if_ruby.c + +Patch 7.3.936 (after 7.3.935) +Problem: Ruby 1.8: Missing piece for static linking on 64 bit systems. +Solution: Define ruby_init_stack() (Hiroshi Shirosaki) + Also fix preprocessor indents. +Files: src/if_ruby.c + +Patch 7.3.937 +Problem: More can be shared between Python 2 and 3. +Solution: Move code to if_py_both.h. (ZyX) +Files: src/if_python.c, src/if_python3.c, src/if_py_both.h + +Patch 7.3.938 +Problem: Python: not easy to get to window number. +Solution: Add vim.window.number. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/proto/window.pro, + src/window.c + +Patch 7.3.939 +Problem: Using Py_BuildValue is inefficient sometimes. +Solution: Use PyLong_FromLong(). (ZyX) +Files: src/if_py_both.h + +Patch 7.3.940 +Problem: Python: Can't get position of window. +Solution: Add window.row and window.col. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h + +Patch 7.3.941 +Problem: Stuff in if_py_both.h is ordered badly. +Solution: Reorder by type. (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.942 +Problem: Python: SEGV in Buffer functions. +Solution: Call CheckBuffer() at the right time. (ZyX) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.943 +Problem: Python: Negative indices were failing. +Solution: Fix negative indices. Add tests. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.944 +Problem: External program receives the termresponse. +Solution: Insert a delay and discard input. (Hayaki Saito) +Files: src/term.c + +Patch 7.3.945 +Problem: Python: List of buffers is not very useful. +Solution: Make vim.buffers a map. No iterator yet. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.946 +Problem: Sometimes get stuck in waiting for cursor position report, + resulting in keys starting with <Esc>[ not working. +Solution: Only wait for more characters after <Esc>[ if followed by '?', '>' + or a digit. +Files: src/term.c + +Patch 7.3.947 +Problem: Python: No iterator for vim.list and vim.bufferlist. +Solution: Add the iterators. Also fix name of FunctionType. Add tests for + vim.buffers. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.948 +Problem: Cannot build with Python 2.2 +Solution: Make Python interface work with Python 2.2 + Make 2.2 the first supported version. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.ok, src/configure.in, src/auto/configure + +Patch 7.3.949 +Problem: Python: no easy access to tabpages. +Solution: Add vim.tabpages and vim.current.tabpage. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/proto/if_python3.pro, + src/proto/if_python.pro, src/proto/window.pro, src/structs.h, + src/window.c + +Patch 7.3.950 +Problem: Python: Stack trace printer can't handle messages. +Solution: Make KeyErrors use PyErr_SetObject. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.951 +Problem: Python exceptions have problems. +Solution: Change some IndexErrors to TypeErrors. Make 鈥渓ine number out of + range鈥 an IndexError. Make 鈥渦nable to get option value鈥 a + RuntimeError. Make all PyErr_SetString messages start with + lowercase letter and use _(). (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.952 +Problem: Python: It's not easy to change window/buffer/tabpage. +Solution: Add ability to assign to vim.current.{tabpage,buffer,window}. + (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h + +Patch 7.3.953 +Problem: Python: string exceptions are deprecated. +Solution: Make vim.error an Exception subclass. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.954 +Problem: No check if PyObject_IsTrue fails. +Solution: Add a check for -1 value. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.955 +Problem: Python: Not enough tests. +Solution: Add tests for vim.{current,window*,tabpage*}. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.956 +Problem: Python vim.bindeval() causes SIGABRT. +Solution: Make pygilstate a local variable. (Yukihiro Nakadaira) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.3.957 +Problem: Python does not have a "do" command like Perl or Lua. +Solution: Add the ":py3do" command. (Lilydjwg) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.h, src/ex_docmd.c, + src/if_python3.c, src/proto/if_python3.pro + +Patch 7.3.958 +Problem: Python: Iteration destructor not set. +Solution: Put IterDestructor to use. (ZyX) +Files: src/if_py_both.c + +Patch 7.3.959 (after 7.3.957) +Problem: Missing error number. +Solution: Assign an error number. +Files: src/if_python3.c + +Patch 7.3.960 +Problem: Compiler warning for unused variable. +Solution: Put declaration in #ifdef. +Files: src/window.c + +Patch 7.3.961 +Problem: Tests 86 and 87 fail when using another language than English. +Solution: Set the language to C in the test. (Dominique Pelle) +Files: src/testdir/test86.in, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.962 +Problem: Python tests are not portable. +Solution: Use shiftwidth instead of iminsert. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.963 +Problem: Setting curbuf without curwin causes trouble. +Solution: Add switch_buffer() and restore_buffer(). Block autocommands to + avoid trouble. +Files: src/eval.c, src/proto/eval.pro, src/proto/window.pro, + src/if_py_both.h, src/window.c, src/testdir/test86.ok + +Patch 7.3.964 +Problem: Python: not so easy to access tab pages. +Solution: Add window.tabpage, make window.number work with non-current tab + pages. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.965 +Problem: Python garbage collection not working properly. +Solution: Add support for garbage collection. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.966 +Problem: There is ":py3do" but no ":pydo". +Solution: Add the ":pydo" command. (Lilydjwg) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.h, src/ex_docmd.c, + src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/proto/if_python.pro + +Patch 7.3.967 (after 7.3.965) +Problem: Build fails on Mac OSX. (Greg Novack) +Solution: Undefine clear(). +Files: src/if_py_both.h + +Patch 7.3.968 +Problem: Multi-byte support is only available when compiled with "big" + features. +Solution: Include multibyte by default, with "normal" features. +Files: src/feature.h + +Patch 7.3.969 +Problem: Can't build with Python 3 and without Python 2. +Solution: Adjust #ifdef. (Xavier de Gaye) +Files: src/window.c + +Patch 7.3.970 +Problem: Syntax highlighting can be slow. +Solution: Include the NFA regexp engine. Add the 'regexpengine' option to + select which one is used. (various authors, including Ken Takata, + Andrei Aiordachioaie, Russ Cox, Xiaozhou Liua, Ian Young) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/Make_mvc.mak, + src/Makefile, src/regexp.c, src/regexp.h, src/regexp_nfa.c, + src/structs.h, src/testdir/Makefile, src/testdir/test64.in, + src/testdir/test64.ok, Filelist, runtime/doc/pattern.txt, + runtime/doc/option.txt, src/option.c, src/option.h, + src/testdir/test95.in, src/testdir/test95.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.3.971 +Problem: No support for VS2012 static code analysis. +Solution: Add the ANALYZE option. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.3.972 +Problem: Cursor not restored after InsertEnter autocommand if it moved to + another line. +Solution: Also restore if the saved line number is still valid. Allow + setting v:char to skip restoring. +Files: src/edit.c, runtime/doc/autocmd.txt + +Patch 7.3.973 +Problem: Compiler warnings. Crash on startup. (Tony Mechelynck) +Solution: Change EMSG2 to EMSGN. Make array one character longer. +Files: src/regexp_nfa.c + +Patch 7.3.974 +Problem: Can't build with ruby 1.8.5. +Solution: Only use ruby_init_stack() when RUBY_INIT_STACK is defined. + (Yukihiro Nakadaira) +Files: src/if_ruby.c + +Patch 7.3.975 +Problem: Crash in regexp parsing. +Solution: Correctly compute the end of allocated memory. +Files: src/regexp_nfa.c + +Patch 7.3.976 +Problem: Can't build on HP-UX. +Solution: Remove modern initialization. (John Marriott) +Files: src/regexp_nfa.c + +Patch 7.3.977 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) Also fix some white space and + uncomment what was commented-out for testing. +Files: src/regexp_nfa.c + +Patch 7.3.978 +Problem: Regexp debug logs don't have a good name. +Solution: Use clear names and make it possible to write logs for the old and + new engines separately. (Taro Muraoka) +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.979 +Problem: Complex NFA regexp doesn't work. +Solution: Set actual state stack end instead of using an arbitrary number. + (Yasuhiro Matsumoto) +Files: src/regexp_nfa.c + +Patch 7.3.980 +Problem: Regexp logs may contain garbage. Character classes don't work + correctly for multibyte characters. +Solution: Check for end of post list. Only use "is" functions for + characters up to 255. (Ken Takata) +Files: src/regexp_nfa.c + +Patch 7.3.981 +Problem: In the old regexp engine \i, \I, \f and \F don't work on + multibyte characters. +Solution: Dereference pointer properly. +Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.982 +Problem: In the new regexp engine \p does not work on multibyte + characters. +Solution: Don't point to an integer but the characters. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.983 +Problem: Unnecessary temp variable. +Solution: Remove the variable. +Files: src/regexp_nfa.c + +Patch 7.3.984 +Problem: A Visual mapping that uses CTRL-G works differently when started + from Insert mode. (Ein Brown) +Solution: Reset old_mapped_len when handling typed text in Select mode. +Files: src/normal.c + +Patch 7.3.985 +Problem: GTK vim not started as gvim doesn't set WM_CLASS property to a + useful value. +Solution: Call g_set_prgname() on startup. (James McCoy) +Files: src/gui_gtk_x11.c + +Patch 7.3.986 +Problem: Test 95 doesn't pass when 'encoding' isn't utf-8. (Yasuhiro + Matsumoto) +Solution: Force 'encoding' to be utf-8. +Files: src/testdir/test95.in + +Patch 7.3.987 +Problem: No easy to run an individual test. Tests 64 fails when + 'encoding' is not utf-8. +Solution: Add individual test targets to the Makefile. Move some lines from + test 64 to 95. +Files: src/Makefile, src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.988 +Problem: New regexp engine is slow. +Solution: Break out of the loop when the state list is empty. +Files: src/regexp_nfa.c + +Patch 7.3.989 +Problem: New regexp engine compares negative numbers to character. +Solution: Add missing case statements. +Files: src/regexp_nfa.c + +Patch 7.3.990 +Problem: Memory leak in new regexp engine. +Solution: Jump to end of function to free memory. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.3.991 +Problem: More can be shared by Python 2 and 3. +Solution: Move more stuff to if_py_both. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test87.ok + +Patch 7.3.992 +Problem: Python: Too many type casts. +Solution: Change argument types. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.993 +Problem: Python: Later patch does things slightly differently. +Solution: Adjusted argument type changes. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.994 +Problem: Python: using magic constants. +Solution: Use descriptive values for ml_flags. (ZyX) +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.995 +Problem: Python: Module initialization is duplicated. +Solution: Move to shared file. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.996 +Problem: Python: Can't check types of what is returned by bindeval(). +Solution: Add vim.List, vim.Dictionary and vim.Function types. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.997 +Problem: Vim and Python exceptions are different. +Solution: Make Vim exceptions be Python exceptions. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.998 +Problem: Python: garbage collection issues. +Solution: Fix the GC issues: Use proper DESTRUCTOR_FINISH: avoids negative + refcounts, use PyObject_GC_* for objects with tp_traverse and + tp_clear, add RangeTraverse and RangeClear, use Py_XDECREF in some + places. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.999 +Problem: New regexp engine sets curbuf temporarily. +Solution: Use reg_buf instead, like the old engine. +Files: src/regexp_nfa.c + +Patch 7.3.1000 (whoa!) +Problem: Typo in char value causes out of bounds access. +Solution: Fix character value. (Klemens Baum) +Files: src/regexp.c + +Patch 7.3.1001 +Problem: Duplicate condition in if. +Solution: Remove one condition. +Files: src/regexp_nfa.c + +Patch 7.3.1002 +Problem: Valgrind errors for Python interface. +Solution: Fix memory leaks when running tests. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1003 +Problem: Python interface does not compile with Python 2.2 +Solution: Fix thread issues and True/False. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1004 +Problem: No error when option could not be set. +Solution: Report an error. (ZyX) +Files: src/if_py_both.h, src/option.c, src/proto/option.pro, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1005 +Problem: Get stuck on regexp "\n*" and on "%s/^\n\+/\r". +Solution: Fix handling of matching a line break. (idea by Hirohito Higashi) +Files: src/regexp_nfa.c + +Patch 7.3.1006 +Problem: NFA engine not used for "\_[0-9]". +Solution: Enable this, fixed in patch 1005. +Files: src/regexp_nfa.c + +Patch 7.3.1007 +Problem: Can't build on Minix 3.2.1. +Solution: Add a condition to an #ifdef. (Gautam Tirumala) +Files: src/memfile.c + +Patch 7.3.1008 +Problem: Test 95 fails on MS-Windows. +Solution: Set 'nomore'. Change \i to \f. Change multibyte character to + something that is not matching \i. (Ken Takata) +Files: src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1009 +Problem: Compiler warning for ambiguous else. +Solution: Add curly braces. +Files: src/if_py_both.h + +Patch 7.3.1010 +Problem: New regexp: adding \Z makes every character match. +Solution: Only apply ireg_icombine for composing characters. + Also add missing change from patch 1008. (Ken Takata) +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1011 +Problem: New regexp engine is inefficient with multibyte characters. +Solution: Handle a character at a time instead of a byte at a time. Also + make \Z partly work. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1012 +Problem: \Z does not work properly with the new regexp engine. +Solution: Make \Z work. Add tests. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1013 +Problem: New regexp logging is a bit messy. +Solution: Consistently use #defines, add explanatory comment. (Taro Muraoka) +Files: src/regexp_nfa.c + +Patch 7.3.1014 +Problem: New regexp state dump is hard to read. +Solution: Make the state dump more pretty. (Taro Muraoka) +Files: src/regexp_nfa.c + +Patch 7.3.1015 +Problem: New regexp engine: Matching composing characters is wrong. +Solution: Fix matching composing characters. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1016 +Problem: Unused field in nfa_state. +Solution: Remove lastthread. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1017 +Problem: Zero width match changes length of match. +Solution: For a zero width match put new states in the current position in + the state list. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1018 +Problem: New regexp engine wastes memory. +Solution: Allocate prog with actual number of states, not estimated maximum + number of states. +Files: src/regexp_nfa.c + +Patch 7.3.1019 +Problem: These do not work with the new regexp engine: \%o123, \%x123, + \%d123, \%u123 and \%U123. +Solution: Implement these items. +Files: src/regexp_nfa.c + +Patch 7.3.1020 +Problem: Not all patterns are tested with auto / old / new engine. +Solution: Test patterns with three values of 'regexpengine'. +Files: src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1021 +Problem: New regexp engine does not ignore order of composing chars. +Solution: Ignore composing chars order. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1022 +Problem: Compiler warning for shadowed variable. (John Little) +Solution: Move declaration, rename variables. +Files: src/regexp_nfa.c + +Patch 7.3.1023 +Problem: Searching for composing char only and using \Z has different + results. +Solution: Make it match the composing char, matching everything is not + useful. +Files: src/regexp_nfa.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.3.1024 +Problem: New regexp: End of matching pattern not set correctly. (Cesar + Romani) +Solution: Quit the loop after finding the match. Store nfa_has_zend in the + program. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1025 +Problem: New regexp: not matching newline in string. (Marc Weber) +Solution: Check for "\n" character. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1026 +Problem: New regexp: pattern that includes a new-line matches too early. + (John McGowan) +Solution: Do not start searching in the second line. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1027 +Problem: New regexp performance: Calling no_Magic() very often. +Solution: Remove magicness inline. +Files: src/regexp_nfa.c + +Patch 7.3.1028 +Problem: New regexp performance: Copying a lot of position state. +Solution: Only copy the sub-expressions that are being used. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1029 +Problem: New regexp performance: Unused position state being copied. +Solution: Keep track of which positions are actually valid. +Files: src/regexp_nfa.c + +Patch 7.3.1030 (after 7.3.1028) +Problem: Can't build for debugging. +Solution: Fix struct member names. +Files: src/regexp_nfa.c + +Patch 7.3.1031 +Problem: Compiler warnings for shadowed variable. (John Little) +Solution: Move the variable declarations to the scope where they are used. +Files: src/regexp_nfa.c + +Patch 7.3.1032 +Problem: "\ze" is not supported by the new regexp engine. +Solution: Make "\ze" work. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1033 +Problem: "\1" .. "\9" are not supported in the new regexp engine. +Solution: Implement them. Add a few more tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/regexp.h + +Patch 7.3.1034 +Problem: New regexp code using strange multibyte code. +Solution: Use the normal code to advance and backup pointers. +Files: src/regexp_nfa.c + +Patch 7.3.1035 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + +Patch 7.3.1036 +Problem: Can't build on HP-UX. +Solution: Give the union a name. (John Marriott) +Files: src/regexp_nfa.c + +Patch 7.3.1037 +Problem: Look-behind matching is very slow on long lines. +Solution: Add a byte limit to how far back an attempt is made. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1038 +Problem: Crash when using Cscope. +Solution: Avoid negative argument to vim_strncpy(). (Narendran + Gopalakrishnan) +Files: src/if_cscope.c + +Patch 7.3.1039 +Problem: New regexp engine does not support \%23c, \%<23c and the like. +Solution: Implement them. (partly by Yasuhiro Matsumoto) +Files: src/regexp.h, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1040 +Problem: Python: Problems with debugging dynamic build. +Solution: Python patch 1. (ZyX) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.1041 +Problem: Python: Invalid read valgrind errors. +Solution: Python patch 2: defer DICTKEY_UNREF until key is no longer needed. + (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1042 +Problem: Python: can't assign to vim.Buffer.name. +Solution: Python patch 3. (ZyX) +Files: runtime/doc/if_pyth.txt, src/ex_cmds.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/ex_cmds.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1043 +Problem: Python: Dynamic compilation with 2.3 fails. +Solution: Python patch 4. (ZyX) +Files: src/if_python.c + +Patch 7.3.1044 +Problem: Python: No {Buffer,TabPage,Window}.valid attributes. +Solution: Python patch 5: add .valid (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1045 +Problem: Python: No error handling for VimToPython function. +Solution: Python patch 6. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1046 +Problem: Python: Using Py_BuildValue for building strings. +Solution: Python patch 7 and 7.5: Replace Py_BuildValue with + PyString_FromString. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1047 +Problem: Python: dir() does not work properly. +Solution: Python patch 8. Add __dir__ method to all objects with custom + tp_getattr supplemented by __members__ attribute for at least + python-2* versions. __members__ is not mentioned in python-3* + dir() output even if it is accessible. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1048 +Problem: Python: no consistent naming. +Solution: Python patch 9: Rename d to dict and lookupDict to lookup_dict. + (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1049 +Problem: Python: no consistent naming +Solution: Python patch 10: Rename DICTKEY_GET_NOTEMPTY to DICTKEY_GET. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1050 +Problem: Python: Typo in pyiter_to_tv. +Solution: Python patch 11. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1051 +Problem: Python: possible memory leaks. +Solution: Python patch 12: fix the leaks (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1052 +Problem: Python: possible SEGV and negative refcount. +Solution: Python patch 13: Fix IterIter function. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1053 +Problem: Python: no flag for types with tp_traverse+tp_clear. +Solution: Python patch 14: Add Py_TPFLAGS_HAVE_GC. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1054 (after 7.3.1042) +Problem: Can't build without the +autocmd feature. (Elimar Riesebieter) +Solution: Fix use of buf and curbuf. +Files: src/ex_cmds.c, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1055 +Problem: Negated collection does not match newline. +Solution: Handle newline differently. (Hiroshi Shirosaki) +Files: src/regexp_nfa.c, src/testdir/test64.ok, src/testdir/test64.in + +Patch 7.3.1056 +Problem: Python: possible memory leaks. +Solution: Python patch 15. (ZyX) Fix will follow later. +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro + +Patch 7.3.1057 +Problem: Python: not enough compatibility. +Solution: Python patch 16: Make OutputWritelines support any sequence object + (ZyX) Note: tests fail +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1058 +Problem: Call of funcref does not succeed in other script. +Solution: Python patch 17: add get_expanded_name(). (ZyX) +Files: src/eval.c, src/proto/eval.pro + +Patch 7.3.1059 +Problem: Python: Using fixed size buffers. +Solution: Python patch 18: Use python's own formatter. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1060 +Problem: Python: can't repr() a function. +Solution: Python patch 19: add FunctionRepr(). (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1061 +Problem: Python: Dictionary is not standard. +Solution: Python patch 20: Add standard methods and fields. (ZyX) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1062 +Problem: Python: List is not standard. +Solution: Python patch 21: Add standard methods and fields. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1063 +Problem: Python: Function is not standard. +Solution: Python patch 22: make Function subclassable. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1064 +Problem: Python: insufficient error checking. +Solution: Python patch 23. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1065 +Problem: Python: key mapping is not standard. +Solution: Python patch 24: use PyMapping_Keys. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1066 +Problem: Python: Insufficient exception and error testing. +Solution: Python patch 25. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1067 +Problem: Python: documentation lags behind. +Solution: Python patch 26. (ZyX) +Files: runtime/doc/if_pyth.txt + +Patch 7.3.1068 +Problem: Python: Script is auto-loaded on function creation. +Solution: Python patch 27. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/proto/eval.pro, + src/testdir/test86.ok, src/testdir/test87.ok, src/vim.h + +Patch 7.3.1069 +Problem: Python: memory leaks. +Solution: Python patch 28: Purge out DICTKEY_CHECK_EMPTY macros. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1070 +Problem: Vim crashes in Python tests. Compiler warning for unused function. +Solution: Disable the tests for now. Move the function. +Files: src/if_py_both.h, src/if_python.c, src/testdir/test86.in, + src/testdir/test87.in + +Patch 7.3.1071 +Problem: New regexp engine: backreferences don't work correctly. +Solution: Add every possible start/end position on the state stack. +Files: src/regexp_nfa.c, src/regexp.h, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1072 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. +Files: src/regexp_nfa.c + +Patch 7.3.1073 +Problem: New regexp engine may run out of states. +Solution: Allocate states dynamically. Also make the test report errors. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in + +Patch 7.3.1074 +Problem: Compiler warning for printf format. (Manuel Ortega) +Solution: Add type casts. +Files: src/if_py_both.h + +Patch 7.3.1075 +Problem: Compiler warning for storing a long_u in an int. +Solution: Declare the number as an int. (Mike Williams) +Files: src/regexp_nfa.c + +Patch 7.3.1076 +Problem: New regexp engine: \@= and \& don't work. +Solution: Make these items work. Add column info to logging. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1077 +Problem: Python: Allocating dict the wrong way, causing a crash. +Solution: Use py_dict_alloc(). Fix some exception problems. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1078 +Problem: New regexp engine: \@! doesn't work. +Solution: Implement the negated version of \@=. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1079 +Problem: Test 87 fails. +Solution: Fix the test for Python 3.3. (ZyX) Make it pass on 32 bit systems. +Files: src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1080 +Problem: Test 86 fails. +Solution: Comment out the parts that don't work. Make it pass on 32 bit + systems. +Files: src/testdir/test86.in, src/testdir/test86.ok + +Patch 7.3.1081 +Problem: Compiler warnings on 64-bit Windows. +Solution: Change variable types. (Mike Williams) +Files: src/if_py_both.h, src/regexp_nfa.c + +Patch 7.3.1082 +Problem: New regexp engine: Problem with \@= matching. +Solution: Save and restore nfa_match. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1083 +Problem: New regexp engine: Does not support \%^ and \%$. +Solution: Support matching start and end of file. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1084 +Problem: New regexp engine: only accepts up to \{,10}. +Solution: Remove upper limit. Remove dead code with NFA_PLUS. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1085 +Problem: New regexp engine: Non-greedy multi doesn't work. +Solution: Implement \{-}. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1086 +Problem: Old regexp engine accepts illegal range, new one doesn't. +Solution: Also accept the illegal range with the new engine. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1087 +Problem: A leading star is not seen as a normal char when \{} follows. +Solution: Save and restore the parse state properly. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1088 +Problem: New regexp engine: \@<= and \@<! are not implemented. +Solution: Implement look-behind matching. Fix off-by-one error in old + regexp engine. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1089 +Problem: Tests 86 and 87 fail on MS-Windows. (Ken Takata) +Solution: Fix platform-specific stuff. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1090 +Problem: New regexp engine does not support \z1 .. \z9 and \z(. +Solution: Implement the syntax submatches. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1091 +Problem: New regexp engine: no error when using \z1 or \z( where it does + not work. +Solution: Give an error message. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1092 +Problem: Can't build with regexp debugging. NFA debug output shows wrong + pattern. +Solution: Fix debugging code for recent changes. Add the pattern to the + program. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1093 +Problem: New regexp engine: When a sub expression is empty \1 skips a + character. +Solution: Make \1 try the current position when the match is empty. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1094 +Problem: New regexp engine: Attempts to match "^" at every character. +Solution: Only try "^" at the start of a line. +Files: src/regexp_nfa.c + +Patch 7.3.1095 +Problem: Compiler warnings for shadowed variables. (Christian Brabandt) +Solution: Rename new_state() to alloc_state(). Remove unnecessary + declaration. +Files: src/regexp_nfa.c + +Patch 7.3.1096 +Problem: Python: popitem() was not defined in a standard way. +Solution: Remove the argument from popitem(). (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.3.1097 +Problem: Python: a few recently added items are not documented. +Solution: Update the documentation. (ZyX) +Files: runtime/doc/if_pyth.txt + +Patch 7.3.1098 +Problem: Python: Possible memory leaks +Solution: Add Py_XDECREF() calls. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1099 +Problem: Python: Changing directory with os.chdir() causes problems for + Vim's notion of directories. +Solution: Add vim.chdir() and vim.fchdir(). (ZyX) +Files: runtime/doc/if_pyth.txt, src/ex_docmd.c, src/if_py_both.h, + src/if_python3.c, src/if_python.c, src/proto/ex_docmd.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1100 +Problem: Python: a few more memory problems. +Solution: Add and remove Py_XDECREF(). (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1101 +Problem: Configure doesn't find Python 3 on Ubuntu 13.04. +Solution: First try distutils.sysconfig. Also fix some indents. (Ken + Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1102 +Problem: Completion of ":py3do" and ":py3file" does not work after ":py3". +Solution: Make completion work. (Taro Muraoka) +Files: src/ex_docmd.c + +Patch 7.3.1103 +Problem: New regexp engine: overhead in saving and restoring. +Solution: Make saving and restoring list IDs faster. Don't copy or check \z + subexpressions when they are not used. +Files: src/regexp_nfa.c + +Patch 7.3.1104 +Problem: New regexp engine does not handle "~". +Solution: Add support for "~". +Files: src/regexp_nfa.c, src/testdir/test24.in, src/testdir/test24.ok + +Patch 7.3.1105 +Problem: New regexp engine: too much code in one function. Dead code. +Solution: Move the recursive nfa_regmatch call to a separate function. + Remove the dead code. +Files: src/regexp_nfa.c + +Patch 7.3.1106 +Problem: New regexp engine: saving and restoring lastlist in the states + takes a lot of time. +Solution: Use a second lastlist value for the first recursive call. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1107 +Problem: Compiler warnings for unused variables. +Solution: Put the variables inside #ifdef. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1108 +Problem: Error message for os.fchdir() (Charles Peacech) +Solution: Clear the error. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1109 +Problem: Building on MS-Windows doesn't see changes in if_py_both.h. +Solution: Add a dependency. (Ken Takata) +Files: src/Make_bc5.mak, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 7.3.1110 +Problem: New regexp matching: Using \@= and the like can be slow. +Solution: Decide whether to first try matching the zero-width part or what + follows, whatever is more likely to fail. +Files: src/regexp_nfa.c + +Patch 7.3.1111 +Problem: nfa_recognize_char_class() implementation is inefficient. +Solution: Use bits in an int instead of chars in a string. (Dominique Pelle) +Files: src/regexp_nfa.c, src/testdir/test36.in, src/testdir/test36.ok + +Patch 7.3.1112 +Problem: New regexp engine: \%V not supported. +Solution: Implement \%V. Add tests. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1113 +Problem: New regexp engine: \%'m not supported. +Solution: Implement \%'m. Add tests. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1114 (after 7.3.1110) +Problem: Can't build without the syntax feature. +Solution: Add #ifdefs. (Erik Falor) +Files: src/regexp_nfa.c + +Patch 7.3.1115 +Problem: Many users don't like the cursor line number when 'relativenumber' + is set. +Solution: Have four combinations with 'number' and 'relativenumber'. + (Christian Brabandt) +Files: runtime/doc/options.txt, src/option.c, src/screen.c, + src/testdir/test89.in, src/testdir/test89.ok + +Patch 7.3.1116 +Problem: Can't build without Visual mode. +Solution: Add #ifdefs. +Files: src/regexp_nfa.c + +Patch 7.3.1117 +Problem: New regexp engine: \%[abc] not supported. +Solution: Implement \%[abc]. Add tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1118 +Problem: Match failure rate is not very specific. +Solution: Tune the failure rate for match items. +Files: src/regexp_nfa.c + +Patch 7.3.1119 +Problem: Flags in 'cpo' are search for several times. +Solution: Store the result and re-use the flags. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1120 +Problem: Crash when regexp logging is enabled. +Solution: Avoid using NULL pointers. Advance over count argument. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1121 +Problem: New regexp engine: adding states that are not used. +Solution: Don't add the states. +Files: src/regexp_nfa.c + +Patch 7.3.1122 +Problem: New regexp engine: \@> not supported. +Solution: Implement \%>. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1123 +Problem: Can't build tiny Vim on MS-Windows. +Solution: Adjust #ifdef around using modif_fname(). (Mike Williams) +Files: src/misc1.c + +Patch 7.3.1124 +Problem: Python: Crash on MS-Windows when os.fchdir() is not available. +Solution: Check for _chdir to be NULL. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.1125 +Problem: Error for using \%V in a pattern in tiny Vim. +Solution: Allow using \%V but never match. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.3.1126 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Assign something to the variable. +Files: src/regexp_nfa.c + +Patch 7.3.1127 +Problem: No error for using empty \%[]. +Solution: Give error message. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1128 +Problem: Now that the NFA engine handles everything every failure is a + syntax error. +Solution: Remove the syntax_error flag. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1129 +Problem: Can't see what pattern in syntax highlighting is slow. +Solution: Add the ":syntime" command. +Files: src/structs.h, src/syntax.c, src/ex_cmds.h, src/ex_docmd.c, + src/proto/syntax.pro, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + runtime/doc/syntax.txt + +Patch 7.3.1130 (after 7.3.1129) +Problem: Can't build with anything but huge features. +Solution: Check for FEAT_PROFILE. (Yasuhiro Matsumoto) +Files: src/ex_docmd.c, src/structs.h, src/syntax.c + +Patch 7.3.1131 +Problem: New regexp engine is a bit slow. +Solution: Do not clear the state list. Don't copy syntax submatches when + not used. +Files: src/regexp_nfa.c + +Patch 7.3.1132 +Problem: Crash when debugging regexp. +Solution: Do not try to dump subexpr that were not set. Skip over count of + \% items. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.3.1133 +Problem: New regexp engine is a bit slow. +Solution: Skip ahead to a character that must match. Don't try matching a + "^" patter past the start of line. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1134 +Problem: Running test 49 takes a long time. +Solution: Don't have it grep all files. +Files: src/testdir/test49.vim + +Patch 7.3.1135 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/syntax.c + +Patch 7.3.1136 +Problem: ":func Foo" does not show attributes. +Solution: Add "abort", "dict" and "range". (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.1137 +Problem: New regexp engine: collections are slow. +Solution: Handle all characters in one go. +Files: src/regexp_nfa.c + +Patch 7.3.1138 +Problem: New regexp engine: neglist no longer used. +Solution: Remove the now unused neglist. +Files: src/regexp_nfa.c + +Patch 7.3.1139 +Problem: New regexp engine: negated flag is hardly used. +Solution: Add separate _NEG states, remove negated flag. +Files: src/regexp_nfa.c, src/regexp.h + +Patch 7.3.1140 +Problem: New regexp engine: trying expensive match while the result is not + going to be used. +Solution: Check for output state already being in the state list. +Files: src/regexp_nfa.c + +Patch 7.3.1141 +Problem: Win32: Check for available memory is not reliable and adds + overhead. +Solution: Remove mch_avail_mem(). (Mike Williams) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.1142 +Problem: Memory leak in ":syntime report". +Solution: Clear the grow array. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.3.1143 +Problem: When mapping NUL it is displayed as an X. +Solution: Check for KS_ZERO instead of K_ZERO. (Yasuhiro Matsumoto) +Files: src/message.c + +Patch 7.3.1144 +Problem: "RO" is not translated everywhere. +Solution: Put inside _(). (Sergey Alyoshin) +Files: src/buffer.c, src/screen.c + +Patch 7.3.1145 +Problem: New regexp engine: addstate() is called very often. +Solution: Optimize adding the start state. +Files: src/regexp_nfa.c + +Patch 7.3.1146 +Problem: New regexp engine: look-behind match not checked when followed by + zero-width match. +Solution: Do the look-behind match before adding the zero-width state. +Files: src/regexp_nfa.c + +Patch 7.3.1147 +Problem: New regexp engine: regstart is only used to find the first match. +Solution: Use regstart whenever adding the start state. +Files: src/regexp_nfa.c + +Patch 7.3.1148 +Problem: No command line completion for ":syntime". +Solution: Implement the completion. (Dominique Pelle) +Files: runtime/doc/map.txt, src/ex_cmds.h, src/ex_docmd.c, + src/ex_getln.c, src/proto/syntax.pro, src/syntax.c, src/vim.h + +Patch 7.3.1149 +Problem: New regexp engine: Matching plain text could be faster. +Solution: Detect a plain text match and handle it specifically. Add + vim_regfree(). +Files: src/regexp.c, src/regexp.h, src/regexp_nfa.c, + src/proto/regexp.pro, src/buffer.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/fileio.c, src/gui.c, src/misc1.c, src/misc2.c, + src/option.c, src/syntax.c, src/quickfix.c, src/search.c, + src/spell.c, src/tag.c, src/window.c, src/screen.c, src/macros.h, + src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1150 +Problem: New regexp engine: Slow when a look-behind match does not have a + width specified. +Solution: Try to compute the maximum width. +Files: src/regexp_nfa.c + +Patch 7.3.1151 +Problem: New regexp engine: Slow when a look-behind match is followed by a + zero-width match. +Solution: Postpone the look-behind match more often. +Files: src/regexp_nfa.c + +Patch 7.3.1152 +Problem: In tiny build ireg_icombine is undefined. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/regexp_nfa.c + +Patch 7.3.1153 +Problem: New regexp engine: Some look-behind matches are very expensive. +Solution: Postpone invisible matches further, until a match is almost found. +Files: src/regexp_nfa.c + +Patch 7.3.1154 +Problem: New regexp_nfa engine: Unnecessary code. +Solution: Remove unnecessary code. +Files: src/regexp_nfa.c + +Patch 7.3.1155 +Problem: MS-DOS: "make test" uses external rmdir command. +Solution: Rename "rmdir" to "rd". (Taro Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1156 +Problem: Compiler warnings. (dv1445) +Solution: Initialize variables, even when the value isn't really used. +Files: src/regexp_nfa.c, src/eval.c + +Patch 7.3.1157 +Problem: New regexp engine fails on "\(\<command\)\@<=.*" +Solution: Fix rule for postponing match. Further tune estimating whether + postponing works better. Add test. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1158 +Problem: Crash when running test 86. (Jun Takimoto) +Solution: Define PY_SSIZE_T_CLEAN early. (Elimar Riesebieter) +Files: src/if_python.c, src/if_python3.c + +Patch 7.3.1159 +Problem: The round() function is not always available. (Christ van + Willegen) +Solution: Use the solution from f_round(). +Files: src/ex_cmds2.c, src/eval.c, src/proto/eval.pro + +Patch 7.3.1160 +Problem: Mixing long and pointer doesn't always work. +Solution: Avoid cast to pointer. +Files: src/undo.c + +Patch 7.3.1161 +Problem: Python: PyList_SetItem() is inefficient. +Solution: Use PyList_SET_ITEM() (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1162 +Problem: Python: Memory leaks +Solution: Add more Py_DECREF(). (ZyX) +Files: src/if_py_both.h, src/if_python.c + +Patch 7.3.1163 +Problem: Not easy to load Python modules. +Solution: Search "python2", "python3" and "pythonx" directories in + 'runtimepath' for Python modules. (ZyX) +Files: runtime/doc/if_pyth.txt, src/configure.in, src/ex_cmds2.c, + src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/testdir/test86.in, src/testdir/test87.in, src/auto/configure + +Patch 7.3.1164 +Problem: Can't test what is actually displayed on screen. +Solution: Add the screenchar() and screenattr() functions. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.3.1165 +Problem: HP-UX compiler can't handle zero size array. (Charles Cooper) +Solution: Make the array one item big. +Files: src/regexp.h, src/regexp_nfa.c + +Patch 7.3.1166 +Problem: Loading Python modules is not tested. +Solution: Enable commented-out tests, add missing files. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok, + src/testdir/python2/module.py, src/testdir/python3/module.py, + src/testdir/pythonx/module.py, src/testdir/pythonx/modulex.py, + Filelist + +Patch 7.3.1167 +Problem: Python configure check doesn't reject Python 2 when requesting + Python 3. Some systems need -pthreads instead of -pthread. +Solution: Adjust configure accordingly. (Andrei Olsen) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1168 +Problem: Python "sane" configure checks give a warning message. +Solution: Use single quotes instead of escaped double quotes. (Ben Fritz) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1169 +Problem: New regexp engine: some work is done while executing a pattern, + even though the result is predictable. +Solution: Do the work while compiling the pattern. +Files: src/regexp_nfa.c + +Patch 7.3.1170 +Problem: Patch 7.3.1058 breaks backwards compatibility, not possible to use + a function reference as a string. (lilydjwg) +Solution: Instead of translating the function name only translate "s:". +Files: src/eval.c + +Patch 7.3.1171 +Problem: Check for digits and ascii letters can be faster. +Solution: Use a trick with one comparison. (Dominique Pelle) +Files: src/macros.h + +Patch 7.3.1172 +Problem: Python 2: loading modules doesn't work well. +Solution: Fix the code. Add more tests. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/testdir/python2/module.py, src/testdir/python3/module.py, + src/testdir/python_after/after.py, + src/testdir/python_before/before.py, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, Filelist + +Patch 7.3.1173 +Problem: Python 2 tests don't have the same output everywhere. +Solution: Make the Python 2 tests more portable. (ZyX) +Files: src/testdir/test86.in, src/testdir/test86.ok + +Patch 7.3.1174 +Problem: Python 2 and 3 use different ways to load modules. +Solution: Use the same method. (ZyX) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python3.c, + src/if_python.c + +Patch 7.3.1175 +Problem: Using isalpha() and isalnum() can be slow. +Solution: Use range checks. (Mike Williams) +Files: src/ex_docmd.c, src/macros.h + +Patch 7.3.1176 +Problem: Compiler warnings on 64 bit system. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c, src/if_py_both.h + +Patch 7.3.1177 +Problem: Wasting memory on padding. +Solution: Reorder struct fields. (Dominique Pelle) +Files: src/structs.h, src/fileio.c + +Patch 7.3.1178 +Problem: Can't put all Vim config files together in one directory. +Solution: Load ~/.vim/vimrc if ~/.vimrc does not exist. (Lech Lorens) +Files: runtime/doc/gui.txt, runtime/doc/starting.txt, src/gui.c, + src/main.c, src/os_amiga.h, src/os_dos.h, src/os_unix.h + +Patch 7.3.1179 +Problem: When a global mapping starts with the same characters as a + buffer-local mapping Vim waits for a character to be typed to find + out whether the global mapping is to be used. (Andy Wokula) +Solution: Use the local mapping without waiting. (Michael Henry) +Files: runtime/doc/map.txt, src/getchar.c + +Patch 7.3.1180 +Problem: When current directory changes, path from cscope may no longer be + valid. (AS Budden) +Solution: Always store the absolute path. (Christian Brabandt) +Files: src/if_cscope.c + +Patch 7.3.1181 +Problem: Wrong error message for 1.0[0]. +Solution: Check for funcref and float separately. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.3.1182 +Problem: 'backupcopy' default on MS-Windows does not work for hard and soft + links. +Solution: Check for links. (David Pope, Ken Takata) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.3.1183 +Problem: Python tests 86 and 87 fail. +Solution: Add "empty" files. (ZyX) +Files: src/testdir/python_before/before_1.py, + src/testdir/python_before/before_2.py + +Patch 7.3.1184 +Problem: Highlighting is sometimes wrong. (Axel Bender) +Solution: Fetch regline again when returning from recursive regmatch. +Files: src/regexp_nfa.c + +Patch 7.3.1185 +Problem: New regexp engine: no match with ^ after \n. (SungHyun Nam) +Solution: Fix it, add a test. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1186 +Problem: Python 3: test 87 may crash. +Solution: Use _PyArg_Parse_SizeT instead of PyArg_Parse. (Jun Takimoto) +Files: src/if_python3.c + +Patch 7.3.1187 (after 7.3.1170) +Problem: "s:" is recognized but "<SID>" is not. (ZyX) +Solution: Translate "<SID>" like "s:". +Files: src/eval.c + +Patch 7.3.1188 +Problem: Newline characters messing up error message. +Solution: Remove the newlines. (Kazunobu Kuriyama) +Files: src/gui_x11.c + +Patch 7.3.1189 (after 7.3.1185) +Problem: Highlighting is still wrong sometimes. (Dominique Pelle) +Solution: Also restore reginput properly. +Files: src/regexp_nfa.c + +Patch 7.3.1190 +Problem: Compiler warning for parentheses. (Christian Wellenbrock) +Solution: Change #ifdef. +Files: src/ex_docmd.c + +Patch 7.3.1191 +Problem: Backreference to previous line doesn't work. (Lech Lorens) +Solution: Implement looking in another line. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok + +Patch 7.3.1192 +Problem: Valgrind reports errors when using backreferences. (Dominique + Pelle) +Solution: Do not check the end of submatches. +Files: src/regexp_nfa.c + +Patch 7.3.1193 +Problem: fail_if_missing not used for Python 3. +Solution: Give an error when Python 3 can't be configured. (Andrei Olsen) +Files: src/configure.in, src/auto/configure + +Patch 7.3.1194 +Problem: Yaml highlighting is slow. +Solution: Tune the estimation of pattern failure chance. +Files: src/regexp_nfa.c + +Patch 7.3.1195 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Set the length to the matching backref. +Files: src/regexp.c + +Patch 7.3.1196 +Problem: Old regexp engine does not match pattern with backref correctly. + (Dominique Pelle) +Solution: Fix setting status. Test multi-line patterns better. +Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1197 +Problem: ":wviminfo!" does not write history previously read from a viminfo + file. (Roland Eggner) +Solution: When not merging history write all entries. +Files: src/ex_cmds.c, src/ex_getln.c, src/proto/ex_getln.pro + +Patch 7.3.1198 +Problem: Build error when using Perl 5.18.0 and dynamic loading. +Solution: Change #ifdefs for Perl_croak_xs_usage. (Ike Devolder) +Files: src/if_perl.xs + +Patch 7.3.1199 +Problem: When evaluating 'foldexpr' causes an error this is silently + ignored and evaluation is retried every time. +Solution: Set emsg_silent instead of emsg_off. Stop evaluating 'foldexpr' is + it is causing errors. (Christian Brabandt) +Files: src/fold.c + +Patch 7.3.1200 +Problem: When calling setline() from Insert mode, using CTRL-R =, undo does + not work properly. (Israel Chauca) +Solution: Sync undo after evaluating the expression. (Christian Brabandt) +Files: src/edit.c, src/testdir/test61.in, src/testdir/test61.ok + +Patch 7.3.1201 +Problem: When a startup script creates a preview window, it probably + becomes the current window. +Solution: Make another window the current one. (Christian Brabandt) +Files: src/main.c + +Patch 7.3.1202 (after 7.3.660) +Problem: Tags are not found in case-folded tags file. (Darren cole, Issue + 90) +Solution: Take into account that when case folding was used for the tags + file "!rm" sorts before the "!_TAG" header lines. +Files: src/tag.c + +Patch 7.3.1203 +Problem: Matches from matchadd() might be highlighted incorrectly when they + are at a fixed position and inserting lines. (John Szakmeister) +Solution: Redraw all lines below a change if there are highlighted matches. + (idea by Christian Brabandt) +Files: src/screen.c + +Patch 7.3.1204 +Problem: Calling gettabwinvar() in 'tabline' cancels Visual mode. (Hirohito + Higashi) +Solution: Don't always use goto_tabpage_tp(). +Files: src/window.c, src/proto/window.pro, src/eval.c, src/if_py_both.h + +Patch 7.3.1205 +Problem: logtalk.dict is not removed on uninstall. +Solution: Remove the file. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 7.3.1206 +Problem: Inconsistent function argument declarations. +Solution: Use ANSI style. +Files: src/if_py_both.h + +Patch 7.3.1207 +Problem: New regexp engine: no match found on "#if FOO". (Lech Lorens) +Solution: When adding a state gets skipped don't adjust the index. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1208 +Problem: Compiler warnings on MS-Windows. +Solution: Add type cast. Move variable declaration. (Mike Williams) +Files: src/option.c, src/os_mswin.c + +Patch 7.3.1209 +Problem: No completion for ":tabdo". +Solution: Add tabdo to the list of modifiers. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.3.1210 (after 7.3.1182) +Problem: 'backupcopy' default on MS-Windows is wrong when 'encoding' equals + the current codepage. +Solution: Change the #else block. (Ken Takata) +Files: src/os_win32.c + +Patch 7.3.1211 +Problem: MS-Windows: When 'encoding' differs from the current codepage + ":hardcopy" does not work properly. +Solution: Use TextOutW() and SetDlgItemTextW(). (Ken Takata) +Files: src/os_mswin.c, src/vim.rc + +Patch 7.3.1212 +Problem: "make test" on MS-Windows does not report failure like Unix does. +Solution: Make it work like on Unix. (Taro Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1213 +Problem: Can't build with small features and Python. +Solution: Adjust #ifdefs. +Files: src/eval.c, src/buffer.c, src/eval.c, src/window.c + +Patch 7.3.1214 +Problem: Missing declaration for init_users() and realloc_post_list(). + (Salman Halim) +Solution: Add the declarations. +Files: src/misc1.c, src/regexp_nfa.c + +Patch 7.3.1215 +Problem: Compiler warning for function not defined. +Solution: Add #ifdef. +Files: src/misc1.c + +Patch 7.3.1216 +Problem: Configure can't find Motif on Ubuntu. +Solution: Search for libXm in /usr/lib/*-linux-gnu. +Files: src/configure.in, src/auto/configure + +Patch 7.3.1217 +Problem: New regexp engine: Can't handle \%[[ao]]. (Yukihiro Nakadaira) +Solution: Support nested atoms inside \%[]. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1218 +Problem: "make test" on MS-Windows does not clean all temporary files and + gives some unnecessary message. +Solution: Clean the right files. Create .failed files. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.3.1219 +Problem: No test for using []] inside \%[]. +Solution: Add a test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1220 +Problem: MS-Windows: When using wide font italic and bold are not included. +Solution: Support wide-bold, wide-italic and wide-bold-italic. (Ken Takata, + Taro Muraoka) +Files: src/gui.c, src/gui.h, src/gui_w48.c + +Patch 7.3.1221 +Problem: When build flags change "make distclean" run into a configure + error. +Solution: When CFLAGS changes delete auto/config.cache. Also avoid adding + duplicate text to flags. (Ken Takata) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.3.1222 +Problem: Cannot execute some tests from the src directly. +Solution: Add missing targets. +Files: src/Makefile + +Patch 7.3.1223 +Problem: Tests fail on MS-Windows. +Solution: Avoid depending on OS version. Use DOS commands instead of Unix + commands. (Taro Muraoka, Ken Takata) +Files: src/testdir/test17.in, src/testdir/test50.in, + src/testdir/test71.in, src/testdir/test77.in + +Patch 7.3.1224 +Problem: Clang gives warnings on xxd. +Solution: Change how to use part of a string. (Dominique Pelle) Also avoid + warning for return not reached. +Files: src/xxd/xxd.c, src/regexp_nfa.c + +Patch 7.3.1225 +Problem: Compiler warnings when building with Motif. +Solution: Change set_label() argument. (Kazunobu Kuriyama) +Files: src/gui_motif.c + +Patch 7.3.1226 +Problem: Python: duplicate code. +Solution: Share code between OutputWrite() and OutputWritelines(). (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1227 +Problem: Inconsistent string conversion. +Solution: Use 'encoding' instead of utf-8. Use METH_O in place of + METH_VARARGS where appropriate. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1228 +Problem: Python: various inconsistencies and problems. +Solution: StringToLine now supports both bytes() and unicode() objects. + Make function names consistent. Fix memory leak fixed in + StringToLine. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c + +Patch 7.3.1229 +Problem: Python: not so easy to delete/restore translating. +Solution: Make macros do translation of exception messages. (ZyX) + Note: this breaks translations! +Files: src/if_py_both.h, src/if_python3.c + +Patch 7.3.1230 +Problem: Python: Exception messages are not clear. +Solution: Make exception messages more verbose. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1231 +Problem: Python: use of numbers not consistent. +Solution: Add support for Number protocol. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1232 +Problem: Python: inconsistencies in variable names. +Solution: Rename variables. (ZyX) +Files: src/eval.c, src/if_py_both.h + +Patch 7.3.1233 +Problem: Various Python problems. +Solution: Fix VimTryEnd. Crash with debug build and PYTHONDUMPREFS=1. Memory + leaks in StringToLine(), BufferMark() and convert_dl. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.3.1234 (after 7.3.1229) +Problem: Python: Strings are not marked for translation. +Solution: Add N_() where appropriate. (ZyX) +Files: src/if_py_both.h + +Patch 7.3.1235 +Problem: In insert mode CTRL-] is not inserted, on the command-line it is. +Solution: Don't insert CTRL-] on the command line. (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.3.1236 +Problem: Python: WindowSetattr() missing support for NUMBER_UNSIGNED. +Solution: Add NUMBER_UNSIGNED, add more tests. Various fixes. (ZyX) +Files: src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/testdir/pythonx/failing.py, + src/testdir/pythonx/failing_import.py, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok, src/testdir/pythonx/topmodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/subsubmodule/__init__.py, + src/testdir/pythonx/topmodule/submodule/subsubmodule/subsubsubmodule.py + +Patch 7.3.1237 +Problem: Python: non-import errors not handled correctly. +Solution: Let non-ImportError exceptions pass the finder. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 7.3.1238 +Problem: Crash in Python interface on 64 bit machines. +Solution: Change argument type of PyString_AsStringAndSize. (Taro Muraoka, + Jun Takimoto) +Files: src/if_python.c + +Patch 7.3.1239 +Problem: Can't build with Python and MSVC10. +Solution: Move #if outside of macro. (Taro Muraoka) +Files: src/if_py_both.h + +Patch 7.3.1240 +Problem: Memory leak in findfile(). +Solution: Free the memory. (Christian Brabandt) +Files: src/eval.c + +Patch 7.3.1241 (after 7.3.1236) +Problem: Some test files missing from the distribution. +Solution: Update the list of files. +Files: Filelist + +Patch 7.3.1242 +Problem: No failure when trying to use a number as a string. +Solution: Give an error when StringToLine() is called with an instance of + the wrong type. (Jun Takimoto) +Files: src/if_py_both.h + +Patch 7.3.1243 +Problem: New regexp engine: back references in look-behind match don't + work. (Lech Lorens) +Solution: Copy the submatches before a recursive match. Also fix function + prototypes. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1244 +Problem: MS-Windows: confirm() dialog text may not fit. +Solution: Use GetTextWidthEnc() instead of GetTextWidth(). (Yasuhiro + Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.1245 +Problem: MS-Windows: confirm() dialog text may still not fit. +Solution: Use GetTextWidthEnc() instead of GetTextWidth() in two more + places. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 7.3.1246 +Problem: When setting 'winfixheight' and resizing the window causes the + window layout to be wrong. +Solution: Add frame_check_height() and frame_check_width() (Yukihiro + Nakadaira) +Files: src/window.c + +Patch 7.3.1247 +Problem: New regexp engine: '[ ]\@!\p\%([ ]\@!\p\)*:' does not always match. +Solution: When there is a PIM add a duplicate state that starts at another + position. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1248 +Problem: Still have old hacking code for Input Method. +Solution: Add 'imactivatefunc' and 'imstatusfunc' as a generic solution to + Input Method activation. (Yukihiro Nakadaira) +Files: runtime/doc/options.txt, src/fileio.c, src/mbyte.c, src/option.c, + src/option.h, src/proto/fileio.pro + +Patch 7.3.1249 +Problem: Modeline not recognized when using "Vim" instead of "vim". +Solution: Also accept "Vim". +Files: src/buffer.c + +Patch 7.3.1250 +Problem: Python tests fail on MS-Windows. +Solution: Change backslashes to slashes. (Taro Muraoka) +Files: src/testdir/test86.in, src/testdir/test87.in + +Patch 7.3.1251 +Problem: Test 61 messes up viminfo. +Solution: Specify a separate viminfo file. +Files: src/testdir/test61.in + +Patch 7.3.1252 +Problem: gvim does not find the toolbar bitmap files in ~/vimfiles/bitmaps + if the corresponding menu command contains additional characters + like the shortcut marker '&' or if you use a non-english locale. +Solution: Use menu->en_dname or menu->dname. (Martin Gieseking) +Files: src/gui_w32.c + +Patch 7.3.1253 (after 7.3.1200) +Problem: Still undo problem after using CTRL-R = setline(). (Hirohito + Higashi) +Solution: Set the ins_need_undo flag. +Files: src/edit.c + +Patch 7.3.1254 (after 7.3.1252) +Problem: Can't build without the multi-lang feature. (John Marriott) +Solution: Add #ifdef. +Files: src/gui_w32.c + +Patch 7.3.1255 +Problem: Clang warnings when building with Athena. +Solution: Add type casts. (Dominique Pelle) +Files: src/gui_at_fs.c + +Patch 7.3.1256 +Problem: Can't build without eval or autocmd feature. +Solution: Add #ifdefs. +Files: src/mbyte.c, src/window.c + +Patch 7.3.1257 +Problem: With GNU gettext() ":lang de_DE.utf8" does not always result in + German messages. +Solution: Clear the $LANGUAGE environment variable. +Files: src/ex_cmds2.c + +Patch 7.3.1258 +Problem: Using submatch() may crash Vim. (Ingo Karkat) +Solution: Restore the number of subexpressions used. +Files: src/regexp_nfa.c + +Patch 7.3.1259 +Problem: No test for patch 7.3.1258 +Solution: Add a test entry. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.3.1260 +Problem: User completion does not get the whole command line in the command + line window. +Solution: Pass on the whole command line. (Daniel Thau) +Files: src/ex_getln.c, src/structs.h + +Patch 7.3.1261 (after patch 7.3.1179) +Problem: A buffer-local language mapping from a keymap stops a global + insert mode mapping from working. (Ron Aaron) +Solution: Do not wait for more characters to be typed only when the mapping + was defined with <nowait>. +Files: runtime/doc/map.txt, src/eval.c, src/getchar.c, + src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.3.1262 +Problem: Crash and compilation warnings with Cygwin. +Solution: Check return value of XmbTextListToTextProperty(). Add type casts. + Adjust #ifdefs. (Lech Lorens) +Files: src/main.c, src/os_unix.c, src/ui.c + +Patch 7.3.1263 +Problem: Typo in short option name. +Solution: Change "imse" to "imsf". +Files: src/option.c + +Patch 7.3.1264 (after 7.3.1261) +Problem: Missing m_nowait. +Solution: Include missing part of the patch. +Files: src/structs.h + +Patch 7.3.1265 (after 7.3.1249) +Problem: Accepting "Vim:" for a modeline causes errors too often. +Solution: Require "Vim:" to be followed by "set". +Files: src/buffer.c + +Patch 7.3.1266 +Problem: QNX: GUI fails to start. +Solution: Remove the QNX-specific #ifdef. (Sean Boudreau) +Files: src/gui.c + +Patch 7.3.1267 +Problem: MS-Windows ACL support doesn't work well. +Solution: Implement more ACL support. (Ken Takata) +Files: src/os_win32.c + +Patch 7.3.1268 +Problem: ACL support doesn't work when compiled with MingW. +Solution: Support ACL on MingW. (Ken Takata) +Files: src/os_win32.c, src/os_win32.h + +Patch 7.3.1269 +Problem: Insert completion keeps entry selected even though the list has + changed. (Olivier Teuliere) +Solution: Reset compl_shown_match and compl_curr_match. (Christian Brabandt) +Files: src/edit.c + +Patch 7.3.1270 +Problem: Using "Vp" in an empty buffer can't be undone. (Hauke Petersen) +Solution: Save one line in an empty buffer. (Christian Brabandt) +Files: src/ops.c + +Patch 7.3.1271 (after 7.3.1260) +Problem: Command line completion does not work. +Solution: Move setting xp_line down. (Daniel Thau) +Files: src/ex_getln.c + +Patch 7.3.1272 +Problem: Crash when editing Ruby file. (Aliaksandr Rahalevich) +Solution: Reallocate the state list when necessary. +Files: src/regexp_nfa.c + +Patch 7.3.1273 +Problem: When copying a location list the index might be wrong. +Solution: Set the index to one when using the first entry. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.1274 +Problem: When selecting an entry from a location list it may pick an + arbitrary window or open a new one. +Solution: Prefer using a window related to the location list. (Lech Lorens) +Files: src/quickfix.c + +Patch 7.3.1275 +Problem: "gn" does not work when the match is a single character. +Solution: Fix it, add a test. (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.3.1276 +Problem: When using a cscope connection resizing the window may send + SIGWINCH to cscope and it quits. +Solution: Call setpgid(0, 0) in the child process. (Narendran Gopalakrishnan) +Files: src/if_cscope.c + +Patch 7.3.1277 +Problem: In diff mode 'cursorline' also draws in the non-active window. + When 'nu' and 'sbr' are set the 'sbr' string is not underlined. +Solution: Only draw the cursor line in the current window. Combine the + 'cursorline' and other highlighting attributes. (Christian + Brabandt) +Files: src/screen.c + +Patch 7.3.1278 +Problem: When someone sets the screen size to a huge value with "stty" Vim + runs out of memory before reducing the size. +Solution: Limit Rows and Columns in more places. +Files: src/gui.c, src/gui_gtk_x11.c, src/option.c, src/os_unix.c, + src/proto/term.pro, src/term.c + +Patch 7.3.1279 +Problem: Compiler warning for variable uninitialized. (Tony Mechelynck) +Solution: Add an init. +Files: src/ex_getln.c + +Patch 7.3.1280 +Problem: Reading memory already freed since patch 7.3.1247. (Simon + Ruderich, Dominique Pelle) +Solution: Copy submatches before reallocating the state list. +Files: src/regexp_nfa.c + +Patch 7.3.1281 +Problem: When 'ttymouse' is set to "xterm2" clicking in column 123 moves + the cursor to column 96. (Kevin Goodsell) +Solution: Decode KE_CSI. +Files: src/term.c + +Patch 7.3.1282 (after 7.3.1277) +Problem: 'cursorline' not drawn in any other window. (Charles Campbell) +Solution: Do draw the cursor line in other windows. +Files: src/screen.c + +Patch 7.3.1283 +Problem: Test 71 fails on MS-Windows. +Solution: Put the binary data in a separate file. (Ken Takata) +Files: src/testdir/test71.in, src/testdir/test71a.in + +Patch 7.3.1284 +Problem: Compiler warnings in MS-Windows clipboard handling. +Solution: Add type casts. (Ken Takata) +Files: src/winclip.c + +Patch 7.3.1285 +Problem: No tests for picking a window when selecting an entry in a + location list. Not picking the right window sometimes. +Solution: Add test 96. Set usable_win appropriately. (Lech Lorens) +Files: src/quickfix.c, src/testdir/Makefile, src/testdir/test96.in, + src/testdir/test96.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.3.1286 +Problem: Check for screen size missing for Athena and Motif. +Solution: Add call to limit_screen_size(). +Files: src/gui_x11.c + +Patch 7.3.1287 +Problem: Python SystemExit exception is not handled properly. +Solution: Catch the exception and give an error. (Yasuhiro Matsumoto, Ken + Takata) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/if_python.c, + src/if_python3.c + +Patch 7.3.1288 +Problem: The first ":echo 'hello'" command output doesn't show. Mapping + for <S-F3> gets triggered during startup. +Solution: Add debugging code for the termresponse. When receiving the "Co" + entry and when setting 'ambiwidth' redraw right away if possible. + Add redraw_asap(). Don't set 'ambiwidth' if it already had the + right value. Do the 'ambiwidth' check in the second row to avoid + confusion with <S-F3>. +Files: src/term.c, src/screen.c, src/proto/screen.pro + +Patch 7.3.1289 +Problem: Get GLIB warning when removing a menu item. +Solution: Reference menu-id and also call gtk_container_remove(). (Ivan + Krasilnikov) +Files: src/gui_gtk.c + +Patch 7.3.1290 (after 7.3.1253) +Problem: CTRL-R = in Insert mode changes the start of the insert position. + (Ingo Karkat) +Solution: Only break undo, don't start a new insert. +Files: src/edit.c + +Patch 7.3.1291 (after 7.3.1288) +Problem: Compiler warnings for uninitialized variables. (Tony Mechelynck) +Solution: Initialize the variables. +Files: src/screen.c + +Patch 7.3.1292 +Problem: Possibly using invalid pointer when searching for window. (Raichoo) +Solution: Use "firstwin" instead of "tp_firstwin" for current tab. +Files: src/window.c + +Patch 7.3.1293 +Problem: Put in empty buffer cannot be undone. +Solution: Save one more line for undo. (Ozaki) +Files: src/ops.c + +Patch 7.3.1294 +Problem: ":diffoff" resets options. +Solution: Save and restore option values. (Christian Brabandt) +Files: src/diff.c, src/structs.h, src/option.c + +Patch 7.3.1295 +Problem: glob() and globpath() do not handle escaped special characters + properly. +Solution: Handle escaped characters differently. (Adnan Zafar) +Files: src/testdir/Makefile, src/testdir/test97.in, + src/testdir/test97.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, src/fileio.c, + src/misc1.c + +Patch 7.3.1296 +Problem: Only MS-Windows limits the GUI window size to what fits on the + monitor. +Solution: Limit the size for all systems. (Daniel Harding) +Files: src/ui.c + +Patch 7.3.1297 +Problem: findfile() directory matching does not work when a star follows + text. (Markus Braun) +Solution: Make a wildcard work properly. (Christian Brabandt) +Files: src/misc2.c, src/testdir/test89.in, src/testdir/test89.ok + +Patch 7.3.1298 (after 7.3.1297) +Problem: Crash. +Solution: Use STRCPY() instead of STRCAT() and allocate one more byte. +Files: src/misc2.c + +Patch 7.3.1299 +Problem: Errors when doing "make proto". Didn't do "make depend" for a + while. +Solution: Add #ifdefs. Update dependencies. Update proto files. +Files: src/if_python3.c, src/os_win32.c, src/Makefile, + src/proto/ex_docmd.pro, src/proto/if_python.pro, + src/proto/if_python3.pro, src/proto/gui_w16.pro, + src/proto/gui_w32.pro, src/proto/os_win32.pro + +Patch 7.3.1300 +Problem: Mac: tiny and small build fails. +Solution: Don't include os_macosx.m in tiny build. Include mouse support in + small build. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure, src/vim.h + +Patch 7.3.1301 +Problem: Some tests fail on MS-Windows. +Solution: Fix path separators in test 89 and 96. Omit test 97, escaping + works differently. Make findfile() work on MS-Windows. +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/test89.in, + src/testdir/test96.in, src/misc2.c + +Patch 7.3.1302 +Problem: Test 17 fails on MS-Windows. Includes line break in file name + everywhere. +Solution: Fix 'fileformat'. Omit CR-LF from a line read from an included + file. +Files: src/search.c, src/testdir/test17.in, src/testdir/test17.ok + +Patch 7.3.1303 (after 7.3.1290) +Problem: Undo is synced whenever CTRL-R = is called, breaking some plugins. +Solution: Only break undo when calling setline() or append(). +Files: src/globals.h, src/eval.c, src/edit.c, src/testdir/test61.in, + src/testdir/test61.ok + +Patch 7.3.1304 +Problem: Test 89 still fails on MS-Windows. +Solution: Set 'shellslash'. (Taro Muraoka) +Files: src/testdir/test89.in + +Patch 7.3.1305 +Problem: Warnings from 64 bit compiler. +Solution: Add type casts. +Files: src/misc2.c + +Patch 7.3.1306 +Problem: When redrawing the screen during startup the intro message may be + cleared. +Solution: Redisplay the intro message when appropriate. +Files: src/screen.c, src/version.c, src/proto/version.pro + +Patch 7.3.1307 +Problem: MS-Windows build instructions are outdated. +Solution: Adjust for building on Windows 7. Drop Windows 95/98/ME support. +Files: Makefile, nsis/gvim.nsi + +Patch 7.3.1308 +Problem: Typos in MS-Windows build settings and README. +Solution: Minor changes to MS-Windows files. +Files: src/msvc2008.bat, src/msvc2010.bat, src/VisVim/README_VisVim.txt + +Patch 7.3.1309 +Problem: When a script defines a function the flag to wait for the user to + hit enter is reset. +Solution: Restore the flag. (Yasuhiro Matsumoto) Except when the user was + typing the function. +Files: src/eval.c + +Patch 7.3.1310 +Problem: Typos in nsis script. Can use better compression. +Solution: Fix typos. Use lzma compression. (Ken Takata) +Files: nsis/gvim.nsi + +Patch 7.3.1311 +Problem: Compiler warnings on Cygwin. +Solution: Add type casts. Add windows include files. (Ken Takata) +Files: src/mbyte.c, src/ui.c + +Patch 7.3.1312 (after 7.3.1287) +Problem: Not giving correct error messages for SystemExit(). +Solution: Move E858 into an else. (Ken Takata) +Files: src/if_py_both.h + +Patch 7.3.1313 +Problem: :py and :py3 don't work when compiled with Cygwin or MingW with 64 + bit. +Solution: Add -DMS_WIN64 to the build command. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak + +Patch 7.3.1314 +Problem: Test 87 fails with Python 3.3. +Solution: Filter the error messages. (Taro Muraoka) +Files: src/testdir/test87.in + +Patch 7.4a.001 +Problem: Script to update syntax menu is outdated. +Solution: Add the missing items. +Files: runtime/makemenu.vim + +Patch 7.4a.002 +Problem: Valgrind errors in test 89. (Simon Ruderich) +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.4a.003 +Problem: Copyright year is outdated. +Solution: Only use the first year. +Files: src/vim.rc, src/vim16.rc + +Patch 7.4a.004 +Problem: MSVC 2012 Update 3 is not recognized. +Solution: Add the version number. (Raymond Ko) +Files: src/Make_mvc.mak + +Patch 7.4a.005 +Problem: Scroll binding causes unexpected scroll. +Solution: Store the topline after updating scroll binding. Add a test. + (Lech Lorens) +Files: src/testdir/test98.in, src/testdir/test98a.in, + src/testdir/test98.ok, src/option.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.4a.006 +Problem: Failure in po file check goes unnoticed. +Solution: Fail "make test" if the po file check fails. +Files: src/Makefile + +Patch 7.4a.007 +Problem: After "g$" with 'virtualedit' set, "k" moves to a different + column. (Dimitar Dimitrov) +Solution: Set w_curswant. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4a.008 +Problem: Python 3 doesn't handle multibyte characters properly when + 'encoding' is not utf-8. +Solution: Use PyUnicode_Decode() instead of PyUnicode_FromString(). (Ken + Takata) +Files: src/if_python3.c + +Patch 7.4a.009 +Problem: Compiler warnings for function prototypes. +Solution: Add "void". Move list_features() prototype. (Ken Takata) +Files: src/gui_w48.c, src/if_py_both.h, src/version.c + +Patch 7.4a.010 +Problem: Test 86 and 87 fail when building with Python or Python 3 and + using a static library. +Solution: Add configure check to add -fPIE compiler flag. +Files: src/configure.in, src/auto/configure + +Patch 7.4a.011 +Problem: Configure check for Python 3 config name isn't right. +Solution: Always include vi_cv_var_python3_version. (Tim Harder) +Files: src/configure.in, src/auto/configure + +Patch 7.4a.012 +Problem: "make test" fails when using a shadow directory. +Solution: Create links for files in src/po. (James McCoy) +Files: src/Makefile + +Patch 7.4a.013 +Problem: Setting/resetting 'lbr' in the main help file changes alignment + after a Tab. (Dimitar Dimitrov) +Solution: Also use the code for conceal mode where n_extra is computed for + 'lbr'. +Files: src/screen.c, src/testdir/test88.in, src/testdir/test88.ok + +Patch 7.4a.014 +Problem: Test 86 and 89 have a problem with using a shadow dir. +Solution: Adjust for the different directory structure. (James McCoy) +Files: src/testdir/test89.in, src/testdir/test86.in, src/Makefile + +Patch 7.4a.015 +Problem: No Japanese man pages. +Solution: Add Japanese translations of man pages. (Ken Takata, Yukihiro + Nakadaira, et al.) +Files: Filelist, src/Makefile, runtime/doc/evim-ja.UTF-8.1, + runtime/doc/vim-ja.UTF-8.1, runtime/doc/vimdiff-ja.UTF-8.1, + runtime/doc/vimtutor-ja.UTF-8.1, runtime/doc/xxd-ja.UTF-8.1 + +Patch 7.4a.016 (after 7.4a.014) +Problem: Features enabled in Makefile. +Solution: Undo accidental changes. +Files: src/Makefile + +Patch 7.4a.017 +Problem: When 'foldmethod' is "indent", using ">>" on a line just above a + fold makes the cursor line folded. (Evan Laforge) +Solution: Call foldOpenCursor(). (Christian Brabandt) +Files: src/ops.c + +Patch 7.4a.018 +Problem: Compiler warning for code unreachable. (Charles Campbell) +Solution: Use "while" instead of endless loop. Change break to continue. +Files: src/regexp_nfa.c, src/ui.c + +Patch 7.4a.019 +Problem: Invalid closing parenthesis in test 62. Command truncated at + double quote. +Solution: Remove the parenthesis. Change double quote to ''. (ZyX) +Files: src/testdir/test62.in, src/testdir/test62.ok + +Patch 7.4a.020 +Problem: Superfluous mb_ptr_adv(). +Solution: Remove the call. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.4a.021 +Problem: Using feedkeys() doesn't always work. +Solution: Omit feedkeys(). (Ken Takata) +Files: src/testdir/test98a.in + +Patch 7.4a.022 +Problem: Using "d2g$" does not delete the last character. (ZyX) +Solution: Set the "inclusive" flag properly. +Files: src/normal.c + +Patch 7.4a.023 (after 7.4a.019) +Problem: Still another superfluous parenthesis. (ZyX) +Solution: Remove it. +Files: src/testdir/test62.in + +Patch 7.4a.024 +Problem: X11 GUI: Checking icon height twice. +Solution: Check height and width. (Dominique Pelle) +Files: src/gui_x11.c + +Patch 7.4a.025 +Problem: Get the press-Enter prompt even after using :redraw. +Solution: Clear need_wait_return when executing :redraw. +Files: src/ex_docmd.c + +Patch 7.4a.026 +Problem: ":diffoff" does not remove folds. (Ramel) +Solution: Do not restore 'foldenable' when 'foldmethod' is "manual". +Files: src/diff.c + +Patch 7.4a.027 +Problem: When Python adds lines to another buffer the cursor position is + wrong, it might be below the last line causing ml_get errors. + (Vlad Irnov) +Solution: Temporarily change the current window, so that marks are corrected + properly. +Files: src/if_py_both.h, src/window.c, src/proto/buffer.pro + +Patch 7.4a.028 +Problem: Crash when spell checking in new buffer. +Solution: Set the b_p_key field. (Mike Williams) +Files: src/spell.c, src/testdir/test58.in + +Patch 7.4a.029 +Problem: Can't build with MzScheme on Ubuntu 13.04. +Solution: Add configure check for the "ffi" library. +Files: src/configure.in, src/auto/configure + +Patch 7.4a.030 (after 7.4.027) +Problem: Missing find_win_for_buf(). (toothpik) +Solution: Add missing changes. +Files: src/buffer.c + +Patch 7.4a.031 +Problem: Compiler warnings. (Charles Campbell) +Solution: Initialize variables even when not needed. +Files: src/regexp_nfa.c, src/search.c + +Patch 7.4a.032 +Problem: New regexp engine: Does not match shorter alternative. (Ingo + Karkat) +Solution: Do not drop a new state when the PIM info is different. +Files: src/regexp_nfa.c + +Patch 7.4a.033 +Problem: Test 98 always passes. +Solution: Include test98a.in in test98.in, execute the crucial command in + one line. (Yukihiro Nakadaira) +Files: src/testdir/test98.in, src/testdir/test98a.in + +Patch 7.4a.034 +Problem: The tabline may flicker when opening a new tab after 7.3.759 on + Win32. +Solution: Move call to TabCtrl_SetCurSel(). (Ken Takata) +Files: src/gui_w48.c + +Patch 7.4a.035 +Problem: Fix in patch 7.4a.032 is not tested. +Solution: Add test. +Files: src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4a.036 +Problem: "\p" in a regexp does not match double-width characters. + (Yukihiro Nakadaira) +Solution: Don't count display cells, use vim_isprintc(). +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test64.in, + src/testdir/test64.ok, src/testdir/test95.in, + src/testdir/test95.ok + +Patch 7.4a.037 +Problem: Win32: When mouse is hidden and in the toolbar, moving it won't + make it appear. (Sami Salonen) +Solution: Add tabline_wndproc() and toolbar_wndproc(). (Ken Takata) +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.4a.038 +Problem: When using MSVC 2012 there are various issues, including GUI size + computations. +Solution: Use SM_CXPADDEDBORDER. (Mike Williams) +Files: src/gui_w32.c, src/gui_w48.c, src/os_win32.h + +Patch 7.4a.039 +Problem: New regexp engine doesn't match pattern. (Ingo Karkat) +Solution: When adding a state also check for different PIM if the list of + states has any state with a PIM. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4a.040 +Problem: Win32: using uninitialized variable. +Solution: (Yukihiro Nakadaira) +Files: src/os_win32.c + +Patch 7.4a.041 +Problem: When using ":new ++ff=unix" and "dos" is first in 'fileformats' + then 'ff' is set to "dos" instead of "unix". (Ingo Karkat) +Solution: Create set_file_options() and invoke it from do_ecmd(). +Files: src/fileio.c, src/proto/fileio.pro, src/ex_cmds.c, + src/testdir/test91.in, src/testdir/test91.ok + +Patch 7.4a.042 +Problem: Crash when BufUnload autocommands close all buffers. (Andrew + Pimlott) +Solution: Set curwin->w_buffer to curbuf to avoid NULL. +Files: src/window.c, src/testdir/test8.in, src/testdir/test8.ok + +Patch 7.4a.043 +Problem: More ml_get errors when adding or deleting lines from Python. + (Vlad Irnov) +Solution: Switch to a window with the buffer when possible. +Files: src/if_py_both.h + +Patch 7.4a.044 +Problem: Test 96 sometimes fails. +Solution: Clear window from b_wininfo in win_free(). (Suggestion by + Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.4a.045 +Problem: Configure does not always find the right library for Lua. Missing + support for LuaJit. +Solution: Improve the configure detection of Lua. (Hiroshi Shirosaki) +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.4a.046 +Problem: Can't build without mbyte feature. +Solution: Add #ifdefs. +Files: src/ex_cmds.c + +Patch 7.4a.047 +Problem: Some comments are not so nice. +Solution: Change the comments. +Files: src/ex_docmd.c, src/message.c, src/ops.c, src/option.c + +Patch 7.4b.001 +Problem: Win32: dialog may extend off-screen. +Solution: Reduce the size, use correct borders. (Andrei Olsen) +Files: src/gui_w32.c + +Patch 7.4b.002 +Problem: Crash searching for \%(\%(\|\d\|-\|\.\)*\|\*\). (Marcin + Szamotulski) Also for \(\)*. +Solution: Do add a state for opening parenthesis, so that we can check if it + was added before at the same position. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4b.003 +Problem: Regexp code is not nicely aligned. +Solution: Adjust white space. (Ken Takata) +Files: src/regexp_nfa.c + +Patch 7.4b.004 +Problem: Regexp crash on pattern "@\%[\w\-]*". (Axel Kielhorn) +Solution: Add \%(\) around \%[] internally. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4b.005 +Problem: Finding %s in shellpipe and shellredir does not ignore %%s. +Solution: Skip over %%. (lcd 47) +Files: src/ex_cmds.c + +Patch 7.4b.006 (after 7.3.1295) +Problem: Using \{n,m} in an autocommand pattern no longer works. + Specifically, mutt temp files are not recognized. (Gary Johnson) +Solution: Make \\\{n,m\} work. +Files: runtime/doc/autocmd.txt, src/fileio.c + +Patch 7.4b.007 +Problem: On 32 bit MS-Windows :perldo does not work. +Solution: Make sure time_t uses 32 bits. (Ken Takata) +Files: src/if_perl.xs, src/vim.h + +Patch 7.4b.008 +Problem: 'autochdir' causes setbufvar() to change the current directory. + (Ben Fritz) +Solution: When disabling autocommands also reset 'acd' temporarily. + (Christian Brabandt) +Files: src/fileio.c + +Patch 7.4b.009 +Problem: When setting the Visual area manually and 'selection' is + exclusive, a yank includes one character too much. (Ingo Karkat) +Solution: Default the Visual operation to "v". (Christian Brabandt) +Files: src/mark.c + +Patch 7.4b.010 +Problem: Win32: Tcl library load does not use standard mechanism. +Solution: Call vimLoadLib() instead of LoadLibraryEx(). (Ken Takata) +Files: src/if_perl.xs, src/if_tcl.c + +Patch 7.4b.011 +Problem: ":he \%(\)" does not work. (ZyX) +Solution: Add an exception to the list. +Files: src/ex_cmds.c + +Patch 7.4b.012 +Problem: Output from a shell command is truncated at a NUL. (lcd 47) +Solution: Change every NUL into an SOH. +Files: src/misc1.c + +Patch 7.4b.013 +Problem: Install dir for JP man pages is wrong. +Solution: Remove ".UTF-8" from the directory name. (Ken Takata) +Files: src/Makefile + +Patch 7.4b.014 (after 7.4b.012) +Problem: Stupid mistake. +Solution: Changle "len" to "i". +Files: src/misc1.c + +Patch 7.4b.015 (after 7.4b.008) +Problem: Can't compile without the 'acd' feature. +Solution: Add #ifdefs. (Kazunobu Kuriyama) +Files: src/fileio.c + +Patch 7.4b.016 +Problem: Ruby detection fails on Fedora 19. +Solution: Use one way to get the Ruby version. (Michael Henry) +Files: src/configure.in, src/auto/configure + +Patch 7.4b.017 +Problem: ":he \^x" gives a strange error message. (glts) +Solution: Do not translate \^x to \_CTRL-x. +Files: src/ex_cmds.c + +Patch 7.4b.018 (after 7.4b.001) +Problem: Win32: Dialog can still be too big. +Solution: Move the check for height further down. (Andrei Olsen) +Files: src/gui_w32.c + +Patch 7.4b.019 (after 7.4a.034) +Problem: Tabline is not updated properly when closing a tab on Win32. +Solution: Only reduce flickering when adding a tab. (Ken Takata) +Files: src/gui_w48.c + +Patch 7.4b.020 +Problem: "g~ap" changes first character of next paragraph. (Manuel Ortega) +Solution: Avoid subtracting (0 - 1) from todo. (Mike Williams) +Files: src/ops.c, src/testdir/test82.in, src/testdir/test82.ok + +Patch 7.4b.021 +Problem: Pressing "u" after an external command results in multiple + press-enter messages. (glts) +Solution: Don't call hit_return_msg() when we have K_IGNORE. (Christian + Brabandt) +Files: src/message.c + +Patch 7.4b.022 +Problem: Not waiting for a character when the tick count overflows. +Solution: Subtract the unsigned numbers and cast to int. (Ken Takata) +Files: src/os_win32.c + + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt new file mode 100644 index 0000000..1d36c78 --- /dev/null +++ b/runtime/doc/version8.txt @@ -0,0 +1,41150 @@ +*version8.txt* For Vim version 9.1. Last change: 2022 Feb 26 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *vim8* *vim-8* *version-8.0* *version8.0* +Welcome to Vim 8! A large number of bugs have been fixed and several nice +features have been added. This file mentions all the new items and changes to +existing features since Vim 7.4. The patches up to Vim 7.4 can be found here: +|vim-7.4|. + +Use this command to see the full version and features information of the Vim +program you are using: > + :version + +NEW FEATURES |new-8| + Vim script enhancements |new-vim-script-8| + Various new items |new-items-8| + +INCOMPATIBLE CHANGES |incompatible-8| + +IMPROVEMENTS |improvements-8| + +COMPILE TIME CHANGES |compile-changes-8| + +PATCHES |patches-8| + +VERSION 8.1 |version-8.1| +Changed |changed-8.1| +Added |added-8.1| +Patches |patches-8.1| + +VERSION 8.2 |version-8.2| +Changed |changed-8.2| +Added |added-8.2| +Patches |patches-8.2| + + +See |vi_diff.txt| for an overview of differences between Vi and Vim 8.0. +See |version4.txt|, |version5.txt|, |version6.txt| and |version7.txt| for +differences between other versions. + + *vim-changelog* +You can find an overview of the most important changes (according to Martin +Tournoij) on this site: https://www.arp242.net/vimlog/ + +============================================================================== +NEW FEATURES *new-8* + +First an overview of the more interesting new features. A comprehensive list +is below. + + +Asynchronous I/O support, channels ~ + +Vim can now exchange messages with other processes in the background. This +makes it possible to have servers do work and send back the results to Vim. +See |channel-demo| for an example, this shows communicating with a Python +server. + +Closely related to channels is JSON support. JSON is widely supported and can +easily be used for inter-process communication, allowing for writing a server +in any language. The functions to use are |json_encode()| and |json_decode()|. + +This makes it possible to build very complex plugins, written in any language +and running in a separate process. + + +Jobs ~ + +Vim can now start a job, communicate with it and stop it. This is very useful +to run a process for completion, syntax checking, etc. Channels are used to +communicate with the job. Jobs can also read from or write to a buffer or a +file. See |job_start()|. + + +Timers ~ + +Also asynchronous are timers. They can fire once or repeatedly and invoke a +function to do any work. For example: > + let tempTimer = timer_start(4000, 'CheckTemp') +This will call the CheckTemp() function four seconds (4000 milliseconds) +later. See |timer_start()|. + + +Partials ~ + +Vim already had a Funcref, a reference to a function. A partial also refers +to a function, and additionally binds arguments and/or a dictionary. This is +especially useful for callbacks on channels and timers. E.g., for the timer +example above, to pass an argument to the function: > + let tempTimer = timer_start(4000, function('CheckTemp', ['out'])) +This will call CheckTemp('out') four seconds later. + + +Lambda and Closure ~ + +A short way to create a function has been added: {args -> expr}. See |lambda|. +This is useful for functions such as `filter()` and `map()`, which now also +accept a function argument. Example: > + :call filter(mylist, {idx, val -> val > 20}) + +A lambda can use variables defined in the scope where the lambda is defined. +This is usually called a |closure|. + +User defined functions can also be a closure by adding the "closure" argument +|:func-closure|. + + +Packages ~ + +Plugins keep growing and more of them are available than ever before. To keep +the collection of plugins manageable package support has been added. This is +a convenient way to get one or more plugins, drop them in a directory and +possibly keep them updated. Vim will load them automatically, or only when +desired. See |packages|. + + +New style tests ~ + +This is for Vim developers. So far writing tests for Vim has not been easy. +Vim 8 adds assert functions and a framework to run tests. This makes it a lot +simpler to write tests and keep them updated. Also new are several functions +that are added specifically for testing. See |test-functions|. + + +Window IDs ~ + +Previously windows could only be accessed by their number. And every time a +window would open, close or move that number changes. Each window now has a +unique ID, so that they are easy to find. See |win_getid()| and |win_id2win()|. + + +Viminfo uses timestamps ~ + +Previously the information stored in viminfo was whatever the last Vim wrote +there. Now timestamps are used to always keep the most recent items. +See |viminfo-timestamp|. + + +Wrapping lines with indent ~ + +The 'breakindent' option has been added to be able to wrap lines without +changing the amount of indent. + + +Windows: DirectX support ~ + +This adds the 'renderoptions' option to allow for switching on DirectX +(DirectWrite) support on MS-Windows. + + +GTK+ 3 support ~ + +The GTK+ 3 GUI works just like GTK+ 2 except for hardly noticeable technical +differences between them. Configure still chooses GTK+ 2 if both 2 and 3 are +available. See src/Makefile for how to use GTK+ 3 instead. See +|gui-x11-compiling| for other details. + + +Vim script enhancements *new-vim-script-8* +----------------------- + +In Vim script the following types have been added: + + |Special| |v:false|, |v:true|, |v:none| and |v:null| + |Channel| connection to another process for asynchronous I/O + |Job| process control + +Many functions and commands have been added to support the new types. + +On some systems the numbers used in Vim script are now 64 bit. This can be +checked with the |+num64| feature. + +Many items were added to support |new-style-testing|. + +printf() now accepts any type of argument for %s. It is converted to a string +like with string(). + + +Various new items *new-items-8* +----------------- + +Visual mode commands: ~ + +|v_CTRL-A| CTRL-A add N to number in highlighted text +|v_CTRL-X| CTRL-X subtract N from number in highlighted text +|v_g_CTRL-A| g CTRL-A add N to number in highlighted text +|v_g_CTRL-X| g CTRL-X subtract N from number in highlighted text + + +Insert mode commands: ~ + +|i_CTRL-G_U| CTRL-G U don't break undo with next cursor movement + + +Cmdline mode commands: ~ + +|/_CTRL-G| CTRL-G move to the next match in 'incsearch' mode +|/_CTRL-T| CTRL-T move to the previous match in 'incsearch' mode + + +Options: ~ + +'belloff' do not ring the bell for these reasons +'breakindent' wrapped line repeats indent +'breakindentopt' settings for 'breakindent'. +'emoji' emoji characters are considered full width +'fixendofline' make sure last line in file has <EOL> +'langremap' do apply 'langmap' to mapped characters +'luadll' name of the Lua dynamic library +'packpath' list of directories used for packages +'perldll' name of the Perl dynamic library +'pythondll' name of the Python 2 dynamic library +'pythonthreedll' name of the Python 3 dynamic library +'renderoptions' options for text rendering on Windows +'rubydll' name of the Ruby dynamic library +'signcolumn' when to display the sign column +'tagcase' how to handle case when searching in tags files +'tcldll' name of the Tcl dynamic library +'termguicolors' use GUI colors for the terminal + + +Ex commands: ~ + +|:cbottom| scroll to the bottom of the quickfix window +|:cdo| execute command in each valid error list entry +|:cfdo| execute command in each file in error list +|:chistory| display quickfix list stack +|:clearjumps| clear the jump list +|:filter| only output lines that (do not) match a pattern +|:helpclose| close one help window +|:lbottom| scroll to the bottom of the location window +|:ldo| execute command in valid location list entries +|:lfdo| execute command in each file in location list +|:lhistory| display location list stack +|:noswapfile| following commands don't create a swap file +|:packadd| add a plugin from 'packpath' +|:packloadall| load all packages under 'packpath' +|:smile| make the user happy + + +Ex command modifiers: ~ + +|:keeppatterns| following command keeps search pattern history +|<mods>| supply command modifiers to user defined commands + + +New and extended functions: ~ + +|arglistid()| get id of the argument list +|assert_equal()| assert that two expressions values are equal +|assert_exception()| assert that a command throws an exception +|assert_fails()| assert that a function call fails +|assert_false()| assert that an expression is false +|assert_inrange()| assert that an expression is inside a range +|assert_match()| assert that a pattern matches the value +|assert_notequal()| assert that two expressions values are not equal +|assert_notmatch()| assert that a pattern does not match the value +|assert_true()| assert that an expression is true +|bufwinid()| get the window ID of a specific buffer +|byteidxcomp()| like byteidx() but count composing characters +|ch_close()| close a channel +|ch_close_in()| close the in part of a channel +|ch_evalexpr()| evaluates an expression over channel +|ch_evalraw()| evaluates a raw string over 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_open()| open a channel +|ch_read()| read a message 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_setoptions()| set the options for a channel +|ch_status()| get status of a channel +|execute()| execute an Ex command and get the output +|exepath()| full path of an executable program +|funcref()| return a reference to function {name} +|getbufinfo()| get a list with buffer information +|getcharsearch()| return character search information +|getcmdwintype()| return the current command-line window type +|getcompletion()| return a list of command-line completion matches +|getcurpos()| get position of the cursor +|gettabinfo()| get a list with tab page information +|getwininfo()| get a list with window information +|glob2regpat()| convert a glob pattern into a search pattern +|isnan()| check for not a number +|job_getchannel()| get the channel used by a job +|job_info()| get information about a job +|job_setoptions()| set options for a job +|job_start()| start a job +|job_status()| get the status of a job +|job_stop()| stop a job +|js_decode()| decode a JSON string to Vim types +|js_encode()| encode an expression to a JSON string +|json_decode()| decode a JSON string to Vim types +|json_encode()| encode an expression to a JSON string +|matchaddpos()| define a list of positions to highlight +|matchstrpos()| match and positions of a pattern in a string +|perleval()| evaluate Perl expression +|reltimefloat()| convert reltime() result to a Float +|setcharsearch()| set character search information +|setfperm()| set the permissions of a file +|strcharpart()| get part of a string using char index +|strgetchar()| get character from a string using char index +|systemlist()| get the result of a shell command as a list +|test_alloc_fail()| make memory allocation fail +|test_autochdir()| test 'autochdir' functionality +|test_garbagecollect_now()| free memory right now +|test_null_channel()| return a null Channel +|test_null_dict()| return a null Dict +|test_null_job()| return a null Job +|test_null_list()| return a null List +|test_null_partial()| return a null Partial function +|test_null_string()| return a null String +|test_settime()| set the time Vim uses internally +|timer_info()| get information about timers +|timer_pause()| pause or unpause a timer +|timer_start()| create a timer +|timer_stop()| stop a timer +|timer_stopall()| stop all timers +|uniq()| remove copies of repeated adjacent items +|win_findbuf()| find windows containing a buffer +|win_getid()| get window ID of a window +|win_gotoid()| go to window with ID +|win_id2tabwin()| get tab and window nr from window ID +|win_id2win()| get window nr from window ID +|wordcount()| get byte/word/char count of buffer + + +New Vim variables: ~ + +|v:beval_winid| Window ID of the window where the mouse pointer is +|v:completed_item| complete items for the most recently completed word +|v:errors| errors found by assert functions +|v:false| a Number with value zero +|v:hlsearch| indicates whether search highlighting is on +|v:mouse_winid| Window ID for a mouse click obtained with |getchar()| +|v:none| an empty String, used for JSON +|v:null| an empty String, used for JSON +|v:option_new| new value of the option, used by |OptionSet| +|v:option_old| old value of the option, used by |OptionSet| +|v:option_oldlocal| old local value of the option, used by |OptionSet| +|v:option_oldglobal| old global value of the option, used by |OptionSet| +|v:option_type| scope of the set command, used by |OptionSet| +|v:option_command| command used to set the option, used by |OptionSet| +|v:progpath| the command with which Vim was invoked +|v:t_bool| value of Boolean type +|v:t_channel| value of Channel type +|v:t_dict| value of Dictionary type +|v:t_float| value of Float type +|v:t_func| value of Funcref type +|v:t_job| value of Job type +|v:t_list| value of List type +|v:t_none| value of None type +|v:t_number| value of Number type +|v:t_string| value of String type +|v:testing| must be set before using `test_garbagecollect_now()` +|v:true| a Number with value one +|v:vim_did_enter| set just before VimEnter autocommands are triggered + + +New autocommand events: ~ + +|CmdUndefined| a user command is used but it isn't defined +|OptionSet| after setting any option +|TabClosed| after closing a tab page +|TabNew| after creating a new tab page +|TextChanged| after a change was made to the text in Normal mode +|TextChangedI| after a change was made to the text in Insert mode +|WinNew| after creating a new window + + +New highlight groups: ~ + +EndOfBuffer filler lines (~) after the last line in the buffer. + |hl-EndOfBuffer| + + +New items in search patterns: ~ + +|/\%C| \%C match any composing characters + + +New Syntax/Indent/FTplugin files: ~ + +AVR Assembler (Avra) syntax +Arduino syntax +Bazel syntax and indent and ftplugin +Dockerfile syntax and ftplugin +Eiffel ftplugin +Euphoria 3 and 4 syntax +Go syntax and indent and ftplugin +Godoc syntax +Groovy ftplugin +HGcommit ftplugin +Hog indent and ftplugin +Innovation Data Processing upstream.pt syntax +J syntax and indent and ftplugin +Jproperties ftplugin +Json syntax and indent and ftplugin +Kivy syntax +Less syntax and indent +Mix syntax +Motorola S-Record syntax +R ftplugin +ReStructuredText syntax and indent and ftplugin +Registry ftplugin +Rhelp indent and ftplugin +Rmd (markdown with R code chunks) syntax and indent +Rmd ftplugin +Rnoweb ftplugin +Rnoweb indent +Scala syntax and indent and ftplugin +SystemVerilog syntax and indent and ftplugin +Systemd syntax and indent and ftplugin +Teraterm (TTL) syntax and indent +Text ftplugin +Vroom syntax and indent and ftplugin + + +New Keymaps: ~ + +Armenian eastern and western +Russian jcukenwintype +Vietnamese telex and vni + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-8* + +These changes are incompatible with previous releases. Check this list if you +run into a problem when upgrading from Vim 7.4 to 8.0. + + +Better defaults without a vimrc ~ + +When no vimrc file is found, the |defaults.vim| script is loaded to set more +useful default values for new users. That includes setting 'nocompatible'. +Thus Vim no longer starts up in Vi compatible mode. If you do want that, +either create a .vimrc file that does "set compatible" or start Vim with +"vim -C". + + +Support removed ~ + +The support for MS-DOS has been removed. It hasn't been working for a while +(Vim doesn't fit in memory) and removing it cleans up the code quite a bit. + +The support for Windows 16 bit (Windows 95 and older) has been removed. + +The support for OS/2 has been removed. It probably hasn't been working for a +while since nobody uses it. + +The SNiFF+ support has been removed. + + +Minor incompatibilities: ~ + +Probably... + +============================================================================== +IMPROVEMENTS *improvements-8* + +The existing blowfish encryption turned out to be much weaker than it was +supposed to be. The blowfish2 method has been added to fix that. Note that +this still isn't a state-of-the-art encryption, but good enough for most +usage. See 'cryptmethod'. + + +============================================================================== +COMPILE TIME CHANGES *compile-changes-8* + +The Vim repository was moved from Google code to github, since Google code +was shut down. It can now be found at https://github.com/vim/vim. + +Functions now use ANSI-C declarations. At least a C-89 compatible compiler is +required. + +The +visual feature is now always included. + +============================================================================== +PATCHES *patches-8* *bug-fixes-8* + +The list of patches that got included since 7.4.0. This includes all the new +features, but does not include runtime file changes (syntax, indent, help, +etc.) + +Patch 7.4.001 +Problem: Character classes such as [a-z] do not react to 'ignorecase'. + Breaks man page highlighting. (Mario Grgic) +Solution: Add separate items for classes that react to 'ignorecase'. Clean + up logic handling character classes. Add more tests. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.002 +Problem: Pattern with two alternative look-behind matches does not match. + (Amadeus Demarzi) +Solution: When comparing PIMs also compare their state ID to see if they are + different. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.003 +Problem: Memory access error in Ruby syntax highlighting. (Christopher Chow) +Solution: Refresh stale pointer. (James McCoy) +Files: src/regexp_nfa.c + +Patch 7.4.004 +Problem: When closing a window fails ":bwipe" may hang. +Solution: Let win_close() return FAIL and break out of the loop. +Files: src/window.c, src/proto/window.pro, src/buffer.c + +Patch 7.4.005 +Problem: Using "vaB" while 'virtualedit' is set selects the wrong area. + (Dimitar Dimitrov) +Solution: Reset coladd when finding a match. +Files: src/search.c + +Patch 7.4.006 +Problem: mkdir("foo/bar/", "p") gives an error message. (David Barnett) +Solution: Remove the trailing slash. (lcd) +Files: src/eval.c + +Patch 7.4.007 +Problem: Creating a preview window on startup leaves the screen layout in a + messed up state. (Marius Gedminas) +Solution: Don't change firstwin. (Christian Brabandt) +Files: src/main.c + +Patch 7.4.008 +Problem: New regexp engine can't be interrupted. +Solution: Check for CTRL-C pressed. (Yasuhiro Matsumoto) +Files: src/regexp_nfa.c, src/regexp.c + +Patch 7.4.009 +Problem: When a file was not decrypted (yet), writing it may destroy the + contents. +Solution: Mark the file as readonly until decryption was done. (Christian + Brabandt) +Files: src/fileio.c + +Patch 7.4.010 (after 7.4.006) +Problem: Crash with invalid argument to mkdir(). +Solution: Check for empty string. (lcd47) +Files: src/eval.c + +Patch 7.4.011 +Problem: Cannot find out if "acl" and "xpm" features are supported. +Solution: Add "acl" and "xpm" to the list of features. (Ken Takata) +Files: src/eval.c, src/version.c + +Patch 7.4.012 +Problem: MS-Windows: resolving shortcut does not work properly with + multibyte characters. +Solution: Use wide system functions. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.013 +Problem: MS-Windows: File name buffer too small for utf-8. +Solution: Use character count instead of byte count. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.014 +Problem: MS-Windows: check for writing to device does not work. +Solution: Fix #ifdefs. (Ken Takata) +Files: src/fileio.c + +Patch 7.4.015 +Problem: MS-Windows: Detecting node type does not work for multibyte + characters. +Solution: Use wide character function when needed. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.016 +Problem: MS-Windows: File name case can be wrong. +Solution: Add fname_casew(). (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.017 +Problem: ":help !!" does not find the "!!" tag in the help file. (Ben + Fritz) +Solution: When reading the start of the tags file do parse lines that are + not header lines. +Files: src/tag.c + +Patch 7.4.018 +Problem: When completing item becomes unselected. (Shougo Matsu) +Solution: Revert patch 7.3.1269. +Files: src/edit.c + +Patch 7.4.019 +Problem: MS-Windows: File name completion doesn't work properly with + Chinese characters. (Yue Wu) +Solution: Take care of multibyte characters when looking for the start of + the file name. (Ken Takata) +Files: src/edit.c + +Patch 7.4.020 +Problem: NFA engine matches too much with \@>. (John McGowan) +Solution: When a whole pattern match is found stop searching. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.021 +Problem: NFA regexp: Using \ze in one branch which doesn't match may cause + end of another branch to be wrong. (William Fugh) +Solution: Set end position if it wasn't set yet. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.022 +Problem: Deadlock while exiting, because of allocating memory. +Solution: Do not use gettext() in deathtrap(). (James McCoy) +Files: src/os_unix.c, src/misc1.c + +Patch 7.4.023 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/edit.c + +Patch 7.4.024 +Problem: When root edits a file the undo file is owned by root while the + edited file may be owned by another user, which is not allowed. + (cac2s) +Solution: Accept an undo file owned by the current user. +Files: src/undo.c + +Patch 7.4.025 (after 7.4.019) +Problem: Reading before start of a string. +Solution: Do not call mb_ptr_back() at start of a string. (Dominique Pelle) +Files: src/edit.c + +Patch 7.4.026 +Problem: Clang warning for int shift overflow. +Solution: Use unsigned and cast back to int. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.4.027 (after 7.4.025) +Problem: Another valgrind error when using CTRL-X CTRL-F at the start of + the line. (Dominique Pelle) +Solution: Don't call mb_ptr_back() at the start of the line. Add a test. +Files: src/edit.c, src/testdir/test32.in + +Patch 7.4.028 +Problem: Equivalence classes are not working for multibyte characters. +Solution: Copy the rules from the old to the new regexp engine. Add a test + to check both engines. +Files: src/regexp_nfa.c, src/testdir/test44.in, src/testdir/test99.in, + src/testdir/test99.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.4.029 +Problem: An error in a pattern is reported twice. +Solution: Remove the retry with the backtracking engine, it won't work. +Files: src/regexp.c + +Patch 7.4.030 +Problem: The -mno-cygwin argument is no longer supported by Cygwin. +Solution: Remove the arguments. (Steve Hall) +Files: src/GvimExt/Make_cyg.mak, src/Make_cyg.mak, src/xxd/Make_cyg.mak + +Patch 7.4.031 +Problem: ":diffoff!" resets options even when 'diff' is not set. (Charles + Cooper) +Solution: Only resets related options in a window where 'diff' is set. +Files: src/diff.c + +Patch 7.4.032 +Problem: NFA engine does not match the NUL character. (Jonathon Merz) +Solution: Use 0x0a instead of NUL. (Christian Brabandt) +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.033 +Problem: When the terminal has only 20 lines test 92 and 93 overwrite the + input file. +Solution: Explicitly write test.out. Check that the terminal is large enough + to run the tests. (Hirohito Higashi) +Files: src/testdir/test92.in, src/testdir/test93.in, + src/testdir/test1.in, src/testdir/Makefile + +Patch 7.4.034 +Problem: Using "p" in Visual block mode only changes the first line. +Solution: Repeat the put in all text in the block. (Christian Brabandt) +Files: runtime/doc/change.txt, src/ops.c, src/normal.c, + src/testdir/test20.in, src/testdir/test20.ok + +Patch 7.4.035 +Problem: MS-Windows: The mouse pointer flickers when going from command + line mode to Normal mode. +Solution: Check for WM_NCMOUSEMOVE. (Ken Takata) +Files: src/gui_w48.c + +Patch 7.4.036 +Problem: NFA engine does not capture group correctly when using \@>. (ZyX) +Solution: Copy submatches before doing the recursive match. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.037 +Problem: Using "\ze" in a sub-pattern does not result in the end of the + match to be set. (Axel Bender) +Solution: Copy the end of match position when a recursive match was + successful. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.038 +Problem: Using "zw" and "zg" when 'spell' is off give a confusing error + message. (Gary Johnson) +Solution: Ignore the error when locating the word. Explicitly mention what + word was added. (Christian Brabandt) +Files: src/normal.c, src/spell.c + +Patch 7.4.039 +Problem: MS-Windows: MSVC10 and earlier can't handle symlinks to a + directory properly. +Solution: Add stat_symlink_aware() and wstat_symlink_aware(). (Ken Takata) +Files: src/os_mswin.c, src/os_win32.c, src/os_win32.h + +Patch 7.4.040 +Problem: Valgrind error on exit when a script-local variable holds a + reference to the scope of another script. +Solution: First clear all variables, then free the scopes. (ZyX) +Files: src/eval.c + +Patch 7.4.041 (after 7.4.034) +Problem: Visual selection does not remain after being copied over. (Axel + Bender) +Solution: Move when VIsual_active is reset. (Christian Brabandt) +Files: src/ops.c + +Patch 7.4.042 +Problem: When using ":setlocal" for 'spell' and 'spelllang' then :spelldump + doesn't work. (Dimitar Dimitrov) +Solution: Copy the option variables to the new window used to show the dump. + (Christian Brabandt) +Files: src/spell.c + +Patch 7.4.043 +Problem: VMS can't handle long function names. +Solution: Shorten may_req_ambiguous_character_width. (Samuel Ferencik) +Files: src/main.c, src/term.c, src/proto/term.pro + + +Patch 7.4.044 (after 7.4.039) +Problem: Can't build with old MSVC. (Wang Shoulin) +Solution: Define OPEN_OH_ARGTYPE instead of using intptr_t directly. +Files: src/os_mswin.c + +Patch 7.4.045 +Problem: substitute() does not work properly when the pattern starts with + "\ze". +Solution: Detect an empty match. (Christian Brabandt) +Files: src/eval.c, src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.4.046 +Problem: Can't use Tcl 8.6. +Solution: Change how Tcl_FindExecutable is called. (Jan Nijtmans) +Files: src/if_tcl.c + +Patch 7.4.047 +Problem: When using input() in a function invoked by a mapping it doesn't + work. +Solution: Temporarily reset ex_normal_busy. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.048 +Problem: Recent clang version complains about -fno-strength-reduce. +Solution: Add a configure check for the clang version. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + +Patch 7.4.049 +Problem: In Ex mode, when line numbers are enabled the substitute prompt is + wrong. +Solution: Adjust for the line number size. (Benoit Pierre) +Files: src/ex_cmds.c + +Patch 7.4.050 +Problem: "gn" selects too much for the pattern "\d" when there are two + lines with a single digit. (Ryan Carney) +Solution: Adjust the logic of is_one_char(). (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.4.051 +Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston) +Solution: Copy the pim structure before calling addstate() to avoid it + becoming invalid when the state list is reallocated. +Files: src/regexp_nfa.c + +Patch 7.4.052 +Problem: With 'fo' set to "a2" inserting a space in the first column may + cause the cursor to jump to the previous line. +Solution: Handle the case when there is no comment leader properly. (Tor + Perkins) Also fix that cursor is in the wrong place when spaces + get replaced with a Tab. +Files: src/misc1.c, src/ops.c, src/testdir/test68.in, + src/testdir/test68.ok + +Patch 7.4.053 +Problem: Test75 has a wrong header. (ZyX) +Solution: Fix the text and remove leading ". +Files: src/testdir/test75.in + +Patch 7.4.054 +Problem: Reading past end of the 'stl' string. +Solution: Don't increment pointer when already at the NUL. (Christian + Brabandt) +Files: src/buffer.c + +Patch 7.4.055 +Problem: Mac: Where availability macros are defined depends on the system. +Solution: Add a configure check. (Felix B眉nemann) +Files: src/config.h.in, src/configure.in, src/auto/configure, + src/os_mac.h + +Patch 7.4.056 +Problem: Mac: Compilation problem with OS X 10.9 Mavericks. +Solution: Include AvailabilityMacros.h when available. (Kazunobu Kuriyama) +Files: src/os_unix.c + +Patch 7.4.057 +Problem: byteidx() does not work for composing characters. +Solution: Add byteidxcomp(). +Files: src/eval.c, src/testdir/test69.in, src/testdir/test69.ok, + runtime/doc/eval.txt + +Patch 7.4.058 +Problem: Warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/ops.c + +Patch 7.4.059 +Problem: set_last_cursor() may encounter w_buffer being NULL. (Matt + Mkaniaris) +Solution: Check for NULL. +Files: src/mark.c + +Patch 7.4.060 +Problem: Declaration has wrong return type for PyObject_SetAttrString(). +Solution: Use int instead of PyObject. (Andreas Schwab) +Files: src/if_python.c, src/if_python3.c + +Patch 7.4.061 (after 7.4.055 and 7.4.056) +Problem: Availability macros configure check in wrong place. +Solution: Also check when not using Darwin. Remove version check. +Files: src/configure.in, src/auto/configure, src/os_unix.c + +Patch 7.4.062 (after 7.4.061) +Problem: Configure check for AvailabilityMacros.h is wrong. +Solution: Use AC_CHECK_HEADERS(). +Files: src/configure.in, src/auto/configure + +Patch 7.4.063 +Problem: Crash when using invalid key in Python dictionary. +Solution: Check for object to be NULL. Add tests. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.064 +Problem: When replacing a character in Visual block mode, entering a CR + does not cause a repeated line break. +Solution: Recognize the situation and repeat the line break. (Christian + Brabandt) +Files: src/normal.c, src/ops.c, src/testdir/test39.in, + src/testdir/test39.ok + +Patch 7.4.065 +Problem: When recording, the character typed at the hit-enter prompt is + recorded twice. (Urtica Dioica) +Solution: Avoid recording the character twice. (Christian Brabandt) +Files: src/message.c + +Patch 7.4.066 +Problem: MS-Windows: When there is a colon in the file name (sub-stream + feature) the swap file name is wrong. +Solution: Change the colon to "%". (Yasuhiro Matsumoto) +Files: src/fileio.c, src/memline.c, src/misc1.c, src/proto/misc1.pro + +Patch 7.4.067 +Problem: After inserting comment leader, CTRL-\ CTRL-O does move the + cursor. (Wiktor Ruben) +Solution: Avoid moving the cursor. (Christian Brabandt) +Files: src/edit.c + +Patch 7.4.068 +Problem: Cannot build Vim on Mac with non-Apple compilers. +Solution: Remove the -no-cpp-precomp flag. (Misty De Meo) +Files: src/configure.in, src/auto/configure, src/osdef.sh + +Patch 7.4.069 +Problem: Cannot right shift lines starting with #. +Solution: Allow the right shift when 'cino' contains #N with N > 0. + (Christian Brabandt) + Refactor parsing 'cino', store the values in the buffer. +Files: runtime/doc/indent.txt, src/buffer.c, src/edit.c, src/eval.c, + src/ex_getln.c, src/fold.c, src/misc1.c, src/ops.c, + src/proto/misc1.pro, src/proto/option.pro, src/structs.h, + src/option.c + +Patch 7.4.070 (after 7.4.069) +Problem: Can't compile with tiny features. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 7.4.071 (after 7.4.069) +Problem: Passing limits around too often. +Solution: Use limits from buffer. +Files: src/edit.c, src/misc1.c, src/proto/misc1.pro + +Patch 7.4.072 +Problem: Crash when using Insert mode completion. +Solution: Avoid going past the end of pum_array. (idea by Francisco Lopes) +Files: src/popupmnu.c + +Patch 7.4.073 +Problem: Setting undolevels for one buffer changes undo in another. +Solution: Make 'undolevels' a global-local option. (Christian Brabandt) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, src/option.h + src/structs.h, src/undo.c + +Patch 7.4.074 +Problem: When undo'ing all changes and creating a new change the undo + structure is incorrect. (Christian Brabandt) +Solution: When deleting the branch starting at the old header, delete the + whole branch, not just the first entry. +Files: src/undo.c + +Patch 7.4.075 +Problem: Locally setting 'undolevels' is not tested. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test100.in, src/testdir/test100.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, src/Makefile + +Patch 7.4.076 +Problem: "cgn" does not wrap around the end of the file. (Dimitar Dimitrov) +Solution: Restore 'wrapscan' earlier. (Christian Brabandt) +Files: src/search.c + +Patch 7.4.077 +Problem: DOS installer creates shortcut without a path, resulting in the + current directory to be C:\Windows\system32. +Solution: Use environment variables. +Files: src/dosinst.c + +Patch 7.4.078 +Problem: MSVC 2013 is not supported. +Solution: Recognize and support MSVC 2013. (Ed Brown) +Files: src/Make_mvc.mak + +Patch 7.4.079 +Problem: A script cannot detect whether 'hlsearch' highlighting is actually + displayed. +Solution: Add the "v:hlsearch" variable. (ZyX) +Files: src/eval.c, src/ex_docmd.c, + src/option.c, src/screen.c, src/search.c, src/tag.c, src/vim.h, + src/testdir/test101.in, src/testdir/test101.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.080 (after 7.4.079) +Problem: Missing documentation for v:hlsearch. +Solution: Include the right file in the patch. +Files: runtime/doc/eval.txt + +Patch 7.4.081 (after 7.4.078) +Problem: Wrong logic when ANALYZE is "yes". +Solution: Use or instead of and. (KF Leong) +Files: src/Make_mvc.mak + +Patch 7.4.082 +Problem: Using "gf" in a changed buffer suggests adding "!", which is not + possible. (Tim Chase) +Solution: Pass a flag to check_changed() whether adding ! make sense. +Files: src/vim.h, src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/globals.h, + src/ex_cmds.c, src/ex_docmd.c + +Patch 7.4.083 +Problem: It's hard to avoid adding a used pattern to the search history. +Solution: Add the ":keeppatterns" modifier. (Christian Brabandt) +Files: runtime/doc/cmdline.txt, src/ex_cmds.h, src/ex_docmd.c, + src/ex_getln.c, src/structs.h + +Patch 7.4.084 +Problem: Python: interrupt not being properly discarded. (Yggdroot Chen) +Solution: Discard interrupt in VimTryEnd. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.085 +Problem: When inserting text in Visual block mode and moving the cursor the + wrong text gets repeated in other lines. +Solution: Use the '[ mark to find the start of the actually inserted text. + (Christian Brabandt) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.086 +Problem: Skipping over an expression when not evaluating it does not work + properly for dict members. +Solution: Skip over unrecognized expression. (ZyX) +Files: src/eval.c, src/testdir/test34.in, src/testdir/test34.ok + +Patch 7.4.087 +Problem: Compiler warning on 64 bit Windows systems. +Solution: Fix type cast. (Mike Williams) +Files: src/ops.c + +Patch 7.4.088 +Problem: When spell checking is enabled Asian characters are always marked + as error. +Solution: When 'spelllang' contains "cjk" do not mark Asian characters as + error. (Ken Takata) +Files: runtime/doc/options.txt, runtime/doc/spell.txt, src/mbyte.c, + src/option.c, src/spell.c, src/structs.h + +Patch 7.4.089 +Problem: When editing a file in a directory mounted through sshfs Vim + doesn't set the security context on a renamed file. +Solution: Add mch_copy_sec() to vim_rename(). (Peter Backes) +Files: src/fileio.c + +Patch 7.4.090 +Problem: Win32: When a directory name contains an exclamation mark, + completion doesn't complete the contents of the directory. +Solution: Escape the exclamation mark. (Jan Stocker) +Files: src/ex_getln.c, src/testdir/test102.in, src/testdir/test102.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.091 (after 7.4.089) +Problem: Missing semicolon. +Solution: Add the semicolon. +Files: src/fileio.c + +Patch 7.4.092 (after 7.4.088) +Problem: Can't build small version. +Solution: Add #ifdef where the b_cjk flag is used. (Ken Takata) +Files: src/spell.c + +Patch 7.4.093 +Problem: Configure can't use LuaJIT on ubuntu 12.04. +Solution: Adjust the configure regexp that locates the version number. + (Charles Strahan) +Files: src/configure.in, src/auto/configure + +Patch 7.4.094 +Problem: Configure may not find that -lint is needed for gettext(). +Solution: Check for gettext() with empty $LIBS. (Thomas De Schampheleire) +Files: src/configure.in, src/auto/configure + +Patch 7.4.095 (after 7.4.093) +Problem: Regexp for LuaJIT version doesn't work on BSD. +Solution: Use "*" instead of "\+" and "\?". (Ozaki Kiichi) +Files: src/configure.in, src/auto/configure + +Patch 7.4.096 +Problem: Can't change directory to an UNC path. +Solution: Use win32_getattrs() in mch_getperm(). (Christian Brabandt) +Files: src/os_win32.c + +Patch 7.4.097 (after 7.4.034) +Problem: Unexpected behavior change related to 'virtualedit'. (Ingo Karkat) +Solution: Update the valid cursor position. (Christian Brabandt) +Files: src/ops.c + +Patch 7.4.098 +Problem: When using ":'<,'>del" errors may be given for the visual line + numbers being out of range. +Solution: Reset Visual mode in ":del". (Lech Lorens) +Files: src/ex_docmd.c, src/testdir/test103.in, src/testdir/test103.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.099 +Problem: Append in blockwise Visual mode with "$" is wrong. +Solution: After "$" don't use the code that checks if the cursor was moved. + (Hirohito Higashi, Ken Takata) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.100 +Problem: NFA regexp doesn't handle backreference correctly. (Ryuichi + Hayashida, Urtica Dioica) +Solution: Always add NFA_SKIP, also when it already exists at the start + position. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.101 +Problem: Using \1 in pattern goes one line too far. (Bohr Shaw, John Little) +Solution: Only advance the match end for the matched characters in the last + line. +Files: src/regexp.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.102 +Problem: Crash when interrupting "z=". +Solution: Add safety check for word length. (Christian Brabandt, Dominique + Pelle) +Files: src/spell.c + +Patch 7.4.103 +Problem: Dos installer uses an old way to escape spaces in the diff + command. +Solution: Adjust the quoting to the new default shellxquote. (Ben Fritz) +Files: src/dosinst.c + +Patch 7.4.104 +Problem: ":help s/\_" reports an internal error. (John Beckett) +Solution: Check for NUL and invalid character classes. +Files: src/regexp_nfa.c + +Patch 7.4.105 +Problem: Completing a tag pattern may give an error for invalid pattern. +Solution: Suppress the error, just return no matches. +Files: src/tag.c + +Patch 7.4.106 +Problem: Can't build with Ruby using Cygwin. +Solution: Fix library name in makefile. (Steve Hall) +Files: src/Make_cyg.mak + +Patch 7.4.107 +Problem: Python: When vim.eval() encounters a Vim error, a try/catch in the + Python code doesn't catch it. (Yggdroot Chen) +Solution: Throw exceptions on errors in vim.eval(). (ZyX) +Files: src/ex_eval.c, src/if_py_both.h, src/proto/ex_eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.108 +Problem: "zG" and "zW" leave temp files around on MS-Windows. +Solution: Delete the temp files when exiting. (Ken Takata) +Files: src/memline.c, src/proto/spell.pro, src/spell.c + +Patch 7.4.109 +Problem: ColorScheme autocommand matches with the current buffer name. +Solution: Match with the colorscheme name. (Christian Brabandt) +Files: runtime/doc/autocmd.txt, src/fileio.c, src/syntax.c + +Patch 7.4.110 +Problem: "gUgn" cannot be repeated. (Dimitar Dimitrov) +Solution: Don't put "gn" in a different order in the redo buffer. Restore + 'wrapscan' when the pattern isn't found. (Christian Wellenbrock) +Files: src/normal.c, src/search.c, src/test53.in, src/test53.ok + +Patch 7.4.111 +Problem: Memory leak in Python OptionsAssItem. (Ken Takata) +Solution: Call Py_XDECREF() where needed. (ZyX) +Files: src/if_py_both.h + +Patch 7.4.112 +Problem: The defaults for 'directory' and 'backupdir' on MS-Windows do not + include a directory that exists. +Solution: Use $TEMP. +Files: src/os_dos.h + +Patch 7.4.113 +Problem: MSVC static analysis gives warnings. +Solution: Avoid the warnings and avoid possible bugs. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.114 +Problem: New GNU make outputs messages about changing directory in another + format. +Solution: Recognize the new format. +Files: src/option.h + +Patch 7.4.115 +Problem: When using Zsh expanding ~abc doesn't work when the result + contains a space. +Solution: Off-by-one error in detecting the NUL. (Pavol Juhas) +Files: src/os_unix.c + +Patch 7.4.116 +Problem: When a mapping starts with a space, the typed space does not show + up for 'showcmd'. +Solution: Show "<20>". (Brook Hong) +Files: src/normal.c + +Patch 7.4.117 +Problem: Can't build with Cygwin/MingW and Perl 5.18. +Solution: Add a linker argument for the Perl library. (Cesar Romani) + Adjust CFLAGS and LIB. (Cesar Romani) + Move including inline.h further down. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_ming.mak, src/if_perl.xs + +Patch 7.4.118 +Problem: It's possible that redrawing the status lines causes + win_redr_custom() to be called recursively. +Solution: Protect against recursiveness. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 7.4.119 +Problem: Vim doesn't work well on OpenVMS. +Solution: Fix various problems. (Samuel Ferencik) +Files: src/os_unix.c, src/os_unix.h, src/os_vms.c + +Patch 7.4.120 (after 7.4.117) +Problem: Can't build with Perl 5.18 on Linux. (Lcd 47) +Solution: Add #ifdef. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.121 +Problem: Completion doesn't work for ":py3d" and ":py3f". (Bohr Shaw) +Solution: Skip over letters after ":py3". +Files: src/ex_docmd.c + +Patch 7.4.122 +Problem: Win32: When 'encoding' is set to "utf-8" and the active codepage + is cp932 then ":grep" and other commands don't work for multibyte + characters. +Solution: (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.123 +Problem: Win32: Getting user name does not use wide function. +Solution: Use GetUserNameW() if possible. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.124 +Problem: Win32: Getting host name does not use wide function. +Solution: Use GetComputerNameW() if possible. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.125 +Problem: Win32: Dealing with messages may not work for multibyte chars. +Solution: Use pDispatchMessage(). (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.126 +Problem: Compiler warnings for "const" and incompatible types. +Solution: Remove "const", add type cast. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.127 +Problem: Perl 5.18 on Unix doesn't work. +Solution: Move workaround to after including vim.h. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.128 +Problem: Perl 5.18 for MSVC doesn't work. +Solution: Add check in makefile and define __inline. (Ken Takata) +Files: src/Make_mvc.mak, src/if_perl.xs + +Patch 7.4.129 +Problem: getline(-1) returns zero. (mvxxc) +Solution: Return an empty string. +Files: src/eval.c + +Patch 7.4.130 +Problem: Relative line numbers mix up windows when using folds. +Solution: Use hasFoldingWin() instead of hasFolding(). (Lech Lorens) +Files: src/misc2.c + +Patch 7.4.131 +Problem: Syncbind causes E315 errors in some situations. (Liang Li) +Solution: Set and restore curbuf in ex_syncbind(). (Christian Brabandt) +Files: src/ex_docmd.c, src/testdir/test37.ok + +Patch 7.4.132 (after 7.4.122) +Problem: Win32: flags and inherit_handles arguments mixed up. +Solution: Swap the argument. (cs86661) +Files: src/os_win32.c + +Patch 7.4.133 +Problem: Clang warns for using NUL. +Solution: Change NUL to NULL. (Dominique Pelle) +Files: src/eval.c, src/misc2.c + +Patch 7.4.134 +Problem: Spurious space in MingW Makefile. +Solution: Remove the space. (Michael Soyka) +Files: src/Make_ming.mak + +Patch 7.4.135 +Problem: Missing dot in MingW test Makefile. +Solution: Add the dot. (Michael Soyka) +Files: src/testdir/Make_ming.mak + +Patch 7.4.136 (after 7.4.096) +Problem: MS-Windows: When saving a file with a UNC path the file becomes + read-only. +Solution: Don't mix up Win32 attributes and Unix attributes. (Ken Takata) +Files: src/os_mswin.c, src/os_win32.c + +Patch 7.4.137 +Problem: Cannot use IME with Windows 8 console. +Solution: Change the user of ReadConsoleInput() and PeekConsoleInput(). + (Nobuhiro Takasaki) +Files: src/os_win32.c + +Patch 7.4.138 (after 7.4.114) +Problem: Directory change messages are not recognized. +Solution: Fix using a character range literally. (Lech Lorens) +Files: src/option.h + +Patch 7.4.139 +Problem: Crash when using :cd in autocommand. (Fran莽ois Ingelrest) +Solution: Set w_localdir to NULL after freeing it. (Dominique Pelle) +Files: src/ex_docmd.c, src/window.c + +Patch 7.4.140 +Problem: Crash when wiping out buffer triggers autocommand that wipes out + only other buffer. +Solution: Do not delete the last buffer, make it empty. (Hirohito Higashi) +Files: src/buffer.c + +Patch 7.4.141 +Problem: Problems when building with Borland: st_mode is signed short; + can't build with Python; temp files not ignored by Mercurial; + building with DEBUG doesn't define _DEBUG. +Solution: Fix the problems. (Ken Takata) +Files: src/Make_bc5.mak, src/if_py_both.h, src/os_win32.c + +Patch 7.4.142 (after 7.4.137) +Problem: On MS-Windows 8 IME input doesn't work correctly. +Solution: Work around the problem. (Nobuhiro Takasaki) +Files: src/os_win32.c + +Patch 7.4.143 +Problem: TextChangedI is not triggered. +Solution: Reverse check for "ready". (lilydjwg) +Files: src/edit.c + +Patch 7.4.144 +Problem: MingW also supports intptr_t for OPEN_OH_ARGTYPE. +Solution: Adjust #ifdef. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.145 +Problem: getregtype() does not return zero for unknown register. +Solution: Adjust documentation: return empty string for unknown register. + Check the register name to be valid. (Yukihiro Nakadaira) +Files: runtime/doc/eval.txt, src/ops.c + +Patch 7.4.146 +Problem: When starting Vim with "-u NONE" v:oldfiles is NULL. +Solution: Set v:oldfiles to an empty list. (Yasuhiro Matsumoto) +Files: src/main.c + +Patch 7.4.147 +Problem: Cursor moves to wrong position when using "gj" after "$" and + virtual editing is active. +Solution: Make "gj" behave differently when virtual editing is active. + (Hirohito Higashi) +Files: src/normal.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.148 +Problem: Cannot build with Cygwin and X11. +Solution: Include Xwindows.h instead of windows.h. (Lech Lorens) +Files: src/mbyte.c + +Patch 7.4.149 +Problem: Get E685 error when assigning a function to an autoload variable. + (Yukihiro Nakadaira) +Solution: Instead of having a global no_autoload variable, pass an autoload + flag down to where it is used. (ZyX) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok, + src/testdir/test60.in, src/testdir/test60.ok, + src/testdir/sautest/autoload/footest.vim + +Patch 7.4.150 +Problem: :keeppatterns is not respected for :s. +Solution: Check the keeppatterns flag. (Yasuhiro Matsumoto) +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.4.151 +Problem: Python: slices with steps are not supported. +Solution: Support slices in Python vim.List. (ZyX) +Files: src/eval.c, src/if_py_both.h, src/if_python3.c, src/if_python.c, + src/proto/eval.pro, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.152 +Problem: Python: Cannot iterate over options. +Solution: Add options iterator. (ZyX) +Files: src/if_py_both.h, src/option.c, src/proto/option.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok, src/vim.h + +Patch 7.4.153 +Problem: Compiler warning for pointer type. +Solution: Add type cast. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.4.154 (after 7.4.149) +Problem: Still a problem with auto-loading. +Solution: Pass no_autoload to deref_func_name(). (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.4.155 +Problem: ":keeppatterns /pat" does not keep search pattern offset. +Solution: Restore the offset after doing the search. +Files: src/search.c, src/testdir/test14.in, src/testdir/test14.ok + +Patch 7.4.156 +Problem: Test file missing from distribution. +Solution: Add new directory to file list. +Files: Filelist + +Patch 7.4.157 +Problem: Error number used twice. (Yukihiro Nakadaira) +Solution: Change the one not referred in the docs. +Files: src/undo.c + +Patch 7.4.158 (after 7.4.045) +Problem: Pattern containing \zs is not handled correctly by substitute(). +Solution: Change how an empty match is skipped. (Yukihiro Nakadaira) +Files: src/eval.c, src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.4.159 +Problem: Completion hangs when scanning the current buffer after doing + keywords. (Christian Brabandt) +Solution: Set the first match position when starting to scan the current + buffer. +Files: src/edit.c + +Patch 7.4.160 +Problem: Win32: Crash when executing external command. +Solution: Only close the handle when it was created. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.161 +Problem: Crash in Python exception handling. +Solution: Only use exception variables if did_throw is set. (ZyX) +Files: src/if_py_both.h + +Patch 7.4.162 +Problem: Running tests in shadow dir doesn't work. +Solution: Add testdir/sautest to the shadow target. (James McCoy) +Files: src/Makefile + +Patch 7.4.163 (after 7.4.142) +Problem: MS-Windows input doesn't work properly on Windows 7 and earlier. +Solution: Add a check for Windows 8. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.164 (after 7.4.163) +Problem: Problem with event handling on Windows 8. +Solution: Ignore duplicate WINDOW_BUFFER_SIZE_EVENTs. (Nobuhiro Takasaki) +Files: src/os_win32.c + +Patch 7.4.165 +Problem: By default, after closing a buffer changes can't be undone. +Solution: In the example vimrc file set 'undofile'. +Files: runtime/vimrc_example.vim + +Patch 7.4.166 +Problem: Auto-loading a function for code that won't be executed. +Solution: Do not auto-load when evaluation is off. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.167 (after 7.4.149) +Problem: Fixes are not tested. +Solution: Add a test for not autoloading on assignment. (Yukihiro Nakadaira) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/sautest/autoload/Test104.vim, src/testdir/test104.in, + src/testdir/test104.ok + +Patch 7.4.168 +Problem: Can't compile with Ruby 2.1.0. +Solution: Add support for new GC. (Kohei Suzuki) +Files: src/if_ruby.c + +Patch 7.4.169 +Problem: ":sleep" puts cursor in the wrong column. (Liang Li) +Solution: Add the window offset. (Christian Brabandt) +Files: src/ex_docmd.c + +Patch 7.4.170 +Problem: Some help tags don't work with ":help". (Tim Chase) +Solution: Add exceptions. +Files: src/ex_cmds.c + +Patch 7.4.171 +Problem: Redo does not set v:count and v:count1. +Solution: Use a separate buffer for redo, so that we can set the counts when + performing redo. +Files: src/getchar.c, src/globals.h, src/normal.c, src/proto/getchar.pro, + src/structs.h + +Patch 7.4.172 +Problem: The blowfish code mentions output feedback, but the code is + actually doing cipher feedback. +Solution: Adjust names and comments. +Files: src/blowfish.c, src/fileio.c, src/proto/blowfish.pro, + src/memline.c + +Patch 7.4.173 +Problem: When using scrollbind the cursor can end up below the last line. + (mvxxc) +Solution: Reset w_botfill when scrolling up. (Christian Brabandt) +Files: src/move.c + +Patch 7.4.174 +Problem: Compiler warnings for Python interface. (Tony Mechelynck) +Solution: Add type casts, initialize variable. +Files: src/if_py_both.h + +Patch 7.4.175 +Problem: When a wide library function fails, falling back to the non-wide + function may do the wrong thing. +Solution: Check the platform, when the wide function is supported don't fall + back to the non-wide function. (Ken Takata) +Files: src/os_mswin.c, src/os_win32.c + +Patch 7.4.176 +Problem: Dictionary.update() throws an error when used without arguments. + Python programmers don't expect that. +Solution: Make Dictionary.update() without arguments do nothing. (ZyX) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test87.in + +Patch 7.4.177 +Problem: Compiler warning for unused variable. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/move.c + +Patch 7.4.178 +Problem: The J command does not update '[ and '] marks. (William Gardner) +Solution: Set the marks. (Christian Brabandt) +Files: src/ops.c + +Patch 7.4.179 +Problem: Warning for type-punned pointer. (Tony Mechelynck) +Solution: Use intermediate variable. +Files: src/if_py_both.h + +Patch 7.4.180 (after 7.4.174) +Problem: Older Python versions don't support %ld. +Solution: Use %d instead. (ZyX) +Files: src/if_py_both.h + +Patch 7.4.181 +Problem: When using 'pastetoggle' the status lines are not updated. (Samuel + Ferencik, Jan Christoph Ebersbach) +Solution: Update the status lines. (Nobuhiro Takasaki) +Files: src/getchar.c + +Patch 7.4.182 +Problem: Building with mzscheme and racket does not work. (David Chimay) +Solution: Adjust autoconf. (Sergey Khorev) +Files: src/configure.in, src/auto/configure + +Patch 7.4.183 +Problem: MSVC Visual Studio update not supported. +Solution: Add version number. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.4.184 +Problem: match() does not work properly with a {count} argument. +Solution: Compute the length once and update it. Quit the loop when at the + end. (Hirohito Higashi) +Files: src/eval.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.4.185 +Problem: Clang gives warnings. +Solution: Adjust how bigness is set. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.4.186 (after 7.4.085) +Problem: Insert in Visual mode sometimes gives incorrect results. + (Dominique Pelle) +Solution: Remember the original insert start position. (Christian Brabandt, + Dominique Pelle) +Files: src/edit.c, src/globals.h, src/ops.c, src/structs.h + +Patch 7.4.187 +Problem: Delete that crosses line break splits multibyte character. +Solution: Advance a character instead of a byte. (Cade Foster) +Files: src/normal.c, src/testdir/test69.in, src/testdir/test69.ok + +Patch 7.4.188 +Problem: SIZEOF_LONG clashes with similar defines in header files. +Solution: Rename to a name starting with VIM_. Also for SIZEOF_INT. +Files: src/if_ruby.c, src/vim.h, src/configure.in, src/auto/configure, + src/config.h.in, src/fileio.c, src/if_python.c, src/message.c, + src/spell.c, src/feature.h, src/os_os2_cfg.h, src/os_vms_conf.h, + src/os_win16.h, src/structs.h + +Patch 7.4.189 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/eval.c + +Patch 7.4.190 +Problem: Compiler warning for using %lld for off_t. +Solution: Add type cast. +Files: src/fileio.c + +Patch 7.4.191 +Problem: Escaping a file name for shell commands can't be done without a + function. +Solution: Add the :S file name modifier. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test105.in, src/testdir/test105.ok, + runtime/doc/cmdline.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, runtime/doc/options.txt, + runtime/doc/quickfix.txt, runtime/doc/usr_30.txt, + runtime/doc/usr_40.txt, runtime/doc/usr_42.txt, + runtime/doc/vi_diff.txt, src/eval.c, src/misc2.c, src/normal.c, + src/proto/misc2.pro + +Patch 7.4.192 +Problem: Memory leak when giving E853. +Solution: Free the argument. (Dominique Pelle) +Files: src/eval.c + +Patch 7.4.193 +Problem: Typos in messages. +Solution: "then" -> "than". (Dominique Pelle) +Files: src/if_py_both.h, src/spell.c + +Patch 7.4.194 +Problem: Can't build for Android. +Solution: Add #if condition. (Fredrik Fornwall) +Files: src/mbyte.c + +Patch 7.4.195 (after 7.4.193) +Problem: Python tests fail. +Solution: Change "then" to "than" in more places. (Dominique Pelle, Taro + Muraoka) +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.196 +Problem: Tests fail on Solaris 9 and 10. +Solution: Use "test -f" instead of "test -e". (Laurent Blume) +Files: src/testdir/Makefile + +Patch 7.4.197 +Problem: Various problems on VMS. +Solution: Fix several VMS problems. (Zoltan Arpadffy) +Files: runtime/doc/os_vms.txt, src/Make_vms.mms, src/fileio.c, + src/os_unix.c, src/os_unix.h, src/os_vms.c, src/os_vms_conf.h, + src/proto/os_vms.pro, src/testdir/Make_vms.mms, + src/testdir/test72.in, src/testdir/test77a.com, + src/testdir/test77a.in, src/testdir/test77a.ok src/undo.c + +Patch 7.4.198 +Problem: Can't build Vim with Perl when -Dusethreads is not specified for + building Perl, and building Vim with --enable-perlinterp=dynamic. +Solution: Adjust #ifdefs. (Yasuhiro Matsumoto) +Files: src/if_perl.xs + +Patch 7.4.199 +Problem: (issue 197) ]P doesn't paste over Visual selection. +Solution: Handle Visual mode specifically. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4.200 +Problem: Too many #ifdefs in the code. +Solution: Enable FEAT_VISUAL always, await any complaints +Files: src/feature.h + +Patch 7.4.201 +Problem: 'lispwords' is a global option. +Solution: Make 'lispwords' global-local. (Sung Pae) +Files: runtime/doc/options.txt, runtime/optwin.vim, src/buffer.c, + src/misc1.c, src/option.c, src/option.h, src/structs.h, + src/testdir/test100.in, src/testdir/test100.ok + +Patch 7.4.202 +Problem: MS-Windows: non-ASCII font names don't work. +Solution: Convert between the current code page and 'encoding'. (Ken Takata) +Files: src/gui_w48.c, src/os_mswin.c, src/proto/winclip.pro, + src/winclip.c + +Patch 7.4.203 +Problem: Parsing 'errorformat' is not correct. +Solution: Reset "multiignore" at the start of a multi-line message. (Lcd) +Files: src/quickfix.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test106.in, + src/testdir/test106.ok + +Patch 7.4.204 +Problem: A mapping where the second byte is 0x80 doesn't work. +Solution: Unescape before checking for incomplete multibyte char. (Nobuhiro + Takasaki) +Files: src/getchar.c, src/testdir/test75.in, src/testdir/test75.ok + +Patch 7.4.205 +Problem: ":mksession" writes command to move to second argument while it + does not exist. When it does exist the order might be wrong. +Solution: Use ":argadd" for each argument instead of using ":args" with a + list of names. (Nobuhiro Takasaki) +Files: src/ex_docmd.c + +Patch 7.4.206 +Problem: Compiler warnings on 64 bit Windows. +Solution: Add type casts. (Mike Williams) +Files: src/gui_w48.c, src/os_mswin.c + +Patch 7.4.207 +Problem: The cursor report sequence is sometimes not recognized and results + in entering replace mode. +Solution: Also check for the cursor report when not asked for. +Files: src/term.c + +Patch 7.4.208 +Problem: Mercurial picks up some files that are not distributed. +Solution: Add patterns to the ignore list. (Cade Forester) +Files: .hgignore + +Patch 7.4.209 +Problem: When repeating a filter command "%" and "#" are expanded. +Solution: Escape the command when storing for redo. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.4.210 +Problem: Visual block mode plus virtual edit doesn't work well with tabs. + (Liang Li) +Solution: Take coladd into account. (Christian Brabandt) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.211 +Problem: ":lu" is an abbreviation for ":lua", but it should be ":lunmap". + (ZyX) +Solution: Move "lunmap" to above "lua". +Files: src/ex_cmds.h + +Patch 7.4.212 (after 7.4.200) +Problem: Now that the +visual feature is always enabled the #ifdefs for it + are not useful. +Solution: Remove the checks for FEAT_VISUAL. +Files: src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/ex_cmds.c, src/ex_docmd.c, src/fold.c, src/getchar.c, + src/gui.c, src/gui_mac.c, src/gui_w48.c, src/main.c, src/mark.c, + src/menu.c, src/misc2.c, src/move.c, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/os_msdos.c, src/os_qnx.c, + src/quickfix.c, src/regexp.c, src/regexp_nfa.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/term.c, src/ui.c, + src/undo.c, src/version.c, src/window.c, src/feature.h, + src/globals.h, src/option.h, src/os_win32.h, src/structs.h + +Patch 7.4.213 +Problem: It's not possible to open a new buffer without creating a swap + file. +Solution: Add the ":noswapfile" modifier. (Christian Brabandt) +Files: runtime/doc/recover.txt, src/ex_cmds.h, src/ex_docmd.c, + src/memline.c, src/structs.h + +Patch 7.4.214 +Problem: Compilation problems on HP_nonStop (Tandem). +Solution: Add #defines. (Joachim Schmitz) +Files: src/vim.h + +Patch 7.4.215 +Problem: Inconsistency: ":sp foo" does not reload "foo", unless "foo" is + the current buffer. (Liang Li) +Solution: Do not reload the current buffer on a split command. +Files: runtime/doc/windows.txt, src/ex_docmd.c + +Patch 7.4.216 +Problem: Compiler warnings. (Tony Mechelynck) +Solution: Initialize variables, add #ifdef. +Files: src/term.c, src/os_unix.h + +Patch 7.4.217 +Problem: When src/auto/configure was updated, "make clean" would run + configure pointlessly. +Solution: Do not run configure for "make clean" and "make distclean" when + the make program supports $MAKECMDGOALS. (Ken Takata) +Files: src/Makefile + +Patch 7.4.218 +Problem: It's not easy to remove duplicates from a list. +Solution: Add the uniq() function. (Lcd) +Files: runtime/doc/change.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, runtime/doc/version7.txt, src/eval.c, + src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.219 +Problem: When 'relativenumber' or 'cursorline' are set the window is + redrawn much too often. (Patrick Hemmer, Dominique Pelle) +Solution: Check the VALID_CROW flag instead of VALID_WROW. +Files: src/move.c + +Patch 7.4.220 +Problem: Test 105 does not work in a shadow dir. (James McCoy) +Solution: Omit "src/" from the checked path. +Files: src/testdir/test105.in, src/testdir/test105.ok + +Patch 7.4.221 +Problem: Quickfix doesn't resize on ":copen 20". (issue 199) +Solution: Resize the window when requested. (Christian Brabandt) +Files: src/quickfix.c + +Patch 7.4.222 +Problem: The Ruby directory is constructed from parts. +Solution: Use 'rubyarchhdrdir' if it exists. (James McCoy) +Files: src/configure.in, src/auto/configure + +Patch 7.4.223 +Problem: Still using an older autoconf version. +Solution: Switch to autoconf 2.69. +Files: src/Makefile, src/configure.in, src/auto/configure + +Patch 7.4.224 +Problem: /usr/bin/grep on Solaris does not support -F. +Solution: Add configure check to find a good grep. (Danek Duvall) +Files: src/configure.in, src/auto/configure + +Patch 7.4.225 +Problem: Dynamic Ruby doesn't work on Solaris. +Solution: Always use the stubs. (Danek Duvall, Yukihiro Nakadaira) +Files: src/if_ruby.c + +Patch 7.4.226 (after 7.4.219) +Problem: Cursorline highlighting not redrawn when scrolling. (John + Marriott) +Solution: Check for required redraw in two places. +Files: src/move.c + +Patch 7.4.227 (after 7.4.225) +Problem: Can't build with Ruby 1.8. +Solution: Do include a check for the Ruby version. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.228 +Problem: Compiler warnings when building with Python 3.2. +Solution: Make type cast depend on Python version. (Ken Takata) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.4.229 +Problem: Using ":let" for listing variables and the second one is a curly + braces expression may fail. +Solution: Check for an "=" in a better way. (ZyX) +Files: src/eval.c, src/testdir/test104.in, src/testdir/test104.ok + +Patch 7.4.230 +Problem: Error when using ":options". +Solution: Fix the entry for 'lispwords'. (Kenichi Ito) +Files: runtime/optwin.vim + +Patch 7.4.231 +Problem: An error in ":options" is not caught by the tests. +Solution: Add a test for ":options". Set $VIMRUNTIME for the tests so that + it uses the current runtime files instead of the installed ones. +Files: src/Makefile, src/testdir/Makefile, src/testdir/test_options.in, + src/testdir/test_options.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.4.232 +Problem: ":%s/\n//" uses a lot of memory. (Aidan Marlin) +Solution: Turn this into a join command. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 7.4.233 +Problem: Escaping special characters for using "%" with a shell command is + inconsistent, parentheses are escaped but spaces are not. +Solution: Only escape "!". (Gary Johnson) +Files: src/ex_docmd.c + +Patch 7.4.234 +Problem: Can't get the command that was used to start Vim. +Solution: Add v:progpath. (Viktor Kojouharov) +Files: runtime/doc/eval.txt, src/eval.c, src/main.c, src/vim.h + +Patch 7.4.235 +Problem: It is not easy to get the full path of a command. +Solution: Add the exepath() function. +Files: src/eval.c, src/misc1.c, src/os_amiga.c, src/os_msdos.c, + src/os_unix.c, src/os_vms.c, src/os_win32.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_unix.pro, src/proto/os_win32.pro, + runtime/doc/eval.txt + +Patch 7.4.236 +Problem: It's not that easy to check the Vim patch version. +Solution: Make has("patch-7.4.123") work. (partly by Marc Weber) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test60.in, + src/testdir/test60.ok + +Patch 7.4.237 (after 7.4.236) +Problem: When some patches were not included has("patch-7.4.123") may return + true falsely. +Solution: Check for the specific patch number. +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.4.238 +Problem: Vim does not support the smack library. +Solution: Add smack support (Jose Bollo) +Files: src/config.h.in, src/configure.in, src/fileio.c, src/memfile.c, + src/os_unix.c, src/undo.c, src/auto/configure + +Patch 7.4.239 +Problem: ":e +" does not position cursor at end of the file. +Solution: Check for "+" being the last character (ZyX) +Files: src/ex_docmd.c + +Patch 7.4.240 +Problem: ":tjump" shows "\n" as "\\n". +Solution: Skip over "\" that escapes a backslash. (Gary Johnson) +Files: src/tag.c + +Patch 7.4.241 +Problem: The string returned by submatch() does not distinguish between a + NL from a line break and a NL that stands for a NUL character. +Solution: Add a second argument to return a list. (ZyX) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/regexp.pro, + src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok, + src/testdir/test80.in, src/testdir/test80.ok + +Patch 7.4.242 +Problem: getreg() does not distinguish between a NL used for a line break + and a NL used for a NUL character. +Solution: Add another argument to return a list. (ZyX) +Files: runtime/doc/eval.txt, src/eval.c src/ops.c, src/proto/ops.pro, + src/vim.h, src/Makefile, src/testdir/test_eval.in, + src/testdir/test_eval.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms + +Patch 7.4.243 +Problem: Cannot use setreg() to add text that includes a NUL. +Solution: Make setreg() accept a list. +Files: runtime/doc/eval.txt, src/eval.c, src/ops.c, src/proto/ops.pro, + src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.244 (after 7.4.238) +Problem: The smack feature causes stray error messages. +Solution: Remove the error messages. +Files: src/os_unix.c + +Patch 7.4.245 +Problem: Crash for "vim -u NONE -N -c '&&'". +Solution: Check for the pattern to be NULL. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.4.246 +Problem: Configure message for detecting smack are out of sequence. +Solution: Put the messages in the right place. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + +Patch 7.4.247 +Problem: When passing input to system() there is no way to keep NUL and + NL characters separate. +Solution: Optionally use a list for the system() input. (ZyX) +Files: runtime/doc/eval.txt, src/eval.c + +Patch 7.4.248 +Problem: Cannot distinguish between NL and NUL in output of system(). +Solution: Add systemlist(). (ZyX) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_cmds2.c, src/misc1.c, + src/proto/misc1.pro + +Patch 7.4.249 +Problem: Using setreg() with a list of numbers does not work. +Solution: Use a separate buffer for numbers. (ZyX) +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.250 +Problem: Some test files missing from distribution. +Solution: Add pattern for newly added tests. +Files: Filelist + +Patch 7.4.251 +Problem: Crash when BufAdd autocommand wipes out the buffer. +Solution: Check for buffer to still be valid. Postpone freeing the buffer + structure. (Hirohito Higashi) +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c, src/globals.h + +Patch 7.4.252 +Problem: Critical error in GTK, removing timer twice. +Solution: Clear the timer after removing it. (James McCoy) +Files: src/gui_gtk_x11.c + +Patch 7.4.253 +Problem: Crash when using cpp syntax file with pattern using external + match. (Havard Garnes) +Solution: Discard match when end column is before start column. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.4.254 +Problem: Smack support detection is incomplete. +Solution: Check for attr/xattr.h and specific macro. +Files: src/configure.in, src/auto/configure + +Patch 7.4.255 +Problem: Configure check for smack doesn't work with all shells. (David + Larson) +Solution: Remove spaces in set command. +Files: src/configure.in, src/auto/configure + +Patch 7.4.256 (after 7.4.248) +Problem: Using systemlist() may cause a crash and does not handle NUL + characters properly. +Solution: Increase the reference count, allocate memory by length. (Yasuhiro + Matsumoto) +Files: src/eval.c + +Patch 7.4.257 +Problem: Compiler warning, possibly for mismatch in parameter name. +Solution: Rename the parameter in the declaration. +Files: src/ops.c + +Patch 7.4.258 +Problem: Configure fails if $CC contains options. +Solution: Remove quotes around $CC. (Paul Barker) +Files: src/configure.in, src/auto/configure + +Patch 7.4.259 +Problem: Warning for misplaced "const". +Solution: Move the "const". (Yukihiro Nakadaira) +Files: src/os_unix.c + +Patch 7.4.260 +Problem: It is possible to define a function with a colon in the name. It + is possible to define a function with a lower case character if a + "#" appears after the name. +Solution: Disallow using a colon other than with "s:". Ignore "#" after the + name. +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_eval.in, + src/testdir/test_eval.ok + +Patch 7.4.261 +Problem: When updating the window involves a regexp pattern, an interactive + substitute to replace a "\n" with a line break fails. (Ingo + Karkat) +Solution: Set reg_line_lbr in vim_regsub() and vim_regsub_multi(). +Files: src/regexp.c, src/testdir/test79.in, src/testdir/test79.ok + +Patch 7.4.262 +Problem: Duplicate code in regexec(). +Solution: Add line_lbr flag to regexec_nl(). +Files: src/regexp.c, src/regexp_nfa.c, src/regexp.h + +Patch 7.4.263 +Problem: GCC 4.8 compiler warning for hiding a declaration (Fran莽ois Gannaz) +Solution: Remove the second declaration. +Files: src/eval.c + +Patch 7.4.264 (after 7.4.260) +Problem: Can't define a function starting with "g:". Can't assign a + funcref to a buffer-local variable. +Solution: Skip "g:" at the start of a function name. Don't check for colons + when assigning to a variable. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.265 (after 7.4.260) +Problem: Can't call a global function with "g:" in an expression. +Solution: Skip the "g:" when looking up the function. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.266 +Problem: Test 62 fails. +Solution: Set the language to C. (Christian Brabandt) +Files: src/testdir/test62.in + +Patch 7.4.267 (after 7.4.178) +Problem: The '[ mark is in the wrong position after "gq". (Ingo Karkat) +Solution: Add the setmark argument to do_join(). (Christian Brabandt) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_autoformat_join.in, + src/testdir/test_autoformat_join.ok, src/Makefile, src/edit.c, + src/ex_cmds.c, src/ex_docmd.c, src/normal.c, src/ops.c, + src/proto/ops.pro + +Patch 7.4.268 +Problem: Using exists() on a funcref for a script-local function does not + work. +Solution: Translate <SNR> to the special byte sequence. Add a test. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + src/testdir/test_eval_func.vim, Filelist + +Patch 7.4.269 +Problem: CTRL-U in Insert mode does not work after using a cursor key. + (Pine Wu) +Solution: Use the original insert start position. (Christian Brabandt) +Files: src/edit.c, src/testdir/test29.in, src/testdir/test29.ok + +Patch 7.4.270 +Problem: Comparing pointers instead of the string they point to. +Solution: Use strcmp(). (Ken Takata) +Files: src/gui_gtk_x11.c + +Patch 7.4.271 +Problem: Compiler warning on 64 bit windows. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + +Patch 7.4.272 +Problem: Using just "$" does not cause an error message. +Solution: Check for empty environment variable name. (Christian Brabandt) +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.273 +Problem: "make autoconf" and "make reconfig" may first run configure and + then remove the output. +Solution: Add these targets to the exceptions. (Ken Takata) +Files: src/Makefile + +Patch 7.4.274 +Problem: When doing ":update" just before running an external command that + changes the file, the timestamp may be unchanged and the file + is not reloaded. +Solution: Also check the file size. +Files: src/fileio.c + +Patch 7.4.275 +Problem: When changing the type of a sign that hasn't been placed there is + no error message. +Solution: Add an error message. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.4.276 +Problem: The fish shell is not supported. +Solution: Use begin/end instead of () for fish. (Andy Russell) +Files: src/ex_cmds.c, src/misc1.c, src/option.c, src/proto/misc1.pro + +Patch 7.4.277 +Problem: Using ":sign unplace *" may leave the cursor in the wrong position + (Christian Brabandt) +Solution: Update the cursor position when removing all signs. +Files: src/buffer.c + +Patch 7.4.278 +Problem: list_remove() conflicts with function defined in Sun header file. +Solution: Rename the function. (Richard Palo) +Files: src/eval.c, src/if_lua.c, src/if_py_both.h, src/proto/eval.pro + +Patch 7.4.279 +Problem: globpath() returns a string, making it difficult to get a list of + matches. (Greg Novack) +Solution: Add an optional argument like with glob(). (Adnan Zafar) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_getln.c, src/misc1.c, + src/misc2.c, src/proto/ex_getln.pro, src/proto/misc2.pro, + src/testdir/test97.in, src/testdir/test97.ok + +Patch 7.4.280 +Problem: When using a session file the relative position of the cursor is + not restored if there is another tab. (Nobuhiro Takasaki) +Solution: Update w_wrow before calculating the fraction. +Files: src/window.c + +Patch 7.4.281 +Problem: When a session file has more than one tabpage and 'showtabline' is + one the positions may be slightly off. +Solution: Set 'showtabline' to two while positioning windows. +Files: src/ex_docmd.c + +Patch 7.4.282 (after 7.4.279) +Problem: Test 97 fails on Mac. +Solution: Do not ignore case in file names. (Jun Takimoto) +Files: src/testdir/test97.in + +Patch 7.4.283 (after 7.4.276) +Problem: Compiler warning about unused variable. (Charles Cooper) +Solution: Move the variable inside the #if block. +Files: src/ex_cmds.c + +Patch 7.4.284 +Problem: Setting 'langmap' in the modeline can cause trouble. E.g. mapping + ":" breaks many commands. (Jens-Wolfhard Schicke-Uffmann) +Solution: Disallow setting 'langmap' from the modeline. +Files: src/option.c + +Patch 7.4.285 +Problem: When 'relativenumber' is set and deleting lines or undoing that, + line numbers are not always updated. (Robert Arkwright) +Solution: (Christian Brabandt) +Files: src/misc1.c + +Patch 7.4.286 +Problem: Error messages are inconsistent. (ZyX) +Solution: Change "Lists" to "list". +Files: src/eval.c + +Patch 7.4.287 +Problem: Patches for .hgignore don't work, since the file is not in the + distribution. +Solution: Add .hgignore to the distribution. Will be effective with the + next version. +Files: Filelist + +Patch 7.4.288 +Problem: When 'spellfile' is set the screen is not redrawn. +Solution: Redraw when updating the spelling info. (Christian Brabandt) +Files: src/spell.c + +Patch 7.4.289 +Problem: Pattern with repeated backreference does not match with new regexp + engine. (Urtica Dioica) +Solution: Also check the end of a submatch when deciding to put a state in + the state list. +Files: src/testdir/test64.in, src/testdir/test64.ok, src/regexp_nfa.c + +Patch 7.4.290 +Problem: A non-greedy match followed by a branch is too greedy. (Ingo + Karkat) +Solution: Add NFA_MATCH when it is already in the state list if the position + differs. +Files: src/testdir/test64.in, src/testdir/test64.ok, src/regexp_nfa.c + +Patch 7.4.291 +Problem: Compiler warning for int to pointer of different size when DEBUG + is defined. +Solution: use smsg() instead of EMSG3(). +Files: src/regexp.c + +Patch 7.4.292 +Problem: Searching for "a" does not match accented "a" with new regexp + engine, does match with old engine. (David B眉rgin) + "ca" does not match "ca" with accented "a" with either engine. +Solution: Change the old engine, check for following composing character + also for single-byte patterns. +Files: src/regexp.c, src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.4.293 +Problem: It is not possible to ignore composing characters at a specific + point in a pattern. +Solution: Add the %C item. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test95.in, + src/testdir/test95.ok, runtime/doc/pattern.txt + +Patch 7.4.294 (7.4.293) +Problem: Test files missing from patch. +Solution: Patch the test files. +Files: src/testdir/test95.in, src/testdir/test95.ok + +Patch 7.4.295 +Problem: Various typos, bad white space and unclear comments. +Solution: Fix typos. Improve white space. Update comments. +Files: src/testdir/test49.in, src/macros.h, src/screen.c, src/structs.h, + src/gui_gtk_x11.c, src/os_unix.c + +Patch 7.4.296 +Problem: Can't run tests on Solaris. +Solution: Change the way VIMRUNTIME is set. (Laurent Blume) +Files: src/testdir/Makefile + +Patch 7.4.297 +Problem: Memory leak from result of get_isolated_shell_name(). +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_cmds.c, src/misc1.c + +Patch 7.4.298 +Problem: Can't have a funcref start with "t:". +Solution: Add "t" to the list of accepted names. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.4.299 +Problem: When running configure twice DYNAMIC_PYTHON_DLL may become empty. +Solution: Use AC_CACHE_VAL. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.4.300 +Problem: The way config.cache is removed doesn't always work. +Solution: Always remove config.cache. (Ken Takata) +Files: src/Makefile + +Patch 7.4.301 (after 7.4.280) +Problem: Still a scrolling problem when loading a session file. +Solution: Fix off-by-one mistake. (Nobuhiro Takasaki) +Files: src/window.c + +Patch 7.4.302 +Problem: Signs placed with 'foldcolumn' set don't show up after filler + lines. +Solution: Take filler lines into account. (Olaf Dabrunz) +Files: src/screen.c + +Patch 7.4.303 +Problem: When using double-width characters the text displayed on the + command line is sometimes truncated. +Solution: Reset the string length. (Nobuhiro Takasaki) +Files: src/screen.c + +Patch 7.4.304 +Problem: Cannot always use Python with Vim. +Solution: Add the manifest to the executable. (Jacques Germishuys) +Files: src/Make_mvc.mak + +Patch 7.4.305 +Problem: Making 'ttymouse' empty after the xterm version was requested + causes problems. (Elijah Griffin) +Solution: Do not check for DEC mouse sequences when the xterm version was + requested. Also don't request the xterm version when DEC mouse + was enabled. +Files: src/term.c, src/os_unix.c, src/proto/term.pro, src/globals.h + +Patch 7.4.306 +Problem: getchar(0) does not return Esc. +Solution: Do not wait for an Esc sequence to be complete. (Yasuhiro + Matsumoto) +Files: src/eval.c, src/getchar.c + +Patch 7.4.307 (after 7.4.305) +Problem: Can't build without the +termresponse feature. +Solution: Add proper #ifdefs. +Files: src/os_unix.c, src/term.c + +Patch 7.4.308 +Problem: When using ":diffsplit" on an empty file the cursor is displayed + on the command line. +Solution: Limit the value of w_topfill. +Files: src/diff.c + +Patch 7.4.309 +Problem: When increasing the size of the lower window, the upper window + jumps back to the top. (Ron Aaron) +Solution: Change setting the topline. (Nobuhiro Takasaki) +Files: src/window.c + +Patch 7.4.310 +Problem: getpos()/setpos() don't include curswant. +Solution: Add a fifth number when getting/setting the cursor. +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + runtime/doc/eval.txt + +Patch 7.4.311 +Problem: Can't use winrestview to only restore part of the view. +Solution: Handle missing items in the dict. (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.312 +Problem: Cannot figure out what argument list is being used for a window. +Solution: Add the arglistid() function. (Marcin Szamotulski) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c, + src/ex_docmd.c, src/globals.h, src/structs.h, src/main.c + +Patch 7.4.313 (after 7.4.310) +Problem: Changing the return value of getpos() causes an error. (Jie Zhu) +Solution: Revert getpos() and add getcurpos(). +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok, + runtime/doc/eval.txt + +Patch 7.4.314 +Problem: Completion messages can get in the way of a plugin. +Solution: Add 'c' flag to 'shortmess' option. (Shougo Matsu) +Files: runtime/doc/options.txt, src/edit.c, src/option.h, src/screen.c + +Patch 7.4.315 (after 7.4.309) +Problem: Fixes for computation of topline not tested. +Solution: Add test. (Hirohito Higashi) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test107.in, src/testdir/test107.ok + +Patch 7.4.316 +Problem: Warning from 64-bit compiler. +Solution: Add type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 7.4.317 +Problem: Crash when starting gvim. Issue 230. +Solution: Check for a pointer to be NULL. (Christian Brabandt) +Files: src/window.c + +Patch 7.4.318 +Problem: Check for whether a highlight group has settings ignores fg and bg + color settings. +Solution: Also check cterm and GUI color settings. (Christian Brabandt) +Files: src/syntax.c + +Patch 7.4.319 +Problem: Crash when putting zero bytes on the clipboard. +Solution: Do not support the utf8_atom target when not using a Unicode + encoding. (Naofumi Honda) +Files: src/ui.c + +Patch 7.4.320 +Problem: Possible crash when an BufLeave autocommand deletes the buffer. +Solution: Check for the window pointer being valid. Postpone freeing the + window until autocommands are done. (Yasuhiro Matsumoto) +Files: src/buffer.c, src/fileio.c, src/globals.h, src/window.c + +Patch 7.4.321 +Problem: Can't build with strawberry perl 5.20 + mingw-w64-4.9.0. +Solution: Define save_strlen. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.322 +Problem: Using "msgfmt" is hard coded, cannot use "gmsgfmt". +Solution: Use the msgfmt command found by configure. (Danek Duvall) +Files: src/config.mk.in, src/po/Makefile + +Patch 7.4.323 +Problem: substitute() with zero width pattern breaks multibyte character. +Solution: Take multibyte character size into account. (Yukihiro Nakadaira) +Files: src/eval.c src/testdir/test69.in, src/testdir/test69.ok + +Patch 7.4.324 +Problem: In Ex mode, cyrillic characters are not handled. (Stas Malavin) +Solution: Support multibyte characters in Ex mode. (Yukihiro Nakadaira) +Files: src/ex_getln.c + +Patch 7.4.325 +Problem: When starting the gui and changing the window size the status line + may not be drawn correctly. +Solution: Catch new_win_height() being called recursively. (Christian + Brabandt) +Files: src/window.c + +Patch 7.4.326 +Problem: Can't build Tiny version. (Elimar Riesebieter) +Solution: Add #ifdef. +Files: src/window.c + +Patch 7.4.327 +Problem: When 'verbose' is set to display the return value of a function, + may get E724 repeatedly. +Solution: Do not give an error for verbose messages. Abort conversion to + string after an error. +Files: src/eval.c + +Patch 7.4.328 +Problem: Selection of inner block is inconsistent. +Solution: Skip indent not only for '}' but all parens. (Tom McDonald) +Files: src/search.c + +Patch 7.4.329 +Problem: When moving the cursor and then switching to another window the + previous window isn't scrolled. (Yukihiro Nakadaira) +Solution: Call update_topline() before leaving the window. (Christian + Brabandt) +Files: src/window.c + +Patch 7.4.330 +Problem: Using a regexp pattern to highlight a specific position can be + slow. +Solution: Add matchaddpos() to highlight specific positions efficiently. + (Alexey Radkov) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, + runtime/plugin/matchparen.vim, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, + src/testdir/test63.in, src/testdir/test63.ok, src/window.c + +Patch 7.4.331 +Problem: Relative numbering not updated after a linewise yank. Issue 235. +Solution: Redraw after the yank. (Christian Brabandt) +Files: src/ops.c + +Patch 7.4.332 +Problem: GTK: When a sign icon doesn't fit exactly there can be ugly gaps. +Solution: Scale the sign to fit when the aspect ratio is not too far off. + (Christian Brabandt) +Files: src/gui_gtk_x11.c + +Patch 7.4.333 +Problem: Compiler warning for unused function. +Solution: Put the function inside the #ifdef. +Files: src/screen.c + +Patch 7.4.334 (after 7.4.330) +Problem: Uninitialized variables, causing some problems. +Solution: Initialize the variables. (Dominique Pelle) +Files: src/screen.c, src/window.c + +Patch 7.4.335 +Problem: No digraph for the new rouble sign. +Solution: Add the digraphs =R and =P. +Files: src/digraph.c, runtime/doc/digraph.txt + +Patch 7.4.336 +Problem: Setting 'history' to a big value causes out-of-memory errors. +Solution: Limit the value to 10000. (Hirohito Higashi) +Files: runtime/doc/options.txt, src/option.c + +Patch 7.4.337 +Problem: When there is an error preparing to edit the command line, the + command won't be executed. (Hirohito Higashi) +Solution: Reset did_emsg before editing. +Files: src/ex_getln.c + +Patch 7.4.338 +Problem: Cannot wrap lines taking indent into account. +Solution: Add the 'breakindent' option. (many authors, final improvements by + Christian Brabandt) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, runtime/optwin.vim, + src/buffer.c, src/charset.c, src/edit.c, src/ex_getln.c, + src/getchar.c, src/misc1.c, src/misc2.c, src/ops.c, src/option.c, + src/option.h, src/proto/charset.pro, src/proto/misc1.pro, + src/proto/option.pro, src/screen.c, src/structs.h, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok, + src/ui.c, src/version.c + +Patch 7.4.339 +Problem: Local function is available globally. +Solution: Add "static". +Files: src/option.c, src/proto/option.pro + +Patch 7.4.340 +Problem: Error from sed about illegal bytes when installing Vim. +Solution: Prepend LC_ALL=C. (Itchyny) +Files: src/installman.sh + +Patch 7.4.341 +Problem: sort() doesn't handle numbers well. +Solution: Add an argument to specify sorting on numbers. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test55.in, + src/testdir/test55.ok + +Patch 7.4.342 +Problem: Clang gives warnings. +Solution: Add an else block. (Dominique Pelle) +Files: src/gui_beval.c + +Patch 7.4.343 +Problem: matchdelete() does not always update the right lines. +Solution: Fix off-by-one error. (Ozaki Kiichi) +Files: src/window.c + +Patch 7.4.344 +Problem: Unnecessary initializations and other things related to + matchaddpos(). +Solution: Code cleanup. (Alexey Radkov) +Files: runtime/doc/eval.txt, src/screen.c, src/window.c + +Patch 7.4.345 (after 7.4.338) +Problem: Indent is not updated when deleting indent. +Solution: Remember changedtick. +Files: src/misc1.c + +Patch 7.4.346 (after 7.4.338) +Problem: Indent is not updated when changing 'breakindentopt'. (itchyny) +Solution: Do not cache "brishift". (Christian Brabandt) +Files: src/misc1.c + +Patch 7.4.347 +Problem: test55 fails on some systems. +Solution: Remove the elements that all result in zero and can end up in an + arbitrary position. +Files: src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.348 +Problem: When using "J1" in 'cinoptions' a line below a continuation line + gets too much indent. +Solution: Fix parentheses in condition. +Files: src/misc1.c + +Patch 7.4.349 +Problem: When there are matches to highlight the whole window is redrawn, + which is slow. +Solution: Only redraw everything when lines were inserted or deleted. + Reset b_mod_xlines when needed. (Alexey Radkov) +Files: src/screen.c, src/window.c + +Patch 7.4.350 +Problem: Using C indenting for Javascript does not work well for a {} block + inside parentheses. +Solution: When looking for a matching paren ignore one that is before the + start of a {} block. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.351 +Problem: sort() is not stable. +Solution: When the items are identical, compare the pointers. +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.352 +Problem: With 'linebreak' a tab causes a missing line break. +Solution: Count a tab for what it's worth also for shorter lines. + (Christian Brabandt) +Files: src/charset.c + +Patch 7.4.353 +Problem: 'linebreak' doesn't work with the 'list' option. +Solution: Make it work. (Christian Brabandt) +Files: runtime/doc/options.txt, src/charset.c, src/screen.c, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok + +Patch 7.4.354 +Problem: Compiler warning. +Solution: Change NUL to NULL. (Ken Takata) +Files: src/screen.c + +Patch 7.4.355 +Problem: Several problems with Javascript indenting. +Solution: Improve Javascript indenting. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.356 +Problem: Mercurial does not ignore memfile_test. (Daniel Hahler) +Solution: Add memfile_test to ignored files, remove trailing spaces. +Files: .hgignore + +Patch 7.4.357 +Problem: After completion some characters are not redrawn. +Solution: Clear the command line unconditionally. (Jacob Niehus) +Files: src/edit.c + +Patch 7.4.358 (after 7.4.351) +Problem: Sort is not always stable. +Solution: Add an index instead of relying on the pointer to remain the same. + Idea by Jun Takimoto. +Files: src/eval.c + +Patch 7.4.359 +Problem: When 'ttymouse' is set to 'uxterm' the xterm version is not + requested. (Tomas Janousek) +Solution: Do not mark uxterm as a conflict mouse and add + resume_get_esc_sequence(). +Files: src/term.c, src/os_unix.c, src/proto/term.pro + +Patch 7.4.360 +Problem: In a regexp pattern a "$" followed by \v or \V is not seen as the + end-of-line. +Solution: Handle the situation. (Ozaki Kiichi) +Files: src/regexp.c + +Patch 7.4.361 +Problem: Lots of flickering when filling the preview window for 'omnifunc'. +Solution: Disable redrawing. (Hirohito Higashi) +Files: src/popupmnu.c + +Patch 7.4.362 +Problem: When matchaddpos() uses a length smaller than the number of bytes + in the (last) character the highlight continues until the end of + the line. +Solution: Change condition from equal to larger-or-equal. +Files: src/screen.c + +Patch 7.4.363 +Problem: In Windows console typing 0xCE does not work. +Solution: Convert 0xCE to K_NUL 3. (Nobuhiro Takasaki et al.) +Files: src/os_win32.c, src/term.c + +Patch 7.4.364 +Problem: When the viminfo file can't be renamed there is no error message. + (Vladimir Berezhnoy) +Solution: Check for the rename to fail. +Files: src/ex_cmds.c + +Patch 7.4.365 +Problem: Crash when using ":botright split" when there isn't much space. +Solution: Add a check for the minimum width/height. (Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.4.366 +Problem: Can't run the linebreak test on MS-Windows. +Solution: Fix the output file name. (Taro Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.4.367 (after 7.4.357) +Problem: Other solution for redrawing after completion. +Solution: Schedule a window redraw instead of just clearing the command + line. (Jacob Niehus) +Files: src/edit.c + +Patch 7.4.368 +Problem: Restoring the window sizes after closing the command line window + doesn't work properly if there are nested splits. +Solution: Restore the sizes twice. (Hirohito Higashi) +Files: src/window.c + +Patch 7.4.369 +Problem: Using freed memory when exiting while compiled with EXITFREE. +Solution: Set curwin to NULL and check for that. (Dominique Pelle) +Files: src/buffer.c, src/window.c + +Patch 7.4.370 +Problem: Linebreak test fails when encoding is not utf-8. (Danek Duvall) +Solution: Split the test in a single byte one and a utf-8 one. (Christian + Brabandt) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_listlbr.in, src/testdir/test_listlbr.ok, + src/testdir/test_listlbr_utf8.in, src/testdir/test_listlbr_utf8.ok + +Patch 7.4.371 +Problem: When 'linebreak' is set control characters are not correctly + displayed. (Kimmy Lindvall) +Solution: Set n_extra. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.372 +Problem: When 'winminheight' is zero there might not be one line for the + current window. +Solution: Change the size computations. (Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.4.373 +Problem: Compiler warning for unused argument and unused variable. +Solution: Add UNUSED. Move variable inside #ifdef. +Files: src/charset.c, src/window.c + +Patch 7.4.374 +Problem: Character after "fb" command not mapped if it might be a composing + character. +Solution: Don't disable mapping when looking for a composing character. + (Jacob Niehus) +Files: src/normal.c + +Patch 7.4.375 +Problem: Test 63 fails when run with GUI-only Vim. +Solution: Add guibg attributes. (suggested by Mike Soyka) +Files: src/testdir/test63.in + +Patch 7.4.376 (after 7.4.367) +Problem: Popup menu flickers too much. +Solution: Remove the forced redraw. (Hirohito Higashi) +Files: src/edit.c + +Patch 7.4.377 +Problem: When 'equalalways' is set a split may report "no room" even though + there is plenty of room. +Solution: Compute the available room properly. (Yukihiro Nakadaira) +Files: src/window.c + +Patch 7.4.378 +Problem: Title of quickfix list is not kept for setqflist(list, 'r'). +Solution: Keep the title. Add a test. (Lcd) +Files: src/quickfix.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_qf_title.in, + src/testdir/test_qf_title.ok + +Patch 7.4.379 +Problem: Accessing freed memory after using setqflist(list, 'r'). (Lcd) +Solution: Reset qf_index. +Files: src/quickfix.c + +Patch 7.4.380 +Problem: Loading python may cause Vim to exit. +Solution: Avoid loading the "site" module. (Taro Muraoka) +Files: src/if_python.c + +Patch 7.4.381 +Problem: Get u_undo error when backspacing in Insert mode deletes more than + one line break. (Ayberk Ozgur) +Solution: Also decrement Insstart.lnum. +Files: src/edit.c + +Patch 7.4.382 +Problem: Mapping characters may not work after typing Esc in Insert mode. +Solution: Fix the noremap flags for inserted characters. (Jacob Niehus) +Files: src/getchar.c + +Patch 7.4.383 +Problem: Bad interaction between preview window and omnifunc. +Solution: Avoid redrawing the status line. (Hirohito Higashi) +Files: src/popupmnu.c + +Patch 7.4.384 +Problem: Test 102 fails when compiled with small features. +Solution: Source small.vim. (Jacob Niehus) +Files: src/testdir/test102.in + +Patch 7.4.385 +Problem: When building with tiny or small features building the .mo files + fails. +Solution: In autoconf do not setup for building the .mo files when it would + fail. +Files: src/configure.in, src/auto/configure + +Patch 7.4.386 +Problem: When splitting a window the changelist position is wrong. +Solution: Copy the changelist position. (Jacob Niehus) +Files: src/window.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_changelist.in, + src/testdir/test_changelist.ok + +Patch 7.4.387 +Problem: "4gro" replaces one character then executes "ooo". (Urtica Dioica) +Solution: Write the ESC in the second stuff buffer. +Files: src/getchar.c, src/proto/getchar.pro, src/edit.c, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_insertcount.in, src/testdir/test_insertcount.ok + +Patch 7.4.388 +Problem: With 'linebreak' set and 'list' unset a Tab is not counted + properly. (Kent Sibilev) +Solution: Check the 'list' option. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + +Patch 7.4.389 +Problem: Still sometimes Vim enters Replace mode when starting up. +Solution: Use a different solution in detecting the termresponse and + location response. (Hayaki Saito) +Files: src/globals.h, src/os_unix.c, src/term.c, src/proto/term.pro + +Patch 7.4.390 +Problem: Advancing pointer over end of a string. +Solution: Init quote character to -1 instead of zero. (Dominique Pelle) +Files: src/misc1.c + +Patch 7.4.391 +Problem: No 'cursorline' highlighting when the cursor is on a line with + diff highlighting. (Benjamin Fritz) +Solution: Combine the highlight attributes. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.392 +Problem: Not easy to detect type of command line window. +Solution: Add the getcmdwintype() function. (Jacob Niehus) +Files: src/eval.c + +Patch 7.4.393 +Problem: Text drawing on newer MS-Windows systems is suboptimal. Some + multibyte characters are not displayed, even though the same font + in Notepad can display them. (Srinath Avadhanula) +Solution: Add the 'renderoptions' option to enable DirectX drawing. (Taro + Muraoka) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/various.txt, src/Make_cyg.mak, src/Make_ming.mak, + src/Make_mvc.mak, src/eval.c, src/gui_dwrite.cpp, + src/gui_dwrite.h, src/gui_w32.c, src/gui_w48.c, src/option.c, + src/option.h, src/version.c, src/vim.h, src/proto/gui_w32.pro + +Patch 7.4.394 (after 7.4.393) +Problem: When using DirectX last italic character is incomplete. +Solution: Add one to the number of cells. (Ken Takata) +Files: src/gui_w32.c + +Patch 7.4.395 (after 7.4.355) +Problem: C indent is wrong below an if with wrapped condition followed by + curly braces. (Trevor Powell) +Solution: Make a copy of tryposBrace. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.396 +Problem: When 'clipboard' is "unnamed", :g/pat/d is very slow. (Praful) +Solution: Only set the clipboard after the last delete. (Christian Brabandt) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/globals.h, + src/ops.c, src/proto/ui.pro, src/ui.c + +Patch 7.4.397 +Problem: Matchparen only uses the topmost syntax item. +Solution: Go through the syntax stack to find items. (James McCoy) + Also use getcurpos() when possible. +Files: runtime/plugin/matchparen.vim + +Patch 7.4.398 (after 7.4.393) +Problem: Gcc error for the argument of InterlockedIncrement() and + InterlockedDecrement(). (Axel Bender) +Solution: Remove "unsigned" from the cRefCount_ declaration. +Files: src/gui_dwrite.cpp + +Patch 7.4.399 +Problem: Encryption implementation is messy. Blowfish encryption has a + weakness. +Solution: Refactor the encryption, store the state in an allocated struct + instead of using a save/restore mechanism. Introduce the + "blowfish2" method, which does not have the weakness and encrypts + the whole undo file. (largely by David Leadbeater) +Files: runtime/doc/editing.txt, runtime/doc/options.txt, src/Makefile, + src/blowfish.c, src/crypt.c, src/crypt_zip.c, src/ex_docmd.c, + src/fileio.c, src/globals.h, src/main.c, src/memline.c, + src/misc2.c, src/option.c, src/proto.h, src/proto/blowfish.pro, + src/proto/crypt.pro, src/proto/crypt_zip.pro, + src/proto/fileio.pro, src/proto/misc2.pro, src/structs.h, + src/undo.c, src/testdir/test71.in, src/testdir/test71.ok, + src/testdir/test71a.in, src/testdir/test72.in, + src/testdir/test72.ok + +Patch 7.4.400 +Problem: List of distributed files is incomplete. +Solution: Add recently added files. +Files: Filelist + +Patch 7.4.401 (after 7.4.399) +Problem: Can't build on MS-Windows. +Solution: Include the new files in all the Makefiles. +Files: src/Make_bc3.mak, src/Make_bc5.mak, src/Make_cyg.mak, + src/Make_dice.mak, src/Make_djg.mak, src/Make_ivc.mak, + src/Make_manx.mak, src/Make_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_os2.mak, src/Make_sas.mak, + Make_vms.mms + +Patch 7.4.402 +Problem: Test 72 crashes under certain conditions. (Kazunobu Kuriyama) +Solution: Clear the whole bufinfo_T early. +Files: src/undo.c + +Patch 7.4.403 +Problem: Valgrind reports errors when running test 72. (Dominique Pelle) +Solution: Reset the local 'cryptmethod' option before storing the seed. + Set the seed in the memfile even when there is no block0 yet. +Files: src/fileio.c, src/option.c, src/memline.c + +Patch 7.4.404 +Problem: Windows 64 bit compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/crypt.c, src/undo.c + +Patch 7.4.405 +Problem: Screen updating is slow when using matches. +Solution: Do not use the ">=" as in patch 7.4.362, check the lnum. +Files: src/screen.c, src/testdir/test63.in, src/testdir/test63.ok + +Patch 7.4.406 +Problem: Test 72 and 100 fail on MS-Windows. +Solution: Set fileformat to unix in the tests. (Taro Muraoka) +Files: src/testdir/test72.in, src/testdir/test100.in + +Patch 7.4.407 +Problem: Inserting text for Visual block mode, with cursor movement, + repeats the wrong text. (Aleksandar Ivanov) +Solution: Reset the update_Insstart_orig flag. (Christian Brabandt) +Files: src/edit.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.408 +Problem: Visual block insert breaks a multibyte character. +Solution: Calculate the position properly. (Yasuhiro Matsumoto) +Files: src/ops.c, src/testdir/test_utf8.in, src/testdir/test_utf8.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.409 +Problem: Can't build with Perl on Fedora 20. +Solution: Find xsubpp in another directory. (Michael Henry) +Files: src/Makefile, src/config.mk.in, src/configure.in, + src/auto/configure + +Patch 7.4.410 +Problem: Fold does not open after search when there is a CmdwinLeave + autocommand. +Solution: Restore KeyTyped. (Jacob Niehus) +Files: src/ex_getln.c + +Patch 7.4.411 +Problem: "foo bar" sorts before "foo" with sort(). (John Little) +Solution: Avoid putting quotes around strings before comparing them. +Files: src/eval.c + +Patch 7.4.412 +Problem: Can't build on Windows XP with MSVC. +Solution: Add SUBSYSTEM_VER to the Makefile. (Yongwei Wu) +Files: src/Make_mvc.mak, src/INSTALLpc.txt + +Patch 7.4.413 +Problem: MS-Windows: Using US international keyboard layout, inserting dead + key by pressing space does not always work. Issue 250. +Solution: Let MS-Windows translate the message. (John Wellesz) +Files: src/gui_w48.c + +Patch 7.4.414 +Problem: Cannot define a command only when it's used. +Solution: Add the CmdUndefined autocommand event. (partly by Yasuhiro + Matsumoto) +Files: runtime/doc/autocmd.txt, src/ex_docmd.c, src/fileio.c, + src/proto/fileio.pro + +Patch 7.4.415 (after 7.4.414) +Problem: Cannot build. Warning for shadowed variable. (John Little) +Solution: Add missing change. Remove declaration. +Files: src/vim.h, src/ex_docmd.c + +Patch 7.4.416 +Problem: Problem with breakindent/showbreak and tabs. +Solution: Handle tabs differently. (Christian Brabandt) +Files: src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok, + src/charset.c + +Patch 7.4.417 +Problem: After splitting a window and setting 'breakindent' the default + minimum with is not respected. +Solution: Call briopt_check() when copying options to a new window. +Files: src/option.c, src/proto/option.pro, + src/testdir/test_breakindent.in + +Patch 7.4.418 +Problem: When leaving ":append" the cursor shape is like in Insert mode. + (Jacob Niehus) +Solution: Do not have State set to INSERT when calling getline(). +Files: src/ex_cmds.c + +Patch 7.4.419 +Problem: When part of a list is locked it's possible to make changes. +Solution: Check if any of the list items is locked before make a change. + (ZyX) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.420 +Problem: It's not obvious how to add a new test. +Solution: Add a README file. (Christian Brabandt) +Files: src/testdir/README.txt + +Patch 7.4.421 +Problem: Crash when searching for "\ze*". (Urtica Dioica) +Solution: Disallow a multi after \ze and \zs. +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.422 +Problem: When using conceal with linebreak some text is not displayed + correctly. (Gr眉ner Gimpel) +Solution: Check for conceal mode when using linebreak. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.423 +Problem: expand("$shell") does not work as documented. +Solution: Do not escape the $ when expanding environment variables. +Files: src/os_unix.c, src/misc1.c, src/vim.h + +Patch 7.4.424 +Problem: Get ml_get error when using Python to delete lines in a buffer + that is not in a window. issue 248. +Solution: Do not try adjusting the cursor for a different buffer. +Files: src/if_py_both.h + +Patch 7.4.425 +Problem: When 'showbreak' is used "gj" may move to the wrong position. + (Nazri Ramliy) +Solution: Adjust virtcol when 'showbreak' is set. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4.426 +Problem: README File missing from list of files. +Solution: Update the list of files. +Files: Filelist + +Patch 7.4.427 +Problem: When an InsertCharPre autocommand executes system() typeahead may + be echoed and messes up the display. (Jacob Niehus) +Solution: Do not set cooked mode when invoked from ":silent". +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.428 +Problem: executable() may return a wrong result on MS-Windows. +Solution: Change the way SearchPath() is called. (Yasuhiro Matsumoto, Ken + Takata) +Files: src/os_win32.c + +Patch 7.4.429 +Problem: Build fails with fewer features. (Elimar Riesebieter) +Solution: Add #ifdef. +Files: src/normal.c + +Patch 7.4.430 +Problem: test_listlbr fails when compiled with normal features. +Solution: Check for the +conceal feature. +Files: src/testdir/test_listlbr.in + +Patch 7.4.431 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/ex_docmd.c + +Patch 7.4.432 +Problem: When the startup code expands command line arguments, setting + 'encoding' will not properly convert the arguments. +Solution: Call get_cmd_argsW() early in main(). (Yasuhiro Matsumoto) +Files: src/os_win32.c, src/main.c, src/os_mswin.c + +Patch 7.4.433 +Problem: Test 75 fails on MS-Windows. +Solution: Use ":normal" instead of feedkeys(). (Michael Soyka) +Files: src/testdir/test75.in + +Patch 7.4.434 +Problem: gettabvar() is not consistent with getwinvar() and getbufvar(). +Solution: Return a dict with all variables when the varname is empty. + (Yasuhiro Matsumoto) +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test91.in, + src/testdir/test91.ok + +Patch 7.4.435 +Problem: Line formatting behaves differently when 'linebreak' is set. + (mvxxc) +Solution: Disable 'linebreak' temporarily. (Christian Brabandt) +Files: src/edit.c + +Patch 7.4.436 +Problem: ml_get error for autocommand that moves the cursor of the current + window. +Solution: Check the cursor position after switching back to the current + buffer. (Christian Brabandt) +Files: src/fileio.c + +Patch 7.4.437 +Problem: New and old regexp engine are not consistent. +Solution: Also give an error for "\ze*" for the old regexp engine. +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.4.438 +Problem: Cached values for 'cino' not reset for ":set all&". +Solution: Call parse_cino(). (Yukihiro Nakadaira) +Files: src/option.c + +Patch 7.4.439 +Problem: Duplicate message in message history. Some quickfix messages + appear twice. (Gary Johnson) +Solution: Do not reset keep_msg too early. (Hirohito Higashi) +Files: src/main.c + +Patch 7.4.440 +Problem: Omni complete popup drawn incorrectly. +Solution: Call validate_cursor() instead of check_cursor(). (Hirohito + Higashi) +Files: src/edit.c + +Patch 7.4.441 +Problem: Endless loop and other problems when 'cedit' is set to CTRL-C. +Solution: Do not call ex_window() when ex_normal_busy or got_int was set. + (Yasuhiro Matsumoto) +Files: src/ex_getln.c + +Patch 7.4.442 (after 7.4.434) +Problem: Using uninitialized variable. +Solution: Pass the first window of the tabpage. +Files: src/eval.c + +Patch 7.4.443 +Problem: Error reported by ubsan when running test 72. +Solution: Add type cast to unsigned. (Dominique Pelle) +Files: src/undo.c + +Patch 7.4.444 +Problem: Reversed question mark not recognized as punctuation. (Issue 258) +Solution: Add the Supplemental Punctuation range. +Files: src/mbyte.c + +Patch 7.4.445 +Problem: Clipboard may be cleared on startup. +Solution: Set clip_did_set_selection to -1 during startup. (Christian + Brabandt) +Files: src/main.c, src/ui.c + +Patch 7.4.446 +Problem: In some situations, when setting up an environment to trigger an + autocommand, the environment is not properly restored. +Solution: Check the return value of switch_win() and call restore_win() + always. (Daniel Hahler) +Files: src/eval.c, src/misc2.c, src/window.c + +Patch 7.4.447 +Problem: Spell files from Hunspell may generate a lot of errors. +Solution: Add the IGNOREEXTRA flag. +Files: src/spell.c, runtime/doc/spell.txt + +Patch 7.4.448 +Problem: Using ETO_IGNORELANGUAGE causes problems. +Solution: Remove this flag. (Paul Moore) +Files: src/gui_w32.c + +Patch 7.4.449 +Problem: Can't easily close the help window. (Chris Gaal) +Solution: Add ":helpclose". (Christian Brabandt) +Files: runtime/doc/helphelp.txt, runtime/doc/index.txt, src/ex_cmds.c, + src/ex_cmds.h, src/proto/ex_cmds.pro + +Patch 7.4.450 +Problem: Not all commands that edit another buffer support the +cmd + argument. +Solution: Add the +cmd argument to relevant commands. (Marcin Szamotulski) +Files: runtime/doc/windows.txt, src/ex_cmds.h, src/ex_docmd.c + +Patch 7.4.451 +Problem: Calling system() with empty input gives an error for writing the + temp file. +Solution: Do not try writing if the string length is zero. (Olaf Dabrunz) +Files: src/eval.c + +Patch 7.4.452 +Problem: Can't build with tiny features. (Tony Mechelynck) +Solution: Use "return" instead of "break". +Files: src/ex_cmds.c + +Patch 7.4.453 +Problem: Still can't build with tiny features. +Solution: Add #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.454 +Problem: When using a Visual selection of multiple words and doing CTRL-W_] + it jumps to the tag matching the word under the cursor, not the + selected text. (Patrick hemmer) +Solution: Do not reset Visual mode. (idea by Christian Brabandt) +Files: src/window.c + +Patch 7.4.455 +Problem: Completion for :buf does not use 'wildignorecase'. (Akshay H) +Solution: Pass the 'wildignorecase' flag around. +Files: src/buffer.c + +Patch 7.4.456 +Problem: 'backupcopy' is global, cannot write only some files in a + different way. +Solution: Make 'backupcopy' global-local. (Christian Brabandt) +Files: runtime/doc/options.txt, src/buffer.c, src/fileio.c, src/option.c, + src/option.h, src/proto/option.pro, src/structs.h + +Patch 7.4.457 +Problem: Using getchar() in an expression mapping may result in + K_CURSORHOLD, which can't be recognized. +Solution: Add the <CursorHold> key. (Hirohito Higashi) +Files: src/misc2.c + +Patch 7.4.458 +Problem: Issue 252: Cursor moves in a zero-height window. +Solution: Check for zero height. (idea by Christian Brabandt) +Files: src/move.c + +Patch 7.4.459 +Problem: Can't change the icon after building Vim. +Solution: Load the icon from a file on startup. (Yasuhiro Matsumoto) +Files: src/gui_w32.c, src/os_mswin.c, src/os_win32.c, + src/proto/os_mswin.pro + +Patch 7.4.460 (after 7.4.454) +Problem: Can't build without the quickfix feature. (Erik Falor) +Solution: Add a #ifdef. +Files: src/window.c + +Patch 7.4.461 +Problem: MS-Windows: When collate is on the number of copies is too high. +Solution: Only set the collated/uncollated count when collate is on. + (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 7.4.462 +Problem: Setting the local value of 'backupcopy' empty gives an error. + (Peter Mattern) +Solution: When using an empty value set the flags to zero. (Hirohito + Higashi) +Files: src/option.c + +Patch 7.4.463 +Problem: Test 86 and 87 may hang on MS-Windows. +Solution: Call inputrestore() after inputsave(). (Ken Takata) +Files: src/testdir/test86.in, src/testdir/test87.in + +Patch 7.4.464 (after 7.4.459) +Problem: Compiler warning. +Solution: Add type cast. (Ken Takata) +Files: src/gui_w32.c + +Patch 7.4.465 (after 7.4.016) +Problem: Crash when expanding a very long string. +Solution: Use wcsncpy() instead of wcscpy(). (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.466 (after 7.4.460) +Problem: CTRL-W } does not open preview window. (Erik Falor) +Solution: Don't set g_do_tagpreview for CTRL-W }. +Files: src/window.c + +Patch 7.4.467 +Problem: 'linebreak' does not work well together with Visual mode. +Solution: Disable 'linebreak' while applying an operator. Fix the test. + (Christian Brabandt) +Files: src/normal.c, src/screen.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.468 +Problem: Issue 26: CTRL-C does not interrupt after it was mapped and then + unmapped. +Solution: Reset mapped_ctrl_c. (Christian Brabandt) +Files: src/getchar.c + +Patch 7.4.469 (after 7.4.467) +Problem: Can't build with MSVC. (Ken Takata) +Solution: Move the assignment after the declarations. +Files: src/normal.c + +Patch 7.4.470 +Problem: Test 11 and 100 do not work properly on Windows. +Solution: Avoid using feedkeys(). (Ken Takata) +Files: src/testdir/Make_dos.mak, src/testdir/test11.in, + src/testdir/test100.in + +Patch 7.4.471 +Problem: MS-Windows: When printer name contains multibyte, the name is + displayed as ???. +Solution: Convert the printer name from the active codepage to 'encoding'. + (Yasuhiro Matsumoto) +Files: src/os_mswin.c + +Patch 7.4.472 +Problem: The "precedes" entry in 'listchars' will be drawn when 'showbreak' + is set and 'list' is not. +Solution: Only draw this character when 'list' is on. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.473 +Problem: Cursor movement is incorrect when there is a number/sign/fold + column and 'sbr' is displayed. +Solution: Adjust the column for 'sbr'. (Christian Brabandt) +Files: src/charset.c + +Patch 7.4.474 +Problem: AIX compiler can't handle // comment. Issue 265. +Solution: Remove that line. +Files: src/regexp_nfa.c + +Patch 7.4.475 +Problem: Can't compile on a system where Xutf8SetWMProperties() is not in + the X11 library. Issue 265. +Solution: Add a configure check. +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/os_unix.c + +Patch 7.4.476 +Problem: MingW: compiling with "XPM=no" doesn't work. +Solution: Check for the "no" value. (KF Leong) Also for Cygwin. (Ken + Takata) +Files: src/Make_ming.mak, src/Make_cyg.mak + +Patch 7.4.477 +Problem: When using ":%diffput" and the other file is empty an extra empty + line remains. +Solution: Set the buf_empty flag. +Files: src/diff.c + +Patch 7.4.478 +Problem: Using byte length instead of character length for 'showbreak'. +Solution: Compute the character length. (Marco Hinz) +Files: src/charset.c + +Patch 7.4.479 +Problem: MS-Windows: The console title can be wrong. +Solution: Take the encoding into account. When restoring the title use the + right function. (Yasuhiro Matsumoto) +Files: src/os_mswin.c, src/os_win32.c + +Patch 7.4.480 (after 7.4.479) +Problem: MS-Windows: Can't build. +Solution: Remove goto, use a flag instead. +Files: src/os_win32.c + +Patch 7.4.481 (after 7.4.471) +Problem: Compiler warning on MS-Windows. +Solution: Add type casts. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.482 +Problem: When 'balloonexpr' results in a list, the text has a trailing + newline. (Lcd) +Solution: Remove one trailing newline. +Files: src/gui_beval.c + +Patch 7.4.483 +Problem: A 0x80 byte is not handled correctly in abbreviations. +Solution: Unescape special characters. Add a test. (Christian Brabandt) +Files: src/getchar.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + +Patch 7.4.484 (after 7.4.483) +Problem: Compiler warning on MS-Windows. (Ken Takata) +Solution: Add type cast. +Files: src/getchar.c + +Patch 7.4.485 (after 7.4.484) +Problem: Abbreviations don't work. (Toothpik) +Solution: Move the length computation inside the for loop. Compare against + the unescaped key. +Files: src/getchar.c + +Patch 7.4.486 +Problem: Check for writing to a yank register is wrong. +Solution: Negate the check. (Zyx). Also clean up the #ifdefs. +Files: src/ex_docmd.c, src/ex_cmds.h + +Patch 7.4.487 +Problem: ":sign jump" may use another window even though the file is + already edited in the current window. +Solution: First check if the file is in the current window. (James McCoy) +Files: src/window.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_signs.in, + src/testdir/test_signs.ok + +Patch 7.4.488 +Problem: test_mapping fails for some people. +Solution: Set the 'encoding' option. (Ken Takata) +Files: src/testdir/test_mapping.in + +Patch 7.4.489 +Problem: Cursor movement still wrong when 'lbr' is set and there is a + number column. (Hirohito Higashi) +Solution: Add correction for number column. (Hiroyuki Takagi) +Files: src/charset.c + +Patch 7.4.490 +Problem: Cannot specify the buffer to use for "do" and "dp", making them + useless for three-way diff. +Solution: Use the count as the buffer number. (James McCoy) +Files: runtime/doc/diff.txt, src/diff.c, src/normal.c, src/proto/diff.pro + +Patch 7.4.491 +Problem: When winrestview() has a negative "topline" value there are + display errors. +Solution: Correct a negative value to 1. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.4.492 +Problem: In Insert mode, after inserting a newline that inserts a comment + leader, CTRL-O moves to the right. (ZyX) Issue 57. +Solution: Correct the condition for moving the cursor back to the NUL. + (Christian Brabandt) +Files: src/edit.c, src/testdir/test4.in, src/testdir/test4.ok + +Patch 7.4.493 +Problem: A TextChanged autocommand is triggered when saving a file. + (William Gardner) +Solution: Update last_changedtick after calling unchanged(). (Christian + Brabandt) +Files: src/fileio.c + +Patch 7.4.494 +Problem: Cursor shape is wrong after a CompleteDone autocommand. +Solution: Update the cursor and mouse shape after ":normal" restores the + state. (Jacob Niehus) +Files: src/ex_docmd.c + +Patch 7.4.495 +Problem: XPM isn't used correctly in the Cygwin Makefile. +Solution: Include the rules like in Make_ming.mak. (Ken Takata) +Files: src/Make_cyg.mak + +Patch 7.4.496 +Problem: Many lines are both in Make_cyg.mak and Make_ming.mak +Solution: Move the common parts to one file. (Ken Takata) +Files: src/INSTALLpc.txt, src/Make_cyg.mak, src/Make_cyg_ming.mak, + src/Make_ming.mak, src/Make_mvc.mak, Filelist + +Patch 7.4.497 +Problem: With some regexp patterns the NFA engine uses many states and + becomes very slow. To the user it looks like Vim freezes. +Solution: When the number of states reaches a limit fall back to the old + engine. (Christian Brabandt) +Files: runtime/doc/options.txt, src/Makefile, src/regexp.c, src/regexp.h, + src/regexp_nfa.c, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Makefile, src/testdir/samples/re.freeze.txt, + src/testdir/bench_re_freeze.in, src/testdir/bench_re_freeze.vim, + Filelist + +Patch 7.4.498 (after 7.4.497) +Problem: Typo in DOS makefile. +Solution: Change exists to exist. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.4.499 +Problem: substitute() can be slow with long strings. +Solution: Store a pointer to the end, instead of calling strlen() every + time. (Ozaki Kiichi) +Files: src/eval.c + +Patch 7.4.500 +Problem: Test 72 still fails once in a while. +Solution: Don't set 'fileformat' to unix, reset it. (Ken Takata) +Files: src/testdir/test72.in + +Patch 7.4.501 (after 7.4.497) +Problem: Typo in file pattern. +Solution: Insert a slash and remove a dot. +Files: Filelist + +Patch 7.4.502 +Problem: Language mapping also applies to mapped characters. +Solution: Add the 'langnoremap' option, when on 'langmap' does not apply to + mapped characters. (Christian Brabandt) +Files: runtime/doc/options.txt, runtime/vimrc_example.vim, src/macros.h, + src/option.c, src/option.h + +Patch 7.4.503 +Problem: Cannot append a list of lines to a file. +Solution: Add the append option to writefile(). (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, src/Makefile, src/eval.c, + src/testdir/test_writefile.in, src/testdir/test_writefile.ok + +Patch 7.4.504 +Problem: Restriction of the MS-Windows installer that the path must end in + "Vim" prevents installing more than one version. +Solution: Remove the restriction. (Tim Lebedkov) +Files: nsis/gvim.nsi + +Patch 7.4.505 +Problem: On MS-Windows when 'encoding' is a double-byte encoding a file + name longer than MAX_PATH bytes but shorter than that in + characters causes problems. +Solution: Fail on file names longer than MAX_PATH bytes. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.506 +Problem: MS-Windows: Cannot open a file with 259 characters. +Solution: Fix off-by-one error. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.507 (after 7.4.496) +Problem: Building with MingW and Perl. +Solution: Remove quotes. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.508 +Problem: When generating ja.sjis.po the header is not correctly adjusted. +Solution: Check for the right header string. (Ken Takata) +Files: src/po/sjiscorr.c + +Patch 7.4.509 +Problem: Users are not aware their encryption is weak. +Solution: Give a warning when prompting for the key. +Files: src/crypt.c, src/ex_docmd.c, src/fileio.c, src/main.c, + src/proto/crypt.pro + +Patch 7.4.510 +Problem: "-fwrapv" argument breaks use of cproto. +Solution: Remove the alphabetic arguments in a drastic way. +Files: src/Makefile + +Patch 7.4.511 +Problem: Generating proto for if_ruby.c uses type not defined elsewhere. +Solution: Do not generate a prototype for + rb_gc_writebarrier_unprotect_promoted() +Files: src/if_ruby.c + +Patch 7.4.512 +Problem: Cannot generate prototypes for Win32 files and VMS. +Solution: Add typedefs and #ifdef +Files: src/os_win32.c, src/gui_w32.c, src/os_vms.c + +Patch 7.4.513 +Problem: Crash because reference count is wrong for list returned by + getreg(). +Solution: Increment the reference count. (Kimmy Lindvall) +Files: src/eval.c + +Patch 7.4.514 (after 7.4.492) +Problem: Memory access error. (Dominique Pelle) +Solution: Update tpos. (Christian Brabandt) +Files: src/edit.c + +Patch 7.4.515 +Problem: In a help buffer the global 'foldmethod' is used. (Paul Marshall) +Solution: Reset 'foldmethod' when starting to edit a help file. Move the + code to a separate function. +Files: src/ex_cmds.c + +Patch 7.4.516 +Problem: Completing a function name containing a # does not work. Issue + 253. +Solution: Recognize the # character. (Christian Brabandt) +Files: src/eval.c + +Patch 7.4.517 +Problem: With a wrapping line the cursor may not end up in the right place. + (Nazri Ramliy) +Solution: Adjust n_extra for a Tab that wraps. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.518 +Problem: Using status line height in width computations. +Solution: Use one instead. (Hirohito Higashi) +Files: src/window.c + +Patch 7.4.519 (after 7.4.497) +Problem: Crash when using syntax highlighting. +Solution: When regprog is freed and replaced, store the result. +Files: src/buffer.c, src/regexp.c, src/syntax.c, src/spell.c, + src/ex_cmds2.c, src/fileio.c, src/proto/fileio.pro, + src/proto/regexp.pro, src/os_unix.c + +Patch 7.4.520 +Problem: Sun PCK locale is not recognized. +Solution: Add PCK in the table. (Keiichi Oono) +Files: src/mbyte.c + +Patch 7.4.521 +Problem: When using "vep" a mark is moved to the next line. (Maxi Padulo, + Issue 283) +Solution: Decrement the line number. (Christian Brabandt) +Files: src/ops.c + +Patch 7.4.522 +Problem: Specifying wrong buffer size for GetLongPathName(). +Solution: Use the actual size. (Ken Takata) +Files: src/eval.c + +Patch 7.4.523 +Problem: When the X11 server is stopped and restarted, while Vim is kept in + the background, copy/paste no longer works. (Issue 203) +Solution: Setup the clipboard again. (Christian Brabandt) +Files: src/os_unix.c + +Patch 7.4.524 +Problem: When using ":ownsyntax" spell checking is messed up. (Issue 78) +Solution: Use the window-local option values. (Christian Brabandt) +Files: src/option.c, src/syntax.c + +Patch 7.4.525 +Problem: map() leaks memory when there is an error in the expression. +Solution: Call clear_tv(). (Christian Brabandt) +Files: src/eval.c + +Patch 7.4.526 +Problem: matchstr() fails on long text. (Daniel Hahler) +Solution: Return NFA_TOO_EXPENSIVE from regexec_nl(). (Christian Brabandt) +Files: src/regexp.c + +Patch 7.4.527 +Problem: Still confusing regexp failure and NFA_TOO_EXPENSIVE. +Solution: NFA changes equivalent of 7.4.526. +Files: src/regexp_nfa.c + +Patch 7.4.528 +Problem: Crash when using matchadd() (Yasuhiro Matsumoto) +Solution: Copy the match regprog. +Files: src/screen.c + +Patch 7.4.529 +Problem: No test for what 7.4.517 fixes. +Solution: Adjust the tests for breakindent. (Christian Brabandt) +Files: src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok + +Patch 7.4.530 +Problem: Many commands take a count or range that is not using line + numbers. +Solution: For each command specify what kind of count it uses. For windows, + buffers and arguments have "$" and "." have a relevant meaning. + (Marcin Szamotulski) +Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt, + runtime/doc/windows.txt, src/Makefile, src/ex_cmds.h, + src/ex_docmd.c, src/testdir/Make_amiga.mak + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_argument_count.in, + src/testdir/test_argument_count.ok, + src/testdir/test_close_count.in, src/testdir/test_close_count.ok, + src/window.c + +Patch 7.4.531 +Problem: Comments about parsing an Ex command are wrong. +Solution: Correct the step numbers. +Files: src/ex_docmd.c + +Patch 7.4.532 +Problem: When using 'incsearch' "2/pattern/e" highlights the first match. +Solution: Move the code to set extra_col inside the loop for count. (Ozaki + Kiichi) +Files: src/search.c + +Patch 7.4.533 +Problem: ":hardcopy" leaks memory in case of errors. +Solution: Free memory in all code paths. (Christian Brabandt) +Files: src/hardcopy.c + +Patch 7.4.534 +Problem: Warnings when compiling if_ruby.c. +Solution: Avoid the warnings. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.535 (after 7.4.530) +Problem: Can't build with tiny features. +Solution: Add #ifdefs and skip a test. +Files: src/ex_docmd.c, src/testdir/test_argument_count.in + +Patch 7.4.536 +Problem: Test 63 fails when using a black&white terminal. +Solution: Add attributes for a non-color terminal. (Christian Brabandt) +Files: src/testdir/test63.in + +Patch 7.4.537 +Problem: Value of v:hlsearch reflects an internal variable. +Solution: Make the value reflect whether search highlighting is actually + displayed. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/testdir/test101.in, + src/testdir/test101.ok, src/vim.h + +Patch 7.4.538 +Problem: Tests fail with small features plus Python. +Solution: Disallow weird combination of options. Do not set "fdm" when + folding is disabled. +Files: src/option.c, src/ex_cmds.c, src/configure.in, src/auto/configure, + src/feature.h + +Patch 7.4.539 (after 7.4.530) +Problem: Crash when computing buffer count. Problem with range for user + commands. Line range wrong in Visual area. +Solution: Avoid segfault in compute_buffer_local_count(). Check for + CMD_USER when checking type of range. (Marcin Szamotulski) +Files: runtime/doc/windows.txt, src/ex_docmd.c + +Patch 7.4.540 (after 7.4.539) +Problem: Cannot build with tiny and small features. (Taro Muraoka) +Solution: Add #ifdef around CMD_USER. +Files: src/ex_docmd.c + +Patch 7.4.541 +Problem: Crash when doing a range assign. +Solution: Check for NULL pointer. (Yukihiro Nakadaira) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.542 +Problem: Using a range for window and buffer commands has a few problems. + Cannot specify the type of range for a user command. +Solution: Add the -addr argument for user commands. Fix problems. (Marcin + Szamotulski) +Files: src/testdir/test_command_count.in, + src/testdir/test_command_count.ok src/testdir/Make_amiga.mak + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, runtime/doc/map.txt, src/Makefile, + src/ex_cmds.h, src/ex_docmd.c, src/ex_getln.c, + src/proto/ex_docmd.pro, src/vim.h, + +Patch 7.4.543 +Problem: Since patch 7.4.232 "1,3s/\n//" joins two lines instead of three. + (Eliseo Mart铆nez) Issue 287 +Solution: Correct the line count. (Christian Brabandt) + Also set the last used search pattern. +Files: src/ex_cmds.c, src/search.c, src/proto/search.pro + +Patch 7.4.544 +Problem: Warnings for unused arguments when compiling with a combination of + features. +Solution: Add "UNUSED". +Files: src/if_cscope.c + +Patch 7.4.545 +Problem: Highlighting for multi-line matches is not correct. +Solution: Stop highlight at the end of the match. (Hirohito Higashi) +Files: src/screen.c + +Patch 7.4.546 +Problem: Repeated use of vim_snprintf() with a number. +Solution: Move these vim_snprintf() calls into a function. +Files: src/window.c + +Patch 7.4.547 +Problem: Using "vit" does not select a multibyte character at the end + correctly. +Solution: Advance the cursor over the multibyte character. (Christian + Brabandt) +Files: src/search.c + +Patch 7.4.548 +Problem: Compilation fails with native version of MinGW-w64, because + it doesn't have x86_64-w64-mingw32-windres.exe. +Solution: Use windres instead. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.549 +Problem: Function name not recognized correctly when inside a function. +Solution: Don't check for an alpha character. (Ozaki Kiichi) +Files: src/eval.c, src/testdir/test_nested_function.in, + src/testdir/test_nested_function.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.4.550 +Problem: curs_rows() function is always called with the second argument + false. +Solution: Remove the argument. (Christian Brabandt) + validate_botline_win() can then also be removed. +Files: src/move.c + +Patch 7.4.551 +Problem: "ygn" may yank too much. (Fritzophrenic) Issue 295. +Solution: Check the width of the next match. (Christian Brabandt) +Files: src/search.c, src/testdir/test53.in, src/testdir/test53.ok + +Patch 7.4.552 +Problem: Langmap applies to Insert mode expression mappings. +Solution: Check for Insert mode. (Daniel Hahler) +Files: src/getchar.c, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + +Patch 7.4.553 +Problem: Various small issues. +Solution: Fix those issues. +Files: src/ex_cmds.h, src/gui.h, src/message.c, src/testdir/test39.in, + src/proto/eval.pro, src/proto/misc1.pro, src/proto/ops.pro, + src/proto/screen.pro, src/proto/window.pro. src/os_unix.c, + src/Make_vms.mms, src/proto/os_vms.pro, src/INSTALL + +Patch 7.4.554 +Problem: Missing part of patch 7.4.519. +Solution: Copy back regprog after calling vim_regexec. +Files: src/quickfix.c + +Patch 7.4.555 +Problem: test_close_count may fail for some combination of features. +Solution: Require normal features. +Files: src/testdir/test_close_count.in + +Patch 7.4.556 +Problem: Failed commands in Python interface not handled correctly. +Solution: Restore window and buffer on failure. +Files: src/if_py_both.h + +Patch 7.4.557 +Problem: One more small issue. +Solution: Update function proto. +Files: src/proto/window.pro + +Patch 7.4.558 +Problem: When the X server restarts Vim may get stuck. +Solution: Destroy the application context and create it again. (Issue 203) +Files: src/os_unix.c + +Patch 7.4.559 +Problem: Appending a block in the middle of a tab does not work correctly + when virtualedit is set. +Solution: Decrement spaces and count, don't reset them. (James McCoy) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.560 +Problem: Memory leak using :wviminfo. Issue 296. +Solution: Free memory when needed. (idea by Christian Brabandt) +Files: src/ops.c + +Patch 7.4.561 +Problem: Ex range handling is wrong for buffer-local user commands. +Solution: Check for CMD_USER_BUF. (Marcin Szamotulski) +Files: src/ex_docmd.c, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + +Patch 7.4.562 +Problem: Segfault with wide screen and error in 'rulerformat'. (Ingo Karkat) +Solution: Check there is enough space. (Christian Brabandt) +Files: src/buffer.c, src/screen.c + +Patch 7.4.563 +Problem: No test for replacing on a tab in Virtual replace mode. +Solution: Add a test. (Elias Diem) +Files: src/testdir/test48.in, src/testdir/test48.ok + +Patch 7.4.564 +Problem: FEAT_OSFILETYPE is used even though it's never defined. +Solution: Remove the code. (Christian Brabandt) +Files: src/fileio.c + +Patch 7.4.565 +Problem: Ranges for arguments, buffers, tabs, etc. are not checked to be + valid but limited to the maximum. This can cause the wrong thing + to happen. +Solution: Give an error for an invalid value. (Marcin Szamotulski) + Use windows range for ":wincmd". +Files: src/ex_docmd.c, src/ex_cmds.h, src/testdir/test62.in, + src/testdir/test_argument_count.in, + src/testdir/test_argument_count.ok, + src/testdir/test_close_count.in, + src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + +Patch 7.4.566 +Problem: :argdo, :bufdo, :windo and :tabdo don't take a range. +Solution: Support the range. (Marcin Szamotulski) +Files: runtime/doc/editing.txt, runtime/doc/tabpage.txt, + runtime/doc/windows.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + +Patch 7.4.567 +Problem: Non-ascii vertical separator characters are always redrawn. +Solution: Compare only the one byte that's stored. (Thiago Padilha) +Files: src/screen.c + +Patch 7.4.568 +Problem: Giving an error for ":0wincmd w" is a problem for some plugins. +Solution: Allow the zero in the range. (Marcin Szamotulski) +Files: src/ex_docmd.c, src/testdir/test_command_count.ok + +Patch 7.4.569 (after 7.4.468) +Problem: Having CTRL-C interrupt or not does not check the mode of the + mapping. (Ingo Karkat) +Solution: Use a bitmask with the map mode. (Christian Brabandt) +Files: src/getchar.c, src/structs.h, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok, src/ui.c, src/globals.h + +Patch 7.4.570 +Problem: Building with dynamic library does not work for Ruby 2.2.0 +Solution: Change #ifdefs and #defines. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.571 (after 7.4.569) +Problem: Can't build with tiny features. (Ike Devolder) +Solution: Add #ifdef. +Files: src/getchar.c + +Patch 7.4.572 +Problem: Address type of :wincmd depends on the argument. +Solution: Check the argument. +Files: src/ex_docmd.c, src/window.c, src/proto/window.pro + +Patch 7.4.573 (after 7.4.569) +Problem: Mapping CTRL-C in Visual mode doesn't work. (Ingo Karkat) +Solution: Call get_real_state() instead of using State directly. +Files: src/ui.c, src/testdir/test_mapping.in, src/testdir/test_mapping.ok + +Patch 7.4.574 +Problem: No error for eval('$'). +Solution: Check for empty name. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.575 +Problem: Unicode character properties are outdated. +Solution: Update the tables with the latest version. +Files: src/mbyte.c + +Patch 7.4.576 +Problem: Redrawing problem with 'relativenumber' and 'linebreak'. +Solution: Temporarily reset 'linebreak' and restore it in more places. + (Christian Brabandt) +Files: src/normal.c + +Patch 7.4.577 +Problem: Matching with a virtual column has a lot of overhead on very long + lines. (Issue 310) +Solution: Bail out early if there can't be a match. (Christian Brabandt) + Also check for CTRL-C at every position. +Files: src/regexp_nfa.c + +Patch 7.4.578 +Problem: Using getcurpos() after "$" in an empty line returns a negative + number. +Solution: Don't add one when this would overflow. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.4.579 +Problem: Wrong cursor positioning when 'linebreak' is set and lines wrap. +Solution: Fix it. (Christian Brabandt) +Files: src/charset.c, src/screen.c + +Patch 7.4.580 +Problem: ":52wincmd v" still gives an invalid range error. (Charles + Campbell) +Solution: Skip over white space. +Files: src/ex_docmd.c + +Patch 7.4.581 +Problem: Compiler warnings for uninitialized variables. (John Little) +Solution: Initialize the variables. +Files: src/ops.c + +Patch 7.4.582 (after 7.4.577) +Problem: Can't match "%>80v" properly. (Axel Bender) +Solution: Correctly handle ">". (Christian Brabandt) +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.583 +Problem: With tiny features test 16 may fail. +Solution: Source small.vim. (Christian Brabandt) +Files: src/testdir/test16.in + +Patch 7.4.584 +Problem: With tiny features test_command_count may fail. +Solution: Source small.vim. (Christian Brabandt) +Files: src/testdir/test_command_count.in + +Patch 7.4.585 +Problem: Range for :bdelete does not work. (Ronald Schild) +Solution: Also allow unloaded buffers. +Files: src/ex_cmds.h, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + +Patch 7.4.586 +Problem: Parallel building of the documentation html files is not reliable. +Solution: Remove a cyclic dependency. (Reiner Herrmann) +Files: runtime/doc/Makefile + +Patch 7.4.587 +Problem: Conceal does not work properly with 'linebreak'. (cs86661) +Solution: Save and restore boguscols. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + +Patch 7.4.588 +Problem: ":0argedit foo" puts the new argument in the second place instead + of the first. +Solution: Adjust the range type. (Ingo Karkat) +Files: src/ex_cmds.h, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_argument_0count.in, + src/testdir/test_argument_0count.ok + +Patch 7.4.589 +Problem: In the MS-Windows console Vim can't handle greek characters when + encoding is utf-8. +Solution: Escape K_NUL. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.590 +Problem: Using ctrl_x_mode as if it contains flags. +Solution: Don't use AND with CTRL_X_OMNI. (Hirohito Higashi) +Files: src/edit.c + +Patch 7.4.591 (after 7.4.587) +Problem: test_listlbr_utf8 fails when the conceal feature is not available. +Solution: Check for the conceal feature. (Kazunobu Kuriyama) +Files: src/testdir/test_listlbr_utf8.in + +Patch 7.4.592 +Problem: When doing ":e foobar" when already editing "foobar" and 'buftype' + is "nofile" the buffer is cleared. (Xavier de Gaye) +Solution: Do no clear the buffer. +Files: src/ex_cmds.c + +Patch 7.4.593 +Problem: Crash when searching for "x\{0,90000}". (Dominique Pelle) +Solution: Bail out from the NFA engine when the max limit is much higher + than the min limit. +Files: src/regexp_nfa.c, src/regexp.c, src/vim.h + +Patch 7.4.594 +Problem: Using a block delete while 'breakindent' is set does not work + properly. +Solution: Use "line" instead of "prev_pend" as the first argument to + lbr_chartabsize_adv(). (Hirohito Higashi) +Files: src/ops.c, src/testdir/test_breakindent.in, + src/testdir/test_breakindent.ok + +Patch 7.4.595 +Problem: The test_command_count test fails when using Japanese. +Solution: Force the language to C. (Hirohito Higashi) +Files: src/testdir/test_command_count.in + +Patch 7.4.596 (after 7.4.592) +Problem: Tiny build doesn't compile. (Ike Devolder) +Solution: Add #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.597 +Problem: Cannot change the result of systemlist(). +Solution: Initialize v_lock. (Yukihiro Nakadaira) +Files: src/eval.c + +Patch 7.4.598 +Problem: ":tabdo windo echo 'hi'" causes "* register not to be changed. + (Salman Halim) +Solution: Change how clip_did_set_selection is used and add + clipboard_needs_update and global_change_count. (Christian + Brabandt) +Files: src/main.c, src/ui.c, src/testdir/test_eval.in, + src/testdir/test_eval.ok + +Patch 7.4.599 +Problem: Out-of-memory error. +Solution: Avoid trying to allocate a negative amount of memory, use size_t + instead of int. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.4.600 +Problem: Memory wasted in struct because of aligning. +Solution: Split pos in lnum and col. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 7.4.601 +Problem: It is not possible to have feedkeys() insert characters. +Solution: Add the 'i' flag. +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.602 +Problem: ":set" does not accept hex numbers as documented. +Solution: Use vim_str2nr(). (ZyX) +Files: src/option.c, runtime/doc/options.txt + +Patch 7.4.603 +Problem: 'foldcolumn' may be set such that it fills the whole window, not + leaving space for text. +Solution: Reduce the foldcolumn width when there is not sufficient room. + (idea by Christian Brabandt) +Files: src/screen.c + +Patch 7.4.604 +Problem: Running tests changes viminfo. +Solution: Disable viminfo. +Files: src/testdir/test_breakindent.in + +Patch 7.4.605 +Problem: The # register is not writable, it cannot be restored after + jumping around. +Solution: Make the # register writable. (Marcin Szamotulski) +Files: runtime/doc/change.txt, src/ops.c, src/buffer.c, src/globals.h + +Patch 7.4.606 +Problem: May crash when using a small window. +Solution: Avoid dividing by zero. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4.607 (after 7.4.598) +Problem: Compiler warnings for unused variables. +Solution: Move them inside #ifdef. (Kazunobu Kuriyama) +Files: src/ui.c + +Patch 7.4.608 (after 7.4.598) +Problem: test_eval fails when the clipboard feature is missing. +Solution: Skip part of the test. Reduce the text used. +Files: src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.609 +Problem: For complicated list and dict use the garbage collector can run + out of stack space. +Solution: Use a stack of dicts and lists to be marked, thus making it + iterative instead of recursive. (Ben Fritz) +Files: src/eval.c, src/if_lua.c, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/proto/eval.pro, src/proto/if_lua.pro, + src/proto/if_python.pro, src/proto/if_python3.pro, src/structs.h + +Patch 7.4.610 +Problem: Some function headers may be missing from generated .pro files. +Solution: Add PROTO to the #ifdef. +Files: src/option.c, src/syntax.c + +Patch 7.4.611 (after 7.4.609) +Problem: Syntax error. +Solution: Change statement to return. +Files: src/if_python3.c + +Patch 7.4.612 +Problem: test_eval fails on Mac. +Solution: Use the * register instead of the + register. (Jun Takimoto) +Files: src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.613 +Problem: The NFA engine does not implement the 'redrawtime' time limit. +Solution: Implement the time limit. +Files: src/regexp_nfa.c + +Patch 7.4.614 +Problem: There is no test for what patch 7.4.601 fixes. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test_mapping.in, src/testdir/test_mapping.ok + +Patch 7.4.615 +Problem: Vim hangs when freeing a lot of objects. +Solution: Do not go back to the start of the list every time. (Yasuhiro + Matsumoto and Ariya Mizutani) +Files: src/eval.c + +Patch 7.4.616 +Problem: Cannot insert a tab in front of a block. +Solution: Correctly compute aop->start. (Christian Brabandt) +Files: src/ops.c, src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.617 +Problem: Wrong ":argdo" range does not cause an error. +Solution: Reset "cmd" to NULL. (Marcin Szamotulski, Ingo Karkat) +Files: src/ex_docmd.c + +Patch 7.4.618 (after 7.4.609) +Problem: luaV_setref() is missing a return statement. (Ozaki Kiichi) +Solution: Put the return statement back. +Files: src/if_lua.c + +Patch 7.4.619 (after 7.4.618) +Problem: luaV_setref() not returning the correct value. +Solution: Return one. +Files: src/if_lua.c + +Patch 7.4.620 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize "did_free". (Ben Fritz) +Files: src/eval.c + +Patch 7.4.621 (after 7.4.619) +Problem: Returning 1 in the wrong function. (Raymond Ko) +Solution: Return 1 in the right function (hopefully). +Files: src/if_lua.c + +Patch 7.4.622 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/regexp_nfa.c + +Patch 7.4.623 +Problem: Crash with pattern: \(\)\{80000} (Dominique Pelle) +Solution: When the max limit is large fall back to the old engine. +Files: src/regexp_nfa.c + +Patch 7.4.624 +Problem: May leak memory or crash when vim_realloc() returns NULL. +Solution: Handle a NULL value properly. (Mike Williams) +Files: src/if_cscope.c, src/memline.c, src/misc1.c, src/netbeans.c + +Patch 7.4.625 +Problem: Possible NULL pointer dereference. +Solution: Check for NULL before using it. (Mike Williams) +Files: src/if_py_both.h + +Patch 7.4.626 +Problem: MSVC with W4 gives useless warnings. +Solution: Disable more warnings. (Mike Williams) +Files: src/vim.h + +Patch 7.4.627 +Problem: The last screen cell is not updated. +Solution: Respect the "tn" termcap feature. (Hayaki Saito) +Files: runtime/doc/term.txt, src/option.c, src/screen.c, src/term.c, + src/term.h + +Patch 7.4.628 +Problem: Compiler warning for variable might be clobbered by longjmp. +Solution: Add volatile. (Michael Jarvis) +Files: src/main.c + +Patch 7.4.629 +Problem: Coverity warning for Out-of-bounds read. +Solution: Increase MAXWLEN to 254. (Eliseo Mart铆nez) +Files: src/spell.c + +Patch 7.4.630 +Problem: When using Insert mode completion combined with autocommands the + redo command may not work. +Solution: Do not save the redo buffer when executing autocommands. (Yasuhiro + Matsumoto) +Files: src/fileio.c + +Patch 7.4.631 +Problem: The default conceal character is documented to be a space but it's + initially a dash. (Christian Brabandt) +Solution: Make the initial value a space. +Files: src/globals.h + +Patch 7.4.632 (after 7.4.592) +Problem: 7.4.592 breaks the netrw plugin, because the autocommands are + skipped. +Solution: Roll back the change. +Files: src/ex_cmds.c + +Patch 7.4.633 +Problem: After 7.4.630 the problem persists. +Solution: Also skip redo when calling a user function. +Files: src/eval.c + +Patch 7.4.634 +Problem: Marks are not restored after redo + undo. +Solution: Fix the way marks are restored. (Olaf Dabrunz) +Files: src/undo.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_marks.in, src/testdir/test_marks.ok + +Patch 7.4.635 +Problem: If no NL or CR is found in the first block of a file then the + 'fileformat' may be set to "mac". (Issue 77) +Solution: Check if a CR was found. (eswald) +Files: src/fileio.c + +Patch 7.4.636 +Problem: A search with end offset gets stuck at end of file. (Gary Johnson) +Solution: When a search doesn't move the cursor repeat it with a higher + count. (Christian Brabandt) +Files: src/normal.c, src/testdir/test44.in, src/testdir/test44.ok + +Patch 7.4.637 +Problem: Incorrectly read the number of buffer for which an autocommand + should be registered. +Solution: Reverse check for "<buffer=abuf>". (Lech Lorens) +Files: src/fileio.c + +Patch 7.4.638 +Problem: Can't build with Lua 5.3 on Windows. +Solution: use luaL_optinteger() instead of LuaL_optlong(). (Ken Takata) +Files: src/if_lua.c + +Patch 7.4.639 +Problem: Combination of linebreak and conceal doesn't work well. +Solution: Fix the display problems. (Christian Brabandt) +Files: src/screen.c, src/testdir/test88.in, src/testdir/test88.ok, + src/testdir/test_listlbr_utf8.in, src/testdir/test_listlbr_utf8.ok + +Patch 7.4.640 +Problem: After deleting characters in Insert mode such that lines are + joined undo does not work properly. (issue 324) +Solution: Use Insstart instead of Insstart_orig. (Christian Brabandt) +Files: src/edit.c + +Patch 7.4.641 +Problem: The tabline menu was using ":999tabnew" which is now invalid. +Solution: Use ":$tabnew" instead. (Florian Degner) +Files: src/normal.c + +Patch 7.4.642 +Problem: When using "gf" escaped spaces are not handled. +Solution: Recognize escaped spaces. +Files: src/vim.h, src/window.c, src/misc2.c + +Patch 7.4.643 +Problem: Using the default file format for Mac files. (Issue 77) +Solution: Reset the try_mac counter in the right place. (Oswald) +Files: src/fileio.c, src/testdir/test30.in, src/testdir/test30.ok + +Patch 7.4.644 +Problem: Stratus VOS doesn't have sync(). +Solution: Use fflush(). (Karli Aurelia) +Files: src/memfile.c + +Patch 7.4.645 +Problem: When splitting the window in a BufAdd autocommand while still in + the first, empty buffer the window count is wrong. +Solution: Do not reset b_nwindows to zero and don't increment it. +Files: src/buffer.c, src/ex_cmds.c + +Patch 7.4.646 +Problem: ":bufdo" may start at a deleted buffer. +Solution: Find the first not deleted buffer. (Shane Harper) +Files: src/ex_cmds2.c, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok + +Patch 7.4.647 +Problem: After running the tests on MS-Windows many files differ from their + originals as they were checked out. +Solution: Use a temp directory for executing the tests. (Ken Takata, Taro + Muraoka) +Files: src/testdir/Make_dos.mak + +Patch 7.4.648 (after 7.4.647) +Problem: Tests broken on MS-Windows. +Solution: Delete wrong copy line. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.4.649 +Problem: Compiler complains about ignoring return value of fwrite(). + (Michael Jarvis) +Solution: Add (void). +Files: src/misc2.c + +Patch 7.4.650 +Problem: Configure check may fail because the dl library is not used. +Solution: Put "-ldl" in LIBS rather than LDFLAGS. (Ozaki Kiichi) +Files: src/configure.in, src/auto/configure + +Patch 7.4.651 (after 7.4.582) +Problem: Can't match "%>80v" properly for multibyte characters. +Solution: Multiply the character number by the maximum number of bytes in a + character. (Yasuhiro Matsumoto) +Files: src/regexp_nfa.c + +Patch 7.4.652 +Problem: Xxd lacks a few features. +Solution: Use 8 characters for the file position. Add the -e and -o + arguments. (Vadim Vygonets) +Files: src/xxd/xxd.c, runtime/doc/xxd.1 + +Patch 7.4.653 +Problem: Insert mode completion with complete() may have CTRL-L work like + CTRL-P. +Solution: Handle completion with complete() differently. (Yasuhiro + Matsumoto, Christian Brabandt, Hirohito Higashi) +Files: src/edit.c + +Patch 7.4.654 +Problem: glob() and globpath() cannot include links to non-existing files. + (Charles Campbell) +Solution: Add an argument to include all links with glob(). (James McCoy) + Also for globpath(). +Files: src/vim.h, src/eval.c, src/ex_getln.c + +Patch 7.4.655 +Problem: Text deleted by "dit" depends on indent of closing tag. + (Jan Parthey) +Solution: Do not adjust oap->end in do_pending_operator(). (Christian + Brabandt) +Files: src/normal.c, src/search.c, src/testdir/test53.in, + src/testdir/test53.ok + +Patch 7.4.656 (after 7.4.654) +Problem: Missing changes for glob() in one file. +Solution: Add the missing changes. +Files: src/misc1.c + +Patch 7.4.657 (after 7.4.656) +Problem: Compiler warnings for pointer mismatch. +Solution: Add a typecast. (John Marriott) +Files: src/misc1.c + +Patch 7.4.658 +Problem: 'formatexpr' is evaluated too often. +Solution: Only invoke it when beyond the 'textwidth' column, as it is + documented. (James McCoy) +Files: src/edit.c + +Patch 7.4.659 +Problem: When 'ruler' is set the preferred column is reset. (Issue 339) +Solution: Don't set curswant when redrawing the status lines. +Files: src/option.c + +Patch 7.4.660 +Problem: Using freed memory when g:colors_name is changed in the colors + script. (oni-link) +Solution: Make a copy of the variable value. +Files: src/syntax.c + +Patch 7.4.661 +Problem: Using "0 CTRL-D" in Insert mode may have CursorHoldI interfere. + (Gary Johnson) +Solution: Don't store K_CURSORHOLD as the last character. (Christian + Brabandt) +Files: src/edit.c + +Patch 7.4.662 +Problem: When 'M' is in the 'cpo' option then selecting a text object in + parentheses does not work correctly. +Solution: Keep 'M' in 'cpo' when finding a match. (Hirohito Higashi) +Files: src/search.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_textobjects.in, + src/testdir/test_textobjects.ok + +Patch 7.4.663 +Problem: When using netbeans a buffer is not found in another tab. +Solution: When 'switchbuf' is set to "usetab" then switch to another tab + when possible. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.4.664 +Problem: When 'compatible' is reset 'numberwidth' is set to 4, but the + effect doesn't show until a change is made. +Solution: Check if 'numberwidth' changed. (Christian Brabandt) +Files: src/screen.c, src/structs.h + +Patch 7.4.665 +Problem: 'linebreak' does not work properly with multibyte characters. +Solution: Compute the pointer offset with mb_head_off(). (Yasuhiro + Matsumoto) +Files: src/screen.c + +Patch 7.4.666 +Problem: There is a chance that Vim may lock up. +Solution: Handle timer events differently. (Aaron Burrow) +Files: src/os_unix.c + +Patch 7.4.667 +Problem: 'colorcolumn' isn't drawn in a closed fold while 'cursorcolumn' + is. (Carlos Pita) +Solution: Make it consistent. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.668 +Problem: Can't use a glob pattern as a regexp pattern. +Solution: Add glob2regpat(). (Christian Brabandt) +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.669 +Problem: When netbeans is active the sign column always shows up. +Solution: Only show the sign column once a sign has been added. (Xavier de + Gaye) +Files: src/buffer.c, src/edit.c, src/move.c, src/netbeans.c, + src/screen.c, src/structs.h + +Patch 7.4.670 +Problem: Using 'cindent' for Javascript is less than perfect. +Solution: Improve indenting of continuation lines. (Hirohito Higashi) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.671 (after 7.4.665) +Problem: Warning for shadowing a variable. +Solution: Rename off to mb_off. (Kazunobu Kuriyama) +Files: src/screen.c + +Patch 7.4.672 +Problem: When completing a shell command, directories in the current + directory are not listed. +Solution: When "." is not in $PATH also look in the current directory for + directories. +Files: src/ex_getln.c, src/vim.h, src/misc1.c, src/eval.c, + src/os_amiga.c, src/os_msdos.c, src/os_unix.c, src/os_vms.c, + src/proto/os_amiga.pro, src/proto/os_msdos.pro, + src/proto/os_unix.pro, src/proto/os_win32.pro + +Patch 7.4.673 +Problem: The first syntax entry gets sequence number zero, which doesn't + work. (Clinton McKay) +Solution: Start at number one. (Bjorn Linse) +Files: src/syntax.c + +Patch 7.4.674 (after 7.4.672) +Problem: Missing changes in one file. +Solution: Also change the win32 file. +Files: src/os_win32.c + +Patch 7.4.675 +Problem: When a FileReadPost autocommand moves the cursor inside a line it + gets moved back. +Solution: When checking whether an autocommand moved the cursor store the + column as well. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 7.4.676 +Problem: On Mac, when not using the default Python framework configure + doesn't do the right thing. +Solution: Use a linker search path. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + +Patch 7.4.677 (after 7.4.676) +Problem: Configure fails when specifying a python-config-dir. (Lcd) +Solution: Check if PYTHONFRAMEWORKPREFIX is set. +Files: src/configure.in, src/auto/configure + +Patch 7.4.678 +Problem: When using --remote the directory may end up being wrong. +Solution: Use localdir() to find out what to do. (Xaizek) +Files: src/main.c + +Patch 7.4.679 +Problem: Color values greater than 255 cause problems on MS-Windows. +Solution: Truncate to 255 colors. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.680 +Problem: CTRL-W in Insert mode does not work well for multibyte + characters. +Solution: Use mb_get_class(). (Yasuhiro Matsumoto) +Files: src/edit.c, src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_erasebackword.in, + src/testdir/test_erasebackword.ok, + +Patch 7.4.681 +Problem: MS-Windows: When Vim is minimized the window height is computed + incorrectly. +Solution: When minimized use the previously computed size. (Ingo Karkat) +Files: src/gui_w32.c + +Patch 7.4.682 +Problem: The search highlighting and match highlighting replaces the + cursorline highlighting, this doesn't look good. +Solution: Combine the highlighting. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 7.4.683 +Problem: Typo in the vimtutor command. +Solution: Fix the typo. (Corey Farwell, github pull 349) +Files: vimtutor.com + +Patch 7.4.684 +Problem: When starting several Vim instances in diff mode, the temp files + used may not be unique. (Issue 353) +Solution: Add an argument to vim_tempname() to keep the file. +Files: src/diff.c, src/eval.c, src/ex_cmds.c, src/fileio.c, + src/hardcopy.c, src/proto/fileio.pro, src/if_cscope.c, + src/memline.c, src/misc1.c, src/os_unix.c, src/quickfix.c, + src/spell.c + +Patch 7.4.685 +Problem: When there are illegal utf-8 characters the old regexp engine may + go past the end of a string. +Solution: Only advance to the end of the string. (Dominique Pelle) +Files: src/regexp.c + +Patch 7.4.686 +Problem: "zr" and "zm" do not take a count. +Solution: Implement the count, restrict the fold level to the maximum + nesting depth. (Marcin Szamotulski) +Files: runtime/doc/fold.txt, src/normal.c + +Patch 7.4.687 +Problem: There is no way to use a different in Replace mode for a terminal. +Solution: Add t_SR. (Omar Sandoval) +Files: runtime/doc/options.txt, runtime/doc/term.txt, + runtime/syntax/vim.vim, src/option.c, src/term.c, src/term.h + +Patch 7.4.688 +Problem: When "$" is in 'cpo' the popup menu isn't undrawn correctly. + (Issue 166) +Solution: When using the popup menu remove the "$". +Files: src/edit.c + +Patch 7.4.689 +Problem: On MS-Windows, when 'autochdir' is set, diff mode with files in + different directories does not work. (Axel Bender) +Solution: Remember the current directory and use it where needed. (Christian + Brabandt) +Files: src/main.c + +Patch 7.4.690 +Problem: Memory access errors when changing indent in Ex mode. Also missing + redraw when using CTRL-U. (Knil Ino) +Solution: Update pointers after calling ga_grow(). +Files: src/ex_getln.c + +Patch 7.4.691 (after 7.4.689) +Problem: Can't build with MzScheme. +Solution: Change "cwd" into the global variable "start_dir". +Files: src/main.c + +Patch 7.4.692 +Problem: Defining SOLARIS for no good reason. (Danek Duvall) +Solution: Remove it. +Files: src/os_unix.h + +Patch 7.4.693 +Problem: Session file is not correct when there are multiple tab pages. +Solution: Reset the current window number for each tab page. (Jacob Niehus) +Files: src/ex_docmd.c + +Patch 7.4.694 +Problem: Running tests changes the .viminfo file. +Solution: Disable viminfo in the text objects test. +Files: src/testdir/test_textobjects.in + +Patch 7.4.695 +Problem: Out-of-bounds read, detected by Coverity. +Solution: Remember the value of cmap for the first matching encoding. Reset + cmap to that value if first matching encoding is going to be used. + (Eliseo Mart铆nez) +Files: src/hardcopy.c + +Patch 7.4.696 +Problem: Not freeing memory when encountering an error. +Solution: Free the stack before returning. (Eliseo Mart铆nez) +Files: src/regexp_nfa.c + +Patch 7.4.697 +Problem: The filename used for ":profile" must be given literally. +Solution: Expand "~" and environment variables. (Marco Hinz) +Files: src/ex_cmds2.c + +Patch 7.4.698 +Problem: Various problems with locked and fixed lists and dictionaries. +Solution: Disallow changing locked items, fix a crash, add tests. (Olaf + Dabrunz) +Files: src/structs.h, src/eval.c, src/testdir/test55.in, + src/testdir/test55.ok + +Patch 7.4.699 +Problem: E315 when trying to delete a fold. (Yutao Yuan) +Solution: Make sure the fold doesn't go beyond the last buffer line. + (Christian Brabandt) +Files: src/fold.c + +Patch 7.4.700 +Problem: Fold can't be opened after ":move". (Ein Brown) +Solution: Delete the folding information and update it afterwards. + (Christian Brabandt) +Files: src/ex_cmds.c, src/fold.c, src/testdir/test45.in, + src/testdir/test45.ok + +Patch 7.4.701 +Problem: Compiler warning for using uninitialized variable. (Yasuhiro + Matsumoto) +Solution: Initialize it. +Files: src/hardcopy.c + +Patch 7.4.702 +Problem: Joining an empty list does unnecessary work. +Solution: Let join() return early. (Marco Hinz) +Files: src/eval.c + +Patch 7.4.703 +Problem: Compiler warning for start_dir unused when building unittests. +Solution: Move start_dir inside the #ifdef. +Files: src/main.c + +Patch 7.4.704 +Problem: Searching for a character matches an illegal byte and causes + invalid memory access. (Dominique Pelle) +Solution: Do not match an invalid byte when search for a character in a + string. Fix equivalence classes using negative numbers, which + result in illegal bytes. +Files: src/misc2.c, src/regexp.c, src/testdir/test44.in + +Patch 7.4.705 +Problem: Can't build with Ruby 2.2. +Solution: Add #ifdefs to handle the incompatible change. (Andrei Olsen) +Files: src/if_ruby.c + +Patch 7.4.706 +Problem: Window drawn wrong when 'laststatus' is zero and there is a + command-line window. (Yclept Nemo) +Solution: Set the status height a bit later. (Christian Brabandt) +Files: src/window.c + +Patch 7.4.707 +Problem: Undo files can have their executable bit set. +Solution: Strip of the executable bit. (Mikael Berthe) +Files: src/undo.c + +Patch 7.4.708 +Problem: gettext() is called too often. +Solution: Do not call gettext() for messages until they are actually used. + (idea by Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.709 +Problem: ":tabmove" does not work as documented. +Solution: Make it work consistently. Update documentation and add tests. + (Hirohito Higashi) +Files: src/window.c, runtime/doc/tabpage.txt, src/ex_docmd.c, + src/testdir/test62.in, src/testdir/test62.ok + +Patch 7.4.710 +Problem: It is not possible to make spaces visible in list mode. +Solution: Add the "space" item to 'listchars'. (David B眉rgin, issue 350) +Files: runtime/doc/options.txt, src/globals.h, src/message.h, + src/screen.c, src/testdir/test_listchars.in, + src/testdir/test_listchars.ok, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 7.4.711 (after 7.4.710) +Problem: Missing change in one file. +Solution: Also change option.c +Files: src/option.c + +Patch 7.4.712 (after 7.4.710) +Problem: Missing change in another file. +Solution: Also change message.c +Files: src/message.c + +Patch 7.4.713 +Problem: Wrong condition for #ifdef. +Solution: Change USR_EXRC_FILE2 to USR_VIMRC_FILE2. (Mikael Fourrier) +Files: src/os_unix.h + +Patch 7.4.714 +Problem: Illegal memory access when there are illegal bytes. +Solution: Check the byte length of the character. (Dominique Pelle) +Files: src/regexp.c + +Patch 7.4.715 +Problem: Invalid memory access when there are illegal bytes. +Solution: Get the length from the text, not from the character. (Dominique + Pelle) +Files: src/regexp_nfa.c + +Patch 7.4.716 +Problem: When using the 'c' flag of ":substitute" and selecting "a" or "l" + at the prompt the flags are not remembered for ":&&". (Ingo + Karkat) +Solution: Save the flag values and restore them. (Hirohito Higashi) +Files: src/ex_cmds.c + +Patch 7.4.717 +Problem: ":let list += list" can change a locked list. +Solution: Check for the lock earlier. (Olaf Dabrunz) +Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok + +Patch 7.4.718 +Problem: Autocommands triggered by quickfix cannot get the current title + value. +Solution: Set w:quickfix_title earlier. (Yannick) + Also move the check for a title into the function. +Files: src/quickfix.c + +Patch 7.4.719 +Problem: Overflow when adding MAXCOL to a pointer. +Solution: Subtract pointers instead. (James McCoy) +Files: src/screen.c + +Patch 7.4.720 +Problem: Can't build with Visual Studio 2015. +Solution: Recognize the "version 14" numbers and omit /nodefaultlib when + appropriate. (Paul Moore) +Files: src/Make_mvc.mak + +Patch 7.4.721 +Problem: When 'list' is set Visual mode does not highlight anything in + empty lines. (mgaleski) +Solution: Check the value of lcs_eol in another place. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.722 +Problem: 0x202f is not recognized as a non-breaking space character. +Solution: Add 0x202f to the list. (Christian Brabandt) +Files: runtime/doc/options.txt, src/message.c, src/screen.c + +Patch 7.4.723 +Problem: For indenting, finding the C++ baseclass can be slow. +Solution: Cache the result. (Hirohito Higashi) +Files: src/misc1.c + +Patch 7.4.724 +Problem: Vim icon does not show in Windows context menu. (issue 249) +Solution: Load the icon in GvimExt. +Files: src/GvimExt/gvimext.cpp, src/GvimExt/gvimext.h + +Patch 7.4.725 +Problem: ":call setreg('"', [])" reports an internal error. +Solution: Make the register empty. (Yasuhiro Matsumoto) +Files: src/ops.c + +Patch 7.4.726 (after 7.4.724) +Problem: Cannot build GvimExt. +Solution: Set APPVER to 5.0. (KF Leong) +Files: src/GvimExt/Makefile + +Patch 7.4.727 (after 7.4.724) +Problem: Cannot build GvimExt with MingW. +Solution: Add -lgdi32. (KF Leong) +Files: src/GvimExt/Make_ming.mak + +Patch 7.4.728 +Problem: Can't build with some version of Visual Studio 2015. +Solution: Recognize another version 14 number. (Sinan) +Files: src/Make_mvc.mak + +Patch 7.4.729 (after 7.4.721) +Problem: Occasional crash with 'list' set. +Solution: Fix off-by-one error. (Christian Brabandt) +Files: src/screen.c + +Patch 7.4.730 +Problem: When setting the crypt key and using a swap file, text may be + encrypted twice or unencrypted text remains in the swap file. + (Issue 369) +Solution: Call ml_preserve() before re-encrypting. Set correct index for + next pointer block. +Files: src/memfile.c, src/memline.c, src/proto/memline.pro, src/option.c + +Patch 7.4.731 +Problem: The tab menu shows "Close tab" even when it doesn't work. +Solution: Don't show "Close tab" for the last tab. (John Marriott) +Files: src/gui_w48.c, src/gui_gtk_x11.c, src/gui_mac.c, src/gui_motif.c + +Patch 7.4.732 +Problem: The cursor line is not always updated for the "O" command. +Solution: Reset the VALID_CROW flag. (Christian Brabandt) +Files: src/normal.c + +Patch 7.4.733 +Problem: test_listchars breaks on MS-Windows. (Kenichi Ito) +Solution: Set fileformat to "unix". (Christian Brabandt) +Files: src/testdir/test_listchars.in + +Patch 7.4.734 +Problem: ml_get error when using "p" in a Visual selection in the last + line. +Solution: Change the behavior at the last line. (Yukihiro Nakadaira) +Files: src/normal.c, src/ops.c, src/testdir/test94.in, + src/testdir/test94.ok + +Patch 7.4.735 +Problem: Wrong argument for sizeof(). +Solution: Use a pointer argument. (Chris Hall) +Files: src/eval.c + +Patch 7.4.736 +Problem: Invalid memory access. +Solution: Avoid going over the end of a NUL terminated string. (Dominique + Pelle) +Files: src/regexp.c + +Patch 7.4.737 +Problem: On MS-Windows vimgrep over arglist doesn't work (Issue 361) +Solution: Only escape backslashes in ## expansion when it is not used as the + path separator. (James McCoy) +Files: src/ex_docmd.c + +Patch 7.4.738 (after 7.4.732) +Problem: Can't compile without the syntax highlighting feature. +Solution: Add #ifdef around use of w_p_cul. (Hirohito Higashi) +Files: src/normal.c, src/screen.c + +Patch 7.4.739 +Problem: In a string "\U" only takes 4 digits, while after CTRL-V U eight + digits can be used. +Solution: Make "\U" also take eight digits. (Christian Brabandt) +Files: src/eval.c + +Patch 7.4.740 +Problem: ":1quit" works like ":.quit". (Bohr Shaw) +Solution: Don't exit Vim when a range is specified. (Christian Brabandt) +Files: src/ex_docmd.c, src/testdir/test13.in, src/testdir/test13.ok + +Patch 7.4.741 +Problem: When using += with ":set" a trailing comma is not recognized. + (Issue 365) +Solution: Don't add a second comma. Add a test. (partly by Christian + Brabandt) +Files: src/option.c, src/testdir/test_set.in, src/testdir/test_set.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.742 +Problem: Cannot specify a vertical split when loading a buffer for a + quickfix command. +Solution: Add the "vsplit" value to 'switchbuf'. (Brook Hong) +Files: runtime/doc/options.txt, src/buffer.c, src/option.h + +Patch 7.4.743 +Problem: "p" in Visual mode causes an unexpected line split. +Solution: Advance the cursor first. (Yukihiro Nakadaira) +Files: src/ops.c, src/testdir/test94.in, src/testdir/test94.ok + +Patch 7.4.744 +Problem: No tests for Ruby and Perl. +Solution: Add minimal tests. (Ken Takata) +Files: src/testdir/test_perl.in, src/testdir/test_perl.ok, + src/testdir/test_ruby.in, src/testdir/test_ruby.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.745 +Problem: The entries added by matchaddpos() are returned by getmatches() + but can't be set with setmatches(). (Lcd) +Solution: Fix setmatches(). (Christian Brabandt) +Files: src/eval.c, src/testdir/test63.in, src/testdir/test63.ok + +Patch 7.4.746 +Problem: ":[count]tag" is not always working. (cs86661) +Solution: Set cur_match a bit later. (Hirohito Higashi) +Files: src/tag.c, + +Patch 7.4.747 +Problem: ":cnext" may jump to the wrong column when setting + 'virtualedit=all' (cs86661) +Solution: Reset the coladd field. (Hirohito Higashi) +Files: src/quickfix.c + +Patch 7.4.748 (after 7.4.745) +Problem: Buffer overflow. +Solution: Make the buffer larger. (Kazunobu Kuriyama) +Files: src/eval.c + +Patch 7.4.749 (after 7.4.741) +Problem: For some options two consecutive commas are OK. (Nikolai Pavlov) +Solution: Add the P_ONECOMMA flag. +Files: src/option.c + +Patch 7.4.750 +Problem: Cannot build with clang 3.5 on Cygwin with perl enabled. +Solution: Strip "-fdebug-prefix-map" in configure. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.4.751 +Problem: It is not obvious how to enable the address sanitizer. +Solution: Add commented-out flags in the Makefile. (Dominique Pelle) + Also add missing test targets. +Files: src/Makefile + +Patch 7.4.752 +Problem: Unicode 8.0 not supported. +Solution: Update tables for Unicode 8.0. Avoid E36 when running the script. + (James McCoy) +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.4.753 +Problem: Appending in Visual mode with 'linebreak' set does not work + properly. Also when 'selection' is "exclusive". (Ingo Karkat) +Solution: Recalculate virtual columns. (Christian Brabandt) +Files: src/normal.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + +Patch 7.4.754 +Problem: Using CTRL-A in Visual mode does not work well. (Gary Johnson) +Solution: Make it increment all numbers in the Visual area. (Christian + Brabandt) +Files: runtime/doc/change.txt, src/normal.c, src/ops.c, + src/proto/ops.pro, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_increment.in, + src/testdir/test_increment.ok + +Patch 7.4.755 +Problem: It is not easy to count the number of characters. +Solution: Add the skipcc argument to strchars(). (Hirohito Higashi, Ken + Takata) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_utf8.in, + src/testdir/test_utf8.ok + +Patch 7.4.756 +Problem: Can't use strawberry Perl 5.22 x64 on MS-Windows. +Solution: Add new defines and #if. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/if_perl.xs + +Patch 7.4.757 +Problem: Cannot detect the background color of a terminal. +Solution: Add T_RBG to request the background color if possible. (Lubomir + Rintel) +Files: src/main.c, src/term.c, src/term.h, src/proto/term.pro + +Patch 7.4.758 +Problem: When 'conceallevel' is 1 and quitting the command-line window with + CTRL-C the first character ':' is erased. +Solution: Reset 'conceallevel' in the command-line window. (Hirohito + Higashi) +Files: src/ex_getln.c + +Patch 7.4.759 +Problem: Building with Lua 5.3 doesn't work, symbols have changed. +Solution: Use the new names for the new version. (Felix Schnizlein) +Files: src/if_lua.c + +Patch 7.4.760 +Problem: Spelling mistakes are not displayed after ":syn spell". +Solution: Force a redraw after ":syn spell" command. (Christian Brabandt) +Files: src/syntax.c + +Patch 7.4.761 (after 7.4.757) +Problem: The request-background termcode implementation is incomplete. +Solution: Add the missing pieces. +Files: src/option.c, src/term.c + +Patch 7.4.762 (after 7.4.757) +Problem: Comment for may_req_bg_color() is wrong. (Christ van Willegen) +Solution: Rewrite the comment. +Files: src/term.c + +Patch 7.4.763 (after 7.4.759) +Problem: Building with Lua 5.1 doesn't work. +Solution: Define lua_replace and lua_remove. (KF Leong) +Files: src/if_lua.c + +Patch 7.4.764 (after 7.4.754) +Problem: test_increment fails on MS-Windows. (Ken Takata) +Solution: Clear Visual mappings. (Taro Muraoka) +Files: src/testdir/test_increment.in + +Patch 7.4.765 (after 7.4.754) +Problem: CTRL-A and CTRL-X in Visual mode do not always work well. +Solution: Improvements for increment and decrement. (Christian Brabandt) +Files: src/normal.c, src/ops.c, src/testdir/test_increment.in, + src/testdir/test_increment.ok + +Patch 7.4.766 (after 7.4.757) +Problem: Background color check does not work on Tera Term. +Solution: Also recognize ST as a termination character. (Hirohito Higashi) +Files: src/term.c + +Patch 7.4.767 +Problem: --remote-tab-silent can fail on MS-Windows. +Solution: Use single quotes to avoid problems with backslashes. (Idea by + Weiyong Mao) +Files: src/main.c + +Patch 7.4.768 +Problem: :diffoff only works properly once. +Solution: Also make :diffoff work when used a second time. (Olaf Dabrunz) +Files: src/diff.c + +Patch 7.4.769 (after 7.4 768) +Problem: Behavior of :diffoff is not tested. +Solution: Add a bit of testing. (Olaf Dabrunz) +Files: src/testdir/test47.in, src/testdir/test47.ok + +Patch 7.4.770 (after 7.4.766) +Problem: Background color response with transparency is not ignored. +Solution: Change the way escape sequences are recognized. (partly by + Hirohito Higashi) +Files: src/ascii.h, src/term.c + +Patch 7.4.771 +Problem: Search does not handle multibyte character at the start position + correctly. +Solution: Take byte size of character into account. (Yukihiro Nakadaira) +Files: src/search.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_search_mbyte.in, + src/testdir/test_search_mbyte.ok + +Patch 7.4.772 +Problem: Racket 6.2 is not supported on MS-Windows. +Solution: Check for the "racket" subdirectory. (Weiyong Mao) +Files: src/Make_mvc.mak, src/if_mzsch.c + +Patch 7.4.773 +Problem: 'langmap' is used in command-line mode when checking for mappings. + Issue 376. +Solution: Do not use 'langmap' in command-line mode. (Larry Velazquez) +Files: src/getchar.c, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + +Patch 7.4.774 +Problem: When using the CompleteDone autocommand event it's difficult to + get to the completed items. +Solution: Add the v:completed_items variable. (Shougo Matsu) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, src/edit.c, + src/eval.c, src/macros.h, src/proto/eval.pro, src/vim.h + +Patch 7.4.775 +Problem: It is not possible to avoid using the first item of completion. +Solution: Add the "noinsert" and "noselect" values to 'completeopt'. (Shougo + Matsu) +Files: runtime/doc/options.txt, src/edit.c, src/option.c + +Patch 7.4.776 +Problem: Equivalence class for 'd' does not work correctly. +Solution: Fix 0x1e0f and 0x1d0b. (Dominique Pelle) +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.4.777 +Problem: The README file doesn't look nice on github. +Solution: Add a markdown version of the README file. +Files: Filelist, README.md + +Patch 7.4.778 +Problem: Coverity warns for uninitialized variable. +Solution: Change condition of assignment. +Files: src/ops.c + +Patch 7.4.779 +Problem: Using CTRL-A in a line without a number moves the cursor. May + cause a crash when at the start of the line. (Urtica Dioica) +Solution: Do not move the cursor if no number was changed. +Files: src/ops.c + +Patch 7.4.780 +Problem: Compiler complains about uninitialized variable and clobbered + variables. +Solution: Add Initialization. Make variables static. +Files: src/ops.c, src/main.c + +Patch 7.4.781 +Problem: line2byte() returns one less when 'bin' and 'noeol' are set. +Solution: Only adjust the size for the last line. (Rob Wu) +Files: src/memline.c + +Patch 7.4.782 +Problem: Still a few problems with CTRL-A and CTRL-X in Visual mode. +Solution: Fix the reported problems. (Christian Brabandt) +Files: src/charset.c, src/eval.c, src/ex_cmds.c, src/ex_getln.c, + src/misc2.c, src/normal.c, src/ops.c, src/option.c, + src/proto/charset.pro, src/testdir/test_increment.in, + src/testdir/test_increment.ok + +Patch 7.4.783 +Problem: copy_chars() and copy_spaces() are inefficient. +Solution: Use memset() instead. (Dominique Pelle) +Files: src/ex_getln.c, src/misc2.c, src/ops.c, src/proto/misc2.pro, + src/screen.c + +Patch 7.4.784 +Problem: Using both "noinsert" and "noselect" in 'completeopt' does not + work properly. +Solution: Change the ins_complete() calls. (Ozaki Kiichi) +Files: src/edit.c + +Patch 7.4.785 +Problem: On some systems automatically adding the missing EOL causes + problems. Setting 'binary' has too many side effects. +Solution: Add the 'fixeol' option, default on. (Pavel Samarkin) +Files: src/buffer.c, src/fileio.c, src/memline.c, src/netbeans.c, + src/ops.c, src/option.c, src/option.h, src/os_unix.c, + src/os_win32.c, src/structs.h, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_fixeol.in, + src/testdir/test_fixeol.ok, runtime/doc/options.txt, + runtime/optwin.vim + +Patch 7.4.786 +Problem: It is not possible for a plugin to adjust to a changed setting. +Solution: Add the OptionSet autocommand event. (Christian Brabandt) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, src/eval.c, + src/fileio.c, src/option.c, src/proto/eval.pro, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_autocmd_option.in, + src/testdir/test_autocmd_option.ok, src/vim.h + +Patch 7.4.787 (after 7.4.786) +Problem: snprintf() isn't available everywhere. +Solution: Use vim_snprintf(). (Ken Takata) +Files: src/option.c + +Patch 7.4.788 (after 7.4.787) +Problem: Can't build without the crypt feature. (John Marriott) +Solution: Add #ifdef's. +Files: src/option.c + +Patch 7.4.789 (after 7.4.788) +Problem: Using freed memory and crash. (Dominique Pelle) +Solution: Correct use of pointers. (Hirohito Higashi) +Files: src/option.c + +Patch 7.4.790 (after 7.4.786) +Problem: Test fails when the autochdir feature is not available. Test + output contains the test script. +Solution: Check for the autochdir feature. (Kazunobu Kuriyama) Only write + the relevant test output. +Files: src/testdir/test_autocmd_option.in, + src/testdir/test_autocmd_option.ok + +Patch 7.4.791 +Problem: The buffer list can be very long. +Solution: Add an argument to ":ls" to specify the type of buffer to list. + (Marcin Szamotulski) +Files: runtime/doc/windows.txt, src/buffer.c, src/ex_cmds.h + +Patch 7.4.792 +Problem: Can only conceal text by defining syntax items. +Solution: Use matchadd() to define concealing. (Christian Brabandt) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, + src/proto/window.pro, src/screen.c, src/structs.h, + src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_match_conceal.in, + src/testdir/test_match_conceal.ok, src/window.c + +Patch 7.4.793 +Problem: Can't specify when not to ring the bell. +Solution: Add the 'belloff' option. (Christian Brabandt) +Files: runtime/doc/options.txt, src/edit.c, src/ex_getln.c, + src/hangulin.c, src/if_lua.c, src/if_mzsch.c, src/if_tcl.c, + src/message.c, src/misc1.c, src/normal.c, src/option.c, + src/option.h, src/proto/misc1.pro, src/search.c, src/spell.c + +Patch 7.4.794 +Problem: Visual Studio 2015 is not recognized. +Solution: Add the version numbers to the makefile. (Taro Muraoka) +Files: src/Make_mvc.mak + +Patch 7.4.795 +Problem: The 'fixeol' option is not copied to a new window. +Solution: Copy the option value. (Yasuhiro Matsumoto) +Files: src/option.c + +Patch 7.4.796 +Problem: Warning from 64 bit compiler. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + +Patch 7.4.797 +Problem: Crash when using more lines for the command line than + 'maxcombine'. +Solution: Use the correct array index. Also, do not try redrawing when + exiting. And use screen_Columns instead of Columns. +Files: src/screen.c + +Patch 7.4.798 (after 7.4.753) +Problem: Repeating a change in Visual mode does not work as expected. + (Urtica Dioica) +Solution: Make redo in Visual mode work better. (Christian Brabandt) +Files: src/normal.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.799 +Problem: Accessing memory before an allocated block. +Solution: Check for not going before the start of a pattern. (Dominique + Pelle) +Files: src/fileio.c + +Patch 7.4.800 +Problem: Using freed memory when triggering CmdUndefined autocommands. +Solution: Set pointer to NULL. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.4.801 (after 7.4.769) +Problem: Test for ":diffoff" doesn't catch all potential problems. +Solution: Add a :diffthis and a :diffoff command. (Olaf Dabrunz) +Files: src/testdir/test47.in + +Patch 7.4.802 +Problem: Using "A" in Visual mode while 'linebreak' is set is not tested. +Solution: Add a test for this, verifies the problem is fixed. (Ingo Karkat) +Files: src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.803 +Problem: C indent does not support C11 raw strings. (Mark Lodato) +Solution: Do not change indent inside the raw string. +Files: src/search.c, src/misc1.c, src/edit.c, src/ops.c, + src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.804 +Problem: Xxd doesn't have a license notice. +Solution: Add license as indicated by Juergen. +Files: src/xxd/xxd.c + +Patch 7.4.805 +Problem: The ruler shows "Bot" even when there are only filler lines + missing. (Gary Johnson) +Solution: Use "All" when the first line and one filler line are visible. +Files: src/buffer.c + +Patch 7.4.806 +Problem: CTRL-A in Visual mode doesn't work properly with "alpha" in + 'nrformats'. +Solution: Make it work. (Christian Brabandt) +Files: src/ops.c, src/testdir/test_increment.in, + src/testdir/test_increment.ok + +Patch 7.4.807 (after 7.4.798) +Problem: After CTRL-V CTRL-A mode isn't updated. (Hirohito Higashi) +Solution: Clear the command line or update the displayed command. +Files: src/normal.c + +Patch 7.4.808 +Problem: On MS-Windows 8 IME input doesn't work correctly. +Solution: Read console input before calling MsgWaitForMultipleObjects(). + (vim-jp, Nobuhiro Takasaki) +Files: src/os_win32.c + +Patch 7.4.809 (after 7.4.802) +Problem: Test is duplicated. +Solution: Roll back 7.4.802. +Files: src/testdir/test39.in, src/testdir/test39.ok + +Patch 7.4.810 +Problem: With a sequence of commands using buffers in diff mode E749 is + given. (itchyny) +Solution: Skip unloaded buffer. (Hirohito Higashi) +Files: src/diff.c + +Patch 7.4.811 +Problem: Invalid memory access when using "exe 'sc'". +Solution: Avoid going over the end of the string. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.4.812 +Problem: Gcc sanitizer complains about using a NULL pointer to memmove(). +Solution: Only call memmove when there is something to move. (Vittorio + Zecca) +Files: src/memline.c + +Patch 7.4.813 +Problem: It is not possible to save and restore character search state. +Solution: Add getcharsearch() and setcharsearch(). (James McCoy) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/search.pro, + src/search.c, src/testdir/test_charsearch.in, + src/testdir/test_charsearch.ok, src/testdir/Makefile, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.4.814 +Problem: Illegal memory access with "sy match a fold". +Solution: Check for empty string. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.4.815 +Problem: Invalid memory access when doing ":call g:". +Solution: Check for an empty name. (Dominique Pelle) +Files: src/eval.c + +Patch 7.4.816 +Problem: Invalid memory access when doing ":fun X(". +Solution: Check for missing ')'. (Dominique Pelle) +Files: src/eval.c + +Patch 7.4.817 +Problem: Invalid memory access in file_pat_to_reg_pat(). +Solution: Use vim_isspace() instead of checking for a space only. (Dominique + Pelle) +Files: src/fileio.c + +Patch 7.4.818 +Problem: 'linebreak' breaks c% if the last Visual selection was block. + (Chris Morganiser, Issue 389) +Solution: Handle Visual block mode differently. (Christian Brabandt) +Files: src/normal.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.819 +Problem: Beeping when running the tests. +Solution: Fix 41 beeps. (Roland Eggner) +Files: src/testdir/test17.in, src/testdir/test29.in, + src/testdir/test4.in, src/testdir/test61.in, + src/testdir/test82.in, src/testdir/test83.in, + src/testdir/test90.in, src/testdir/test95.in, + src/testdir/test_autoformat_join.in + +Patch 7.4.820 +Problem: Invalid memory access in file_pat_to_reg_pat. +Solution: Avoid looking before the start of a string. (Dominique Pelle) +Files: src/fileio.c + +Patch 7.4.821 +Problem: Coverity reports a few problems. +Solution: Avoid the warnings. (Christian Brabandt) +Files: src/ex_docmd.c, src/option.c, src/screen.c + +Patch 7.4.822 +Problem: More problems reported by coverity. +Solution: Avoid the warnings. (Christian Brabandt) +Files: src/os_unix.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_getln.c, src/fold.c, src/gui.c, src/gui_w16.c, + src/gui_w32.c, src/if_cscope.c, src/if_xcmdsrv.c, src/move.c, + src/normal.c, src/regexp.c, src/syntax.c, src/ui.c, src/window.c + +Patch 7.4.823 +Problem: Cursor moves after CTRL-A on alphabetic character. +Solution: (Hirohito Higashi, test by Christian Brabandt) +Files: src/testdir/test_increment.in, src/testdir/test_increment.ok, + src/ops.c + +Patch 7.4.824 (after 7.4.813) +Problem: Can't compile without the multibyte feature. (John Marriott) +Solution: Add #ifdef. +Files: src/eval.c + +Patch 7.4.825 +Problem: Invalid memory access for ":syn keyword x a[". +Solution: Do not skip over the NUL. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.4.826 +Problem: Compiler warnings and errors. +Solution: Make it build properly without the multibyte feature. +Files: src/eval.c, src/search.c + +Patch 7.4.827 +Problem: Not all test targets are in the Makefile. +Solution: Add the missing targets. +Files: src/Makefile + +Patch 7.4.828 +Problem: Crash when using "syn keyword x c". (Dominique Pelle) +Solution: Initialize the keyword table. (Raymond Ko, PR 397) +Files: src/syntax.c + +Patch 7.4.829 +Problem: Crash when clicking in beval balloon. (Travis Lebsock) +Solution: Use PostMessage() instead of DestroyWindow(). (Raymond Ko, PR 298) +Files: src/gui_w32.c + +Patch 7.4.830 +Problem: Resetting 'encoding' when doing ":set all&" causes problems. + (Bjorn Linse) Display is not updated. +Solution: Do not reset 'encoding'. Do a full redraw. +Files: src/option.c + +Patch 7.4.831 +Problem: When expanding `=expr` on the command line and encountering an + error, the command is executed anyway. +Solution: Bail out when an error is detected. +Files: src/misc1.c + +Patch 7.4.832 +Problem: $HOME in `=$HOME . '/.vimrc'` is expanded too early. +Solution: Skip over `=expr` when expanding environment names. +Files: src/misc1.c + +Patch 7.4.833 +Problem: More side effects of ":set all&" are missing. (Bj枚rn Linse) +Solution: Call didset_options() and add didset_options2() to collect more + side effects to take care of. Still not everything... +Files: src/option.c + +Patch 7.4.834 +Problem: gettabvar() doesn't work after Vim start. (Szymon Wrozynski) +Solution: Handle first window in tab still being NULL. (Christian Brabandt) +Files: src/eval.c, src/testdir/test91.in, src/testdir/test91.ok + +Patch 7.4.835 +Problem: Comparing utf-8 sequences does not handle different byte sizes + correctly. +Solution: Get the byte size of each character. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.4.836 +Problem: Accessing uninitialized memory. +Solution: Add missing calls to init_tv(). (Dominique Pelle) +Files: src/eval.c + +Patch 7.4.837 +Problem: Compiler warning with MSVC compiler when using +sniff. +Solution: Use Sleep() instead of _sleep(). (Tux) +Files: src/if_sniff.c + +Patch 7.4.838 (after 7.4.833) +Problem: Can't compile without the crypt feature. (John Marriott) +Solution: Add #ifdef. +Files: src/option.c + +Patch 7.4.839 +Problem: Compiler warning on 64-bit system. +Solution: Add cast to int. (Mike Williams) +Files: src/search.c + +Patch 7.4.840 (after 7.4.829) +Problem: Tooltip window stays open. +Solution: Send a WM_CLOSE message. (Jurgen Kramer) +Files: src/gui_w32.c + +Patch 7.4.841 +Problem: Can't compile without the multibyte feature. (John Marriott) +Solution: Add more #ifdef's. +Files: src/option.c + +Patch 7.4.842 (after 7.4.840) +Problem: Sending too many messages to close the balloon. +Solution: Only send a WM_CLOSE message. (Jurgen Kramer) +Files: src/gui_w32.c + +Patch 7.4.843 (after 7.4.835) +Problem: Still possible to go beyond the end of a string. +Solution: Check for NUL also in second string. (Dominique Pelle) +Files: src/misc2.c + +Patch 7.4.844 +Problem: When '#' is in 'isident' the is# comparator doesn't work. +Solution: Don't use vim_isIDc(). (Yasuhiro Matsumoto) +Files: src/eval.c, src/testdir/test_comparators.in, + src/testdir/test_comparators.ok, src/testdir/Makefile, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms + +Patch 7.4.845 +Problem: Compiler warning for possible loss of data. +Solution: Add a type cast. (Erich Ritz) +Files: src/misc1.c + +Patch 7.4.846 +Problem: Some GitHub users don't know how to use issues. +Solution: Add a file that explains the basics of contributing. +Files: Filelist, CONTRIBUTING.md + +Patch 7.4.847 +Problem: "vi)d" may leave a character behind. +Solution: Skip over multibyte character. (Christian Brabandt) +Files: src/search.c + +Patch 7.4.848 +Problem: CTRL-A on hex number in Visual block mode is incorrect. +Solution: Account for the "0x". (Hirohito Higashi) +Files: src/charset.c, src/testdir/test_increment.in, + src/testdir/test_increment.ok + +Patch 7.4.849 +Problem: Moving the cursor in Insert mode starts new undo sequence. +Solution: Add CTRL-G U to keep the undo sequence for the following cursor + movement command. (Christian Brabandt) +Files: runtime/doc/insert.txt, src/edit.c, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok + +Patch 7.4.850 (after 7.4.846) +Problem: <Esc> does not show up. +Solution: Use > and <. (Kazunobu Kuriyama) +Files: CONTRIBUTING.md + +Patch 7.4.851 +Problem: Saving and restoring the console buffer does not work properly. +Solution: Instead of ReadConsoleOutputA/WriteConsoleOutputA use + CreateConsoleScreenBuffer and SetConsoleActiveScreenBuffer. + (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.852 +Problem: On MS-Windows console Vim uses ANSI APIs for keyboard input and + console output, it cannot input/output Unicode characters. +Solution: Use Unicode APIs for console I/O. (Ken Takata, Yasuhiro Matsumoto) +Files: src/os_win32.c, src/ui.c, runtime/doc/options.txt + +Patch 7.4.853 +Problem: "zt" in diff mode does not always work properly. (Gary Johnson) +Solution: Don't count filler lines twice. (Christian Brabandt) +Files: src/move.c + +Patch 7.4.854 (after 7.4.850) +Problem: Missing information about runtime files. +Solution: Add section about runtime files. (Christian Brabandt) +Files: CONTRIBUTING.md + +Patch 7.4.855 +Problem: GTK: font glitches for combining characters +Solution: Use pango_shape_full() instead of pango_shape(). (luchr, PR #393) +Files: src/gui_gtk_x11.c + +Patch 7.4.856 +Problem: "zt" still doesn't work well with filler lines. (Gary Johnson) +Solution: Check for filler lines above the cursor. (Christian Brabandt) +Files: src/move.c + +Patch 7.4.857 +Problem: Dragging the current tab with the mouse doesn't work properly. +Solution: Take the current tabpage index into account. (Hirohito Higashi) +Files: src/normal.c + +Patch 7.4.858 +Problem: It's a bit clumsy to execute a command on a list of matches. +Solution: Add the ":ldo", ":lfdo", ":cdo" and ":cfdo" commands. (Yegappan + Lakshmanan) +Files: runtime/doc/cmdline.txt, runtime/doc/editing.txt, + runtime/doc/index.txt, runtime/doc/quickfix.txt, + runtime/doc/tabpage.txt, runtime/doc/windows.txt, src/ex_cmds.h, + src/ex_cmds2.c, src/ex_docmd.c, src/proto/quickfix.pro, + src/quickfix.c, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/test_cdo.in, + src/testdir/test_cdo.ok + +Patch 7.4.859 +Problem: Vim doesn't recognize all htmldjango files. +Solution: Recognize a comment. (Daniel Hahler, PR #410) +Files: runtime/filetype.vim + +Patch 7.4.860 +Problem: Filetype detection is outdated. +Solution: Include all recent and not-so-recent changes. +Files: runtime/filetype.vim + +Patch 7.4.861 (after 7.4.855) +Problem: pango_shape_full() is not always available. +Solution: Add a configure check. +Files: src/configure.in, src/auto/configure, src/config.h.in, + src/gui_gtk_x11.c + +Patch 7.4.862 (after 7.4.861) +Problem: Still problems with pango_shape_full() not available. +Solution: Change AC_TRY_COMPILE to AC_TRY_LINK. +Files: src/configure.in, src/auto/configure + +Patch 7.4.863 (after 7.4.856) +Problem: plines_nofill() used without the diff feature. +Solution: Define PLINES_NOFILL(). +Files: src/macros.h, src/move.c + +Patch 7.4.864 (after 7.4.858) +Problem: Tiny build fails. +Solution: Put qf_ items inside #ifdef. +Files: src/ex_docmd.c + +Patch 7.4.865 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize. +Files: src/ex_cmds2.c + +Patch 7.4.866 +Problem: Crash when changing the 'tags' option from a remote command. + (Benjamin Fritz) +Solution: Instead of executing messages immediately, use a queue, like for + netbeans. (James Kolb) +Files: src/ex_docmd.c, src/getchar.c, src/gui_gtk_x11.c, src/gui_w48.c, + src/gui_x11.c, src/if_xcmdsrv.c, src/misc2.c, src/os_unix.c, + src/proto/if_xcmdsrv.pro, src/proto/misc2.pro, src/macros.h + +Patch 7.4.867 (after 7.4.866) +Problem: Can't build on MS-Windows. (Taro Muraoka) +Solution: Adjust #ifdef. +Files: src/misc2.c + +Patch 7.4.868 +Problem: 'smarttab' is also effective when 'paste' is enabled. (Alexander + Monakov) +Solution: Disable 'smarttab' when 'paste' is set. (Christian Brabandt) + Do the same for 'expandtab'. +Files: src/option.c, src/structs.h + +Patch 7.4.869 +Problem: MS-Windows: scrolling may cause text to disappear when using an + Intel GPU. +Solution: Call GetPixel(). (Yohei Endo) +Files: src/gui_w48.c + +Patch 7.4.870 +Problem: May get into an invalid state when using getchar() in an + expression mapping. +Solution: Anticipate mod_mask to change. (idea by Yukihiro Nakadaira) +Files: src/getchar.c + +Patch 7.4.871 +Problem: Vim leaks memory, when 'wildignore' filters out all matches. +Solution: Free the files array when it becomes empty. +Files: src/misc1.c + +Patch 7.4.872 +Problem: Not using CI services available. +Solution: Add configuration files for travis and appveyor. (Ken Takata, + vim-jp, PR #401) +Files: .travis.yml, appveyor.yml, Filelist + +Patch 7.4.873 (after 7.4.866) +Problem: Compiler warning for unused variable. (Tony Mechelynck) +Solution: Remove the variable. Also fix int vs long_u mixup. +Files: src/if_xcmdsrv.c + +Patch 7.4.874 +Problem: MS-Windows: When Vim runs inside another application, the size + isn't right. +Solution: When in child mode compute the size differently. (Agorgianitis + Loukas) +Files: src/gui_w48.c + +Patch 7.4.875 +Problem: Not obvious how to contribute. +Solution: Add a remark about CONTRIBUTING.md to README.md +Files: README.md + +Patch 7.4.876 +Problem: Windows7: when using vim.exe with msys or msys2, conhost.exe + (console window provider on Windows7) will freeze or crash. +Solution: Make original screen buffer active, before executing external + program. And when the program is finished, revert to vim's one. + (Taro Muraoka) +Files: src/os_win32.c + +Patch 7.4.877 (after 7.4.843) +Problem: ":find" sometimes fails. (Excanoe) +Solution: Compare current characters instead of previous ones. +Files: src/misc2.c + +Patch 7.4.878 +Problem: Coverity error for clearing only one byte of struct. +Solution: Clear the whole struct. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.4.879 +Problem: Can't see line numbers in nested function calls. +Solution: Add line number to the file name. (Alberto Fanjul) +Files: src/eval.c + +Patch 7.4.880 +Problem: No build and coverage status. +Solution: Add links to the README file. (Christian Brabandt) +Files: README.md + +Patch 7.4.881 (after 7.4.879) +Problem: Test 49 fails. +Solution: Add line number to check of call stack. +Files: src/testdir/test49.vim + +Patch 7.4.882 +Problem: When leaving the command line window with CTRL-C while a + completion menu is displayed the menu isn't removed. +Solution: Force a screen update. (Hirohito Higashi) +Files: src/edit.c + +Patch 7.4.883 (after 7.4.818) +Problem: Block-mode replace works characterwise instead of blockwise after + column 147. (Issue #422) +Solution: Set Visual mode. (Christian Brabandt) +Files: src/normal.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.884 +Problem: Travis also builds on a tag push. +Solution: Filter out tag pushes. (Kenichi Ito) +Files: .travis.yml + +Patch 7.4.885 +Problem: When doing an upwards search without wildcards the search fails if + the initial directory doesn't exist. +Solution: Fix the non-wildcard case. (Stefan Kempf) +Files: src/misc2.c + +Patch 7.4.886 (after 7.4.876) +Problem: Windows7: Switching screen buffer causes flicker when using + system(). +Solution: Instead of actually switching screen buffer, duplicate the handle. + (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.887 +Problem: Using uninitialized memory for regexp with back reference. + (Dominique Pelle) +Solution: Initialize end_lnum. +Files: src/regexp_nfa.c + +Patch 7.4.888 +Problem: The OptionSet autocommands are not triggered from setwinvar(). +Solution: Do not use switch_win() when not needed. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.4.889 +Problem: Triggering OptionSet from setwinvar() isn't tested. +Solution: Add a test. (Christian Brabandt) +Files: src/testdir/test_autocmd_option.in, + src/testdir/test_autocmd_option.ok + +Patch 7.4.890 +Problem: Build failure when using dynamic python but not python3. +Solution: Adjust the #if to also include DYNAMIC_PYTHON3 and UNIX. +Files: src/if_python3.c + +Patch 7.4.891 +Problem: Indentation of array initializer is wrong. +Solution: Avoid that calling find_start_rawstring() changes the position + returned by find_start_comment(), add a test. (Hirohito Higashi) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.892 +Problem: On MS-Windows the iconv DLL may have a different name. +Solution: Also try libiconv2.dll and libiconv-2.dll. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 7.4.893 +Problem: C indenting is wrong below a "case (foo):" because it is + recognized as a C++ base class construct. Issue #38. +Solution: Check for the case keyword. +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.894 +Problem: vimrun.exe is picky about the number of spaces before -s. +Solution: Skip all spaces. (Cam Sinclair) +Files: src/vimrun.c + +Patch 7.4.895 +Problem: Custom command line completion does not work for a command + containing digits. +Solution: Skip over the digits. (suggested by Yasuhiro Matsumoto) +Files: src/ex_docmd.c + +Patch 7.4.896 +Problem: Editing a URL, which netrw should handle, doesn't work. +Solution: Avoid changing slashes to backslashes. (Yasuhiro Matsumoto) +Files: src/fileio.c, src/os_mswin.c + +Patch 7.4.897 +Problem: Freeze and crash when there is a sleep in a remote command. + (Karl Yngve Lerv氓g) +Solution: Remove a message from the queue before dealing with it. (James + Kolb) +Files: src/if_xcmdsrv.c + +Patch 7.4.898 +Problem: The 'fixendofline' option is set on with ":edit". +Solution: Don't set the option when clearing a buffer. (Yasuhiro Matsumoto) +Files: src/buffer.c + +Patch 7.4.899 +Problem: README file is not optimal. +Solution: Move buttons, update some text. (closes #460) +Files: README.txt, README.md + +Patch 7.4.900 (after 7.4.899) +Problem: README file can still be improved +Solution: Add a couple of links. (Christian Brabandt) +Files: README.md + +Patch 7.4.901 +Problem: When a BufLeave autocommand changes folding in a way it syncs + undo, undo can be corrupted. +Solution: Prevent undo sync. (Jacob Niehus) +Files: src/popupmnu.c + +Patch 7.4.902 +Problem: Problems with using the MS-Windows console. +Solution: Revert patches 7.4.851, 7.4.876 and 7.4.886 until we find a better + solution. (suggested by Ken Takata) +Files: src/os_win32.c + +Patch 7.4.903 +Problem: MS-Windows: When 'encoding' differs from the current code page, + expanding wildcards may cause illegal memory access. +Solution: Allocate a longer buffer. (Ken Takata) +Files: src/misc1.c + +Patch 7.4.904 +Problem: Vim does not provide .desktop files. +Solution: Include and install .desktop files. (James McCoy, closes #455) +Files: Filelist, runtime/vim.desktop, runtime/gvim.desktop, src/Makefile + +Patch 7.4.905 +Problem: Python interface can produce error "vim.message' object has no + attribute 'isatty'". +Solution: Add dummy isatty(), readable(), etc. (closes #464) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.906 +Problem: On MS-Windows the viminfo file is (always) given the hidden + attribute. (raulnac) +Solution: Check the hidden attribute in a different way. (Ken Takata) +Files: src/ex_cmds.c, src/os_win32.c, src/os_win32.pro + +Patch 7.4.907 +Problem: Libraries for dynamically loading interfaces can only be defined + at compile time. +Solution: Add options to specify the dll names. (Kazuki Sakamoto, + closes #452) +Files: runtime/doc/if_lua.txt, runtime/doc/if_perl.txt, + runtime/doc/if_pyth.txt, runtime/doc/if_ruby.txt, + runtime/doc/options.txt, src/if_lua.c, src/if_perl.xs, + src/if_python.c, src/if_python3.c, src/if_ruby.c, src/option.c, + src/option.h + +Patch 7.4.908 (after 7.4.907) +Problem: Build error with MingW compiler. (Cesar Romani) +Solution: Change #if into #ifdef. +Files: src/if_perl.xs + +Patch 7.4.909 (after 7.4.905) +Problem: "make install" fails. +Solution: Only try installing desktop files if the destination directory + exists. +Files: src/Makefile + +Patch 7.4.910 (after 7.4.905) +Problem: Compiler complains about type punned pointer. +Solution: Use another way to increment the ref count. +Files: src/if_py_both.h + +Patch 7.4.911 +Problem: t_Ce and t_Cs are documented but not supported. (Hirohito Higashi) +Solution: Define the options. +Files: src/option.c + +Patch 7.4.912 +Problem: Wrong indenting for C++ constructor. +Solution: Recognize ::. (Anhong) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 7.4.913 +Problem: No utf-8 support for the hangul input feature. +Solution: Add utf-8 support. (Namsh) +Files: src/gui.c, src/hangulin.c, src/proto/hangulin.pro, src/screen.c, + src/ui.c, runtime/doc/hangulin.txt, src/feature.h + +Patch 7.4.914 +Problem: New compiler warning: logical-not-parentheses +Solution: Silence the warning. +Files: src/term.c + +Patch 7.4.915 +Problem: When removing from 'path' and then adding, a comma may go missing. + (Malcolm Rowe) +Solution: Fix the check for P_ONECOMMA. (closes #471) +Files: src/option.c, src/testdir/test_options.in, + src/testdir/test_options.ok + +Patch 7.4.916 +Problem: When running out of memory while copying a dict memory may be + freed twice. (ZyX) +Solution: Do not call the garbage collector when running out of memory. +Files: src/misc2.c + +Patch 7.4.917 +Problem: Compiler warning for comparing signed and unsigned. +Solution: Add a type cast. +Files: src/hangulin.c + +Patch 7.4.918 +Problem: A digit in an option name has problems. +Solution: Rename 'python3dll' to 'pythonthreedll'. +Files: src/option.c, src/option.h, runtime/doc/options.txt + +Patch 7.4.919 +Problem: The dll options are not in the options window. +Solution: Add the dll options. And other fixes. +Files: runtime/optwin.vim + +Patch 7.4.920 +Problem: The rubydll option is not in the options window. +Solution: Add the rubydll option. +Files: runtime/optwin.vim + +Patch 7.4.921 (after 7.4.906) +Problem: Missing proto file update. (Randall W. Morris) +Solution: Add the missing line for mch_ishidden. +Files: src/proto/os_win32.pro + +Patch 7.4.922 +Problem: Leaking memory with ":helpt {dir-not-exists}". +Solution: Free dirname. (Dominique Pelle) +Files: src/ex_cmds.c + +Patch 7.4.923 +Problem: Prototypes not always generated. +Solution: Change #if to OR with PROTO. +Files: src/window.c + +Patch 7.4.924 +Problem: DEVELOPER_DIR gets reset by configure. +Solution: Do not reset DEVELOPER_DIR when there is no --with-developer-dir + argument. (Kazuki Sakamoto, closes #482) +Files: src/configure.in, src/auto/configure + +Patch 7.4.925 +Problem: User may yank or put using the register being recorded in. +Solution: Add the recording register in the message. (Christian Brabandt, + closes #470) +Files: runtime/doc/options.txt, runtime/doc/repeat.txt, src/ops.c, + src/option.h, src/screen.c + +Patch 7.4.926 +Problem: Completing the longest match doesn't work properly with multibyte + characters. +Solution: When using multibyte characters use another way to find the + longest match. (Hirohito Higashi) +Files: src/ex_getln.c, src/testdir/test_utf8.in, src/testdir/test_utf8.ok + +Patch 7.4.927 +Problem: Ruby crashes when there is a runtime error. +Solution: Use ruby_options() instead of ruby_process_options(). (Damien) +Files: src/if_ruby.c + +Patch 7.4.928 +Problem: A clientserver message interrupts handling keys of a mapping. +Solution: Have mch_inchar() send control back to WaitForChar when it is + interrupted by server message. (James Kolb) +Files: src/os_unix.c + +Patch 7.4.929 +Problem: "gv" after paste selects one character less if 'selection' is + "exclusive". +Solution: Increment the end position. (Christian Brabandt) +Files: src/normal.c, src/testdir/test94.in, src/testdir/test94.ok + +Patch 7.4.930 +Problem: MS-Windows: Most users appear not to like the window border. +Solution: Remove WS_EX_CLIENTEDGE. (Ian Halliday) +Files: src/gui_w32.c + +Patch 7.4.931 (after 7.4.929) +Problem: Test 94 fails on some systems. +Solution: Set 'encoding' to utf-8. +Files: src/testdir/test94.in + +Patch 7.4.932 (after 7.4.926) +Problem: test_utf8 has confusing dummy command. +Solution: Use a real command instead of a colon. +Files: src/testdir/test_utf8.in + +Patch 7.4.933 (after 7.4.926) +Problem: Crash when using longest completion match. +Solution: Fix array index. +Files: src/ex_getln.c + +Patch 7.4.934 +Problem: Appveyor also builds on a tag push. +Solution: Add a skip_tags line. (Kenichi Ito, closes #489) +Files: appveyor.yml + +Patch 7.4.935 (after 7.4.932) +Problem: test_utf8 fails on MS-Windows when executed with gvim. +Solution: Use the insert flag on feedkeys() to put the string before the + ":" that was already read when checking for available chars. +Files: src/testdir/test_utf8.in + +Patch 7.4.936 +Problem: Crash when dragging with the mouse. +Solution: Add safety check for NULL pointer. Check mouse position for valid + value. (Hirohito Higashi) +Files: src/window.c, src/term.c + +Patch 7.4.937 +Problem: Segfault reading uninitialized memory. +Solution: Do not read match \z0, it does not exist. (Marius Gedminas, closes + #497) +Files: src/regexp_nfa.c + +Patch 7.4.938 +Problem: X11 and GTK have more mouse buttons than Vim supports. +Solution: Recognize more mouse buttons. (Benoit Pierre, closes #498) +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 7.4.939 +Problem: Memory leak when encountering a syntax error. +Solution: Free the memory. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.4.940 +Problem: vt52 terminal codes are not correct. +Solution: Move entries outside of #if. (Random) Adjustments based on + documented codes. +Files: src/term.c + +Patch 7.4.941 +Problem: There is no way to ignore case only for tag searches. +Solution: Add the 'tagcase' option. (Gary Johnson) +Files: runtime/doc/options.txt, runtime/doc/quickref.txt, + runtime/doc/tagsrch.txt, runtime/doc/usr_29.txt, + runtime/optwin.vim, src/Makefile, src/buffer.c, src/option.c, + src/option.h, src/structs.h, src/tag.c, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_tagcase.in, src/testdir/test_tagcase.ok + +Patch 7.4.942 (after 7.4.941) +Problem: test_tagcase breaks for small builds. +Solution: Bail out of the test early. (Hirohito Higashi) +Files: src/testdir/test_tagcase.in + +Patch 7.4.943 +Problem: Tests are not run. +Solution: Add test_writefile to makefiles. (Ken Takata) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.944 +Problem: Writing tests for Vim script is hard. +Solution: Add assertEqual(), assertFalse() and assertTrue() functions. Add + the v:errors variable. Add the runtest script. Add a first new + style test script. +Files: src/eval.c, src/vim.h, src/misc2.c, src/testdir/Makefile, + src/testdir/runtest.vim, src/testdir/test_assert.vim, + runtime/doc/eval.txt + +Patch 7.4.945 (after 7.4.944) +Problem: New style testing is incomplete. +Solution: Add the runtest script to the list of distributed files. + Add the new functions to the function overview. + Rename the functions to match Vim function style. + Move undolevels testing into a new style test script. +Files: Filelist, runtime/doc/usr_41.txt, runtime/doc/eval.txt, + src/testdir/test_assert.vim, src/testdir/Makefile, + src/testdir/test_undolevels.vim, src/testdir/test100.in, + src/testdir/test100.ok + +Patch 7.4.946 (after 7.4.945) +Problem: Missing changes in source file. +Solution: Include changes to the eval.c file. +Files: src/eval.c + +Patch 7.4.947 +Problem: Test_listchars fails with MingW. (Michael Soyka) +Solution: Add the test to the ones that need the fileformat fixed. + (Christian Brabandt) +Files: src/testdir/Make_ming.mak + +Patch 7.4.948 +Problem: Can't build when the insert_expand feature is disabled. +Solution: Add #ifdefs. (Dan Pasanen, closes #499) +Files: src/eval.c, src/fileio.c + +Patch 7.4.949 +Problem: When using 'colorcolumn' and there is a sign with a fullwidth + character the highlighting is wrong. (Andrew Stewart) +Solution: Only increment vcol when in the right state. (Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok + +Patch 7.4.950 +Problem: v:errors is not initialized. +Solution: Initialize it to an empty list. (Thinca) +Files: src/eval.c + +Patch 7.4.951 +Problem: Sorting number strings does not work as expected. (Luc Hermitte) +Solution: Add the "N" argument to sort() +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test_alot.vim, + src/testdir/test_sort.vim, src/testdir/Makefile + +Patch 7.4.952 +Problem: 'lispwords' is tested in the old way. +Solution: Make a new style test for 'lispwords'. +Files: src/testdir/test_alot.vim, src/testdir/test_lispwords.vim, + src/testdir/test100.in, src/testdir/test100.ok, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.953 +Problem: When a test script navigates to another buffer the .res file is + created with the wrong name. +Solution: Use the "testname" for the .res file. (Damien) +Files: src/testdir/runtest.vim + +Patch 7.4.954 +Problem: When using Lua there may be a crash. (issue #468) +Solution: Avoid using an uninitialized tv. (Yukihiro Nakadaira) +Files: src/if_lua.c + +Patch 7.4.955 +Problem: Vim doesn't recognize .pl6 and .pod6 files. +Solution: Recognize them as perl6 and pod6. (Mike Eve, closes #511) +Files: runtime/filetype.vim + +Patch 7.4.956 +Problem: A few more file name extensions not recognized. +Solution: Add .asciidoc, .bzl, .gradle, etc. +Files: runtime/filetype.vim + +Patch 7.4.957 +Problem: Test_tagcase fails when using another language than English. +Solution: Set the messages language to C. (Kenichi Ito) +Files: src/testdir/test_tagcase.in + +Patch 7.4.958 +Problem: Vim checks if the directory "$TMPDIR" exists. +Solution: Do not check if the name starts with "$". +Files: src/fileio.c + +Patch 7.4.959 +Problem: When setting 'term' the clipboard ownership is lost. +Solution: Do not call clip_init(). (James McCoy) +Files: src/term.c + +Patch 7.4.960 +Problem: Detecting every version of nmake is clumsy. +Solution: Use a tiny C program to get the version of _MSC_VER. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 7.4.961 +Problem: Test107 fails in some circumstances. +Solution: When using "zt", "zb" and "z=" recompute the fraction. +Files: src/normal.c, src/window.c, src/proto/window.pro + +Patch 7.4.962 +Problem: Cannot run the tests with gvim. Cannot run individual new tests. +Solution: Add the -f flag. Add new test targets in Makefile. +Files: src/Makefile, src/testdir/Makefile + +Patch 7.4.963 +Problem: test_listlbr_utf8 sometimes fails. +Solution: Don't use a literal multibyte character but <C-V>uXXXX. Do not + dump the screen highlighting. (Christian Brabandt, closes #518) +Files: src/testdir/test_listlbr_utf8.in, src/testdir/test_listlbr_utf8.ok + +Patch 7.4.964 +Problem: Test 87 doesn't work in a shadow directory. +Solution: Handle the extra subdirectory. (James McCoy, closes #515) +Files: src/testdir/test87.in + +Patch 7.4.965 +Problem: On FreeBSD /dev/fd/ files are special. +Solution: Use is_dev_fd_file() also for FreeBSD. (Derek Schrock, closes #521) +Files: src/fileio.c + +Patch 7.4.966 +Problem: Configure doesn't work with a space in a path. +Solution: Put paths in quotes. (James McCoy, closes #525) +Files: src/configure.in, src/auto/configure + +Patch 7.4.967 +Problem: Cross compilation on MS-windows doesn't work well. +Solution: Tidy up cross compilation across architectures with Visual Studio. + (Mike Williams) +Files: src/Make_mvc.mak + +Patch 7.4.968 +Problem: test86 and test87 are flaky in Appveyor. +Solution: Reduce the count from 8 to 7. (suggested by ZyX) +Files: src/testdir/test86.in, src/testdir/test87.in + +Patch 7.4.969 +Problem: Compiler warnings on Windows x64 build. +Solution: Add type casts. (Mike Williams) +Files: src/option.c + +Patch 7.4.970 +Problem: Rare crash in getvcol(). (Timo Mihaljov) +Solution: Check for the buffer being NULL in init_preedit_start_col. + (Hirohito Higashi, Christian Brabandt) +Files: src/mbyte.c + +Patch 7.4.971 +Problem: The asin() function can't be used. +Solution: Sort the function table properly. (Watiko) +Files: src/eval.c + +Patch 7.4.972 +Problem: Memory leak when there is an error in setting an option. +Solution: Free the saved value (Christian Brabandt) +Files: src/option.c + +Patch 7.4.973 +Problem: When pasting on the command line line breaks result in literal + <CR> characters. This makes pasting a long file name difficult. +Solution: Skip the characters. +Files: src/ex_getln.c, src/ops.c + +Patch 7.4.974 +Problem: When using :diffsplit the cursor jumps to the first line. +Solution: Put the cursor on the line related to where the cursor was before + the split. +Files: src/diff.c + +Patch 7.4.975 +Problem: Using ":sort" on a very big file sometimes causes text to be + corrupted. (John Beckett) +Solution: Copy the line into a buffer before calling ml_append(). +Files: src/ex_cmds.c + +Patch 7.4.976 +Problem: When compiling Vim for MSYS2 (linked with msys-2.0.dll), the Win32 + clipboard is not enabled. +Solution: Recognize MSYS like CYGWIN. (Ken Takata) +Files: src/configure.in, src/auto/configure + +Patch 7.4.977 +Problem: 'linebreak' does not work properly when using "space" in + 'listchars'. +Solution: (Hirohito Higashi, Christian Brabandt) +Files: src/screen.c, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok + +Patch 7.4.978 +Problem: test_cdo fails when using another language than English. +Solution: Set the language to C. (Dominique Pelle, Kenichi Ito) +Files: src/testdir/test_cdo.in + +Patch 7.4.979 +Problem: When changing the crypt key the blocks read from disk are not + decrypted. +Solution: Also call ml_decrypt_data() when mf_old_key is set. (Ken Takata) +Files: src/memfile.c + +Patch 7.4.980 +Problem: Tests for :cdo, :ldo, etc. are outdated. +Solution: Add new style tests for these commands. (Yegappan Lakshmanan) +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/test_cdo.in, src/testdir/test_cdo.ok, + src/testdir/test_cdo.vim + +Patch 7.4.981 +Problem: An error in a test script goes unnoticed. +Solution: Source the test script inside try/catch. (Hirohito Higashi) +Files: src/testdir/runtest.vim + +Patch 7.4.982 +Problem: Keeping the list of tests updated is a hassle. +Solution: Move the list to a separate file, so that it only needs to be + updated in one place. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/Make_all.mak + +Patch 7.4.983 +Problem: Executing one test after "make testclean" doesn't work. +Solution: Add a dependency on test1.out. +Files: src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/Make_all.mak + +Patch 7.4.984 +Problem: searchpos() always starts searching in the first column, which is + not what some people expect. (Brett Stahlman) +Solution: Add the 'z' flag: start at the specified column. +Files: src/vim.h, src/eval.c, src/search.c, + src/testdir/test_searchpos.vim, src/testdir/test_alot.vim, + runtime/doc/eval.txt + +Patch 7.4.985 +Problem: Can't build with Ruby 2.3.0. +Solution: Use the new TypedData_XXX macro family instead of Data_XXX. Use + TypedData. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.986 +Problem: Test49 doesn't work on MS-Windows. test70 is listed twice. +Solution: Move test49 to the group not used on Amiga and MS-Windows. + Remove test70 from SCRIPTS_WIN32. +Files: src/testdir/Make_all.mak, src/testdir/Make_dos.mak + +Patch 7.4.987 (after 7.4.985) +Problem: Can't build with Ruby 1.9.2. +Solution: Require Rub 2.0 for defining USE_TYPEDDATA. +Files: src/if_ruby.c + +Patch 7.4.988 (after 7.4.982) +Problem: Default test target is test49.out. +Solution: Add a build rule before including Make_all.mak. +Files: src/testdir/Make_dos.mak, src/testdir/Make_amiga.mak, + src/testdir/Make_ming.mak, src/testdir/Make_os2.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.989 +Problem: Leaking memory when hash_add() fails. Coverity error 99126. +Solution: When hash_add() fails free the memory. +Files: src/eval.c + +Patch 7.4.990 +Problem: Test 86 fails on AppVeyor. +Solution: Do some registry magic. (Ken Takata) +Files: appveyor.yml + +Patch 7.4.991 +Problem: When running new style tests the output is not visible. +Solution: Add the testdir/messages file and show it. Update the list of + test names. +Files: src/Makefile, src/testdir/Makefile, src/testdir/runtest.vim + +Patch 7.4.992 +Problem: Makefiles for MS-Windows in src/po are outdated. +Solution: Make them work. (Ken Takata, Taro Muraoka) +Files: src/po/Make_cyg.mak, src/po/Make_ming.mak, src/po/Make_mvc.mak, + src/po/README_mingw.txt, src/po/README_mvc.txt + +Patch 7.4.993 +Problem: Test 87 is flaky on AppVeyor. +Solution: Reduce the minimum background thread count. +Files: src/testdir/test86.in, src/testdir/test87.in + +Patch 7.4.994 +Problem: New style tests are not run on MS-Windows. +Solution: Add the new style tests. +Files: src/testdir/Make_dos.mak + +Patch 7.4.995 +Problem: gdk_pixbuf_new_from_inline() is deprecated. +Solution: Generate auto/gui_gtk_gresources.c. (Kazunobu Kuriyama, + closes #507) +Files: src/Makefile, src/auto/configure, src/config.h.in, + src/config.mk.in, src/configure.in, src/gui_gtk.c, + src/gui_gtk_gresources.xml, src/gui_gtk_x11.c, + src/proto/gui_gtk_gresources.pro, + pixmaps/stock_vim_build_tags.png, pixmaps/stock_vim_find_help.png, + pixmaps/stock_vim_save_all.png, + pixmaps/stock_vim_session_load.png, + pixmaps/stock_vim_session_new.png, + pixmaps/stock_vim_session_save.png, pixmaps/stock_vim_shell.png, + pixmaps/stock_vim_window_maximize.png, + pixmaps/stock_vim_window_maximize_width.png, + pixmaps/stock_vim_window_minimize.png, + pixmaps/stock_vim_window_minimize_width.png, + pixmaps/stock_vim_window_split.png, + pixmaps/stock_vim_window_split_vertical.png + +Patch 7.4.996 +Problem: New GDK files and testdir/Make_all.mak missing from distribution. + PC build instructions are outdated. +Solution: Add the file to the list. Update PC build instructions. +Files: Filelist, Makefile + +Patch 7.4.997 +Problem: "make shadow" was sometimes broken. +Solution: Add a test for it. (James McCoy, closes #520) +Files: .travis.yml + +Patch 7.4.998 +Problem: Running tests in shadow directory fails. Test 49 fails. +Solution: Link more files for the shadow directory. Make test 49 ends up in + the right buffer. +Files: src/Makefile, src/testdir/test49.in + +Patch 7.4.999 +Problem: "make shadow" creates a broken link. (Tony Mechelynck) +Solution: Remove vimrc.unix from the list. +Files: src/Makefile + +Patch 7.4.1000 +Problem: Test 49 is slow and doesn't work on MS-Windows. +Solution: Start moving parts of test 49 to test_viml. +Files: src/Makefile, src/testdir/runtest.vim, src/testdir/test_viml.vim, + src/testdir/test49.vim, src/testdir/test49.ok + +Patch 7.4.1001 (after 7.4.1000) +Problem: test_viml isn't run. +Solution: Include change in makefile. +Files: src/testdir/Make_all.mak + +Patch 7.4.1002 +Problem: Cannot run an individual test on MS-Windows. +Solution: Move the rule to run test1 downwards. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.4.1003 +Problem: Travis could check a few more things. +Solution: Run autoconf on one of the builds. (James McCoy, closes #510) + Also build with normal features. +Files: .travis.yml + +Patch 7.4.1004 +Problem: Using Makefile when auto/config.mk does not exist results in + warnings. +Solution: Use default values for essential variables. +Files: src/Makefile + +Patch 7.4.1005 +Problem: Vim users are not always happy. +Solution: Make them happy. +Files: src/ex_cmds.h, src/ex_cmds.c, src/proto/ex_cmds.pro + +Patch 7.4.1006 +Problem: The fix in patch 7.3.192 is not tested. +Solution: Add a test, one for each regexp engine. (Elias Diem) +Files: src/testdir/test44.in, src/testdir/test44.ok, + src/testdir/test99.in, src/testdir/test99.ok + +Patch 7.4.1007 +Problem: When a symbolic link points to a file in the root directory, the + swapfile is not correct. +Solution: Do not try getting the full name of a file in the root directory. + (Milly, closes #501) +Files: src/os_unix.c + +Patch 7.4.1008 +Problem: The OS/2 code pollutes the source while nobody uses it these days. +Solution: Drop the support for OS/2. +Files: src/feature.h, src/globals.h, src/macros.h, src/option.h, + src/os_unix.c, src/os_unix.h, src/proto/os_unix.pro, src/vim.h, + src/digraph.c, src/eval.c, src/ex_cmds.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, src/getchar.c, src/memline.c, + src/misc1.c, src/misc2.c, src/netbeans.c, src/option.c, + src/term.c, src/ui.c, src/window.c, src/os_os2_cfg.h, + src/Make_os2.mak, src/testdir/Make_os2.mak, src/testdir/os2.vim, + src/INSTALL, runtime/doc/os_os2.txt + +Patch 7.4.1009 +Problem: There are still #ifdefs for ARCHIE. +Solution: Remove references to ARCHIE, the code was removed in Vim 5. +Files: src/ex_cmds.c, src/ex_docmd.c, src/fileio.c, src/main.c, + src/memline.c, src/option.c, src/term.c + +Patch 7.4.1010 +Problem: Some developers are unhappy while running tests. +Solution: Add a test and some color. +Files: src/ex_cmds.c, src/testdir/test_assert.vim + +Patch 7.4.1011 +Problem: Can't build with Strawberry Perl. +Solution: Include stdbool.h. (Ken Takata, closes #328) +Files: Filelist, src/Make_mvc.mak, src/if_perl_msvc/stdbool.h + +Patch 7.4.1012 +Problem: Vim overwrites the value of $PYTHONHOME. +Solution: Do not set $PYTHONHOME if it is already set. (Kazuki Sakamoto, + closes #500) +Files: src/if_python.c, src/if_python3.c + +Patch 7.4.1013 +Problem: The local value of 'errorformat' is not used for ":lexpr" and + ":cexpr". +Solution: Use the local value if it exists. (Christian Brabandt) Adjust the + help for this. +Files: runtime/doc/quickfix.txt, src/quickfix.c + +Patch 7.4.1014 +Problem: `fnamemodify('.', ':.')` returns an empty string in Cygwin. +Solution: Use CCP_RELATIVE in the call to cygwin_conv_path. (Jacob Niehus, + closes #505) +Files: src/os_unix.c + +Patch 7.4.1015 +Problem: The column is not restored properly when the matchparen plugin is + used in Insert mode and the cursor is after the end of the line. +Solution: Set the curswant flag. (Christian Brabandt). Also fix + highlighting the match of the character before the cursor. +Files: src/eval.c, runtime/plugin/matchparen.vim + +Patch 7.4.1016 +Problem: Still a few OS/2 pieces remain. +Solution: Delete more. +Files: Filelist, README_os2.txt, testdir/todos.vim, src/xxd/Make_os2.mak + +Patch 7.4.1017 +Problem: When there is a backslash in an option ":set -=" doesn't work. +Solution: Handle a backslash better. (Jacob Niehus) Add a new test, merge + in old test. +Files: src/testdir/test_cdo.vim, src/testdir/test_set.vim, + src/testdir/test_alot.vim, src/option.c, src/testdir/test_set.in, + src/testdir/test_set.ok, src/Makefile + +Patch 7.4.1018 (after 7.4.1017) +Problem: Failure running tests. +Solution: Add missing change to list of old style tests. +Files: src/testdir/Make_all.mak + +Patch 7.4.1019 +Problem: Directory listing of "src" is too long. +Solution: Rename the resources file to make it shorter. +Files: src/gui_gtk_gresources.xml, src/gui_gtk_res.xml, src/Makefile, + Filelist + +Patch 7.4.1020 +Problem: On MS-Windows there is no target to run tests with gvim. +Solution: Add the testgvim target. +Files: src/Make_mvc.mak + +Patch 7.4.1021 +Problem: Some makefiles are outdated. +Solution: Add a note to warn developers. +Files: src/Make_manx.mak, src/Make_bc3.mak, src/Make_bc5.mak, + src/Make_djg.mak, src/Make_w16.mak + +Patch 7.4.1022 +Problem: The README file contains some outdated information. +Solution: Update the information about supported systems. +Files: README.txt, README.md + +Patch 7.4.1023 +Problem: The distribution files for MS-Windows use CR-LF, which is + inconsistent with what one gets from github. +Solution: Use LF in the distribution files. +Files: Makefile + +Patch 7.4.1024 +Problem: Interfaces for MS-Windows are outdated. +Solution: Use Python 2.7.10, Python 3.4.4, Perl 5.22, TCL 8.6. +Files: src/bigvim.bat + +Patch 7.4.1025 +Problem: Version in installer needs to be updated manually. +Solution: Generate a file with the version number. (Guopeng Wen) +Files: Makefile, nsis/gvim.nsi, nsis/gvim_version.nsh + +Patch 7.4.1026 +Problem: When using MingW the tests do not clean up all files. E.g. test + 17 leaves Xdir1 behind. (Michael Soyka) +Solution: Also delete directories, like Make_dos.mak. Delete files after + directories to reduce warnings. +Files: src/testdir/Make_ming.mak, src/testdir/Make_dos.mak + +Patch 7.4.1027 +Problem: No support for binary numbers. +Solution: Add "bin" to 'nrformats'. (Jason Schulz) +Files: runtime/doc/change.txt, runtime/doc/eval.txt, + runtime/doc/version7.txt, src/charset.c, src/eval.c, + src/ex_cmds.c, src/ex_getln.c, src/misc2.c, src/ops.c, + src/option.c, src/proto/charset.pro, src/spell.c, + src/testdir/test57.in, src/testdir/test57.ok, + src/testdir/test58.in, src/testdir/test58.ok, + src/testdir/test_increment.in, src/testdir/test_increment.ok, + src/vim.h + +Patch 7.4.1028 +Problem: Nsis version file missing from the distribution. +Solution: Add the file to the list. +Files: Filelist + +Patch 7.4.1029 (after 7.4.1027) +Problem: test_increment fails on systems with 32 bit long. +Solution: Only test with 32 bits. +Files: src/testdir/test_increment.in, src/testdir/test_increment.ok + +Patch 7.4.1030 +Problem: test49 is still slow. +Solution: Move more tests from old to new style. +Files: src/testdir/test_viml.vim, src/testdir/test49.vim, + src/testdir/test49.ok, src/testdir/runtest.vim + +Patch 7.4.1031 +Problem: Can't build with Python interface using MingW. +Solution: Update the Makefile. (Yasuhiro Matsumoto) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak + +Patch 7.4.1032 +Problem: message from assert_false() does not look nice. +Solution: Handle missing sourcing_name. Use right number of spaces. (Watiko) + Don't use line number if it's zero. +Files: src/eval.c + +Patch 7.4.1033 +Problem: Memory use on MS-Windows is very conservative. +Solution: Use the global memory status to estimate amount of memory. + (Mike Williams) +Files: src/os_win32.c, src/os_win32.h, src/proto/os_win32.pro + +Patch 7.4.1034 +Problem: There is no test for the 'backspace' option behavior. +Solution: Add a test. (Hirohito Higashi) +Files: src/testdir/test_alot.vim, src/testdir/test_backspace_opt.vim + +Patch 7.4.1035 +Problem: An Ex range gets adjusted for folded lines even when the range is + not using line numbers. +Solution: Only adjust line numbers for folding. (Christian Brabandt) +Files: runtime/doc/fold.txt, src/ex_docmd.c + +Patch 7.4.1036 +Problem: Only terminals with up to 256 colors work properly. +Solution: Use the 256 color behavior for all terminals with 256 or more + colors. (Robert de Bath, closes #504) +Files: src/syntax.c + +Patch 7.4.1037 +Problem: Using "q!" when there is a modified hidden buffer does not unload + the current buffer, resulting in the need to abandon it again. +Solution: When using "q!" unload the current buffer when needed. (Yasuhiro + Matsumoto, Hirohito Higashi) +Files: src/testdir/test31.in, src/testdir/test31.ok, + runtime/doc/editing.txt, src/ex_cmds2.c, src/ex_docmd.c, + src/gui.c, src/gui_gtk_x11.c, src/os_unix.c, + src/proto/ex_cmds2.pro + +Patch 7.4.1038 +Problem: Still get a warning for a deprecated function with gdk-pixbuf + 2.31. +Solution: Change minimum minor version from 32 to 31. +Files: src/configure.in, src/auto/configure + +Patch 7.4.1039 (after 7.4.1037) +Problem: Test 31 fails with small build. +Solution: Bail out for small build. (Hirohito Higashi) +Files: src/testdir/test31.in + +Patch 7.4.1040 +Problem: The tee command is not available on MS-Windows. +Solution: Adjust tee.c for MSVC and add a makefile. (Yasuhiro Matsumoto) +Files: src/tee/tee.c, src/tee/Make_mvc.mak, src/Make_mvc.mak + +Patch 7.4.1041 +Problem: Various small things. +Solution: Add file to list of distributed files. Adjust README. Fix typo. +Files: Filelist, src/testdir/README.txt, src/testdir/test_charsearch.in, + src/INSTALLmac.txt + +Patch 7.4.1042 +Problem: g-CTRL-G shows the word count, but there is no way to get the word + count in a script. +Solution: Add the wordcount() function. (Christian Brabandt) +Files: runtime/doc/editing.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, src/eval.c, src/normal.c, src/ops.c, + src/proto/ops.pro, src/testdir/test_wordcount.in, + src/testdir/test_wordcount.ok, src/testdir/Make_all.mak + +Patch 7.4.1043 +Problem: Another small thing. +Solution: Now really update the Mac install text. +Files: src/INSTALLmac.txt + +Patch 7.4.1044 (after 7.4.1042) +Problem: Can't build without the +eval feature. +Solution: Add #ifdef. +Files: src/ops.c + +Patch 7.4.1045 +Problem: Having shadow and coverage on the same build results in the source + files not being available in the coverage view. +Solution: Move using shadow to the normal build. +Files: .travis.yml + +Patch 7.4.1046 +Problem: No test coverage for menus. +Solution: Load the standard menus and check there is no error. +Files: src/testdir/test_menu.vim, src/testdir/test_alot.vim + +Patch 7.4.1047 (after patch 7.4.1042) +Problem: Tests fail on MS-Windows. +Solution: Set 'selection' to inclusive. +Files: src/testdir/test_wordcount.in + +Patch 7.4.1048 (after patch 7.4.1047) +Problem: Wordcount test still fail on MS-Windows. +Solution: Set 'fileformat' to "unix". +Files: src/testdir/test_wordcount.in + +Patch 7.4.1049 (after patch 7.4.1048) +Problem: Wordcount test still fails on MS-Windows. +Solution: Set 'fileformats' to "unix". +Files: src/testdir/test_wordcount.in + +Patch 7.4.1050 +Problem: Warning for unused var with tiny features. (Tony Mechelynck) +Solution: Add #ifdef. Use vim_snprintf(). Reduce number of statements. +Files: src/ops.c + +Patch 7.4.1051 +Problem: Segfault when unletting "count". +Solution: Check for readonly and locked first. (Dominique Pelle) + Add a test. +Files: src/eval.c, src/testdir/test_alot.vim, src/testdir/test_unlet.vim + +Patch 7.4.1052 +Problem: Illegal memory access with weird syntax command. (Dominique Pelle) +Solution: Check for column past end of line. +Files: src/syntax.c + +Patch 7.4.1053 +Problem: Insufficient testing for quickfix commands. +Solution: Add a new style quickfix test. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test_quickfix.vim + +Patch 7.4.1054 +Problem: Illegal memory access. +Solution: Check for missing pattern. (Dominique Pelle) +Files: src/syntax.c + +Patch 7.4.1055 +Problem: Running "make newtests" in src/testdir has no output. +Solution: List the messages file when a test fails. (Christian Brabandt) + Update the list of tests. +Files: src/Makefile, src/testdir/Makefile + +Patch 7.4.1056 +Problem: Don't know why finding spell suggestions is slow. +Solution: Add some code to gather profiling information. +Files: src/spell.c + +Patch 7.4.1057 +Problem: Typos in the :options window. +Solution: Fix the typos. (Dominique Pelle) +Files: runtime/optwin.vim + +Patch 7.4.1058 +Problem: It is not possible to test code that is only reached when memory + allocation fails. +Solution: Add the alloc_fail() function. Try it out with :vimgrep. +Files: runtime/doc/eval.txt, src/globals.h, src/eval.c, src/quickfix.c, + src/misc2.c, src/proto/misc2.pro, src/testdir/test_quickfix.vim + +Patch 7.4.1059 +Problem: Code will never be executed. +Solution: Remove the code. +Files: src/quickfix.c + +Patch 7.4.1060 +Problem: Instructions for writing tests are outdated. +Solution: Mention Make_all.mak. Add steps for new style tests. +Files: src/testdir/README.txt + +Patch 7.4.1061 +Problem: Compiler warning for ignoring return value of fwrite(). +Solution: Do use the return value. (idea: Charles Campbell) +Files: src/misc2.c, src/proto/misc2.pro + +Patch 7.4.1062 +Problem: Building with Ruby on MS-Windows requires a lot of arguments. +Solution: Make it simpler. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 7.4.1063 +Problem: TCL_VER_LONG and DYNAMIC_TCL_VER are not set when building with + Cygwin and MingW. +Solution: Add TCL_VER_LONG and DYNAMIC_TCL_VER to the makefile. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1064 +Problem: When a spell file has single letter compounding creating + suggestions takes an awful long time. +Solution: Add the NOCOMPOUNDSUGS flag. +Files: runtime/doc/spell.txt, src/spell.c + +Patch 7.4.1065 +Problem: Cannot use the "dll" options on MS-Windows. +Solution: Support the options on all platforms. Use the built-in name as + the default, so that it's clear what Vim is looking for. +Files: src/if_python.c, src/if_python3.c, src/if_lua.c, src/if_perl.xs, + src/if_ruby.c, src/option.c, runtime/doc/options.txt, src/Makefile + +Patch 7.4.1066 (after 7.4.1065) +Problem: Build fails on MS-Windows. +Solution: Adjust the #ifdefs for "dll" options. +Files: src/option.h + +Patch 7.4.1067 (after 7.4.1065) +Problem: Can't build with MingW and Python on MS-Windows. +Solution: Move the build flags to CFLAGS. +Files: src/Make_cyg_ming.mak + +Patch 7.4.1068 +Problem: Wrong way to check for unletting internal variables. +Solution: Use a better way. (Olaf Dabrunz) +Files: src/testdir/test_unlet.c, src/eval.c + +Patch 7.4.1069 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/misc2.c + +Patch 7.4.1070 +Problem: The Tcl interface can't be loaded dynamically on Unix. +Solution: Make it possible to load it dynamically. (Ken Takata) +Files: runtime/doc/if_tcl.txt, runtime/doc/options.txt, + runtime/doc/quickref.txt, runtime/optwin.vim, src/Makefile, + src/config.h.in, src/configure.in, src/auto/configure, + src/if_tcl.c, src/option.c, src/option.h + +Patch 7.4.1071 +Problem: New style tests are executed in arbitrary order. +Solution: Sort the test function names. (Hirohito Higashi) + Fix the quickfix test that depended on the order. +Files: src/testdir/runtest.vim, src/testdir/test_quickfix.vim + +Patch 7.4.1072 +Problem: Increment test is old style. +Solution: Make the increment test a new style test. (Hirohito Higashi) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_increment.in, src/testdir/test_increment.ok, + src/testdir/test_increment.vim + +Patch 7.4.1073 +Problem: Alloc_id depends on numbers, may use the same one twice. It's not + clear from the number what it's for. +Solution: Use an enum. Add a function to lookup the enum value from the + name. +Files: src/misc2.c, src/vim.h, src/alloc.h, src/globals.h, + src/testdir/runtest.vim, src/proto/misc2.pro, + src/testdir/test_quickfix.vim + +Patch 7.4.1074 +Problem: Warning from VC2015 compiler. +Solution: Add a type cast. (Mike Williams) +Files: src/gui_dwrite.cpp + +Patch 7.4.1075 +Problem: Crash when using an invalid command. +Solution: Fix generating the error message. (Dominique Pelle) +Files: src/ex_docmd.c + +Patch 7.4.1076 +Problem: CTRL-A does not work well in right-left mode. +Solution: Remove reversing the line, add a test. (Hirohito Higashi) +Files: src/ops.c, src/testdir/test_increment.vim + +Patch 7.4.1077 +Problem: The build instructions for MS-Windows are incomplete. +Solution: Add explanations for how to build with various interfaces. (Ken + Takata) +Files: src/INSTALLpc.txt + +Patch 7.4.1078 +Problem: MSVC: "make clean" doesn't cleanup in the tee directory. +Solution: Add the commands to cleanup tee. (Erich Ritz) +Files: src/Make_mvc.mak + +Patch 7.4.1079 (after 7.4.1073) +Problem: New include file missing from distribution. Missing changes to + quickfix code. +Solution: Add alloc.h to the list of distributed files. Use the enum in + quickfix code. +Files: Filelist, src/quickfix.c + +Patch 7.4.1080 +Problem: VS2015 has a function HandleToLong() that is shadowed by the macro + that Vim defines. +Solution: Do not define HandleToLong() for MSVC version 1400 and later. + (Mike Williams) +Files: src/gui_w32.c + +Patch 7.4.1081 +Problem: No test for what previously caused a crash. +Solution: Add test for unletting errmsg. +Files: src/testdir/test_unlet.vim + +Patch 7.4.1082 +Problem: The Tcl interface is always skipping memory free on exit. +Solution: Only skip for dynamically loaded Tcl. +Files: src/if_tcl.c + +Patch 7.4.1083 +Problem: Building GvimExt with VS2015 may fail. +Solution: Adjust the makefile. (Mike Williams) +Files: src/GvimExt/Makefile + +Patch 7.4.1084 +Problem: Using "." to repeat CTRL-A in Visual mode increments the wrong + numbers. +Solution: Append right size to the redo buffer. (Ozaki Kiichi) +Files: src/normal.c, src/testdir/test_increment.vim + +Patch 7.4.1085 +Problem: The CTRL-A and CTRL-X commands do not update the '[ and '] marks. +Solution: (Yukihiro Nakadaira) +Files: src/ops.c, src/testdir/test_marks.in, src/testdir/test_marks.ok + +Patch 7.4.1086 +Problem: Crash with an extremely long buffer name. +Solution: Limit the return value of vim_snprintf(). (Dominique Pelle) +Files: src/buffer.c + +Patch 7.4.1087 +Problem: CTRL-A and CTRL-X do not work properly with blockwise visual + selection if there is a mix of Tab and spaces. +Solution: Add OP_NR_ADD and OP_NR_SUB. (Hirohito Higashi) +Files: src/testdir/test_increment.vim, src/normal.c, src/ops.c, + src/proto/ops.pro, src/vim.h + +Patch 7.4.1088 +Problem: Coverity warns for uninitialized variables. Only one is an actual + problem. +Solution: Move the conditions. Don't use endpos if handling an error. +Files: src/ops.c + +Patch 7.4.1089 +Problem: Repeating CTRL-A doesn't work. +Solution: Call prep_redo_cmd(). (Hirohito Higashi) +Files: src/normal.c, src/testdir/test_increment.vim + +Patch 7.4.1090 +Problem: No tests for :hardcopy and related options. +Solution: Add test_hardcopy. +Files: src/testdir/test_hardcopy.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 7.4.1091 +Problem: When making a change while need_wait_return is set there is a two + second delay. +Solution: Do not assume the ATTENTION prompt was given when need_wait_return + was set already. +Files: src/misc1.c + +Patch 7.4.1092 +Problem: It is not simple to test for an exception and give a proper error + message. +Solution: Add assert_exception(). +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.1093 +Problem: Typo in test goes unnoticed. +Solution: Fix the typo. Give error for wrong arguments to cursor(). + (partly by Hirohito Higashi) Add a test for cursor(). +Files: src/testdir/test_searchpos.vim, src/testdir/test_cursor_func.vim, + src/eval.c, src/testdir/test_alot.vim + +Patch 7.4.1094 +Problem: Test for :hardcopy fails on MS-Windows. +Solution: Check for the +postscript feature. +Files: src/testdir/test_hardcopy.vim + +Patch 7.4.1095 +Problem: Can't build GvimExt with SDK 7.1. +Solution: Support using setenv.bat instead of vcvars32.bat. (Ken Takata) +Files: src/Make_mvc.mak, src/GvimExt/Makefile + +Patch 7.4.1096 +Problem: Need several lines to verify a command produces an error. +Solution: Add assert_fails(). (suggested by Nikolai Pavlov) + Make the quickfix alloc test actually work. +Files: src/testdir/test_quickfix.vim, src/eval.c, runtime/doc/eval.txt, + src/misc2.c, src/alloc.h + +Patch 7.4.1097 +Problem: Looking up the alloc ID for tests fails. +Solution: Fix the line computation. Use assert_fails() for unlet test. +Files: src/testdir/runtest.vim, src/testdir/test_unlet.vim + +Patch 7.4.1098 +Problem: Still using old style C function declarations. +Solution: Always define __ARGS() to include types. Turn a few functions + into ANSI style to find out if this causes problems for anyone. +Files: src/vim.h, src/os_unix.h, src/eval.c, src/main.c + +Patch 7.4.1099 +Problem: It's not easy to know if Vim supports blowfish. (Smu Johnson) +Solution: Add has('crypt-blowfish') and has('crypt-blowfish2'). +Files: src/eval.c + +Patch 7.4.1100 +Problem: Cygwin makefiles are unused. +Solution: Remove them. +Files: src/GvimExt/Make_ming.mak, src/GvimExt/Make_cyg.mak, + src/xxd/Make_ming.mak, src/xxd/Make_cyg.mak + +Patch 7.4.1101 +Problem: With 'rightleft' and concealing the cursor may move to the wrong + position. +Solution: Compute the column differently when 'rightleft' is set. (Hirohito + Higashi) +Files: src/screen.c + +Patch 7.4.1102 +Problem: Debugger has no stack backtrace support. +Solution: Add "backtrace", "frame", "up" and "down" commands. (Alberto + Fanjul, closes #433) +Files: runtime/doc/repeat.txt, src/eval.c, src/ex_cmds2.c, src/globals.h, + src/testdir/Make_all.mak, src/testdir/test108.in, + src/testdir/test108.ok + +Patch 7.4.1103 (after 7.4.1100) +Problem: Removed file still in distribution. +Solution: Remove Make_cyg.mak from the list of files. +Files: Filelist + +Patch 7.4.1104 +Problem: Various problems building with MzScheme/Racket. +Solution: Make it work with new versions of Racket. (Yukihiro Nakadaira, Ken + Takata) +Files: runtime/doc/if_mzsch.txt, src/INSTALLpc.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/auto/configure, + src/configure.in, src/if_mzsch.c + +Patch 7.4.1105 +Problem: When using slices there is a mixup of variable name and namespace. +Solution: Recognize variables that can't be a namespace. (Hirohito Higashi) +Files: src/eval.c, src/testdir/test_eval.in, src/testdir/test_eval.ok + +Patch 7.4.1106 +Problem: The nsis script can't be used from the appveyor build. +Solution: Add "ifndef" to allow for variables to be set from the command + line. Remove duplicate SetCompressor command. Support using other + gettext binaries. (Ken Takata) Update build instructions to use + libintl-8.dll. +Files: Makefile, nsis/gvim.nsi, src/os_win32.c, src/proto/os_win32.pro, + src/main.c, os_w32exe.c + +Patch 7.4.1107 +Problem: Vim can create a directory but not delete it. +Solution: Add an argument to delete() to make it possible to delete a + directory, also recursively. +Files: src/fileio.c, src/eval.c, src/proto/fileio.pro, + src/testdir/test_delete.vim, src/testdir/test_alot.vim, + runtime/doc/eval.txt + +Patch 7.4.1108 +Problem: Expanding "~" halfway a file name. +Solution: Handle the file name as one name. (Marco Hinz) Add a test. + Closes #564. +Files: src/testdir/test27.in, src/testdir/test27.ok, + src/testdir/test_expand.vim, src/testdir/test_alot.vim, + src/Makefile, src/misc2.c + +Patch 7.4.1109 (after 7.4.1107) +Problem: MS-Windows doesn't have rmdir(). +Solution: Add mch_rmdir(). +Files: src/os_win32.c, src/proto/os_win32.pro + +Patch 7.4.1110 +Problem: Test 108 fails when language is French. +Solution: Force English messages. (Dominique Pelle) +Files: src/testdir/test108.in + +Patch 7.4.1111 +Problem: test_expand fails on MS-Windows. +Solution: Always use forward slashes. Remove references to test27. +Files: src/testdir/runtest.vim, src/testdir/test_expand.vim, + src/testdir/Make_dos.mak, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_ming.mak + +Patch 7.4.1112 +Problem: When using ":next" with an illegal file name no error is reported. +Solution: Give an error message. +Files: src/ex_cmds2.c + +Patch 7.4.1113 (after 7.4.1105) +Problem: Using {ns} in variable name does not work. (lilydjwg) +Solution: Fix recognizing colon. Add a test. +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1114 (after 7.4.1107) +Problem: delete() does not work well with symbolic links. +Solution: Recognize symbolic links. +Files: src/eval.c, src/fileio.c, src/os_unix.c, src/proto/os_unix.pro, + src/testdir/test_delete.vim, runtime/doc/eval.txt + +Patch 7.4.1115 +Problem: MS-Windows: make clean in testdir doesn't clean everything. +Solution: Add command to delete X* directories. (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 7.4.1116 +Problem: delete(x, 'rf') does not delete files starting with a dot. +Solution: Also delete files starting with a dot. +Files: src/misc1.c, src/fileio.c, src/vim.h + +Patch 7.4.1117 (after 7.4.1116) +Problem: No longer get "." and ".." in directory list. +Solution: Do not skip "." and ".." unless EW_DODOT is set. +Files: src/misc1.c + +Patch 7.4.1118 +Problem: Tests hang in 24 line terminal. +Solution: Set the 'more' option off. +Files: src/testdir/runtest.vim + +Patch 7.4.1119 +Problem: argidx() has a wrong value after ":%argdelete". (Yegappan + Lakshmanan) +Solution: Correct the value of w_arg_idx. Add a test. +Files: src/ex_cmds2.c, src/testdir/test_arglist.vim, + src/testdir/Make_all.mak + +Patch 7.4.1120 +Problem: delete(x, 'rf') fails if a directory is empty. (Lcd) +Solution: Ignore not finding matches in an empty directory. +Files: src/fileio.c, src/misc1.c, src/vim.h, src/testdir/test_delete.vim + +Patch 7.4.1121 +Problem: test_expand leaves files behind. +Solution: Edit another file before deleting, otherwise the swap file + remains. +Files: src/testdir/test_expand.vim + +Patch 7.4.1122 +Problem: Test 92 and 93 fail when using gvim on a system with a non utf-8 + locale. +Solution: Avoid using .gvimrc by adding -U NONE. (Yukihiro Nakadaira) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile + +Patch 7.4.1123 +Problem: Using ":argadd" when there are no arguments results in the second + argument to be the current one. (Yegappan Lakshmanan) +Solution: Correct the w_arg_idx value. +Files: src/ex_cmds2.c, src/testdir/test_arglist.vim + +Patch 7.4.1124 +Problem: MS-Windows: dead key behavior is not ideal. +Solution: Handle dead keys differently when not in Insert or Select mode. + (John Wellesz, closes #399) +Files: src/gui_w48.c + +Patch 7.4.1125 +Problem: There is no perleval(). +Solution: Add perleval(). (Damien) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c, + src/if_perl.xs, src/proto/if_perl.pro, src/testdir/Make_all.mak, + src/testdir/test_perl.vim + +Patch 7.4.1126 +Problem: Can only get the directory of the current window. +Solution: Add window and tab arguments to getcwd() and haslocaldir(). + (Thinca, Hirohito Higashi) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_getcwd.in, src/testdir/test_getcwd.ok, + runtime/doc/eval.txt, patching file src/eval.c + +Patch 7.4.1127 +Problem: Both old and new style tests for Perl. +Solution: Merge the old tests with the new style tests. +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test_perl.in, + src/testdir/test_perl.ok, src/testdir/test_perl.vim + +Patch 7.4.1128 +Problem: MS-Windows: delete() does not recognize junctions. +Solution: Add mch_isrealdir() for MS-Windows. Update mch_is_symbolic_link(). + (Ken Takata) +Files: src/fileio.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.4.1129 +Problem: Python None value can't be converted to a Vim value. +Solution: Just use zero. (Damien) +Files: src/if_py_both.h, src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok, + +Patch 7.4.1130 +Problem: Memory leak in :vimgrep. +Solution: Call FreeWild(). (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 7.4.1131 +Problem: New lines in the viminfo file are dropped. +Solution: Copy lines starting with "|". Fix that when using :rviminfo in a + function global variables were restored as function-local + variables. +Files: src/eval.c, src/structs.h, src/ex_cmds.c, src/misc2.c, + src/proto/misc2.pro, src/testdir/test_viminfo.vim, + src/testdir/Make_all.mak, src/testdir/test74.in, + src/testdir/test74.ok + +Patch 7.4.1132 +Problem: Old style tests for the argument list. +Solution: Add more new style tests. (Yegappan Lakshmanan) +Files: src/testdir/test_arglist.vim, src/testdir/test_argument_0count.in, + src/testdir/test_argument_0count.ok, + src/testdir/test_argument_count.in, src/Makefile, + src/testdir/test_argument_count.ok, src/testdir/Make_all.mak + +Patch 7.4.1133 +Problem: Generated function prototypes still have __ARGS(). +Solution: Generate function prototypes without __ARGS(). +Files: src/Makefile, src/if_ruby.c, src/os_win32.c, + src/proto/blowfish.pro, src/proto/buffer.pro, + src/proto/charset.pro, src/proto/crypt.pro, + src/proto/crypt_zip.pro, src/proto/diff.pro, + src/proto/digraph.pro, src/proto/edit.pro, src/proto/eval.pro, + src/proto/ex_cmds2.pro, src/proto/ex_cmds.pro, + src/proto/ex_docmd.pro, src/proto/ex_eval.pro, + src/proto/ex_getln.pro, src/proto/fileio.pro, src/proto/fold.pro, + src/proto/getchar.pro, src/proto/gui_athena.pro, + src/proto/gui_beval.pro, src/proto/gui_gtk_gresources.pro, + src/proto/gui_gtk.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_motif.pro, + src/proto/gui_photon.pro, src/proto/gui.pro, + src/proto/gui_w16.pro, src/proto/gui_w32.pro, + src/proto/gui_x11.pro, src/proto/gui_xmdlg.pro, + src/proto/hangulin.pro, src/proto/hardcopy.pro, + src/proto/hashtab.pro, src/proto/if_cscope.pro, + src/proto/if_lua.pro, src/proto/if_mzsch.pro, + src/proto/if_ole.pro, src/proto/if_perl.pro, + src/proto/if_perlsfio.pro, src/proto/if_python3.pro, + src/proto/if_python.pro, src/proto/if_ruby.pro, + src/proto/if_tcl.pro, src/proto/if_xcmdsrv.pro, + src/proto/main.pro, src/proto/mark.pro, src/proto/mbyte.pro, + src/proto/memfile.pro, src/proto/memline.pro, src/proto/menu.pro, + src/proto/message.pro, src/proto/misc1.pro, src/proto/misc2.pro, + src/proto/move.pro, src/proto/netbeans.pro, src/proto/normal.pro, + src/proto/ops.pro, src/proto/option.pro, src/proto/os_amiga.pro, + src/proto/os_beos.pro, src/proto/os_mac_conv.pro, + src/proto/os_msdos.pro, src/proto/os_mswin.pro, + src/proto/os_qnx.pro, src/proto/os_unix.pro, src/proto/os_vms.pro, + src/proto/os_win16.pro, src/proto/os_win32.pro, + src/proto/popupmnu.pro, src/proto/pty.pro, src/proto/quickfix.pro, + src/proto/regexp.pro, src/proto/screen.pro, src/proto/search.pro, + src/proto/sha256.pro, src/proto/spell.pro, src/proto/syntax.pro, + src/proto/tag.pro, src/proto/termlib.pro, src/proto/term.pro, + src/proto/ui.pro, src/proto/undo.pro, src/proto/version.pro, + src/proto/winclip.pro, src/proto/window.pro, + src/proto/workshop.pro + +Patch 7.4.1134 +Problem: The arglist test fails on MS-Windows. +Solution: Only check for failure of argedit on Unix. +Files: src/testdir/test_arglist.vim + +Patch 7.4.1135 +Problem: One more arglist test fails on MS-Windows. +Solution: Don't edit "Y" after editing "y". +Files: src/testdir/test_arglist.vim + +Patch 7.4.1136 +Problem: Wrong argument to assert_exception() causes a crash. (reported by + Coverity) +Solution: Check for NULL pointer. Add a test. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 7.4.1137 +Problem: Illegal memory access when using :copen and :cclose. +Solution: Avoid that curbuf is invalid. (suggestion by Justin M. Keyes) + Add a test. +Files: src/window.c, src/testdir/test_quickfix.vim + +Patch 7.4.1138 +Problem: When running gvim in the foreground some icons are missing. + (Taylor Venable) +Solution: Move the call to gui_gtk_register_resource(). (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.1139 +Problem: MS-Windows: getftype() returns "file" for symlink to directory. +Solution: Make it return "dir". (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.1140 +Problem: Recognizing <sid> does not work when the language is Turkish. + (Christian Brabandt) +Solution: Use MB_STNICMP() instead of STNICMP(). +Files: src/eval.c + +Patch 7.4.1141 +Problem: Using searchpair() with a skip expression that uses syntax + highlighting sometimes doesn't work. (David Fishburn) +Solution: Reset next_match_idx. (Christian Brabandt) +Files: src/syntax.c + +Patch 7.4.1142 +Problem: Cannot define keyword characters for a syntax file. +Solution: Add the ":syn iskeyword" command. (Christian Brabandt) +Files: runtime/doc/options.txt, runtime/doc/syntax.txt, src/buffer.c, + src/option.c, src/structs.h, src/syntax.c, + src/testdir/Make_all.mak, src/testdir/test_syntax.vim + +Patch 7.4.1143 +Problem: Can't sort on floating point numbers. +Solution: Add the "f" flag to ":sort". (Alex Jakushev) Also add the "f" + flag to sort(). +Files: runtime/doc/change.txt, src/ex_cmds.c, src/testdir/test_sort.vim, + src/testdir/test57.in, src/testdir/test57.ok, src/eval.c + +Patch 7.4.1144 (after 7.4.1143) +Problem: Can't build on several systems. +Solution: Include float.h. (Christian Robinson, closes #570 #571) +Files: src/ex_cmds.c + +Patch 7.4.1145 +Problem: Default features are conservative. +Solution: Make the default feature set for most of today's systems "huge". +Files: src/feature.h, src/configure.in, src/auto/configure + +Patch 7.4.1146 +Problem: Can't build with Python 3 interface using MingW. +Solution: Update the Makefile. (Yasuhiro Matsumoto, Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1147 +Problem: Conflict for "chartab". (Kazunobu Kuriyama) +Solution: Rename the global one to something less obvious. Move it into + src/chartab.c. +Files: src/macros.h, src/globals.h, src/charset.c, src/main.c, + src/option.c, src/screen.c, src/vim.h + +Patch 7.4.1148 +Problem: Default for MingW and Cygwin is still "normal". +Solution: Use "huge" as default. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 7.4.1149 (after 7.4.1013) +Problem: Using the local value of 'errorformat' causes more problems than + it solves. +Solution: Revert 7.4.1013. +Files: runtime/doc/quickfix.txt, src/quickfix.c + +Patch 7.4.1150 +Problem: 'langmap' applies to the first character typed in Select mode. + (David Watson) +Solution: Check for SELECTMODE. (Christian Brabandt, closes #572) + Add the 'x' flag to feedkeys(). +Files: src/getchar.c, src/normal.c, src/testdir/test_langmap.vim, + src/ex_docmd.c, src/proto/ex_docmd.pro, src/testdir/Make_all.mak, + runtime/doc/eval.txt + +Patch 7.4.1151 (after 7.4.1150) +Problem: Missing change to eval.c +Solution: Also change feedkeys(). +Files: src/eval.c + +Patch 7.4.1152 +Problem: Langmap test fails with normal build. +Solution: Check for +langmap feature. +Files: src/testdir/test_langmap.vim + +Patch 7.4.1153 +Problem: Autocommands triggered by quickfix cannot always get the current + title value. +Solution: Call qf_fill_buffer() later. (Christian Brabandt) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1154 +Problem: No support for JSON. +Solution: Add jsonencode() and jsondecode(). Also add v:false, v:true, + v:null and v:none. +Files: src/json.c, src/eval.c, src/proto.h, src/structs.h, src/vim.h, + src/if_lua.c, src/if_mzsch.c, src/if_ruby.c, src/if_py_both.h, + src/globals.h, src/Makefile, src/Make_bc3.mak, src/Make_bc5.mak, + src/Make_cyg_ming.mak, src/Make_dice.mak, src/Make_ivc.mak, + src/Make_manx.mak, src/Make_morph.mak, src/Make_mvc.mak, + src/Make_sas.mak, src/Make_vms.mms, src/proto/json.pro, + src/proto/eval.pro, src/testdir/test_json.vim, + src/testdir/test_alot.vim, Filelist, runtime/doc/eval.txt + +Patch 7.4.1155 +Problem: Build with normal features fails. +Solution: Always define dict_lookup(). +Files: src/eval.c + +Patch 7.4.1156 +Problem: Coverity warns for NULL pointer and ignoring return value. +Solution: Check for NULL pointer. When dict_add() returns FAIL free the item. +Files: src/json.c + +Patch 7.4.1157 +Problem: type() does not work for v:true, v:none, etc. +Solution: Add new type numbers. +Files: src/eval.c, src/testdir/test_json.vim, src/testdir/test_viml.vim + +Patch 7.4.1158 +Problem: Still using __ARGS(). +Solution: Remove __ARGS() from eval.c +Files: src/eval.c + +Patch 7.4.1159 +Problem: Automatically generated function prototypes use __ARGS. +Solution: Remove __ARGS from osdef.sh. +Files: src/osdef.sh, src/osdef1.h.in, src/osdef2.h.in + +Patch 7.4.1160 +Problem: No error for jsondecode('"'). +Solution: Give an error message for missing double quote. +Files: src/json.c + +Patch 7.4.1161 +Problem: ":argadd" without argument is supposed to add the current buffer + name to the arglist. +Solution: Make it work as documented. (Coot, closes #577) +Files: src/ex_cmds.h, src/ex_cmds2.c, src/testdir/test_arglist.vim + +Patch 7.4.1162 +Problem: Missing error number in MzScheme. (Dominique Pelle) +Solution: Add a proper error number. +Files: src/if_mzsch.c + +Patch 7.4.1163 +Problem: Expressions "0 + v:true" and "'' . v:true" cause an error. +Solution: Return something sensible when using a special variable as a + number or as a string. (suggested by Damien) +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1164 +Problem: No tests for comparing special variables. Error in jsondecode() + not reported. test_json does not work with Japanese system. +Solution: Set scriptencoding. (Ken Takata) Add a few more tests. Add error. +Files: src/json.c, src/testdir/test_viml.vim, src/testdir/test_json.vim + +Patch 7.4.1165 +Problem: When defining DYNAMIC_ICONV_DLL in the makefile, the build fails. +Solution: Add #ifdef's. (Taro Muraoka) Try the newer version first. +Files: src/mbyte.c, src/os_win32.c + +Patch 7.4.1166 +Problem: Can't encode a Funcref into JSON. jsonencode() doesn't handle the + same list or dict twice properly. (Nikolai Pavlov) +Solution: Give an error. Reset copyID when the list or dict is finished. +Files: src/json.c, src/proto/json.pro, src/testdir/test_json.vim + +Patch 7.4.1167 +Problem: No tests for "is" and "isnot" with the new variables. +Solution: Add tests. +Files: src/testdir/test_viml.vim + +Patch 7.4.1168 +Problem: This doesn't give the right result: eval(string(v:true)). (Nikolai + Pavlov) +Solution: Make the string "v:true" instead of "true". +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1169 +Problem: The socket I/O is intertwined with the netbeans code. +Solution: Start refactoring the netbeans communication to split off the + socket I/O. Add the +channel feature. +Files: src/channel.c, src/netbeans.c, src/proto/channel.pro, + src/proto/netbeans.pro, src/proto/gui_w32.pro, src/gui_w32.c, + src/eval.c, src/os_mswin.c, src/ui.c, src/macros.h, Makefile, + src/proto.h, src/feature.h, src/os_unix.c, src/vim.h, + src/configure.in, src/auto/configure, src/config.mk.in, + src/config.aap.in, src/config.h.in, src/Make_bc5.mak, + src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 7.4.1170 (after 7.4.1169) +Problem: Missing changes in src/Makefile, Filelist. +Solution: Add the missing changes. +Files: Filelist, src/Makefile + +Patch 7.4.1171 +Problem: Makefile dependencies are outdated. +Solution: Run "make depend". Add GTK resource dependencies. +Files: src/Makefile + +Patch 7.4.1172 (after 7.4.1169) +Problem: Configure is overly positive. +Solution: Insert "test". +Files: src/configure.in, src/auto/configure + +Patch 7.4.1173 (after 7.4.1168) +Problem: No test for new behavior of v:true et al. +Solution: Add a test. +Files: src/testdir/test_viml.vim + +Patch 7.4.1174 +Problem: Netbeans contains dead code inside #ifndef INIT_SOCKETS. +Solution: Remove the dead code. +Files: src/netbeans.c + +Patch 7.4.1175 (after 7.4.1169) +Problem: Can't build with Mingw and Cygwin. +Solution: Remove extra "endif". (Christian J. Robinson) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1176 +Problem: Missing change to proto file. +Solution: Update the proto file. (Charles Cooper) +Files: src/proto/gui_w32.pro + +Patch 7.4.1177 +Problem: The +channel feature is not in :version output. (Tony Mechelynck) +Solution: Add the feature string. +Files: src/version.c + +Patch 7.4.1178 +Problem: empty() doesn't work for the new special variables. +Solution: Make empty() work. (Damien) +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1179 +Problem: test_writefile and test_viml do not delete the tempfile. +Solution: Delete the tempfile. (Charles Cooper) Add DeleteTheScript(). +Files: src/testdir/test_writefile.in, src/testdir/test_viml.vim + +Patch 7.4.1180 +Problem: Crash with invalid argument to glob2regpat(). +Solution: Check for NULL. (Justin M. Keyes, closes #596) Add a test. +Files: src/eval.c, src/testdir/test_glob2regpat.vim, + src/testdir/test_alot.vim + +Patch 7.4.1181 +Problem: free_tv() can't handle special variables. (Damien) +Solution: Add the variable type. +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1182 +Problem: Still socket code intertwined with netbeans. +Solution: Move code from netbeans.c to channel.c +Files: src/channel.c, src/netbeans.c, src/proto/channel.pro, + src/proto/netbeans.pro, src/gui.c, src/gui_w48.c + +Patch 7.4.1183 (after 7.4.1182) +Problem: MS-Windows build is broken. +Solution: Remove init in wrong place. +Files: src/channel.c + +Patch 7.4.1184 (after 7.4.1182) +Problem: MS-Windows build is still broken. +Solution: Change nbsock to ch_fd. +Files: src/channel.c + +Patch 7.4.1185 +Problem: Can't build with TCL on some systems. +Solution: Rename the channel_ functions. +Files: src/if_tcl.c + +Patch 7.4.1186 +Problem: Error messages for security context are hard to translate. +Solution: Use one string with %s. (Ken Takata) +Files: src/os_unix.c + +Patch 7.4.1187 +Problem: MS-Windows channel code only supports one channel. Doesn't build + without netbeans support. +Solution: Get the channel index from the socket in the message. Closes #600. +Files: src/channel.c, src/netbeans.c, src/gui_w48.c, + src/proto/channel.pro, src/proto/netbeans.pro + +Patch 7.4.1188 +Problem: Using older JSON standard. +Solution: Update the link. Adjust the text a bit. +Files: src/json.c, runtime/doc/eval.txt + +Patch 7.4.1189 (after 7.4.1165) +Problem: Using another language on MS-Windows does not work. (Yongwei Wu) +Solution: Undo the change to try loading libintl-8.dll first. +Files: src/os_win32.c + +Patch 7.4.1190 +Problem: On OSX the default flag for dlopen() is different. +Solution: Add RTLD_LOCAL in the configure check. (sv99, closes #604) +Files: src/configure.in, src/auto/configure + +Patch 7.4.1191 +Problem: The channel feature isn't working yet. +Solution: Add the connect(), disconnect(), sendexpr() and sendraw() + functions. Add initial documentation. Add a demo server. +Files: src/channel.c, src/eval.c, src/proto/channel.pro, + src/proto/eval.pro, runtime/doc/channel.txt, runtime/doc/eval.txt, + runtime/doc/Makefile, runtime/tools/demoserver.py + +Patch 7.4.1192 +Problem: Can't build with FEAT_EVAL but without FEAT_MBYTE. (John + Marriott) +Solution: Add #ifdef for FEAT_MBYTE. +Files: src/json.c + +Patch 7.4.1193 +Problem: Can't build the channel feature on MS-Windows. +Solution: Add #ifdef HAVE_POLL. +Files: src/channel.c + +Patch 7.4.1194 +Problem: Compiler warning for not using return value of fwrite(). +Solution: Return OK/FAIL. (Charles Campbell) +Files: src/channel.c, src/proto/channel.pro + +Patch 7.4.1195 +Problem: The channel feature does not work in the MS-Windows console. +Solution: Add win32 console support. (Yasuhiro Matsumoto) +Files: src/channel.c, src/gui_w32.c, src/os_mswin.c, src/os_win32.c, + src/proto/gui_w32.pro, src/proto/os_mswin.pro, src/vim.h + +Patch 7.4.1196 +Problem: Still using __ARGS. +Solution: Remove __ARGS in several files. (script by Hirohito Higashi) +Files: src/arabic.c, src/buffer.c, src/charset.c, src/crypt_zip.c, + src/diff.c, src/digraph.c, src/edit.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c + +Patch 7.4.1197 +Problem: Still using __ARGS. +Solution: Remove __ARGS in several files. (script by Hirohito Higashi) +Files: src/ex_eval.c, src/ex_getln.c, src/farsi.c, src/fileio.c, + src/fold.c, src/getchar.c, src/gui.c, src/gui_at_fs.c, + src/gui_at_sb.c, src/gui_athena.c, src/gui_beval.c, + src/gui_motif.c, src/gui_w32.c, src/gui_w48.c + +Patch 7.4.1198 +Problem: Still using __ARGS. +Solution: Remove __ARGS in several files. (script by Hirohito Higashi) + Also remove use of HAVE_STDARG_H. +Files: src/gui_x11.c, src/hangulin.c, src/hardcopy.c, src/hashtab.c, + src/if_cscope.c, src/if_python3.c, src/if_sniff.c, + src/if_xcmdsrv.c, src/main.c, src/mark.c, src/mbyte.c, + src/memfile.c, src/memfile_test.c, src/memline.c, src/menu.c, + src/message.c, src/misc1.c, src/misc2.c, src/move.c, + src/netbeans.c, src/normal.c + +Patch 7.4.1199 +Problem: Still using __ARGS. +Solution: Remove __ARGS in several files. (script by Hirohito Higashi) +Files: src/ops.c, src/option.c, src/os_amiga.c, src/os_mac_conv.c, + src/os_unix.c, src/os_vms.c, src/os_w32exe.c, src/popupmnu.c, + src/pty.c, src/quickfix.c, src/regexp.c, src/regexp_nfa.c, + src/screen.c, src/search.c, src/sha256.c, src/spell.c, + src/syntax.c, src/tag.c, src/term.c, src/termlib.c, src/ui.c, + src/undo.c, src/version.c, src/window.c + +Patch 7.4.1200 +Problem: Still using __ARGS. +Solution: Remove __ARGS in several files. (script by Hirohito Higashi) +Files: src/blowfish.c, src/ex_cmds2.c, src/ex_getln.c, src/fold.c, + src/gui_beval.c, src/gui_w32.c, src/os_unix.c, src/os_win16.c, + src/pty.c, src/regexp.c, src/syntax.c, src/xpm_w32.c, + src/ex_cmds.h, src/globals.h, src/gui_at_sb.h, src/gui_beval.h, + src/if_cscope.h, src/if_sniff.h, src/nbdebug.h, src/os_unix.h, + src/proto.h, src/structs.h, src/vim.h, src/xpm_w32.h, + src/if_perl.xs, src/proto/if_lua.pro, src/proto/pty.pro, + runtime/tools/xcmdsrv_client.c, + src/Makefile + +Patch 7.4.1201 +Problem: One more file still using __ARGS. +Solution: Remove __ARGS in the last file. (script by Hirohito Higashi) +Files: src/gui_at_sb.c + +Patch 7.4.1202 +Problem: Still one more file still using __ARGS. +Solution: Remove __ARGS in the last file. (script by Hirohito Higashi) + (closes #612) +Files: src/proto/os_mac_conv.pro, src/os_mac_conv.c, src/Makefile + +Patch 7.4.1203 +Problem: Still more files still using __ARGS. +Solution: Remove __ARGS in really the last files. +Files: src/proto/if_mzsch.pro, src/if_mzsch.c, src/vim.h, + src/proto/gui_gtk_gresources.pro, src/proto/gui_mac.pro, + src/proto/if_ole.pro, src/proto/os_qnx.pro, src/Makefile + +Patch 7.4.1204 +Problem: Latin1 characters cause encoding conversion. +Solution: Remove the characters. +Files: src/gui_motif.c + +Patch 7.4.1205 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/arabic.c, src/blowfish.c, src/buffer.c, src/channel.c, + src/charset.c, src/crypt.c, src/crypt_zip.c, src/diff.c, + src/digraph.c, src/edit.c, src/eval.c + +Patch 7.4.1206 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/farsi.c, src/fileio.c + +Patch 7.4.1207 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/fold.c, src/getchar.c, src/gui_at_fs.c, src/gui_athena.c, + src/gui_at_sb.c, src/gui_beval.c, src/gui.c, src/gui_gtk.c, + src/gui_gtk_x11.c, src/gui_mac.c, src/gui_motif.c + +Patch 7.4.1208 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/gui_photon.c, src/gui_w32.c, src/gui_w48.c, src/gui_x11.c, + src/hangulin.c, src/hardcopy.c, src/hashtab.c, src/if_cscope.c, + src/if_mzsch.c, src/if_perlsfio.c, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/if_sniff.c, src/if_tcl.c, + src/if_xcmdsrv.c, src/integration.c + +Patch 7.4.1209 (after 7.4.1207) +Problem: Can't build with Athena. (Elimar Riesebieter) +Solution: Fix function declarations. +Files: src/gui_athena.c, src/gui_x11.c, src/gui_at_sb.c, src/gui_at_fs.c + +Patch 7.4.1210 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/main.c, src/mark.c, src/mbyte.c, src/memfile.c, + src/memfile_test.c, src/memline.c, src/menu.c, src/message.c + +Patch 7.4.1211 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/misc1.c, src/misc2.c, src/move.c, src/netbeans.c, + src/normal.c, src/ops.c, src/option.c + +Patch 7.4.1212 (after 7.4.1207) +Problem: Can't build with Motif. +Solution: Fix function declaration.(Dominique Pelle) +Files: src/gui_motif.c + +Patch 7.4.1213 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/os_amiga.c, src/os_mac_conv.c, src/os_msdos.d, src/os_mswin.c, + src/os_qnx.c, src/os_unix.c, src/os_vms.c, src/os_win16.c, + src/os_win32.c, src/popupmnu.c, src/pty.c, src/quickfix.c, + src/regexp.c, src/regexp_nfa.c, src/screen.c + +Patch 7.4.1214 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/search.c, src/sha256.c, src/spell.c, src/syntax.c, src/tag.c, + src/term.c, src/termlib.c, src/ui.c, src/undo.c + +Patch 7.4.1215 +Problem: Using old style function declarations. +Solution: Change to new style function declarations. (script by Hirohito + Higashi) +Files: src/version.c, src/winclip.c, src/window.c, src/workshop.c, + src/xpm_w32.c, runtime/doc/doctags.c, + runtime/tools/xcmdsrv_client.c, src/po/sjiscorr.c, src/xxd/xxd.c + +Patch 7.4.1216 +Problem: Still using HAVE_STDARG_H. +Solution: Assume it's always defined. +Files: src/eval.c, src/misc2.c, src/vim.h, src/proto.h, src/configure.in, + src/auto/configure, config.h.in, src/os_amiga.h, src/os_msdos.h, + src/os_vms_conf.h, src/os_win32.h + +Patch 7.4.1217 +Problem: Execution of command on channel doesn't work yet. +Solution: Implement the "ex" and "normal" commands. +Files: src/channel.c, src/proto/channel.pro, src/misc2.c, src/eval.c, + src/ex_docmd.c, src/proto/ex_docmd.pro, src/feature.h + +Patch 7.4.1218 +Problem: Missing change in configure. More changes for function style. +Solution: Avoid the typos. +Files: src/configure.in, src/config.h.in, runtime/tools/ccfilter.c, + src/os_msdos.c + +Patch 7.4.1219 +Problem: Build fails with +channel but without +float. +Solution: Add #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.1220 +Problem: Warnings for unused variables in tiny build. (Tony Mechelynck) +Solution: Move declarations inside #ifdef. (Hirohito Higashi) +Files: src/ex_cmds.c + +Patch 7.4.1221 +Problem: Including netbeans and channel support in small and tiny builds. + Build fails with some interfaces. +Solution: Only include these features in small build and above. Let + configure fail if trying to enable an interface that won't build. +Files: src/configure.in, src/auto/configure + +Patch 7.4.1222 +Problem: ":normal" command and others missing in tiny build. +Solution: Graduate FEAT_EX_EXTRA. +Files: src/feature.h, src/charset.c, src/eval.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/getchar.c, + src/normal.c, src/ui.c, src/version.c, src/globals.h + +Patch 7.4.1223 +Problem: Crash when setting v:errors to a number. +Solution: Free the typval without assuming its type. (Yasuhiro Matsumoto) +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 7.4.1224 +Problem: Build problems with GTK on BSD. (Mike Williams) +Solution: Don't use "$<". Skip building gui_gtk_gresources.h when it doesn't + work. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 7.4.1225 +Problem: Still a few old style function declarations. +Solution: Make them new style. (Hirohito Higashi) +Files: runtime/tools/blink.c, src/eval.c, src/ex_cmds2.c, src/ex_getln.c, + src/fileio.c, src/gui_w32.c, src/gui_x11.c, src/if_perl.xs, + src/os_unix.c, src/po/sjiscorr.c, src/pty.c + +Patch 7.4.1226 +Problem: GRESOURCE_HDR is unused. +Solution: Remove it. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure, src/config.mk.in + +Patch 7.4.1227 +Problem: Compiler warnings. +Solution: Add UNUSED. Add type cast. (Yegappan Lakshmanan) +Files: src/getchar.c, src/os_macosx.m + +Patch 7.4.1228 +Problem: copy() and deepcopy() fail with special variables. (Nikolai + Pavlov) +Solution: Make it work. Add a test. Closes #614. +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1229 +Problem: "eval" and "expr" channel commands don't work yet. +Solution: Implement them. Update the error numbers. Also add "redraw". +Files: src/channel.c, src/eval.c, src/json.c, src/ex_docmd.c, + src/proto/channel.pro, src/proto/json.pro, src/proto/ex_docmd.pro, + runtime/doc/channel.txt + +Patch 7.4.1230 +Problem: Win32: opening a channel may hang. Not checking for messages + while waiting for characters. +Solution: Add a zero timeout. Call parse_queued_messages(). (Yasuhiro + Matsumoto) +Files: src/os_win32.c + +Patch 7.4.1231 +Problem: JSON messages are not parsed properly. +Solution: Queue received messages. +Files: src/eval.c src/channel.c, src/json.c, src/proto/eval.pro, + src/proto/channel.pro, src/proto/json.pro, src/structs.h + +Patch 7.4.1232 +Problem: Compiler warnings when the Sniff feature is enabled. +Solution: Add UNUSED. +Files: src/gui_gtk_x11.c + +Patch 7.4.1233 +Problem: Channel command may cause a crash. +Solution: Check for NULL argument. (Damien) +Files: src/channel.c + +Patch 7.4.1234 +Problem: Demo server only runs with Python 2. +Solution: Make it run with Python 3 as well. (Ken Takata) +Files: runtime/tools/demoserver.py + +Patch 7.4.1235 (after 7.4.1231) +Problem: Missing change to eval.c. +Solution: Include that change. +Files: src/eval.c + +Patch 7.4.1236 +Problem: When "syntax manual" was used switching between buffers removes + the highlighting. +Solution: Set the syntax option without changing the value. (Anton + Lindqvist) +Files: runtime/syntax/manual.vim + +Patch 7.4.1237 +Problem: Can't translate message without adding a line break. +Solution: Join the two parts of the message. +Files: src/memline.c + +Patch 7.4.1238 +Problem: Can't handle two messages right after each other. +Solution: Find the end of the JSON. Read more when incomplete. Add a C + test for the JSON decoding. +Files: src/channel.c, src/json.c, src/proto/json.pro, src/eval.c, + src/Makefile, src/json_test.c, src/memfile_test.c, src/structs.h + +Patch 7.4.1239 +Problem: JSON message after the first one is dropped. +Solution: Put remainder of message back in the queue. +Files: src/channel.c + +Patch 7.4.1240 +Problem: Visual Studio tools are noisy. +Solution: Suppress startup info. (Mike Williams) +Files: src/GvimExt/Makefile, src/Make_mvc.mak, src/tee/Make_mvc.mak + +Patch 7.4.1241 (after 7.4.1238) +Problem: Missing change in Makefile due to diff mismatch +Solution: Update the list of object files. +Files: src/Makefile + +Patch 7.4.1242 (after 7.4.1238) +Problem: json_test fails without the eval feature. +Solution: Add #ifdef. +Files: src/json_test.c + +Patch 7.4.1243 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. (Elias Diem) +Files: src/json.c + +Patch 7.4.1244 +Problem: The channel functions don't sort together. +Solution: Use a common "ch_" prefix. +Files: src/eval.c, runtime/doc/eval.txt, runtime/tools/demoserver.py + +Patch 7.4.1245 +Problem: File missing from distribution. +Solution: Add json_test.c. +Files: Filelist + +Patch 7.4.1246 +Problem: The channel functionality isn't tested. +Solution: Add a test using a Python test server. +Files: src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, src/testdir/test_channel.py, + src/testdir/Make_all.mak + +Patch 7.4.1247 +Problem: The channel test doesn't run on MS-Windows. +Solution: Make it work on the MS-Windows console. (Ken Takata) +Files: src/testdir/test_channel.py, src/testdir/test_channel.vim + +Patch 7.4.1248 +Problem: Can't reliably stop the channel test server. Can't start the + server if the python file is not executable. +Solution: Use "pkill" instead of "killall". Run the python file as an + argument instead of as an executable. +Files: src/testdir/test_channel.vim + +Patch 7.4.1249 +Problem: Crash when the process a channel is connected to exits. +Solution: Use the file descriptor properly. Add a test. (Damien) + Also add a test for eval(). +Files: src/channel.c, src/testdir/test_channel.py, + src/testdir/test_channel.vim + +Patch 7.4.1250 +Problem: Running tests in shadow directory fails. +Solution: Also link testdir/*.py +Files: src/Makefile + +Patch 7.4.1251 +Problem: New test file missing from distribution. +Solution: Add src/testdir/*.py. +Files: Filelist + +Patch 7.4.1252 +Problem: The channel test server may receive two messages concatenated. +Solution: Split the messages. +Files: src/testdir/test_channel.py + +Patch 7.4.1253 +Problem: Python test server not displaying second of two commands. + Solaris doesn't have "pkill --full". +Solution: Also echo the second command. Use "pkill -f". +Files: src/testdir/test_channel.py, src/testdir/test_channel.vim + +Patch 7.4.1254 +Problem: Opening a second channel causes a crash. (Ken Takata) +Solution: Don't re-allocate the array with channels. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1255 +Problem: Crash for channel "eval" command without third argument. +Solution: Check for missing argument. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1256 +Problem: On Mac sys.exit(0) doesn't kill the test server. +Solution: Use self.server.shutdown(). (Jun Takimoto) +Files: src/testdir/test_channel.py + +Patch 7.4.1257 +Problem: Channel test fails in some configurations. +Solution: Add check for the +channel feature. +Files: src/testdir/test_channel.vim + +Patch 7.4.1258 +Problem: The channel test can fail if messages arrive later. +Solution: Add a short sleep. (Jun Takimoto) +Files: src/testdir/test_channel.vim + +Patch 7.4.1259 +Problem: No test for what patch 7.3.414 fixed. +Solution: Add a test. (Elias Diem) +Files: src/testdir/test_increment.vim + +Patch 7.4.1260 +Problem: The channel feature doesn't work on Win32 GUI. +Solution: Use WSAGetLastError(). (Ken Takata) +Files: src/channel.c, src/testdir/test_channel.vim, src/vim.h + +Patch 7.4.1261 +Problem: Pending channel messages are garbage collected. Leaking memory in + ch_sendexpr(). Leaking memory for a decoded JSON string. +Solution: Mark the message list as used. Free the encoded JSON. Don't save + the JSON string. +Files: src/eval.c, src/channel.c, src/json.c, src/proto/channel.pro + +Patch 7.4.1262 +Problem: The channel callback is not invoked. +Solution: Make a list of pending callbacks. +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1263 +Problem: ch_open() hangs when the server isn't running. +Solution: Add a timeout. Use a dict to pass arguments. (Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, runtime/doc/channel.txt, src/channel.c, + src/eval.c, src/netbeans.c, src/os_win32.c, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1264 +Problem: Crash when receiving an empty array. +Solution: Check for array with wrong number of arguments. (Damien) +Files: src/channel.c, src/eval.c, src/testdir/test_channel.py, + src/testdir/test_channel.vim + +Patch 7.4.1265 +Problem: Not all channel commands are tested. +Solution: Add a test for "normal", "expr" and "redraw". +Files: src/testdir/test_channel.py, src/testdir/test_channel.vim + +Patch 7.4.1266 +Problem: A BufAdd autocommand may cause an ml_get error (Christian + Brabandt) +Solution: Increment RedrawingDisabled earlier. +Files: src/ex_cmds.c + +Patch 7.4.1267 +Problem: Easy to miss handling all types of variables. +Solution: Change the variable type into an enum. +Files: src/structs.h, src/eval.c + +Patch 7.4.1268 +Problem: Waittime is used as seconds instead of milliseconds. (Hirohito + Higashi) +Solution: Divide by 1000. +Files: src/channel.c + +Patch 7.4.1269 +Problem: Encoding {'key':v:none} to JSON doesn't give an error (Tyru) +Solution: Give an error. +Files: src/json.c, src/testdir/test_json.vim + +Patch 7.4.1270 +Problem: Warnings for missing values in switch. +Solution: Change switch to if-else or add values. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 7.4.1271 +Problem: assert_false(v:false) reports an error. (Nikolai Pavlov) +Solution: Recognize v:true and v:false. (Closes #625) +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 7.4.1272 (after 7.4.1270) +Problem: Using future enum value. +Solution: Remove it. +Files: src/if_python.c, src/if_python3.c + +Patch 7.4.1273 (after 7.4.1271) +Problem: assert_false(v:false) still fails. +Solution: Fix the typo. +Files: src/eval.c + +Patch 7.4.1274 +Problem: Cannot run a job. +Solution: Add job_start(), job_status() and job_stop(). Currently only works + for Unix. +Files: src/eval.c, src/structs.h, runtime/doc/eval.txt, src/os_unix.c, + src/proto/os_unix.pro, src/feature.h, src/version.c, + src/testdir/test_channel.vim + +Patch 7.4.1275 (after 7.4.1274) +Problem: Build fails on MS-Windows. +Solution: Fix wrong #ifdef. +Files: src/eval.c + +Patch 7.4.1276 +Problem: Warning for not using return value of fcntl(). +Solution: Explicitly ignore the return value. +Files: src/fileio.c, src/channel.c, src/memfile.c, src/memline.c + +Patch 7.4.1277 +Problem: Compiler can complain about missing enum value in switch with some + combination of features. +Solution: Remove #ifdefs around case statements. +Files: src/eval.c + +Patch 7.4.1278 +Problem: When jsonencode() fails it still returns something. +Solution: Return an empty string on failure. +Files: src/json.c, src/channel.c, src/testdir/test_json.vim, + src/testdir/test_channel.vim, src/testdir/test_channel.py + +Patch 7.4.1279 +Problem: jsonencode() is not producing strict JSON. +Solution: Add jsencode() and jsdecode(). Make jsonencode() and jsondecode() + strict. +Files: src/json.c, src/json_test.c, src/proto/json.pro, src/channel.c, + src/proto/channel.pro, src/eval.c, src/vim.h, src/structs.h, + runtime/doc/eval.txt, runtime/doc/channel.txt, + src/testdir/test_json.vim + +Patch 7.4.1280 +Problem: Missing case value. +Solution: Add VAR_JOB. +Files: src/if_python.c, src/if_python3.c + +Patch 7.4.1281 +Problem: No test for skipping over code that isn't evaluated. +Solution: Add a test with code that would fail when not skipped. +Files: src/testdir/test_viml.vim + +Patch 7.4.1282 +Problem: Crash when evaluating the pattern of ":catch" causes an error. + (Dominique Pelle) +Solution: Block error messages at this point. +Files: src/ex_eval.c + +Patch 7.4.1283 +Problem: The job feature isn't available on MS-Windows. +Solution: Add the job feature. Fix argument of job_stop(). (Yasuhiro + Matsumoto) +Files: src/eval.c, src/feature.h, src/os_win32.c, src/proto/os_win32.pro + +Patch 7.4.1284 (after 7.4.1282) +Problem: Test 49 fails. +Solution: Check for a different error message. +Files: src/testdir/test49.vim + +Patch 7.4.1285 +Problem: Cannot measure elapsed time. +Solution: Add reltimefloat(). +Files: src/ex_cmds2.c, src/eval.c, src/proto/ex_cmds2.pro, + src/testdir/test_reltime.vim, src/testdir/test_alot.vim + +Patch 7.4.1286 +Problem: ch_open() with a timeout doesn't work correctly. +Solution: Change how select() is used. Don't give an error on timeout. + Add a test for ch_open() failing. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1287 (after 7.4.1286) +Problem: Channel test fails. +Solution: Use reltimefloat(). +Files: src/testdir/test_channel.vim + +Patch 7.4.1288 +Problem: ch_sendexpr() does not use JS encoding. +Solution: Use the encoding that fits the channel mode. Refuse using + ch_sendexpr() on a raw channel. +Files: src/channel.c, src/proto/channel.pro, src/eval.c + +Patch 7.4.1289 +Problem: Channel test fails on MS-Windows, connect() takes too long. +Solution: Adjust the test for MS-Windows using "waittime". +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1290 +Problem: Coverity complains about unnecessary check for NULL. +Solution: Remove the check. +Files: src/eval.c + +Patch 7.4.1291 +Problem: On MS-Windows the channel test server doesn't quit. +Solution: Use return instead of break. (Ken Takata) +Files: src/testdir/test_channel.py + +Patch 7.4.1292 +Problem: Some compilers complain about uninitialized variable, even though + all possible cases are handled. (Dominique Pelle) +Solution: Add a default initialization. +Files: src/eval.c + +Patch 7.4.1293 +Problem: Sometimes a channel may hang waiting for a message that was + already discarded. (Ken Takata) +Solution: Store the ID of the message blocking on in the channel. +Files: src/channel.c + +Patch 7.4.1294 +Problem: job_stop() only kills the started process. +Solution: Send the signal to the process group. (Olaf Dabrunz) +Files: src/os_unix.c + +Patch 7.4.1295 +Problem: string(job) doesn't work well on MS-Windows. +Solution: Use the process ID. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.1296 +Problem: Cursor changes column with up motion when the matchparen plugin + saves and restores the cursor position. (Martin Kunev) +Solution: Make sure curswant is updated before invoking the autocommand. +Files: src/edit.c + +Patch 7.4.1297 +Problem: On Mac test_channel leaves python instances running. +Solution: Use a small waittime to make ch_open() work. (Ozaki Kiichi) +Files: src/testdir/test_channel.vim + +Patch 7.4.1298 +Problem: When the channel test fails in an unexpected way the server keeps + running. +Solution: Use try/catch. (Ozaki Kiichi) +Files: src/testdir/test_channel.vim + +Patch 7.4.1299 +Problem: When the server sends a message with ID zero the channel handler + is not invoked. (Christian J. Robinson) +Solution: Recognize zero value for the request ID. Add a test for invoking + the channel handler. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1300 +Problem: Cannot test CursorMovedI because there is typeahead. +Solution: Add disable_char_avail_for_testing(). +Files: src/eval.c, src/getchar.c, src/globals.h, + src/testdir/test_cursor_func.vim, src/testdir/README.txt + +Patch 7.4.1301 +Problem: Missing options in ch_open(). +Solution: Add s:chopt like in the other calls. (Ozaki Kiichi) +Files: src/testdir/test_channel.vim + +Patch 7.4.1302 +Problem: Typo in struct field name. (Ken Takata) +Solution: Rename jf_pi to jv_pi. +Files: src/eval.c, src/os_win32.c, src/structs.h + +Patch 7.4.1303 +Problem: A Funcref is not accepted as a callback. +Solution: Make a Funcref work. (Damien) +Files: src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1304 +Problem: Function names are difficult to read. +Solution: Rename jsonencode to json_encode, jsondecode to json_decode, + jsencode to js_encode and jsdecode to js_decode. +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test_json.vim + +Patch 7.4.1305 +Problem: "\%1l^#.*" does not match on a line starting with "#". +Solution: Do not clear the start-of-line flag. (Christian Brabandt) +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test36.in, + src/testdir/test36.ok + +Patch 7.4.1306 +Problem: Job control doesn't work well on MS-Windows. +Solution: Various fixes. (Ken Takata, Ozaki Kiichi, Yukihiro Nakadaira, + Yasuhiro Matsumoto) +Files: src/Make_mvc.mak, src/eval.c, src/os_unix.c, src/os_win32.c, + src/proto/os_unix.pro, src/proto/os_win32.pro, src/structs.h + +Patch 7.4.1307 +Problem: Some channel tests fail on MS-Windows. +Solution: Disable the failing tests temporarily. +Files: src/testdir/test_channel.vim + +Patch 7.4.1308 (after 7.4.1307) +Problem: Typo in test. +Solution: Change endf to endif. +Files: src/testdir/test_channel.vim + +Patch 7.4.1309 +Problem: When a test fails not all relevant info is listed. +Solution: Add the errors to the messages. +Files: src/testdir/runtest.vim + +Patch 7.4.1310 +Problem: Jobs don't open a channel. +Solution: Create pipes and add them to the channel. Add ch_logfile(). + Only Unix for now. +Files: src/channel.c, src/eval.c, src/os_unix.c, src/structs.h, + src/gui_w48.c, src/proto/channel.pro, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py, runtime/doc/eval.txt + +Patch 7.4.1311 (after 7.4.1310) +Problem: sock_T is defined too late. +Solution: Move it up. +Files: src/vim.h + +Patch 7.4.1312 (after 7.4.1311) +Problem: sock_T is not defined without the +channel feature. +Solution: Always define it. +Files: src/vim.h + +Patch 7.4.1313 +Problem: MS-Windows: Using socket after it was closed causes an exception. +Solution: Don't give an error when handling WM_NETBEANS. Re-enable tests + for MS-Windows. +Files: src/gui_w48.c, src/testdir/test_channel.vim + +Patch 7.4.1314 +Problem: Warning for uninitialized variable. +Solution: Initialize it. (Dominique Pelle) +Files: src/channel.c + +Patch 7.4.1315 +Problem: Using a channel handle does not allow for freeing it when unused. +Solution: Add the Channel variable type. +Files: src/structs.h, src/channel.c, src/misc2.c, src/eval.c, + src/if_python.c, src/if_python3.c, src/json.c, src/gui_w48.c, + src/netbeans.c, src/proto/channel.pro, src/os_unix.c, + src/testdir/test_channel.py, src/testdir/test_channel.vim + +Patch 7.4.1316 +Problem: Can't build MS-Windows console version. (Tux) +Solution: Add #ifdefs. +Files: src/eval.c + +Patch 7.4.1317 +Problem: MS-Windows: channel test fails. +Solution: Temporarily disable Test_connect_waittime(). +Files: src/testdir/test_channel.vim + +Patch 7.4.1318 +Problem: Channel with pipes doesn't work in GUI. +Solution: Register input handlers for pipes. +Files: src/structs.h, src/feature.h, src/channel.c, src/eval.c, + src/os_unix.c, src/os_win32.c, src/gui_w48.c, src/proto/channel.pro + +Patch 7.4.1319 (after 7.4.1318) +Problem: Tests fail on MS-Windows and on Unix with GUI. +Solution: Fix unregistering. +Files: src/structs.h, src/channel.c, src/os_unix.c, src/os_win32.c, + src/proto/channel.pro + +Patch 7.4.1320 +Problem: Building with Cygwin or MingW with channel but without Netbeans + doesn't work. +Solution: Set NETBEANS to "no" when not used. +Files: src/Make_cyg_ming.mak + +Patch 7.4.1321 +Problem: Compiler complains about missing statement. +Solution: Add an empty statement. (Andrei Olsen) +Files: src/os_win32.c + +Patch 7.4.1322 +Problem: Crash when unletting the variable that holds the channel in a + callback function. (Christian Robinson) +Solution: Increase the reference count while invoking the callback. +Files: src/eval.c, src/channel.c, src/proto/eval.pro, + src/testdir/test_channel.vim + +Patch 7.4.1323 +Problem: Do not get warnings when building with MingW. +Solution: Remove the -w flag. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1324 +Problem: Channels with pipes don't work on MS-Windows. +Solution: Add pipe I/O support. (Yasuhiro Matsumoto) +Files: src/channel.c, src/os_win32.c, src/proto/channel.pro, + src/structs.h, src/vim.h, src/testdir/test_channel.vim + +Patch 7.4.1325 +Problem: Channel test fails on difference between Unix and DOS line endings. +Solution: Strip off CR. Make assert show difference better. +Files: src/eval.c, src/channel.c + +Patch 7.4.1326 +Problem: Build rules are bit too complicated. +Solution: Remove -lwsock32 from Netbeans, it's already added for the channel + feature that it depends on. (Tony Mechelynck) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1327 +Problem: Channel test doesn't work if Python executable is python.exe. +Solution: Find py.exe or python.exe. (Ken Takata) +Files: src/testdir/test_channel.vim + +Patch 7.4.1328 +Problem: Can't compile with +job but without +channel. (John Marriott) +Solution: Add more #ifdefs. +Files: src/os_unix.c + +Patch 7.4.1329 +Problem: Crash when using channel that failed to open. +Solution: Check for NULL. Update messages. (Yukihiro Nakadaira) +Files: src/channel.c, src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1330 +Problem: fd_read() has an unused argument. +Solution: Remove the timeout. (Yasuhiro Matsumoto) +Files: src/channel.c + +Patch 7.4.1331 +Problem: Crash when closing the channel in a callback. (Christian J. + Robinson) +Solution: Take the callback out of the list before invoking it. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1332 +Problem: Problem using Python3 when compiled with MingW. +Solution: Define PYTHON3_HOME as a wide character string. (Yasuhiro + Matsumoto) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1333 +Problem: Channel test fails on non-darwin builds. +Solution: Add the "osx" feature and test for that. (Kazunobu Kuriyama) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1334 +Problem: Many compiler warnings with MingW. +Solution: Add type casts. (Yasuhiro Matsumoto) +Files: src/channel.c, src/dosinst.h, src/eval.c, src/ex_cmds2.c, + src/ex_getln.c, src/fileio.c, src/if_cscope.c, src/if_perl.xs, + src/if_python.c, src/if_python3.c, src/if_ruby.c, src/main.c, + src/mbyte.c, src/misc1.c, src/option.c, src/os_mswin.c, + src/os_win32.c + +Patch 7.4.1335 +Problem: Can't build on MS-Windows with +job but without +channel. (Cesar + Romani) +Solution: Add #ifdefs. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.1336 +Problem: Channel NL mode is not supported yet. +Solution: Add NL mode support to channels. +Files: src/channel.c, src/netbeans.c, src/structs.h, src/os_win32.c, + src/proto/channel.pro, src/proto/os_unix.pro, + src/proto/os_win32.pro, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py + +Patch 7.4.1337 (after 7.4.1336) +Problem: Part of the change is missing. +Solution: Add changes to eval.c +Files: src/eval.c + + +Patch 7.4.1338 (after 7.4.1336) +Problem: Another part of the change is missing. +Solution: Type os_unix.c right this time. +Files: src/os_unix.c + +Patch 7.4.1339 +Problem: Warnings when building the GUI with MingW. (Cesar Romani) +Solution: Add type casts. (Yasuhiro Matsumoto) +Files: src/edit.c, src/gui_w32.c, src/gui_w48.c, src/os_mswin.c, + src/os_win32.c + +Patch 7.4.1340 (after 7.4.1339) +Problem: Merge left extra #endif behind. +Solution: Remove the #endif +Files: src/os_win32.c + +Patch 7.4.1341 +Problem: It's difficult to add more arguments to ch_sendraw() and + ch_sendexpr(). +Solution: Make the third option a dictionary. +Files: src/eval.c, src/structs.h, src/channel.c, src/os_unix.c, + src/os_win32.c, src/proto/channel.pro, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1342 +Problem: On Mac OS/X the waittime must be > 0 for connect to work. +Solution: Use select() in a different way. (partly by Kazunobu Kuriyama) + Always use a waittime of 1 or more. +Files: src/eval.c, src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1343 +Problem: Can't compile with +job but without +channel. (Andrei Olsen) +Solution: Move get_job_options up and adjust #ifdef. +Files: src/eval.c + +Patch 7.4.1344 +Problem: Can't compile Win32 GUI with tiny features. +Solution: Add #ifdef. (Christian Brabandt) +Files: src/gui_w32.c + +Patch 7.4.1345 +Problem: A few more compiler warnings. (Axel Bender) +Solution: Add type casts. +Files: src/gui_w32.c, src/gui_w48.c + +Patch 7.4.1346 +Problem: Compiler warnings in build with -O2. +Solution: Add initializations. +Files: src/eval.c + +Patch 7.4.1347 +Problem: When there is any error Vim will use a non-zero exit code. +Solution: When using ":silent!" do not set the exit code. (Yasuhiro + Matsumoto) +Files: src/message.c + +Patch 7.4.1348 +Problem: More compiler warnings. (John Marriott) +Solution: Add type casts, remove unused variable. +Files: src/gui_w32.c + +Patch 7.4.1349 +Problem: And some more MingW compiler warnings. (Cesar Romani) +Solution: Add type casts. +Files: src/if_mzsch.c + +Patch 7.4.1350 +Problem: When the test server fails to start Vim hangs. +Solution: Check that there is actually something to read from the tty fd. +Files: src/os_unix.c + +Patch 7.4.1351 +Problem: When the port isn't opened yet when ch_open() is called it may + fail instead of waiting for the specified time. +Solution: Loop when select() succeeds but when connect() failed. Also use + channel logging for jobs. Add ch_log(). +Files: src/channel.c, src/eval.c, src/netbeans.c, src/proto/channel.pro, + src/testdir/test_channel.vim, src/testdir/test_channel.py + +Patch 7.4.1352 +Problem: The test script lists all functions before executing them. +Solution: Only list the function currently being executed. +Files: src/testdir/runtest.vim + +Patch 7.4.1353 +Problem: Test_connect_waittime is skipped for MS-Windows. +Solution: Add the test back, it works now. +Files: src/testdir/test_channel.vim + +Patch 7.4.1354 +Problem: MS-Windows: Mismatch between default compile options and what the + code expects. +Solution: Change the default WINVER from 0x0500 to 0x0501. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 7.4.1355 +Problem: Win32 console and GUI handle channels differently. +Solution: Consolidate code between Win32 console and GUI. +Files: src/channel.c, src/eval.c, src/gui_w48.c, src/os_win32.c, + src/proto/channel.pro + +Patch 7.4.1356 +Problem: Job and channel options parsing is scattered. +Solution: Move all option value parsing to get_job_options(); +Files: src/channel.c, src/eval.c, src/structs.h, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1357 (after 7.4.1356) +Problem: Error for returning value from void function. +Solution: Don't do that. +Files: src/eval.c + +Patch 7.4.1358 +Problem: Compiler warning when not building with +crypt. +Solution: Add #ifdef. (John Marriott) +Files: src/undo.c + +Patch 7.4.1359 (after 7.4.1356) +Problem: Channel test ch_sendexpr() times out. +Solution: Increase the timeout +Files: src/testdir/test_channel.vim + +Patch 7.4.1360 +Problem: Can't remove a callback with ch_setoptions(). +Solution: When passing zero or an empty string remove the callback. +Files: src/channel.c, src/proto/channel.pro, src/testdir/test_channel.vim + +Patch 7.4.1361 +Problem: Channel test fails on Solaris. +Solution: Use the 1 msec waittime for all systems. +Files: src/channel.c + +Patch 7.4.1362 (after 7.4.1356) +Problem: Using uninitialized value. +Solution: Initialize jo_set. +Files: src/eval.c + +Patch 7.4.1363 +Problem: Compiler warnings with tiny build. +Solution: Add #ifdefs. +Files: src/gui_w48.c, src/gui_w32.c + +Patch 7.4.1364 +Problem: The Win 16 code is not maintained and unused. +Solution: Remove the Win 16 support. +Files: src/gui_w16.c, src/gui_w32.c, src/gui_w48.c, src/Make_w16.mak, + src/Makefile, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/proto/gui_w16.pro, src/proto/os_win16.pro, src/guiw16rc.h, + src/vim16.rc, src/vim16.def, src/tools16.bmp, src/eval.c, + src/gui.c, src/misc2.c, src/option.c, src/os_msdos.c, + src/os_mswin.c, src/os_win16.c, src/os_win16.h, src/version.c, + src/winclip.c, src/feature.h, src/proto.h, src/vim.h, Filelist + +Patch 7.4.1365 +Problem: Cannot execute a single test function. +Solution: Add an argument to filter the functions with. (Yasuhiro Matsumoto) +Files: src/testdir/runtest.vim + +Patch 7.4.1366 +Problem: Typo in test and resulting error in test result. +Solution: Fix the typo and correct the result. (James McCoy, closes #650) +Files: src/testdir/test_charsearch.in, src/testdir/test_charsearch.ok + +Patch 7.4.1367 +Problem: Compiler warning for unreachable code. +Solution: Remove a "break". (Danek Duvall) +Files: src/json.c + +Patch 7.4.1368 +Problem: One more Win16 file remains. +Solution: Delete it. +Files: src/proto/os_win16.pro + +Patch 7.4.1369 +Problem: Channels don't have a queue for stderr. +Solution: Have a queue for each part of the channel. +Files: src/channel.c, src/eval.c, src/structs.h, src/netbeans.c, + src/gui_w32.c, src/proto/channel.pro + +Patch 7.4.1370 +Problem: The Python test script may keep on running. +Solution: Join the threads. (Yasuhiro Matsumoto) +Files: src/testdir/test_channel.py + +Patch 7.4.1371 +Problem: X11 GUI callbacks don't specify the part of the channel. +Solution: Pass the fd instead of the channel ID. +Files: src/channel.c + +Patch 7.4.1372 +Problem: channel read implementation is incomplete. +Solution: Add ch_read() and options for ch_readraw(). +Files: src/channel.c, src/eval.c, src/structs.h, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1373 +Problem: Calling a Vim function over a channel requires turning the + arguments into a string. +Solution: Add the "call" command. (Damien) Also merge "expr" and "eval" + into one. +Files: src/channel.c, src/testdir/test_channel.py, + src/testdir/test_channel.vim + +Patch 7.4.1374 +Problem: Channel test hangs on MS-Windows. +Solution: Disable the ch_read() that is supposed to time out. +Files: src/testdir/test_channel.vim + +Patch 7.4.1375 +Problem: Still some Win16 code. +Solution: Remove FEAT_GUI_W16.(Hirohito Higashi) +Files: src/eval.c, src/ex_cmds.h, src/feature.h, src/gui.h, src/menu.c, + src/misc1.c, src/option.c, src/proto.h, src/structs.h, src/term.c, + src/vim.h, runtime/doc/gui_w16.txt + +Patch 7.4.1376 +Problem: ch_setoptions() cannot set all options. +Solution: Support more options. +Files: src/channel.c, src/eval.c, src/structs.h, runtime/doc/channel.txt, + src/testdir/test_channel.vim + +Patch 7.4.1377 +Problem: Test_connect_waittime() is flaky. +Solution: Ignore the "Connection reset by peer" error. +Files: src/testdir/test_channel.vim + +Patch 7.4.1378 +Problem: Can't change job settings after it started. +Solution: Add job_setoptions() with the "stoponexit" flag. +Files: src/eval.c, src/main.c, src/structs.h, src/proto/eval.pro, + src/testdir/test_channel.vim + +Patch 7.4.1379 +Problem: Channel test fails on Win32 console. +Solution: Don't sleep when timeout is zero. Call channel_wait() before + channel_read(). Channels are not polled during ":sleep". (Yukihiro + Nakadaira) +Files: src/channel.c, src/misc2.c, src/gui_w32.c, src/os_win32.c + +Patch 7.4.1380 +Problem: The job exit callback is not implemented. +Solution: Add the "exit-cb" option. +Files: src/structs.h, src/eval.c, src/channel.c, src/proto/eval.pro, + src/misc2.c, src/macros.h, src/testdir/test_channel.vim + +Patch 7.4.1381 (after 7.4.1380) +Problem: Exit value not available on MS-Windows. +Solution: Set the exit value. +Files: src/structs.h, src/os_win32.c + +Patch 7.4.1382 +Problem: Can't get the job of a channel. +Solution: Add ch_getjob(). +Files: src/eval.c, runtime/doc/channel.txt, runtime/doc/eval.txt + +Patch 7.4.1383 +Problem: GvimExt only loads the old libintl.dll. +Solution: Also try loading libint-8.dll. (Ken Takata, closes #608) +Files: src/GvimExt/gvimext.cpp, src/GvimExt/gvimext.h + +Patch 7.4.1384 +Problem: It is not easy to use a set of plugins and their dependencies. +Solution: Add packages, ":loadplugin", 'packpath'. +Files: src/main.c, src/ex_cmds2.c, src/option.c, src/option.h, + src/ex_cmds.h, src/eval.c, src/version.c, src/proto/ex_cmds2.pro, + runtime/doc/repeat.txt, runtime/doc/options.txt, + runtime/optwin.vim + +Patch 7.4.1385 +Problem: Compiler warning for using array. +Solution: Use the right member name. (Yegappan Lakshmanan) +Files: src/eval.c + +Patch 7.4.1386 +Problem: When the Job exit callback is invoked, the job may be freed too + soon. (Yasuhiro Matsumoto) +Solution: Increase refcount. +Files: src/eval.c + +Patch 7.4.1387 +Problem: Win16 docs still referenced. +Solution: Remove Win16 files from the docs Makefile. (Kenichi Ito) +Files: runtime/doc/Makefile + +Patch 7.4.1388 +Problem: Compiler warning. (Cesar Romani) +Solution: Initialize variable. +Files: src/ex_cmds2.c + +Patch 7.4.1389 +Problem: Incomplete function declaration. +Solution: Add "void". (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.1390 +Problem: When building with GTK and glib-compile-resources cannot be found + building Vim fails. (Michael Gehring) +Solution: Make GLIB_COMPILE_RESOURCES empty instead of leaving it at "no". + (nuko8, closes #655) +Files: src/configure.in, src/auto/configure + +Patch 7.4.1391 +Problem: Warning for uninitialized variable. +Solution: Set it to zero. (Christian Brabandt) +Files: src/eval.c + +Patch 7.4.1392 +Problem: Some tests fail for Win32 console version. +Solution: Move the tests to SCRIPTS_MORE2. Pass VIMRUNTIME. (Christian + Brabandt) +Files: src/testdir/Make_all.mak + +Patch 7.4.1393 +Problem: Starting a job hangs in the GUI. (Takuya Fujiwara) +Solution: Don't check if ch_job is NULL when checking for an error. + (Yasuhiro Matsumoto) +Files: src/channel.c + +Patch 7.4.1394 +Problem: Can't sort inside a sort function. +Solution: Use a struct to store the sort parameters. (Jacob Niehus) +Files: src/eval.c, src/testdir/test_sort.vim + +Patch 7.4.1395 +Problem: Using DETACH in quotes is not compatible with the Netbeans + interface. (Xavier de Gaye) +Solution: Remove the quotes, only use them for JSON and JS mode. +Files: src/netbeans.c, src/channel.c + +Patch 7.4.1396 +Problem: Compiler warnings for conversions. +Solution: Add type cast. +Files: src/ex_cmds2.c + +Patch 7.4.1397 +Problem: Sort test fails on MS-Windows. +Solution: Correct the compare function. +Files: src/testdir/test_sort.vim + +Patch 7.4.1398 +Problem: The close-cb option is not implemented yet. +Solution: Implement close-cb. (Yasuhiro Matsumoto) +Files: src/channel.c, src/eval.c, src/structs.h, src/proto/channel.pro, + src/testdir/test_channel.py, src/testdir/test_channel.vim + +Patch 7.4.1399 +Problem: The MS-DOS code does not build. +Solution: Remove the old MS-DOS code. +Files: Filelist, src/Make_bc3.mak, src/Make_bc5.mak, src/Make_djg.mak, + src/Makefile, src/blowfish.c, src/buffer.c, src/diff.c, + src/digraph.c, src/dosinst.h, src/eval.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/feature.h, + src/fileio.c, src/getchar.c, src/globals.h, src/macros.h, + src/main.c, src/mbyte.c, src/memfile.c, src/memline.c, + src/misc1.c, src/misc2.c, src/netbeans.c, src/option.c, + src/option.h, src/os_msdos.c, src/os_msdos.h, src/proto.h, + src/proto/os_msdos.pro, src/regexp.c, src/screen.c, src/structs.h, + src/syntax.c, src/term.c, src/undo.c, src/uninstal.c, + src/version.c, src/vim.h, src/window.c, src/xxd/Make_bc3.mak, + src/xxd/Make_djg.mak + + +Patch 7.4.1400 +Problem: Perl eval doesn't work properly on 64-bit big-endian machine. +Solution: Use 32 bit type for the key. (Danek Duvall) +Files: src/if_perl.xs + +Patch 7.4.1401 +Problem: Having 'autochdir' set during startup and using diff mode doesn't + work. (Axel Bender) +Solution: Don't use 'autochdir' while still starting up. (Christian + Brabandt) +Files: src/buffer.c + +Patch 7.4.1402 +Problem: GTK 3 is not supported. +Solution: Add GTK 3 support. (Kazunobu Kuriyama) +Files: runtime/doc/eval.txt, runtime/doc/gui.txt, + runtime/doc/gui_x11.txt, src/auto/configure, src/channel.c, + src/config.h.in, src/configure.in, src/eval.c, src/gui.h, + src/gui_beval.c, src/gui_beval.h, src/gui_gtk.c, src/gui_gtk_f.c, + src/gui_gtk_f.h, src/gui_gtk_x11.c, src/if_mzsch.c, src/mbyte.c, + src/netbeans.c, src/structs.h, src/version.c + +Patch 7.4.1403 +Problem: Can't build without the quickfix feature. +Solution: Add #ifdefs. Call ex_ni() for unimplemented commands. (Yegappan + Lakshmanan) +Files: src/ex_cmds2.c, src/popupmnu.c + +Patch 7.4.1404 +Problem: ch_read() doesn't time out on MS-Windows. +Solution: Instead of WM_NETBEANS use select(). (Yukihiro Nakadaira) +Files: src/channel.c, src/gui_w32.c, src/os_win32.c, src/structs.h, + src/testdir/test_channel.vim, src/vim.h + +Patch 7.4.1405 +Problem: Completion menu flickers. +Solution: Delay showing the popup menu. (Shougo Matsu, Justin M. Keyes, + closes #656) +Files: src/edit.c + +Patch 7.4.1406 +Problem: Leaking memory in cs_print_tags_priv(). +Solution: Free tbuf. (idea by Forrest Fleming) +Files: src/if_cscope.c + +Patch 7.4.1407 +Problem: json_encode() does not handle NaN and inf properly. (David + Barnett) +Solution: For JSON turn them into "null". For JS use "NaN" and "Infinity". + Add isnan(). +Files: src/eval.c, src/json.c, src/testdir/test_json.vim + +Patch 7.4.1408 +Problem: MS-Windows doesn't have isnan() and isinf(). +Solution: Use _isnan() and _isinf(). +Files: src/eval.c, src/json.c + +Patch 7.4.1409 (after 7.4.1402) +Problem: Configure includes GUI despite --disable-gui flag. +Solution: Add SKIP_GTK3. (Kazunobu Kuriyama) +Files: src/configure.in, src/auto/configure + +Patch 7.4.1410 +Problem: Leaking memory in cscope interface. +Solution: Free memory when no tab is found. (Christian Brabandt) +Files: src/if_cscope.c + +Patch 7.4.1411 +Problem: Compiler warning for indent. (Ajit Thakkar) +Solution: Indent normally. +Files: src/ui.c + +Patch 7.4.1412 +Problem: Compiler warning for indent. (Dominique Pelle) +Solution: Fix the indent. +Files: src/farsi.c + +Patch 7.4.1413 +Problem: When calling ch_close() the close callback is invoked, even though + the docs say it isn't. (Christian J. Robinson) +Solution: Don't call the close callback. +Files: src/eval.c, src/channel.c, src/netbeans.c, src/proto/channel.pro + +Patch 7.4.1414 +Problem: Appveyor only builds one feature set. +Solution: Build a combination of features and GUI/console. (Christian + Brabandt) +Files: appveyor.yml, src/appveyor.bat + +Patch 7.4.1415 (after 7.4.1414) +Problem: Dropped the skip-tags setting. +Solution: Put it back. +Files: appveyor.yml + +Patch 7.4.1416 +Problem: Using "u_char" instead of "char_u", which doesn't work everywhere. + (J枚rg Plate) +Solution: Use "char_u" always. +Files: src/integration.c, src/macros.h + +Patch 7.4.1417 (after 7.4.1414) +Problem: Missing appveyor.bat from the distribution. +Solution: Add it to the list of files. +Files: Filelist + +Patch 7.4.1418 +Problem: job_stop() on MS-Windows does not really stop the job. +Solution: Make the default to stop the job forcefully. (Ken Takata) + Make MS-Windows and Unix more similar. +Files: src/os_win32.c, src/os_unix.c, runtime/doc/eval.txt + +Patch 7.4.1419 +Problem: Tests slowed down because of the "not a terminal" warning. +Solution: Add the --not-a-term command line argument. +Files: src/main.c, src/testdir/Makefile, src/Make_all.mak, + src/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + runtime/doc/starting.txt + +Patch 7.4.1420 (after 7.4.1419) +Problem: Missing makefile. +Solution: Type the path correctly. +Files: src/testdir/Make_all.mak + +Patch 7.4.1421 +Problem: May free a channel when a callback may need to be invoked. +Solution: Keep the channel when refcount is zero. +Files: src/eval.c, src/channel.c, src/proto/channel.pro + +Patch 7.4.1422 +Problem: Error when reading fails uses wrong errno. Keeping channel open + after job stops results in test failing. +Solution: Move the error up. Add ch_job_killed. +Files: src/channel.c, src/eval.c, src/structs.h + +Patch 7.4.1423 +Problem: Channel test fails on MS-Windows. +Solution: Do not give an error message when reading fails, assume the other + end exited. +Files: src/channel.c + +Patch 7.4.1424 +Problem: Not using --not-a-term when running tests on MS-Windows. +Solution: Use NO_PLUGIN. (Christian Brabandt) +Files: src/testdir/Make_dos.mak + +Patch 7.4.1425 +Problem: There are still references to MS-DOS support. +Solution: Remove most of the help txt and install instructions. (Ken Takata) +Files: src/INSTALLpc.txt, runtime/doc/os_msdos.txt, csdpmi4b.zip, + Filelist + +Patch 7.4.1426 +Problem: The "out-io" option for jobs is not implemented yet. +Solution: Implement the "buffer" value: append job output to a buffer. +Files: src/eval.c, src/channel.c, src/structs.h, src/netbeans.c, + runtime/doc/channel.txt + +Patch 7.4.1427 +Problem: Trailing comma in enums is not ANSI C. +Solution: Remove the trailing commas. +Files: src/alloc.h, src/gui_mac.c + +Patch 7.4.1428 +Problem: Compiler warning for non-virtual destructor. +Solution: Make it virtual. (Yasuhiro Matsumoto) +Files: src/gui_dwrite.cpp + +Patch 7.4.1429 +Problem: On MS-Windows, when not use renderoptions=type:directx, drawing + emoji will be broken. +Solution: Fix usage of unicodepdy. (Yasuhiro Matsumoto) +Files: src/gui_w32.c + +Patch 7.4.1430 +Problem: When encoding JSON, turning NaN and Infinity into null without + giving an error is not useful. +Solution: Pass NaN and Infinity on. If the receiver can't handle them it + will generate the error. +Files: src/json.c, src/testdir/test_json.vim, runtime/doc/eval.txt + +Patch 7.4.1431 +Problem: Including header files twice. +Solution: Remove the extra includes. +Files: src/if_cscope.h + +Patch 7.4.1432 +Problem: Typo in button text. +Solution: Fix the typo. (Dominique Pelle) +Files: src/gui_gtk.c + +Patch 7.4.1433 +Problem: The Sniff interface is no longer useful, the tool has not been + available for may years. +Solution: Delete the Sniff interface and related code. +Files: src/if_sniff.c, src/if_sniff.h, src/charset.c, src/edit.c, + src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, + src/gui_gtk_x11.c, src/gui_w32.c, src/gui_x11.c, src/normal.c, + src/os_unix.c, src/os_win32.c, src/term.c, src/ui.c, + src/version.c, src/ex_cmds.h, src/feature.h, src/keymap.h, + src/structs.h, src/vim.h, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile, src/configure.in, src/auto/configure, + src/config.h.in, src/config.mk.in, runtime/doc/if_sniff.txt, + src/config.aap.in, src/main.aap + +Patch 7.4.1434 +Problem: JSON encoding doesn't handle surrogate pair. +Solution: Improve multibyte handling of JSON. (Yasuhiro Matsumoto) +Files: src/json.c, src/testdir/test_json.vim + +Patch 7.4.1435 +Problem: It is confusing that ch_sendexpr() and ch_sendraw() wait for a + response. +Solution: Add ch_evalexpr() and ch_evalraw(). +Files: src/eval.c, runtime/doc/channel.txt, runtime/doc/eval.txt, + src/testdir/test_channel.vim + +Patch 7.4.1436 (after 7.4.1433) +Problem: Sniff files still referenced in distribution. +Solution: Remove sniff files from distribution. +Files: Filelist + +Patch 7.4.1437 +Problem: Old system doesn't have isinf() and NAN. (Ben Fritz) +Solution: Adjust #ifdefs. Detect isnan() and isinf() functions with + configure. Use a replacement when missing. (Kazunobu Kuriyama) +Files: src/eval.c, src/json.c, src/macros.h, src/message.c, + src/config.h.in, src/configure.in, src/auto/configure + +Patch 7.4.1438 +Problem: Can't get buffer number of a channel. +Solution: Add ch_getbufnr(). +Files: src/eval.c, src/channel.c, src/testdir/test_channel.vim, + runtime/doc/channel.txt, runtime/doc/eval.txt + +Patch 7.4.1439 (after 7.4.1434) +Problem: Using uninitialized variable. +Solution: Initialize vc_type. +Files: src/json.c + +Patch 7.4.1440 (after 7.4.1437) +Problem: Can't build on Windows. +Solution: Change #ifdefs. Only define isnan when used. +Files: src/macros.h, src/eval.c, src/json.c + +Patch 7.4.1441 +Problem: Using empty name instead of no name for channel buffer. +Solution: Remove the empty name. +Files: src/channel.c + +Patch 7.4.1442 +Problem: MS-Windows: more compilation warnings for destructor. +Solution: Add "virtual". (Ken Takata) +Files: src/if_ole.cpp + +Patch 7.4.1443 +Problem: Can't build GTK3 with small features. +Solution: Use gtk_widget_get_window(). Fix typos. (Dominique Pelle) +Files: src/gui_gtk_x11.c + +Patch 7.4.1444 +Problem: Can't build with JSON but without multibyte. +Solution: Fix pointer name. +Files: src/json.c + +Patch 7.4.1445 +Problem: Memory corruption when 'encoding' is not utf-8. +Solution: Convert decoded string later. +Files: src/json.c + +Patch 7.4.1446 +Problem: Crash when using json_decode(). +Solution: Terminate string with a NUL byte. +Files: src/json.c + +Patch 7.4.1447 +Problem: Memory leak when using ch_read(). (Dominique Pelle) + No log message when stopping a job and a few other situations. + Too many "Nothing to read" messages. Channels are not freed. +Solution: Free the listtv. Add more log messages. Remove "Nothing to read" + message. Remove the channel from the job when its refcount + becomes zero. +Files: src/eval.c, src/channel.c + +Patch 7.4.1448 +Problem: JSON tests fail if 'encoding' is not utf-8. +Solution: Force encoding to utf-8. +Files: src/testdir/test_json.vim + +Patch 7.4.1449 +Problem: Build fails with job feature but without channel feature. +Solution: Add #ifdef. +Files: src/eval.c + +Patch 7.4.1450 +Problem: Json encoding still fails when encoding is not utf-8. +Solution: Set 'encoding' before :scriptencoding. Run the json test + separately to avoid affecting other tests. +Files: src/testdir/test_json.vim, src/testdir/Make_all.mak, + src/testdir/test_alot.vim + +Patch 7.4.1451 +Problem: Vim hangs when a channel has a callback but isn't referenced. +Solution: Have channel_unref() only return TRUE when the channel was + actually freed. +Files: src/eval.c, src/channel.c, src/proto/channel.pro + +Patch 7.4.1452 +Problem: When a callback adds a syntax item either the redraw doesn't + happen right away or in the GUI the cursor is in the wrong + position for a moment. (Jakson Alves de Aquino) +Solution: Redraw after the callback was invoked. +Files: src/channel.c + +Patch 7.4.1453 +Problem: Missing --not-a-term. +Solution: Add the argument. +Files: src/testdir/Make_amiga.mak + +Patch 7.4.1454 +Problem: The exit callback test is flaky. +Solution: Loop to wait for a short time up to a second. +Files: src/testdir/test_channel.vim + +Patch 7.4.1455 +Problem: JSON decoding test for surrogate pairs is in the wrong place. +Solution: Move the test lines. (Ken Takata) +Files: src/testdir/test_json.vim + +Patch 7.4.1456 +Problem: Test 87 fails with Python 3.5. +Solution: Work around difference. (Taro Muraoka) +Files: src/testdir/test87.in + +Patch 7.4.1457 +Problem: Opening a channel with select() is not done properly. +Solution: Also used read-fds. Use getsockopt() to check for errors. (Ozaki + Kiichi) +Files: src/channel.c + +Patch 7.4.1458 +Problem: When a JSON channel has a callback it may never be cleared. +Solution: Do not write "DETACH" into a JS or JSON channel. +Files: src/channel.c + +Patch 7.4.1459 (after 7.4.1457) +Problem: MS-Windows doesn't know socklen_t. +Solution: Use previous method for WIN32. +Files: src/channel.c + +Patch 7.4.1460 +Problem: Syntax error in rarely used code. +Solution: Fix the mch_rename() declaration. (Ken Takata) +Files: src/os_unix.c, src/proto/os_unix.pro + +Patch 7.4.1461 +Problem: When starting job on MS-Windows all parts of the command are put + in quotes. +Solution: Only use quotes when needed. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.1462 +Problem: Two more rarely used functions with errors. +Solution: Add proper argument types. (Dominique Pelle) +Files: src/misc2.c, src/termlib.c + +Patch 7.4.1463 +Problem: Configure doesn't find isinf() and isnan() on some systems. +Solution: Use a configure check that includes math.h. +Files: src/configure.in, src/auto/configure + +Patch 7.4.1464 +Problem: When the argument of sort() is zero or empty it fails. +Solution: Make zero work as documented. (suggested by Yasuhiro Matsumoto) +Files: src/eval.c, src/testdir/test_sort.vim + +Patch 7.4.1465 +Problem: Coverity reported possible use of NULL pointer when using buffer + output with JSON mode. +Solution: Make it actually possible to use JSON mode with a buffer. + Re-encode the JSON to append it to the buffer. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1466 +Problem: Coverity reports dead code. +Solution: Remove the two lines. +Files: src/channel.c + +Patch 7.4.1467 +Problem: Can't build without the float feature. +Solution: Add #ifdefs. (Nick Owens, closes #667) +Files: src/eval.c, src/json.c + +Patch 7.4.1468 +Problem: Sort test doesn't test with "1" argument. +Solution: Also test ignore-case sorting. (Yasuhiro Matsumoto) +Files: src/testdir/test_sort.vim + +Patch 7.4.1469 +Problem: Channel test sometimes fails, especially on OS/X. (Kazunobu + Kuriyama) +Solution: Change the && into ||, call getsockopt() in more situations. + (Ozaki Kiichi) +Files: src/channel.c + +Patch 7.4.1470 +Problem: Coverity reports missing restore. +Solution: Move json_encode() call up. +Files: src/channel.c + +Patch 7.4.1471 +Problem: Missing out-of-memory check. And Coverity warning. +Solution: Bail out when msg is NULL. +Files: src/channel.c + +Patch 7.4.1472 +Problem: Coverity warning for not using return value. +Solution: Add "(void)". +Files: src/os_unix.c + +Patch 7.4.1473 +Problem: Can't build without the autocommand feature. +Solution: Add #ifdefs. (Yegappan Lakshmanan) +Files: src/edit.c, src/main.c, src/syntax.c + +Patch 7.4.1474 +Problem: Compiler warnings without the float feature. +Solution: Move #ifdefs. (John Marriott) +Files: src/eval.c + +Patch 7.4.1475 +Problem: When using hangulinput with utf-8 a CSI character is + misinterpreted. +Solution: Convert CSI to K_CSI. (SungHyun Nam) +Files: src/ui.c + +Patch 7.4.1476 +Problem: Function arguments marked as unused while they are not. +Solution: Remove UNUSED. (Yegappan Lakshmanan) +Files: src/diff.c, src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, + src/window.c + +Patch 7.4.1477 +Problem: Test_reltime is flaky, it depends on timing. +Solution: When it fails run it a second time. +Files: src/testdir/runtest.vim + +Patch 7.4.1478 +Problem: ":loadplugin" doesn't take care of ftdetect files. +Solution: Also load ftdetect scripts when appropriate. +Files: src/ex_cmds2.c + +Patch 7.4.1479 +Problem: No testfor ":loadplugin". +Solution: Add a test. Fix how option is being set. +Files: src/ex_cmds2.c, src/testdir/test_loadplugin.vim, + src/testdir/Make_all.mak + +Patch 7.4.1480 +Problem: Cannot add a pack directory without loading a plugin. +Solution: Add the :packadd command. +Files: src/ex_cmds.h, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + src/testdir/test_loadplugin.vim, runtime/doc/repeat.txt + +Patch 7.4.1481 +Problem: Can't build with small features. +Solution: Add #ifdef. +Files: src/ex_cmds2.c + +Patch 7.4.1482 +Problem: "timeout" option not supported on ch_eval*(). +Solution: Get and use the timeout option from the argument. +Files: src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1483 +Problem: A one-time callback is not used for a raw channel. +Solution: Use a one-time callback when it exists. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1484 +Problem: Channel "err-io" value "out" is not supported. +Solution: Connect stderr to stdout if wanted. +Files: src/os_unix.c, src/os_win32.c, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py + +Patch 7.4.1485 +Problem: Job input from buffer is not implemented. +Solution: Implement it. Add "in-top" and "in-bot" options. +Files: src/structs.h, src/eval.c, src/channel.c, src/proto/channel.pro, + src/os_unix.c, src/os_win32.c, src/testdir/test_channel.vim + +Patch 7.4.1486 +Problem: ":loadplugin" is not optimal, some people find it confusing. +Solution: Only use ":packadd" with an optional "!". +Files: src/ex_cmds.h, src/ex_cmds2.c, src/testdir/test_loadplugin.vim, + src/testdir/test_packadd.vim, src/testdir/Make_all.mak, + runtime/doc/repeat.txt + +Patch 7.4.1487 +Problem: For WIN32 isinf() is defined as a macro. +Solution: Define it as an inline function. (ZyX) +Files: src/macros.h + +Patch 7.4.1488 (after 7.4.1475) +Problem: Not using key when result from hangul_string_convert() is NULL. +Solution: Fall back to not converted string. +Files: src/ui.c + +Patch 7.4.1489 (after 7.4.1487) +Problem: "inline" is not supported by old MSVC. +Solution: use "__inline". (Ken Takata) +Files: src/macros.h + +Patch 7.4.1490 +Problem: Compiler warning for unused function. +Solution: Add #ifdef. (Dominique Pelle) +Files: src/gui_gtk_x11.c + +Patch 7.4.1491 +Problem: Visual-block shift breaks multibyte characters. +Solution: Compute column differently. (Yasuhiro Matsumoto) Add a test. +Files: src/ops.c, src/testdir/test_visual.vim, src/testdir/Make_all.mak + +Patch 7.4.1492 +Problem: No command line completion for ":packadd". +Solution: Implement completion. (Hirohito Higashi) +Files: src/ex_docmd.c, src/ex_getln.c, src/testdir/test_packadd.vim, + src/vim.h + +Patch 7.4.1493 +Problem: Wrong callback invoked for zero-id messages. +Solution: Don't use the first one-time callback when the sequence number + doesn't match. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1494 +Problem: clr_history() does not work properly. +Solution: Increment hisptr. Add a test. (Yegappan Lakshmanan) +Files: src/ex_getln.c, src/testdir/test_history.vim, + src/testdir/Make_all.mak + +Patch 7.4.1495 +Problem: Compiler warnings when building on Unix with the job feature but + without the channel feature. +Solution: Move #ifdefs. (Dominique Pelle) +Files: src/os_unix.c + +Patch 7.4.1496 +Problem: Crash when built with GUI but it's not active. (Dominique Pelle) +Solution: Check gui.in_use. +Files: src/channel.c + +Patch 7.4.1497 +Problem: Cursor drawing problem with GTK 3. +Solution: Handle blinking differently. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.1498 +Problem: Error for locked item when using json_decode(). (Shougo Matsu) +Solution: Initialize v_lock. +Files: src/json.c + +Patch 7.4.1499 +Problem: No error message when :packadd does not find anything. +Solution: Add an error message. (Hirohito Higashi) +Files: runtime/doc/repeat.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/globals.h, src/testdir/test_packadd.vim + +Patch 7.4.1500 +Problem: Should_free flag set to FALSE. +Solution: Set it to TRUE. (Neovim 4415) +Files: src/ex_eval.c + +Patch 7.4.1501 +Problem: Garbage collection with an open channel is not tested. +Solution: Call garbagecollect() in the test. +Files: src/testdir/test_channel.vim + +Patch 7.4.1502 +Problem: Writing last-but-one line of buffer to a channel isn't implemented + yet. +Solution: Implement it. Fix leaving a swap file behind. +Files: src/channel.c, src/structs.h, src/memline.c, src/proto/channel.pro + +Patch 7.4.1503 +Problem: Crash when using ch_getjob(). (Damien) +Solution: Check for a NULL job. +Files: src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1504 (after 7.4.1502) +Problem: No test for reading last-but-one line. +Solution: Add a test. +Files: src/testdir/test_channel.vim + +Patch 7.4.1505 +Problem: When channel log is enabled get too many "looking for messages" + log entries. +Solution: Only give the message after another message. +Files: src/channel.c + +Patch 7.4.1506 +Problem: Job cannot read from a file. +Solution: Implement reading from a file for Unix. +Files: src/eval.c, src/os_unix.c, src/os_win32.c, + src/testdir/test_channel.vim + +Patch 7.4.1507 +Problem: Crash when starting a job fails. +Solution: Check for the channel to be NULL. (idea by Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.1508 +Problem: Can't build GvimExt with MingW. +Solution: Adjust the makefile. (Ben Fritz) +Files: src/GvimExt/Make_ming.mak + +Patch 7.4.1509 +Problem: Keeping both a variable for a job and the channel it refers to is + a hassle. +Solution: Allow passing the job where a channel is expected. (Damien) +Files: src/eval.c, src/testdir/test_channel.vim + +Patch 7.4.1510 +Problem: Channel test fails on AppVeyor. +Solution: Wait longer than 10 msec if needed. +Files: src/testdir/test_channel.vim + +Patch 7.4.1511 +Problem: Statusline highlighting is sometimes wrong. +Solution: Check for Highlight type. (Christian Brabandt) +Files: src/buffer.c + +Patch 7.4.1512 +Problem: Channel input from file not supported on MS-Windows. +Solution: Implement it. (Yasuhiro Matsumoto) +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 7.4.1513 +Problem: "J" fails if there are not enough lines. (Christian Neukirchen) +Solution: Reduce the count, only fail on the last line. +Files: src/normal.c, src/testdir/test_join.vim, src/testdir/test_alot.vim + +Patch 7.4.1514 +Problem: Channel output to file not implemented yet. +Solution: Implement it for Unix. +Files: src/os_unix.c, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py + +Patch 7.4.1515 +Problem: Channel test is a bit flaky. +Solution: Instead of a fixed sleep time wait until an expression evaluates + to true. +Files: src/testdir/test_channel.vim + +Patch 7.4.1516 +Problem: Cannot change file permissions. +Solution: Add setfperm(). +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test_alot.vim, + src/testdir/test_file_perm.vim + +Patch 7.4.1517 +Problem: Compiler warning with 64bit compiler. +Solution: Add typecast. (Mike Williams) +Files: src/channel.c + +Patch 7.4.1518 +Problem: Channel with disconnected in/out/err is not supported. +Solution: Implement it for Unix. +Files: src/eval.c, src/os_unix.c, src/structs.h, + src/testdir/test_channel.vim, src/testdir/test_channel_pipe.py + +Patch 7.4.1519 (after 7.4.1514) +Problem: Channel output to file not implemented for MS-Windows. +Solution: Implement it. (Yasuhiro Matsumoto) +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 7.4.1520 +Problem: Channel test: Waiting for a file to appear doesn't work. +Solution: In waitFor() ignore errors. +Files: src/testdir/test_channel.vim + +Patch 7.4.1521 (after 7.4.1516) +Problem: File permission test fails on MS-Windows. +Solution: Expect a different permission. +Files: src/testdir/test_file_perm.vim + +Patch 7.4.1522 +Problem: Cannot write channel err to a buffer. +Solution: Implement it. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1523 +Problem: Writing channel to a file fails on MS-Windows. +Solution: Disable it for now. +Files: src/testdir/test_channel.vim + +Patch 7.4.1524 +Problem: Channel test fails on BSD. +Solution: Break out of the loop when connect() succeeds. (Ozaki Kiichi) +Files: src/channel.c + +Patch 7.4.1525 +Problem: On a high resolution screen the toolbar icons are too small. +Solution: Add "huge" and "giant" to 'toolbariconsize'. (Brian Gix) +Files: src/gui_gtk_x11.c, src/option.h + +Patch 7.4.1526 +Problem: Writing to file and not connecting a channel doesn't work for + MS-Windows. +Solution: Make it work. (Yasuhiro Matsumoto) +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 7.4.1527 +Problem: Channel test is flaky on MS-Windows. +Solution: Limit the select() timeout to 50 msec and try with a new socket if + it fails. +Files: src/channel.c + +Patch 7.4.1528 +Problem: Using "ever" for packages is confusing. +Solution: Use "start", as it's related to startup. +Files: src/ex_cmds2.c, runtime/doc/repeat.txt + +Patch 7.4.1529 +Problem: Specifying buffer number for channel not implemented yet. +Solution: Implement passing a buffer number. +Files: src/structs.h, src/channel.c, src/eval.c, + src/testdir/test_channel.vim + +Patch 7.4.1530 +Problem: MS-Windows job_start() closes wrong handle. +Solution: Close hThread on the process info. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.1531 +Problem: Compiler warning for uninitialized variable. (Dominique Pelle) +Solution: Always give the variable a value. +Files: src/channel.c + +Patch 7.4.1532 +Problem: MS-Windows channel leaks file descriptor. +Solution: Use CreateFile with the right options. (Yasuhiro Matsumoto) +Files: src/os_win32.c + +Patch 7.4.1533 +Problem: Using feedkeys() with an empty string disregards 'x' option. +Solution: Make 'x' work with an empty string. (Thinca) +Files: src/eval.c, src/testdir/test_alot.vim, + src/testdir/test_feedkeys.vim + +Patch 7.4.1534 +Problem: Compiler warning for shadowed variable. (Kazunobu Kuriyama) +Solution: Rename it. +Files: src/eval.c + +Patch 7.4.1535 +Problem: The feedkeys test has a one second delay. +Solution: Avoid need_wait_return() to delay. (Hirohito Higashi) +Files: src/eval.c + +Patch 7.4.1536 +Problem: Cannot re-use a channel for another job. +Solution: Add the "channel" option to job_start(). +Files: src/channel.c, src/eval.c, src/structs.h, src/os_unix.c, + src/os_win32.c, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1537 +Problem: Too many feature flags for pipes, jobs and channels. +Solution: Only use FEAT_JOB_CHANNEL. +Files: src/structs.h, src/feature.h, src/configure.in, + src/auto/configure, src/config.h.in, src/channel.c, src/eval.c, + src/gui.c, src/main.c, src/memline.c, src/misc2.c, src/os_mswin.c, + src/os_unix.c, src/os_win32.c, src/ui.c, src/version.c, + src/macros.h, src/proto.h, src/vim.h, src/Make_cyg_ming.mak, + src/Make_bc5.mak, src/Make_mvc.mak + +Patch 7.4.1538 +Problem: Selection with the mouse does not work in command line mode. +Solution: Use cairo functions. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.1539 +Problem: Too much code in eval.c. +Solution: Move job and channel code to channel.c. +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/proto/eval.pro + +Patch 7.4.1540 +Problem: Channel test is a bit flaky. +Solution: Increase expected wait time. +Files: src/testdir/test_channel.vim + +Patch 7.4.1541 +Problem: Missing job_info(). +Solution: Implement it. +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1542 +Problem: job_start() with a list is not tested. +Solution: Call job_start() with a list. +Files: src/testdir/test_channel.vim + +Patch 7.4.1543 +Problem: Channel log methods are not tested. +Solution: Log job activity and check it. +Files: src/testdir/test_channel.vim + +Patch 7.4.1544 +Problem: On Win32 escaping the command does not work properly. +Solution: Reset 'ssl' when escaping the command. (Yasuhiro Matsumoto) +Files: src/channel.c + +Patch 7.4.1545 +Problem: GTK3: horizontal cursor movement in Visual selection not good. +Solution: Make it work better. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.1546 +Problem: Sticky type checking is more annoying than useful. +Solution: Remove the error for changing a variable type. +Files: src/eval.c, src/testdir/test_assign.vim, + src/testdir/test_alot.vim, runtime/doc/eval.txt + +Patch 7.4.1547 +Problem: Getting a cterm highlight attribute that is not set results in the + string "-1". +Solution: Return an empty string. (Taro Muraoka) +Files: src/syntax.c, src/testdir/test_alot.vim, + src/testdir/test_syn_attr.vim + +Patch 7.4.1548 (after 7.4.1546) +Problem: Two tests fail. +Solution: Adjust the expected error number. Remove check for type. +Files: src/testdir/test101.ok, src/testdir/test55.in, + src/testdir/test55.ok + +Patch 7.4.1549 (after 7.4.1547) +Problem: Test for syntax attributes fails in Win32 GUI. +Solution: Use an existing font name. +Files: src/testdir/test_syn_attr.vim + +Patch 7.4.1550 +Problem: Cannot load packages early. +Solution: Add the ":packloadall" command. +Files: src/ex_cmds.h, src/ex_cmds2.c, src/main.c, + src/proto/ex_cmds2.pro, src/testdir/test_packadd.vim + +Patch 7.4.1551 +Problem: Cannot generate help tags in all doc directories. +Solution: Make ":helptags ALL" work. +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/ex_cmds.c, src/vim.h + src/testdir/test_packadd.vim + +Patch 7.4.1552 +Problem: ":colorscheme" does not use 'packpath'. +Solution: Also use in "start" and "opt" directories in 'packpath'. +Files: src/ex_cmds2.c, src/gui.c, src/hardcopy.c, src/os_mswin.c, + src/spell.c, src/tag.c, src/if_py_both.h, src/vim.h, + src/digraph.c, src/eval.c, src/ex_docmd.c, src/main.c, + src/option.c, src/syntax.c, src/testdir/test_packadd.vim + +Patch 7.4.1553 +Problem: ":runtime" does not use 'packpath'. +Solution: Add "what" argument. +Files: src/ex_cmds2.c, src/vim.h, runtime/doc/repeat.txt, + src/testdir/test_packadd.vim + +Patch 7.4.1554 +Problem: Completion for :colorscheme does not use 'packpath'. +Solution: Make it work, add a test. (Hirohito Higashi) +Files: src/ex_getln.c, src/testdir/test_packadd.vim + +Patch 7.4.1555 +Problem: List of test targets incomplete. +Solution: Add newly added tests. +Files: src/Makefile + +Patch 7.4.1556 +Problem: "make install" changes the help tags file, causing it to differ + from the repository. +Solution: Move it aside and restore it. +Files: src/Makefile + +Patch 7.4.1557 +Problem: Windows cannot be identified. +Solution: Add a unique window number to each window and functions to use it. +Files: src/structs.h, src/window.c, src/eval.c, src/proto/eval.pro, + src/proto/window.pro, src/testdir/test_window_id.vim, + src/testdir/Make_all.mak, runtime/doc/eval.txt + +Patch 7.4.1558 +Problem: It is not easy to find out what windows display a buffer. +Solution: Add win_findbuf(). +Files: src/eval.c, src/window.c, src/proto/window.pro, + src/testdir/test_window_id.vim, runtime/doc/eval.txt + +Patch 7.4.1559 +Problem: Passing cookie to a callback is clumsy. +Solution: Change function() to take arguments and return a partial. +Files: src/structs.h, src/channel.c, src/eval.c, src/if_python.c, + src/if_python3.c, src/if_py_both.h, src/json.c, + src/proto/eval.pro, src/testdir/test_partial.vim, + src/testdir/test_alot.vim, runtime/doc/eval.txt + +Patch 7.4.1560 +Problem: Dict options with a dash are more difficult to use. +Solution: Use an underscore, so that dict.err_io can be used. +Files: src/channel.c, src/structs.h, src/testdir/test_channel.vim, + runtime/doc/channel.txt + +Patch 7.4.1561 (after 7.4.1559) +Problem: Missing update to proto file. +Solution: Change the proto file. +Files: src/proto/channel.pro + +Patch 7.4.1562 +Problem: ":helptags ALL" crashes. (Lcd) +Solution: Don't free twice. +Files: src/ex_cmds.c + +Patch 7.4.1563 +Problem: Partial test fails on windows. +Solution: Return 1 or -1 from compare function. +Files: src/testdir/test_partial.vim + +Patch 7.4.1564 +Problem: An empty list in function() causes an error. +Solution: Handle an empty list like there is no list of arguments. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1565 +Problem: Crash when assert_equal() runs into a NULL string. +Solution: Check for NULL. (Dominique) Add a test. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 7.4.1566 +Problem: Compiler warning for shadowed variable. (Kazunobu Kuriyama) +Solution: Remove the inner one. +Files: src/eval.c + +Patch 7.4.1567 +Problem: Crash in assert_fails(). +Solution: Check for NULL. (Dominique Pelle) Add a test. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 7.4.1568 +Problem: Using CTRL-] in help on option in parentheses doesn't work. +Solution: Skip the "(" in "('". (Hirohito Higashi) +Files: src/ex_cmds.c + +Patch 7.4.1569 +Problem: Using old style tests for quickfix. +Solution: Change them to new style tests. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test106.in, + src/testdir/test106.ok, src/testdir/test_qf_title.in, + src/testdir/test_qf_title.ok, src/testdir/test_quickfix.vim + +Patch 7.4.1570 +Problem: There is no way to avoid the message when editing a file. +Solution: Add the "F" flag to 'shortmess'. (Shougo Matsu, closes #686) +Files: runtime/doc/options.txt, src/buffer.c, src/ex_cmds.c, + src/option.h + +Patch 7.4.1571 +Problem: No test for ":help". +Solution: Add a test for what 7.4.1568 fixed. (Hirohito Higashi) +Files: src/testdir/test_alot.vim, src/testdir/test_help_tagjump.vim + +Patch 7.4.1572 +Problem: Setting 'compatible' in test influences following tests. +Solution: Turn 'compatible' off again. +Files: src/testdir/test_backspace_opt.vim + +Patch 7.4.1573 +Problem: Tests get stuck at the more prompt. +Solution: Move the backspace test out of test_alot. +Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak + +Patch 7.4.1574 +Problem: ":undo 0" does not work. (Florent Fayolle) +Solution: Make it undo all the way. (closes #688) +Files: src/undo.c, src/testdir/test_undolevels.vim, + src/testdir/test_ex_undo.vim, src/testdir/test_alot.vim + +Patch 7.4.1575 +Problem: Using wrong size for struct. +Solution: Use the size for wide API. (Ken Takata) +Files: src/gui_w32.c + +Patch 7.4.1576 +Problem: Write error of viminfo file is not handled properly. (Christian + Neukirchen) +Solution: Check the return value of fclose(). (closes #682) +Files: src/ex_cmds.c + +Patch 7.4.1577 +Problem: Cannot pass "dict.Myfunc" around as a partial. +Solution: Create a partial when expected. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1578 +Problem: There is no way to invoke a function later or periodically. +Solution: Add timer support. +Files: src/eval.c, src/ex_cmds2.c, src/screen.c, src/ex_docmd.c, + src/feature.h, src/gui.c, src/proto/eval.pro, + src/proto/ex_cmds2.pro, src/proto/screen.pro, src/structs.h, + src/version.c, src/testdir/test_alot.vim, + src/testdir/test_timers.vim, runtime/doc/eval.txt + +Patch 7.4.1579 (after 7.4.1578) +Problem: Missing changes in channel.c +Solution: Include the changes. +Files: src/channel.c + +Patch 7.4.1580 +Problem: Crash when using function reference. (Luchr) +Solution: Set initial refcount. (Ken Takata, closes #690) +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1581 +Problem: Using ":call dict.func()" where the function is a partial does + not work. Using "dict.func()" where the function does not take a + Dictionary does not work. +Solution: Handle partial properly in ":call". (Yasuhiro Matsumoto) +Files: src/eval.c, src/testdir/test_partial.vim, src/testdir/test55.ok + +Patch 7.4.1582 +Problem: Get E923 when using function(dict.func, [], dict). (Kent Sibilev) + Storing a function with a dict in a variable drops the dict if the + function is script-local. +Solution: Translate the function name. Use dict arg if present. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1583 +Problem: Warning for uninitialized variable. +Solution: Initialize it. (Dominique) +Files: src/ex_cmds2.c + +Patch 7.4.1584 +Problem: Timers don't work for Win32 console. +Solution: Add check_due_timer() in WaitForChar(). +Files: src/os_win32.c + +Patch 7.4.1585 +Problem: Partial is not recognized everywhere. +Solution: Check for partial in trans_function_name(). (Yasuhiro Matsumoto) + Add a test. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1586 +Problem: Nesting partials doesn't work. +Solution: Append arguments. (Ken Takata) +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1587 +Problem: Compiler warnings with 64 bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/ex_cmds2.c + +Patch 7.4.1588 +Problem: Old style test for quickfix. +Solution: Turn test 96 into a new style test. +Files: src/testdir/Make_all.mak, src/testdir/test96.in, + src/testdir/test96.ok, src/testdir/test_quickfix.vim + +Patch 7.4.1589 +Problem: Combining dict and args with partial doesn't always work. +Solution: Use the arguments from the partial. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1590 +Problem: Warning for shadowed variable. (Christian Brabandt) +Solution: Move the variable into a local block. +Files: src/eval.c + +Patch 7.4.1591 +Problem: The quickfix title is truncated. +Solution: Save the command before it is truncated. (Anton Lindqvist) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1592 +Problem: Quickfix code using memory after being freed. (Dominique Pelle) +Solution: Detect that the window was closed. (Hirohito Higashi) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1593 +Problem: Using channel timeout instead of request timeout. (Coverity) +Solution: Remove the extra assignment. +Files: src/channel.c + +Patch 7.4.1594 +Problem: Timers don't work on Unix. +Solution: Add missing code. +Files: src/os_unix.c + +Patch 7.4.1595 +Problem: Not checking for failed open(). (Coverity) +Solution: Check file descriptor not being negative. +Files: src/os_unix.c + +Patch 7.4.1596 +Problem: Memory leak. (Coverity) +Solution: Free the pattern. +Files: src/ex_cmds2.c + +Patch 7.4.1597 +Problem: Memory leak when out of memory. (Coverity) +Solution: Free the name. +Files: src/eval.c + +Patch 7.4.1598 +Problem: When starting the GUI fails a swap file is left behind. (Joerg + Plate) +Solution: Preserve files before exiting. (closes #692) +Files: src/main.c, src/gui.c + +Patch 7.4.1599 +Problem: No link to Coverity. +Solution: Add Coverity badge in README. +Files: README.md + +Patch 7.4.1600 +Problem: libs directory is not useful. +Solution: Remove arp.library, it was only for very old Amiga versions. +Files: libs/arp.library, Filelist + +Patch 7.4.1601 +Problem: README files take a lot of space in the top directory. +Solution: Move most of them to "READMEdir". +Files: Filelist, Makefile, README.txt.info, README_ami.txt, + README_ami.txt.info, README_amibin.txt, README_amibin.txt.info, + README_amisrc.txt, README_amisrc.txt.info, README_bindos.txt, + README_dos.txt, README_extra.txt, README_mac.txt, README_ole.txt, + README_os2.txt, README_os390.txt, README_src.txt, + README_srcdos.txt, README_unix.txt, README_vms.txt, + README_w32s.txt, READMEdir/README.txt.info, + READMEdir/README_ami.txt, READMEdir/README_ami.txt.info, + READMEdir/README_amibin.txt, READMEdir/README_amibin.txt.info, + READMEdir/README_amisrc.txt, READMEdir/README_amisrc.txt.info, + READMEdir/README_bindos.txt, READMEdir/README_dos.txt, + READMEdir/README_extra.txt, READMEdir/README_mac.txt, + READMEdir/README_ole.txt, READMEdir/README_os2.txt, + READMEdir/README_os390.txt, READMEdir/README_src.txt, + READMEdir/README_srcdos.txt, READMEdir/README_unix.txt, + READMEdir/README_vms.txt, READMEdir/README_w32s.txt, + +Patch 7.4.1602 +Problem: Info files take space in the top directory. +Solution: Move them to "READMEdir". +Files: Filelist, src.info, Contents.info, runtime.info, vimdir.info, + Vim.info, Xxd.info, READMEdir/src.info, READMEdir/Contents.info, + READMEdir/runtime.info, READMEdir/vimdir.info, READMEdir/Vim.info, + READMEdir/Xxd.info + +Patch 7.4.1603 +Problem: Timer with an ":echo" command messes up display. +Solution: Redraw depending on the mode. (Hirohito Higashi) Avoid the more + prompt being used recursively. +Files: src/screen.c, src/message.c + +Patch 7.4.1604 +Problem: Although emoji characters are ambiguous width, best is to treat + them as full width. +Solution: Update the Unicode character tables. Add the 'emoji' options. + (Yasuhiro Matsumoto) +Files: runtime/doc/options.txt, runtime/optwin.vim, + runtime/tools/unicode.vim, src/mbyte.c, src/option.c, src/option.h + +Patch 7.4.1605 +Problem: Catching exception that won't be thrown. +Solution: Remove try/catch. +Files: src/testdir/test55.in + +Patch 7.4.1606 +Problem: Having type() handle a Funcref that is or isn't a partial + differently causes problems for existing scripts. +Solution: Make type() return the same value. (Thinca) +Files: src/eval.c, src/testdir/test_viml.vim + +Patch 7.4.1607 +Problem: Comparing a function that exists on two dicts is not backwards + compatible. (Thinca) +Solution: Only compare the function, not what the partial adds. +Files: src/eval.c, src/testdir/test_alot.vim, src/testdir/test_expr.vim + +Patch 7.4.1608 +Problem: string() doesn't handle a partial. +Solution: Make a string from a partial. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1609 +Problem: Contents file is only for Amiga distro. +Solution: Move it to "READMEdir". Update some info. +Files: Filelist, Contents, READMEdir/Contents + +Patch 7.4.1610 +Problem: Compiler warnings for non-virtual destructor. +Solution: Mark the classes final. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/gui_dwrite.cpp, src/if_ole.cpp + +Patch 7.4.1611 +Problem: The versplit feature makes the code unnecessary complicated. +Solution: Remove FEAT_VERTSPLIT, always support vertical splits when + FEAT_WINDOWS is defined. +Files: src/buffer.c, src/charset.c, src/eval.c, src/ex_cmds.c, + src/ex_docmd.c, src/ex_getln.c, src/gui.c, src/if_lua.c, + src/if_mzsch.c, src/if_ruby.c, src/main.c, src/misc1.c, + src/misc2.c, src/move.c, src/normal.c, src/option.c, + src/quickfix.c, src/screen.c, src/syntax.c, src/term.c, src/ui.c, + src/window.c, src/globals.h, src/gui.h, src/if_py_both.h, + src/option.h, src/structs.h, src/term.h + src/feature.h, src/vim.h, src/version.c + +Patch 7.4.1612 (after 7.4.1611) +Problem: Can't build with small features. +Solution: Move code and #ifdefs. +Files: src/ex_getln.c + +Patch 7.4.1613 (after 7.4.1612) +Problem: Still can't build with small features. +Solution: Adjust #ifdefs. +Files: src/ex_getln.c + +Patch 7.4.1614 +Problem: Still quickfix test in old style. +Solution: Turn test 10 into a new style test. +Files: src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test10.in, + src/testdir/test10.ok, src/testdir/test_quickfix.vim, + src/testdir/test10a.in, src/testdir/test10a.ok + +Patch 7.4.1615 +Problem: Build fails with tiny features. +Solution: Adjust #ifdefs. +Files: src/normal.c, src/window.c + +Patch 7.4.1616 +Problem: Malformed channel request causes a hang. +Solution: Drop malformed message. (Damien) +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1617 +Problem: When a JSON message is split it isn't decoded. +Solution: Wait a short time for the rest of the message to arrive. +Files: src/channel.c, src/json.c, src/structs.h, + src/testdir/test_channel.vim, src/testdir/test_channel.py + +Patch 7.4.1618 +Problem: Starting job with output to buffer changes options in the current + buffer. +Solution: Set "curbuf" earlier. (Yasuhiro Matsumoto) +Files: src/channel.c + +Patch 7.4.1619 +Problem: When 'fileformats' is set in the vimrc it applies to new buffers + but not the initial buffer. +Solution: Set 'fileformat' when starting up. (Mike Williams) +Files: src/option.c + +Patch 7.4.1620 +Problem: Emoji characters are not considered as a kind of word character. +Solution: Give emoji characters a word class number. (Yasuhiro Matsumoto) +Files: src/mbyte.c + +Patch 7.4.1621 +Problem: Channel test doesn't work with Python 2.6. +Solution: Add number in formatting placeholder. (Wiredool) +Files: src/testdir/test_channel.py + +Patch 7.4.1622 +Problem: Channel demo doesn't work with Python 2.6. +Solution: Add number in formatting placeholder +Files: runtime/tools/demoserver.py + +Patch 7.4.1623 +Problem: All Channels share the message ID, it keeps getting bigger. +Solution: Use a message ID per channel. +Files: src/channel.c, src/proto/channel.pro, src/structs.h + +Patch 7.4.1624 +Problem: Can't get info about a channel. +Solution: Add ch_info(). +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1625 +Problem: Trying to close file descriptor that isn't open. +Solution: Check for negative number. +Files: src/os_unix.c + +Patch 7.4.1626 (after 7.4.1624) +Problem: Missing changes to structs. +Solution: Include the changes. +Files: src/structs.h + +Patch 7.4.1627 +Problem: Channel out_cb and err_cb are not tested. +Solution: Add a test. +Files: src/testdir/test_channel.vim + +Patch 7.4.1628 +Problem: 64-bit Compiler warning. +Solution: Change type of variable. (Mike Williams) +Files: src/channel.c + +Patch 7.4.1629 +Problem: Handling emoji characters as full width has problems with + backwards compatibility. +Solution: Remove ambiguous and double width characters from the emoji table. + Use a separate table for the character class. + (partly by Yasuhiro Matsumoto) +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.4.1630 +Problem: Unicode table for double width is outdated. +Solution: Update to the latest Unicode standard. +Files: src/mbyte.c + +Patch 7.4.1631 +Problem: Compiler doesn't understand switch on all enum values. (Tony + Mechelynck) +Solution: Initialize variable. +Files: src/channel.c + +Patch 7.4.1632 +Problem: List of test targets is outdated. +Solution: Update to current list of test targets. +Files: src/Makefile + +Patch 7.4.1633 +Problem: If the help tags file was removed "make install" fails. (Tony + Mechelynck) +Solution: Only try moving the file if it exists. +Files: src/Makefile + +Patch 7.4.1634 +Problem: Vertical movement after CTRL-A ends up in the wrong column. + (Urtica Dioica) +Solution: Set curswant when appropriate. (Hirohito Higashi) +Files: src/ops.c, src/testdir/test_increment.vim + +Patch 7.4.1635 +Problem: Channel test is a bit flaky. +Solution: Remove 'DETACH' if it's there. +Files: src/testdir/test_channel.vim + +Patch 7.4.1636 +Problem: When 'F' is in 'shortmess' the prompt for the encryption key isn't + displayed. (Toothpik) +Solution: Reset msg_silent. +Files: src/ex_getln.c + +Patch 7.4.1637 +Problem: Can't build with older MinGW compiler. +Solution: Change option from c++11 to gnu++11. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1638 +Problem: When binding a function to a dict the reference count is wrong. +Solution: Decrement dict reference count, only reference the function when + actually making a copy. (Ken Takata) +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1639 +Problem: Invoking garbage collection may cause a double free. +Solution: Don't free the dict in a partial when recursive is FALSE. +Files: src/eval.c + +Patch 7.4.1640 +Problem: Crash when an autocommand changes a quickfix list. (Dominique) +Solution: Check whether an entry is still valid. (Yegappan Lakshmanan, + Hirohito Higashi) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1641 +Problem: Using unterminated string. +Solution: Add NUL before calling vim_strsave_shellescape(). (James McCoy) +Files: src/eval.c, src/testdir/test105.in, src/testdir/test105.ok + +Patch 7.4.1642 +Problem: Handling emoji characters as full width has problems with + backwards compatibility. +Solution: Only put characters in the 1f000 range in the emoji table. +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 7.4.1643 (after 7.4.1641) +Problem: Terminating file name has side effects. +Solution: Restore the character. (mostly by James McCoy, closes #713) +Files: src/eval.c, src/testdir/test105.in, src/testdir/test105.ok + +Patch 7.4.1644 +Problem: Using string() on a partial that exists in the dictionary it binds + results in an error. (Nikolai Pavlov) +Solution: Make string() not fail on a recursively nested structure. (Ken + Takata) +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1645 +Problem: When a dict contains a partial it can't be redefined as a + function. (Nikolai Pavlov) +Solution: Remove the partial when overwriting with a function. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1646 +Problem: Using Python vim.bindeval() on a partial doesn't work. (Nikolai + Pavlov) +Solution: Add VAR_PARTIAL support in Python. +Files: src/if_py_both.h, src/testdir/test_partial.vim + +Patch 7.4.1647 +Problem: Using freed memory after setqflist() and ":caddbuffer". (Dominique) +Solution: Set qf_ptr when adding the first item to the quickfix list. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1648 +Problem: Compiler has a problem copying a string into di_key[]. (Yegappan + Lakshmanan) +Solution: Add dictitem16_T. +Files: src/structs.h, src/eval.c + +Patch 7.4.1649 +Problem: The matchit plugin needs to be copied to be used. +Solution: Put the matchit plugin in an optional package. +Files: Filelist, runtime/macros/matchit.vim, runtime/macros/matchit.txt, + runtime/macros/README.txt, src/Makefile, + runtime/pack/dist/opt/matchit/plugin/matchit.vim, + runtime/pack/dist/opt/matchit/doc/matchit.txt, + runtime/pack/dist/opt/matchit/doc/tags, + runtime/doc/usr_05.txt, runtime/doc/usr_toc.txt + +Patch 7.4.1650 +Problem: Quickfix test fails. +Solution: Accept any number of matches. +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1651 +Problem: Some dead (MSDOS) code remains. +Solution: Remove the unused lines. (Ken Takata) +Files: src/misc1.c + +Patch 7.4.1652 +Problem: Old style test for fnamemodify(). +Solution: Turn it into a new style test. +Files: src/testdir/test105.in, src/testdir/test105.ok, + src/testdir/test_fnamemodify.vim, src/testdir/test_alot.vim, + src/testdir/Make_all.mak + +Patch 7.4.1653 (after 7.4.1649) +Problem: Users who loaded matchit.vim manually have to change their + startup. (Gary Johnson) +Solution: Add a file in the old location that loads the package. +Files: runtime/macros/matchit.vim, Filelist + +Patch 7.4.1654 +Problem: Crash when using expand('%:S') in a buffer without a name. +Solution: Don't set a NUL. (James McCoy, closes #714) +Files: src/eval.c, src/testdir/test_fnamemodify.vim + +Patch 7.4.1655 +Problem: remote_expr() hangs. (Ramel) +Solution: Check for messages in the waiting loop. +Files: src/if_xcmdsrv.c + +Patch 7.4.1656 +Problem: Crash when using partial with a timer. +Solution: Increment partial reference count. (Hirohito Higashi) +Files: src/eval.c, src/testdir/test_timers.vim + +Patch 7.4.1657 +Problem: On Unix in a terminal: channel messages are not handled right away. + (Jackson Alves de Aquino) +Solution: Break the loop for timers when something was received. +Files: src/os_unix.c + +Patch 7.4.1658 +Problem: A plugin does not know when VimEnter autocommands were already + triggered. +Solution: Add the v:vim_did_enter variable. +Files: src/eval.c, src/main.c, src/vim.h, src/testdir/test_autocmd.vim, + src/testdir/test_alot.vim, runtime/doc/autocmd.txt, + runtime/doc/eval.txt + +Patch 7.4.1659 (after 7.4.1657) +Problem: Compiler warning for argument type. (Manuel Ortega) +Solution: Remove "&". +Files: src/os_unix.c + +Patch 7.4.1660 +Problem: has('patch-7.4.1') doesn't work. +Solution: Fix off-by-one error. (Thinca) +Files: src/eval.c, src/testdir/test_expr.vim, src/testdir/test60.in, + src/testdir/test60.ok + +Patch 7.4.1661 +Problem: No test for special characters in channel eval command. +Solution: Testing sending and receiving text with special characters. +Files: src/testdir/test_channel.vim, src/testdir/test_channel.py + +Patch 7.4.1662 +Problem: No test for an invalid Ex command on a channel. +Solution: Test handling an invalid command gracefully. Avoid getting an + error message, do write it to the channel log. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel.py + +Patch 7.4.1663 +Problem: In tests it's often useful to check if a pattern matches. +Solution: Add assert_match(). +Files: src/eval.c, src/testdir/test_assert.vim, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1664 +Problem: Crash in :cgetexpr. +Solution: Check for NULL pointer. (Dominique) Add a test. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1665 +Problem: Crash when calling job_start() with a NULL string. (Dominique) +Solution: Check for an invalid argument. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1666 +Problem: When reading JSON from a channel all readahead is used. +Solution: Use the fill function to reduce overhead. +Files: src/channel.c, src/json.c, src/structs.h + +Patch 7.4.1667 +Problem: Win32: waiting on a pipe with fixed sleep time. +Solution: Start with a short delay and increase it when looping. +Files: src/channel.c + +Patch 7.4.1668 +Problem: channel_get_all() does multiple allocations. +Solution: Compute the size and allocate once. +Files: src/channel.c + +Patch 7.4.1669 +Problem: When writing buffer lines to a pipe Vim may block. +Solution: Avoid blocking, write more lines later. +Files: src/channel.c, src/misc2.c, src/os_unix.c, src/structs.h, + src/vim.h, src/proto/channel.pro, src/testdir/test_channel.vim + +Patch 7.4.1670 +Problem: Completion doesn't work well for a variable containing "#". +Solution: Recognize the "#". (Watiko) +Files: src/eval.c + +Patch 7.4.1671 +Problem: When help exists in multiple languages, adding @ab while "ab" is + the default help language is unnecessary. +Solution: Leave out "@ab" when not needed. (Ken Takata) +Files: src/ex_getln.c + +Patch 7.4.1672 +Problem: The Dvorak support is a bit difficult to install. +Solution: Turn it into an optional package. +Files: runtime/macros/dvorak, runtime/macros/README.txt, + runtime/pack/dist/opt/dvorak/plugin/dvorak.vim, + runtime/pack/dist/opt/dvorak/dvorak/enable.vim, + runtime/pack/dist/opt/dvorak/dvorak/disable.vim + +Patch 7.4.1673 +Problem: The justify plugin has to be copied or sourced to be used. +Solution: Turn it into a package. +Files: runtime/macros/justify.vim, runtime/macros/README.txt, + runtime/pack/dist/opt/justify/plugin/justify.vim, Filelist + +Patch 7.4.1674 +Problem: The editexisting plugin has to be copied or sourced to be used. +Solution: Turn it into a package. +Files: runtime/macros/editexisting.vim, runtime/macros/README.txt, + runtime/pack/dist/opt/editexisting/plugin/editexisting.vim, + Filelist + +Patch 7.4.1675 +Problem: The swapmous plugin has to be copied or sourced to be used. +Solution: Turn it into the swapmouse package. +Files: runtime/macros/swapmous.vim, runtime/macros/README.txt, + runtime/pack/dist/opt/swapmouse/plugin/swapmouse.vim, Filelist + +Patch 7.4.1676 +Problem: The shellmenu plugin has to be copied or sourced to be used. +Solution: Turn it into a package. +Files: runtime/macros/shellmenu.vim, runtime/macros/README.txt, + runtime/pack/dist/opt/shellmenu/plugin/shellmenu.vim, Filelist + +Patch 7.4.1677 +Problem: A reference to the removed file_select plugin remains. +Solution: Remove it. +Files: runtime/macros/README.txt + +Patch 7.4.1678 +Problem: Warning for unused argument. +Solution: Add UNUSED. (Dominique Pelle) +Files: src/if_mzsch.c + +Patch 7.4.1679 +Problem: Coverity: copying value of v_lock without initializing it. +Solution: Init v_lock in rettv_list_alloc() and rettv_dict_alloc(). +Files: src/eval.c + +Patch 7.4.1680 +Problem: Coverity warns for not checking name length (false positive). +Solution: Only copy the characters we know are there. +Files: src/channel.c + +Patch 7.4.1681 +Problem: Coverity warns for fixed size buffer length (false positive). +Solution: Add a check for the name length. +Files: src/eval.c + +Patch 7.4.1682 +Problem: Coverity: no check for NULL. +Solution: Add check for invalid argument to assert_match(). +Files: src/eval.c + +Patch 7.4.1683 +Problem: Generated .bat files do not support --nofork. +Solution: Add check for --nofork. Also add "setlocal". (Kevin Cant煤, + closes #659) +Files: src/dosinst.c + +Patch 7.4.1684 +Problem: README text is slightly outdated. +Solution: Mention the READMEdir directory. +Files: README.md, README.txt + +Patch 7.4.1685 +Problem: There is no easy way to get all the information about a match. +Solution: Add matchstrpos(). (Ozaki Kiichi) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c, + src/testdir/test_alot.vim, src/testdir/test_matchstrpos.vim + +Patch 7.4.1686 +Problem: When running tests $HOME/.viminfo is written. (James McCoy) +Solution: Add 'nviminfo' to the 'viminfo' option. (closes #722) +Files: src/testdir/test_backspace_opt.vim, src/testdir/test_viminfo.vim, + src/testdir/runtest.vim. + +Patch 7.4.1687 +Problem: The channel close_cb option does not work. +Solution: Use jo_close_partial instead of jo_err_partial. (Damien) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1688 +Problem: MzScheme does not support partial. +Solution: Add minimal partial support. (Ken Takata) +Files: src/if_mzsch.c + +Patch 7.4.1689 +Problem: Ruby interface has inconsistent coding style. +Solution: Fix the coding style. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.1690 +Problem: Can't compile with the conceal feature but without multibyte. +Solution: Adjust #ifdef. (Owen Leibman) +Files: src/eval.c, src/window.c + +Patch 7.4.1691 +Problem: When switching to a new buffer and an autocommand applies syntax + highlighting an ml_get error may occur. +Solution: Check "syn_buf" against the buffer in the window. (Alexander von + Buddenbrock, closes #676) +Files: src/syntax.c + +Patch 7.4.1692 +Problem: feedkeys('i', 'x') gets stuck, waits for a character to be typed. +Solution: Behave like ":normal". (Yasuhiro Matsumoto) +Files: src/eval.c, src/testdir/test_feedkeys.vim + +Patch 7.4.1693 +Problem: Building the Perl interface gives compiler warnings. +Solution: Remove a pragma. Add noreturn attributes. (Damien) +Files: src/if_perl.xs + +Patch 7.4.1694 +Problem: Win32 gvim doesn't work with "dvorakj" input method. +Solution: Wait for QS_ALLINPUT instead of QS_ALLEVENTS. (Yukihiro Nakadaira) +Files: src/gui_w32.c + +Patch 7.4.1695 +Problem: ":syn reset" clears the effect ":syn iskeyword". (James McCoy) +Solution: Remove clearing the syntax keywords. +Files: src/syntax.c + +Patch 7.4.1696 +Problem: When using :stopinsert in a silent mapping the "INSERT" message + isn't cleared. (Coacher) +Solution: Always clear the message. (Christian Brabandt, closes #718) +Files: src/ex_docmd.c, src/proto/screen.pro, src/screen.c + +Patch 7.4.1697 +Problem: Display problems when the 'ambiwidth' and 'emoji' options are not + set properly or the terminal doesn't behave as expected. +Solution: After drawing an ambiguous width character always position the + cursor. +Files: src/mbyte.c, src/screen.c, src/proto/mbyte.pro + +Patch 7.4.1698 +Problem: Two tests fail when running tests with MinGW. (Michael Soyka) +Solution: Convert test_getcwd.ok test_wordcount.ok to unix fileformat. +Files: src/testdir/Make_ming.mak + +Patch 7.4.1699 +Problem: :packadd does not work the same when used early or late. +Solution: Always load plugins matching "plugin/**/*.vim". +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 7.4.1700 +Problem: Equivalence classes are not properly tested. +Solution: Add tests for multibyte and latin1. Fix an error. (Owen Leibman) +Files: src/regexp.c, src/testdir/Make_all.mak, + src/testdir/test_alot_latin.vim, src/testdir/test_alot_utf8.vim, + src/testdir/test_regexp_latin.vim, + src/testdir/test_regexp_utf8.vim + +Patch 7.4.1701 +Problem: Equivalence classes still tested in old style tests. +Solution: Remove the duplicate. +Files: src/testdir/test44.in, src/testdir/test44.ok, + src/testdir/test99.in, src/testdir/test99.ok + +Patch 7.4.1702 +Problem: Using freed memory when parsing 'printoptions' fails. +Solution: Save the old options and restore them in case of an error. + (Dominique) +Files: src/hardcopy.c, src/testdir/test_hardcopy.vim + +Patch 7.4.1703 +Problem: Can't assert for not equal and not matching. +Solution: Add assert_notmatch() and assert_notequal(). +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test_assert.vim + +Patch 7.4.1704 +Problem: Using freed memory with "wincmd p". (Dominique Pelle) +Solution: Also clear "prevwin" in other tab pages. +Files: src/window.c + +Patch 7.4.1705 +Problem: The 'guifont' option does not allow for a quality setting. +Solution: Add the "q" item, supported on MS-Windows. (Yasuhiro Matsumoto) +Files: runtime/doc/options.txt, src/gui_w32.c, src/os_mswin.c, + src/proto/os_mswin.pro + +Patch 7.4.1706 +Problem: Old style function declaration breaks build. +Solution: Remove __ARGS(). +Files: src/proto/os_mswin.pro + +Patch 7.4.1707 +Problem: Cannot use empty dictionary key, even though it can be useful. +Solution: Allow using an empty dictionary key. +Files: src/hashtab.c, src/eval.c, src/testdir/test_expr.vim + +Patch 7.4.1708 +Problem: New regexp engine does not work properly with EBCDIC. +Solution: Define equivalence class characters. (Owen Leibman) +Files: src/regexp_nfa.c + +Patch 7.4.1709 +Problem: Mistake in #ifdef. +Solution: Change PROOF_QUALITY to DRAFT_QUALITY. (Ken Takata) +Files: src/os_mswin.c + +Patch 7.4.1710 +Problem: Not all output of an external command is read. +Solution: Avoid timing out when the process has exited. (closes #681) +Files: src/os_unix.c + +Patch 7.4.1711 +Problem: When using try/catch in 'statusline' it is still considered an + error and the status line will be disabled. +Solution: Check did_emsg instead of called_emsg. (haya14busa, closes #729) +Files: src/screen.c, src/testdir/test_statusline.vim, + src/testdir/test_alot.vim + +Patch 7.4.1712 +Problem: For plugins in packages, plugin authors need to take care of all + dependencies. +Solution: When loading "start" packages and for :packloadall, first add all + directories to 'runtimepath' before sourcing plugins. +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 7.4.1713 +Problem: GTK GUI doesn't work on Wayland. +Solution: Specify that only the X11 backend is allowed. (Simon McVittie) +Files: src/gui_gtk_x11.c + +Patch 7.4.1714 +Problem: Non-GUI specific settings in the gvimrc_example file. +Solution: Move some settings to the vimrc_example file. Remove setting + 'hlsearch' again. (suggested by Hirohito Higashi) +Files: runtime/vimrc_example.vim, runtime/gvimrc_example.vim + +Patch 7.4.1715 +Problem: Double free when a partial is in a cycle with a list or dict. + (Nikolai Pavlov) +Solution: Do not free a nested list or dict used by the partial. +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1716 +Problem: 'autochdir' doesn't work for the first file. (Rob Hoelz) +Solution: Call DO_AUTOCHDIR after startup. (Christian Brabandt, closes #704) +Files: src/main.c + +Patch 7.4.1717 +Problem: Leaking memory when opening a channel fails. +Solution: Unreference partials in job options. +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1718 +Problem: Coverity: not using return value of set_ref_in_item(). +Solution: Use the return value. +Files: src/eval.c + +Patch 7.4.1719 +Problem: Leaking memory when there is a cycle involving a job and a + partial. +Solution: Add a copyID to job and channel. Set references in items referred + by them. Go through all jobs and channels to find unreferenced + items. Also, decrement reference counts when garbage collecting. +Files: src/eval.c, src/channel.c, src/netbeans.c, src/globals.h, + src/ops.c, src/regexp.c, src/tag.c, src/proto/channel.pro, + src/proto/eval.pro, src/testdir/test_partial.vim, src/structs.h + +Patch 7.4.1720 +Problem: Tests fail without the job feature. +Solution: Skip tests when the job feature is not present. +Files: src/testdir/test_partial.vim + +Patch 7.4.1721 +Problem: The vimtbar files are unused. +Solution: Remove them. (Ken Takata) +Files: src/vimtbar.dll, src/vimtbar.h, src/vimtbar.lib, Filelist + +Patch 7.4.1722 +Problem: Crash when calling garbagecollect() after starting a job. +Solution: Set the copyID on job and channel. (Hirohito Higashi, Ozaki + Kiichi) +Files: src/eval.c + +Patch 7.4.1723 +Problem: When using try/catch in 'tabline' it is still considered an + error and the tabline will be disabled. +Solution: Check did_emsg instead of called_emsg. (haya14busa, closes #746) +Files: src/screen.c, src/testdir/test_tabline.vim, + src/testdir/test_alot.vim + +Patch 7.4.1724 (after 7.4.1723) +Problem: Tabline test fails in GUI. +Solution: Remove 'e' from 'guioptions'. +Files: src/testdir/test_tabline.vim + +Patch 7.4.1725 +Problem: Compiler errors for non-ANSI compilers. +Solution: Remove // comment. Remove comma at end of enum. (Michael Jarvis) +Files: src/eval.c + +Patch 7.4.1726 +Problem: ANSI compiler complains about string length. +Solution: Split long string in two parts. (Michael Jarvis) +Files: src/ex_cmds.c + +Patch 7.4.1727 +Problem: Cannot detect a crash in tests when caused by garbagecollect(). +Solution: Add garbagecollect_for_testing(). Do not free a job if is still + useful. +Files: src/channel.c, src/eval.c, src/getchar.c, src/main.c, src/vim.h, + src/proto/eval.pro, src/testdir/runtest.vim, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1728 +Problem: The help for functions require a space after the "(". +Solution: Make CTRL-] on a function name ignore the arguments. (Hirohito + Higashi) +Files: src/ex_cmds.c, src/testdir/test_help_tagjump.vim, + runtime/doc/eval.txt + +Patch 7.4.1729 +Problem: The Perl interface cannot use 'print' operator for writing + directly in standard IO. +Solution: Add a minimal implementation of PerlIO Layer feature and try to + use it for STDOUT/STDERR. (Damien) +Files: src/if_perl.xs, src/testdir/test_perl.vim + +Patch 7.4.1730 +Problem: It is not easy to get a character out of a string. +Solution: Add strgetchar() and strcharpart(). +Files: src/eval.c, src/testdir/test_expr.vim + +Patch 7.4.1731 +Problem: Python: turns partial into simple funcref. +Solution: Use partials like partials. (Nikolai Pavlov, closes #734) +Files: runtime/doc/if_pyth.txt, src/eval.c, src/if_py_both.h, + src/if_python.c, src/if_python3.c, src/proto/eval.pro, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.1732 +Problem: Folds may close when using autocomplete. (Anmol Sethi) +Solution: Increment/decrement disable_fold. (Christian Brabandt, closes + #643) +Files: src/edit.c, src/fold.c, src/globals.h + +Patch 7.4.1733 +Problem: "make install" doesn't know about cross-compiling. (Christian + Neukirchen) +Solution: Add CROSS_COMPILING. (closes #740) +Files: src/configure.in, src/auto/configure, src/config.mk.in, + src/Makefile + +Patch 7.4.1734 (after 7.4.1730) +Problem: Test fails when not using utf-8. +Solution: Split test in regular and utf-8 part. +Files: src/testdir/test_expr.vim, src/testdir/test_expr_utf8.vim, + src/testdir/test_alot_utf8.vim + +Patch 7.4.1735 +Problem: It is not possible to only see part of the message history. It is + not possible to clear messages. +Solution: Add a count to ":messages" and a clear argument. (Yasuhiro + Matsumoto) +Files: runtime/doc/message.txt, src/ex_cmds.h, src/message.c, + src/testdir/test_messages.vim, src/testdir/test_alot.vim + +Patch 7.4.1736 (after 7.4.1731) +Problem: Unused variable. +Solution: Remove it. (Yasuhiro Matsumoto) +Files: src/if_py_both.h + +Patch 7.4.1737 +Problem: Argument marked as unused is used. +Solution: Remove UNUSED. +Files: src/message.c + +Patch 7.4.1738 +Problem: Count for ":messages" depends on number of lines. +Solution: Add ADDR_OTHER address type. +Files: src/ex_cmds.h + +Patch 7.4.1739 +Problem: Messages test fails on MS-Windows. +Solution: Adjust the asserts. Skip the "messages maintainer" line if not + showing all messages. +Files: src/message.c, src/testdir/test_messages.vim + +Patch 7.4.1740 +Problem: syn-cchar defined with matchadd() does not appear if there are no + other syntax definitions which matches buffer text. +Solution: Check for startcol. (Ozaki Kiichi, haya14busa, closes #757) +Files: src/screen.c, src/testdir/Make_all.mak, + src/testdir/test_alot_utf8.vim, src/testdir/test_match_conceal.in, + src/testdir/test_match_conceal.ok, + src/testdir/test_matchadd_conceal.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_undolevels.vim + +Patch 7.4.1741 +Problem: Not testing utf-8 characters. +Solution: Move the right asserts to the test_expr_utf8 test. +Files: src/testdir/test_expr.vim, src/testdir/test_expr_utf8.vim + +Patch 7.4.1742 +Problem: strgetchar() does not work correctly. +Solution: use mb_cptr2len(). Add a test. (Naruhiko Nishino) +Files: src/eval.c, src/testdir/test_expr_utf8.vim + +Patch 7.4.1743 +Problem: Clang warns for uninitialized variable. (Michael Jarvis) +Solution: Initialize it. +Files: src/if_py_both.h + +Patch 7.4.1744 +Problem: Python: Converting a sequence may leak memory. +Solution: Decrement a reference. (Nikolai Pavlov) +Files: src/if_py_both.h + +Patch 7.4.1745 +Problem: README file is not clear about where to get Vim. +Solution: Add links to github, releases and the Windows installer. + (Suggested by Christian Brabandt) +Files: README.md, README.txt + +Patch 7.4.1746 +Problem: Memory leak in Perl. +Solution: Decrement the reference count. Add a test. (Damien) +Files: src/if_perl.xs, src/testdir/test_perl.vim + +Patch 7.4.1747 +Problem: Coverity: missing check for NULL pointer. +Solution: Check for out of memory. +Files: src/if_py_both.h + +Patch 7.4.1748 +Problem: "gD" does not find match in first column of first line. (Gary + Johnson) +Solution: Accept match at the cursor. +Files: src/normal.c, src/testdir/test_goto.vim, src/testdir/test_alot.vim + +Patch 7.4.1749 +Problem: When using GTK 3.20 there are a few warnings. +Solution: Use new functions when available. (Kazunobu Kuriyama) +Files: src/gui_beval.c src/gui_gtk_x11.c + +Patch 7.4.1750 +Problem: When a buffer gets updated while in command line mode, the screen + may be messed up. +Solution: Postpone the redraw when the screen is scrolled. +Files: src/channel.c + +Patch 7.4.1751 +Problem: Crash when 'tagstack' is off. (Dominique Pelle) +Solution: Fix it. (Hirohito Higashi) +Files: src/tag.c, src/testdir/test_alot.vim, src/testdir/test_tagjump.vim + +Patch 7.4.1752 +Problem: When adding to the quickfix list the current position is reset. +Solution: Do not reset the position when not needed. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1753 +Problem: "noinsert" in 'completeopt' is sometimes ignored. +Solution: Set the variables when the 'completeopt' was set. (Ozaki Kiichi) +Files: src/edit.c, src/option.c, src/proto/edit.pro + +Patch 7.4.1754 +Problem: When 'filetype' was set and reloading a buffer which does not + cause it to be set, the syntax isn't loaded. (KillTheMule) +Solution: Remember whether the FileType event was fired and fire it if not. + (Anton Lindqvist, closes #747) +Files: src/fileio.c, src/testdir/test_syntax.vim + +Patch 7.4.1755 +Problem: When using getreg() on a non-existing register a NULL list is + returned. (Bjorn Linse) +Solution: Allocate an empty list. Add a test. +Files: src/eval.c, src/testdir/test_expr.vim + +Patch 7.4.1756 +Problem: "dll" options are not expanded. +Solution: Expand environment variables. (Ozaki Kiichi) +Files: src/option.c, src/testdir/test_alot.vim, + src/testdir/test_expand_dllpath.vim + +Patch 7.4.1757 +Problem: When using complete() it may set 'modified' even though nothing + was inserted. +Solution: Use Down/Up instead of Next/Previous match. (Shougo Matsu, closes + #745) +Files: src/edit.c + +Patch 7.4.1758 +Problem: Triggering CursorHoldI when in CTRL-X mode causes problems. +Solution: Do not trigger CursorHoldI in CTRL-X mode. Add "!" flag to + feedkeys() (test with that didn't work though). +Files: src/edit.c, src/eval.c + +Patch 7.4.1759 +Problem: When using feedkeys() in a timer the inserted characters are not + used right away. +Solution: Break the wait loop when characters have been added to typebuf. + use this for testing CursorHoldI. +Files: src/gui.c, src/os_win32.c, src/os_unix.c, + src/testdir/test_autocmd.vim + +Patch 7.4.1760 (after 7.4.1759) +Problem: Compiler warning for unused variable. +Solution: Add #ifdef. (John Marriott) +Files: src/os_win32.c + +Patch 7.4.1761 +Problem: Coverity complains about ignoring return value. +Solution: Add "(void)" to get rid of the warning. +Files: src/eval.c + +Patch 7.4.1762 +Problem: Coverity: useless assignments. +Solution: Remove them. +Files: src/search.c + +Patch 7.4.1763 +Problem: Coverity: useless assignment. +Solution: Add #if 0. +Files: src/spell.c + +Patch 7.4.1764 +Problem: C++ style comment. (Ken Takata) +Solution: Finish the work started here: don't call perror() when stderr + isn't working. +Files: src/os_unix.c + +Patch 7.4.1765 +Problem: Undo options are not together in the options window. +Solution: Put them together. (Gary Johnson) +Files: runtime/optwin.vim + +Patch 7.4.1766 +Problem: Building instructions for MS-Windows are outdated. +Solution: Mention setting SDK_INCLUDE_DIR. (Ben Franklin, closes #771) Move + outdated instructions further down. +Files: src/INSTALLpc.txt + +Patch 7.4.1767 +Problem: When installing Vim on a GTK system the icon cache is not updated. +Solution: Update the GTK icon cache when possible. (Kazunobu Kuriyama) +Files: src/Makefile, src/configure.in, src/config.mk.in, + src/auto/configure + +Patch 7.4.1768 +Problem: Arguments of setqflist() are not checked properly. +Solution: Add better checks, add a test. (Nikolai Pavlov, Hirohito Higashi, + closes #661) +Files: src/eval.c, src/testdir/test_quickfix.vim + +Patch 7.4.1769 +Problem: No "closed", "errors" and "encoding" attribute on Python output. +Solution: Add attributes and more tests. (Roland Puntaier, closes #622) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.1770 +Problem: Cannot use true color in the terminal. +Solution: Add the 'guicolors' option. (Nikolai Pavlov) +Files: runtime/doc/options.txt, runtime/doc/term.txt, + runtime/doc/various.txt, src/auto/configure, src/config.h.in, + src/configure.in, src/eval.c, src/globals.h, src/hardcopy.c, + src/option.c, src/option.h, src/proto/term.pro, src/screen.c, + src/structs.h, src/syntax.c, src/term.c, src/term.h, + src/version.c, src/vim.h + +Patch 7.4.1771 (after 7.4.1768) +Problem: Warning for unused variable. +Solution: Add #ifdef. (John Marriott) +Files: src/eval.c + +Patch 7.4.1772 (after 7.4.1767) +Problem: Installation fails when $GTK_UPDATE_ICON_CACHE is empty. +Solution: Add quotes. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 7.4.1773 (after 7.4.1770) +Problem: Compiler warnings. (Dominique Pelle) +Solution: Add UNUSED. Add type cast. Avoid a buffer overflow. +Files: src/syntax.c, src/term.c + +Patch 7.4.1774 (after 7.4.1770) +Problem: Cterm true color feature has warnings. +Solution: Add type casts. +Files: src/screen.c, src/syntax.c, src/term.c + +Patch 7.4.1775 +Problem: The rgb.txt file is not installed. +Solution: Install the file. (Christian Brabandt) +Files: src/Makefile + +Patch 7.4.1776 +Problem: Using wrong buffer length. +Solution: use the right name. (Kazunobu Kuriyama) +Files: src/term.c + +Patch 7.4.1777 +Problem: Newly added features can escape the sandbox. +Solution: Add checks for restricted and secure. (Yasuhiro Matsumoto) +Files: src/eval.c + +Patch 7.4.1778 +Problem: When using the term truecolor feature, the t_8f and t_8b termcap + options are not set by default. +Solution: Move the values to before BT_EXTRA_KEYS. (Christian Brabandt) +Files: src/term.c + +Patch 7.4.1779 +Problem: Using negative index in strcharpart(). (Yegappan Lakshmanan) +Solution: Assume single byte when using a negative index. +Files: src/eval.c + +Patch 7.4.1780 +Problem: Warnings reported by cppcheck. +Solution: Fix the warnings. (Dominique Pelle) +Files: src/ex_cmds2.c, src/json.c, src/misc1.c, src/ops.c, + src/regexp_nfa.c + +Patch 7.4.1781 +Problem: synIDattr() does not respect 'guicolors'. +Solution: Change the condition for the mode. (Christian Brabandt) +Files: src/eval.c + +Patch 7.4.1782 +Problem: strcharpart() does not work properly with some multibyte + characters. +Solution: Use mb_cptr2len() instead of mb_char2len(). (Hirohito Higashi) +Files: src/eval.c, src/testdir/test_expr_utf8.vim + +Patch 7.4.1783 +Problem: The old regexp engine doesn't handle character classes correctly. + (Manuel Ortega) +Solution: Use regmbc() instead of regc(). Add a test. +Files: src/regexp.c, src/testdir/test_regexp_utf8.vim + +Patch 7.4.1784 +Problem: The termtruecolor feature is enabled differently from many other + features. +Solution: Enable the termtruecolor feature for the big build, not through + configure. +Files: src/configure.in, src/config.h.in, src/auto/configure, + src/feature.h + +Patch 7.4.1785 (after 7.4.1783) +Problem: Regexp test fails on windows. +Solution: set 'isprint' to the right value for testing. +Files: src/testdir/test_regexp_utf8.vim + +Patch 7.4.1786 +Problem: Compiled-in colors do not match rgb.txt. +Solution: Use the rgb.txt colors. (Kazunobu Kuriyama) +Files: src/term.c + +Patch 7.4.1787 +Problem: When a job ends the close callback is invoked before other + callbacks. On Windows the close callback is not called. +Solution: First invoke out/err callbacks before the close callback. + Make the close callback work on Windows. +Files: src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, src/testdir/test_channel_pipe.py + +Patch 7.4.1788 +Problem: NSIS script is missing packages. +Solution: Add the missing directories. (Ken Takata) +Files: nsis/gvim.nsi + +Patch 7.4.1789 +Problem: Cannot use ch_read() in the close callback. +Solution: Do not discard the channel if there is readahead. Do not discard + readahead if there is a close callback. +Files: src/eval.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 7.4.1790 +Problem: Leading white space in a job command matters. (Andrew Stewart) +Solution: Skip leading white space. +Files: src/os_unix.c + +Patch 7.4.1791 +Problem: Channel could be garbage collected too early. +Solution: Don't free a channel or remove it from a job when it is still + useful. +Files: src/channel.c + +Patch 7.4.1792 +Problem: Color name decoding is implemented several times. +Solution: Move it to term.c. (Christian Brabandt) +Files: src/gui_mac.c, src/gui_photon.c, src/gui_w32.c, + src/proto/term.pro, src/term.c + +Patch 7.4.1793 +Problem: Some character classes may differ between systems. On OS/X the + regexp test fails. +Solution: Make this less dependent on the system. (idea by Kazunobu Kuriyama) +Files: src/regexp.c, src/regexp_nfa.c + +Patch 7.4.1794 (after 7.4.1792) +Problem: Can't build on MS-Windows. +Solution: Add missing declaration. +Files: src/gui_w32.c + +Patch 7.4.1795 +Problem: Compiler warning for redefining RGB. (John Marriott) +Solution: Rename it to TORGB. +Files: src/term.c + +Patch 7.4.1796 (after 7.4.1795) +Problem: Colors are wrong on MS-Windows. (Christian Robinson) +Solution: Use existing RGB macro if it exists. (Ken Takata) +Files: src/term.c + +Patch 7.4.1797 +Problem: Warning from Windows 64 bit compiler. +Solution: Change int to size_t. (Mike Williams) +Files: src/term.c + +Patch 7.4.1798 +Problem: Still compiler warning for unused return value. (Charles Campbell) +Solution: Assign to ignoredp. +Files: src/term.c + +Patch 7.4.1799 +Problem: 'guicolors' is a confusing option name. +Solution: Use 'termguicolors' instead. (Hirohito Higashi, Ken Takata) +Files: runtime/doc/options.txt, runtime/doc/term.txt, + runtime/doc/various.txt, runtime/syntax/dircolors.vim, src/eval.c, + src/feature.h, src/globals.h, src/hardcopy.c, src/option.c, + src/option.h, src/proto/term.pro, src/screen.c, src/structs.h, + src/syntax.c, src/term.c, src/version.c, src/vim.h + +Patch 7.4.1800 (after 7.4.1799) +Problem: Unnecessary #ifdef. +Solution: Just use USE_24BIT. (Ken Takata) +Files: src/syntax.c + +Patch 7.4.1801 +Problem: Make uninstall leaves file behind. +Solution: Delete rgb.txt. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 7.4.1802 +Problem: Quickfix doesn't handle long lines well, they are split. +Solution: Drop characters after a limit. (Anton Lindqvist) +Files: src/quickfix.c, src/testdir/test_quickfix.vim, + src/testdir/samples/quickfix.txt + +Patch 7.4.1803 +Problem: GTK3 doesn't handle menu separators properly. +Solution: Use gtk_separator_menu_item_new(). (Kazunobu Kuriyama) +Files: src/gui_gtk.c + +Patch 7.4.1804 +Problem: Can't use Vim as MANPAGER. +Solution: Add manpager.vim. (Enno Nagel, closes #491) +Files: runtime/doc/filetype.txt, runtime/plugin/manpager.vim + +Patch 7.4.1805 +Problem: Running tests in shadow dir fails. +Solution: Link the samples directory +Files: src/Makefile + +Patch 7.4.1806 +Problem: 'termguicolors' option missing from the options window. +Solution: Add the entry. +Files: runtime/optwin.vim + +Patch 7.4.1807 +Problem: Test_out_close_cb sometimes fails. +Solution: Always write DETACH to out, not err. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1808 (after 7.4.1806) +Problem: Using wrong feature name to check for 'termguicolors'. +Solution: Use the right feature name. (Ken Takata) +Files: runtime/optwin.vim + +Patch 7.4.1809 (after 7.4.1808) +Problem: Using wrong short option name for 'termguicolors'. +Solution: Use the option name. +Files: runtime/optwin.vim + +Patch 7.4.1810 +Problem: Sending DETACH after a channel was closed isn't useful. +Solution: Only add DETACH for a netbeans channel. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1811 +Problem: Netbeans channel gets garbage collected. +Solution: Set reference in nb_channel. +Files: src/eval.c, src/netbeans.c, src/proto/netbeans.pro + +Patch 7.4.1812 +Problem: Failure on startup with Athena and Motif. +Solution: Check for INVALCOLOR. (Kazunobu Kuriyama) +Files: src/syntax.c, src/vim.h + +Patch 7.4.1813 +Problem: Memory access error when running test_quickfix. +Solution: Allocate one more byte. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 7.4.1814 +Problem: A channel may be garbage collected while it's still being used by + a job. (James McCoy) +Solution: Mark the channel as used if the job is still used. Do the same + for channels that are still used. +Files: src/eval.c, src/channel.c, src/proto/channel.pro + +Patch 7.4.1815 +Problem: Compiler warnings for unused variables. (Ajit Thakkar) +Solution: Add a dummy initialization. (Yasuhiro Matsumoto) +Files: src/quickfix.c + +Patch 7.4.1816 +Problem: Looping over a null list throws an error. +Solution: Skip over the for loop. +Files: src/eval.c, src/testdir/test_expr.vim + +Patch 7.4.1817 +Problem: The screen is not updated if a callback is invoked when closing a + channel. +Solution: Invoke redraw_after_callback(). +Files: src/channel.c + +Patch 7.4.1818 +Problem: Help completion adds @en to all matches except the first one. +Solution: Remove "break", go over all items. +Files: src/ex_getln.c + +Patch 7.4.1819 +Problem: Compiler warnings when sprintf() is a macro. +Solution: Don't interrupt sprintf() with an #ifdef. (Michael Jarvis, + closes #788) +Files: src/fileio.c, src/tag.c, src/term.c + +Patch 7.4.1820 +Problem: Removing language from help tags too often. +Solution: Only remove @en when not needed. (Hirohito Higashi) +Files: src/ex_getln.c, src/testdir/test_help_tagjump.vim + +Patch 7.4.1821 (after 7.4.1820) +Problem: Test fails on MS-Windows. +Solution: Sort the completion results. +Files: src/testdir/test_help_tagjump.vim + +Patch 7.4.1822 +Problem: Redirecting stdout of a channel to "null" doesn't work. (Nicola) +Solution: Correct the file descriptor number. +Files: src/os_unix.c + +Patch 7.4.1823 +Problem: Warning from 64 bit compiler. +Solution: Add type cast. (Mike Williams) +Files: src/quickfix.c + +Patch 7.4.1824 +Problem: When a job is no longer referenced and does not have an exit + callback the process may hang around in defunct state. (Nicola) +Solution: Call job_status() if the job is running and won't get freed + because it might still be useful. +Files: src/channel.c + +Patch 7.4.1825 +Problem: When job writes to buffer nothing is written. (Nicola) +Solution: Do not discard a channel before writing is done. +Files: src/channel.c + +Patch 7.4.1826 +Problem: Callbacks are invoked when it's not safe. (Andrew Stewart) +Solution: When a channel is to be closed don't invoke callbacks right away, + wait for a safe moment. +Files: src/structs.h, src/channel.c + +Patch 7.4.1827 +Problem: No error when invoking a callback when it's not safe. +Solution: Add an error message. Avoid the error when freeing a channel. +Files: src/structs.h, src/channel.c + +Patch 7.4.1828 +Problem: May try to access buffer that's already freed. +Solution: When freeing a buffer remove it from any channel. +Files: src/buffer.c, src/channel.c, src/proto/channel.pro + +Patch 7.4.1829 (after 7.4.1828) +Problem: No message on channel log when buffer was freed. +Solution: Log a message. +Files: src/channel.c + +Patch 7.4.1830 +Problem: non-antialiased misnamed. +Solution: Use NONANTIALIASED and NONANTIALIASED_QUALITY. (Kim Brouer, + closes #793) +Files: src/os_mswin.c, runtime/doc/options.txt + +Patch 7.4.1831 +Problem: When timer_stop() is called with a string there is no proper error + message. +Solution: Require getting a number. (Bjorn Linse) +Files: src/eval.c + +Patch 7.4.1832 +Problem: Memory leak in debug commands. +Solution: Free memory before overwriting the pointer. (hint by Justin Keyes) +Files: src/ex_cmds2.c + +Patch 7.4.1833 +Problem: Cannot use an Ex command for 'keywordprg'. +Solution: Accept an Ex command. (Nelo-Thara Wallus) +Files: src/normal.c, runtime/doc/options.txt + +Patch 7.4.1834 +Problem: Possible crash when conceal is active. +Solution: Check for the screen to be valid when redrawing a line. +Files: src/screen.c + +Patch 7.4.1835 +Problem: When splitting and closing a window the status height changes. +Solution: Compute the frame height correctly. (Hirohito Higashi) +Files: src/window.c, src/testdir/test_alot.vim, + src/testdir/test_window_cmd.vim + +Patch 7.4.1836 +Problem: When using a partial on a dictionary it always gets bound to that + dictionary. +Solution: Make a difference between binding a function to a dictionary + explicitly or automatically. +Files: src/structs.h, src/eval.c, src/testdir/test_partial.vim, + runtime/doc/eval.txt + +Patch 7.4.1837 +Problem: The BufUnload event is triggered twice, when :bunload is used with + `bufhidden` set to `unload` or `delete`. +Solution: Do not trigger the event when ml_mfp is NULL. (Hirohito Higashi) +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 7.4.1838 +Problem: Functions specifically for testing do not sort together. +Solution: Rename garbagecollect_for_testing() to test_garbagecollect_now(). + Add test_null_list(), test_null_dict(), etc. +Files: src/eval.c, src/testdir/test_expr.vim, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 7.4.1839 +Problem: Cannot get the items stored in a partial. +Solution: Support using get() on a partial. +Files: src/eval.c, src/testdir/test_partial.vim, runtime/doc/eval.txt + +Patch 7.4.1840 +Problem: When using packages an "after" directory cannot be used. +Solution: Add the "after" directory of the package to 'runtimepath' if it + exists. +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 7.4.1841 +Problem: The code to reallocate the buffer used for quickfix is repeated. +Solution: Move the code to a function. (Yegappan Lakshmanan, closes #831) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1842 (after 7.4.1839) +Problem: get() works for Partial but not for Funcref. +Solution: Accept Funcref. Also return the function itself. (Nikolai Pavlov) +Files: src/eval.c, src/testdir/test_partial.vim, runtime/doc/eval.txt + +Patch 7.4.1843 +Problem: Tests involving Python are flaky. +Solution: Set the pt_auto field. Add tests. (Nikolai Pavlov) +Files: runtime/doc/if_pyth.txt, src/if_py_both.h, src/testdir/test86.in, + src/testdir/test86.ok, src/testdir/test87.in, + src/testdir/test87.ok + +Patch 7.4.1844 +Problem: Using old function name in comment. More functions should start + with test_. +Solution: Rename function in comment. (Hirohito Higashi) Rename + disable_char_avail_for_testing() to test_disable_char_avail(). + And alloc_fail() to test_alloc_fail(). +Files: src/eval.c, src/getchar.c, src/testdir/runtest.vim, + src/testdir/test_cursor_func.vim, src/testdir/test_quickfix.vim, + runtime/doc/eval.txt + +Patch 7.4.1845 +Problem: Mentioning NetBeans when reading from channel. (Ramel Eshed) +Solution: Make the text more generic. +Files: src/channel.c + +Patch 7.4.1846 +Problem: Ubsan detects a multiplication overflow. +Solution: Don't use orig_mouse_time when it's zero. (Dominique Pelle) +Files: src/term.c + +Patch 7.4.1847 +Problem: Getting an item from a NULL dict crashes. Setting a register to a + NULL list crashes. (Nikolai Pavlov, issue #768) Comparing a NULL + dict with a NULL dict fails. +Solution: Properly check for NULL. +Files: src/eval.c, src/testdir/test_expr.vim + +Patch 7.4.1848 +Problem: Can't build with Strawberry Perl 5.24. +Solution: Define S_SvREFCNT_dec() if needed. (Damien, Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.1849 +Problem: Still trying to read from channel that is going to be closed. + (Ramel Eshed) +Solution: Check if ch_to_be_closed is set. +Files: src/channel.c + +Patch 7.4.1850 +Problem: GUI freezes when using a job. (Shougo Matsu) +Solution: Unregister the channel when there is an input error. +Files: src/channel.c + +Patch 7.4.1851 +Problem: test_syn_attr fails when using the GUI. (Dominique Pelle) +Solution: Escape the font name properly. +Files: src/testdir/test_syn_attr.vim + +Patch 7.4.1852 +Problem: Unix: Cannot run all tests with the GUI. +Solution: Add the "testgui" target. +Files: src/Makefile, src/testdir/Makefile + +Patch 7.4.1853 +Problem: Crash when job and channel are in the same dict while using + partials. (Luc Hermitte) +Solution: Do not decrement the channel reference count too early. +Files: src/channel.c + +Patch 7.4.1854 +Problem: When setting 'termguicolors' the Ignore highlighting doesn't work. + (Charles Campbell) +Solution: Handle the color names "fg" and "bg" when the GUI isn't running + and no colors are specified, fall back to black and white. +Files: src/syntax.c + +Patch 7.4.1855 +Problem: Valgrind reports memory leak for job that is not freed. +Solution: Free all jobs on exit. Add test for failing job. +Files: src/channel.c, src/misc2.c, src/proto/channel.pro, + src/testdir/test_partial.vim + +Patch 7.4.1856 (after 7.4.1855) +Problem: failing job test fails on MS-Windows. +Solution: Expect "fail" status instead of "dead". +Files: src/testdir/test_partial.vim + +Patch 7.4.1857 +Problem: When a channel appends to a buffer that is 'nomodifiable' there is + an error but appending is done anyway. +Solution: Add the 'modifiable' option. Refuse to write to a 'nomodifiable' + when the value is 1. +Files: src/structs.h, src/channel.c, src/testdir/test_channel.vim, + runtime/doc/channel.txt + +Patch 7.4.1858 +Problem: When a channel writes to a buffer it doesn't find a buffer by the + short name but re-uses it anyway. +Solution: Find buffer also by the short name. +Files: src/channel.c, src/buffer.c, src/vim.h + +Patch 7.4.1859 +Problem: Cannot use a function reference for "exit_cb". +Solution: Use get_callback(). (Yegappan Lakshmanan) +Files: src/channel.c, src/structs.h + +Patch 7.4.1860 +Problem: Using a partial for timer_start() may cause a crash. +Solution: Set the copyID in timer objects. (Ozaki Kiichi) +Files: src/testdir/test_timers.vim, src/eval.c, src/ex_cmds2.c, + src/proto/ex_cmds2.pro + +Patch 7.4.1861 +Problem: Compiler warnings with 64 bit compiler. +Solution: Change int to size_t. (Mike Williams) +Files: src/ex_cmds2.c + +Patch 7.4.1862 +Problem: string() with repeated argument does not give a result usable by + eval(). +Solution: Refactor echo_string and tv2string(), moving the common part to + echo_string_core(). (Ken Takata) +Files: src/eval.c, src/testdir/test_viml.vim, src/testdir/test86.ok, + src/testdir/test87.ok + +Patch 7.4.1863 +Problem: Compiler warnings on Win64. +Solution: Adjust types, add type casts. (Ken Takata) +Files: src/if_mzsch.c, src/if_perl.xs, src/if_ruby.c, src/version.c + +Patch 7.4.1864 +Problem: Python: encoding error with Python 2. +Solution: Use "getcwdu" instead of "getcwd". (Ken Takata) +Files: src/if_py_both.h + +Patch 7.4.1865 +Problem: Memory leaks in test49. (Dominique Pelle) +Solution: Use NULL instead of an empty string. +Files: src/eval.c + +Patch 7.4.1866 +Problem: Invalid memory access when exiting with EXITFREE defined. + (Dominique Pelle) +Solution: Set "really_exiting" and skip error messages. +Files: src/misc2.c, src/eval.c + +Patch 7.4.1867 +Problem: Memory leak in test_matchstrpos. +Solution: Free the string before overwriting. (Yegappan Lakshmanan) +Files: src/eval.c + +Patch 7.4.1868 +Problem: Setting really_exiting causes memory leaks to be reported. +Solution: Add the in_free_all_mem flag. +Files: src/globals.h, src/misc2.c, src/eval.c + +Patch 7.4.1869 +Problem: Can't build with old version of Perl. +Solution: Define PERLIO_FUNCS_DECL. (Tom G. Christensen) +Files: src/if_perl.xs + +Patch 7.4.1870 (after 7.4.1863) +Problem: One more Win64 compiler warning. +Solution: Change declared argument type. (Ken Takata) +Files: src/if_mzsch.c + +Patch 7.4.1871 +Problem: Appending to the quickfix list while the quickfix window is open + is very slow. +Solution: Do not delete all the lines, only append the new ones. Avoid + using a window while updating the list. (closes #841) +Files: src/quickfix.c + +Patch 7.4.1872 +Problem: Still build problem with old version of Perl. +Solution: Also define SvREFCNT_inc_void_NN if needed. (Tom G. Christensen) +Files: src/if_perl.xs + +Patch 7.4.1873 +Problem: When a callback adds a timer the GUI doesn't use it until later. + (Ramel Eshed) +Solution: Return early if a callback adds a timer. +Files: src/ex_cmds2.c, src/gui_gtk_x11.c, src/gui_w32.c, src/gui_x11.c, + src/globals.h + +Patch 7.4.1874 +Problem: Unused variable in Win32 code. +Solution: Remove it. (Mike Williams) +Files: src/gui_w32.c + +Patch 7.4.1875 +Problem: Comparing functions and partials doesn't work well. +Solution: Add tests. (Nikolai Pavlov) Compare the dict and arguments in the + partial. (closes #813) +Files: src/eval.c, src/testdir/test_partial.vim + +Patch 7.4.1876 +Problem: Typing "k" at the hit-enter prompt has no effect. +Solution: Don't assume recursive use of the prompt if a character was typed. + (Hirohito Higashi) +Files: src/message.c + +Patch 7.4.1877 +Problem: No test for invoking "close_cb" when writing to a buffer. +Solution: Add using close_cb to a test case. +Files: src/testdir/test_channel.vim + +Patch 7.4.1878 +Problem: Whether a job has exited isn't detected until a character is + typed. After calling exit_cb the cursor is in the wrong place. +Solution: Don't wait forever for a character to be typed when there is a + pending job. Update the screen if needed after calling exit_cb. +Files: src/os_unix.c, src/channel.c, src/proto/channel.pro + +Patch 7.4.1879 (after 7.4.1877) +Problem: Channel test is flaky. +Solution: Wait for close_cb to be invoked. +Files: src/testdir/test_channel.vim + +Patch 7.4.1880 +Problem: MS-Windows console build defaults to not having +channel. +Solution: Include the channel feature if building with huge features. +Files: src/Make_mvc.mak + +Patch 7.4.1881 +Problem: Appending to a long quickfix list is slow. +Solution: Add qf_last. +Files: src/quickfix.c + +Patch 7.4.1882 +Problem: Check for line break at end of line wrong. (Dominique Pelle) +Solution: Correct the logic. +Files: src/quickfix.c + +Patch 7.4.1883 +Problem: Cppcheck found 2 incorrect printf formats. +Solution: Use %ld and %lx. (Dominique Pelle) +Files: src/VisVim/Commands.cpp, src/gui_mac.c + +Patch 7.4.1884 +Problem: Updating marks in a quickfix list is very slow when the list is + long. +Solution: Only update marks if the buffer has a quickfix entry. +Files: src/structs.h, src/quickfix.c + +Patch 7.4.1885 +Problem: MinGW console build defaults to not having +channel. +Solution: Include the channel feature if building with huge features. (Ken + Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.1886 +Problem: When waiting for a character is interrupted by receiving channel + data and the first character of a mapping was typed, the mapping + times out. (Ramel Eshed) +Solution: When dealing with channel data don't return from mch_inchar(). +Files: src/getchar.c, src/proto/getchar.pro, src/os_unix.c + +Patch 7.4.1887 +Problem: When receiving channel data 'updatetime' is not respected. +Solution: Recompute the waiting time after being interrupted. +Files: src/os_unix.c + +Patch 7.4.1888 +Problem: Wrong computation of remaining wait time in RealWaitForChar() +Solution: Remember the original waiting time. +Files: src/os_unix.c + +Patch 7.4.1889 +Problem: When umask is set to 0177 Vim can't create temp files. (Lcd) +Solution: Also correct umask when using mkdtemp(). +Files: src/fileio.c + +Patch 7.4.1890 +Problem: GUI: When channel data is received the cursor blinking is + interrupted. (Ramel Eshed) +Solution: Don't update the cursor when it is blinking. +Files: src/screen.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, + src/gui_mac.c, src/proto/gui_mac.pro, src/gui_photon.c, + src/proto/gui_photon.pro, src/gui_w32.c, src/proto/gui_w32.pro, + src/gui_x11.c, src/proto/gui_x11.pro + +Patch 7.4.1891 +Problem: Channel reading very long lines is slow. +Solution: Collapse multiple buffers until a NL is found. +Files: src/channel.c, src/netbeans.c, src/proto/channel.pro, + src/structs.h + +Patch 7.4.1892 +Problem: balloon eval only gets the window number, not the ID. +Solution: Add v:beval_winid. +Files: src/eval.c, src/gui_beval.c, src/vim.h + +Patch 7.4.1893 +Problem: Cannot easily get the window ID for a buffer. +Solution: Add bufwinid(). +Files: src/eval.c, runtime/doc/eval.txt + +Patch 7.4.1894 +Problem: Cannot get the window ID for a mouse click. +Solution: Add v:mouse_winid. +Files: src/eval.c, src/vim.h, runtime/doc/eval.txt + +Patch 7.4.1895 +Problem: Cannot use a window ID where a window number is expected. +Solution: Add LOWEST_WIN_ID, so that the window ID can be used where a + number is expected. +Files: src/window.c, src/eval.c, src/vim.h, runtime/doc/eval.txt, + src/testdir/test_window_id.vim + +Patch 7.4.1896 +Problem: Invoking mark_adjust() when adding a new line below the last line + is pointless. +Solution: Skip calling mark_adjust() when appending below the last line. +Files: src/misc1.c, src/ops.c + +Patch 7.4.1897 +Problem: Various typos, long lines and style mistakes. +Solution: Fix the typos, wrap lines, improve style. +Files: src/buffer.c, src/ex_docmd.c, src/getchar.c, src/option.c, + src/main.aap, src/testdir/README.txt, + src/testdir/test_reltime.vim, src/testdir/test_tagjump.vim, + src/INSTALL, src/config.aap.in, src/if_mzsch.c + +Patch 7.4.1898 +Problem: User commands don't support modifiers. +Solution: Add the <mods> item. (Yegappan Lakshmanan, closes #829) +Files: runtime/doc/map.txt, src/ex_docmd.c, src/testdir/Make_all.mak, + src/testdir/test_usercommands.vim + +Patch 7.4.1899 +Problem: GTK 3: cursor blinking doesn't work well. +Solution: Instead of gui_gtk_window_clear() use gui_mch_clear_block(). + (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.1900 +Problem: Using CTRL-] in the help on "{address}." doesn't work. +Solution: Recognize an item in {}. (Hirohito Higashi, closes #814) +Files: src/ex_cmds.c, src/testdir/test_help_tagjump.vim + +Patch 7.4.1901 +Problem: Win32: the "Disabled" menu items would appear enabled. +Solution: Use submenu_id if there is a parent. (Shane Harper, closes #834) +Files: src/gui_w32.c + +Patch 7.4.1902 +Problem: No test for collapsing buffers for a channel. Some text is lost. +Solution: Add a simple test. Set rq_buflen correctly. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py + +Patch 7.4.1903 +Problem: When writing viminfo merging current history with history in + viminfo may drop recent history entries. +Solution: Add new format for viminfo lines, use it for history entries. Use + a timestamp for ordering the entries. Add test_settime(). + Add the viminfo version. Does not do merging on timestamp yet. +Files: src/eval.c, src/ex_getln.c, src/ex_cmds.c, src/structs.h, + src/globals.h, src/proto/ex_cmds.pro, src/proto/ex_getln.pro, + src/testdir/test_viminfo.vim + +Patch 7.4.1904 (after 7.4.1903) +Problem: Build fails. +Solution: Add missing changes. +Files: src/vim.h + +Patch 7.4.1905 (after 7.4.1903) +Problem: Some compilers can't handle a double semicolon. +Solution: Remove one semicolon. +Files: src/ex_cmds.c + +Patch 7.4.1906 +Problem: Collapsing channel buffers and searching for NL does not work + properly. (Xavier de Gaye, Ramel Eshed) +Solution: Do not assume the buffer contains a NUL or not. Change NUL bytes + to NL to avoid the string is truncated. +Files: src/channel.c, src/netbeans.c, src/proto/channel.pro + +Patch 7.4.1907 +Problem: Warnings from 64 bit compiler. +Solution: Change type to size_t. (Mike Williams) +Files: src/ex_cmds.c + +Patch 7.4.1908 +Problem: Netbeans uses uninitialized pointer and freed memory. +Solution: Set "buffer" at the right place (hint by Ken Takata) +Files: src/netbeans.c + +Patch 7.4.1909 +Problem: Doubled semicolons. +Solution: Reduce to one. (Dominique Pelle) +Files: src/dosinst.c, src/fold.c, src/gui_gtk_x11.c, src/gui_w32.c, + src/main.c, src/misc2.c + +Patch 7.4.1910 +Problem: Tests using external command to delete directory. +Solution: Use delete(). +Files: src/testdir/test17.in, src/testdir/test73.in, + src/testdir/test_getcwd.in + +Patch 7.4.1911 +Problem: Recent history lines may be lost when exiting Vim. +Solution: Merge history using the timestamp. +Files: src/ex_getln.c, src/ex_cmds.c, src/vim.h, src/proto/ex_getln.pro, + src/testdir/test_viminfo.vim + +Patch 7.4.1912 +Problem: No test for using setqflist() on an older quickfix list. +Solution: Add a couple of tests. +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1913 +Problem: When ":doautocmd" is used modelines are used even when no + autocommands were executed. (Daniel Hahler) +Solution: Skip processing modelines. (closes #854) +Files: src/fileio.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/fileio.pro + +Patch 7.4.1914 +Problem: Executing autocommands while using the signal stack has a high + chance of crashing Vim. +Solution: Don't invoke autocommands when on the signal stack. +Files: src/os_unix.c + +Patch 7.4.1915 +Problem: The effect of the PopupMenu autocommand isn't directly visible. +Solution: Call gui_update_menus() before displaying the popup menu. (Shane + Harper, closes #855) +Files: src/menu.c + +Patch 7.4.1916 (after 7.4.1906) +Problem: No proper test for what 7.4.1906 fixes. +Solution: Add a test for reading many lines. +Files: src/testdir/test_channel.vim + +Patch 7.4.1917 +Problem: History lines read from viminfo in different encoding than when + writing are not converted. +Solution: Convert the history lines. +Files: src/ex_cmds.c, src/testdir/test_viminfo.vim + +Patch 7.4.1918 +Problem: Not enough testing for parsing viminfo lines. +Solution: Add test with viminfo lines in bad syntax. Fix memory leak. +Files: src/ex_cmds.c, src/ex_getln.c, src/testdir/test_viminfo.vim + +Patch 7.4.1919 +Problem: Register contents is not merged when writing viminfo. +Solution: Use timestamps for register contents. +Files: src/ops.c, src/ex_getln.c, src/ex_cmds.c, src/proto/ex_cmds.pro, + src/proto/ex_getln.pro, src/proto/ops.pro, src/vim.h + +Patch 7.4.1920 (after 7.4.1919) +Problem: Missing test changes. +Solution: Update viminfo test. +Files: src/testdir/test_viminfo.vim + +Patch 7.4.1921 (after 7.4.1919) +Problem: vim_time() not included when needed. +Solution: Adjust #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.1922 +Problem: Ruby 2.4.0 unifies Fixnum and Bignum into Integer. +Solution: Use rb_cInteger. (Weiyong Mao) +Files: src/if_ruby.c + +Patch 7.4.1923 +Problem: Command line editing is not tested much. +Solution: Add tests for expanding the file name and 'wildmenu'. +Files: src/testdir/test_cmdline.vim, src/testdir/Make_all.mak + +Patch 7.4.1924 +Problem: Missing "void" for functions without argument. +Solution: Add "void". (Hirohito Higashi) +Files: src/channel.c, src/edit.c, src/ex_cmds2.c, src/ops.c, src/screen.c + +Patch 7.4.1925 +Problem: Viminfo does not merge file marks properly. +Solution: Use a timestamp. Add the :clearjumps command. +Files: src/mark.c, src/ex_cmds.c, src/ex_docmd.c, src/proto/mark.pro, + src/structs.h, src/vim.h, src/ex_cmds.h, + src/testdir/test_viminfo.vim + +Patch 7.4.1926 +Problem: Possible crash with many history items. +Solution: Avoid the index going past the last item. +Files: src/ex_getln.c + +Patch 7.4.1927 +Problem: Compiler warning for signed/unsigned. +Solution: Add type cast. +Files: src/if_mzsch.c + +Patch 7.4.1928 +Problem: Overwriting pointer argument. +Solution: Assign to what it points to. (Dominique Pelle) +Files: src/fileio.c + +Patch 7.4.1929 +Problem: Inconsistent indenting and weird name. +Solution: Fix indent, make name all upper case. (Ken Takata) +Files: src/if_ruby.c + +Patch 7.4.1930 +Problem: Can't build without +spell but with +quickfix. (Charles) +Solution: Add better #ifdef around ml_append_buf(). (closes #864) +Files: src/memline.c + +Patch 7.4.1931 +Problem: Using both old and new style file mark lines from viminfo. +Solution: Skip the old style lines if the viminfo file was written with a + Vim version that supports the new style. +Files: src/ex_cmds.c + +Patch 7.4.1932 +Problem: When writing viminfo the jumplist is not merged with the one in + the viminfo file. +Solution: Merge based on timestamp. +Files: src/mark.c, src/testdir/test_viminfo.vim + +Patch 7.4.1933 +Problem: Compiler warning about uninitialized variable. (Yegappan) +Solution: Give it a dummy value. +Files: src/ex_getln.c + +Patch 7.4.1934 +Problem: New style tests not executed with MinGW compiler. +Solution: Add new style test support. (Yegappan Lakshmanan) +Files: src/testdir/Make_ming.mak + +Patch 7.4.1935 +Problem: When using the GUI search/replace a second match right after the + replacement is skipped. +Solution: Add the SEARCH_START flag. (Mleddy) +Files: src/gui.c + +Patch 7.4.1936 +Problem: Off-by-one error in bounds check. (Coverity) +Solution: Check register number properly. +Files: src/ops.c + +Patch 7.4.1937 +Problem: No test for directory stack in quickfix. +Solution: Add a test. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1938 +Problem: When writing viminfo numbered marks were duplicated. +Solution: Check for duplicates between current numbered marks and the ones + read from viminfo. +Files: src/mark.c + +Patch 7.4.1939 +Problem: Memory access error when reading viminfo. (Dominique Pelle) +Solution: Correct index in jumplist when at the end. +Files: src/mark.c, src/testdir/test_viminfo.vim + +Patch 7.4.1940 +Problem: "gd" hangs in some situations. (Eric Biggers) +Solution: Remove the SEARCH_START flag when looping. Add a test. +Files: src/normal.c, src/testdir/test_goto.vim + +Patch 7.4.1941 +Problem: Not all quickfix tests are also done with the location lists. +Solution: Test more quickfix code. Use user commands instead of "exe". + (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1942 +Problem: Background is not drawn properly when 'termguicolors' is set. +Solution: Check cterm_normal_bg_color. (Jacob Niehus, closes #805) +Files: src/screen.c + +Patch 7.4.1943 +Problem: Coverity warns for unreachable code. +Solution: Remove the code that won't do anything. +Files: src/mark.c + +Patch 7.4.1944 +Problem: Win32: Cannot compile with XPM feature using VC2015 +Solution: Add XPM libraries compiled with VC2015, and enable to build + gvim.exe which supports XPM using VC2015. (Ken Takata) +Files: src/Make_mvc.mak, src/xpm/x64/lib-vc14/libXpm.lib, + src/xpm/x86/lib-vc14/libXpm.lib + +Patch 7.4.1945 +Problem: The Man plugin doesn't work that well. +Solution: Use "g:ft_man_open_mode" to be able open man pages in vert split + or separate tab. Set nomodifiable for buffer with man content. Add + a test. (Andrey Starodubtsev, closes #873) +Files: runtime/ftplugin/man.vim, src/testdir/test_man.vim, + src/testdir/Make_all.mak + +Patch 7.4.1946 (after 7.4.1944) +Problem: File list does not include new XPM libraries. +Solution: Add the file list entries. +Files: Filelist + +Patch 7.4.1947 +Problem: Viminfo continuation line with wrong length isn't skipped. (Marius + Gedminas) +Solution: Skip a line when encountering an error, but not two lines. +Files: src/ex_cmds.c + +Patch 7.4.1948 +Problem: Using Ctrl-A with double-byte encoding may result in garbled text. +Solution: Skip to the start of a character. (Hirohito Higashi) +Files: src/ops.c + +Patch 7.4.1949 +Problem: Minor problems with the quickfix code. +Solution: Fix the problems. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1950 +Problem: Quickfix long lines test not executed for buffer. +Solution: Call the function to test long lines. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1951 +Problem: Ruby test is old style. +Solution: Convert to a new style test. (Ken Takata) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test_ruby.in, + src/testdir/test_ruby.ok, src/testdir/test_ruby.vim + +Patch 7.4.1952 +Problem: Cscope interface does not support finding assignments. +Solution: Add the "a" command. (ppettina, closes #882) +Files: runtime/doc/if_cscop.txt, src/if_cscope.c + +Patch 7.4.1953 +Problem: Not all parts of the quickfix code are tested. +Solution: Add more tests. (Yegappan Lakshmanan) +Files: src/testdir/samples/quickfix.txt, + src/testdir/test_quickfix.vim + +Patch 7.4.1954 (after 7.4.1948) +Problem: No test for what 7.4.1948 fixes. +Solution: Add a test. (Hirohito Higashi, closes #880) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_increment_dbcs.vim + +Patch 7.4.1955 +Problem: Using 32-bit Perl with 64-bit time_t causes memory corruption. + (Christian Brabandt) +Solution: Use time_T instead of time_t for global variables. (Ken Takata) +Files: src/ex_cmds.c, src/globals.h, src/misc2.c, src/proto/ex_cmds.pro, + src/proto/misc2.pro, src/structs.h, src/vim.h + +Patch 7.4.1956 +Problem: When using CTRL-W f and pressing "q" at the ATTENTION dialog the + newly opened window is not closed. +Solution: Close the window and go back to the original one. (Norio Takagi, + Hirohito Higashi) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 7.4.1957 +Problem: Perl interface has obsolete workaround. +Solution: Remove the workaround added by 7.3.623. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.1958 +Problem: Perl interface preprocessor statements not nicely indented. +Solution: Improve the indenting. (Ken Takata) +Files: src/if_perl.xs + +Patch 7.4.1959 +Problem: Crash when running test_channel.vim on Windows. +Solution: Check for NULL pointer result from FormatMessage(). (Christian + Brabandt) +Files: src/channel.c + +Patch 7.4.1960 +Problem: Unicode standard 9 was released. +Solution: Update the character property tables. (Christian Brabandt) +Files: src/mbyte.c + +Patch 7.4.1961 +Problem: When 'insertmode' is reset while doing completion the popup menu + remains even though Vim is in Normal mode. +Solution: Ignore stop_insert_mode when the popup menu is visible. Don't set + stop_insert_mode when 'insertmode' was already off. (Christian + Brabandt) +Files: src/edit.c, src/option.c, src/Makefile, src/testdir/test_alot.vim, + src/testdir/test_popup.vim + +Patch 7.4.1962 +Problem: Two test files for increment/decrement. +Solution: Move the old style test into the new style test. (Hirohito + Higashi, closes #881) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/main.aap, + src/testdir/test35.in, src/testdir/test35.ok, + src/testdir/test_increment.vim + +Patch 7.4.1963 +Problem: Running Win32 Vim in mintty does not work. +Solution: Detect mintty and give a helpful error message. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/iscygpty.c, + src/iscygpty.h, src/main.c, Filelist + +Patch 7.4.1964 +Problem: The quickfix init function is too big. +Solution: Factor out parsing 'errorformat' to a separate function. (Yegappan + Lakshmanan) +Files: src/quickfix.c + +Patch 7.4.1965 +Problem: When using a job in raw mode to append to a buffer garbage + characters are added. +Solution: Do not replace the trailing NUL with a NL. (Ozaki Kiichi) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.1966 +Problem: Coverity reports a resource leak. +Solution: Close "fd" also when bailing out. +Files: src/quickfix.c + +Patch 7.4.1967 +Problem: Falling back from NFA to old regexp engine does not work properly. + (fritzophrenic) +Solution: Do not restore nfa_match. (Christian Brabandt, closes #867) +Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok + +Patch 7.4.1968 +Problem: Invalid memory access with "\<C-">. +Solution: Do not recognize this as a special character. (Dominique Pelle) +Files: src/misc2.c, src/testdir/test_expr.vim + +Patch 7.4.1969 +Problem: When the netbeans channel is closed consuming the buffer may cause + a crash. +Solution: Check for nb_channel not to be NULL. (Xavier de Gaye) +Files: src/netbeans.c + +Patch 7.4.1970 +Problem: Using ":insert" in an empty buffer sets the jump mark. (Ingo + Karkat) +Solution: Don't adjust marks when replacing the empty line in an empty + buffer. (closes #892) +Files: src/ex_cmds.c, src/testdir/test_jumps.vim, + src/testdir/test_alot.vim + +Patch 7.4.1971 +Problem: It is not easy to see unrecognized error lines below the current + error position. +Solution: Add ":clist +count". +Files: src/quickfix.c, runtime/doc/quickfix.txt + +Patch 7.4.1972 +Problem: On Solaris select() does not work as expected when there is + typeahead. +Solution: Add ICANON when sleeping. (Ozaki Kiichi) +Files: src/os_unix.c + +Patch 7.4.1973 +Problem: On MS-Windows the package directory may be added at the end + because of forward/backward slash differences. (Matthew + Desjardins) +Solution: Ignore slash differences. +Files: src/ex_cmds2.c + +Patch 7.4.1974 +Problem: GUI has a problem with some termcodes. +Solution: Handle negative numbers. (Kazunobu Kuriyama) +Files: src/gui.c + +Patch 7.4.1975 +Problem: On MS-Windows large files (> 2Gbyte) cause problems. +Solution: Use "off_T" instead of "off_t". Use "stat_T" instead of "struct + stat". Use 64 bit system functions if available. (Ken Takata) +Files: src/Makefile, src/buffer.c, src/diff.c, src/eval.c, src/ex_cmds.c, + src/ex_cmds2.c, src/fileio.c, src/gui.c, src/gui_at_fs.c, + src/if_cscope.c, src/main.c, src/memfile.c, src/memline.c, + src/misc1.c, src/misc2.c, src/netbeans.c, src/os_mswin.c, + src/os_win32.c, src/proto/fileio.pro, src/proto/memline.pro, + src/proto/os_mswin.pro, src/pty.c, src/quickfix.c, src/spell.c, + src/structs.h, src/tag.c, src/testdir/Make_all.mak, + src/testdir/test_largefile.vim, src/testdir/test_stat.vim, + src/undo.c, src/vim.h + +Patch 7.4.1976 +Problem: Number variables are not 64 bits while they could be. +Solution: Add the num64 feature. (Ken Takata, Yasuhiro Matsumoto) +Files: runtime/doc/eval.txt, runtime/doc/various.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/charset.c, + src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/feature.h, + src/fileio.c, src/fold.c, src/json.c, src/message.c, src/misc1.c, + src/misc2.c, src/ops.c, src/option.c, src/proto/charset.pro, + src/proto/eval.pro, src/quickfix.c, src/structs.h, + src/testdir/test_viml.vim, src/version.c + +Patch 7.4.1977 +Problem: With 64 bit changes don't need three calls to sprintf(). +Solution: Simplify the code, use vim_snprintf(). (Ken Takata) +Files: src/fileio.c + +Patch 7.4.1978 (after 7.4.1975) +Problem: Large file test does not delete its output. +Solution: Delete the output. Check size properly when possible. (Ken Takata) +Files: src/testdir/test_largefile.vim + +Patch 7.4.1979 (after 7.4.1976) +Problem: Getting value of binary option is wrong. (Kent Sibilev) +Solution: Fix type cast. Add a test. +Files: src/option.c, src/testdir/test_expr.vim + +Patch 7.4.1980 +Problem: 'errorformat' is parsed for every call to ":caddexpr". Can't add + to two location lists asynchronously. +Solution: Keep the previously parsed data when appropriate. (mostly by + Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.1981 +Problem: No testing for Farsi code. +Solution: Add a minimal test. Clean up Farsi code. +Files: src/farsi.c, src/Makefile, src/charset.c, src/normal.c, + src/proto/main.pro, src/testdir/Make_all.mak, + src/testdir/test_farsi.vim + +Patch 7.4.1982 +Problem: Viminfo file contains duplicate change marks. +Solution: Drop duplicate marks. +Files: src/mark.c + +Patch 7.4.1983 +Problem: farsi.c and arabic.c are included in a strange way. +Solution: Build them like other files. +Files: src/main.c, src/farsi.c, src/arabic.c, src/proto.h, + src/proto/main.pro, src/proto/farsi.pro, src/proto/arabic.pro, + src/Makefile, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + Filelist + +Patch 7.4.1984 +Problem: Not all quickfix features are tested. +Solution: Add a few more tests. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 7.4.1985 (after 7.4.1983) +Problem: Missing changes in VMS build file. +Solution: Use the right file name. +Files: src/Make_vms.mms + +Patch 7.4.1986 +Problem: Compiler warns for loss of data. +Solution: Use size_t instead of int. (Christian Brabandt) +Files: src/ex_cmds2.c + +Patch 7.4.1987 +Problem: When copying unrecognized lines for viminfo, end up with useless + continuation lines. +Solution: Skip continuation lines. +Files: src/ex_cmds.c + +Patch 7.4.1988 +Problem: When updating viminfo with file marks there is no time order. +Solution: Remember the time when a buffer was last used, store marks for + the most recently used buffers. +Files: src/buffer.c, src/structs.h, src/mark.c, src/main.c, + src/ex_cmds.c, src/proto/mark.pro, src/testdir/test_viminfo.vim + +Patch 7.4.1989 +Problem: filter() and map() only accept a string argument. +Solution: Implement using a Funcref argument (Yasuhiro Matsumoto, Ken + Takata) +Files: runtime/doc/eval.txt, src/Makefile, src/eval.c, + src/testdir/test_alot.vim, src/testdir/test_filter_map.vim, + src/testdir/test_partial.vim + +Patch 7.4.1990 (after 7.4.1952) +Problem: Cscope items are not sorted. +Solution: Put the new "a" command first. (Ken Takata) +Files: src/if_cscope.c + +Patch 7.4.1991 +Problem: glob() does not add a symbolic link when there are no wildcards. +Solution: Remove the call to mch_getperm(). +Files: src/misc1.c + +Patch 7.4.1992 +Problem: Values for true and false can be confusing. +Solution: Update the documentation. Add a test. Make v:true evaluate to + TRUE for a non-zero-arg. +Files: runtime/doc/eval.txt, src/eval.c, src/Makefile, + src/testdir/test_true_false.vim, src/testdir/test_alot.vim + +Patch 7.4.1993 +Problem: Not all TRUE and FALSE arguments are tested. +Solution: Add a few more tests. +Files: src/testdir/test_true_false.vim + +Patch 7.4.1994 (after 7.4.1993) +Problem: True-false test fails. +Solution: Filter the dict to only keep the value that matters. +Files: src/testdir/test_true_false.vim + +Patch 7.4.1995 +Problem: GUI: cursor drawn in wrong place if a timer callback causes a + screen update. (David Samvelyan) +Solution: Also redraw the cursor when it's blinking and on. +Files: src/gui_gtk_x11.c, src/gui_mac.c, src/gui_photon.c, src/gui_w32.c, + src/gui_x11.c, src/screen.c, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_photon.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 7.4.1996 +Problem: Capturing the output of a command takes a few commands. +Solution: Add evalcmd(). +Files: src/eval.c, runtime/doc/eval.txt, src/testdir/test_alot.vim, + src/Makefile, src/testdir/test_evalcmd.vim + +Patch 7.4.1997 +Problem: Cannot easily scroll the quickfix window. +Solution: Add ":cbottom". +Files: src/ex_cmds.h, src/quickfix.c, src/proto/quickfix.pro, + src/ex_docmd.c, src/testdir/test_quickfix.vim, + runtime/doc/quickfix.txt + +Patch 7.4.1998 +Problem: When writing buffer lines to a job there is no NL to NUL + conversion. +Solution: Make it work symmetrical with writing lines from a job into a + buffer. +Files: src/channel.c, src/proto/channel.pro, src/netbeans.c + +Patch 7.4.1999 +Problem: evalcmd() doesn't work recursively. +Solution: Use redir_evalcmd instead of redir_vname. +Files: src/message.c, src/eval.c, src/globals.h, src/proto/eval.pro, + src/testdir/test_evalcmd.vim + +Patch 7.4.2000 (after 7.4.1999) +Problem: Evalcmd test fails. +Solution: Add missing piece. +Files: src/ex_docmd.c + +Patch 7.4.2001 (after 7.4.2000) +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 7.4.2002 +Problem: Crash when passing number to filter() or map(). +Solution: Convert to a string. (Ozaki Kiichi) +Files: src/eval.c, src/testdir/test_filter_map.vim + +Patch 7.4.2003 +Problem: Still cursor flickering when a callback updates the screen. (David + Samvelyan) +Solution: Put the cursor in the right position after updating the screen. +Files: src/screen.c + +Patch 7.4.2004 +Problem: GUI: cursor displayed in the wrong position. +Solution: Correct screen_cur_col and screen_cur_row. +Files: src/screen.c + +Patch 7.4.2005 +Problem: After using evalcmd() message output is in the wrong position. + (Christian Brabandt) +Solution: Reset msg_col. +Files: src/eval.c + +Patch 7.4.2006 +Problem: Crash when using tabnext in BufUnload autocmd. (Norio Takagi) +Solution: First check that the current buffer is the right one. (Hirohito + Higashi) +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 7.4.2007 +Problem: Running the tests leaves a viminfo file behind. +Solution: Make the viminfo option empty. +Files: src/testdir/runtest.vim + +Patch 7.4.2008 +Problem: evalcmd() has a confusing name. +Solution: Rename to execute(). Make silent optional. Support a list of + commands. +Files: src/eval.c, src/ex_docmd.c, src/message.c, src/globals.h, + src/proto/eval.pro, src/Makefile, src/testdir/test_evalcmd.vim, + src/testdir/test_execute_func.vim, src/testdir/test_alot.vim, + runtime/doc/eval.txt + +Patch 7.4.2009 (after 7.4.2008) +Problem: Messages test fails. +Solution: Don't set redir_execute before returning. Add missing version + number. +Files: src/eval.c + +Patch 7.4.2010 +Problem: There is a :cbottom command but no :lbottom command. +Solution: Add :lbottom. (Yegappan Lakshmanan) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmds.h, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.2011 +Problem: It is not easy to get a list of command arguments. +Solution: Add getcompletion(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/testdir/test_cmdline.vim + +Patch 7.4.2012 (after 7.4.2011) +Problem: Test for getcompletion() does not pass on all systems. +Solution: Only test what is supported. +Files: src/testdir/test_cmdline.vim + +Patch 7.4.2013 +Problem: Using "noinsert" in 'completeopt' breaks redo. +Solution: Set compl_curr_match. (Shougo Matsu, closes #874) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 7.4.2014 +Problem: Using "noinsert" in 'completeopt' does not insert match. +Solution: Set compl_enter_selects. (Shougo Matsu, closes #875) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 7.4.2015 +Problem: When a file gets a name when writing it 'acd' is not effective. + (Dan Church) +Solution: Invoke DO_AUTOCHDIR after writing the file. (Allen Haim, closes + #777, closes #803) Add test_autochdir() to enable 'acd' before + "starting" is reset. +Files: src/ex_cmds.c, src/buffer.c, src/eval.c, src/globals.h, + src/Makefile, src/testdir/test_autochdir.vim, + src/testdir/Make_all.mak + +Patch 7.4.2016 +Problem: Warning from MinGW about _WIN32_WINNT redefined. (John Marriott) +Solution: First undefine it. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.2017 +Problem: When there are many errors adding them to the quickfix list takes + a long time. +Solution: Add BLN_NOOPT. Don't call buf_valid() in buf_copy_options(). + Remember the last file name used. When going through the buffer + list start from the end of the list. Only call buf_valid() when + autocommands were executed. +Files: src/buffer.c, src/option.c, src/quickfix.c, src/vim.h + +Patch 7.4.2018 +Problem: buf_valid() can be slow when there are many buffers. +Solution: Add bufref_valid(), only go through the buffer list when a buffer + was freed. +Files: src/structs.h, src/buffer.c, src/quickfix.c, src/proto/buffer.pro + +Patch 7.4.2019 +Problem: When ignoring case utf_fold() may consume a lot of time. +Solution: Optimize for ASCII. +Files: src/mbyte.c + +Patch 7.4.2020 +Problem: Can't build without +autocmd feature. +Solution: Adjust #ifdefs. +Files: src/buffer.c + +Patch 7.4.2021 +Problem: Still too many buf_valid() calls. +Solution: Make au_new_curbuf a bufref. Use bufref_valid() in more places. +Files: src/ex_cmds.c, src/buffer.c, src/globals.h + +Patch 7.4.2022 +Problem: Warnings from 64 bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/eval.c + +Patch 7.4.2023 +Problem: buflist_findname_stat() may find a dummy buffer. +Solution: Set the BF_DUMMY flag after loading a dummy buffer. Start + finding buffers from the end of the list. +Files: src/quickfix.c, src/buffer.c + +Patch 7.4.2024 +Problem: More buf_valid() calls can be optimized. +Solution: Use bufref_valid() instead. +Files: src/buffer.c, src/ex_cmds.c, src/structs.h, src/channel.c, + src/diff.c, src/eval.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, src/main.c, src/misc2.c, + src/netbeans.c, src/quickfix.c, src/spell.c, src/term.c, + src/if_py_both.h, src/window.c, src/proto/buffer.pro, + src/proto/window.pro + +Patch 7.4.2025 +Problem: The cursor blinking stops or is irregular when receiving date over + a channel and writing it in a buffer, and when updating the status + line. (Ramel Eshed) +Solution: Make it a bit better by flushing GUI output. Don't redraw the + cursor after updating the screen if the blink state is off. +Files: src/gui_gtk_x11.c, src/screen.c + +Patch 7.4.2026 +Problem: Reference counting for callbacks isn't right. +Solution: Add free_callback(). (Ken Takata) Fix reference count. +Files: src/channel.c, src/eval.c, src/ex_cmds2.c, src/proto/eval.pro + +Patch 7.4.2027 +Problem: Can't build with +eval but without +menu. +Solution: Add #ifdef. (John Marriott) +Files: src/eval.c + +Patch 7.4.2028 +Problem: cppcheck warns for using index before limits check. +Solution: Swap the expressions. (Dominique Pelle) +Files: src/mbyte.c + +Patch 7.4.2029 +Problem: printf() does not work with 64 bit numbers. +Solution: use the "L" length modifier. (Ken Takata) +Files: src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2030 +Problem: ARCH must be set properly when using MinGW. +Solution: Detect the default value of ARCH from the current compiler. (Ken + Takata) +Files: src/Make_cyg_ming.mak + +Patch 7.4.2031 +Problem: The list_lbr_utf8 test fails if ~/.vim/syntax/c.vim sets + 'textwidth' to a non-zero value. (Oyvind A. Holm) +Solution: Add a setup.vim file that sets 'runtimepath' and $HOME to a safe + value. (partly by Christian Brabandt, closes #912) +Files: src/testdir/setup.vim, src/testdir/amiga.vim, src/testdir/dos.vim, + src/testdir/unix.vim, src/testdir/vms.vim, src/testdir/runtest.vim + +Patch 7.4.2032 (after 7.4.2030) +Problem: Build fails with 64 bit MinGW. (Axel Bender) +Solution: Handle dash vs. underscore. (Ken Takata, Hirohito Higashi) +Files: src/Make_cyg_ming.mak + +Patch 7.4.2033 +Problem: 'cscopequickfix' option does not accept new value "a". +Solution: Adjust list of command characters. (Ken Takata) +Files: src/option.h, src/Makefile, src/testdir/test_cscope.vim, + src/testdir/Make_all.mak + +Patch 7.4.2034 (after 7.4.2032) +Problem: Build fails with some version of MinGW. (illusorypan) +Solution: Recognize mingw32. (Ken Takata, closes #921) +Files: src/Make_cyg_ming.mak + +Patch 7.4.2035 +Problem: On Solaris with ZFS the ACL may get removed. +Solution: Always restore the ACL for Solaris ZFS. (Danek Duvall) +Files: src/fileio.c + +Patch 7.4.2036 +Problem: Looking up a buffer by number is slow if there are many. +Solution: Use a hashtab. +Files: src/structs.h, src/buffer.c + +Patch 7.4.2037 (after 7.4.2036) +Problem: Small build fails. +Solution: Adjust #ifdefs. +Files: src/hashtab.c + +Patch 7.4.2038 (after 7.4.2036) +Problem: Small build still fails. +Solution: Adjust more #ifdefs. +Files: src/globals.h, src/buffer.c + +Patch 7.4.2039 +Problem: The Netbeans integration is not tested. +Solution: Add a first Netbeans test. +Files: src/testdir/test_netbeans.vim, src/testdir/test_netbeans.py, + src/testdir/Make_all.mak, src/Makefile, + src/testdir/test_channel.vim, src/testdir/shared.vim + +Patch 7.4.2040 +Problem: New files missing from distribution. +Solution: Add new test scripts. +Files: Filelist + +Patch 7.4.2041 +Problem: Netbeans file authentication not tested. +Solution: Add a test. +Files: src/testdir/test_netbeans.vim + +Patch 7.4.2042 +Problem: GTK: display updating is not done properly and can be slow. +Solution: Use gdk_display_flush() instead of gdk_display_sync(). Don't call + gdk_window_process_updates(). (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 7.4.2043 +Problem: setbuvfar() causes a screen redraw. +Solution: Only use aucmd_prepbuf() for options. +Files: src/eval.c + +Patch 7.4.2044 +Problem: filter() and map() either require a string or defining a function. +Solution: Support lambda, a short way to define a function that evaluates an + expression. (Yasuhiro Matsumoto, Ken Takata) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_alot.vim, + src/Makefile, src/testdir/test_channel.vim, + src/testdir/test_lambda.vim + +Patch 7.4.2045 +Problem: Memory leak when using a function callback. +Solution: Don't save the function name when it's in the partial. +Files: src/channel.c + +Patch 7.4.2046 +Problem: The qf_init_ext() function is too big. +Solution: Refactor it. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 7.4.2047 +Problem: Compiler warning for initializing a struct. +Solution: Initialize in another way. (Anton Lindqvist) +Files: src/quickfix.c + +Patch 7.4.2048 +Problem: There is still code and help for unsupported systems. +Solution: Remove the code and text. (Hirohito Higashi) +Files: runtime/doc/eval.txt, runtime/lang/menu_sk_sk.vim, + runtime/menu.vim, runtime/optwin.vim, src/Make_bc5.mak, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, + src/main.c, src/memfile.c, src/memline.c, src/misc1.c, + src/misc2.c, src/option.c, src/option.h, src/os_unix.c, + src/os_unix.h, src/proto.h, src/term.c, src/undo.c, src/version.c, + src/vim.h, src/xxd/xxd.c + +Patch 7.4.2049 +Problem: There is no way to get a list of the error lists. +Solution: Add ":chistory" and ":lhistory". +Files: src/ex_cmds.h, src/quickfix.c, src/ex_docmd.c, src/message.c, + src/proto/quickfix.pro, src/testdir/test_quickfix.vim + +Patch 7.4.2050 +Problem: When using ":vimgrep" may end up with duplicate buffers. +Solution: When adding an error list entry pass the buffer number if possible. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.2051 +Problem: No proper testing of trunc_string(). +Solution: Add a unittest for message.c. +Files: src/Makefile, src/message.c, src/message_test.c, src/main.c, + src/proto/main.pro, src/structs.h + +Patch 7.4.2052 +Problem: Coverage report is messed up by the unittests. +Solution: Add a separate test target for script tests. Use that when + collecting coverage information. +Files: src/Makefile + +Patch 7.4.2053 +Problem: Can't run scripttests in the top directory. +Solution: Add targets to the top Makefile. +Files: Makefile + +Patch 7.4.2054 (after 7.4.2048) +Problem: Wrong part of #ifdef removed. +Solution: Use the right part. (Hirohito Higashi) +Files: src/os_unix.c + +Patch 7.4.2055 +Problem: eval.c is too big +Solution: Move Dictionary functions to dict.c +Files: src/eval.c, src/dict.c, src/vim.h, src/globals.h, + src/proto/eval.pro, src/proto/dict.pro, src/Makefile, Filelist + +Patch 7.4.2056 (after 7.4.2055) +Problem: Build fails. +Solution: Add missing changes. +Files: src/proto.h + +Patch 7.4.2057 +Problem: eval.c is too big. +Solution: Move List functions to list.c +Files: src/eval.c, src/dict.c, src/list.c, src/proto.h, src/Makefile, + src/globals.h, src/proto/eval.pro, src/proto/list.pro, Filelist + +Patch 7.4.2058 +Problem: eval.c is too big. +Solution: Move user functions to userfunc.c +Files: src/userfunc.c, src/eval.c, src/vim.h, src/globals.h, + src/structs.h, src/proto.h, src/Makefile, src/proto/eval.pro, + src/proto/userfunc.pro, Filelist + +Patch 7.4.2059 +Problem: Non-Unix builds fail. +Solution: Update Makefiles for new files. +Files: src/Make_bc5.mak, src/Make_cyg_ming.mak, src/Make_dice.mak, + src/Make_ivc.mak, src/Make_manx.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_sas.mak + +Patch 7.4.2060 (after 7.4.2059) +Problem: Wrong file name. +Solution: Fix typo. +Files: src/Make_mvc.mak + +Patch 7.4.2061 +Problem: qf_init_ext() is too big. +Solution: Move code to qf_parse_line() (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.2062 +Problem: Using dummy variable to compute struct member offset. +Solution: Use offsetof(). +Files: src/globals.h, src/macros.h, src/vim.h, src/spell.c + +Patch 7.4.2063 +Problem: eval.c is still too big. +Solution: Split off internal functions to evalfunc.c. +Files: src/eval.c, src/evalfunc.c, src/list.c, src/proto.h, + src/globals.h, src/vim.h, src/proto/eval.pro, + src/proto/evalfunc.pro, src/proto/list.pro, src/Makefile, Filelist, + src/Make_bc5.mak, src/Make_cyg_ming.mak, src/Make_dice.mak, + src/Make_ivc.mak, src/Make_manx.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_sas.mak + +Patch 7.4.2064 +Problem: Coverity warns for possible buffer overflow. +Solution: Use vim_strcat() instead of strcat(). +Files: src/quickfix.c + +Patch 7.4.2065 +Problem: Compiler warns for uninitialized variable. (John Marriott) +Solution: Set lnum to the right value. +Files: src/evalfunc.c + +Patch 7.4.2066 +Problem: getcompletion() not well tested. +Solution: Add more testing. +Files: src/testdir/test_cmdline.vim + +Patch 7.4.2067 +Problem: Compiler warning for char/char_u conversion. (Tony Mechelynck) + Inefficient code. +Solution: Use more lines to fill with spaces. (Nikolai Pavlov) Add type cast. +Files: src/quickfix.c + +Patch 7.4.2068 +Problem: Not all arguments of trunc_string() are tested. Memory access + error when running the message tests. +Solution: Add another test case. (Yegappan Lakshmanan) Make it easy to run + unittests with valgrind. Fix the access error. +Files: src/message.c, src/message_test.c, src/Makefile + +Patch 7.4.2069 +Problem: spell.c is too big. +Solution: Split it in spell file handling and spell checking. +Files: src/spell.c, src/spellfile.c, src/spell.h, src/Makefile, + src/proto/spell.pro, src/proto/spellfile.pro, src/proto.h + Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak + +Patch 7.4.2070 (after 7.4.2069) +Problem: Missing change to include file. +Solution: Include the spell header file. +Files: src/vim.h + +Patch 7.4.2071 +Problem: The return value of type() is difficult to use. +Solution: Define v:t_ constants. (Ken Takata) +Files: runtime/doc/eval.txt, src/eval.c, src/evalfunc.c, + src/testdir/test_channel.vim, src/testdir/test_viml.vim, src/vim.h + +Patch 7.4.2072 +Problem: substitute() does not support a Funcref argument. +Solution: Support a Funcref like it supports a string starting with "\=". +Files: src/evalfunc.c, src/regexp.c, src/eval.c, src/proto/eval.pro, + src/proto/regexp.pro, src/testdir/test_expr.vim + +Patch 7.4.2073 +Problem: rgb.txt is read for every color name. +Solution: Load rgb.txt once. (Christian Brabandt) Add a test. +Files: runtime/rgb.txt, src/term.c, src/testdir/test_syn_attr.vim + +Patch 7.4.2074 +Problem: One more place using a dummy variable. +Solution: Use offsetof(). (Ken Takata) +Files: src/userfunc.c + +Patch 7.4.2075 +Problem: No autocommand event to initialize a window or tab page. +Solution: Add WinNew and TabNew events. (partly by Felipe Morales) +Files: src/fileio.c, src/window.c, src/vim.h, + src/testdir/test_autocmd.vim, runtime/doc/autocmd.txt + +Patch 7.4.2076 +Problem: Syntax error when dict has '>' key. +Solution: Check for endchar. (Ken Takata) +Files: src/userfunc.c, src/testdir/test_lambda.vim + +Patch 7.4.2077 +Problem: Cannot update 'tabline' when a tab was closed. +Solution: Add the TabClosed autocmd event. (partly by Felipe Morales) +Files: src/fileio.c, src/window.c, src/vim.h, + src/testdir/test_autocmd.vim, runtime/doc/autocmd.txt + +Patch 7.4.2078 +Problem: Running checks in po directory fails. +Solution: Add colors used in syntax.c to the builtin color table. +Files: src/term.c + +Patch 7.4.2079 +Problem: Netbeans test fails on non-Unix systems. +Solution: Only do the permission check on Unix systems. +Files: src/testdir/test_netbeans.vim + +Patch 7.4.2080 +Problem: When using PERROR() on some systems assert_fails() does not see + the error. +Solution: Make PERROR() always report the error. +Files: src/vim.h, src/message.c, src/proto/message.pro + +Patch 7.4.2081 +Problem: Line numbers in the error list are not always adjusted. +Solution: Set b_has_qf_entry properly. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/structs.h, src/testdir/test_quickfix.vim + +Patch 7.4.2082 +Problem: Not much test coverage for digraphs. +Solution: Add a new style digraph test. (Christian Brabandt) +Files: src/Makefile, src/testdir/test_alot.vim, + src/testdir/test_digraph.vim + +Patch 7.4.2083 +Problem: Coverity complains about not restoring a value. +Solution: Restore the value, although it's not really needed. Change return + to jump to cleanup, might leak memory. +Files: src/userfunc.c + +Patch 7.4.2084 +Problem: New digraph test makes testing hang. +Solution: Don't set "nocp". +Files: src/testdir/test_digraph.vim + +Patch 7.4.2085 +Problem: Digraph tests fails on some systems. +Solution: Run it separately and set 'encoding' early. +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_digraph.vim + +Patch 7.4.2086 +Problem: Using the system default encoding makes tests unpredictable. +Solution: Always use utf-8 or latin1 in the new style tests. Remove setting + encoding and scriptencoding where it is not needed. +Files: src/testdir/runtest.vim, src/testdir/test_channel.vim, + src/testdir/test_digraph.vim, src/testdir/test_expand_dllpath.vim, + src/testdir/test_expr_utf8.vim, src/testdir/test_json.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_regexp_utf8.vim, src/testdir/test_visual.vim, + src/testdir/test_alot_utf8.vim, + +Patch 7.4.2087 +Problem: Digraph code test coverage is still low. +Solution: Add more tests. (Christian Brabandt) +Files: src/testdir/test_digraph.vim + +Patch 7.4.2088 (after 7.4.2087) +Problem: Keymap test fails with normal features. +Solution: Bail out if the keymap feature is not supported. +Files: src/testdir/test_digraph.vim + +Patch 7.4.2089 +Problem: Color handling of X11 GUIs is too complicated. +Solution: Simplify the code. Use RGBA where appropriate. (Kazunobu + Kuriyama) +Files: src/gui.h, src/gui_beval.c, src/gui_gtk_x11.c, src/netbeans.c + +Patch 7.4.2090 +Problem: Using submatch() in a lambda passed to substitute() is verbose. +Solution: Use a static list and pass it as an optional argument to the + function. Fix memory leak. +Files: src/structs.h, src/list.c, src/userfunc.c, src/channel.c, + src/eval.c, src/evalfunc.c, src/ex_cmds2.c, src/regexp.c, + src/proto/list.pro, src/proto/userfunc.pro, + src/testdir/test_expr.vim, runtime/doc/eval.txt + +Patch 7.4.2091 +Problem: Coverity reports a resource leak when out of memory. +Solution: Close the file before returning. +Files: src/term.c + +Patch 7.4.2092 +Problem: GTK 3 build fails with older GTK version. +Solution: Check the pango version. (Kazunobu Kuriyama) +Files: src/gui_beval.c + +Patch 7.4.2093 +Problem: Netbeans test fails once in a while. Leaving log file behind. +Solution: Add it to the list of flaky tests. Disable logfile. +Files: src/testdir/runtest.vim, src/testdir/test_channel.vim + +Patch 7.4.2094 +Problem: The color allocation in X11 is overly complicated. +Solution: Remove find_closest_color(), XAllocColor() already does this. + (Kazunobu Kuriyama) +Files: src/gui_x11.c + +Patch 7.4.2095 +Problem: Man test fails when run with the GUI. +Solution: Adjust for different behavior of GUI. Add assert_inrange(). +Files: src/eval.c, src/evalfunc.c, src/proto/eval.pro, + src/testdir/test_assert.vim, src/testdir/test_man.vim, + runtime/doc/eval.txt + +Patch 7.4.2096 +Problem: Lambda functions show up with completion. +Solution: Don't show lambda functions. (Ken Takata) +Files: src/userfunc.c, src/testdir/test_cmdline.vim + +Patch 7.4.2097 +Problem: Warning from 64 bit compiler. +Solution: use size_t instead of int. (Mike Williams) +Files: src/message.c + +Patch 7.4.2098 +Problem: Text object tests are old style. +Solution: Turn them into new style tests. (James McCoy, closes #941) +Files: src/testdir/Make_all.mak, src/testdir/test_textobjects.in, + src/testdir/test_textobjects.ok, src/testdir/test_textobjects.vim, + src/Makefile + +Patch 7.4.2099 +Problem: When a keymap is active only "(lang)" is displayed. (Ilya + Dogolazky) +Solution: Show the keymap name. (Dmitri Vereshchagin, closes #933) +Files: src/buffer.c, src/proto/screen.pro, src/screen.c + +Patch 7.4.2100 +Problem: "cgn" and "dgn" do not work correctly with a single character + match and the replacement includes the searched pattern. (John + Beckett) +Solution: If the match is found in the wrong column try in the next column. + Turn the test into new style. (Christian Brabandt) +Files: src/search.c, src/testdir/Make_all.mak, src/Makefile, + src/testdir/test53.in, src/testdir/test53.ok, + src/testdir/test_gn.vim + +Patch 7.4.2101 +Problem: Looping over windows, buffers and tab pages is inconsistent. +Solution: Use FOR_ALL_ macros everywhere. (Yegappan Lakshmanan) +Files: src/buffer.c, src/diff.c, src/edit.c, src/eval.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/fileio.c, + src/globals.h, src/gui.c, src/gui_mac.c, src/if_lua.c, + src/if_mzsch.c, src/if_perl.xs, src/if_ruby.c, src/if_tcl.c, + src/main.c, src/mark.c, src/memfile.c, src/memline.c, src/misc1.c, + src/move.c, src/netbeans.c, src/normal.c, src/option.c, + src/quickfix.c, src/screen.c, src/spell.c, src/term.c, + src/window.c, src/workshop.c + +Patch 7.4.2102 (after 7.4.2101) +Problem: Tiny build with GUI fails. +Solution: Revert one FOR_ALL_ change. +Files: src/gui.c + +Patch 7.4.2103 +Problem: Can't have "augroup END" right after ":au!". +Solution: Check for the bar character before the command argument. +Files: src/fileio.c, src/testdir/test_autocmd.vim, + runtime/doc/autocmd.txt + +Patch 7.4.2104 +Problem: Code duplication when unreferencing a function. +Solution: De-duplicate. +Files: src/userfunc.c + +Patch 7.4.2105 +Problem: Configure reports default features to be "normal" while it is + "huge". +Solution: Change the default text. Build with newer autoconf. +Files: src/configure.in, src/auto/configure + +Patch 7.4.2106 +Problem: Clang warns about missing field in initializer. +Solution: Define COMMA and use it. (Kazunobu Kuriyama) +Files: src/ex_cmds.c, src/globals.h, src/vim.h + +Patch 7.4.2107 (after 7.4.2106) +Problem: Misplaced equal sign. +Solution: Remove it. +Files: src/globals.h + +Patch 7.4.2108 +Problem: Netbeans test is flaky. +Solution: Wait for the cursor to be positioned. +Files: src/testdir/test_netbeans.vim + +Patch 7.4.2109 +Problem: Setting 'display' to "lastline" is a drastic change, while + omitting it results in lots of "@" lines. +Solution: Add "truncate" to show "@@@" for a truncated line. +Files: src/option.h, src/screen.c, runtime/doc/options.txt + +Patch 7.4.2110 +Problem: When there is an CmdUndefined autocmd then the error for a missing + command is E464 instead of E492. (Manuel Ortega) +Solution: Don't let the pointer be NULL. +Files: src/ex_docmd.c, src/testdir/test_usercommands.vim + +Patch 7.4.2111 +Problem: Defaults are very conservative. +Solution: Move settings from vimrc_example.vim to defaults.vim. Load + defaults.vim if no .vimrc was found. +Files: src/main.c, src/version.c, src/os_amiga.h, src/os_dos.h, + src/os_mac.h, src/os_unix.h, src/feature.h, src/Makefile, + runtime/vimrc_example.vim, runtime/defaults.vim, + runtime/evim.vim, Filelist, runtime/doc/starting.txt + +Patch 7.4.2112 +Problem: getcompletion(.., 'dir') returns a match with trailing "*" when + there are no matches. (Chdiza) +Solution: Return an empty list when there are no matches. Add a trailing + slash to directories. (Yegappan Lakshmanan) Add tests for no + matches. (closes #947) +Files: src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 7.4.2113 +Problem: Test for undo is flaky. +Solution: Turn it into a new style test. Use test_settime() to avoid + flakiness. +Files: src/Makefile, src/undo.c, src/testdir/test61.in, + src/testdir/test61.ok, src/testdir/test_undo.vim, + src/testdir/test_undolevels.vim, src/testdir/Make_all.mak, + src/testdir/test_alot.vim + +Patch 7.4.2114 +Problem: Tiny build fails. +Solution: Always include vim_time(). +Files: src/ex_cmds.c + +Patch 7.4.2115 +Problem: Loading defaults.vim with -C argument. +Solution: Don't load the defaults script with -C argument. Test sourcing + the defaults script. Set 'display' to "truncate". +Files: src/main.c, src/Makefile, runtime/defaults.vim, + src/testdir/test_startup.vim, src/testdir/Make_all.mak + +Patch 7.4.2116 +Problem: The default vimrc for Windows is very conservative. +Solution: Use the defaults.vim in the Windows installer. +Files: src/dosinst.c + +Patch 7.4.2117 +Problem: Deleting an augroup that still has autocmds does not give a + warning. The next defined augroup takes its place. +Solution: Give a warning and prevent the index being used for another group + name. +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 7.4.2118 +Problem: Mac: can't build with tiny features. +Solution: Don't define FEAT_CLIPBOARD unconditionally. (Kazunobu Kuriyama) +Files: src/vim.h + +Patch 7.4.2119 +Problem: Closures are not supported. +Solution: Capture variables in lambdas from the outer scope. (Yasuhiro + Matsumoto, Ken Takata) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_cmds2.c, src/globals.h, + src/proto/eval.pro, src/proto/userfunc.pro, + src/testdir/test_lambda.vim, src/userfunc.c + +Patch 7.4.2120 +Problem: User defined functions can't be a closure. +Solution: Add the "closure" argument. Allow using :unlet on a bound + variable. (Yasuhiro Matsumoto, Ken Takata) +Files: runtime/doc/eval.txt, src/testdir/test_lambda.vim, src/userfunc.c, + src/eval.c src/proto/userfunc.pro + +Patch 7.4.2121 +Problem: No easy way to check if lambda and closure are supported. +Solution: Add the +lambda feature. +Files: src/evalfunc.c, src/version.c, src/testdir/test_lambda.vim + +Patch 7.4.2122 (after 7.4.2118) +Problem: Mac: don't get +clipboard in huge build. +Solution: Move #define down below including feature.h +Files: src/vim.h + +Patch 7.4.2123 +Problem: No new style test for diff mode. +Solution: Add a test. Check that folds are in sync. +Files: src/Makefile, src/testdir/test_diffmode.vim, + src/testdir/Make_all.mak, src/testdir/test47.in, + src/testdir/test47.ok + +Patch 7.4.2124 +Problem: diffmode test leaves files behind, breaking another test. +Solution: Delete the files. +Files: src/testdir/test_diffmode.vim + +Patch 7.4.2125 +Problem: Compiler warning for loss of data. +Solution: Add a type cast. (Christian Brabandt) +Files: src/message.c + +Patch 7.4.2126 +Problem: No tests for :diffget and :diffput +Solution: Add tests. +Files: src/testdir/test_diffmode.vim + +Patch 7.4.2127 +Problem: The short form of ":noswapfile" is ":noswap" instead of ":nos". + (Kent Sibilev) +Solution: Only require three characters. Add a test for the short forms. +Files: src/ex_docmd.c, src/testdir/test_usercommands.vim + +Patch 7.4.2128 +Problem: Memory leak when saving for undo fails. +Solution: Free allocated memory. (Hirohito Higashi) +Files: src/ex_cmds.c + +Patch 7.4.2129 +Problem: Memory leak when using timer_start(). (Dominique Pelle) +Solution: Don't copy the callback when using a partial. +Files: src/evalfunc.c + +Patch 7.4.2130 +Problem: Pending timers cause false memory leak reports. +Solution: Free all timers on exit. +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, src/misc2.c + +Patch 7.4.2131 +Problem: More memory leaks when using partial, e.g. for "exit-cb". +Solution: Don't copy the callback when using a partial. +Files: src/channel.c + +Patch 7.4.2132 +Problem: test_partial has memory leaks reported. +Solution: Add a note about why this happens. +Files: src/testdir/test_partial.vim + +Patch 7.4.2133 (after 7.4.2128) +Problem: Can't build with tiny features. +Solution: Add #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.2134 +Problem: No error for using function() badly. +Solution: Check for passing wrong function name. (Ken Takata) +Files: src/eval.c, src/evalfunc.c, src/proto/userfunc.pro, + src/testdir/test_expr.vim, src/userfunc.c, src/vim.h + +Patch 7.4.2135 +Problem: Various tiny issues. +Solution: Update comments, white space, etc. +Files: src/diff.c, src/digraph.c, src/testdir/test80.in, + src/testdir/test_channel.vim, src/testdir/Makefile, + runtime/menu.vim, src/INSTALLpc.txt, src/xpm/README.txt + +Patch 7.4.2136 +Problem: Closure function fails. +Solution: Don't reset uf_scoped when it points to another funccal. +Files: src/userfunc.c, src/testdir/test_lambda.vim + +Patch 7.4.2137 +Problem: Using function() with a name will find another function when it is + redefined. +Solution: Add funcref(). Refer to lambda using a partial. Fix several + reference counting issues. +Files: src/vim.h, src/structs.h, src/userfunc.c, src/eval.c, + src/evalfunc.c, src/channel.c, src/proto/eval.pro, + src/proto/userfunc.pro, src/if_mzsch.c, src/regexp.c, src/misc2.c, + src/if_py_both.h, src/testdir/test_expr.vim, runtime/doc/eval.txt + +Patch 7.4.2138 +Problem: Test 86 and 87 fail. +Solution: Call func_ref() also for regular functions. +Files: src/if_py_both.h + +Patch 7.4.2139 +Problem: :delfunction causes illegal memory access. +Solution: Correct logic when deciding to free a function. +Files: src/userfunc.c, src/testdir/test_lambda.vim + +Patch 7.4.2140 +Problem: Tiny build fails. +Solution: Add dummy typedefs. +Files: src/structs.h + +Patch 7.4.2141 +Problem: Coverity reports bogus NULL check. +Solution: When checking for a variable in the funccal scope don't pass the + varname. +Files: src/userfunc.c, src/proto/userfunc.pro, src/eval.c + +Patch 7.4.2142 +Problem: Leaking memory when redefining a function. +Solution: Don't increment the function reference count when it's found by + name. Don't remove the wrong function from the hashtab. More + reference counting fixes. +Files: src/structs.h, src/userfunc.c + +Patch 7.4.2143 +Problem: A funccal is garbage collected while it can still be used. +Solution: Set copyID in all referenced functions. Do not list lambda + functions with ":function". +Files: src/userfunc.c, src/proto/userfunc.pro, src/eval.c, + src/testdir/test_lambda.vim + +Patch 7.4.2144 +Problem: On MS-Windows quickfix does not handle a line with 1023 bytes + ending in CR-LF properly. +Solution: Don't consider CR a line break. (Ken Takata) +Files: src/quickfix.c + +Patch 7.4.2145 +Problem: Win32: Using CreateThread/ExitThread is not safe. +Solution: Use _beginthreadex and return from the thread. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.2146 +Problem: Not enough testing for popup menu. CTRL-E does not always work + properly. +Solution: Add more tests. When using CTRL-E check if the popup menu is + visible. (Christian Brabandt) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 7.4.2147 (after 7.4.2146) +Problem: test_alot fails. +Solution: Close window. +Files: src/testdir/test_popup.vim + +Patch 7.4.2148 +Problem: Not much testing for cscope. +Solution: Add a test that uses the cscope program. (Christian Brabandt) +Files: src/testdir/test_cscope.vim + +Patch 7.4.2149 +Problem: If a test leaves a window open a following test may fail. +Solution: Always close extra windows after running a test. +Files: src/testdir/runtest.vim, src/testdir/test_popup.vim + +Patch 7.4.2150 +Problem: Warning with MinGW 64. (John Marriott) +Solution: Change return type. (Ken Takata) +Files: src/os_win32.c + +Patch 7.4.2151 +Problem: Quickfix test fails on MS-Windows. +Solution: Close the help window. (Christian Brabandt) +Files: src/testdir/test_quickfix.vim + +Patch 7.4.2152 +Problem: No proper translation of messages with a count. +Solution: Use ngettext(). (Sergey Alyoshin) +Files: src/evalfunc.c, src/fold.c, src/os_win32.c, src/screen.c, src/vim.h + +Patch 7.4.2153 +Problem: GUI test isn't testing much. +Solution: Turn into a new style test. Execute a shell command. +Files: src/testdir/test_gui.vim, src/testdir/test16.in, + src/testdir/test16.ok, src/testdir/Make_all.mak, src/Makefile, + src/testdir/Make_vms.mms + +Patch 7.4.2154 +Problem: Test_communicate() fails sometimes. +Solution: Add it to the flaky tests. +Files: src/testdir/runtest.vim + +Patch 7.4.2155 +Problem: Quotes make GUI test fail on MS-Windows. +Solution: Remove quotes, strip white space. +Files: src/testdir/test_gui.vim + +Patch 7.4.2156 +Problem: Compiler warning. +Solution: Add type cast. (Ken Takata, Mike Williams) +Files: src/os_win32.c + +Patch 7.4.2157 +Problem: Test_job_start_fails() is expected to report memory leaks, making + it hard to see other leaks in test_partial. +Solution: Move Test_job_start_fails() to a separate test file. +Files: src/testdir/test_partial.vim, src/testdir/test_job_fails.vim, + src/Makefile, src/testdir/Make_all.mak + +Patch 7.4.2158 +Problem: Result of getcompletion('', 'cscope') depends on previous + completion. (Christian Brabandt) +Solution: Call set_context_in_cscope_cmd(). +Files: src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 7.4.2159 +Problem: Insufficient testing for cscope. +Solution: Add more tests. (Dominique Pelle) +Files: src/testdir/test_cscope.vim + +Patch 7.4.2160 +Problem: setmatches() mixes up values. (Nikolai Pavlov) +Solution: Save the string instead of reusing a shared buffer. +Files: src/dict.c, src/evalfunc.c, src/testdir/test_expr.vim, + +Patch 7.4.2161 (after 7.4.2160) +Problem: Expression test fails without conceal feature. +Solution: Only check "conceal" with the conceal feature. +Files: src/testdir/test_expr.vim + +Patch 7.4.2162 +Problem: Result of getcompletion('', 'sign') depends on previous + completion. +Solution: Call set_context_in_sign_cmd(). (Dominique Pelle) +Files: src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 7.4.2163 +Problem: match() and related functions tested with old style test. +Solution: Convert to new style test. (Hirohito Higashi) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test63.in, + src/testdir/test63.ok, src/testdir/test_alot.vim, + src/testdir/test_match.vim, src/testdir/test_matchstrpos.vim + +Patch 7.4.2164 +Problem: It is not possible to use plugins in an "after" directory to tune + the behavior of a package. +Solution: First load plugins from non-after directories, then packages and + finally plugins in after directories. + Reset 'loadplugins' before executing --cmd arguments. +Files: src/main.c, src/vim.h, src/ex_cmds2.c, src/testdir/Makefile, + src/testdir/shared.vim, src/testdir/test_startup.vim, + src/testdir/setup.vim, runtime/doc/starting.txt + +Patch 7.4.2165 (after 7.4.2164) +Problem: Startup test fails on MS-Windows. +Solution: Don't check output if RunVim() returns zero. +Files: src/testdir/test_startup.vim + +Patch 7.4.2166 (after 7.4.2164) +Problem: Small build can't run startup test. +Solution: Skip the test. +Files: src/testdir/test_startup.vim + +Patch 7.4.2167 (after 7.4.2164) +Problem: Small build can't run tests. +Solution: Don't try setting 'packpath'. +Files: src/testdir/setup.vim + +Patch 7.4.2168 +Problem: Not running the startup test on MS-Windows. +Solution: Write vimcmd. +Files: src/testdir/Make_ming.mak, src/testdir/Make_dos.mak + +Patch 7.4.2169 (after 7.4.2168) +Problem: Startup test gets stuck on MS-Windows. +Solution: Use double quotes. +Files: src/testdir/shared.vim, src/testdir/test_startup.vim + +Patch 7.4.2170 +Problem: Cannot get information about timers. +Solution: Add timer_info(). +Files: src/evalfunc.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + runtime/doc/eval.txt + +Patch 7.4.2171 (after 7.4.2170) +Problem: MS-Windows build fails. +Solution: Add QueryPerformanceCounter(). +Files: src/ex_cmds2.c + +Patch 7.4.2172 +Problem: No test for "vim --help". +Solution: Add a test. +Files: src/testdir/test_startup.vim, src/testdir/shared.vim + +Patch 7.4.2173 (after 7.4.2172) +Problem: Can't test help on MS-Windows. +Solution: Skip the test. +Files: src/testdir/test_startup.vim + +Patch 7.4.2174 +Problem: Adding duplicate flags to 'whichwrap' leaves commas behind. +Solution: Also remove the commas. (Naruhiko Nishino) +Files: src/Makefile, src/option.c, src/testdir/Make_all.mak, + src/testdir/test_alot.vim, src/testdir/test_options.in, + src/testdir/test_options.ok, src/testdir/test_options.vim + +Patch 7.4.2175 +Problem: Insufficient testing of cscope. +Solution: Add more tests. (Dominique Pelle) +Files: src/testdir/test_cscope.vim + +Patch 7.4.2176 +Problem: #ifdefs in main() are complicated. +Solution: Always define vim_main2(). Move params to the file level. + (suggested by Ken Takata) +Files: src/main.c, src/structs.h, src/vim.h, src/if_mzsch.c, + src/proto/if_mzsch.pro + +Patch 7.4.2177 +Problem: No testing for -C and -N command line flags, file arguments, + startuptime. +Solution: Add tests. +Files: src/testdir/test_startup.vim, src/testdir/shared.vim + +Patch 7.4.2178 +Problem: No test for reading from stdin. +Solution: Add a test. +Files: src/testdir/test_startup.vim, src/testdir/shared.vim + +Patch 7.4.2179 (after 7.4.2178) +Problem: Reading from stdin test fails on MS-Windows. +Solution: Strip the extra space. +Files: src/testdir/test_startup.vim + +Patch 7.4.2180 +Problem: There is no easy way to stop all timers. There is no way to + temporary pause a timer. +Solution: Add timer_stopall() and timer_pause(). +Files: src/evalfunc.c, src/ex_cmds2.c, src/proto/ex_cmds2.pro, + src/structs.h, src/testdir/test_timers.vim, + src/testdir/shared.vim, runtime/doc/eval.txt + +Patch 7.4.2181 +Problem: Compiler warning for unused variable. +Solution: Remove it. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.4.2182 +Problem: Color Grey40 used in startup but not in the short list. +Solution: Add Grey40 to the builtin colors. +Files: src/term.c + +Patch 7.4.2183 +Problem: Sign tests are old style. +Solution: Turn them into new style tests. (Dominique Pelle) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test_signs.in, + src/testdir/test_signs.ok, src/testdir/test_signs.vim, + +Patch 7.4.2184 +Problem: Tests that use RunVim() do not actually perform the test. +Solution: Use "return" instead of "call". (Ken Takata) +Files: src/testdir/shared.vim + +Patch 7.4.2185 +Problem: Test glob2regpat does not test much. +Solution: Add a few more test cases. (Dominique Pelle) +Files: src/testdir/test_glob2regpat.vim + +Patch 7.4.2186 +Problem: Timers test is flaky. +Solution: Relax the sleep time check. +Files: src/testdir/test_timers.vim + +Patch 7.4.2187 (after 7.4.2185) +Problem: glob2regpat test fails on Windows. +Solution: Remove the checks that use backslashes. +Files: src/testdir/test_glob2regpat.vim + +Patch 7.4.2188 (after 7.4.2146) +Problem: Completion does not work properly with some plugins. +Solution: Revert the part related to typing CTRL-E. (closes #972) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 7.4.2189 +Problem: Cannot detect encoding in a fifo. +Solution: Extend the stdin way of detecting encoding to fifo. Add a test + for detecting encoding on stdin and fifo. (Ken Takata) +Files: src/buffer.c, src/fileio.c, src/Makefile, + src/testdir/Make_all.mak, src/testdir/test_startup_utf8.vim, + src/vim.h + +Patch 7.4.2190 +Problem: When startup test fails it's not easy to find out why. + GUI test fails with Gnome. +Solution: Add the help entry matches to a list an assert that. + Set $HOME for Gnome to create .gnome2 directory. +Files: src/testdir/test_startup.vim, src/testdir/test_gui.vim + +Patch 7.4.2191 +Problem: No automatic prototype for vim_main2(). +Solution: Move the #endif. (Ken Takata) +Files: src/main.c, src/vim.h, src/proto/main.pro + +Patch 7.4.2192 +Problem: Generating prototypes with Cygwin doesn't work well. +Solution: Change #ifdefs. (Ken Takata) +Files: src/gui.h, src/gui_w32.c, src/ops.c, src/proto/fileio.pro, + src/proto/message.pro, src/proto/normal.pro, src/proto/ops.pro, + src/vim.h + +Patch 7.4.2193 +Problem: With Gnome when the GUI can't start test_startup hangs. +Solution: Call gui_mch_early_init_check(). (Hirohito Higashi) +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro + +Patch 7.4.2194 +Problem: Sign tests don't cover enough. +Solution: Add more test cases. (Dominique Pelle) +Files: src/testdir/test_signs.vim + +Patch 7.4.2195 +Problem: MS-Windows: The vimrun program does not support Unicode. +Solution: Use GetCommandLineW(). Cleanup old #ifdefs. (Ken Takata) +Files: src/vimrun.c + +Patch 7.4.2196 +Problem: glob2regpat test doesn't test everything on MS-Windows. +Solution: Add patterns with backslash handling. +Files: src/testdir/test_glob2regpat.vim + +Patch 7.4.2197 +Problem: All functions are freed on exit, which may hide leaks. +Solution: Only free named functions, not reference counted ones. +Files: src/userfunc.c + +Patch 7.4.2198 +Problem: Test alot sometimes fails under valgrind. (Dominique Pelle) +Solution: Avoid passing a callback with the wrong number of arguments. +Files: src/testdir/test_partial.vim + +Patch 7.4.2199 +Problem: In the GUI the cursor is hidden when redrawing any window, + causing flicker. +Solution: Only undraw the cursor when updating the window it's in. +Files: src/screen.c, src/gui.c, src/proto/gui.pro, src/gui_gtk_x11.c + +Patch 7.4.2200 +Problem: Cannot get all information about a quickfix list. +Solution: Add an optional argument to get/set loc/qf list(). (Yegappan + Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/quickfix.pro, + src/quickfix.c, src/tag.c, src/testdir/test_quickfix.vim + +Patch 7.4.2201 +Problem: The sign column disappears when the last sign is deleted. +Solution: Add the 'signcolumn' option. (Christian Brabandt) +Files: runtime/doc/options.txt, runtime/optwin.vim, src/edit.c, + src/move.c, src/option.c, src/option.h, src/proto/option.pro, + src/screen.c, src/structs.h, src/testdir/test_options.vim + +Patch 7.4.2202 +Problem: Build fails with small features. +Solution: Correct option initialization. +Files: src/option.c + +Patch 7.4.2203 +Problem: Test fails with normal features. +Solution: Check is signs are supported. +Files: src/testdir/test_options.vim + +Patch 7.4.2204 +Problem: It is not easy to get information about buffers, windows and + tabpages. +Solution: Add getbufinfo(), getwininfo() and gettabinfo(). (Yegappan + Lakshmanan) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/dict.c, + src/evalfunc.c, src/option.c, src/proto/dict.pro, + src/proto/option.pro, src/proto/window.pro, + src/testdir/Make_all.mak, src/testdir/test_bufwintabinfo.vim, + src/window.c, src/Makefile + +Patch 7.4.2205 +Problem: 'wildignore' always applies to getcompletion(). +Solution: Add an option to use 'wildignore' or not. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 7.4.2206 +Problem: Warning for unused function. +Solution: Put the function inside #ifdef. (John Marriott) +Files: src/evalfunc.c + +Patch 7.4.2207 +Problem: The +xpm feature is not sorted properly in :version output. +Solution: Move it up. (Tony Mechelynck) +Files: src/version.c + +Patch 7.4.2208 +Problem: Test for mappings is old style. +Solution: Convert the test to new style. +Files: src/testdir/test_mapping.vim, src/testdir/test_mapping.in, + src/testdir/test_mapping.ok, src/Makefile, + src/testdir/test_alot.vim, src/testdir/Make_all.mak + +Patch 7.4.2209 +Problem: Cannot map <M-">. (Stephen Riehm) +Solution: Solve the memory access problem in another way. (Dominique Pelle) + Allow for using <M-\"> in a string. +Files: src/eval.c, src/gui_mac.c, src/misc2.c, src/option.c, + src/proto/misc2.pro, src/syntax.c, src/term.c, + src/testdir/test_mapping.vim + +Patch 7.4.2210 +Problem: On OSX configure mixes up a Python framework and the Unix layout. +Solution: Make configure check properly. (Tim D. Smith, closes #980) +Files: src/configure.in, src/auto/configure + +Patch 7.4.2211 +Problem: Mouse support is not automatically enabled with simple term. +Solution: Recognize "st" and other names. (Manuel Schiller, closes #963) +Files: src/os_unix.c + +Patch 7.4.2212 +Problem: Mark " is not set when closing a window in another tab. (Guraga) +Solution: Check all tabs for the window to be valid. (based on patch by + Hirohito Higashi, closes #974) +Files: src/window.c, src/proto/window.pro, src/buffer.c, + src/testdir/test_viminfo.vim + +Patch 7.4.2213 +Problem: Cannot highlight the "~" lines at the end of a window differently. +Solution: Add the EndOfBuffer highlighting. (Marco Hinz, James McCoy) +Files: runtime/doc/options.txt, runtime/doc/syntax.txt, src/option.c, + src/screen.c, src/syntax.c, src/vim.h + +Patch 7.4.2214 +Problem: A font that uses ligatures messes up the screen display. +Solution: Put spaces between characters when building the glyph table. + (based on a patch from Manuel Schiller) +Files: src/gui_gtk_x11.c + +Patch 7.4.2215 +Problem: It's not easy to find out if a window is a quickfix or location + list window. +Solution: Add "loclist" and "quickfix" entries to the dict returned by + getwininfo(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim + +Patch 7.4.2216 (after 7.4.2215) +Problem: Test fails without the +sign feature. +Solution: Only check for signcolumn with the +sign feature. +Files: src/testdir/test_bufwintabinfo.vim + +Patch 7.4.2217 +Problem: When using matchaddpos() a character after the end of the line can + be highlighted. +Solution: Only highlight existing characters. (Hirohito Higashi) +Files: src/screen.c, src/structs.h, src/testdir/test_match.vim + +Patch 7.4.2218 +Problem: Can't build with +timers when +digraph is not included. +Solution: Change #ifdef for e_number_exp. (Damien) +Files: src/globals.h + +Patch 7.4.2219 +Problem: Recursive call to substitute gets stuck in sandbox. (Nikolai + Pavlov) +Solution: Handle the recursive call. (Christian Brabandt, closes #950) + Add a test. +Files: src/ex_cmds.c, src/testdir/test_regexp_latin.vim + +Patch 7.4.2220 +Problem: printf() gives an error when the argument for %s is not a string. + (Ozaki Kiichi) +Solution: Behave like invoking string() on the argument. (Ken Takata) +Files: runtime/doc/eval.txt, src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2221 +Problem: printf() does not support binary format. +Solution: Add %b and %B. (Ozaki Kiichi) +Files: runtime/doc/eval.txt, src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2222 +Problem: Sourcing a script where a character has 0x80 as a second byte does + not work. (Filipe L B Correia) +Solution: Turn 0x80 into K_SPECIAL KS_SPECIAL KE_FILLER. (Christian + Brabandt, closes #728) Add a test case. +Files: src/getchar.c, src/proto/getchar.pro, src/misc1.c, + src/testdir/test_regexp_utf8.vim + +Patch 7.4.2223 +Problem: Buffer overflow when using latin1 character with feedkeys(). +Solution: Check for an illegal character. Add a test. +Files: src/testdir/test_regexp_utf8.vim, src/testdir/test_source_utf8.vim, + src/testdir/test_alot_utf8.vim, src/Makefile, src/getchar.c, + src/macros.h, src/evalfunc.c, src/os_unix.c, src/os_win32.c, + src/spell.c, + +Patch 7.4.2224 +Problem: Compiler warnings with older compiler and 64 bit numbers. +Solution: Add "LL" to large values. (Mike Williams) +Files: src/eval.c, src/evalfunc.c + +Patch 7.4.2225 +Problem: Crash when placing a sign in a deleted buffer. +Solution: Check for missing buffer name. (Dominique Pelle). Add a test. +Files: src/ex_cmds.c, src/testdir/test_signs.vim + +Patch 7.4.2226 +Problem: The field names used by getbufinfo(), gettabinfo() and + getwininfo() are not consistent. +Solution: Use bufnr, winnr and tabnr. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim + +Patch 7.4.2227 +Problem: Tab page tests are old style. +Solution: Change into new style tests. (Hirohito Higashi) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test62.in, + src/testdir/test62.ok, src/testdir/test_alot.vim, + src/testdir/test_tabpage.vim + +Patch 7.4.2228 +Problem: Test files have inconsistent modelines. +Solution: Don't set 'tabstop' to 2, use 'sts' and 'sw'. +Files: src/testdir/README.txt, src/testdir/test_backspace_opt.vim, + src/testdir/test_digraph.vim, src/testdir/test_gn.vim + src/testdir/test_help_tagjump.vim, + src/testdir/test_increment_dbcs.vim, + src/testdir/test_increment.vim, src/testdir/test_match.vim, + src/testdir/test_tagjump.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_timers.vim + +Patch 7.4.2229 +Problem: Startup test fails on Solaris. +Solution: Recognize a character device. (Danek Duvall) +Files: src/buffer.c, src/fileio.c, src/proto/fileio.pro, src/vim.h + +Patch 7.4.2230 +Problem: There is no equivalent of 'smartcase' for a tag search. +Solution: Add value "followscs" and "smart" to 'tagcase'. (Christian + Brabandt, closes #712) Turn tagcase test into new style. +Files: runtime/doc/options.txt, runtime/doc/tagsrch.txt, src/option.h, + src/tag.c, src/search.c, src/proto/search.pro, + src/testdir/test_tagcase.in, src/testdir/test_tagcase.ok, + src/testdir/test_tagcase.vim, src/Makefile, + src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 7.4.2231 +Problem: ":oldfiles" output is a very long list. +Solution: Add a pattern argument. (Coot, closes #575) +Files: runtime/doc/starting.txt, src/ex_cmds.h, src/eval.c, + src/ex_cmds.c, src/proto/eval.pro, src/proto/ex_cmds.pro, + src/testdir/test_viminfo.vim + +Patch 7.4.2232 +Problem: The default ttimeoutlen is very long. +Solution: Use "100". (Hirohito Higashi) +Files: runtime/defaults.vim + +Patch 7.4.2233 +Problem: Crash when using funcref() with invalid name. (Dominique Pelle) +Solution: Check for NULL translated name. +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 7.4.2234 +Problem: Can't build with +eval but without +quickfix. (John Marriott) +Solution: Move skip_vimgrep_pat() to separate #ifdef block. +Files: src/quickfix.c + +Patch 7.4.2235 +Problem: submatch() does not check for a valid argument. +Solution: Give an error if the argument is out of range. (Dominique Pelle) +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 7.4.2236 +Problem: The 'langnoremap' option leads to double negatives. And it does + not work for the last character of a mapping. +Solution: Add 'langremap' with the opposite value. Keep 'langnoremap' for + backwards compatibility. Make it work for the last character of a + mapping. Make the test work. +Files: runtime/doc/options.txt, runtime/defaults.vim, src/option.c, + src/option.h, src/macros.h, src/testdir/test_mapping.vim + +Patch 7.4.2237 +Problem: Can't use "." and "$" with ":tab". +Solution: Support a range for ":tab". (Hirohito Higashi) +Files: runtime/doc/tabpage.txt, src/ex_docmd.c, + src/testdir/test_tabpage.vim + +Patch 7.4.2238 +Problem: With SGR mouse reporting (suckless terminal) the mouse release and + scroll up/down is confused. +Solution: Don't see a release as a scroll up/down. (Ralph Eastwood) +Files: src/term.c + +Patch 7.4.2239 +Problem: Warning for missing declaration of skip_vimgrep_pat(). (John + Marriott) +Solution: Move it to another file. +Files: src/quickfix.c, src/proto/quickfix.pro, src/ex_cmds.c, + src/proto/ex_cmds.pro + +Patch 7.4.2240 +Problem: Tests using the sleep time can be flaky. +Solution: Use reltime() if available. (Partly by Shane Harper) +Files: src/testdir/shared.vim, src/testdir/test_timers.vim + +Patch 7.4.2241 (after 7.4.2240) +Problem: Timer test sometimes fails. +Solution: Increase the maximum time for repeating timer. +Files: src/testdir/test_timers.vim + +Patch 7.4.2242 (after 7.4.2240) +Problem: Timer test sometimes fails. +Solution: Increase the maximum time for callback timer test. +Files: src/testdir/test_timers.vim + +Patch 7.4.2243 +Problem: Warning for assigning negative value to unsigned. (Danek Duvall) +Solution: Make cterm_normal_fg_gui_color and _bg_ guicolor_T, cast to long_u + only when an unsigned is needed. +Files: src/structs.h, src/globals.h, src/screen.c, src/term.c, + src/syntax.c, src/gui_gtk_x11.c, src/gui.c, src/gui_mac.c, + src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, + src/proto/term.pro, src/proto/gui_gtk_x11.pro, + src/proto/gui_mac.pro, src/proto/gui_photon.pro, + src/proto/gui_w32.pro, src/proto/gui_x11.pro + +Patch 7.4.2244 +Problem: Adding pattern to ":oldfiles" is not a generic solution. +Solution: Add the ":filter /pat/ cmd" command modifier. Only works for some + commands right now. +Files: src/structs.h, src/ex_docmd.c, src/ex_cmds.h, src/message.c, + src/proto/message.pro, runtime/doc/starting.txt, + runtime/doc/various.txt, src/testdir/test_viminfo.vim, + src/testdir/test_alot.vim, src/testdir/test_filter_cmd.vim, + src/Makefile + +Patch 7.4.2245 (after 7.4.2244) +Problem: Filter test fails. +Solution: Include missing changes. +Files: src/buffer.c + +Patch 7.4.2246 (after 7.4.2244) +Problem: Oldfiles test fails. +Solution: Include missing changes. +Files: src/ex_cmds.c + +Patch 7.4.2247 (after 7.4.2244) +Problem: Tiny build fails. (Tony Mechelynck) +Solution: Remove #ifdef. +Files: src/ex_cmds.c + +Patch 7.4.2248 +Problem: When cancelling the :ptjump prompt a preview window is opened for + a following command. +Solution: Reset g_do_tagpreview. (Hirohito Higashi) Add a test. Avoid that + the test runner gets stuck in trying to close a window. +Files: src/tag.c, src/testdir/test_tagjump.vim, src/testdir/runtest.vim + +Patch 7.4.2249 +Problem: Missing colon in error message. +Solution: Add the colon. (Dominique Pelle) +Files: src/userfunc.c + +Patch 7.4.2250 +Problem: Some error messages cannot be translated. +Solution: Enclose them in _() and N_(). (Dominique Pelle) +Files: src/channel.c, src/evalfunc.c, src/ex_cmds.c, src/spell.c, + src/window.c + +Patch 7.4.2251 +Problem: In rare cases diffing 4 buffers is not enough. +Solution: Raise the limit to 8. (closes #1000) +Files: src/structs.h, runtime/doc/diff.txt + +Patch 7.4.2252 +Problem: Compiler warnings for signed/unsigned in expression. +Solution: Remove type cast. (Dominique Pelle) +Files: src/vim.h + +Patch 7.4.2253 +Problem: Check for Windows 3.1 will always return false. (Christian + Brabandt) +Solution: Remove the dead code. +Files: src/gui_w32.c, src/evalfunc.c, src/ex_cmds.c, src/option.c, + src/os_win32.c, src/version.c, src/proto/gui_w32.pro + +Patch 7.4.2254 +Problem: Compiler warnings in MzScheme code. +Solution: Add UNUSED. Remove unreachable code. +Files: src/if_mzsch.c + +Patch 7.4.2255 +Problem: The script that checks translations can't handle plurals. +Solution: Check for plural msgid and msgstr entries. Leave the cursor on + the first error. +Files: src/po/check.vim + +Patch 7.4.2256 +Problem: Coverity complains about null pointer check. +Solution: Remove wrong and superfluous error check. +Files: src/eval.c + +Patch 7.4.2257 +Problem: Coverity complains about not checking for NULL. +Solution: Check for out of memory. +Files: src/if_py_both.h + +Patch 7.4.2258 +Problem: Two JSON messages are sent without a separator. +Solution: Separate messages with a NL. (closes #1001) +Files: src/json.c, src/channel.c, src/vim.h, src/testdir/test_channel.py, + src/testdir/test_channel.vim, runtime/doc/channel.txt + +Patch 7.4.2259 +Problem: With 'incsearch' can only see the next match. +Solution: Make CTRL-N/CTRL-P move to the previous/next match. (Christian + Brabandt) +Files: runtime/doc/cmdline.txt, src/ex_getln.c, src/testdir/Make_all.mak, + src/testdir/test_search.vim, src/Makefile + +Patch 7.4.2260 (after 7.4.2258) +Problem: Channel test is flaky. +Solution: Add a newline to separate JSON messages. +Files: src/testdir/test_channel.vim + +Patch 7.4.2261 (after 7.4.2259) +Problem: Build fails with small features. +Solution: Move "else" inside the #ifdef. +Files: src/ex_getln.c + +Patch 7.4.2262 +Problem: Fail to read register content from viminfo if it is 438 characters + long. (John Chen) +Solution: Adjust the check for line wrapping. (closes #1010) +Files: src/testdir/test_viminfo.vim, src/ex_cmds.c + +Patch 7.4.2263 +Problem: :filter does not work for many commands. Can only get matching + messages. +Solution: Make :filter work for :command, :map, :list, :number and :print. + Make ":filter!" show non-matching lines. +Files: src/getchar.c, src/ex_cmds.c, src/ex_cmds.h, src/ex_docmd.c, + src/message.c, src/structs.h, src/testdir/test_filter_cmd.vim + +Patch 7.4.2264 +Problem: When adding entries to an empty quickfix list the title is reset. +Solution: Improve handling of the title. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim, src/quickfix.c + +Patch 7.4.2265 +Problem: printf() isn't tested much. +Solution: Add more tests for printf(). (Dominique Pelle) +Files: src/testdir/test_expr.vim + +Patch 7.4.2266 (after 7.4.2265) +Problem: printf() test fails on Windows. "-inf" is not used. +Solution: Check for Windows-specific values for "nan". Add sign to "inf" + when appropriate. +Files: src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2267 (after 7.4.2266) +Problem: Build fails on MS-Windows. +Solution: Add define to get isinf(). +Files: src/message.c + +Patch 7.4.2268 (after 7.4.2259) +Problem: Using CTRL-N and CTRL-P for incsearch shadows completion keys. +Solution: Use CTRL-T and CTRL-G instead. +Files: runtime/doc/cmdline.txt, src/ex_getln.c, + src/testdir/test_search.vim + +Patch 7.4.2269 +Problem: Using 'hlsearch' highlighting instead of matchpos if there is no + search match. +Solution: Pass NULL as last item to next_search_hl() when searching for + 'hlsearch' match. (Shane Harper, closes #1013) +Files: src/screen.c, src/testdir/test_match.vim + +Patch 7.4.2270 +Problem: Insufficient testing for NUL bytes on a raw channel. +Solution: Add a test for writing and reading. +Files: src/testdir/test_channel.vim + +Patch 7.4.2271 +Problem: Netbeans test doesn't read settings from file. +Solution: Use "-Xnbauth". +Files: src/testdir/test_netbeans.vim + +Patch 7.4.2272 +Problem: getbufinfo(), getwininfo() and gettabinfo() are inefficient. +Solution: Instead of making a copy of the variables dictionary, use a + reference. +Files: src/evalfunc.c + +Patch 7.4.2273 +Problem: getwininfo() and getbufinfo() are inefficient. +Solution: Do not make a copy of all window/buffer-local options. Make it + possible to get them with gettabwinvar() or getbufvar(). +Files: src/evalfunc.c, src/eval.c, src/testdir/test_bufwintabinfo.vim, + runtime/doc/eval.txt + +Patch 7.4.2274 +Problem: Command line completion on "find **/filename" drops sub-directory. +Solution: Handle this case separately. (Harm te Hennepe, closes #932, closes + #939) +Files: src/misc1.c, src/testdir/test_cmdline.vim + +Patch 7.4.2275 +Problem: ":diffoff!" does not remove filler lines. +Solution: Force a redraw and invalidate the cursor. (closes #1014) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 7.4.2276 +Problem: Command line test fails on Windows when run twice. +Solution: Wipe the buffer so that the directory can be deleted. +Files: src/testdir/test_cmdline.vim + +Patch 7.4.2277 +Problem: Memory leak in getbufinfo() when there is a sign. (Dominique + Pelle) +Solution: Remove extra vim_strsave(). +Files: src/evalfunc.c + +Patch 7.4.2278 +Problem: New users have no idea of the 'scrolloff' option. +Solution: Set 'scrolloff' in defaults.vim. +Files: runtime/defaults.vim + +Patch 7.4.2279 +Problem: Starting diff mode with the cursor in the last line might end up + only showing one closed fold. (John Beckett) +Solution: Scroll the window to show the same relative cursor position. +Files: src/diff.c, src/window.c, src/proto/window.pro + +Patch 7.4.2280 +Problem: printf() doesn't handle infinity float values correctly. +Solution: Add a table with possible infinity values. (Dominique Pelle) +Files: src/message.c, src/testdir/test_expr.vim + +Patch 7.4.2281 +Problem: Timer test fails sometimes. +Solution: Reduce minimum time by 1 msec. +Files: src/testdir/test_timers.vim + +Patch 7.4.2282 +Problem: When a child process is very fast waiting 10 msec for it is + noticeable. (Ramel Eshed) +Solution: Start waiting for 1 msec and gradually increase. +Files: src/os_unix.c + +Patch 7.4.2283 +Problem: Part of ":oldfiles" command isn't cleared. (Lifepillar) +Solution: Clear the rest of the line. (closes 1018) +Files: src/ex_cmds.c + +Patch 7.4.2284 +Problem: Comment in scope header file is outdated. (KillTheMule) +Solution: Point to the help instead. (closes #1017) +Files: src/if_cscope.h + +Patch 7.4.2285 +Problem: Generated files are outdated. +Solution: Generate the files. Avoid errors when generating prototypes. +Files: src/if_mzsch.h, src/Makefile, src/option.h, src/os_mac_conv.c, + src/os_amiga.c, src/vim.h, src/structs.h, src/os_win32.c, + src/if_lua.c, src/proto/mbyte.pro + +Patch 7.4.2286 +Problem: The tee program isn't included. Makefile contains build + instructions that don't work. +Solution: Update the Filelist and build instructions. Remove build + instructions for DOS and old Windows. Add the tee program. +Files: Filelist, Makefile, nsis/gvim.nsi + +Patch 7.4.2287 +Problem: The callback passed to ch_sendraw() is not used. +Solution: Pass the read part, not the send part. (haya14busa, closes #1019) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.2288 +Problem: MS-Windows build instructions are clumsy. "dosbin" doesn't build. +Solution: Add rename.bat. Fix building "dosbin". +Files: Makefile, Filelist, rename.bat + +Patch 7.4.2289 +Problem: When installing and $DESTDIR is set the icons probably won't be + installed. +Solution: Create the icon directories if $DESTDIR is not empty. (Danek + Duvall) +Files: src/Makefile + +Patch 7.4.2290 +Problem: Compiler warning in tiny build. (Tony Mechelynck) +Solution: Add #ifdef around infinity_str(). +Files: src/message.c + +Patch 7.4.2291 +Problem: printf() handles floats wrong when there is a sign. +Solution: Fix placing the sign. Add tests. (Dominique Pelle) +Files: src/testdir/test_expr.vim, runtime/doc/eval.txt, src/message.c + +Patch 7.4.2292 (after 7.4.2291) +Problem: Not all systems understand %F in printf(). +Solution: Use %f. +Files: src/message.c + +Patch 7.4.2293 +Problem: Modelines in source code are inconsistent. +Solution: Use the same line in most files. Add 'noet'. (Naruhiko Nishino) +Files: src/alloc.h, src/arabic.c, src/arabic.h, src/ascii.h, + src/blowfish.c, src/buffer.c, src/channel.c, src/charset.c, + src/crypt.c, src/crypt_zip.c, src/dict.c, src/diff.c, + src/digraph.c, src/dosinst.c, src/dosinst.h, src/edit.c, + src/eval.c, src/evalfunc.c, src/ex_cmds.c, src/ex_cmds.h, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/farsi.c, src/farsi.h, src/feature.h, src/fileio.c, src/fold.c, + src/getchar.c, src/glbl_ime.cpp, src/glbl_ime.h, src/globals.h, + src/gui.c, src/gui.h, src/gui_at_fs.c, src/gui_at_sb.c, + src/gui_at_sb.h, src/gui_athena.c, src/gui_beval.c, + src/gui_beval.h, src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_f.h, + src/gui_gtk_vms.h, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_motif.c, src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, + src/gui_x11_pm.h, src/gui_xmdlg.c, src/gui_xmebw.c, + src/gui_xmebw.h, src/gui_xmebwp.h, src/hangulin.c, src/hardcopy.c, + src/hashtab.c, src/if_cscope.c, src/if_cscope.h, src/if_mzsch.c, + src/if_mzsch.h, src/if_ole.cpp, src/if_perl.xs, src/if_perlsfio.c, + src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/if_xcmdsrv.c, + src/integration.c, src/integration.h, src/iscygpty.c, src/json.c, + src/json_test.c, src/keymap.h, src/list.c, src/macros.h, + src/main.c, src/mark.c, src/mbyte.c, src/memfile.c, + src/memfile_test.c, src/memline.c, src/menu.c, src/message.c, + src/message_test.c, src/misc1.c, src/misc2.c, src/move.c, + src/nbdebug.c, src/nbdebug.h, src/netbeans.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/os_amiga.c, + src/os_amiga.h, src/os_beos.c, src/os_beos.h, src/os_dos.h, + src/os_mac.h, src/os_mac_conv.c, src/os_macosx.m, src/os_mint.h, + src/os_mswin.c, src/os_qnx.c, src/os_qnx.h, src/os_unix.c, + src/os_unix.h, src/os_unixx.h, src/os_vms.c, src/os_w32dll.c, + src/os_w32exe.c, src/os_win32.c, src/os_win32.h, src/popupmnu.c, + src/proto.h, src/pty.c, src/quickfix.c, src/regexp.c, + src/regexp.h, src/regexp_nfa.c, src/screen.c, src/search.c, + src/sha256.c, src/spell.c, src/spell.h, src/spellfile.c, + src/structs.h, src/syntax.c, src/tag.c, src/term.c, src/term.h, + src/termlib.c, src/ui.c, src/undo.c, src/uninstal.c, + src/userfunc.c, src/version.c, src/version.h, src/vim.h, + src/vim.rc, src/vimio.h, src/vimrun.c, src/winclip.c, + src/window.c, src/workshop.c, src/workshop.h, src/wsdebug.c, + src/wsdebug.h, src/xpm_w32.c + +Patch 7.4.2294 +Problem: Sign test fails on MS-Windows when using the distributed zip + archives. +Solution: Create dummy files instead of relying on files in the pixmaps + directory. +Files: src/testdir/test_signs.vim + +Patch 7.4.2295 (after 7.4.2293) +Problem: Cscope test fails. +Solution: Avoid checking for specific line and column numbers. +Files: src/testdir/test_cscope.vim + +Patch 7.4.2296 +Problem: No tests for :undolist and "U" command. +Solution: Add tests. (Dominique Pelle) +Files: src/testdir/test_undo.vim + +Patch 7.4.2297 +Problem: When starting a job that reads from a buffer and reaching the end, + the job hangs. +Solution: Close the pipe or socket when all lines were read. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 7.4.2298 +Problem: It is not possible to close the "in" part of a channel. +Solution: Add ch_close_in(). +Files: src/evalfunc.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, runtime/doc/eval.txt, + runtime/doc/channel.txt + +Patch 7.4.2299 +Problem: QuickFixCmdPre and QuickFixCmdPost autocommands are not always + triggered. +Solution: Also trigger on ":cexpr", ":cbuffer", etc. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 7.4.2300 +Problem: Get warning for deleting autocommand group when the autocommand + using the group is scheduled for deletion. (Pavol Juhas) +Solution: Check for deleted autocommand. +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 7.4.2301 +Problem: MS-Windows: some files remain after testing. +Solution: Close the channel output file. Wait for the file handle to be + closed before deleting the file. +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 7.4.2302 +Problem: Default interface versions for MS-Windows are outdated. +Solution: Use Active Perl 5.24, Python 3.5.2. Could only make it work with + Ruby 1.9.2. +Files: src/bigvim.bat, src/bigvim64.bat, src/Make_mvc.mak + +Patch 7.4.2303 +Problem: When using "is" the mode isn't always updated. +Solution: Redraw the command line. (Christian Brabandt) +Files: src/search.c + +Patch 7.4.2304 +Problem: In a timer callback the timer itself can't be found or stopped. + (Thinca) +Solution: Do not remove the timer from the list, remember whether it was + freed. +Files: src/ex_cmds2.c, src/testdir/test_timers.vim + +Patch 7.4.2305 +Problem: Marks, writefile and nested function tests are old style. +Solution: Turn them into new style tests. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test_marks.in, + src/testdir/test_marks.ok, src/testdir/test_marks.vim, + src/testdir/test_nested_function.in, + src/testdir/test_nested_function.ok, + src/testdir/test_nested_function.vim, + src/testdir/test_writefile.in, src/testdir/test_writefile.ok, + src/testdir/test_writefile.vim, src/Makefile + +Patch 7.4.2306 +Problem: Default value for 'langremap' is wrong. +Solution: Set the right value. (J眉rgen Kr盲mer) Add a test. +Files: src/option.c, src/testdir/test_mapping.vim + +Patch 7.4.2307 +Problem: Several tests are old style. +Solution: Turn them into new style tests. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test102.in, + src/testdir/test102.ok, src/testdir/test46.in, + src/testdir/test46.ok, src/testdir/test81.in, + src/testdir/test81.ok, src/testdir/test_charsearch.in, + src/testdir/test_charsearch.ok, src/testdir/test_charsearch.vim, + src/testdir/test_fnameescape.vim, src/testdir/test_substitute.vim, + src/Makefile + +Patch 7.4.2308 (after 7.4.2307) +Problem: Old charsearch test still listed in Makefile. +Solution: Remove the line. +Files: src/testdir/Make_all.mak + +Patch 7.4.2309 +Problem: Crash when doing tabnext in a BufUnload autocmd. (Dominique Pelle) +Solution: When detecting that the tab page changed, don't just abort but + delete the window where w_buffer is NULL. +Files: src/window.c, src/testdir/test_tabpage.vim + +Patch 7.4.2310 (after 7.4.2304) +Problem: Accessing freed memory when a timer does not repeat. +Solution: Free after removing it. (Dominique Pelle) +Files: src/ex_cmds2.c + +Patch 7.4.2311 +Problem: Appveyor 64 bit build still using Python 3.4 +Solution: Switch to Python 3.5. (Ken Takata, closes #1032) +Files: appveyor.yml, src/appveyor.bat + +Patch 7.4.2312 +Problem: Crash when autocommand moves to another tab. (Dominique Pelle) +Solution: When navigating to another window halfway the :edit command go + back to the right window. +Files: src/buffer.c, src/ex_cmds.c, src/ex_getln.c, src/ex_docmd.c, + src/window.c, src/proto/ex_getln.pro, src/testdir/test_tabpage.vim + +Patch 7.4.2313 +Problem: Crash when deleting an augroup and listing an autocommand. + (Dominique Pelle) +Solution: Make sure deleted_augroup is valid. +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 7.4.2314 +Problem: No error when deleting an augroup while it's the current one. +Solution: Disallow deleting an augroup when it's the current one. +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 7.4.2315 +Problem: Insufficient testing for Normal mode commands. +Solution: Add a big test. (Christian Brabandt, closes #1029) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_normal.vim + +Patch 7.4.2316 +Problem: Channel sort test is flaky. +Solution: Add a check the output has been read. +Files: src/testdir/test_channel.vim + +Patch 7.4.2317 (after 7.4.2315) +Problem: Normal mode tests fail on MS-Windows. +Solution: Do some tests only on Unix. Set 'fileformat' to "unix". +Files: src/testdir/test_normal.vim + +Patch 7.4.2318 +Problem: When 'incsearch' is not set CTRL-T and CTRL-G are not inserted as + before. +Solution: Move #ifdef and don't use goto. +Files: src/ex_getln.c + +Patch 7.4.2319 +Problem: No way for a system wide vimrc to stop loading defaults.vim. + (Christian Hesse) +Solution: Bail out of defaults.vim if skip_defaults_vim was set. +Files: runtime/defaults.vim + +Patch 7.4.2320 +Problem: Redraw problem when using 'incsearch'. +Solution: Save the current view when deleting characters. (Christian + Brabandt) Fix that the '" mark is set in the wrong position. Don't + change the search start when using BS. +Files: src/ex_getln.c, src/normal.c, src/testdir/test_search.vim + +Patch 7.4.2321 +Problem: When a test is commented out we forget about it. +Solution: Let a test throw an exception with "Skipped" and list skipped test + functions. (Christian Brabandt) +Files: src/testdir/Makefile, src/testdir/runtest.vim, + src/testdir/test_popup.vim, src/testdir/README.txt + +Patch 7.4.2322 +Problem: Access memory beyond the end of the line. (Dominique Pelle) +Solution: Adjust the cursor column. +Files: src/move.c, src/testdir/test_normal.vim + +Patch 7.4.2323 +Problem: Using freed memory when using 'formatexpr'. (Dominique Pelle) +Solution: Make a copy of 'formatexpr' before evaluating it. +Files: src/ops.c, src/testdir/test_normal.vim + +Patch 7.4.2324 +Problem: Crash when editing a new buffer and BufUnload autocommand wipes + out the new buffer. (Norio Takagi) +Solution: Don't allow wiping out this buffer. (partly by Hirohito Higashi) + Move old style test13 into test_autocmd. Avoid ml_get error when + editing a file. +Files: src/structs.h, src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, + src/window.c, src/testdir/test13.in, src/testdir/test13.ok, + src/testdir/test_autocmd.vim, src/testdir/Make_all.mak, + src/Makefile + +Patch 7.4.2325 (after 7.4.2324) +Problem: Tiny build fails. +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 7.4.2326 +Problem: Illegal memory access when Visual selection starts in invalid + position. (Dominique Pelle) +Solution: Correct position when needed. +Files: src/normal.c, src/misc2.c, src/proto/misc2.pro + +Patch 7.4.2327 +Problem: Freeing a variable that is on the stack. +Solution: Don't free res_tv or err_tv. (Ozaki Kiichi) +Files: src/channel.c + +Patch 7.4.2328 +Problem: Crash when BufWinLeave autocmd goes to another tab page. (Hirohito + Higashi) +Solution: Make close_buffer() go back to the right window. +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 7.4.2329 +Problem: Error for min() and max() contains %s. (Nikolai Pavlov) +Solution: Pass the function name. (closes #1040) +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 7.4.2330 +Problem: Coverity complains about not checking curwin to be NULL. +Solution: Use firstwin to avoid the warning. +Files: src/buffer.c + +Patch 7.4.2331 +Problem: Using CTRL-X CTRL-V to complete a command line from Insert mode + does not work after entering an expression on the command line. +Solution: Don't use "ccline" when not actually using a command line. (test + by Hirohito Higashi) +Files: src/edit.c, src/ex_getln.c, src/proto/ex_getln.pro, + src/testdir/test_popup.vim + +Patch 7.4.2332 +Problem: Crash when stop_timer() is called in a callback of a callback. + Vim hangs when the timer callback uses too much time. +Solution: Set tr_id to -1 when a timer is to be deleted. Don't keep calling + callbacks forever. (Ozaki Kiichi) +Files: src/evalfunc.c, src/ex_cmds2.c, src/structs.h, + src/proto/ex_cmds2.pro, src/testdir/test_timers.vim + +Patch 7.4.2333 +Problem: Outdated comments in test. +Solution: Cleanup normal mode test. (Christian Brabandt) +Files: src/testdir/test_normal.vim + +Patch 7.4.2334 +Problem: On MS-Windows test_getcwd leaves Xtopdir behind. +Solution: Set 'noswapfile'. (Michael Soyka) +Files: src/testdir/test_getcwd.in + +Patch 7.4.2335 +Problem: taglist() is slow. (Luc Hermitte) +Solution: Check for CTRL-C less often when doing a linear search. (closes + #1044) +Files: src/tag.c + +Patch 7.4.2336 +Problem: Running normal mode tests leave a couple of files behind. + (Yegappan Lakshmanan) +Solution: Delete the files. (Christian Brabandt) +Files: src/testdir/test_normal.vim + +Patch 7.4.2337 +Problem: taglist() is still slow. (Luc Hermitte) +Solution: Check for CTRL-C less often when finding duplicates. +Files: src/tag.c + +Patch 7.4.2338 +Problem: Can't build with small features. (John Marriott) +Solution: Nearly always define FEAT_TAG_BINS. +Files: src/feature.h, src/tag.c + +Patch 7.4.2339 +Problem: Tab page test fails when run as fake root. +Solution: Check 'buftype' instead of 'filetype'. (James McCoy, closes #1042) +Files: src/testdir/test_tabpage.vim + +Patch 7.4.2340 +Problem: MS-Windows: Building with Ruby uses old version. +Solution: Update to 2.2.X. Use clearer name for the API version. (Ken + Takata) +Files: Makefile, src/INSTALLpc.txt, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/bigvim.bat + +Patch 7.4.2341 +Problem: Tiny things. Test doesn't clean up properly. +Solution: Adjust comment and white space. Restore option value. +Files: src/ex_cmds.c, src/message.c, src/testdir/test_autocmd.vim + +Patch 7.4.2342 +Problem: Typo in MS-Windows build script. +Solution: change "w2" to "22". +Files: src/bigvim.bat + +Patch 7.4.2343 +Problem: Too many old style tests. +Solution: Turn several into new style tests. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test101.in, + src/testdir/test101.ok, src/testdir/test18.in, + src/testdir/test18.ok, src/testdir/test2.in, src/testdir/test2.ok, + src/testdir/test21.in, src/testdir/test21.ok, + src/testdir/test6.in, src/testdir/test6.ok, + src/testdir/test_arglist.vim, src/testdir/test_charsearch.vim, + src/testdir/test_fnameescape.vim, src/testdir/test_gf.vim, + src/testdir/test_hlsearch.vim, src/testdir/test_smartindent.vim, + src/testdir/test_tagjump.vim, src/Makefile + +Patch 7.4.2344 +Problem: The "Reading from channel output..." message can be unwanted. + Appending to a buffer leaves an empty first line behind. +Solution: Add the "out_msg" and "err_msg" options. Writing the first line + overwrites the first, empty line. +Files: src/structs.h, src/channel.c, src/testdir/test_channel.vim, + runtime/doc/channel.txt + +Patch 7.4.2345 (after 7.4.2340) +Problem: For MinGW RUBY_API_VER_LONG isn't set correctly. Many default + version numbers are outdated. +Solution: Set RUBY_API_VER_LONG to RUBY_VER_LONG. Use latest stable releases + for defaults. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 7.4.2346 +Problem: Autocommand test fails when run directly, passes when run as part + of test_alot. +Solution: Add command to make the cursor move. Close a tab page. +Files: src/testdir/test_autocmd.vim + +Patch 7.4.2347 +Problem: Crash when closing a buffer while Visual mode is active. + (Dominique Pelle) +Solution: Adjust the position before computing the number of lines. + When closing the current buffer stop Visual mode. +Files: src/buffer.c, src/normal.c, src/testdir/test_normal.vim + +Patch 7.4.2348 +Problem: Crash on exit when EXITFREE is defined. (Dominique Pelle) +Solution: Don't access curwin when exiting. +Files: src/buffer.c + +Patch 7.4.2349 +Problem: Valgrind reports using uninitialized memory. (Dominique Pelle) +Solution: Check the length before checking for a NUL. +Files: src/message.c + +Patch 7.4.2350 +Problem: Test 86 and 87 fail with some version of Python. +Solution: Unify "can't" and "cannot". Unify quotes. +Files: src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test87.in, src/testdir/test87.ok + +Patch 7.4.2351 +Problem: Netbeans test fails when run from unpacked MS-Windows sources. +Solution: Open README.txt instead of Makefile. +Files: src/testdir/test_netbeans.py, src/testdir/test_netbeans.vim + +Patch 7.4.2352 +Problem: Netbeans test fails in shadow directory. +Solution: Also copy README.txt to the shadow directory. +Files: src/Makefile + +Patch 7.4.2353 +Problem: Not enough test coverage for Normal mode commands. +Solution: Add more tests. (Christian Brabandt) +Files: src/testdir/test_normal.vim + +Patch 7.4.2354 +Problem: The example that explains nested backreferences does not work + properly with the new regexp engine. (Harm te Hennepe) +Solution: Also save the end position when adding a state. (closes #990) +Files: src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 7.4.2355 +Problem: Regexp fails to match when using "\>\)\?". (Ramel) +Solution: When a state is already in the list, but addstate_here() is used + and the existing state comes later, add the new state anyway. +Files: src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 7.4.2356 +Problem: Reading past end of line when using previous substitute pattern. + (Dominique Pelle) +Solution: Don't set "pat" only set "searchstr". +Files: src/search.c, src/testdir/test_search.vim + +Patch 7.4.2357 +Problem: Attempt to read history entry while not initialized. +Solution: Skip when the index is negative. +Files: src/ex_getln.c + +Patch 7.4.2358 +Problem: Compiler warnings with Solaris Studio when using GTK3. (Danek + Duvall) +Solution: Define FUNC2GENERIC depending on the system. (Kazunobu Kuriyama) +Files: src/gui.h, src/gui_beval.c, src/gui_gtk_f.c + +Patch 7.4.2359 +Problem: Memory leak in timer_start(). +Solution: Check the right field to be NULL. +Files: src/evalfunc.c, src/testdir/test_timers.vim + +Patch 7.4.2360 +Problem: Invalid memory access when formatting. (Dominique Pelle) +Solution: Make sure cursor line and column are associated. +Files: src/misc1.c + +Patch 7.4.2361 +Problem: Checking for last_timer_id to overflow is not reliable. (Ozaki + Kiichi) +Solution: Check for the number not going up. +Files: src/ex_cmds2.c + +Patch 7.4.2362 +Problem: Illegal memory access with ":1@". (Dominique Pelle) +Solution: Correct cursor column after setting the line number. Also avoid + calling end_visual_mode() when not in Visual mode. +Files: src/ex_docmd.c, src/buffer.c + +Patch 7.4.2363 +Problem: Superfluous function prototypes. +Solution: Remove them. +Files: src/regexp.c + +Patch 7.4.2364 +Problem: Sort test sometimes fails. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 7.4.2365 +Problem: Needless line break. Confusing directory name. +Solution: Remove line break. Prepend "../" to "tools". +Files: Makefile, src/normal.c + +Patch 7.4.2366 +Problem: MS-Windows gvim.exe does not have DirectX support. +Solution: Add the DIRECTX to the script. +Files: src/bigvim.bat + +Patch 7.4.2367 (after 7.4.2364) +Problem: Test runner misses a comma. +Solution: Add the comma. +Files: src/testdir/runtest.vim + + +============================================================================== +VERSION 8.1 *version-8.1* *version8.1* *vim-8.1* + +This section is about improvements made between version 8.0 and 8.1. + +This release has hundreds of bug fixes, there is a new feature and there are +many minor improvements. + + +The terminal window *new-terminal-window* +------------------- + +You can now open a window which functions as a terminal. You can use it for: +- Running a command, such as "make", while editing in other windows +- Running a shell and execute several commands +- Use the terminal debugger plugin, see |terminal-debugger| + +All of this is especially useful when running Vim on a remote (ssh) +connection, when you can't easily open more terminals. + +For more information see |terminal-window|. + + +Changed *changed-8.1* +------- + +Internal: A few C99 features are now allowed such as // comments and a +comma after the last enum entry. See |style-compiler|. + +Since patch 8.0.0029 removed support for older MS-Windows systems, only +MS-Windows XP and later are supported. + + +Added *added-8.1* +----- + +Various syntax, indent and other plugins were added. + +Quickfix improvements (by Yegappan Lakshmanan): + Added support for modifying any quickfix/location list in the quickfix + stack. + Added a unique identifier for every quickfix/location list. + Added support for associating any Vim type as a context information to + a quickfix/location list. + Enhanced the getqflist(), getloclist(), setqflist() and setloclist() + functions to get and set the various quickfix/location list attributes. + Added the QuickFixLine highlight group to highlight the current line + in the quickfix window. + The quickfix buffer b:changedtick variable is incremented for every + change to the contained quickfix list. + Added a changedtick variable to a quickfix/location list which is + incremented when the list is modified. + Added support for parsing text using 'errorformat' without creating a + new quickfix list. + Added support for the "module" item to a quickfix entry which can be + used for display purposes instead of a long file name. + Added support for freeing all the lists in the quickfix/location stack. + When opening a quickfix window using the :copen/:cwindow commands, the + supplied split modifiers are used. + +Functions: + All the term_ functions. + + |assert_beeps()| + |assert_equalfile()| + |assert_report()| + |balloon_show()| + |balloon_split()| + |ch_canread()| + |getchangelist()| + |getjumplist()| + |getwinpos()| + |pyxeval()| + |remote_startserver()| + |setbufline()| + |test_ignore_error()| + |test_override()| + |trim()| + |win_screenpos()| + +Autocommands: + |CmdlineChanged| + |CmdlineEnter| + |CmdlineLeave| + |ColorSchemePre| + |DirChanged| + |ExitPre| + |TerminalOpen| + |TextChangedP| + |TextYankPost| + +Commands: + |:pyx| + |:pythonx| + |:pyxdo| + |:pyxfile| + |:terminal| + |:tmapclear| + |:tmap| + |:tnoremap| + |:tunmap| + +Options: + 'balloonevalterm' + 'imstyle' + 'mzschemedll' + 'mzschemegcdll' + 'makeencoding' + 'pumwidth' + 'pythonhome' + 'pythonthreehome' + 'pyxversion' + 'termwinkey' + 'termwinscroll' + 'termwinsize' + 'viminfofile' + 'winptydll' + + +Patches *patches-8.1* +------- + +Patch 8.0.0001 +Problem: Intro screen still mentions version7. (Paul) +Solution: Change it to version8. +Files: src/version.c + +Patch 8.0.0002 +Problem: The netrw plugin does not work. +Solution: Make it accept version 8.0. +Files: runtime/autoload/netrw.vim + +Patch 8.0.0003 +Problem: getwinvar() returns wrong Value of boolean and number options, + especially non big endian systems. (James McCoy) +Solution: Cast the pointer to long or int. (closes #1060) +Files: src/option.c, src/testdir/test_bufwintabinfo.vim + +Patch 8.0.0004 +Problem: A string argument for function() that is not a function name + results in an error message with NULL. (Christian Brabandt) +Solution: Use the argument for the error message. +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 8.0.0005 +Problem: Netbeans test fails with Python 3. (Jonathonf) +Solution: Encode the string before sending it. (closes #1070) +Files: src/testdir/test_netbeans.py + +Patch 8.0.0006 +Problem: ":lb" is interpreted as ":lbottom" while the documentation says it + means ":lbuffer". +Solution: Adjust the order of the commands. (haya14busa, closes #1093) +Files: src/ex_cmds.h + +Patch 8.0.0007 +Problem: Vim 7.4 is still mentioned in a few places. +Solution: Update to Vim 8. (Uncle Bill, closes #1094) +Files: src/INSTALLpc.txt, src/vimtutor, uninstal.txt + +Patch 8.0.0008 +Problem: Popup complete test is disabled. +Solution: Enable the test and change the assert. (Hirohito Higashi) +Files: src/testdir/test_popup.vim + +Patch 8.0.0009 +Problem: Unnecessary workaround for AppVeyor. +Solution: Revert patch 7.4.990. (Christian Brabandt) +Files: appveyor.yml + +Patch 8.0.0010 +Problem: Crash when editing file that starts with crypt header. (igor2x) +Solution: Check for length of text. (Christian Brabandt) Add a test. +Files: src/fileio.c, src/testdir/test_crypt.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0011 +Problem: On OSX Test_pipe_through_sort_all() sometimes fails. +Solution: Add the test to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0012 +Problem: Typos in comments. +Solution: Change "its" to "it's". (Matthew Brener, closes #1088) +Files: src/evalfunc.c, src/main.aap, src/nbdebug.c, src/netbeans.c, + src/quickfix.c, src/workshop.c, src/wsdebug.c + +Patch 8.0.0013 (after 8.0.0011) +Problem: Missing comma in list. +Solution: Add the comma. +Files: src/testdir/runtest.vim + +Patch 8.0.0014 +Problem: Crypt tests are old style. +Solution: Convert to new style. +Files: src/testdir/test71.in, src/testdir/test71.ok, + src/testdir/test71a.in, src/testdir/test_crypt.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0015 +Problem: Can't tell which part of a channel has "buffered" status. +Solution: Add an optional argument to ch_status(). Let ch_info() also + return "buffered" for out_status and err_status. +Files: src/evalfunc.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, runtime/doc/eval.txt + +Patch 8.0.0016 (after 8.0.0015) +Problem: Build fails. +Solution: Include missing change. +Files: src/eval.c + +Patch 8.0.0017 +Problem: Cannot get the number of the current quickfix or location list. +Solution: Use the current list if "nr" in "what" is zero. (Yegappan + Lakshmanan) Remove debug command from test. +Files: src/quickfix.c, src/testdir/test_quickfix.vim, + runtime/doc/eval.txt + +Patch 8.0.0018 +Problem: When using ":sleep" channel input is not handled. +Solution: When there is a channel check for input also when not in raw mode. + Check every 100 msec. +Files: src/channel.c, src/proto/channel.pro, src/ui.c, src/proto/ui.pro, + src/ex_docmd.c, src/os_amiga.c, src/proto/os_amiga.pro, + src/os_unix.c, src/proto/os_unix.pro, src/os_win32.c, + src/proto/os_win32.pro + +Patch 8.0.0019 +Problem: Test_command_count is old style. +Solution: Turn it into a new style test. (Naruhiko Nishino) + Use more assert functions. +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_autocmd.vim, src/testdir/test_command_count.in, + src/testdir/test_command_count.ok, + src/testdir/test_command_count.vim + +Patch 8.0.0020 +Problem: The regexp engines are not reentrant. +Solution: Add regexec_T and save/restore the state when needed. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test_expr.vim, + runtime/doc/eval.txt, runtime/doc/change.txt + +Patch 8.0.0021 +Problem: In the GUI when redrawing the cursor it may be on the second half + of a double byte character. +Solution: Correct the cursor column. (Yasuhiro Matsumoto) +Files: src/screen.c + +Patch 8.0.0022 +Problem: If a channel in NL mode is missing the NL at the end the remaining + characters are dropped. +Solution: When the channel is closed use the remaining text. (Ozaki Kiichi) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.0.0023 +Problem: "gd" and "gD" may find a match in a comment or string. +Solution: Ignore matches in comments and strings. (Anton Lindqvist) +Files: src/normal.c, src/testdir/test_goto.vim + +Patch 8.0.0024 +Problem: When the netbeans channel closes, "DETACH" is put in the output + part. (Ozaki Kiichi) +Solution: Write "DETACH" in the socket part. +Files: src/channel.c, src/testdir/test_netbeans.vim + +Patch 8.0.0025 +Problem: Inconsistent use of spaces vs tabs in gd test. +Solution: Use tabs. (Anton Lindqvist) +Files: src/testdir/test_goto.vim + +Patch 8.0.0026 +Problem: Error format with %W, %C and %Z does not work. (Gerd Wachsmuth) +Solution: Skip code when qf_multiignore is set. (Lcd) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0027 +Problem: A channel is closed when reading on stderr or stdout fails, but + there may still be something to read on another part. +Solution: Turn ch_to_be_closed into a bitfield. (Ozaki Kiichi) +Files: src/channel.c, src/eval.c, src/structs.h, src/proto/channel.pro, + src/testdir/test_channel.vim + +Patch 8.0.0028 +Problem: Superfluous semicolons. +Solution: Remove them. (Ozaki Kiichi) +Files: src/ex_cmds2.c + +Patch 8.0.0029 +Problem: Code for MS-Windows is complicated because of the exceptions for + old systems. +Solution: Drop support for MS-Windows older than Windows XP. (Ken Takata) +Files: runtime/doc/gui_w32.txt, runtime/doc/os_win32.txt, + runtime/doc/todo.txt, src/GvimExt/Makefile, src/Make_mvc.mak, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/gui_w32.c, + src/if_cscope.c, src/misc1.c, src/misc2.c, src/option.c, + src/os_mswin.c, src/os_win32.c, src/os_win32.h, + src/proto/os_mswin.pro, src/proto/os_win32.pro, src/version.c + +Patch 8.0.0030 +Problem: Mouse mode is not automatically detected for tmux. +Solution: Check for 'term' to be "tmux". (Michael Henry) +Files: src/os_unix.c + +Patch 8.0.0031 +Problem: After ":bwipeout" 'fileformat' is not set to the right default. +Solution: Get the default from 'fileformats'. (Mike Williams) +Files: src/option.c, src/Makefile, src/testdir/test_fileformat.vim, + src/testdir/test_alot.vim + +Patch 8.0.0032 +Problem: Tests may change the input file when something goes wrong. +Solution: Avoid writing the input file. +Files: src/testdir/test51.in, src/testdir/test67.in, + src/testdir/test97.in, src/testdir/test_tabpage.vim + +Patch 8.0.0033 +Problem: Cannot use overlapping positions with matchaddpos(). +Solution: Check end of match. (Ozaki Kiichi) Add a test (Hirohito Higashi) +Files: src/screen.c, src/testdir/test_match.vim + +Patch 8.0.0034 +Problem: No completion for ":messages". +Solution: Complete "clear" argument. (Hirohito Higashi) +Files: src/ex_docmd.c, src/ex_getln.c, src/proto/ex_docmd.pro, + src/testdir/test_cmdline.vim, src/vim.h, + runtime/doc/eval.txt, runtime/doc/map.txt + +Patch 8.0.0035 (after 7.4.2013) +Problem: Order of matches for 'omnifunc' is messed up. (Danny Su) +Solution: Do not set compl_curr_match when called from complete_check(). + (closes #1168) +Files: src/edit.c, src/evalfunc.c, src/proto/edit.pro, src/search.c, + src/spell.c, src/tag.c, src/testdir/test76.in, + src/testdir/test76.ok, src/testdir/test_popup.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0036 +Problem: Detecting that a job has finished may take a while. +Solution: Check for a finished job more often (Ozaki Kiichi) +Files: src/channel.c, src/os_unix.c, src/os_win32.c, + src/proto/os_unix.pro, src/proto/os_win32.pro, + src/testdir/test_channel.vim + +Patch 8.0.0037 +Problem: Get E924 when switching tabs. () +Solution: Use win_valid_any_tab() instead of win_valid(). (Martin Vuille, + closes #1167, closes #1171) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0038 +Problem: OPEN_CHR_FILES not defined for FreeBSD using Debian userland + files. +Solution: Check for __FreeBSD_kernel__. (James McCoy, closes #1166) +Files: src/vim.h + +Patch 8.0.0039 +Problem: When Vim 8 reads an old viminfo and exits, the next time marks are + not read from viminfo. (Ned Batchelder) +Solution: Set a mark when it wasn't set before, even when the timestamp is + zero. (closes #1170) +Files: src/mark.c, src/testdir/test_viminfo.vim + +Patch 8.0.0040 (after 8.0.0033) +Problem: Whole line highlighting with matchaddpos() does not work. +Solution: Check for zero length. (Hirohito Higashi) +Files: src/screen.c, src/testdir/test_match.vim + +Patch 8.0.0041 +Problem: When using Insert mode completion but not actually inserting + anything an undo item is still created. (Tommy Allen) +Solution: Do not call stop_arrow() when not inserting anything. +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0042 (after 8.0.0041) +Problem: When using Insert mode completion with 'completeopt' containing + "noinsert" change is not saved for undo. (Tommy Allen) +Solution: Call stop_arrow() before inserting for pressing Enter. +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0043 (after 8.0.0041) +Problem: When using Insert mode completion with 'completeopt' containing + "noinsert" with CTRL-N the change is not saved for undo. (Tommy + Allen) +Solution: Call stop_arrow() before inserting for any key. +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0044 +Problem: In diff mode the cursor may end up below the last line, resulting + in an ml_get error. +Solution: Check the line to be valid. +Files: src/move.c, src/diff.c, src/proto/diff.pro, + src/testdir/test_diffmode.vim + +Patch 8.0.0045 +Problem: Calling job_stop() right after job_start() does not work. +Solution: Block signals while fork is still busy. (Ozaki Kiichi, closes + #1155) +Files: src/auto/configure, src/config.h.in, src/configure.in, + src/os_unix.c, src/testdir/test_channel.vim + +Patch 8.0.0046 +Problem: Using NUL instead of NULL. +Solution: Change to NULL. (Dominique Pelle) +Files: src/ex_cmds.c, src/json.c + +Patch 8.0.0047 +Problem: Crash when using the preview window from an unnamed buffer. + (lifepillar) +Solution: Do not clear the wrong buffer. (closes #1200) +Files: src/popupmnu.c + +Patch 8.0.0048 +Problem: On Windows job_stop() stops cmd.exe, not the processes it runs. + (Linwei) +Solution: Iterate over all processes and terminate the one where the parent + is the job process. (Yasuhiro Matsumoto, closes #1184) +Files: src/os_win32.c, src/structs.h + +Patch 8.0.0049 +Problem: When a match ends in part of concealed text highlighting, it might + mess up concealing by resetting prev_syntax_id. +Solution: Do not reset prev_syntax_id and add a test to verify. (Christian + Brabandt, closes #1092) +Files: src/screen.c, src/testdir/test_matchadd_conceal.vim + +Patch 8.0.0050 +Problem: An exiting job is detected with a large latency. +Solution: Check for pending job more often. (Ozaki Kiichi) Change the + double loop in mch_inchar() into one. +Files: src/channel.c, src/os_unix.c, src/testdir/shared.vim, + src/testdir/test_channel.vim + +Patch 8.0.0051 (after 8.0.0048) +Problem: New code for job_stop() breaks channel test on AppVeyor. +Solution: Revert the change. +Files: src/os_win32.c, src/structs.h + +Patch 8.0.0052 (after 8.0.0049) +Problem: Conceal test passes even without the bug fix. +Solution: Add a redraw command. (Christian Brabandt) +Files: src/testdir/test_matchadd_conceal.vim + +Patch 8.0.0053 (after 8.0.0047) +Problem: No test for what 8.0.0047 fixes. +Solution: Add a test. (Hirohito Higashi) +Files: src/testdir/test_popup.vim + +Patch 8.0.0054 (after 8.0.0051) +Problem: On Windows job_stop() stops cmd.exe, not the processes it runs. + (Linwei) +Solution: Iterate over all processes and terminate the one where the parent + is the job process. Now only when there is no job object. + (Yasuhiro Matsumoto, closes #1203) +Files: src/os_win32.c + +Patch 8.0.0055 +Problem: Minor comment and style deficiencies. +Solution: Update comments and fix style. +Files: src/buffer.c, src/misc2.c, src/os_unix.c + +Patch 8.0.0056 +Problem: When setting 'filetype' there is no check for a valid name. +Solution: Only allow valid characters in 'filetype', 'syntax' and 'keymap'. +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0057 (after 8.0.0056) +Problem: Tests fail without the 'keymap' features. +Solution: Check for feature in test. +Files: src/testdir/test_options.vim + +Patch 8.0.0058 +Problem: Positioning of the popup menu is not good. +Solution: Position it better. (Hirohito Higashi) +Files: src/popupmnu.c + +Patch 8.0.0059 +Problem: Vim does not build on VMS systems. +Solution: Various changes for VMS. (Zoltan Arpadffy) +Files: src/json.c, src/macros.h, src/Make_vms.mms, src/os_unix.c, + src/os_unix.h, src/os_vms.c, src/os_vms_conf.h, + src/proto/os_vms.pro, src/testdir/Make_vms.mms + +Patch 8.0.0060 +Problem: When using an Ex command for 'keywordprg' it is escaped as with a + shell command. (Romain Lafourcade) +Solution: Escape for an Ex command. (closes #1175) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.0.0061 (after 8.0.0058) +Problem: Compiler warning for unused variable. +Solution: Add #ifdef. (John Marriott) +Files: src/popupmnu.c + +Patch 8.0.0062 +Problem: No digraph for HORIZONTAL ELLIPSIS. +Solution: Use ",.". (Hans Ginzel, closes #1226) +Files: src/digraph.c, runtime/doc/digraph.txt + +Patch 8.0.0063 +Problem: Compiler warning for comparing with unsigned. (Zoltan Arpadffy) +Solution: Change <= to ==. +Files: src/undo.c + +Patch 8.0.0064 (after 8.0.0060) +Problem: Normal test fails on MS-Windows. +Solution: Don't try using an illegal file name. +Files: src/testdir/test_normal.vim + +Patch 8.0.0065 (after 8.0.0056) +Problem: Compiler warning for unused function in tiny build. (Tony + Mechelynck) +Solution: Add #ifdef. +Files: src/option.c + +Patch 8.0.0066 +Problem: when calling an operator function when 'linebreak' is set, it is + internally reset before calling the operator function. +Solution: Restore 'linebreak' before calling op_function(). (Christian + Brabandt) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.0.0067 +Problem: VMS has a problem with infinity. +Solution: Avoid an overflow. (Zoltan Arpadffy) +Files: src/json.c, src/macros.h + +Patch 8.0.0068 +Problem: Checking did_throw after executing autocommands is wrong. (Daniel + Hahler) +Solution: Call aborting() instead, and only when autocommands were executed. +Files: src/quickfix.c, src/if_cscope.c, src/testdir/test_quickfix.vim + +Patch 8.0.0069 +Problem: Compiler warning for self-comparison. +Solution: Define ONE_WINDOW and add #ifdef. +Files: src/globals.h, src/buffer.c, src/ex_docmd.c, src/move.c, + src/screen.c, src/quickfix.c, src/window.c + +Patch 8.0.0070 +Problem: Tests referred in Makefile that no longer exist. +Solution: Remove test71 and test74 entries. (Michael Soyka) +Files: src/testdir/Mak_ming.mak + +Patch 8.0.0071 +Problem: Exit value from a shell command is wrong. (Hexchain Tong) +Solution: Do not check for ended jobs while waiting for a shell command. + (ichizok, closes #1196) +Files: src/os_unix.c + +Patch 8.0.0072 +Problem: MS-Windows: Crash with long font name. (Henry Hu) +Solution: Fix comparing with LF_FACESIZE. (Ken Takata, closes #1243) +Files: src/os_mswin.c + +Patch 8.0.0073 (after 8.0.0069) +Problem: More comparisons between firstwin and lastwin. +Solution: Use ONE_WINDOW for consistency. (Hirohito Higashi) +Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/option.c, + src/window.c + +Patch 8.0.0074 +Problem: Cannot make Vim fail on an internal error. +Solution: Add IEMSG() and IEMSG2(). (Dominique Pelle) Avoid reporting an + internal error without mentioning where. +Files: src/globals.h, src/blowfish.c, src/dict.c, src/edit.c, src/eval.c, + src/evalfunc.c, src/ex_eval.c, src/getchar.c, src/gui_beval.c, + src/gui_w32.c, src/hangulin.c, src/hashtab.c, src/if_cscope.c, + src/json.c, src/memfile.c, src/memline.c, src/message.c, + src/misc2.c, src/option.c, src/quickfix.c, src/regexp.c, + src/spell.c, src/undo.c, src/userfunc.c, src/vim.h, src/window.c, + src/proto/misc2.pro, src/proto/message.pro, src/Makefile + +Patch 8.0.0075 +Problem: Using number for exception type lacks type checking. +Solution: Use an enum. +Files: src/structs.h, src/ex_docmd.c, src/ex_eval.c, + src/proto/ex_eval.pro + +Patch 8.0.0076 +Problem: Channel log has double parens ()(). +Solution: Remove () for write_buf_line. (Yasuhiro Matsumoto) +Files: src/channel.c + +Patch 8.0.0077 +Problem: The GUI code is not tested by Travis. +Solution: Install the virtual framebuffer. +Files: .travis.yml + +Patch 8.0.0078 +Problem: Accessing freed memory in quickfix. +Solution: Reset pointer when freeing 'errorformat'. (Dominique Pelle) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0079 +Problem: Accessing freed memory in quickfix. (Dominique Pelle) +Solution: Do not free the current list when adding to it. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0080 +Problem: The OS X build fails on Travis. +Solution: Skip the virtual framebuffer on OS X. +Files: .travis.yml + +Patch 8.0.0081 +Problem: Inconsistent function names. +Solution: Rename do_cscope to ex_cscope. Clean up comments. +Files: src/ex_cmds.h, src/if_cscope.c, src/ex_docmd.c, + src/proto/if_cscope.pro + +Patch 8.0.0082 +Problem: Extension for configure should be ".ac". +Solution: Rename configure.in to configure.ac. (James McCoy, closes #1173) +Files: src/configure.in, src/configure.ac, Filelist, src/Makefile, + src/blowfish.c, src/channel.c, src/config.h.in, src/main.aap, + src/os_unix.c, src/INSTALL, src/mysign + +Patch 8.0.0083 +Problem: Using freed memory with win_getid(). (Dominique Pelle) +Solution: For the current tab use curwin. +Files: src/window.c, src/testdir/test_window_id.vim + +Patch 8.0.0084 +Problem: Using freed memory when adding to a quickfix list. (Dominique + Pelle) +Solution: Clear the directory name. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0085 +Problem: Using freed memory with recursive function call. (Dominique Pelle) +Solution: Make a copy of the function name. +Files: src/eval.c, src/testdir/test_nested_function.vim + +Patch 8.0.0086 +Problem: Cannot add a comment after ":hide". (Norio Takagi) +Solution: Make it work, add a test. (Hirohito Higashi) +Files: src/Makefile, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/Make_all.mak, src/testdir/test_hide.vim + +Patch 8.0.0087 +Problem: When the channel callback gets job info the job may already have + been deleted. (lifepillar) +Solution: Do not delete the job when the channel is still useful. (ichizok, + closes #1242, closes #1245) +Files: src/channel.c, src/eval.c, src/os_unix.c, src/os_win32.c, + src/structs.h, src/testdir/test_channel.vim + +Patch 8.0.0088 +Problem: When a test fails in Setup or Teardown the problem is not reported. +Solution: Add a try/catch. (Hirohito Higashi) +Files: src/testdir/runtest.vim + +Patch 8.0.0089 +Problem: Various problems with GTK 3.22.2. +Solution: Fix the problems, add #ifdefs. (Kazunobu Kuriyama) +Files: src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 8.0.0090 +Problem: Cursor moved after last character when using 'breakindent'. +Solution: Fix the cursor positioning. Turn the breakindent test into new + style. (Christian Brabandt) +Files: src/screen.c, src/testdir/Make_all.mak, + src/testdir/test_breakindent.in, src/testdir/test_breakindent.ok, + src/testdir/test_breakindent.vim, src/Makefile + +Patch 8.0.0091 +Problem: Test_help_complete sometimes fails in MS-Windows console. +Solution: Use getcompletion() instead of feedkeys() and command line + completion. (Hirohito Higashi) +Files: src/testdir/test_help_tagjump.vim + +Patch 8.0.0092 +Problem: C indenting does not support nested namespaces that C++ 17 has. +Solution: Add check that passes double colon inside a name. (Pauli, closes + #1214) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 8.0.0093 +Problem: Not using multiprocess build feature. +Solution: Enable multiprocess build with MSVC 10. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 8.0.0094 +Problem: When vimrun.exe is not found the error message is not properly + encoded. +Solution: Use utf-16 and MessageBoxW(). (Ken Takata) +Files: src/os_win32.c + +Patch 8.0.0095 +Problem: Problems with GTK 3.22.2 fixed in 3.22.4. +Solution: Adjust the #ifdefs. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 8.0.0096 +Problem: When the input or output is not a tty Vim appears to hang. +Solution: Add the --ttyfail argument. Also add the "ttyin" and "ttyout" + features to be able to check in Vim script. +Files: src/globals.h, src/structs.h, src/main.c, src/evalfunc.c, + runtime/doc/starting.txt, runtime/doc/eval.txt + +Patch 8.0.0097 +Problem: When a channel callback consumes a lot of time Vim becomes + unresponsive. (skywind) +Solution: Bail out of checking channel readahead after 100 msec. +Files: src/os_unix.c, src/misc2.c, src/vim.h, src/os_win32.c, + src/channel.c + +Patch 8.0.0098 (after 8.0.0097) +Problem: Can't build on MS-Windows. +Solution: Add missing parenthesis. +Files: src/vim.h + +Patch 8.0.0099 +Problem: Popup menu always appears above the cursor when it is in the lower + half of the screen. (Matt Gardner) +Solution: Compute the available space better. (Hirohito Higashi, + closes #1241) +Files: src/popupmnu.c + +Patch 8.0.0100 +Problem: Options that are a file name may contain non-filename characters. +Solution: Check for more invalid characters. +Files: src/option.c + +Patch 8.0.0101 +Problem: Some options are not strictly checked. +Solution: Add flags for stricter checks. +Files: src/option.c + +Patch 8.0.0102 (after 8.0.0101) +Problem: Cannot set 'dictionary' to a path. +Solution: Allow for slash and backslash. Add a test (partly by Daisuke + Suzuki, closes #1279, closes #1284) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0103 +Problem: May not process channel readahead. (skywind) +Solution: If there is readahead don't block on input. +Files: src/channel.c, src/proto/channel.pro, src/os_unix.c, + src/os_win32.c, src/misc2.c + +Patch 8.0.0104 +Problem: Value of 'thesaurus' option not checked properly. +Solution: Add P_NDNAME flag. (Daisuke Suzuki) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0105 +Problem: When using ch_read() with zero timeout, can't tell the difference + between reading an empty line and nothing available. +Solution: Add ch_canread(). +Files: src/evalfunc.c, src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, src/testdir/shared.vim, + runtime/doc/eval.txt, runtime/doc/channel.txt + +Patch 8.0.0106 (after 8.0.0100) +Problem: Cannot use a semicolon in 'backupext'. (Jeff) +Solution: Allow for a few more characters when "secure" isn't set. +Files: src/option.c + +Patch 8.0.0107 +Problem: When reading channel output in a timer, messages may go missing. + (Skywind) +Solution: Add the "drop" option. Write error messages in the channel log. + Don't have ch_canread() check for the channel being open. +Files: src/structs.h, src/channel.c, src/message.c, src/evalfunc.c, + src/proto/channel.pro, runtime/doc/channel.txt + +Patch 8.0.0108 (after 8.0.0107) +Problem: The channel "drop" option is not tested. +Solution: Add a test. +Files: src/testdir/test_channel.vim + +Patch 8.0.0109 +Problem: Still checking if memcmp() exists while every system should have + it now. +Solution: Remove vim_memcmp(). (James McCoy, closes #1295) +Files: src/config.h.in, src/configure.ac, src/misc2.c, src/os_vms_conf.h, + src/osdef1.h.in, src/search.c, src/tag.c, src/vim.h + +Patch 8.0.0110 +Problem: Drop command doesn't use existing window. +Solution: Check the window width properly. (Hirohito Higashi) +Files: src/buffer.c, src/testdir/test_tabpage.vim + +Patch 8.0.0111 +Problem: The :history command is not tested. +Solution: Add tests. (Dominique Pelle) +Files: runtime/doc/cmdline.txt, src/testdir/test_history.vim + +Patch 8.0.0112 +Problem: Tests 92 and 93 are old style. +Solution: Make test92 and test93 new style. (Hirohito Higashi, closes #1289) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test92.in, src/testdir/test92.ok, + src/testdir/test93.in, src/testdir/test93.ok, + src/testdir/test_mksession.vim, + src/testdir/test_mksession_utf8.vim + +Patch 8.0.0113 +Problem: MS-Windows: message box to prompt for saving changes may appear on + the wrong monitor. +Solution: Adjust the CenterWindow function. (Ken Takata) +Files: src/gui_w32.c + +Patch 8.0.0114 +Problem: Coding style not optimal. +Solution: Add spaces. (Ken Takata) +Files: src/gui_w32.c, src/os_mswin.c + +Patch 8.0.0115 +Problem: When building with Cygwin libwinpthread isn't found. +Solution: Link winpthread statically. (jmmerz, closes #1255, closes #1256) +Files: src/Make_cyg_ming.mak + +Patch 8.0.0116 +Problem: When reading English help and using CTRL-] the language from + 'helplang' is used. +Solution: Make help tag jumps keep the language. (Tatsuki, test by Hirohito + Higashi, closes #1249) +Files: src/tag.c, src/testdir/test_help_tagjump.vim + +Patch 8.0.0117 +Problem: Parallel make fails. (J. Lewis Muir) +Solution: Make sure the objects directory exists. (closes #1259) +Files: src/Makefile + +Patch 8.0.0118 +Problem: "make proto" adds extra function prototype. +Solution: Add #ifdef. +Files: src/misc2.c + +Patch 8.0.0119 +Problem: No test for using CTRL-R on the command line. +Solution: Add a test. (Dominique Pelle) And some more. +Files: src/testdir/test_cmdline.vim + +Patch 8.0.0120 +Problem: Channel test is still flaky on OS X. +Solution: Set the drop argument to "never". +Files: src/testdir/test_channel.vim + +Patch 8.0.0121 +Problem: Setting 'cursorline' changes the curswant column. (Daniel Hahler) +Solution: Add the P_RWINONLY flag. (closes #1297) +Files: src/option.c, src/testdir/test_goto.vim + +Patch 8.0.0122 +Problem: Channel test is still flaky on OS X. +Solution: Add a short sleep. +Files: src/testdir/test_channel.py + +Patch 8.0.0123 +Problem: Modern Sun compilers define "__sun" instead of "sun". +Solution: Use __sun. (closes #1296) +Files: src/mbyte.c, src/pty.c, src/os_unixx.h, src/vim.h + +Patch 8.0.0124 +Problem: Internal error for assert_inrange(1, 1). +Solution: Adjust number of allowed arguments. (Dominique Pelle) +Files: src/evalfunc.c, src/testdir/test_assert.vim + +Patch 8.0.0125 +Problem: Not enough testing for entering Ex commands. +Solution: Add test for CTRL-\ e {expr}. (Dominique Pelle) +Files: src/testdir/test_cmdline.vim + +Patch 8.0.0126 +Problem: Display problem with 'foldcolumn' and a wide character. + (esiegerman) +Solution: Don't use "extra" but an allocated buffer. (Christian Brabandt, + closes #1310) +Files: src/screen.c, src/testdir/Make_all.mak, src/Makefile, + src/testdir/test_display.vim + +Patch 8.0.0127 +Problem: Cancelling completion still inserts text when formatting is done + for 'textwidth'. (lacygoill) +Solution: Don't format when CTRL-E was typed. (Hirohito Higashi, + closes #1312) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0128 (after 8.0.0126) +Problem: Display test fails on MS-Windows. +Solution: Set 'isprint' to "@". +Files: src/testdir/test_display.vim + +Patch 8.0.0129 +Problem: Parallel make still doesn't work. (Lewis Muir) +Solution: Define OBJ_MAIN. +Files: src/Makefile + +Patch 8.0.0130 +Problem: Configure uses "ushort" while the Vim code doesn't. +Solution: Use "unsigned short" instead. (Fredrik Fornwall, closes #1314) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.0131 +Problem: Not enough test coverage for syntax commands. +Solution: Add more tests. (Dominique Pelle) +Files: src/testdir/test_syntax.vim + +Patch 8.0.0132 (after 8.0.0131) +Problem: Test fails because of using :finish. +Solution: Change to return. +Files: src/testdir/test_syntax.vim + +Patch 8.0.0133 +Problem: "2;'(" causes ml_get errors in an empty buffer. (Dominique Pelle) +Solution: Check the cursor line earlier. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.0.0134 +Problem: Null pointer access reported by UBsan. +Solution: Check curwin->w_buffer is not NULL. (Yegappan Lakshmanan) +Files: src/ex_cmds.c + +Patch 8.0.0135 +Problem: An address relative to the current line, ":.,+3y", does not work + properly on a closed fold. (Efraim Yawitz) +Solution: Correct for including the closed fold. (Christian Brabandt) +Files: src/ex_docmd.c, src/testdir/test_fold.vim, + src/testdir/Make_all.mak, src/Makefile + +Patch 8.0.0136 +Problem: When using indent folding and changing indent the wrong fold is + opened. (Jonathan Fudger) +Solution: Open the fold under the cursor a bit later. (Christian Brabandt) +Files: src/ops.c, src/testdir/test_fold.vim + +Patch 8.0.0137 +Problem: When 'maxfuncdepth' is set above 200 the nesting is limited to + 200. (Brett Stahlman) +Solution: Allow for Ex command recursion depending on 'maxfuncdepth'. +Files: src/ex_docmd.c, src/testdir/test_nested_function.vim + +Patch 8.0.0138 (after 8.0.0137) +Problem: Small build fails. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.0.0139 (after 8.0.0135) +Problem: Warning for unused argument. +Solution: Add UNUSED. +Files: src/ex_docmd.c + +Patch 8.0.0140 +Problem: Pasting inserted text in Visual mode does not work properly. + (Matthew Malcomson) +Solution: Stop Visual mode before stuffing the inserted text. (Christian + Brabandt, from neovim #5709) +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.0.0141 (after 8.0.0137) +Problem: Nested function test fails on AppVeyor. +Solution: Disable the test on Windows for now. +Files: src/testdir/test_nested_function.vim + +Patch 8.0.0142 +Problem: Normal colors are wrong with 'termguicolors'. +Solution: Initialize to INVALCOLOR instead of zero. (Ben Jackson, closes + #1344) +Files: src/syntax.c + +Patch 8.0.0143 +Problem: Line number of current buffer in getbufinfo() is wrong. +Solution: For the current buffer use the current line number. (Ken Takata) +Files: src/evalfunc.c + +Patch 8.0.0144 +Problem: When using MSVC the GvimExt directory is cleaned twice. +Solution: Remove the lines. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 8.0.0145 +Problem: Running tests on MS-Windows is a little bit noisy. +Solution: Redirect some output to "nul". (Ken Takata) +Files: src/testdir/Make_dos.mak + +Patch 8.0.0146 +Problem: When using 'termguicolors' on MS-Windows the RGB definition causes + the colors to be wrong. +Solution: Undefined RGB and use our own. (Gabriel Barta) +Files: src/term.c + +Patch 8.0.0147 +Problem: searchpair() does not work when 'magic' is off. (Chris Paul) +Solution: Add \m in the pattern. (Christian Brabandt, closes #1341) +Files: src/evalfunc.c, src/testdir/test_search.vim + +Patch 8.0.0148 +Problem: When a C preprocessor statement has two line continuations the + following line does not have the right indent. (Ken Takata) +Solution: Add the indent of the previous continuation line. (Hirohito + Higashi) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 8.0.0149 +Problem: ":earlier" and ":later" do not work after startup or reading the + undo file. +Solution: Use absolute time stamps instead of relative to the Vim start + time. (Christian Brabandt, Pavel Juhas, closes #1300, closes + #1254) +Files: src/testdir/test_undo.vim, src/undo.c + +Patch 8.0.0150 +Problem: When the pattern of :filter does not have a separator then + completion of the command fails. +Solution: Skip over the pattern. (Ozaki Kiichi, closes #1299) +Files: src/ex_docmd.c, src/testdir/test_filter_cmd.vim + +Patch 8.0.0151 +Problem: To pass buffer content to system() and systemlist() one has to + first create a string or list. +Solution: Allow passing a buffer number. (LemonBoy, closes #1240) +Files: runtime/doc/eval.txt, src/Makefile, src/evalfunc.c, + src/testdir/Make_all.mak, src/testdir/test_system.vim + +Patch 8.0.0152 +Problem: Running the channel test creates channellog. +Solution: Delete the debug line. +Files: src/testdir/test_channel.vim + +Patch 8.0.0153 (after 8.0.0151) +Problem: system() test fails on MS-Windows. +Solution: Deal with extra space and CR. +Files: src/testdir/test_system.vim + +Patch 8.0.0154 (after 8.0.0151) +Problem: system() test fails on OS/X. +Solution: Deal with leading spaces. +Files: src/testdir/test_system.vim + +Patch 8.0.0155 +Problem: When sorting zero elements a NULL pointer is passed to qsort(), + which ubsan warns for. +Solution: Don't call qsort() if there are no elements. (Dominique Pelle) +Files: src/syntax.c + +Patch 8.0.0156 +Problem: Several float functions are not covered by tests. +Solution: Add float tests. (Dominique Pelle) +Files: src/Makefile, src/testdir/test_alot.vim, + src/testdir/test_float_func.vim + +Patch 8.0.0157 +Problem: No command line completion for ":syntax spell" and ":syntax sync". +Solution: Implement the completion. (Dominique Pelle) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.0.0158 (after 8.0.0156) +Problem: On MS-Windows some float functions return a different value when + passed unusual values. strtod() doesn't work for "inf" and "nan". +Solution: Accept both results. Fix str2float() for MS-Windows. Also + reorder assert function arguments. +Files: src/testdir/test_float_func.vim, src/eval.c + +Patch 8.0.0159 +Problem: Using a NULL pointer when using feedkeys() to trigger drawing a + tabline. +Solution: Skip drawing a tabline if TabPageIdxs is NULL. (Dominique Pelle) + Also fix recursing into getcmdline() from the cmd window. +Files: src/screen.c, src/ex_getln.c + +Patch 8.0.0160 +Problem: EMSG() is sometimes used for internal errors. +Solution: Change them to IEMSG(). (Dominique Pelle) And a few more. +Files: src/regexp_nfa.c, src/channel.c, src/eval.c + +Patch 8.0.0161 (after 8.0.0159) +Problem: Build fails when using small features. +Solution: Update #ifdef for using save_ccline. (Hirohito Higashi) +Files: src/ex_getln.c + +Patch 8.0.0162 +Problem: Build error on Fedora 23 with small features and gnome2. +Solution: Undefine ngettext(). (Hirohito Higashi) +Files: src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 8.0.0163 +Problem: Ruby 2.4 no longer supports rb_cFixnum. +Solution: move rb_cFixnum into an #ifdef. (Kazuki Sakamoto, closes #1365) +Files: src/if_ruby.c + +Patch 8.0.0164 +Problem: Outdated and misplaced comments. +Solution: Fix the comments. +Files: src/charset.c, src/getchar.c, src/list.c, src/misc2.c, + src/testdir/README.txt + +Patch 8.0.0165 +Problem: Ubsan warns for integer overflow. +Solution: Swap two conditions. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 8.0.0166 +Problem: JSON with a duplicate key gives an internal error. (Lcd) +Solution: Give a normal error. Avoid an error when parsing JSON from a + remote client fails. +Files: src/evalfunc.c, src/json.c, src/channel.c, + src/testdir/test_json.vim + +Patch 8.0.0167 +Problem: str2nr() and str2float() do not always work with negative values. +Solution: Be more flexible about handling signs. (LemonBoy, closes #1332) + Add more tests. +Files: src/evalfunc.c, src/testdir/test_float_func.vim, + src/testdir/test_functions.vim, src/testdir/test_alot.vim, + src/Makefile + +Patch 8.0.0168 +Problem: Still some float functionality is not covered by tests. +Solution: Add more tests. (Dominique Pelle, closes #1364) +Files: src/testdir/test_float_func.vim + +Patch 8.0.0169 +Problem: For complicated string json_decode() may run out of stack space. +Solution: Change the recursive solution into an iterative solution. +Files: src/json.c + +Patch 8.0.0170 (after 8.0.0169) +Problem: Channel test fails for using freed memory. +Solution: Fix memory use in json_decode(). +Files: src/json.c + +Patch 8.0.0171 +Problem: JS style JSON does not support single quotes. +Solution: Allow for single quotes. (Yasuhiro Matsumoto, closes #1371) +Files: src/json.c, src/testdir/test_json.vim, src/json_test.c, + runtime/doc/eval.txt + +Patch 8.0.0172 (after 8.0.0159) +Problem: The command selected in the command line window is not executed. + (Andrey Starodubtsev) +Solution: Save and restore the command line at a lower level. (closes #1370) +Files: src/ex_getln.c, src/testdir/test_history.vim + +Patch 8.0.0173 +Problem: When compiling with EBCDIC defined the build fails. (Yaroslav + Kuzmin) +Solution: Move sortFunctions() to the right file. Avoid warning for + redefining __SUSV3. +Files: src/eval.c, src/evalfunc.c, src/os_unixx.h + +Patch 8.0.0174 +Problem: For completion "locale -a" is executed on MS-Windows, even though + it most likely won't work. +Solution: Skip executing "locale -a" on MS-Windows. (Ken Takata) +Files: src/ex_cmds2.c + +Patch 8.0.0175 +Problem: Setting language in gvim on MS-Windows does not work when + libintl.dll is dynamically linked with msvcrt.dll. +Solution: Use putenv() from libintl as well. (Ken Takata, closes #1082) +Files: src/mbyte.c, src/misc1.c, src/os_win32.c, src/proto/os_win32.pro, + src/vim.h + +Patch 8.0.0176 +Problem: Using :change in between :function and :endfunction fails. +Solution: Recognize :change inside a function. (ichizok, closes #1374) +Files: src/userfunc.c, src/testdir/test_viml.vim + +Patch 8.0.0177 +Problem: When opening a buffer on a directory and inside a try/catch then + the BufEnter event is not triggered. +Solution: Return NOTDONE from readfile() for a directory and deal with the + three possible return values. (Justin M. Keyes, closes #1375, + closes #1353) +Files: src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, src/fileio.c, + src/memline.c + +Patch 8.0.0178 +Problem: test_command_count may fail when a previous test interferes, seen + on MS-Windows. +Solution: Run it separately. +Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak + +Patch 8.0.0179 +Problem: 'formatprg' is a global option but the value may depend on the + type of buffer. (Sung Pae) +Solution: Make 'formatprg' global-local. (closes #1380) +Files: src/structs.h, src/option.h, src/option.c, src/normal.c, + runtime/doc/options.txt, src/testdir/test_normal.vim + +Patch 8.0.0180 +Problem: Error E937 is used both for duplicate key in JSON and for trying + to delete a buffer that is in use. +Solution: Rename the JSON error to E938. (Norio Takagi, closes #1376) +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.0.0181 +Problem: When 'cursorbind' and 'cursorcolumn' are both on, the column + highlight in non-current windows is wrong. +Solution: Add validate_cursor(). (Masanori Misono, closes #1372) +Files: src/move.c + +Patch 8.0.0182 +Problem: When 'cursorbind' and 'cursorline' are set, but 'cursorcolumn' is + not, then the cursor line highlighting is not updated. (Hirohito + Higashi) +Solution: Call redraw_later() with NOT_VALID. +Files: src/move.c + +Patch 8.0.0183 +Problem: Ubsan warns for using a pointer that is not aligned. +Solution: First copy the address. (Yegappan Lakshmanan) +Files: src/channel.c + +Patch 8.0.0184 +Problem: When in Ex mode and an error is caught by try-catch, Vim still + exits with a non-zero exit code. +Solution: Don't set ex_exitval when inside a try-catch. (partly by Christian + Brabandt) +Files: src/message.c, src/testdir/test_system.vim + +Patch 8.0.0185 (after 8.0.0184) +Problem: The system() test fails on MS-Windows. +Solution: Skip the test on MS-Windows. +Files: src/testdir/test_system.vim + +Patch 8.0.0186 +Problem: The error message from assert_notequal() is confusing. +Solution: Only mention the expected value. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 8.0.0187 +Problem: Building with a new Ruby version fails. +Solution: Use ruby_sysinit() instead of NtInitialize(). (Tomas Volf, + closes #1382) +Files: src/if_ruby.c + +Patch 8.0.0188 (after 8.0.0182) +Problem: Using NOT_VALID for redraw_later() to update the cursor + line/column highlighting is not efficient. +Solution: Call validate_cursor() when 'cul' or 'cuc' is set. +Files: src/move.c + +Patch 8.0.0189 +Problem: There are no tests for the :profile command. +Solution: Add tests. (Dominique Pelle, closes #1383) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_profile.vim + +Patch 8.0.0190 +Problem: Detecting duplicate tags uses a slow linear search. +Solution: Use a much faster hash table solution. (James McCoy, closes #1046) + But don't add hi_keylen, it makes hash tables 50% bigger. +Files: src/tag.c + +Patch 8.0.0191 (after 8.0.0187) +Problem: Some systems do not have ruby_sysinit(), causing the build to + fail. +Solution: Clean up how ruby_sysinit() and NtInitialize() are used. (Taro + Muraoka) +Files: src/if_ruby.c + +Patch 8.0.0192 (after 8.0.0190) +Problem: Build fails with tiny features. +Solution: Change #ifdef for hash_clear(). Avoid warning for unused + argument. +Files: src/hashtab.c, src/if_cscope.c + +Patch 8.0.0193 (after 8.0.0188) +Problem: Accidentally removed #ifdef. +Solution: Put it back. (Masanori Misono) +Files: src/move.c + +Patch 8.0.0194 (after 8.0.0189) +Problem: Profile tests fails if total and self time are equal. +Solution: Make one time optional. +Files: src/testdir/test_profile.vim + +Patch 8.0.0195 (after 8.0.0190) +Problem: Jumping to a tag that is a static item in the current file fails. + (Kazunobu Kuriyama) +Solution: Make sure the first byte of the tag key is not NUL. (Suggested by + James McCoy, closes #1387) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.0.0196 (after 8.0.0194) +Problem: The test for :profile is slow and does not work on MS-Windows. +Solution: Use the "-es" argument. (Dominique Pelle) Swap single and double + quotes for system() +Files: src/testdir/test_profile.vim + +Patch 8.0.0197 +Problem: On MS-Windows the system() test skips a few parts. +Solution: Swap single and double quotes for the command. +Files: src/testdir/test_system.vim + +Patch 8.0.0198 +Problem: Some syntax arguments take effect even after "if 0". (Taylor + Venable) +Solution: Properly skip the syntax statements. Make "syn case" and "syn + conceal" report the current state. Fix that "syn clear" didn't + reset the conceal flag. Add tests for :syntax skipping properly. +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.0.0199 +Problem: Warning for an unused parameter when the libcall feature is + disabled. Warning for a function type cast when compiling with + -pedantic. +Solution: Add UNUSED. Use a different type cast. (Damien Molinier) +Files: src/evalfunc.c, src/os_unix.c + +Patch 8.0.0200 +Problem: Some syntax arguments are not tested. +Solution: Add more syntax command tests. +Files: src/testdir/test_syntax.vim + +Patch 8.0.0201 +Problem: When completing a group name for a highlight or syntax command + cleared groups are included. +Solution: Skip groups that have been cleared. +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.0.0202 +Problem: No test for invalid syntax group name. +Solution: Add a test for group name error and warning. +Files: src/testdir/test_syntax.vim + +Patch 8.0.0203 +Problem: Order of complication flags is sometimes wrong. +Solution: Put interface-specific flags before ALL_CFLAGS. (idea by Yousong + Zhou, closes #1100) +Files: src/Makefile + +Patch 8.0.0204 +Problem: Compiler warns for uninitialized variable. (Tony Mechelynck) +Solution: When skipping set "id" to -1. +Files: src/syntax.c + +Patch 8.0.0205 +Problem: After :undojoin some commands don't work properly, such as :redo. + (Matthew Malcomson) +Solution: Don't set curbuf->b_u_curhead. (closes #1390) +Files: src/undo.c, src/testdir/test_undo.vim + +Patch 8.0.0206 +Problem: Test coverage for :retab insufficient. +Solution: Add test for :retab. (Dominique Pelle, closes #1391) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/test_retab.vim + +Patch 8.0.0207 +Problem: Leaking file descriptor when system() cannot find the buffer. + (Coverity) +Solution: Close the file descriptor. (Dominique Pelle, closes #1398) +Files: src/evalfunc.c + +Patch 8.0.0208 +Problem: Internally used commands for CTRL-Z and mouse click end up in + history. (Matthew Malcomson) +Solution: Use do_cmdline_cmd() instead of stuffing them in the readahead + buffer. (James McCoy, closes #1395) +Files: src/edit.c, src/normal.c + +Patch 8.0.0209 +Problem: When using :substitute with the "c" flag and 'cursorbind' is set + the cursor is not updated in other windows. +Solution: Call do_check_cursorbind(). (Masanori Misono) +Files: src/ex_cmds.c + +Patch 8.0.0210 +Problem: Vim does not support bracketed paste, as implemented by xterm and + other terminals. +Solution: Add t_BE, t_BD, t_PS and t_PE. +Files: src/term.c, src/term.h, src/option.c, src/misc2.c, src/keymap.h, + src/edit.c, src/normal.c, src/evalfunc.c, src/getchar.c, + src/vim.h, src/proto/edit.pro, runtime/doc/term.txt + +Patch 8.0.0211 (after 8.0.0210) +Problem: Build fails if the multibyte feature is disabled. +Solution: Change #ifdef around ins_char_bytes. +Files: src/misc1.c + +Patch 8.0.0212 +Problem: The buffer used to store a key name theoretically could be too + small. (Coverity) +Solution: Count all possible modifier characters. Add a check for the + length just in case. +Files: src/keymap.h, src/misc2.c + +Patch 8.0.0213 +Problem: The Netbeans "specialKeys" command does not check if the argument + fits in the buffer. (Coverity) +Solution: Add a length check. +Files: src/netbeans.c + +Patch 8.0.0214 +Problem: Leaking memory when syntax cluster id is unknown. (Coverity) +Solution: Free the memory. +Files: src/syntax.c + +Patch 8.0.0215 +Problem: When a Cscope line contains CTRL-L a NULL pointer may be used. + (Coverity) +Solution: Don't check for an emacs tag in a cscope line. +Files: src/tag.c + +Patch 8.0.0216 +Problem: When decoding JSON with a JS style object the JSON test may use a + NULL pointer. (Coverity) +Solution: Check for a NULL pointer. +Files: src/json.c, src/json_test.c + +Patch 8.0.0217 (after 8.0.0215) +Problem: Build fails without the cscope feature. +Solution: Add #ifdef. +Files: src/tag.c + +Patch 8.0.0218 +Problem: No command line completion for :cexpr, :cgetexpr, :caddexpr, etc. +Solution: Make completion work. (Yegappan Lakshmanan) Add a test. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.0.0219 +Problem: Ubsan reports errors for integer overflow. +Solution: Define macros for minimum and maximum values. Select an + expression based on the value. (Mike Williams) +Files: src/charset.c, src/eval.c, src/evalfunc.c, src/structs.h, + src/testdir/test_viml.vim + +Patch 8.0.0220 +Problem: Completion for :match does not show "none" and other missing + highlight names. +Solution: Skip over cleared entries before checking the index to be at the + end. +Files: src/syntax.c, src/testdir/test_cmdline.vim + +Patch 8.0.0221 +Problem: Checking if PROTO is defined inside a function has no effect. +Solution: Remove the check for PROTO. (Hirohito Higashi) +Files: src/misc1.c + +Patch 8.0.0222 +Problem: When a multibyte character ends in a zero byte, putting blockwise + text puts it before the character instead of after it. +Solution: Use int instead of char for the character under the cursor. + (Luchr, closes #1403) Add a test. +Files: src/ops.c, src/testdir/test_put.vim, src/Makefile, + src/testdir/test_alot.vim + +Patch 8.0.0223 +Problem: Coverity gets confused by the flags passed to find_tags() and + warns about uninitialized variable. +Solution: Disallow using cscope and help tags at the same time. +Files: src/tag.c + +Patch 8.0.0224 +Problem: When 'fileformats' is changed in a BufReadPre auto command, it + does not take effect in readfile(). (Gary Johnson) +Solution: Check the value of 'fileformats' after executing auto commands. + (Christian Brabandt) +Files: src/fileio.c, src/testdir/test_fileformat.vim + +Patch 8.0.0225 +Problem: When a block is visually selected and put is used on the end of + the selection only one line is changed. +Solution: Check for the end properly. (Christian Brabandt, neovim issue + 5781) +Files: src/ops.c, src/testdir/test_put.vim + +Patch 8.0.0226 +Problem: The test for patch 8.0.0224 misses the CR characters and passes + even without the fix. (Christian Brabandt) +Solution: Use double quotes and \<CR>. +Files: src/testdir/test_fileformat.vim + +Patch 8.0.0227 +Problem: Crash when 'fileformat' is forced to "dos" and the first line in + the file is empty and does not have a CR character. +Solution: Don't check for CR before the start of the buffer. +Files: src/fileio.c, src/testdir/test_fileformat.vim + +Patch 8.0.0228 (after 8.0.0210) +Problem: When pasting test in an xterm on the command line it is surrounded + by <PasteStart> and <PasteEnd>. (Johannes Kaltenbach) +Solution: Add missing changes. +Files: src/ex_getln.c, src/term.c + +Patch 8.0.0229 (after 8.0.0179) +Problem: When freeing a buffer the local value of the 'formatprg' option is + not cleared. +Solution: Add missing change. +Files: src/buffer.c + +Patch 8.0.0230 (after 8.0.0210) +Problem: When using bracketed paste line breaks are not respected. +Solution: Turn CR characters into a line break if the text is being + inserted. (closes #1404) +Files: src/edit.c + +Patch 8.0.0231 +Problem: There are no tests for bracketed paste mode. +Solution: Add a test. Fix repeating with "normal .". +Files: src/edit.c, src/testdir/test_paste.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0232 +Problem: Pasting in Insert mode does not work when bracketed paste is used + and 'esckeys' is off. +Solution: When 'esckeys' is off disable bracketed paste in Insert mode. +Files: src/edit.c + +Patch 8.0.0233 (after 8.0.0231) +Problem: The paste test fails if the GUI is being used. +Solution: Skip the test in the GUI. +Files: src/testdir/test_paste.vim + +Patch 8.0.0234 (after 8.0.0225) +Problem: When several lines are visually selected and one of them is short, + using put may cause a crash. (Axel Bender) +Solution: Check for a short line. (Christian Brabandt) +Files: src/ops.c, src/testdir/test_put.vim + +Patch 8.0.0235 +Problem: Memory leak detected when running tests for diff mode. +Solution: Free p_extra_free. +Files: src/screen.c + +Patch 8.0.0236 (after 8.0.0234) +Problem: Gcc complains that a variable may be used uninitialized. Confusion + between variable and label name. (John Marriott) +Solution: Initialize it. Rename end to end_lnum. +Files: src/ops.c + +Patch 8.0.0237 +Problem: When setting wildoptions=tagfile the completion context is not set + correctly. (desjardins) +Solution: Check for EXPAND_TAGS_LISTFILES. (Christian Brabandt, closes #1399) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.0.0238 +Problem: When using bracketed paste autoindent causes indent to be + increased. +Solution: Disable 'ai' and set 'paste' temporarily. (Ken Takata) +Files: src/edit.c, src/testdir/test_paste.vim + +Patch 8.0.0239 +Problem: The address sanitizer sometimes finds errors, but it needs to be + run manually. +Solution: Add an environment to Travis with clang and the address sanitizer. + (Christian Brabandt) Also include changes only on github. +Files: .travis.yml + +Patch 8.0.0240 (after 8.0.0239) +Problem: The clang build on CI fails with one configuration. +Solution: Redo a previous patch that was accidentally reverted. +Files: .travis.yml + +Patch 8.0.0241 +Problem: Vim defines a mch_memmove() function but it doesn't work, thus is + always unused. +Solution: Remove the mch_memmove implementation. (suggested by Dominique + Pelle) +Files: src/os_unix.h, src/misc2.c, src/vim.h + +Patch 8.0.0242 +Problem: Completion of user defined functions is not covered by tests. +Solution: Add tests. Also test various errors of user-defined commands. + (Dominique Pelle, closes #1413) +Files: src/testdir/test_usercommands.vim + +Patch 8.0.0243 +Problem: When making a character lower case with tolower() changes the byte + count, it is not made lower case. +Solution: Add strlow_save(). (Dominique Pelle, closes #1406) +Files: src/evalfunc.c, src/misc2.c, src/proto/misc2.pro, + src/testdir/test_functions.vim + +Patch 8.0.0244 +Problem: When the user sets t_BE empty after startup to disable bracketed + paste, this has no direct effect. +Solution: When t_BE is made empty write t_BD. When t_BE is made non-empty + write the new value. +Files: src/option.c + +Patch 8.0.0245 +Problem: The generated zh_CN.cp936.po message file is not encoded properly. +Solution: Instead of using zh_CN.po as input, use zh_CN.UTF-8.po. +Files: src/po/Makefile + +Patch 8.0.0246 +Problem: Compiler warnings for int to pointer conversion. +Solution: Fix macro for mch_memmove(). (John Marriott) +Files: src/vim.h + +Patch 8.0.0247 +Problem: Under some circumstances, one needs to type Ctrl-N or Ctrl-P twice + to have a menu entry selected. (Lifepillar) +Solution: call ins_compl_free(). (Christian Brabandt, closes #1411) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0248 +Problem: vim_strcat() cannot handle overlapping arguments. +Solution: Use mch_memmove() instead of strcpy(). (Justin M. Keyes, + closes #1415) +Files: src/misc2.c + +Patch 8.0.0249 +Problem: When two submits happen quick after each other, the tests for the + first one may error out. +Solution: Use a git depth of 10 instead of 1. (Christian Brabandt) +Files: .travis.yml + +Patch 8.0.0250 +Problem: When virtcol() gets a column that is not the first byte of a + multibyte character the result is unpredictable. (Christian + Ludwig) +Solution: Correct the column to the first byte of a multibyte character. + Change the utf-8 test to new style. +Files: src/charset.c, src/testdir/test_utf8.in, src/testdir/test_utf8.ok, + src/testdir/test_utf8.vim, src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_alot_utf8.vim + +Patch 8.0.0251 +Problem: It is not so easy to write a script that works with both Python 2 + and Python 3, even when the Python code works with both. +Solution: Add 'pyxversion', :pyx, etc. (Marc Weber, Ken Takata) +Files: Filelist, runtime/doc/eval.txt, runtime/doc/if_pyth.txt, + runtime/doc/index.txt, runtime/doc/options.txt, + runtime/optwin.vim, runtime/doc/quickref.txt, + runtime/doc/usr_41.txt, src/Makefile, src/evalfunc.c, + src/ex_cmds.h, src/ex_cmds2.c, src/ex_docmd.c, src/if_python.c, + src/if_python3.c, src/option.c, src/option.h, + src/proto/ex_cmds2.pro, src/testdir/Make_all.mak, + src/testdir/pyxfile/py2_magic.py, + src/testdir/pyxfile/py2_shebang.py, + src/testdir/pyxfile/py3_magic.py, + src/testdir/pyxfile/py3_shebang.py, src/testdir/pyxfile/pyx.py, + src/testdir/test_pyx2.vim, src/testdir/test_pyx3.vim + src/userfunc.c + +Patch 8.0.0252 +Problem: Characters below 256 that are not one byte are not always + recognized as word characters. +Solution: Make vim_iswordc() and vim_iswordp() work the same way. Add a test + for this. (Ozaki Kiichi) +Files: src/Makefile, src/charset.c, src/kword_test.c, src/mbyte.c, + src/proto/mbyte.pro + +Patch 8.0.0253 +Problem: When creating a session when 'winminheight' is 2 or larger and + loading that session gives an error. +Solution: Also set 'winminheight' before setting 'winheight' to 1. (Rafael + Bodill, neovim #5717) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.0.0254 +Problem: When using an assert function one can either specify a message or + get a message about what failed, not both. +Solution: Concatenate the error with the message. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 8.0.0255 +Problem: When calling setpos() with a buffer argument it often is ignored. + (Matthew Malcomson) +Solution: Make the buffer argument work for all marks local to a buffer. + (neovim #5713) Add more tests. +Files: src/mark.c, src/testdir/test_marks.vim, runtime/doc/eval.txt + +Patch 8.0.0256 (after 8.0.0255) +Problem: Tests fail because some changes were not included. +Solution: Add changes to evalfunc.c +Files: src/evalfunc.c + +Patch 8.0.0257 (after 8.0.0252) +Problem: The keyword test file is not included in the archive. +Solution: Update the list of files. +Files: Filelist + +Patch 8.0.0258 (after 8.0.0253) +Problem: mksession test leaves file behind. +Solution: Delete the file. Rename files to start with "X". +Files: src/testdir/test_mksession.vim + +Patch 8.0.0259 +Problem: Tab commands do not handle count correctly. (Ken Hamada) +Solution: Add ADDR_TABS_RELATIVE. (Hirohito Higashi) +Files: runtime/doc/tabpage.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test_tabpage.vim + +Patch 8.0.0260 +Problem: Build fails with tiny features. +Solution: Move get_tabpage_arg() inside #ifdef. +Files: src/ex_docmd.c + +Patch 8.0.0261 +Problem: Not enough test coverage for eval functions. +Solution: Add more tests. (Dominique Pelle, closes #1420) +Files: src/testdir/test_functions.vim + +Patch 8.0.0262 +Problem: Farsi support is barely tested. +Solution: Add more tests for Farsi. Clean up the code. +Files: src/edit.c, src/farsi.c, src/testdir/test_farsi.vim + +Patch 8.0.0263 +Problem: Farsi support is not tested enough. +Solution: Add more tests for Farsi. Clean up the code. +Files: src/farsi.c, src/testdir/test_farsi.vim + +Patch 8.0.0264 +Problem: Memory error reported by ubsan, probably for using the string + returned by execute(). +Solution: NUL terminate the result of execute(). +Files: src/evalfunc.c + +Patch 8.0.0265 +Problem: May get ml_get error when :pydo deletes lines or switches to + another buffer. (Nikolai Pavlov, issue #1421) +Solution: Check the buffer and line every time. +Files: src/if_py_both.h, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0266 +Problem: Compiler warning for using uninitialized variable. +Solution: Set tab_number also when there is an error. +Files: src/ex_docmd.c + +Patch 8.0.0267 +Problem: A channel test sometimes fails on Mac. +Solution: Add the test to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0268 +Problem: May get ml_get error when :luado deletes lines or switches to + another buffer. (Nikolai Pavlov, issue #1421) +Solution: Check the buffer and line every time. +Files: src/if_lua.c, src/testdir/test_lua.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0269 +Problem: May get ml_get error when :perldo deletes lines or switches to + another buffer. (Nikolai Pavlov, issue #1421) +Solution: Check the buffer and line every time. +Files: src/if_perl.xs, src/testdir/test_perl.vim + +Patch 8.0.0270 +Problem: May get ml_get error when :rubydo deletes lines or switches to + another buffer. (Nikolai Pavlov, issue #1421) +Solution: Check the buffer and line every time. +Files: src/if_ruby.c, src/testdir/test_ruby.vim + +Patch 8.0.0271 +Problem: May get ml_get error when :tcldo deletes lines or switches to + another buffer. (Nikolai Pavlov, closes #1421) +Solution: Check the buffer and line every time. +Files: src/if_tcl.c, src/testdir/test_tcl.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0272 +Problem: Crash on exit is not detected when running tests. +Solution: Remove the dash before the command. (Dominique Pelle, closes + #1425) +Files: src/testdir/Makefile + +Patch 8.0.0273 +Problem: Dead code detected by Coverity when not using gnome. +Solution: Rearrange the #ifdefs to avoid dead code. +Files: src/gui_gtk_x11.c + +Patch 8.0.0274 +Problem: When update_single_line() is called recursively, or another screen + update happens while it is busy, errors may occur. +Solution: Check and update updating_screen. (Christian Brabandt) +Files: src/screen.c + +Patch 8.0.0275 +Problem: When checking for CTRL-C typed the GUI may detect a screen resize + and redraw the screen, causing trouble. +Solution: Set updating_screen in ui_breakcheck(). +Files: src/ui.c + +Patch 8.0.0276 +Problem: Checking for FEAT_GUI_GNOME inside GTK 3 code is unnecessary. +Solution: Remove the #ifdef. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 8.0.0277 +Problem: The GUI test may trigger fontconfig and take a long time. +Solution: Set $XDG_CACHE_HOME. (Kazunobu Kuriyama) +Files: src/testdir/unix.vim, src/testdir/test_gui.vim + +Patch 8.0.0278 (after 8.0.0277) +Problem: GUI test fails on MS-Windows. +Solution: Check that tester_HOME exists. +Files: src/testdir/test_gui.vim + +Patch 8.0.0279 +Problem: With MSVC 2015 the dll name is vcruntime140.dll. +Solution: Check the MSVC version and use the right dll name. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 8.0.0280 +Problem: On MS-Windows setting an environment variable with multibyte + strings does not work well. +Solution: Use wputenv when possible. (Taro Muraoka, Ken Takata) +Files: src/misc1.c, src/os_win32.c, src/os_win32.h, + src/proto/os_win32.pro, src/vim.h + +Patch 8.0.0281 +Problem: MS-Windows files are still using ARGSUSED while most other files + have UNUSED. +Solution: Change ARGSUSED to UNUSED or delete it. +Files: src/os_win32.c, src/gui_w32.c, src/os_mswin.c, src/os_w32exe.c, + src/winclip.c + +Patch 8.0.0282 +Problem: When doing a Visual selection and using "I" to go to insert mode, + CTRL-O needs to be used twice to go to Normal mode. (Coacher) +Solution: Check for the return value of edit(). (Christian Brabandt, + closes #1290) +Files: src/normal.c, src/ops.c + +Patch 8.0.0283 +Problem: The return value of mode() does not indicate that completion is + active in Replace and Insert mode. (Zhen-Huan (Kenny) Hu) +Solution: Add "c" or "x" for two kinds of completion. (Yegappan Lakshmanan, + closes #1397) Test some more modes. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim, src/testdir/test_mapping.vim + +Patch 8.0.0284 +Problem: The Test_collapse_buffers() test failed once, looks like it is + flaky. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0285 (after 8.0.0277) +Problem: Tests fail with tiny build on Unix. +Solution: Only set g:tester_HOME when build with the +eval feature. +Files: src/testdir/unix.vim + +Patch 8.0.0286 +Problem: When concealing is active and the screen is resized in the GUI it + is not immediately redrawn. +Solution: Use update_prepare() and update_finish() from + update_single_line(). +Files: src/screen.c + +Patch 8.0.0287 +Problem: Cannot access the arguments of the current function in debug mode. + (Luc Hermitte) +Solution: use get_funccal(). (LemonBoy, closes #1432, closes #1352) +Files: src/userfunc.c + +Patch 8.0.0288 (after 8.0.0284) +Problem: Errors reported while running tests. +Solution: Put comma in the right place. +Files: src/testdir/runtest.vim + +Patch 8.0.0289 +Problem: No test for "ga" and :ascii. +Solution: Add a test. (Dominique Pelle, closes #1429) +Files: src/Makefile, src/testdir/test_alot.vim, src/testdir/test_ga.vim + +Patch 8.0.0290 +Problem: If a wide character doesn't fit at the end of the screen line, and + the line doesn't fit on the screen, then the cursor position may + be wrong. (anliting) +Solution: Don't skip over wide character. (Christian Brabandt, closes #1408) +Files: src/screen.c + +Patch 8.0.0291 (after 8.0.0282) +Problem: Visual block insertion does not insert in all lines. +Solution: Don't bail out of insert too early. Add a test. (Christian + Brabandt, closes #1290) +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.0.0292 +Problem: The stat test is a bit slow. +Solution: Remove a couple of sleep comments and reduce another. +Files: src/testdir/test_stat.vim + +Patch 8.0.0293 +Problem: Some tests have a one or three second wait. +Solution: Reset the 'showmode' option. Use a test time of one to disable + sleep after an error or warning message. +Files: src/misc1.c, src/testdir/runtest.vim, src/testdir/test_normal.vim + +Patch 8.0.0294 +Problem: Argument list is not stored correctly in a session file. + (lgpasquale) +Solution: Use "$argadd" instead of "argadd". (closes #1434) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.0.0295 (after 8.0.0293) +Problem: test_viml hangs. +Solution: Put resetting 'more' before sourcing the script. +Files: src/testdir/runtest.vim + +Patch 8.0.0296 +Problem: Bracketed paste can only append, not insert. +Solution: When the cursor is in the first column insert the text. +Files: src/normal.c, src/testdir/test_paste.vim, runtime/doc/term.txt + +Patch 8.0.0297 +Problem: Double free on exit when using a closure. (James McCoy) +Solution: Split free_al_functions in two parts. (closes #1428) +Files: src/userfunc.c, src/structs.h + +Patch 8.0.0298 +Problem: Ex command range with repeated search does not work. (Bruce + DeVisser) +Solution: Skip over \/, \? and \&. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.0.0299 +Problem: When the GUI window is resized Vim does not always take over the + new size. (Luchr) +Solution: Reset new_p_guifont in gui_resize_shell(). Call + gui_may_resize_shell() in the main loop. +Files: src/main.c, src/gui.c + +Patch 8.0.0300 +Problem: Cannot stop diffing hidden buffers. (Daniel Hahler) +Solution: When using :diffoff! make the whole list if diffed buffers empty. + (closes #736) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.0.0301 +Problem: No tests for ":set completion" and various errors of the :set + command. +Solution: Add more :set tests. (Dominique Pelle, closes #1440) +Files: src/testdir/test_options.vim + +Patch 8.0.0302 +Problem: Cannot set terminal key codes with :let. +Solution: Make it work. +Files: src/option.c, src/testdir/test_assign.vim + +Patch 8.0.0303 +Problem: Bracketed paste does not work in Visual mode. +Solution: Delete the text before pasting +Files: src/normal.c, src/ops.c, src/proto/ops.pro, + src/testdir/test_paste.vim + +Patch 8.0.0304 (after 8.0.0302) +Problem: Assign test fails in the GUI. +Solution: Skip the test for setting t_k1. +Files: src/testdir/test_assign.vim + +Patch 8.0.0305 +Problem: Invalid memory access when option has duplicate flag. +Solution: Correct pointer computation. (Dominique Pelle, closes #1442) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0306 +Problem: mode() not sufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan) +Files: src/testdir/test_functions.vim + +Patch 8.0.0307 +Problem: Asan detects a memory error when EXITFREE is defined. (Dominique + Pelle) +Solution: In getvcol() check for ml_get_buf() returning an empty string. + Also skip adjusting the scroll position. Set "exiting" in + mch_exit() for all systems. +Files: src/charset.c, src/window.c, src/os_mswin.c, src/os_win32.c, + src/os_amiga.c + +Patch 8.0.0308 +Problem: When using a symbolic link, the package path will not be inserted + at the right position in 'runtimepath'. (Dugan Chen, Norio Takagi) +Solution: Resolve symbolic links when finding the right position in + 'runtimepath'. (Hirohito Higashi) +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 8.0.0309 +Problem: Cannot use an empty key in json. +Solution: Allow for using an empty key. +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.0.0310 +Problem: Not enough testing for GUI functionality. +Solution: Add tests for v:windowid and getwinpos[xy](). (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0311 +Problem: Linebreak tests are old style. +Solution: Turn the tests into new style. Share utility functions. (Ozaki + Kiichi, closes #1444) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_breakindent.vim, src/testdir/test_listlbr.in, + src/testdir/test_listlbr.ok, src/testdir/test_listlbr.vim, + src/testdir/test_listlbr_utf8.in, + src/testdir/test_listlbr_utf8.ok, + src/testdir/test_listlbr_utf8.vim, src/testdir/view_util.vim + +Patch 8.0.0312 +Problem: When a json message arrives in pieces, the start is dropped and + the decoding fails. +Solution: Do not drop the start when it is still needed. (Kay Zheng) Add a + test. Reset the timeout when something is received. +Files: src/channel.c, src/testdir/test_channel.vim, src/structs.h, + src/testdir/test_channel_pipe.py + +Patch 8.0.0313 (after 8.0.0310) +Problem: Not enough testing for GUI functionality. +Solution: Add tests for the GUI font. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0314 +Problem: getcmdtype(), getcmdpos() and getcmdline() are not tested. +Solution: Add tests. (Yegappan Lakshmanan) +Files: src/testdir/test_cmdline.vim + +Patch 8.0.0315 +Problem: ":help :[range]" does not work. (Tony Mechelynck) +Solution: Translate to insert a backslash. +Files: src/ex_cmds.c + +Patch 8.0.0316 +Problem: ":help z?" does not work. (Pavol Juhas) +Solution: Remove exception for z?. +Files: src/ex_cmds.c + +Patch 8.0.0317 +Problem: No test for setting 'guifont'. +Solution: Add a test for X11 GUIs. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0318 +Problem: Small mistake in 7x13 font name. +Solution: Use ISO 8859-1 name instead of 10646-1. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0319 +Problem: Insert mode completion does not respect "start" in 'backspace'. +Solution: Check whether backspace can go before where insert started. + (Hirohito Higashi) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0320 +Problem: Warning for unused variable with small build. +Solution: Change #ifdef to exclude FEAT_CMDWIN. (Kazunobu Kuriyama) +Files: src/ex_getln.c + +Patch 8.0.0321 +Problem: When using the tiny version trying to load the matchit plugin + gives an error. On MS-Windows some default mappings fail. +Solution: Add a check if the command used is available. (Christian Brabandt) +Files: runtime/mswin.vim, runtime/macros/matchit.vim + +Patch 8.0.0322 +Problem: Possible overflow with spell file where the tree length is + corrupted. +Solution: Check for an invalid length (suggested by shqking) +Files: src/spellfile.c + +Patch 8.0.0323 +Problem: When running the command line tests there is a one second wait. +Solution: Change an Esc to Ctrl-C. (Yegappan Lakshmanan) +Files: src/testdir/test_cmdline.vim + +Patch 8.0.0324 +Problem: Illegal memory access with "1;y". +Solution: Call check_cursor() instead of check_cursor_lnum(). (Dominique + Pelle, closes #1455) +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.0.0325 +Problem: Packadd test does not clean up symlink. +Solution: Delete the link. (Hirohito Higashi) +Files: src/testdir/test_packadd.vim + +Patch 8.0.0326 (after 8.0.0325) +Problem: Packadd test uses wrong directory name. +Solution: Use the variable name value. (Hirohito Higashi) +Files: src/testdir/test_packadd.vim + +Patch 8.0.0327 +Problem: The E11 error message in the command line window is not + translated. +Solution: use _(). (Hirohito Higashi) +Files: src/ex_docmd.c + +Patch 8.0.0328 +Problem: The "zero count" error doesn't have a number. (Hirohito Higashi) +Solution: Give it a number and be more specific about the error. +Files: src/globals.h + +Patch 8.0.0329 +Problem: Xfontset and guifontwide are not tested. +Solution: Add tests. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0330 +Problem: Illegal memory access after "vapo". (Dominique Pelle) +Solution: Fix the cursor column. +Files: src/search.c, src/testdir/test_visual.vim + +Patch 8.0.0331 +Problem: Restoring help snapshot accesses freed memory. (Dominique Pelle) +Solution: Don't restore a snapshot when the window closes. +Files: src/window.c, src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_help.vim + +Patch 8.0.0332 +Problem: GUI test fails on some systems. +Solution: Try different language settings. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0333 +Problem: Illegal memory access when 'complete' ends in a backslash. +Solution: Check for trailing backslash. (Dominique Pelle, closes #1478) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0334 +Problem: Can't access b:changedtick from a dict reference. +Solution: Make changedtick a member of the b: dict. (inspired by neovim + #6112) +Files: src/structs.h, src/buffer.c, src/edit.c, src/eval.c, + src/evalfunc.c, src/ex_docmd.c, src/main.c, src/globals.h, + src/fileio.c, src/memline.c, src/misc1.c, src/syntax.c, + src/proto/eval.pro, src/testdir/test_changedtick.vim, + src/Makefile, src/testdir/test_alot.vim, src/testdir/test91.in, + src/testdir/test91.ok, src/testdir/test_functions.vim + +Patch 8.0.0335 (after 8.0.0335) +Problem: Functions test fails. +Solution: Use the right buffer number. +Files: src/testdir/test_functions.vim + +Patch 8.0.0336 +Problem: Flags of :substitute not sufficiently tested. +Solution: Test up to two letter flag combinations. (James McCoy, closes + #1479) +Files: src/testdir/test_substitute.vim + +Patch 8.0.0337 +Problem: Invalid memory access in :recover command. +Solution: Avoid access before directory name. (Dominique Pelle, + closes #1488) +Files: src/Makefile, src/memline.c, src/testdir/test_alot.vim, + src/testdir/test_recover.vim + +Patch 8.0.0338 (after 8.0.0337) +Problem: :recover test fails on MS-Windows. +Solution: Use non-existing directory on MS-Windows. +Files: src/testdir/test_recover.vim + +Patch 8.0.0339 +Problem: Illegal memory access with vi' +Solution: For quoted text objects bail out if the Visual area spans more + than one line. +Files: src/search.c, src/testdir/test_visual.vim + +Patch 8.0.0340 +Problem: Not checking return value of dict_add(). (Coverity) +Solution: Handle a failure. +Files: src/buffer.c + +Patch 8.0.0341 +Problem: When using complete() and typing a character undo is saved after + the character was inserted. (Shougo) +Solution: Save for undo before inserting the character. +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0342 +Problem: Double free when compiled with EXITFREE and setting 'ttytype'. +Solution: Avoid setting P_ALLOCED on 'ttytype'. (Dominique Pelle, + closes #1461) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.0.0343 +Problem: b:changedtick can be unlocked, even though it has no effect. + (Nikolai Pavlov) +Solution: Add a check and error E940. (closes #1496) +Files: src/eval.c, src/testdir/test_changedtick.vim, runtime/doc/eval.txt + +Patch 8.0.0344 +Problem: Unlet command leaks memory. (Nikolai Pavlov) +Solution: Free the memory on error. (closes #1497) +Files: src/eval.c, src/testdir/test_unlet.vim + +Patch 8.0.0345 +Problem: islocked('d.changedtick') does not work. +Solution: Make it work. +Files: src/buffer.c, src/eval.c, src/evalfunc.c, src/vim.h, + src/testdir/test_changedtick.vim, + +Patch 8.0.0346 +Problem: Vim relies on limits.h to be included indirectly, but on Solaris 9 + it may not be. (Ben Fritz) +Solution: Always include limits.h. +Files: src/os_unixx.h, src/vim.h + +Patch 8.0.0347 +Problem: When using CTRL-X CTRL-U inside a comment, the use of the comment + leader may not work. (Klement) +Solution: Save and restore did_ai. (Christian Brabandt, closes #1494) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0348 +Problem: When building with a shadow directory on macOS lacks the + +clipboard feature. +Solution: Link *.m files, specifically os_macosx.m. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 8.0.0349 +Problem: Redrawing errors with GTK 3. +Solution: When updating, first clear all rectangles and then draw them. + (Kazunobu Kuriyama, Christian Ludwig, closes #848) +Files: src/gui_gtk_x11.c + +Patch 8.0.0350 +Problem: Not enough test coverage for Perl. +Solution: Add more Perl tests. (Dominique Pelle, closes #1500) +Files: src/testdir/test_perl.vim + +Patch 8.0.0351 +Problem: No test for concatenating an empty string that results from out of + bounds indexing. +Solution: Add a simple test. +Files: src/testdir/test_expr.vim + +Patch 8.0.0352 +Problem: The condition for when a typval needs to be cleared is too + complicated. +Solution: Init the type to VAR_UNKNOWN and always clear it. +Files: src/eval.c + +Patch 8.0.0353 +Problem: If [RO] in the status line is translated to a longer string, it is + truncated to 4 bytes. +Solution: Skip over the resulting string. (Jente Hidskes, closes #1499) +Files: src/screen.c + +Patch 8.0.0354 +Problem: Test to check that setting termcap key fails sometimes. +Solution: Check for "t_k1" to exist. (Christian Brabandt, closes #1459) +Files: src/testdir/test_assign.vim + +Patch 8.0.0355 +Problem: Using uninitialized memory when 'isfname' is empty. +Solution: Don't call getpwnam() without an argument. (Dominique Pelle, + closes #1464) +Files: src/misc1.c, src/testdir/test_options.vim + +Patch 8.0.0356 (after 8.0.0342) +Problem: Leaking memory when setting 'ttytype'. +Solution: Get free_oldval from the right option entry. +Files: src/option.c + +Patch 8.0.0357 +Problem: Crash when setting 'guicursor' to weird value. +Solution: Avoid negative size. (Dominique Pelle, closes #1465) +Files: src/misc2.c, src/testdir/test_options.vim + +Patch 8.0.0358 +Problem: Invalid memory access in C-indent code. +Solution: Don't go over end of empty line. (Dominique Pelle, closes #1492) +Files: src/edit.c, src/testdir/test_options.vim + +Patch 8.0.0359 +Problem: 'number' and 'relativenumber' are not properly tested. +Solution: Add tests, change old style to new style tests. (Ozaki Kiichi, + closes #1447) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test89.in, src/testdir/test89.ok, + src/testdir/test_alot.vim, src/testdir/test_findfile.vim, + src/testdir/test_number.vim + +Patch 8.0.0360 +Problem: Sometimes VimL is used, which is confusing. +Solution: Consistently use "Vim script". (Hirohito Higashi) +Files: runtime/doc/if_mzsch.txt, runtime/doc/if_pyth.txt, + runtime/doc/syntax.txt, runtime/doc/usr_02.txt, + runtime/doc/version7.txt, src/Makefile, src/eval.c, + src/ex_getln.c, src/if_py_both.h, src/if_xcmdsrv.c, + src/testdir/Make_all.mak, src/testdir/runtest.vim, + src/testdir/test49.vim, src/testdir/test_vimscript.vim, + src/testdir/test_viml.vim + +Patch 8.0.0361 +Problem: GUI initialisation is not sufficiently tested. +Solution: Add the gui_init test. (Kazunobu Kuriyama) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Makefile, + src/testdir/gui_init.vim, src/testdir/setup_gui.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim, Filelist + +Patch 8.0.0362 (after 8.0.0361) +Problem: Tests fail on MS-Windows. +Solution: Use $*.vim instead of $<. +Files: src/testdir/Make_dos.mak + +Patch 8.0.0363 +Problem: Travis is too slow to keep up with patches. +Solution: Increase git depth to 20 +Files: .travis.yml + +Patch 8.0.0364 +Problem: ]s does not move cursor with two spell errors in one line. (Manuel + Ortega) +Solution: Don't stop search immediately when wrapped, search the line first. + (Ken Takata) Add a test. +Files: src/spell.c, src/Makefile, src/testdir/test_spell.vim, + src/testdir/Make_all.mak + +Patch 8.0.0365 +Problem: Might free a dict item that wasn't allocated. +Solution: Call dictitem_free(). (Nikolai Pavlov) Use this for + b:changedtick. +Files: src/dict.c, src/structs.h, src/buffer.c, src/edit.c, + src/evalfunc.c, src/ex_docmd.c, src/fileio.c, src/main.c, + src/memline.c, src/misc1.c, src/syntax.c + +Patch 8.0.0366 (after 8.0.0365) +Problem: Build fails with tiny features. +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 8.0.0367 +Problem: If configure defines _LARGE_FILES some include files are included + before it is defined. +Solution: Include vim.h first. (Sam Thursfield, closes #1508) +Files: src/gui_at_sb.c, src/gui_athena.c, src/gui_motif.c, src/gui_x11.c, + src/gui_xmdlg.c + +Patch 8.0.0368 +Problem: Not all options are tested with a range of values. +Solution: Generate a test script from the source code. +Files: Filelist, src/gen_opt_test.vim, src/testdir/test_options.vim, + src/Makefile + +Patch 8.0.0369 (after 8.0.0368) +Problem: The 'balloondelay', 'ballooneval' and 'balloonexpr' options are + not defined without the +balloon_eval feature. Testing that an + option value fails does not work for unsupported options. +Solution: Make the options defined but not supported. Don't test if + setting unsupported options fails. +Files: src/option.c, src/gen_opt_test.vim + +Patch 8.0.0370 +Problem: Invalid memory access when setting wildchar empty. +Solution: Avoid going over the end of the option value. (Dominique Pelle, + closes #1509) Make option test check all number options with + empty value. +Files: src/gen_opt_test.vim, src/option.c, src/testdir/test_options.vim + +Patch 8.0.0371 (after 8.0.0365) +Problem: Leaking memory when setting v:completed_item. +Solution: Or the flags instead of setting them. +Files: src/eval.c + +Patch 8.0.0372 +Problem: More options are not always defined. +Solution: Consistently define all possible options. +Files: src/option.c, src/testdir/test_expand_dllpath.vim + +Patch 8.0.0373 +Problem: Build fails without +folding. +Solution: Move misplaced #ifdef. +Files: src/option.c + +Patch 8.0.0374 +Problem: Invalid memory access when using :sc in Ex mode. (Dominique Pelle) +Solution: Avoid the column being negative. Also fix a hang in Ex mode. +Files: src/ex_getln.c, src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.0.0375 +Problem: The "+ register is not tested. +Solution: Add a test using another Vim instance to change the "+ register. + (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0376 +Problem: Size computations in spell file reading are not exactly right. +Solution: Make "len" a "long" and check with LONG_MAX. +Files: src/spellfile.c + +Patch 8.0.0377 +Problem: Possible overflow when reading corrupted undo file. +Solution: Check if allocated size is not too big. (King) +Files: src/undo.c + +Patch 8.0.0378 +Problem: Another possible overflow when reading corrupted undo file. +Solution: Check if allocated size is not too big. (King) +Files: src/undo.c + +Patch 8.0.0379 +Problem: CTRL-Z and mouse click use CTRL-O unnecessary. +Solution: Remove stuffing CTRL-O. (James McCoy, closes #1453) +Files: src/edit.c, src/normal.c + +Patch 8.0.0380 +Problem: With 'linebreak' set and 'breakat' includes ">" a double-wide + character results in "<<" displayed. +Solution: Check for the character not to be replaced. (Ozaki Kiichi, + closes #1456) +Files: src/screen.c, src/testdir/test_listlbr_utf8.vim + +Patch 8.0.0381 +Problem: Diff mode is not sufficiently tested. +Solution: Add more diff mode tests. (Dominique Pelle, closes #1515) +Files: src/testdir/test_diffmode.vim + +Patch 8.0.0382 (after 8.0.0380) +Problem: Warning in tiny build for unused variable. (Tony Mechelynck) +Solution: Add #ifdefs. +Files: src/screen.c + +Patch 8.0.0383 (after 8.0.0382) +Problem: Misplaced #ifdef. (Christ van Willegen) +Solution: Split assignment. +Files: src/screen.c + +Patch 8.0.0384 +Problem: Timer test failed for no apparent reason. +Solution: Mark the test as flaky. +Files: src/testdir/runtest.vim + +Patch 8.0.0385 +Problem: No tests for arabic. +Solution: Add a first test for arabic. (Dominique Pelle, closes #1518) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_arabic.vim + +Patch 8.0.0386 +Problem: Tiny build has a problem with generating the options test. +Solution: Change the "if" to skip over statements. +Files: src/gen_opt_test.vim + +Patch 8.0.0387 +Problem: compiler warnings +Solution: Add type casts. (Christian Brabandt) +Files: src/channel.c, src/memline.c + +Patch 8.0.0388 +Problem: filtering lines through "cat", without changing the line count, + changes manual folds. +Solution: Change how marks and folds are adjusted. (Matthew Malcomson, from + neovim #6194). +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.0.0389 +Problem: Test for arabic does not check what is displayed. +Solution: Improve what is asserted. (Dominique Pelle, closes #1523) + Add a first shaping test. +Files: src/testdir/test_arabic.vim + +Patch 8.0.0390 +Problem: When the window scrolls horizontally when the popup menu is + displayed part of it may not be cleared. (Neovim issue #6184) +Solution: Remove the menu when the windows scrolled. (closes #1524) +Files: src/edit.c + +Patch 8.0.0391 +Problem: Arabic support is verbose and not well tested. +Solution: Simplify the code. Add more tests. +Files: src/arabic.c, src/testdir/test_arabic.vim + +Patch 8.0.0392 +Problem: GUI test fails with Athena and Motif. +Solution: Add test_ignore_error(). Use it to ignore the "failed to create + input context" error. +Files: src/message.c, src/proto/message.pro, src/evalfunc.c, + src/testdir/test_gui.vim, runtime/doc/eval.txt + +Patch 8.0.0393 (after 8.0.0190) +Problem: When the same tag appears more than once, the order is + unpredictable. (Charles Campbell) +Solution: Besides using a dict for finding duplicates, use a grow array for + keeping the tags in sequence. +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.0.0394 +Problem: Tabs are not aligned when scrolling horizontally and a Tab doesn't + fit. (Axel Bender) +Solution: Handle a Tab as a not fitting character. (Christian Brabandt) + Also fix that ":redraw" does not scroll horizontally to show the + cursor. And fix the test that depended on the old behavior. +Files: src/screen.c, src/ex_docmd.c, src/testdir/test_listlbr.vim, + src/testdir/test_listlbr_utf8.vim, + src/testdir/test_breakindent.vim + +Patch 8.0.0395 (after 8.0.0392) +Problem: Testing the + register fails with Motif. +Solution: Also ignore the "failed to create input context" error in the + second gvim. Don't use msg() when it would result in a dialog. +Files: src/message.c, src/testdir/test_gui.vim, src/testdir/setup_gui.vim + +Patch 8.0.0396 +Problem: 'balloonexpr' only works synchronously. +Solution: Add balloon_show(). (Jusufadis Bakamovic, closes #1449) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/os_unix.c, + src/os_win32.c + +Patch 8.0.0397 (after 8.0.0392) +Problem: Cannot build with the viminfo feature but without the eval + feature. +Solution: Adjust #ifdef. (John Marriott) +Files: src/message.c, src/misc2.c + +Patch 8.0.0398 +Problem: Illegal memory access with "t". +Solution: Use strncmp() instead of memcmp(). (Dominique Pelle, closes #1528) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.0.0399 +Problem: Crash when using balloon_show() when not supported. (Hirohito + Higashi) +Solution: Check for balloonEval not to be NULL. (Ken Takata) +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.0.0400 +Problem: Some tests have a one second delay. +Solution: Add --not-a-term in RunVim(). +Files: src/testdir/shared.vim + +Patch 8.0.0401 +Problem: Test fails with missing balloon feature. +Solution: Add check for balloon feature. +Files: src/testdir/test_functions.vim + +Patch 8.0.0402 +Problem: :map completion does not have <special>. (Dominique Pelle) +Solution: Recognize <special> in completion. Add a test. +Files: src/getchar.c, src/testdir/test_cmdline.vim + +Patch 8.0.0403 +Problem: GUI tests may fail. +Solution: Ignore the E285 error better. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim, src/testdir/test_gui_init.vim + +Patch 8.0.0404 +Problem: Not enough testing for quickfix. +Solution: Add some more tests. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 8.0.0405 +Problem: v:progpath may become invalid after ":cd". +Solution: Turn v:progpath into a full path if needed. +Files: src/main.c, src/testdir/test_startup.vim, runtime/doc/eval.txt + +Patch 8.0.0406 +Problem: The arabic shaping code is verbose. +Solution: Shorten the code without changing the functionality. +Files: src/arabic.c + +Patch 8.0.0407 (after 8.0.0388) +Problem: Filtering folds with marker method not tested. +Solution: Also set 'foldmethod' to "marker". +Files: src/testdir/test_fold.vim + +Patch 8.0.0408 +Problem: Updating folds does not work properly when inserting a file and a + few other situations. +Solution: Adjust the way folds are updated. (Matthew Malcomson) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.0.0409 +Problem: set_progpath is defined but not always used +Solution: Adjust #ifdef. +Files: src/main.c + +Patch 8.0.0410 +Problem: Newer gettext/iconv library has extra dll file. +Solution: Add the file to the Makefile and nsis script. (Christian Brabandt) +Files: Makefile, nsis/gvim.nsi + +Patch 8.0.0411 +Problem: We can't change the case in menu entries, it breaks translations. +Solution: Ignore case when looking up a menu translation. +Files: src/menu.c, src/testdir/test_menu.vim + +Patch 8.0.0412 (after 8.0.0411) +Problem: Menu test fails on MS-Windows. +Solution: Use a menu entry with only ASCII characters. +Files: src/testdir/test_menu.vim + +Patch 8.0.0413 (after 8.0.0412) +Problem: Menu test fails on MS-Windows using gvim. +Solution: First delete the English menus. +Files: src/testdir/test_menu.vim + +Patch 8.0.0414 +Problem: Balloon eval is not tested. +Solution: Add a few balloon tests. (Kazunobu Kuriyama) +Files: src/testdir/test_gui.vim + +Patch 8.0.0415 (after 8.0.0414) +Problem: Balloon test fails on MS-Windows. +Solution: Test with 0x7fffffff instead of 0xffffffff. +Files: src/testdir/test_gui.vim + +Patch 8.0.0416 +Problem: Setting v:progpath is not quite right. +Solution: On MS-Windows add the extension. On Unix use the full path for a + relative directory. (partly by James McCoy, closes #1531) +Files: src/main.c, src/os_win32.c, src/os_unix.c + +Patch 8.0.0417 +Problem: Test for the clipboard fails sometimes. +Solution: Add it to the flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0418 +Problem: ASAN logs are disabled and don't cause a failure. +Solution: Enable ASAN logs and fail if not empty. (James McCoy, + closes #1425) +Files: .travis.yml + +Patch 8.0.0419 +Problem: Test for v:progpath fails on MS-Windows. +Solution: Expand to full path. Also add ".exe" when the path is an absolute + path. +Files: src/os_win32.c, src/main.c + +Patch 8.0.0420 +Problem: When running :make the output may be in the system encoding, + different from 'encoding'. +Solution: Add the 'makeencoding' option. (Ken Takata) +Files: runtime/doc/options.txt, runtime/doc/quickfix.txt, + runtime/doc/quickref.txt, src/Makefile, src/buffer.c, + src/if_cscope.c, src/main.c, src/option.c, src/option.h, + src/proto/quickfix.pro, src/quickfix.c, src/structs.h, + src/testdir/Make_all.mak, src/testdir/test_makeencoding.py, + src/testdir/test_makeencoding.vim + +Patch 8.0.0421 +Problem: Diff mode is displayed wrong when adding a line at the end of a + buffer. +Solution: Adjust marks in diff mode. (James McCoy, closes #1329) +Files: src/misc1.c, src/ops.c, src/testdir/test_diffmode.vim + +Patch 8.0.0422 +Problem: Python test fails with Python 3.6. +Solution: Convert new exception messages to old ones. (closes #1359) +Files: src/testdir/test87.in + +Patch 8.0.0423 +Problem: The effect of adding "#" to 'cinoptions' is not always removed. + (David Briscoe) +Solution: Reset b_ind_hash_comment. (Christian Brabandt, closes #1475) +Files: src/misc1.c, src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_cindent.vim, src/testdir/test3.in + +Patch 8.0.0424 +Problem: Compiler warnings on MS-Windows. (Ajit Thakkar) +Solution: Add type casts. +Files: src/os_win32.c + +Patch 8.0.0425 +Problem: Build errors when building without folding. +Solution: Add #ifdefs. (John Marriott) +Files: src/diff.c, src/edit.c, src/option.c, src/syntax.c + +Patch 8.0.0426 +Problem: Insufficient testing for statusline. +Solution: Add several tests. (Dominique Pelle, closes #1534) +Files: src/testdir/test_statusline.vim + +Patch 8.0.0427 +Problem: 'makeencoding' missing from the options window. +Solution: Add the entry. +Files: runtime/optwin.vim + +Patch 8.0.0428 +Problem: Git and hg see new files after running tests. (Manuel Ortega) +Solution: Add the generated file to .hgignore (or .gitignore). Delete the + resulting verbose file. (Christian Brabandt) Improve dependency + on opt_test.vim. Reset the 'more' option. +Files: .hgignore, src/gen_opt_test.vim, src/testdir/gen_opt_test.vim, + src/Makefile, src/testdir/Make_all.mak, src/testdir/Makefile, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + Filelist + +Patch 8.0.0429 +Problem: Options test does not always test everything. +Solution: Fix dependency for opt_test.vim. Give a message when opt_test.vim + was not found. +Files: src/testdir/test_options.vim, src/testdir/gen_opt_test.vim, + src/testdir/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 8.0.0430 +Problem: Options test fails or hangs on MS-Windows. +Solution: Run it separately instead of part of test_alot. Use "-S" instead + of "-u" to run the script. Fix failures. +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/Makefile, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/gen_opt_test.vim + +Patch 8.0.0431 +Problem: 'cinoptions' cannot set indent for extern block. +Solution: Add the "E" flag in 'cinoptions'. (Hirohito Higashi) +Files: runtime/doc/indent.txt, src/misc1.c, src/structs.h, + src/testdir/test_cindent.vim + +Patch 8.0.0432 +Problem: "make shadow" creates an invalid link. +Solution: Don't link "*.vim". (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 8.0.0433 +Problem: Quite a few beeps when running tests. +Solution: Set 'belloff' for these tests. (Christian Brabandt) +Files: src/testdir/test103.in, src/testdir/test14.in, + src/testdir/test29.in, src/testdir/test30.in, + src/testdir/test32.in, src/testdir/test45.in, + src/testdir/test72.in, src/testdir/test73.in, + src/testdir/test77.in, src/testdir/test78.in, + src/testdir/test85.in, src/testdir/test94.in, + src/testdir/test_alot.vim, src/testdir/test_alot_utf8.vim, + src/testdir/test_close_count.in, src/testdir/test_cmdline.vim, + src/testdir/test_diffmode.vim, src/testdir/test_digraph.vim, + src/testdir/test_erasebackword.in, src/testdir/test_normal.vim, + src/testdir/test_packadd.vim, src/testdir/test_search.vim, + src/testdir/test_textobjects.vim, src/testdir/test_undo.vim, + src/testdir/test_usercommands.vim, src/testdir/test_visual.vim + +Patch 8.0.0434 +Problem: Clang version not correctly detected. +Solution: Adjust the configure script. (Kazunobu Kuriyama) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.0435 +Problem: Some functions are not tested. +Solution: Add more tests for functions. (Dominique Pelle, closes #1541) +Files: src/testdir/test_functions.vim + +Patch 8.0.0436 +Problem: Running the options test sometimes resizes the terminal. +Solution: Clear out t_WS. +Files: src/testdir/gen_opt_test.vim + +Patch 8.0.0437 +Problem: The packadd test does not create the symlink correctly and does + not test the right thing. +Solution: Create the directory and symlink correctly. +Files: src/testdir/test_packadd.vim + +Patch 8.0.0438 +Problem: The fnamemodify test changes 'shell' in a way later tests may not + be able to use system(). +Solution: Save and restore 'shell'. +Files: src/testdir/test_fnamemodify.vim + +Patch 8.0.0439 +Problem: Using ":%argdel" while the argument list is already empty gives an + error. (Pavol Juhas) +Solution: Don't give an error. (closes #1546) +Files: src/ex_cmds2.c, src/testdir/test_arglist.vim + +Patch 8.0.0440 +Problem: Not enough test coverage in Insert mode. +Solution: Add lots of tests. Add test_override(). (Christian Brabandt, + closes #1521) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/edit.c, + src/evalfunc.c, src/globals.h, src/screen.c, + src/testdir/Make_all.mak, src/testdir/test_cursor_func.vim, + src/testdir/test_edit.vim, src/testdir/test_search.vim, + src/testdir/test_assert.vim, src/Makefile, src/testdir/runtest.vim + +Patch 8.0.0441 +Problem: Dead code in #ifdef. +Solution: Remove the #ifdef and #else part. +Files: src/option.c + +Patch 8.0.0442 +Problem: Patch shell command uses double quotes around the argument, which + allows for $HOME to be expanded. (Etienne) +Solution: Use single quotes on Unix. (closes #1543) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.0.0443 +Problem: Terminal width is set to 80 in test3. +Solution: Instead of setting 'columns' set 'wrapmargin' depending on + 'columns. +Files: src/testdir/test3.in + +Patch 8.0.0444 (after 8.0.0442) +Problem: Diffpatch fails when the file name has a quote. +Solution: Escape the name properly. (zetzei) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.0.0445 +Problem: Getpgid is not supported on all systems. +Solution: Add a configure check. +Files: src/configure.ac, src/auto/configure, src/config.h.in, + src/os_unix.c + +Patch 8.0.0446 +Problem: The ";" command does not work after characters with a lower byte + that is NUL. +Solution: Properly check for not having a previous character. (Hirohito + Higashi) +Files: src/Makefile, src/search.c, src/testdir/test_alot_utf8.vim, + src/testdir/test_charsearch_utf8.vim + +Patch 8.0.0447 +Problem: Getting font name does not work on X11. +Solution: Implement gui_mch_get_fontname() for X11. Add more GUI tests. + (Kazunobu Kuriyama) +Files: src/gui_x11.c, src/syntax.c, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Makefile, + src/testdir/gui_init.vim, src/testdir/gui_preinit.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim, + Filelist + +Patch 8.0.0448 +Problem: Some macros are in lower case, which can be confusing. +Solution: Make a few lower case macros upper case. +Files: src/macros.h, src/buffer.c, src/charset.c, src/ops.c, src/diff.c, + src/edit.c, src/evalfunc.c, src/ex_cmds.c, src/ex_getln.c, + src/fileio.c, src/fold.c, src/gui.c, src/gui_beval.c, src/main.c, + src/mark.c, src/misc1.c, src/move.c, src/normal.c, + src/option.c, src/popupmnu.c, src/regexp.c, src/screen.c, + src/search.c, src/spell.c, src/tag.c, src/ui.c, src/undo.c, + src/version.c, src/workshop.c, src/if_perl.xs + +Patch 8.0.0449 (after 8.0.0448) +Problem: Part of fold patch accidentally included. +Solution: Revert that part of the patch. +Files: src/ex_cmds.c + +Patch 8.0.0450 +Problem: v:progpath is not reliably set. +Solution: Read /proc/self/exe if possible. (idea by Michal Grochmal) + Also fixes missing #if. +Files: src/main.c, src/config.h.in + +Patch 8.0.0451 +Problem: Some macros are in lower case. +Solution: Make a few more macros upper case. Avoid lower case macros use an + argument twice. +Files: src/macros.h, src/charset.c, src/misc2.c, src/proto/misc2.pro, + src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/fold.c, + src/gui.c, src/gui_gtk.c, src/mark.c, src/memline.c, src/mbyte.c, + src/menu.c, src/message.c, src/misc1.c, src/ops.c, src/option.c, + src/os_amiga.c, src/os_mswin.c, src/os_unix.c, src/os_win32.c, + src/popupmnu.c, src/regexp.c, src/regexp_nfa.c, src/screen.c, + src/search.c, src/spell.c, src/spellfile.c, src/syntax.c, + src/tag.c, src/ui.c, src/undo.c, src/window.c + +Patch 8.0.0452 +Problem: Some macros are in lower case. +Solution: Make a few more macros upper case. +Files: src/vim.h, src/macros.h, src/evalfunc.c, src/fold.c, + src/gui_gtk.c, src/gui_gtk_x11.c, src/charset.c, src/diff.c, + src/edit.c, src/eval.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/gui.c, src/gui_w32.c, src/if_cscope.c, src/mbyte.c, + src/menu.c, src/message.c, src/misc1.c, src/misc2.c, src/normal.c, + src/ops.c, src/option.c, src/os_unix.c, src/os_win32.c, + src/quickfix.c, src/regexp.c, src/regexp_nfa.c, src/screen.c, + src/search.c, src/spell.c, src/syntax.c, src/tag.c, src/userfunc.c + +Patch 8.0.0453 +Problem: Adding fold marker creates new comment. +Solution: Use an existing comment if possible. (LemonBoy, closes #1549) +Files: src/ops.c, src/proto/ops.pro, src/fold.c, + src/testdir/test_fold.vim + +Patch 8.0.0454 +Problem: Compiler warnings for comparing unsigned char with 256 always + being true. (Manuel Ortega) +Solution: Add type cast. +Files: src/screen.c, src/charset.c + +Patch 8.0.0455 +Problem: The mode test may hang in Test_mode(). (Michael Soyka) +Solution: Set 'complete' to only search the current buffer (as suggested by + Michael) +Files: src/testdir/test_functions.vim + +Patch 8.0.0456 +Problem: Typo in MinGW test makefile. +Solution: Change an underscore to a dot. (Michael Soyka) +Files: src/testdir/Make_ming.mak + +Patch 8.0.0457 +Problem: Using :move messes up manual folds. +Solution: Split adjusting marks and folds. Add foldMoveRange(). (neovim + patch #6221) +Files: src/ex_cmds.c, src/fold.c, src/mark.c, src/proto/fold.pro, + src/proto/mark.pro src/testdir/test_fold.vim + +Patch 8.0.0458 +Problem: Potential crash if adding list or dict to dict fails. +Solution: Make sure the reference count is correct. (Nikolai Pavlov, closes + #1555) +Files: src/dict.c + +Patch 8.0.0459 (after 8.0.0457) +Problem: Old fix for :move messing up folding no longer needed, now that we + have a proper solution. +Solution: Revert patch 7.4.700. (Christian Brabandt) +Files: src/ex_cmds.c + +Patch 8.0.0460 (after 8.0.0452) +Problem: Can't build on HPUX. +Solution: Fix argument names in vim_stat(). (John Marriott) +Files: src/misc2.c + +Patch 8.0.0461 (after 8.0.0457) +Problem: Test 45 hangs on MS-Windows. +Solution: Reset 'shiftwidth'. Also remove redundant function. +Files: src/fold.c, src/testdir/test45.in + +Patch 8.0.0462 +Problem: If an MS-Windows tests succeeds at first and then fails in a way + it does not produce a test.out file it looks like the test + succeeded. +Solution: Delete the previous output file. +Files: src/testdir/Make_dos.mak + +Patch 8.0.0463 +Problem: Resetting 'compatible' in defaults.vim has unexpected side + effects. (David Fishburn) +Solution: Only reset 'compatible' if it was set. +Files: runtime/defaults.vim + +Patch 8.0.0464 +Problem: Can't find executable name on Solaris and FreeBSD. +Solution: Check for "/proc/self/path/a.out". (Danek Duvall) And for + "/proc/curproc/file". +Files: src/config.h.in, src/configure.ac, src/main.c, + src/auto/configure + +Patch 8.0.0465 +Problem: Off-by-one error in using :move with folding. +Solution: Correct off-by-one mistakes and add more tests. (Matthew + Malcomson) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.0.0466 +Problem: There are still a few macros that should be all-caps. +Solution: Make a few more macros all-caps. +Files: src/buffer.c, src/edit.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/farsi.c, src/fileio.c, + src/getchar.c, src/gui_beval.c, src/hardcopy.c, src/if_cscope.c, + src/if_xcmdsrv.c, src/mark.c, src/memline.c, src/menu.c, + src/message.c, src/misc1.c, src/normal.c, src/ops.c, src/option.c, + src/quickfix.c, src/screen.c, src/search.c, src/syntax.c, + src/tag.c, src/term.c, src/term.h, src/ui.c, src/undo.c, + src/userfunc.c, src/version.c, src/vim.h + +Patch 8.0.0467 +Problem: Using g< after :for does not show the right output. (Marcin + Szamotulski) +Solution: Call msg_sb_eol() in :echomsg. +Files: src/eval.c + +Patch 8.0.0468 +Problem: After aborting an Ex command g< does not work. (Marcin + Szamotulski) +Solution: Postpone clearing scrollback messages to until the command line + has been entered. Also fix that the screen isn't redrawn if after + g< the command line is cancelled. +Files: src/message.c, src/proto/message.pro, src/ex_getln.c, src/misc2.c, + src/gui.c + +Patch 8.0.0469 +Problem: Compiler warnings on MS-Windows. +Solution: Add type casts. (Christian Brabandt) +Files: src/fold.c + +Patch 8.0.0470 +Problem: Not enough testing for help commands. +Solution: Add a few more help tests. (Dominique Pelle, closes #1565) +Files: src/testdir/test_help.vim, src/testdir/test_help_tagjump.vim + +Patch 8.0.0471 +Problem: Exit callback test sometimes fails. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0472 +Problem: When a test fails and test.log is created, Test_edit_CTRL_I + matches it instead of test1.in. +Solution: Match with runtest.vim instead. +Files: src/testdir/test_edit.vim + +Patch 8.0.0473 +Problem: No test covering arg_all(). +Solution: Add a test expanding ##. +Files: src/testdir/test_arglist.vim + +Patch 8.0.0474 +Problem: The client-server feature is not tested. +Solution: Add a test. +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/shared.vim, + src/testdir/test_clientserver.vim, src/os_mswin.c + +Patch 8.0.0475 +Problem: Not enough testing for the client-server feature. +Solution: Add more tests. Add the remote_startserver() function. Fix that + a locally evaluated expression uses function-local variables. +Files: src/if_xcmdsrv.c, src/evalfunc.c, src/os_mswin.c, + src/proto/main.pro, src/testdir/test_clientserver.vim, + runtime/doc/eval.txt + +Patch 8.0.0476 (after 8.0.0475) +Problem: Missing change to main.c. +Solution: Add new function. +Files: src/main.c + +Patch 8.0.0477 +Problem: The client-server test may hang when failing. +Solution: Set a timer. Add assert_report() +Files: src/testdir/test_clientserver.vim, src/testdir/runtest.vim, + src/eval.c, src/evalfunc.c, src/proto/eval.pro, src/if_xcmdsrv.c, + src/os_mswin.c, runtime/doc/eval.txt + +Patch 8.0.0478 +Problem: Tests use assert_true(0) and assert_false(1) to report errors. +Solution: Use assert_report(). +Files: src/testdir/test_cscope.vim, src/testdir/test_expr.vim, + src/testdir/test_perl.vim, src/testdir/test_channel.vim, + src/testdir/test_cursor_func.vim, src/testdir/test_gui.vim, + src/testdir/test_menu.vim, src/testdir/test_popup.vim, + src/testdir/test_viminfo.vim, src/testdir/test_vimscript.vim, + src/testdir/test_assert.vim + +Patch 8.0.0479 +Problem: remote_peek() is not tested. +Solution: Add a test. +Files: src/testdir/test_clientserver.vim, src/testdir/runtest.vim + +Patch 8.0.0480 +Problem: The remote_peek() test fails on MS-Windows. +Solution: Check for pending messages. Also report errors in the first run if + a flaky test fails twice. +Files: src/os_mswin.c, src/testdir/runtest.vim + +Patch 8.0.0481 +Problem: Unnecessary if statement. +Solution: Remove the statement. Fix "it's" vs "its" mistakes. (Dominique + Pelle, closes #1568) +Files: src/syntax.c + +Patch 8.0.0482 +Problem: The setbufvar() function may mess up the window layout. (Kay Z.) +Solution: Do not check the window to be valid if it is NULL. +Files: src/window.c, src/testdir/test_functions.vim + +Patch 8.0.0483 +Problem: Illegal memory access when using :all. (Dominique Pelle) +Solution: Adjust the cursor position right after setting "curwin". +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.0.0484 +Problem: Using :lhelpgrep with an argument that should fail does not + produce an error if the previous :helpgrep worked. +Solution: Use another way to detect that autocommands made the quickfix info + invalid. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0485 +Problem: Not all windows commands are tested. +Solution: Add more tests for windows commands. (Dominique Pelle, + closes #1575) Run test_autocmd separately, it interferes with + other tests. Fix tests that depended on side effects. +Files: src/testdir/test_window_cmd.vim, src/testdir/test_alot.vim, + src/testdir/test_autocmd.vim, src/testdir/test_fnamemodify.vim, + src/testdir/test_functions.vim, src/testdir/test_delete.vim, + src/testdir/Make_all.mak + +Patch 8.0.0486 +Problem: Crash and endless loop when closing windows in a SessionLoadPost + autocommand. +Solution: Check for valid tabpage. (partly neovim #6308) +Files: src/testdir/test_autocmd.vim, src/fileio.c, src/proto/window.pro, + src/window.c + +Patch 8.0.0487 +Problem: The autocmd test hangs on MS-Windows. +Solution: Skip the hanging tests for now. +Files: src/testdir/test_autocmd.vim + +Patch 8.0.0488 +Problem: Running tests leaves an "xxx" file behind. +Solution: Delete the 'verbosefile' after resetting the option. +Files: src/testdir/gen_opt_test.vim + +Patch 8.0.0489 +Problem: Clipboard and "* register is not tested. +Solution: Add a test for Mac and X11. (Kazunobu Kuriyama) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/test_quotestar.vim, src/testdir/runtest.vim + +Patch 8.0.0490 +Problem: Splitting a 'winfixwidth' window vertically makes it one column + smaller. (Dominique Pelle) +Solution: Add one to the width for the separator. +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.0.0491 +Problem: The quotestar test fails when a required feature is missing. +Solution: Prepend "Skipped" to the thrown exception. +Files: src/testdir/test_quotestar.vim + +Patch 8.0.0492 +Problem: A failing client-server request can make Vim hang. +Solution: Add a timeout argument to functions that wait. +Files: src/evalfunc.c, src/if_xcmdsrv.c, src/proto/if_xcmdsrv.pro, + src/main.c, src/os_mswin.c, src/proto/os_mswin.pro, + src/vim.h, runtime/doc/eval.txt, src/testdir/test_clientserver.vim + +Patch 8.0.0493 +Problem: Crash with cd command with very long argument. +Solution: Check for running out of space. (Dominique Pelle, closes #1576) +Files: src/testdir/test_alot.vim, src/testdir/test_cd.vim, src/Makefile, + src/misc2.c + +Patch 8.0.0494 +Problem: Build failure with older compiler on MS-Windows. +Solution: Move declaration to start of block. +Files: src/evalfunc.c, src/main.c, src/os_mswin.c + +Patch 8.0.0495 +Problem: The quotestar test uses a timer instead of a timeout, thus it + cannot be rerun like a flaky test. +Solution: Remove the timer and add a timeout. (Kazunobu Kuriyama) +Files: src/testdir/test_quotestar.vim + +Patch 8.0.0496 +Problem: Insufficient testing for folding. +Solution: Add a couple more fold tests. (Dominique Pelle, closes #1579) +Files: src/testdir/test_fold.vim + +Patch 8.0.0497 +Problem: Arabic support is not fully tested. +Solution: Add more tests for the untested functions. Comment out + unreachable code. +Files: src/arabic.c, src/testdir/test_arabic.vim + +Patch 8.0.0498 +Problem: Two autocmd tests are skipped on MS-Windows. +Solution: Make the test pass on MS-Windows. Write the messages in a file + instead of getting the output of system(). +Files: src/testdir/test_autocmd.vim + +Patch 8.0.0499 +Problem: taglist() does not prioritize tags for a buffer. +Solution: Add an optional buffer argument. (Duncan McDougall, closes #1194) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/tag.pro, + src/Makefile, src/tag.c, src/testdir/test_alot.vim, + src/testdir/test_taglist.vim + +Patch 8.0.0500 +Problem: Quotestar test is still a bit flaky. +Solution: Add a slower check for v:version. +Files: src/testdir/test_quotestar.vim + +Patch 8.0.0501 +Problem: On MS-Windows ":!start" does not work as expected. +Solution: When creating a process fails try passing the argument to + ShellExecute(). (Katsuya Hino, closes #1570) +Files: runtime/doc/os_win32.txt, src/os_win32.c + +Patch 8.0.0502 +Problem: Coverity complains about possible NULL pointer. +Solution: Add an assert(), let's see if this works on all systems. +Files: src/window.c + +Patch 8.0.0503 +Problem: Endless loop in updating folds with 32 bit ints. +Solution: Subtract from LHS instead of add to the RHS. (Matthew Malcomson) +Files: src/fold.c + +Patch 8.0.0504 +Problem: Looking up an Ex command is a bit slow. +Solution: Instead of just using the first letter, also use the second letter + to skip ahead in the list of commands. Generate the table with a + Perl script. (Dominique Pelle, closes #1589) +Files: src/Makefile, src/create_cmdidxs.pl, src/ex_docmd.c, Filelist + +Patch 8.0.0505 +Problem: Failed window split for :stag not handled. (Coverity CID 99204) +Solution: If the split fails skip to the end. (bstaletic, closes #1577) +Files: src/tag.c + +Patch 8.0.0506 (after 8.0.0504) +Problem: Can't build with ANSI C. +Solution: Move declarations to start of block. +Files: src/ex_docmd.c + +Patch 8.0.0507 +Problem: Client-server tests fail when $DISPLAY is not set. +Solution: Check for E240 before running the test. +Files: src/testdir/test_quotestar.vim, src/testdir/test_clientserver.vim + +Patch 8.0.0508 +Problem: Coveralls no longer shows per-file coverage. +Solution: Add coverage from codecov.io. (Christian Brabandt) +Files: .travis.yml + +Patch 8.0.0509 +Problem: No link to codecov.io results. +Solution: Add a badge to the readme file. +Files: README.md + +Patch 8.0.0510 (after 8.0.0509) +Problem: Typo in link to codecov.io results. +Solution: Remove duplicate https:. +Files: README.md + +Patch 8.0.0511 +Problem: Message for skipping client-server tests is unclear. +Solution: Be more specific about what's missing (Hirohito Higashi, Kazunobu + Kuriyama) +Files: src/testdir/test_quotestar.vim, src/testdir/test_clientserver.vim + +Patch 8.0.0512 +Problem: Check for available characters takes too long. +Solution: Only check did_start_blocking if wtime is negative. (Daisuke + Suzuki, closes #1591) +Files: src/os_unix.c + +Patch 8.0.0513 (after 8.0.0201) +Problem: Getting name of cleared highlight group is wrong. (Matt Wozniski) +Solution: Only skip over cleared names for completion. (closes #1592) + Also fix that a cleared group causes duplicate completions. +Files: src/syntax.c, src/proto/syntax.pro, src/evalfunc.c, + src/ex_cmds.c, src/testdir/test_syntax.vim, + src/testdir/test_cmdline.vim + +Patch 8.0.0514 +Problem: Script for creating cmdidxs can be improved. +Solution: Count skipped lines instead of collecting the lines. Add "const". + (Dominique Pelle, closes #1594) +Files: src/create_cmdidxs.pl, src/ex_docmd.c + +Patch 8.0.0515 +Problem: ml_get errors in silent Ex mode. (Dominique Pelle) +Solution: Clear valid flags when setting the cursor. Set the topline when + not in full screen mode. +Files: src/ex_docmd.c, src/move.c, src/testdir/test_startup.vim + +Patch 8.0.0516 +Problem: A large count on a normal command causes trouble. (Dominique + Pelle) +Solution: Make "opcount" long. +Files: src/globals.h, src/testdir/test_normal.vim + +Patch 8.0.0517 +Problem: There is no way to remove quickfix lists (for testing). +Solution: Add the 'f' action to setqflist(). Add tests. (Yegappan + Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0518 +Problem: Storing a zero byte from a multibyte character causes fold text + to show up wrong. +Solution: Avoid putting zero in ScreenLines. (Christian Brabandt, + closes #1567) +Files: src/screen.c, src/testdir/test_display.vim + +Patch 8.0.0519 +Problem: Character classes are not well tested. They can differ between + platforms. +Solution: Add tests. In the documentation make clear which classes depend + on what library function. Only use :cntrl: and :graph: for ASCII. + (Kazunobu Kuriyama, Dominique Pelle, closes #1560) + Update the documentation. +Files: src/regexp.c, src/regexp_nfa.c, runtime/doc/pattern.txt, + src/testdir/test_regexp_utf8.vim + +Patch 8.0.0520 +Problem: Using a function pointer instead of the actual function, which we + know. +Solution: Change mb_ functions to utf_ functions when already checked for + Unicode. (Dominique Pelle, closes #1582) +Files: src/message.c, src/misc2.c, src/regexp.c, src/regexp_nfa.c, + src/screen.c, src/spell.c + +Patch 8.0.0521 +Problem: GtkForm handling is outdated. +Solution: Get rid of event filter functions. Get rid of GtkForm.width and + .height. Eliminate gtk_widget_size_request() calls. (Kazunobu + Kuriyama) +Files: src/gui_gtk_f.c, src/gui_gtk_f.h + +Patch 8.0.0522 +Problem: MS-Windows: when 'clipboard' is "unnamed" yyp does not work in a + :global command. +Solution: When setting the clipboard was postponed, do not clear the + register. +Files: src/ops.c, src/proto/ui.pro, src/ui.c, src/globals.h, + src/testdir/test_global.vim, src/Makefile, + src/testdir/test_alot.vim + +Patch 8.0.0523 +Problem: dv} deletes part of a multibyte character. (Urtica Dioica) +Solution: Include the whole character. +Files: src/search.c, src/testdir/test_normal.vim + +Patch 8.0.0524 (after 8.0.0518) +Problem: Folds are messed up when 'encoding' is "utf-8". +Solution: Also set the fold character when it's not multibyte. +Files: src/screen.c, src/testdir/test_display.vim + +Patch 8.0.0525 +Solution: Completion for user command argument not tested. +Problem: Add a test. +Files: src/testdir/test_cmdline.vim + +Patch 8.0.0526 +Problem: Coverity complains about possible negative value. +Solution: Check return value of ftell() not to be negative. +Files: src/os_unix.c + +Patch 8.0.0527 +Problem: RISC OS support was removed long ago, but one file is still + included. +Solution: Delete the file. (Thomas Dziedzic, closes #1603) +Files: Filelist, src/swis.s + +Patch 8.0.0528 +Problem: When 'wildmenu' is set and 'wildmode' has "longest" then the first + file name is highlighted, even though the text shows the longest + match. +Solution: Do not highlight the first match. (LemonBoy, closes #1602) +Files: src/ex_getln.c + +Patch 8.0.0529 +Problem: Line in test commented out. +Solution: Uncomment the lines for character classes that were failing before + 8.0.0519. (Dominique Pelle, closes #1599) +Files: src/testdir/test_regexp_utf8.vim + +Patch 8.0.0530 +Problem: Buffer overflow when 'columns' is very big. (Nikolai Pavlov) +Solution: Correctly compute where to truncate. Fix translation. + (closes #1600) +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.0.0531 (after 8.0.0530) +Problem: Test with long directory name fails on non-unix systems. +Solution: Skip the test on non-unix systems. +Files: src/testdir/test_edit.vim + +Patch 8.0.0532 (after 8.0.0531) +Problem: Test with long directory name fails on Mac. +Solution: Skip the test on Mac systems. +Files: src/testdir/test_edit.vim + +Patch 8.0.0533 +Problem: Abbreviation doesn't work after backspacing newline. (Hkonrk) +Solution: Set the insert start column. (closes #1609) +Files: src/testdir/test_mapping.vim, src/edit.c + +Patch 8.0.0534 +Problem: Defaults.vim does not work well with tiny features. (crd477) +Solution: When the +eval feature is not available always reset 'compatible'. +Files: runtime/defaults.vim + +Patch 8.0.0535 +Problem: Memory leak when exiting from within a user function. +Solution: Clear the function call stack on exit. +Files: src/userfunc.c + +Patch 8.0.0536 +Problem: Quickfix window not updated when freeing quickfix stack. +Solution: Update the quickfix window. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0537 +Problem: Illegal memory access with :z and large count. +Solution: Check for number overflow, using long instead of int. (Dominique + Pelle, closes #1612) +Files: src/Makefile, src/ex_cmds.c, src/testdir/test_alot.vim, + src/testdir/test_ex_z.vim + +Patch 8.0.0538 +Problem: No test for falling back to default term value. +Solution: Add a test. +Files: src/testdir/test_startup.vim + +Patch 8.0.0539 (after 8.0.0538) +Problem: Startup test fails on Mac. +Solution: Use another term name, "unknown" is known. Avoid a 2 second delay. +Files: src/testdir/test_startup.vim, src/main.c, src/proto/main.pro, + src/term.c + +Patch 8.0.0540 (after 8.0.0540) +Problem: Building unit tests fails. +Solution: Move params outside of #ifdef. +Files: src/main.c, src/message_test.c + +Patch 8.0.0541 +Problem: Compiler warning on MS-Windows. +Solution: Add a type cast. (Mike Williams) +Files: src/edit.c + +Patch 8.0.0542 +Problem: getpos() can return a negative line number. (haya14busa) +Solution: Handle a zero topline and botline. (closes #1613) +Files: src/eval.c, runtime/doc/eval.txt + +Patch 8.0.0543 +Problem: Test_edit causes older xfce4-terminal to close. (Dominique Pelle) +Solution: Reduce number of columns to 2000. Try to restore the window + position. +Files: src/testdir/test_edit.vim, src/evalfunc.c, src/term.c, + src/proto/term.pro, src/term.h + +Patch 8.0.0544 +Problem: Cppcheck warnings. +Solution: Use temp variable. Change NUL to NULL. Swap conditions. (Dominique + Pelle) +Files: src/channel.c, src/edit.c, src/farsi.c + +Patch 8.0.0545 +Problem: Edit test may fail on some systems. +Solution: If creating a directory with a very long path fails, bail out. +Files: src/testdir/test_edit.vim + +Patch 8.0.0546 +Problem: Swap file exists briefly when opening the command window. +Solution: Set the noswapfile command modifier before splitting the window. + (James McCoy, closes #1620) +Files: src/ex_getln.c, src/option.c + +Patch 8.0.0547 +Problem: Extra line break in verbosefile when using ":echomsg". (Ingo + Karkat) +Solution: Don't call msg_start(). (closes #1618) +Files: src/eval.c, src/testdir/test_cmdline.vim + +Patch 8.0.0548 +Problem: Saving the redo buffer only works one time, resulting in the "." + command not working well for a function call inside another + function call. (Ingo Karkat) +Solution: Save the redo buffer at every user function call. (closes #1619) +Files: src/getchar.c, src/proto/getchar.pro, src/structs.h, + src/fileio.c, src/userfunc.c, src/testdir/test_functions.vim + +Patch 8.0.0549 +Problem: No test for the 8g8 command. +Solution: Add a test. (Dominique Pelle, closes #1615) +Files: src/testdir/test_normal.vim + +Patch 8.0.0550 +Problem: Some etags format tags file use 0x01, breaking the parsing. +Solution: Use 0x02 for TAG_SEP. (James McCoy, closes #1614) +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.0.0551 +Problem: The typeahead buffer is reallocated too often. +Solution: Re-use the existing buffer if possible. +Files: src/getchar.c + +Patch 8.0.0552 +Problem: Toupper and tolower don't work properly for Turkish when 'casemap' + is empty. (Bjorn Linse) +Solution: Check the 'casemap' options when deciding how to upper/lower case. +Files: src/charset.c, src/testdir/test_normal.vim + +Patch 8.0.0553 (after 8.0.0552) +Problem: Toupper/tolower test with Turkish locale fails on Mac. +Solution: Skip the test on Mac. +Files: src/testdir/test_normal.vim + +Patch 8.0.0554 (after 8.0.0552) +Problem: Toupper and tolower don't work properly for Turkish when 'casemap' + contains "keepascii". (Bjorn Linse) +Solution: When 'casemap' contains "keepascii" use ASCII toupper/tolower. +Files: src/charset.c, src/testdir/test_normal.vim + +Patch 8.0.0555 (after 8.0.0552) +Problem: Toupper/tolower test fails on OSX without Darwin. +Solution: Skip that part of the test also for OSX. (Kazunobu Kuriyama) +Files: src/testdir/test_normal.vim + +Patch 8.0.0556 +Problem: Getting the window position fails if both the GUI and term + code is built in. +Solution: Return after getting the GUI window position. (Kazunobu Kuriyama) +Files: src/evalfunc.c + +Patch 8.0.0557 +Problem: GTK: using static gravities is not useful. +Solution: Remove setting static gravities. (Kazunobu Kuriyama) +Files: src/gui_gtk_f.c + +Patch 8.0.0558 +Problem: The :ownsyntax command is not tested. +Solution: Add a test. (Dominique Pelle, closes #1622) +Files: src/testdir/test_syntax.vim + +Patch 8.0.0559 +Problem: Setting 'ttytype' to xxx does not always fail as expected. (Marvin + Schmidt) +Solution: Catch both possible errors. (closes #1601) +Files: src/testdir/test_options.vim + +Patch 8.0.0560 +Problem: :windo allows for ! but it's not supported. +Solution: Disallow passing !. (Hirohito Higashi) +Files: src/ex_cmds.h + +Patch 8.0.0561 +Problem: Undefined behavior when using backslash after empty line. +Solution: Check for an empty line. (Dominique Pelle, closes #1631) +Files: src/misc2.c, src/testdir/test_vimscript.vim + +Patch 8.0.0562 +Problem: Not enough test coverage for syntax commands. +Solution: Add a few more tests. (Dominique Pelle, closes #1624) +Files: src/testdir/test_cmdline.vim, src/testdir/test_syntax.vim + +Patch 8.0.0563 +Problem: Crash when getting the window position in tmux. (Marvin Schmidt) +Solution: Add t_GP to the list of terminal options. (closes #1627) +Files: src/option.c + +Patch 8.0.0564 +Problem: Cannot detect Bazel BUILD files on some systems. +Solution: Check for BUILD after script checks. (Issue #1340) +Files: runtime/filetype.vim + +Patch 8.0.0565 +Problem: Using freed memory in :caddbuf after clearing quickfix list. + (Dominique Pelle) +Solution: Set qf_last to NULL. +Files: src/quickfix.c + +Patch 8.0.0566 +Problem: Setting 'nocompatible' for the tiny version moves the cursor. +Solution: Use another trick to skip commands when the +eval feature is + present. (Christian Brabandt, closes #1630) +Files: runtime/defaults.vim + +Patch 8.0.0567 +Problem: Call for requesting color and ambiwidth is too early. (Hirohito + Higashi) +Solution: Move the call down to below resetting "starting". +Files: src/main.c + +Patch 8.0.0568 +Problem: "1gd" may hang. +Solution: Don't get stuck in one position. (Christian Brabandt, closes #1643) +Files: src/testdir/test_goto.vim, src/normal.c + +Patch 8.0.0569 +Problem: Bracketed paste is still enabled when executing a shell command. + (Michael Smith) +Solution: Disable bracketed paste when going into cooked mode. (closes #1638) +Files: src/term.c + +Patch 8.0.0570 +Problem: Can't run make with several jobs, creating directories has a race + condition. +Solution: Use the MKDIR_P autoconf mechanism. (Eric N. Vander Weele, + closes #1639) +Files: src/configure.ac, src/auto/configure, src/Makefile, + src/config.mk.in, src/install-sh, src/mkinstalldirs, Filelist + +Patch 8.0.0571 +Problem: The cursor line number becomes negative when using :z^ in an empty + buffer. (neovim #6557) +Solution: Correct the line number. Also reset the column. +Files: src/testdir/test_ex_z.vim, src/ex_cmds.c + +Patch 8.0.0572 +Problem: Building the command table requires Perl. +Solution: Use a Vim script solution. (Dominique Pelle, closes #1641) +Files: src/Makefile, src/create_cmdidxs.pl, src/create_cmdidxs.vim, + src/ex_cmdidxs.h, src/ex_docmd.c, Filelist + +Patch 8.0.0573 +Problem: Running parallel make after distclean fails. (Manuel Ortega) +Solution: Instead of using targets "scratch config myself" use "reconfig". +Files: src/Makefile, src/config.mk.dist + +Patch 8.0.0574 +Problem: Get only one quickfix list after :caddbuf. +Solution: Reset qf_multiline. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0575 +Problem: Using freed memory when resetting 'indentexpr' while evaluating + it. (Dominique Pelle) +Solution: Make a copy of 'indentexpr'. +Files: src/misc1.c, src/testdir/test_options.vim + +Patch 8.0.0576 (after 8.0.0570 and 8.0.0573) +Problem: Can't build when configure chooses "install-sh". (Daniel Hahler) +Solution: Always use install-sh. Fix remaining use of mkinstalldirs. + (closes #1647) +Files: src/installman.sh, src/installml.sh, src/config.mk.in, + src/configure.ac, src/auto/configure, src/Makefile + +Patch 8.0.0577 (after 8.0.0575) +Problem: Warning for uninitialized variable. (John Marriott) +Solution: Initialize "indent". +Files: src/misc1.c + +Patch 8.0.0578 +Problem: :simalt on MS-Windows does not work properly. +Solution: Put something in the typeahead buffer. (Christian Brabandt) +Files: src/gui_w32.c + +Patch 8.0.0579 +Problem: Duplicate test case for quickfix. +Solution: Remove the function. (Yegappan Lakshmanan) +Files: src/testdir/test_quickfix.vim + +Patch 8.0.0580 +Problem: Cannot set the valid flag with setqflist(). +Solution: Add the "valid" argument. (Yegappan Lakshmanan, closes #1642) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0581 +Problem: Moving folded text is sometimes not correct. +Solution: Bail out when "move_end" is zero. (Matthew Malcomson) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.0.0582 +Problem: Illegal memory access with z= command. (Dominique Pelle) +Solution: Avoid case folded text to be longer than the original text. Use + MB_PTR2LEN() instead of MB_BYTE2LEN(). +Files: src/spell.c, src/testdir/test_spell.vim + +Patch 8.0.0583 +Problem: Fold test hangs on MS-Windows. +Solution: Avoid overflow in compare. +Files: src/fold.c + +Patch 8.0.0584 +Problem: Memory leak when executing quickfix tests. +Solution: Free the list reference. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.0585 +Problem: Test_options fails when run in the GUI. +Solution: Also check the 'imactivatekey' value when the GUI is not running. + Specify test values that work and that fail. +Files: src/option.c, src/testdir/gen_opt_test.vim + +Patch 8.0.0586 +Problem: No test for mapping timing out. +Solution: Add a test. +Files: src/testdir/test_mapping.vim + +Patch 8.0.0587 +Problem: Configure check for return value of tgetent is skipped. +Solution: Always perform the check. (Marvin Schmidt, closes #1664) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.0588 +Problem: job_stop() often assumes the channel will be closed, while the job + may not actually be stopped. (Martin Gammels忙ter) +Solution: Only assume the job stops on "kill". Don't send a signal if the + job has already ended. (closes #1632) +Files: src/channel.c + +Patch 8.0.0589 (after 8.0.0578) +Problem: :simalt still does not work. +Solution: Use K_NOP instead of K_IGNORE. (Christian Brabandt) +Files: src/gui_w32.c + +Patch 8.0.0590 +Problem: Cannot add a context to locations. +Solution: Add the "context" entry in location entries. (Yegappan Lakshmanan, + closes #1012) +Files: src/eval.c, src/proto/quickfix.pro, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0591 +Problem: Changes to eval functionality not documented. +Solution: Include all the changes. +Files: runtime/doc/eval.txt + +Patch 8.0.0592 +Problem: If a job writes to a buffer and the user is typing a command, the + screen isn't updated. When a message is displayed the changed + buffer may cause it to be cleared. (Ramel Eshed) +Solution: Update the screen and then the command line if the screen didn't + scroll. Avoid inserting screen lines, as it clears any message. + Update the status line when the buffer changed. +Files: src/channel.c, src/screen.c, src/ex_getln.c, src/globals.h, + src/vim.h, src/proto/ex_getln.pro, src/proto/screen.pro + +Patch 8.0.0593 +Problem: Duplication of code for adding a list or dict return value. +Solution: Add rettv_dict_set() and rettv_list_set(). (Yegappan Lakshmanan) +Files: src/dict.c, src/eval.c, src/evalfunc.c, src/if_perl.xs, src/list.c, + src/proto/dict.pro, src/proto/list.pro + +Patch 8.0.0594 (after 8.0.0592) +Problem: Build failure when windows feature is missing. +Solution: Add #ifdef. +Files: src/screen.c + +Patch 8.0.0595 (after 8.0.0590) +Problem: Coverity warning for not checking return value of dict_add(). +Solution: Check the return value for FAIL. +Files: src/quickfix.c + +Patch 8.0.0596 +Problem: Crash when complete() is called after complete_add() in + 'completefunc'. (Lifepillar) +Solution: Bail out if compl_pattern is NULL. (closes #1668) + Also avoid using freed memory. +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0597 +Problem: Off-by-one error in buffer size computation. +Solution: Use ">=" instead of ">". (LemonBoy, closes #1694) +Files: src/quickfix.c + +Patch 8.0.0598 +Problem: Building with gcc 7.1 yields new warnings. +Solution: Initialize result. (John Marriott) +Files: src/ex_docmd.c + +Patch 8.0.0599 +Problem: diff mode is insufficiently tested +Solution: Add more test cases. (Dominique Pelle, closes #1685) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.0.0600 +Problem: test_recover fails on some systems. +Solution: Explicitly check if "/" is writable. (Ken Takata) +Files: src/testdir/test_recover.vim + +Patch 8.0.0601 +Problem: No test coverage for :spellrepall. +Solution: Add a test. (Dominique Pelle, closes #1717) +Files: src/testdir/test_spell.vim + +Patch 8.0.0602 +Problem: When gF fails to edit the file the cursor still moves to the found + line number. +Solution: Check the return value of do_ecmd(). (Michael Hwang) +Files: src/normal.c, src/testdir/test_gf.vim + +Patch 8.0.0603 (after 8.0.0602) +Problem: gF test fails on MS-Windows. +Solution: Use @ instead of : before the line number +Files: src/testdir/test_gf.vim + +Patch 8.0.0604 (after 8.0.0603) +Problem: gF test still fails on MS-Windows. +Solution: Use : before the line number and remove it from 'isfname'. +Files: src/testdir/test_gf.vim + +Patch 8.0.0605 +Problem: The buffer that quickfix caches for performance may become + invalid. (Daniel Hahler) +Solution: Reset qf_last_bufref in qf_init_ext(). (Daniel Hahler, + closes #1728, closes #1676) +Files: src/quickfix.c + +Patch 8.0.0606 +Problem: Cannot set the context for a specified quickfix list. +Solution: Use the list index instead of the current list. (Yegappan + Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.0607 +Problem: When creating a bufref, then using :bwipe and :new it might get + the same memory and bufref_valid() returns true. +Solution: Add br_fnum to check the buffer number didn't change. +Files: src/structs.h, src/buffer.c, src/globals.h, src/if_py_both.h, + src/quickfix.c + +Patch 8.0.0608 +Problem: Cannot manipulate other than the current quickfix list. +Solution: Pass the list index to quickfix functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.0609 +Problem: For some people the hint about quitting is not sufficient. +Solution: Put <Enter> separately. Also use ":qa!" to get out even when + there are changes. +Files: src/normal.c + +Patch 8.0.0610 +Problem: The screen is redrawn when t_BG is set and used to detect the + value for 'background'. +Solution: Don't redraw when the value of 'background' didn't change. +Files: src/term.c + +Patch 8.0.0611 +Problem: When t_u7 is sent a few characters in the second screen line are + overwritten and not redrawn later. (Rastislav Barlik) +Solution: Move redrawing the screen to after overwriting the characters. +Files: src/main.c, src/term.c + +Patch 8.0.0612 +Problem: Package directories are added to 'runtimepath' only after loading + non-package plugins. +Solution: Split off the code to add package directories to 'runtimepath'. + (Ingo Karkat, closes #1680) +Files: src/ex_cmds2.c, src/globals.h, src/main.c, src/proto/ex_cmds2.pro, + src/testdir/test_startup.vim + +Patch 8.0.0613 +Problem: The conf filetype detection is done before ftdetect scripts from + packages that are added later. +Solution: Add the FALLBACK argument to :setfiletype. (closes #1679, + closes #1693) +Files: src/ex_docmd.c, runtime/filetype.vim, src/Makefile, + src/testdir/test_filetype.vim, src/testdir/test_alot.vim + +Patch 8.0.0614 +Problem: float2nr() is not exactly right. +Solution: Make float2nr() more accurate. Turn test65 into a new style test. + (Hirohito Higashi, closes #1688) +Files: src/Makefile, src/evalfunc.c, src/testdir/Make_all.mak, + src/testdir/Make_vms.mms, src/testdir/test65.in, + src/testdir/test65.ok, src/testdir/test_float_func.vim, + src/testdir/test_vimscript.vim, src/macros.h + +Patch 8.0.0615 +Problem: Using % with :hardcopy wrongly escapes spaces. (Alexey Muranov) +Solution: Expand % differently. (Christian Brabandt, closes #1682) +Files: src/ex_docmd.c, src/testdir/test_hardcopy.vim + + +Patch 8.0.0616 +Problem: When setting the cterm background with ":hi Normal" the value of + 'background' may be set wrongly. +Solution: Check that the color is less than 16. Don't set 'background' when + it was set explicitly. (LemonBoy, closes #1710) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.0.0617 (after 8.0.0615) +Problem: Hardcopy test hangs on MS-Windows. +Solution: Check the postscript feature is supported. +Files: src/testdir/test_hardcopy.vim + +Patch 8.0.0618 +Problem: NFA regex engine handles [0-z] incorrectly. +Solution: Return at the right point. (James McCoy, closes #1703) +Files: src/regexp_nfa.c, src/testdir/test36.in, src/testdir/test36.ok + +Patch 8.0.0619 +Problem: In the GUI, when a timer uses feedkeys(), it still waits for an + event. (Raymond Ko) +Solution: Check tb_change_cnt in one more place. +Files: src/gui.c + +Patch 8.0.0620 +Problem: Since we only support GTK versions that have it, the check for + HAVE_GTK_MULTIHEAD is no longer needed. +Solution: Remove HAVE_GTK_MULTIHEAD. (Kazunobu Kuriyama) +Files: src/config.h.in, src/configure.ac, src/auto/configure, + src/gui_beval.c, src/gui_gtk_x11.c, src/mbyte.c + +Patch 8.0.0621 +Problem: The ":stag" command does not respect 'switchbuf'. +Solution: Check 'switchbuf' for tag commands that may open a new window. + (Ingo Karkat, closes #1681) Define macros for the return values + of getfile(). +Files: src/tag.c, src/testdir/test_tagjump.vim, src/vim.h, src/buffer.c, + src/ex_cmds.c, src/search.c, + +Patch 8.0.0622 +Problem: Using a text object to select quoted text fails when 'selection' + is set to "exclusive". (Guraga) +Solution: Swap cursor and visual start position. (Christian Brabandt, + closes #1687) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.0.0623 +Problem: The message "Invalid range" is used for multiple errors. +Solution: Add two more specific error messages. (Itchyny, Ken Hamada) +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test_regexp_utf8.vim + +Patch 8.0.0624 (after 8.0.0623) +Problem: Warning for unused variable in tiny build. (Tony Mechelynck) +Solution: Add an #ifdef. +Files: src/regexp.c + +Patch 8.0.0625 +Problem: shellescape() always escapes a newline, which does not work with + some shells. (Harm te Hennepe) +Solution: Only escape a newline when the "special" argument is non-zero. + (Christian Brabandt, closes #1590) +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.0.0626 +Problem: In the GUI the cursor may flicker. +Solution: Check the cmd_silent flag before updating the cursor shape. + (Hirohito Higashi, closes #1637) +Files: src/getchar.c + +Patch 8.0.0627 +Problem: When 'wrapscan' is off "gn" does not select the whole pattern when + it's the last one in the text. (KeyboardFire) +Solution: Check if the search fails. (Christian Brabandt, closes #1683) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.0.0628 (after 8.0.0626) +Problem: Cursor disappears after silent mapping. (Ramel Eshed) +Solution: Do restore the cursor when it was changed, but don't change it in + the first place for a silent mapping. +Files: src/getchar.c + + +Patch 8.0.0629 (after 8.0.0611) +Problem: Checking for ambiguous width is not working. (Hirohito Higashi) +Solution: Reset "starting" earlier. +Files: src/main.c + +Patch 8.0.0630 +Problem: The :global command does not work recursively, which makes it + difficult to execute a command on a line where one pattern matches + and another does not match. (Miles Cranmer) +Solution: Allow for recursion if it is for only one line. (closes #1760) +Files: src/ex_cmds.c, src/testdir/test_global.vim, runtime/doc/repeat.txt + +Patch 8.0.0631 +Problem: Perl 5.26 also needs S_TOPMARK and S_POPMARK defined. +Solution: Define the functions when needed. (Jesin, closes #1748) +Files: src/if_perl.xs + +Patch 8.0.0632 +Problem: The quotestar test is still a bit flaky. +Solution: Kill any existing server to make the retry work. Wait for the + register to be filled. +Files: src/testdir/test_quotestar.vim + +Patch 8.0.0633 +Problem: The client-server test is still a bit flaky. +Solution: Wait a bit for the GUI to start. Check that the version number + can be obtained. +Files: src/testdir/test_clientserver.vim + +Patch 8.0.0634 +Problem: Cannot easily get to the last quickfix list. +Solution: Add "$" as a value for the "nr" argument of getqflist() and + setqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0635 +Problem: When 'ignorecase' is set script detection is inaccurate. +Solution: Enforce matching case for text. (closes #1753) +Files: runtime/scripts.vim + +Patch 8.0.0636 +Problem: When reading the undo file fails may use uninitialized data. +Solution: Always clear the buffer on failure. +Files: src/undo.c + +Patch 8.0.0637 +Problem: Crash when using some version of GTK 3. +Solution: Add #ifdefs around incrementing the menu index. (Kazunobu + Kuriyama) +Files: src/gui_gtk.c + +Patch 8.0.0638 +Problem: Cannot build with new MSVC version VS2017. +Solution: Change the compiler arguments. (Leonardo Valeri Manera, + closes #1731, closes #1747) +Files: src/GvimExt/Makefile, src/Make_mvc.mak + +Patch 8.0.0639 +Problem: The cursor position is set to the last position in a new commit + message. +Solution: Don't set the position if the filetype matches "commit". + (Christian Brabandt) +Files: runtime/defaults.vim + +Patch 8.0.0640 +Problem: Mismatch between help and actual message for ":syn conceal". +Solution: Change the message to match the help. (Ken Takata) +Files: src/syntax.c + +Patch 8.0.0641 +Problem: Cannot set a separate highlighting for the current line in the + quickfix window. +Solution: Add QuickFixLine. (anishsane, closes #1755) +Files: src/option.c, src/quickfix.c, src/screen.c, src/syntax.c, + src/vim.h, runtime/doc/options.txt, runtime/doc/quickfix.txt + +Patch 8.0.0642 +Problem: writefile() continues after detecting an error. +Solution: Bail out as soon as an error is detected. (suggestions by Nikolai + Pavlov, closes #1476) +Files: src/evalfunc.c, src/testdir/test_writefile.vim + +Patch 8.0.0643 +Problem: When 'hlsearch' is set and matching with the last search pattern + is very slow, Vim becomes unusable. Cannot quit search by + pressing CTRL-C. +Solution: When the search times out set a flag and don't try again. Check + for timeout and CTRL-C in NFA loop that adds states. +Files: src/screen.c, src/ex_cmds.c, src/quickfix.c, src/regexp.c, + src/proto/regexp.pro, src/regexp.h, src/search.c, + src/proto/search.pro, src/syntax.c, src/regexp_nfa.c, src/spell.c, + src/tag.c, src/gui.c, src/edit.c, src/evalfunc.c, src/ex_docmd.c, + src/ex_getln.c, src/normal.c + +Patch 8.0.0644 +Problem: There is no test for 'hlsearch' timing out. +Solution: Add a test. +Files: src/testdir/test_hlsearch.vim + +Patch 8.0.0645 +Problem: The new regexp engine does not give an error for using a back + reference where it is not allowed. (Dominique Pelle) +Solution: Check the back reference like the old engine. (closes #1774) +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test_hlsearch.vim, + src/testdir/test_statusline.vim, + src/testdir/test_regexp_latin1.vim + +Patch 8.0.0646 +Problem: The hlsearch test fails on fast systems. +Solution: Make the search pattern slower. Fix that the old regexp engine + doesn't timeout properly. +Files: src/regexp.c, src/testdir/test_hlsearch.vim + +Patch 8.0.0647 +Problem: Syntax highlighting can cause a freeze. +Solution: Apply 'redrawtime' to syntax highlighting, per window. +Files: src/structs.h, src/screen.c, src/syntax.c, src/normal.c, + src/regexp.c, src/proto/syntax.pro, src/testdir/test_syntax.vim, + runtime/doc/options.txt + +Patch 8.0.0648 +Problem: Possible use of NULL pointer if buflist_new() returns NULL. + (Coverity) +Solution: Check for NULL pointer in set_bufref(). +Files: src/buffer.c + +Patch 8.0.0649 +Problem: When opening a help file the filetype is set several times. +Solution: When setting the filetype to the same value from a modeline, don't + trigger FileType autocommands. Don't set the filetype to "help" + when it's already set correctly. +Files: src/ex_cmds.c, src/option.c, runtime/filetype.vim + +Patch 8.0.0650 +Problem: For extra help files the filetype is set more than once. +Solution: In *.txt files check that there is no help file modline. +Files: runtime/filetype.vim + +Patch 8.0.0651 (after 8.0.0649) +Problem: Build failure without the auto command feature. +Solution: Add #ifdef. (closes #1782) +Files: src/ex_cmds.c + +Patch 8.0.0652 +Problem: Unicode information is outdated. +Solution: Update to Unicode 10. (Christian Brabandt) +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 8.0.0653 +Problem: The default highlight for QuickFixLine does not work for several + color schemes. (Manas Thakur) +Solution: Make the default use the old color. (closes #1780) +Files: src/syntax.c + +Patch 8.0.0654 +Problem: Text found after :endfunction is silently ignored. +Solution: Give a warning if 'verbose' is set. When | or \n are used, + execute the text as a command. +Files: src/testdir/test_vimscript.vim, src/userfunc.c, + runtime/doc/eval.txt + +Patch 8.0.0655 +Problem: Not easy to make sure a function does not exist. +Solution: Add ! as an optional argument to :delfunc. +Files: src/userfunc.c, src/ex_cmds.h, src/testdir/test_vimscript.vim + +Patch 8.0.0656 +Problem: Cannot use ! after some user commands. +Solution: Properly check for existing command. (Hirohito Higashi) +Files: src/ex_docmd.c, src/testdir/test_vimscript.vim + +Patch 8.0.0657 +Problem: Cannot get and set quickfix list items. +Solution: Add the "items" argument to getqflist() and setqflist(). (Yegappan + Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0658 +Problem: Spell test is old style. +Solution: Turn the spell test into a new style test (pschuh, closes #1778) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test58.in, src/testdir/test58.ok, + src/testdir/test_spell.vim + +Patch 8.0.0659 +Problem: No test for conceal mode. +Solution: Add a conceal mode test. (Dominique Pelle, closes #1783) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_syntax.vim + +Patch 8.0.0660 +Problem: Silent install on MS-Windows does show a dialog. +Solution: Add /SD to the default choice. (allburov, closes #1772) +Files: nsis/gvim.nsi + +Patch 8.0.0661 +Problem: Recognizing urxvt mouse codes does not work well. +Solution: Recognize "Esc[*M" and "Esc[*m". (Maurice Bos, closes #1486) +Files: src/keymap.h, src/misc2.c, src/os_unix.c, src/term.c + +Patch 8.0.0662 (after 8.0.0659) +Problem: Stray FIXME for fixed problem. +Solution: Remove the comment. (Dominique Pelle) +Files: src/testdir/test_syntax.vim + +Patch 8.0.0663 +Problem: Giving an error message only when 'verbose' set is unexpected. +Solution: Give a warning message instead. +Files: src/message.c, src/proto/message.pro, src/userfunc.c, + src/testdir/test_vimscript.vim, runtime/doc/eval.txt + +Patch 8.0.0664 (after 8.0.0661) +Problem: Mouse does not work in tmux. (lilydjwg) +Solution: Add flag for SGR release being present. +Files: src/term.c + +Patch 8.0.0665 (after 8.0.0661) +Problem: Warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize it. +Files: src/term.c + +Patch 8.0.0666 +Problem: Dead for loop. (Coverity) +Solution: Remove the for loop. +Files: src/term.c + +Patch 8.0.0667 +Problem: Memory access error when command follows :endfunction. (Nikolai + Pavlov) +Solution: Make memory handling in :function straightforward. (closes #1793) +Files: src/userfunc.c, src/testdir/test_vimscript.vim + +Patch 8.0.0668 (after 8.0.0660) +Problem: Nsis installer script does not work. (Christian Brabandt) +Solution: Fix the syntax of /SD. +Files: nsis/gvim.nsi + +Patch 8.0.0669 +Problem: In Insert mode, CTRL-N at start of the buffer does not work + correctly. (zuloloxi) +Solution: Wrap around the start of the buffer. (Christian Brabandt) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.0670 +Problem: Can't use input() in a timer callback. (Cosmin Popescu) +Solution: Reset vgetc_busy and set timer_busy. (Ozaki Kiichi, closes #1790, + closes #1129) +Files: src/evalfunc.c, src/ex_cmds2.c, src/globals.h, + src/testdir/test_timers.vim + +Patch 8.0.0671 +Problem: When a function invoked from a timer calls confirm() and the user + types CTRL-C then Vim hangs. +Solution: Reset typebuf_was_filled. (Ozaki Kiichi, closes #1791) +Files: src/getchar.c + +Patch 8.0.0672 +Problem: Third item of synconcealed() changes too often. (Dominique Pelle) +Solution: Reset the sequence number at the start of each line. +Files: src/syntax.c, src/testdir/test_syntax.vim, runtime/doc/eval.txt + +Patch 8.0.0673 (after 8.0.0673) +Problem: Build failure without conceal feature. +Solution: Add #ifdef. +Files: src/syntax.c + +Patch 8.0.0674 (after 8.0.0670) +Problem: Cannot build with eval but without timers. +Solution: Add #ifdef (John Marriott) +Files: src/evalfunc.c + +Patch 8.0.0675 +Problem: 'colorcolumn' has a higher priority than 'hlsearch', it should be + the other way around. (Nazri Ramliy) +Solution: Change the priorities. (LemonBoy, closes #1794) +Files: src/screen.c, src/testdir/test_listlbr_utf8.vim + +Patch 8.0.0676 +Problem: Crash when closing the quickfix window in a FileType autocommand + that triggers when the quickfix window is opened. +Solution: Save the new value before triggering the OptionSet autocommand. + Add the "starting" flag to test_override() to make the text work. +Files: src/evalfunc.c, src/option.c, runtime/doc/eval.txt + +Patch 8.0.0677 +Problem: Setting 'filetype' internally may cause the current buffer and + window to change unexpectedly. +Solution: Set curbuf_lock. (closes #1734) +Files: src/quickfix.c, src/ex_cmds.c, src/ex_getln.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0678 +Problem: When 'equalalways' is set and closing a window in a separate + frame, not all window sizes are adjusted. (Glacambre) +Solution: Resize all windows if the new current window is not in the same + frame as the closed window. (closes #1707) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.0.0679 (after 8.0.0678) +Problem: Using freed memory. +Solution: Get the parent frame pointer earlier. +Files: src/window.c + +Patch 8.0.0680 (after 8.0.0612) +Problem: Plugins in start packages are sourced twice. (mseplowitz) +Solution: Use the unmodified runtime path when loading plugins (test by Ingo + Karkat, closes #1801) +Files: src/testdir/test_startup.vim, src/main.c, src/ex_cmds2.c, + src/proto/ex_cmds2.pro + +Patch 8.0.0681 +Problem: Unnamed register only contains the last deleted text when + appending deleted text to a register. (Wolfgang Jeltsch) +Solution: Only set y_previous when not using y_append. (Christian Brabandt) +Files: src/ops.c, src/testdir/test_put.vim + +Patch 8.0.0682 +Problem: No test for synIDtrans(). +Solution: Add a test. (Dominique Pelle, closes #1796) +Files: src/testdir/test_syntax.vim + +Patch 8.0.0683 +Problem: When using a visual bell there is no delay, causing the flash to + be very short, possibly unnoticeable. Also, the flash and the + beep can lockup the UI when repeated often. +Solution: Do the delay in Vim or flush the output before the delay. Limit the + bell to once per half a second. (Ozaki Kiichi, closes #1789) +Files: src/misc1.c, src/proto/term.pro, src/term.c + +Patch 8.0.0684 +Problem: Old style tests are not nice. +Solution: Turn two tests into new style. (pschuh, closes #1797) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test82.in, src/testdir/test82.ok, + src/testdir/test90.in, src/testdir/test90.ok, + src/testdir/test_sha256.vim, src/testdir/test_utf8_comparisons.vim + +Patch 8.0.0685 +Problem: When making backups is disabled and conversion with iconv fails + the written file is truncated. (Luo Chen) +Solution: First try converting the file and write the file only when it did + not fail. (partly by Christian Brabandt) +Files: src/fileio.c, src/testdir/test_writefile.vim + +Patch 8.0.0686 +Problem: When typing CTRL-L in a window that's not the first one, another + redraw will happen later. (Christian Brabandt) +Solution: Reset must_redraw after calling screenclear(). +Files: src/screen.c + +Patch 8.0.0687 +Problem: Minor issues related to quickfix. +Solution: Set the proper return status for all cases in setqflist() and at + test cases for this. Move the "adding" flag outside of + FEAT_WINDOWS. Minor update to the setqflist() help text. (Yegappan + Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0688 +Problem: Cannot resize the window in a FileType autocommand. (Ingo Karkat) +Solution: Add the CMDWIN flag to :resize. (test by Ingo Karkat, + closes #1804) +Files: src/ex_cmds.h, src/testdir/test_quickfix.vim + +Patch 8.0.0689 +Problem: The ~ character is not escaped when adding to the search pattern + with CTRL-L. (Ramel Eshed) +Solution: Escape the character. (Christian Brabandt) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.0.0690 +Problem: Compiler warning on non-Unix system. +Solution: Add #ifdef. (John Marriott) +Files: src/term.c + +Patch 8.0.0691 +Problem: Compiler warning without the linebreak feature. +Solution: Add #ifdef. (John Marriott) +Files: src/edit.c + +Patch 8.0.0692 +Problem: Using CTRL-G with 'incsearch' and ? goes in the wrong direction. + (Ramel Eshed) +Solution: Adjust search_start. (Christian Brabandt) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.0.0693 +Problem: No terminal emulator support. Cannot properly run commands in the + GUI. Cannot run a job interactively with an ssh connection. +Solution: Very early implementation of the :terminal command. Includes + libvterm converted to ANSI C. Many parts still missing. +Files: src/feature.h, src/Makefile, src/configure.ac, src/auto/configure, + src/config.mk.in, src/config.h.in, src/terminal.c, src/structs.h, + src/ex_cmdidxs.h, src/ex_docmd.c, src/option.c, src/option.h, + src/evalfunc.c, src/proto/terminal.pro, src/proto.h, + runtime/doc/terminal.txt, runtime/doc/Makefile, Filelist, + src/libvterm/.bzrignore, src/libvterm/.gitignore, + src/libvterm/LICENSE, src/libvterm/README, src/libvterm/Makefile, + src/libvterm/tbl2inc_c.pl, src/libvterm/vterm.pc.in, + src/libvterm/bin/unterm.c, src/libvterm/bin/vterm-ctrl.c, + src/libvterm/bin/vterm-dump.c, src/libvterm/doc/URLs, + src/libvterm/doc/seqs.txt, src/libvterm/include/vterm.h, + src/libvterm/include/vterm_keycodes.h, + src/libvterm/src/encoding.c, + src/libvterm/src/encoding/DECdrawing.inc, + src/libvterm/src/encoding/DECdrawing.tbl, + src/libvterm/src/encoding/uk.inc, + src/libvterm/src/encoding/uk.tbl, src/libvterm/src/keyboard.c, + src/libvterm/src/mouse.c, src/libvterm/src/parser.c, + src/libvterm/src/pen.c, src/libvterm/src/rect.h, + src/libvterm/src/screen.c, src/libvterm/src/state.c, + src/libvterm/src/unicode.c, src/libvterm/src/utf8.h, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h, + src/libvterm/t/02parser.test, src/libvterm/t/03encoding_utf8.test, + src/libvterm/t/10state_putglyph.test, + src/libvterm/t/11state_movecursor.test, + src/libvterm/t/12state_scroll.test, + src/libvterm/t/13state_edit.test, + src/libvterm/t/14state_encoding.test, + src/libvterm/t/15state_mode.test, + src/libvterm/t/16state_resize.test, + src/libvterm/t/17state_mouse.test, + src/libvterm/t/18state_termprops.test, + src/libvterm/t/20state_wrapping.test, + src/libvterm/t/21state_tabstops.test, + src/libvterm/t/22state_save.test, + src/libvterm/t/25state_input.test, + src/libvterm/t/26state_query.test, + src/libvterm/t/27state_reset.test, + src/libvterm/t/28state_dbl_wh.test, + src/libvterm/t/29state_fallback.test, src/libvterm/t/30pen.test, + src/libvterm/t/40screen_ascii.test, + src/libvterm/t/41screen_unicode.test, + src/libvterm/t/42screen_damage.test, + src/libvterm/t/43screen_resize.test, + src/libvterm/t/44screen_pen.test, + src/libvterm/t/45screen_protect.test, + src/libvterm/t/46screen_extent.test, + src/libvterm/t/47screen_dbl_wh.test, + src/libvterm/t/48screen_termprops.test, + src/libvterm/t/90vttest_01-movement-1.test, + src/libvterm/t/90vttest_01-movement-2.test, + src/libvterm/t/90vttest_01-movement-3.test, + src/libvterm/t/90vttest_01-movement-4.test, + src/libvterm/t/90vttest_02-screen-1.test, + src/libvterm/t/90vttest_02-screen-2.test, + src/libvterm/t/90vttest_02-screen-3.test, + src/libvterm/t/90vttest_02-screen-4.test, + src/libvterm/t/92lp1640917.test, src/libvterm/t/harness.c, + src/libvterm/t/run-test.pl + +Patch 8.0.0694 +Problem: Building in shadow directory does not work. Running Vim fails. +Solution: Add the new libvterm directory. Add missing change in command + list. +Files: src/Makefile, src/ex_cmds.h + +Patch 8.0.0695 +Problem: Missing dependencies breaks parallel make. +Solution: Add dependencies for terminal.o. +Files: src/Makefile + +Patch 8.0.0696 +Problem: The .inc files are missing in git. (Nazri Ramliy) +Solution: Remove the .inc line from .gitignore. +Files: src/libvterm/.gitignore + +Patch 8.0.0697 +Problem: Recorded key sequences may become invalid. +Solution: Add back KE_SNIFF removed in 7.4.1433. Use fixed numbers for the + key_extra enum. +Files: src/keymap.h + +Patch 8.0.0698 +Problem: When a timer uses ":pyeval" or another Python command and it + happens to be triggered while exiting a Crash may happen. + (Ricky Zhou) +Solution: Avoid running a Python command after python_end() was called. + Do not trigger timers while exiting. (closes #1824) +Files: src/if_python.c, src/if_python3.c, src/ex_cmds2.c + +Patch 8.0.0699 +Problem: Checksum tests are not actually run. +Solution: Add the tests to the list. (Dominique Pelle, closes #1819) +Files: src/testdir/test_alot.vim, src/testdir/test_alot_utf8.vim + +Patch 8.0.0700 +Problem: Segfault with QuitPre autocommand closes the window. (Marek) +Solution: Check that the window pointer is still valid. (Christian Brabandt, + closes #1817) +Files: src/testdir/test_tabpage.vim, src/ex_docmd.c + +Patch 8.0.0701 +Problem: System test failing when using X11 forwarding. +Solution: Set $XAUTHORITY before changing $HOME. (closes #1812) + Also use a better check for the exit value. +Files: src/testdir/setup.vim, src/testdir/test_system.vim + +Patch 8.0.0702 +Problem: An error in a timer can make Vim unusable. +Solution: Don't set the error flag or exception from a timer. Stop a timer + if it causes an error 3 out of 3 times. Discard an exception + caused inside a timer. +Files: src/ex_cmds2.c, src/structs.h, src/testdir/test_timers.vim, + runtime/doc/eval.txt + +Patch 8.0.0703 +Problem: Illegal memory access with empty :doau command. +Solution: Check the event for being out of range. (James McCoy) +Files: src/testdir/test_autocmd.vim, src/fileio.c + +Patch 8.0.0704 +Problem: Problems with autocommands when opening help. +Solution: Avoid using invalid "varp" value. Allow using :wincmd if buffer + is locked. (closes #1806, closes #1804) +Files: src/option.c, src/ex_cmds.h + +Patch 8.0.0705 (after 8.0.0702) +Problem: Crash when there is an error in a timer callback. (Aron Griffis, + Ozaki Kiichi) +Solution: Check did_throw before discarding an exception. NULLify + current_exception when no longer valid. +Files: src/ex_eval.c, src/ex_cmds2.c + +Patch 8.0.0706 +Problem: Crash when cancelling the cmdline window in Ex mode. (James McCoy) +Solution: Do not set cmdbuff to NULL, make it empty. +Files: src/ex_getln.c + +Patch 8.0.0707 +Problem: Freeing wrong memory when manipulating buffers in autocommands. + (James McCoy) +Solution: Also set the w_s pointer if w_buffer was NULL. +Files: src/ex_cmds.c + +Patch 8.0.0708 +Problem: Some tests are old style. +Solution: Change a few tests from old style to new style. (pschuh, + closes #1813) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/main.aap, + src/testdir/test23.in, src/testdir/test23.ok, + src/testdir/test24.in, src/testdir/test24.ok, + src/testdir/test26.in, src/testdir/test26.ok, + src/testdir/test67.in, src/testdir/test67.ok, + src/testdir/test75.in, src/testdir/test75.ok, + src/testdir/test97.in, src/testdir/test97.ok, + src/testdir/test_comparators.in, src/testdir/test_comparators.ok, + src/testdir/test_comparators.vim, + src/testdir/test_escaped_glob.vim, + src/testdir/test_exec_while_if.vim, + src/testdir/test_exists_autocmd.vim, src/testdir/test_getcwd.in, + src/testdir/test_getcwd.ok, src/testdir/test_getcwd.vim, + src/testdir/test_maparg.vim, src/testdir/test_plus_arg_edit.vim, + src/testdir/test_regex_char_classes.vim + +Patch 8.0.0709 +Problem: Libvterm cannot use vsnprintf(), it does not exist in C90. +Solution: Use vim_vsnprintf() instead. +Files: src/message.c, src/Makefile, src/proto.h, src/evalfunc.c, + src/netbeans.c, src/libvterm/src/vterm.c + +Patch 8.0.0710 +Problem: A job that writes to a buffer clears command line completion. + (Ramel Eshed) +Solution: Do not redraw while showing the completion menu. +Files: src/screen.c + +Patch 8.0.0711 (after 8.0.0710) +Problem: Cannot build without the wildmenu feature. +Solution: Add #ifdef +Files: src/screen.c + +Patch 8.0.0712 +Problem: The terminal implementation is incomplete. +Solution: Add the 'termkey' option. +Files: src/option.c, src/option.h, src/structs.h + +Patch 8.0.0713 (after 8.0.0712) +Problem: 'termkey' option not fully implemented. +Solution: Add initialisation. +Files: src/option.c + +Patch 8.0.0714 +Problem: When a timer causes a command line redraw the " that is displayed + for CTRL-R goes missing. +Solution: Remember an extra character to display. +Files: src/ex_getln.c + +Patch 8.0.0715 +Problem: Writing to the wrong buffer if the buffer that a channel writes to + was closed. +Solution: Do not write to a buffer that was unloaded. +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel_write.py + +Patch 8.0.0716 +Problem: Not easy to start Vim cleanly without changing the viminfo file. + Not possible to know whether the -i command line flag was used. +Solution: Add the --clean command line argument. Add the 'viminfofile' + option. Add "-u DEFAULTS". +Files: src/main.c, runtime/doc/starting.txt, src/option.c, src/option.h, + src/ex_cmds.c, src/globals.h, runtime/doc/options.txt + +Patch 8.0.0717 +Problem: Terminal feature not included in :version output. +Solution: Add +terminal or -terminal. +Files: src/version.c, src/terminal.c + +Patch 8.0.0718 +Problem: Output of job in terminal is not displayed. +Solution: Connect the job output to the terminal. +Files: src/channel.c, src/proto/channel.pro, src/terminal.c, + src/proto/terminal.pro, src/channel.c, src/proto/channel.pro, + src/evalfunc.c, src/screen.c, src/proto/screen.pro + +Patch 8.0.0719 +Problem: Build failure without +terminal feature. +Solution: Add #ifdefs. +Files: src/screen.c, src/channel.c + +Patch 8.0.0720 +Problem: Unfinished mapping not displayed when running timer. +Solution: Also use the extra_char while waiting for a mapping and digraph. + (closes #1844) +Files: src/ex_getln.c + +Patch 8.0.0721 +Problem: :argedit can only have one argument. +Solution: Allow for multiple arguments. (Christian Brabandt) +Files: runtime/doc/editing.txt, src/ex_cmds.h, src/ex_cmds2.c, + src/testdir/test_arglist.vim + +Patch 8.0.0722 +Problem: Screen is messed by timer up at inputlist() prompt. +Solution: Set state to ASKMORE. (closes #1843) +Files: src/misc1.c + +Patch 8.0.0723 (after 8.0.0721) +Problem: Arglist test fails if file name case is ignored. +Solution: Wipe existing buffers, check for fname_case property. +Files: src/testdir/test_arglist.vim + +Patch 8.0.0724 +Problem: The message for yanking doesn't indicate the register. +Solution: Show the register name in the "N lines yanked" message. (LemonBoy, + closes #1803, closes #1809) +Files: src/ops.c, src/Makefile, src/testdir/test_registers.vim, + src/testdir/Make_all.mak + +Patch 8.0.0725 +Problem: A terminal window does not handle keyboard input. +Solution: Add terminal_loop(). ":term bash -i" sort of works now. +Files: src/main.c, src/terminal.c, src/proto/terminal.pro, src/normal.c + +Patch 8.0.0726 +Problem: Translations cleanup script is too conservative. +Solution: Also delete untranslated messages. +Files: src/po/cleanup.vim + +Patch 8.0.0727 +Problem: Message about what register to yank into is not translated. + (LemonBoy) +Solution: Add _(). +Files: src/ops.c + +Patch 8.0.0728 +Problem: The terminal structure is never freed. +Solution: Free the structure and unreference what it contains. +Files: src/terminal.c, src/buffer.c, src/proto/terminal.pro, + src/channel.c, src/proto/channel.pro, src/evalfunc.c + +Patch 8.0.0729 +Problem: The help for the terminal configure option is wrong. +Solution: Change "Disable" to "Enable". (E Kawashima, closes #1849) + Improve alignment. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.0730 +Problem: Terminal feature only supports Unix-like systems. +Solution: Prepare for adding an MS-Windows implementation. +Files: src/terminal.c + +Patch 8.0.0731 +Problem: Cannot build the terminal feature on MS-Windows. +Solution: Add the Makefile changes. (Yasuhiro Matsumoto, closes #1851) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.0732 +Problem: When updating a buffer for a callback the modeless selection is + lost. +Solution: Do not insert or delete screen lines when redrawing for a callback + and there is a modeless selection. +Files: src/screen.c + +Patch 8.0.0733 +Problem: Can only add entries to one list in the quickfix stack. +Solution: Move state variables from qf_list_T to qf_list_T. (Yegappan + Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.0734 +Problem: The script to check translations can be improved. +Solution: Restore the view when no errors are found. Check for matching + line break at the end of the message. (Christian Brabandt) +Files: src/po/check.vim + +Patch 8.0.0735 +Problem: There is no way to notice that the quickfix window contents has + changed. +Solution: Increment b:changedtick when updating the quickfix window. + (Yegappan Lakshmanan) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0736 +Problem: The OptionSet autocommand event is not triggered when entering + diff mode. +Solution: use set_option_value() instead of setting the option directly. + Change the tests from old to new style. (Christian Brabandt) +Files: src/diff.c, src/testdir/Make_all.mak, src/Makefile, + src/testdir/test_autocmd.vim, src/testdir/test_autocmd_option.in, + src/testdir/test_autocmd_option.ok + +Patch 8.0.0737 +Problem: Crash when X11 selection is very big. +Solution: Use static items instead of allocating them. Add callbacks. + (Ozaki Kiichi) +Files: src/testdir/shared.vim, src/testdir/test_quotestar.vim, + src/ui.c + +Patch 8.0.0738 +Problem: Cannot use the mouse to resize window while the focus is in a + terminal window. +Solution: Recognize nice mouse events in the terminal window. A few more + fixes for the terminal window. +Files: src/terminal.c + +Patch 8.0.0739 +Problem: Terminal resizing doesn't work well. +Solution: Resize the terminal to the Vim window and the other way around. + Avoid mapping typed keys. Set the environment properly. +Files: src/terminal.c, src/os_unix.c, src/structs.h + +Patch 8.0.0740 +Problem: Cannot resize a terminal window by the command running in it. +Solution: Add support for the window size escape sequence. Make BS work. +Files: src/terminal.c, src/libvterm/src/state.c + +Patch 8.0.0741 +Problem: Cannot build with HPUX. +Solution: Rename envbuf_TERM to envbuf_Term. (John Marriott) +Files: src/os_unix.c + +Patch 8.0.0742 +Problem: Terminal feature does not work on MS-Windows. +Solution: Use libvterm and libwinpty on MS-Windows. (Yasuhiro Matsumoto) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/channel.c, + src/proto/channel.pro, src/terminal.c + +Patch 8.0.0743 +Problem: The 'termsize' option can be set to an invalid value. +Solution: Check the 'termsize' option to be valid. +Files: src/option.c, src/testdir/gen_opt_test.vim + +Patch 8.0.0744 +Problem: A terminal window uses pipes instead of a pty. +Solution: Add pty support. +Files: src/structs.h, src/os_unix.c, src/terminal.c, src/channel.c, + src/proto/os_unix.pro, src/os_win32.c, src/proto/os_win32.pro + +Patch 8.0.0745 +Problem: multibyte characters in a terminal window are not displayed + properly. +Solution: Set the unused screen characters. (Yasuhiro Matsumoto, closes + #1857) +Files: src/terminal.c + +Patch 8.0.0746 +Problem: When :term fails the job is not properly cleaned up. +Solution: Free the terminal. Handle a job that failed to start. (closes + #1858) +Files: src/os_unix.c, src/channel.c, src/terminal.c + +Patch 8.0.0747 +Problem: :terminal without an argument doesn't work. +Solution: Use the 'shell' option. (Yasuhiro Matsumoto, closes #1860) +Files: src/terminal.c + +Patch 8.0.0748 +Problem: When running Vim in a terminal window it does not detect the right + number of colors available. +Solution: Detect the version string that libvterm returns. Pass the number + of colors in $COLORS. +Files: src/term.c, src/os_unix.c + +Patch 8.0.0749 +Problem: Some unicode digraphs are hard to remember. +Solution: Add alternatives with a backtick. (Chris Harding, closes #1861) +Files: src/digraph.c + +Patch 8.0.0750 +Problem: OpenPTY missing in non-GUI build. +Solution: Always include pty.c, add an #ifdef to skip over the contents. +Files: src/pty.c, src/Makefile + +Patch 8.0.0751 (after 8.0.0750) +Problem: OpenPTY missing with some combination of features. (Kazunobu + Kuriyama) +Solution: Adjust #ifdef. Also include pty.pro when needed. +Files: src/pty.c, src/misc2.c, src/proto.h + +Patch 8.0.0752 +Problem: Build fails on MS-Windows. +Solution: Change #ifdef for set_color_count(). +Files: src/term.c + +Patch 8.0.0753 +Problem: A job running in a terminal does not get notified of changes in + the terminal size. +Solution: Use ioctl() and SIGWINCH to report the terminal size. +Files: src/terminal.c, src/os_unix.c, src/proto/os_unix.pro + +Patch 8.0.0754 +Problem: Terminal window does not support colors. +Solution: Lookup the color attribute. +Files: src/terminal.c, src/syntax.c, src/proto/syntax.pro + +Patch 8.0.0755 +Problem: Terminal window does not have colors in the GUI. +Solution: Lookup the GUI color. +Files: src/terminal.c, src/syntax.c, src/proto/syntax.pro, src/term.c, + src/proto/term.pro, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, + src/gui_x11.c, src/proto/gui_x11.pro, src/gui_mac.c, + src/proto/gui_mac.pro, src/gui_photon.c, src/proto/gui_photon.pro, + src/gui_w32.c, src/proto/gui_w32.pro, + +Patch 8.0.0756 +Problem: Cannot build libvterm with MSVC. +Solution: Add an MSVC Makefile to libvterm. (Yasuhiro Matsumoto, closes + #1865) +Files: src/INSTALLpc.txt, src/Make_mvc.mak, src/libvterm/Makefile.msc + +Patch 8.0.0757 +Problem: Libvterm MSVC Makefile not included in the distribution. +Solution: Add the file to the list. +Files: Filelist + +Patch 8.0.0758 +Problem: Possible crash when using a terminal window. +Solution: Check for NULL pointers. (Yasuhiro Matsumoto, closes #1864) +Files: src/terminal.c + +Patch 8.0.0759 +Problem: MS-Windows: terminal does not adjust size to the Vim window size. +Solution: Add a call to winpty_set_size(). (Yasuhiro Matsumoto, closes #1863) +Files: src/terminal.c + +Patch 8.0.0760 +Problem: Terminal window colors wrong with 'termguicolors'. +Solution: Add 'termguicolors' support. +Files: src/terminal.c, src/syntax.c, src/proto/syntax.pro + +Patch 8.0.0761 +Problem: Options of a buffer for a terminal window are not set properly. +Solution: Add "terminal" value for 'buftype'. Make 'buftype' and + 'bufhidden' not depend on the quickfix feature. + Also set the buffer name and show "running" or "finished" in the + window title. +Files: src/option.c, src/terminal.c, src/proto/terminal.pro, + runtime/doc/options.txt, src/quickfix.c, src/proto/quickfix.pro, + src/structs.h, src/buffer.c, src/ex_docmd.c, src/fileio.c, + src/channel.c + +Patch 8.0.0762 +Problem: ml_get error with :psearch in buffer without a name. (Dominique + Pelle) +Solution: Use the buffer number instead of the file name. Check the cursor + position. +Files: src/search.c, src/testdir/test_preview.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.0763 +Problem: Libvterm can be improved. +Solution: Various small improvements, more comments. +Files: src/libvterm/README, src/libvterm/include/vterm.h, + src/libvterm/include/vterm_keycodes.h, + src/libvterm/src/keyboard.c, src/libvterm/src/parser.c, + src/libvterm/src/screen.c, src/libvterm/src/state.c + +Patch 8.0.0764 +Problem: 'termkey' does not work yet. +Solution: Implement 'termkey'. +Files: src/terminal.c, src/option.c, src/proto/option.pro + +Patch 8.0.0765 +Problem: Build fails with tiny features. +Solution: Adjust #ifdef. (John Marriott) +Files: src/option.c, src/option.h + +Patch 8.0.0766 +Problem: Option test fails with +terminal feature. +Solution: Fix using the right option when checking the value. +Files: src/option.c + +Patch 8.0.0767 +Problem: Build failure with Athena and Motif. +Solution: Move local variable declarations. (Kazunobu Kuriyama) +Files: src/gui_x11.c + +Patch 8.0.0768 +Problem: Terminal window status shows "[Scratch]". +Solution: Show "[Terminal]" when no title was set. (Yasuhiro Matsumoto) + Store the terminal title that vterm sends and use it. Update the + special buffer name. (closes #1869) +Files: src/terminal.c, src/proto/terminal.pro, src/buffer.c + +Patch 8.0.0769 +Problem: Build problems with terminal on MS-Windows using MSVC. +Solution: Remove stdbool.h dependency. Only use ScreenLinesUC when it was + allocated. Fix typos. (Ken Takata) +Files: src/libvterm/bin/vterm-ctrl.c, runtime/doc/terminal.txt, + src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/libvterm/Makefile.msc, src/terminal.c + +Patch 8.0.0770 +Problem: Compiler warning for missing field initializer. +Solution: Add two more values. (Yegappan Lakshmanan) +Files: src/libvterm/src/encoding.c + +Patch 8.0.0771 +Problem: Cursor in a terminal window not always updated in the GUI. +Solution: Call gui_update_cursor(). (Yasuhiro Matsumoto, closes #1868) +Files: src/terminal.c + +Patch 8.0.0772 +Problem: Other stdbool.h dependencies in libvterm. +Solution: Remove the dependency and use TRUE/FALSE/int. (Ken Takata) +Files: src/libvterm/include/vterm.h, src/libvterm/src/mouse.c, + src/libvterm/src/pen.c, src/libvterm/t/harness.c, + src/libvterm/bin/unterm.c + +Patch 8.0.0773 +Problem: Mixing 32 and 64 bit libvterm builds fails. +Solution: Use OUTDIR. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/libvterm/Makefile.msc + +Patch 8.0.0774 +Problem: Build failure without the multibyte feature on HPUX. +Solution: Move #ifdefs. (John Marriott) +Files: src/term.c + +Patch 8.0.0775 +Problem: In a terminal the cursor is updated too often. +Solution: Only flush when needed. (Yasuhiro Matsumoto). Remember whether the + cursor is visible. (closes #1873) +Files: src/terminal.c + +Patch 8.0.0776 +Problem: Function prototypes missing without the quickfix feature. (Tony + Mechelynck) +Solution: Move non-quickfix functions to buffer.c. +Files: src/buffer.c, src/proto/buffer.pro, src/quickfix.c, + src/proto/quickfix.pro + +Patch 8.0.0777 +Problem: Compiler warnings with 64 bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/libvterm/src/pen.c, src/libvterm/src/state.c, src/terminal.c + +Patch 8.0.0778 +Problem: In a terminal the cursor may be hidden and screen updating lags + behind. (Nazri Ramliy) +Solution: Switch the cursor on and flush output when needed. (Ozaki Kiichi) +Files: src/terminal.c + +Patch 8.0.0779 +Problem: :term without an argument uses empty buffer name but runs the + shell. +Solution: Change the command to the shell earlier. +Files: src/terminal.c + +Patch 8.0.0780 +Problem: Build failure on Travis. +Solution: Set distribution explicitly. Use Lua and Ruby dev. (Ken Takata, + closes #1884) +Files: .travis.yml + +Patch 8.0.0781 +Problem: MS-Windows: Memory leak when using :terminal. +Solution: Handle failures properly. (Ken Takata) +Files: src/terminal.c + +Patch 8.0.0782 +Problem: Using freed memory in quickfix code. (Dominique Pelle) +Solution: Handle a help window differently. (Yegappan Lakshmanan) +Files: src/buffer.c, src/proto/buffer.pro, src/quickfix.c, + src/testdir/test_quickfix.vim, src/ex_cmds.c, src/window.c + +Patch 8.0.0783 +Problem: Job of terminal may be freed too early. +Solution: Increment job refcount. (Yasuhiro Matsumoto) +Files: src/terminal.c + +Patch 8.0.0784 +Problem: Job of terminal may be garbage collected. +Solution: Set copyID on job in terminal. (Ozaki Kiichi) +Files: src/terminal.c, src/eval.c, src/proto/terminal.pro + +Patch 8.0.0785 +Problem: Wildcards are not expanded for :terminal. +Solution: Add FILES to the command flags. (Yasuhiro Matsumoto, closes #1883) + Also complete commands. +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 8.0.0786 +Problem: Build failures on Travis. +Solution: Go back to precise temporarily. Disable coverage with clang. +Files: .travis.yml + +Patch 8.0.0787 +Problem: Cannot send CTRL-W command to terminal job. +Solution: Make CTRL-W . a prefix for sending a key to the job. +Files: src/terminal.c, runtime/doc/terminal.txt, src/option.c + +Patch 8.0.0788 +Problem: MS-Windows: cannot build with terminal feature. +Solution: Move set_ref_in_term(). (Ozaki Kiichi) +Files: src/terminal.c + +Patch 8.0.0789 +Problem: When splitting a terminal window where the terminal follows the + size of the window doesn't work. +Solution: Use the size of the smallest window. (Yasuhiro Matsumoto, closes + #1885) +Files: src/terminal.c + +Patch 8.0.0790 +Problem: MSVC compiler warning for strncpy in libvterm. +Solution: Add a define to stop the warnings. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 8.0.0791 +Problem: Terminal colors depend on the system. +Solution: Use the highlight color lookup tables. +Files: src/syntax.c, src/proto/syntax.pro, src/terminal.c + +Patch 8.0.0792 +Problem: Spell test leaves files behind. +Solution: Delete the files. +Files: src/testdir/test_spell.vim + +Patch 8.0.0793 +Problem: Using wrong terminal name for terminal window. +Solution: When 'term' starts with "xterm" use it for $TERM in a terminal + window. +Files: src/os_unix.c + +Patch 8.0.0794 +Problem: The script to check translations fails if there is more than one + NL in one line. +Solution: Count the number of NL characters. Make count() accept a string. +Files: src/po/check.vim, src/evalfunc.c, runtime/doc/eval.txt, + src/testdir/test_functions.vim + +Patch 8.0.0795 +Problem: Terminal feature does not build with older MSVC. +Solution: Do not use stdint.h. +Files: src/libvterm/include/vterm.h + +Patch 8.0.0796 +Problem: No coverage on Travis with clang. +Solution: Use a specific coveralls version. (Ozaki Kiichi, closes #1888) +Files: .travis.yml + +Patch 8.0.0797 +Problem: Finished job in terminal window is not handled. +Solution: Add the scrollback buffer. Use it to fill the buffer when the job + has ended. +Files: src/terminal.c, src/screen.c, src/proto/terminal.pro, + src/channel.c, src/os_unix.c, src/buffer.c + +Patch 8.0.0798 +Problem: No highlighting in a terminal window with a finished job. +Solution: Highlight the text. +Files: src/terminal.c, src/proto/terminal.pro, src/screen.c, src/undo.c + +Patch 8.0.0799 +Problem: Missing semicolon. +Solution: Add it. +Files: src/terminal.c + +Patch 8.0.0800 +Problem: Terminal window scrollback contents is wrong. +Solution: Fix handling of multibyte characters (Yasuhiro Matsumoto) Handle + empty lines correctly. (closes #1891) +Files: src/terminal.c + +Patch 8.0.0801 +Problem: The terminal window title sometimes still says "running" even + though the job has finished. +Solution: Also consider the job finished when the channel has been closed. +Files: src/terminal.c + +Patch 8.0.0802 +Problem: After a job exits the last line in the terminal window does not + get color attributes. +Solution: Fix off-by-one error. +Files: src/terminal.c + +Patch 8.0.0803 +Problem: Terminal window functions not yet implemented. +Solution: Implement several functions. Add a first test. (Yasuhiro + Matsumoto, closes #1871) +Files: runtime/doc/eval.txt, src/Makefile, src/evalfunc.c, + src/proto/evalfunc.pro, src/proto/terminal.pro, src/terminal.c, + src/testdir/Make_all.mak, src/testdir/test_terminal.vim + +Patch 8.0.0804 +Problem: Running tests fails when stdin is /dev/null. (James McCoy) +Solution: Do not bail out from getting input if the --not-a-term argument + was given. (closes #1460) +Files: src/eval.c, src/evalfunc.c + +Patch 8.0.0805 +Problem: GUI test fails with gnome2. +Solution: Set $HOME to an existing directory. +Files: src/testdir/setup.vim, src/testdir/runtest.vim + +Patch 8.0.0806 +Problem: Tests may try to create XfakeHOME twice. +Solution: Avoid loading setup.vim twice. +Files: src/testdir/setup.vim + +Patch 8.0.0807 +Problem: Terminal window can't handle mouse buttons. (Hirohito Higashi) +Solution: Implement mouse buttons and many other keys. Ignore the ones that + are not implemented. +Files: src/terminal.c + +Patch 8.0.0808 +Problem: Cannot build with terminal feature and DEBUG defined. (Christian + Brabandt) +Solution: Use DEBUG_LOG3(). +Files: src/libvterm/src/pen.c + +Patch 8.0.0809 +Problem: MS-Windows: tests hang. +Solution: Delete the XfakeHOME directory. +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 8.0.0810 +Problem: MS-Windows: tests still hang. +Solution: Only create the XfakeHOME directory if it does not exist yet. +Files: src/testdir/setup.vim + +Patch 8.0.0811 +Problem: MS-Windows: test_expand_dllpath fails. +Solution: Change backslashes to forward slashes +Files: src/testdir/test_expand_dllpath.vim + +Patch 8.0.0812 +Problem: Terminal window colors shift when 'number' is set. (Nazri Ramliy) +Solution: Use vcol instead of col. +Files: src/screen.c + +Patch 8.0.0813 +Problem: Cannot use Vim commands in a terminal window while the job is + running. +Solution: Implement Terminal Normal mode. +Files: src/terminal.c, src/proto/terminal.pro, src/main.c, src/screen.c, + src/normal.c, src/option.c, runtime/doc/terminal.txt + +Patch 8.0.0814 (after 8.0.0757) +Problem: File in Filelist does not exist. +Solution: Remove the line. +Files: Filelist + +Patch 8.0.0815 +Problem: Terminal window not correctly updated when 'statusline' invokes + ":sleep". (Nikolay Pavlov) +Solution: Clear got_int. Repeat redrawing when needed. +Files: src/terminal.c + +Patch 8.0.0816 +Problem: Crash when using invalid buffer number. +Solution: Check for NULL buffer. (Yasuhiro Matsumoto, closes #1899) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0817 +Problem: Cannot get the line of a terminal window at the cursor. +Solution: Make the row argument optional. (Yasuhiro Matsumoto, closes #1898) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/terminal.c + +Patch 8.0.0818 +Problem: Cannot get the cursor position of a terminal. +Solution: Add term_getcursor(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/terminal.c, + src/proto/terminal.pro + +Patch 8.0.0819 +Problem: After changing current window the cursor position in the terminal + window is not updated. +Solution: Set w_wrow, w_wcol and w_valid. +Files: src/terminal.c + +Patch 8.0.0820 +Problem: GUI: cursor in terminal window lags behind. +Solution: call gui_update_cursor() under different conditions. (Ozaki + Kiichi, closes #1893) +Files: src/terminal.c + +Patch 8.0.0821 +Problem: Cannot get the title and status of a terminal window. +Solution: Implement term_gettitle() and term_getstatus(). +Files: src/evalfunc.c, src/terminal.c, src/proto/terminal.pro, + runtime/doc/eval.txt + +Patch 8.0.0822 +Problem: Test_with_partial_callback is a tiny bit flaky. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.0823 +Problem: Cannot paste text into a terminal window. +Solution: Make CTRL-W " work. +Files: src/terminal.c + +Patch 8.0.0824 +Problem: In Terminal mode the cursor and screen gets redrawn when the job + produces output. +Solution: Check for tl_terminal_mode. (partly by Yasuhiro Matsumoto, closes + #1904) +Files: src/terminal.c + +Patch 8.0.0825 +Problem: Not easy to see that a window is a terminal window. +Solution: Add StatusLineTerm highlighting. +Files: src/option.c, src/vim.h, src/screen.c, src/syntax.c + +Patch 8.0.0826 +Problem: Cannot use text objects in Terminal mode. +Solution: Check for pending operator and Visual mode first. (Yasuhiro + Matsumoto, closes #1906) +Files: src/normal.c + +Patch 8.0.0827 +Problem: Coverity: could leak pty file descriptor, theoretically. +Solution: If channel is NULL, free the file descriptors. +Files: src/os_unix.c + +Patch 8.0.0828 +Problem: Coverity: may dereference NULL pointer. +Solution: Bail out if calloc_state() returns NULL. +Files: src/regexp_nfa.c + +Patch 8.0.0829 +Problem: A job running in a terminal window cannot easily communicate with + the Vim it is running in. +Solution: Pass v:servername in an environment variable. (closes #1908) +Files: src/os_unix.c + +Patch 8.0.0830 +Problem: Translating messages is not ideal. +Solution: Add a remark about obsolete messages. Use msgfmt in the check + script. (Christian Brabandt) +Files: src/po/README.txt, src/po/check.vim + +Patch 8.0.0831 (after 8.0.0791) +Problem: With 8 colors the bold attribute is not set properly. +Solution: Move setting HL_TABLE() out of lookup_color. (closes #1901) +Files: src/syntax.c, src/proto/syntax.pro, src/terminal.c + +Patch 8.0.0832 +Problem: Terminal function arguments are not consistent. +Solution: Use one-based instead of zero-based rows and cols. Use "." for + the current row. +Files: src/terminal.c, runtime/doc/eval.txt + +Patch 8.0.0833 +Problem: Terminal test fails. +Solution: Update the row argument to one based. +Files: src/testdir/test_terminal.vim + +Patch 8.0.0834 +Problem: Can't build without the client-server feature. +Solution: Add #ifdef. +Files: src/os_unix.c + +Patch 8.0.0835 +Problem: Translations check with msgfmt does not work. +Solution: Add a space before the file name. +Files: src/po/check.vim + +Patch 8.0.0836 +Problem: When a terminal buffer is changed it can still be accidentally + abandoned. +Solution: When making a change reset the 'buftype' option. +Files: src/terminal.c, src/testdir/test_terminal.vim, src/option.c + +Patch 8.0.0837 +Problem: Signs can be drawn on top of console messages. +Solution: don't redraw at a prompt or when scrolled up. (Christian Brabandt, + closes #1907) +Files: src/screen.c + +Patch 8.0.0838 +Problem: Buffer hangs around when terminal window is closed. +Solution: When the job has ended wipe out a terminal buffer when the window + is closed. +Files: src/buffer.c, src/terminal.c, src/proto/terminal.pro, + src/testdir/test_terminal.vim + +Patch 8.0.0839 +Problem: Cannot kill a job in a terminal with CTRL-C. +Solution: Set the controlling tty and send SIGINT. (closes #1910) +Files: src/os_unix.c, src/terminal.c, src/proto/os_unix.pro + +Patch 8.0.0840 +Problem: MS-Windows: fopen() and open() prototypes do not match the ones in + the system header file. Can't build without FEAT_MBYTE. +Solution: Add "const". Move macro to after including protoo.h. +Files: src/os_win32.c, src/proto/os_win32.pro, src/macros.h, src/vim.h + +Patch 8.0.0841 +Problem: term_getline() may cause a crash. +Solution: Check that the row is valid. (Hirohito Higashi) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0842 +Problem: Using slave pty after closing it. +Solution: Do the ioctl() before dup'ing it. +Files: src/os_unix.c + +Patch 8.0.0843 +Problem: MS-Windows: compiler warning for signed/unsigned. +Solution: Add type cast. (Yasuhiro Matsumoto, closes #1912) +Files: src/terminal.c + +Patch 8.0.0844 +Problem: Wrong function prototype because of missing static. +Solution: Add "static". +Files: src/os_win32.c, src/proto/os_win32.pro + +Patch 8.0.0845 +Problem: MS-Windows: missing semicolon in terminal code. +Solution: Add it. (Naruhiko Nishino, closes #1923) +Files: src/terminal.c + +Patch 8.0.0846 +Problem: Cannot get the name of the pty of a job. +Solution: Add the "tty" entry to the job info. (Ozaki Kiichi, closes #1920) + Add the term_gettty() function. +Files: runtime/doc/eval.txt, src/channel.c, src/os_unix.c, src/structs.h, + src/terminal.c, src/proto/terminal.pro, src/evalfunc.c, + src/testdir/test_terminal.vim + +Patch 8.0.0847 +Problem: :argadd without argument can't handle space in file name. (Harm te + Hennepe) +Solution: Escape the space. (Yasuhiro Matsumoto, closes #1917) +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, + src/testdir/test_arglist.vim + +Patch 8.0.0848 +Problem: Using multiple ch_log functions is clumsy. +Solution: Use variable arguments. (Ozaki Kiichi, closes #1919) +Files: src/channel.c, src/message.c, src/proto/channel.pro, + src/terminal.c + +Patch 8.0.0849 +Problem: Crash when job exit callback wipes the terminal. +Solution: Check for b_term to be NULL. (Yasuhiro Matsumoto, closes #1922) + Implement options for term_start() to be able to test. + Make term_wait() more reliable. +Files: src/terminal.c, src/testdir/test_terminal.vim, src/channel.c + +Patch 8.0.0850 +Problem: MS-Windows: Depending on the console encoding, an error message + that is given during startup may be broken. +Solution: Convert the message to the console codepage. (Yasuhiro Matsumoto, + closes #1927) +Files: src/message.c + +Patch 8.0.0851 +Problem: 'smartindent' is used even when 'indentexpr' is set. +Solution: Ignore 'smartindent' when 'indentexpr' is set. (Hirohito Higashi) +Files: src/misc1.c, src/testdir/test_smartindent.vim + +Patch 8.0.0852 (after 8.0.0850) +Problem: MS-Windows: possible crash when giving a message on startup. +Solution: Initialize length. (Yasuhiro Matsumoto, closes #1931) +Files: src/message.c + +Patch 8.0.0853 +Problem: Crash when running terminal with unknown command. +Solution: Check "term" not to be NULL. (Yasuhiro Matsumoto, closes #1932) +Files: src/terminal.c + +Patch 8.0.0854 +Problem: No redraw after terminal was closed. +Solution: Set typebuf_was_filled. (Yasuhiro Matsumoto, closes #1925, closes + #1924) Add function to check for messages even when input is + available. +Files: src/terminal.c, src/os_unix.c, src/proto/os_unix.pro, + src/os_win32.c, src/proto/os_win32.pro, src/os_mswin.c + +Patch 8.0.0855 +Problem: MS-Windows: can't get tty name of terminal. +Solution: Use the winpty process number. (Yasuhiro Matsumoto, closes #1929) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0856 +Problem: MS-Windows: terminal job doesn't take options. +Solution: Call job_set_options(). (Yasuhiro Matsumoto) +Files: src/terminal.c + +Patch 8.0.0857 +Problem: Terminal test fails on MS-Windows. +Solution: Sleep a fraction of a second. +Files: src/testdir/test_terminal.vim + +Patch 8.0.0858 +Problem: Can exit while a terminal is still running a job. +Solution: Consider a buffer with a running job like a changed file. +Files: src/undo.c, src/terminal.c, src/option.h, src/buffer.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/normal.c, + src/window.c, src/testdir/test_terminal.vim + +Patch 8.0.0859 +Problem: NULL pointer access when term_free_vterm called twice. +Solution: Return when tl_vterm is NULL. (Yasuhiro Matsumoto, closes #1934) +Files: src/terminal.c + +Patch 8.0.0860 +Problem: There may be side effects when a channel appends to a buffer that + is not the current buffer. +Solution: Properly switch to another buffer before appending. (Yasuhiro + Matsumoto, closes #1926, closes #1937) +Files: src/channel.c, src/buffer.c, src/proto/buffer.pro, + src/if_py_both.h + +Patch 8.0.0861 +Problem: Still many old style tests. +Solution: Convert several tests to new style. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test104.in, + src/testdir/test104.ok, src/testdir/test22.in, + src/testdir/test22.ok, src/testdir/test77.in, + src/testdir/test77.ok, src/testdir/test84.in, + src/testdir/test84.ok, src/testdir/test9.in, src/testdir/test9.ok, + src/testdir/test98.in, src/testdir/test98.ok, + src/testdir/test_autocmd.vim, src/testdir/test_curswant.vim, + src/testdir/test_file_size.vim, src/testdir/test_let.vim, + src/testdir/test_lineending.vim, src/testdir/test_scrollbind.vim, + src/Makefile + +Patch 8.0.0862 (after 8.0.0862) +Problem: File size test fails on MS-Windows. +Solution: Set fileformat after opening new buffer. Strip CR. +Files: src/testdir/test_file_size.vim + +Patch 8.0.0863 +Problem: A remote command starting with CTRL-\ CTRL-N does not work in the + terminal window. (Christian J. Robinson) +Solution: Use CTRL-\ CTRL-N as a prefix or a Normal mode command. +Files: src/terminal.c, runtime/doc/terminal.txt + +Patch 8.0.0864 +Problem: Cannot specify the name of a terminal. +Solution: Add the "term_name" option. (Yasuhiro Matsumoto, closes #1936) +Files: src/channel.c, src/structs.h, src/terminal.c, runtime/doc/eval.txt + +Patch 8.0.0865 +Problem: Cannot build with channel but without terminal feature. +Solution: Add #ifdef +Files: src/channel.c + +Patch 8.0.0866 +Problem: Solaris also doesn't have MIN and MAX. +Solution: Define MIN and MAX whenever they are not defined. (Ozaki Kiichi, + closes #1939) +Files: src/terminal.c + +Patch 8.0.0867 +Problem: When using a job or channel value as a dict value, when turning it + into a string the quotes are missing. +Solution: Add quotes to the job and channel values. (Yasuhiro Matsumoto, + closes #1930) +Files: src/list.c, src/eval.c, src/testdir/test_terminal.vim + +Patch 8.0.0868 +Problem: Cannot specify the terminal size on the command line. +Solution: Use the address range for the terminal size. (Yasuhiro Matsumoto, + closes #1941) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0869 +Problem: Job output is sometimes not displayed in a terminal. +Solution: Flush output before closing the channel. +Files: src/channel.c, src/terminal.c + +Patch 8.0.0870 +Problem: Mouse escape codes sent to terminal unintentionally. +Solution: Fix libvterm to send mouse codes only when enabled. +Files: src/terminal.c, src/libvterm/src/mouse.c + +Patch 8.0.0871 +Problem: The status line for a terminal window always has "[+]". +Solution: Do make the status line include "[+]" for a terminal window. +Files: src/screen.c + +Patch 8.0.0872 +Problem: Using mouse scroll while a terminal window has focus and the mouse + pointer is on another window does not work. Same for focus in a + non-terminal window and the mouse pointer is over a terminal + window. +Solution: Send the scroll action to the right window. +Files: src/terminal.c, src/normal.c, src/proto/terminal.pro + +Patch 8.0.0873 +Problem: In a terminal window cannot use CTRL-\ CTRL-N to start Visual + mode. +Solution: After CTRL-\ CTRL-N enter Terminal-Normal mode for one command. +Files: src/main.c, src/terminal.c, src/proto/terminal.pro + +Patch 8.0.0874 (after 8.0.0873) +Problem: Can't build with terminal feature. +Solution: Include change to term_use_loop(). (Dominique Pelle) +Files: src/normal.c + +Patch 8.0.0875 +Problem: Crash with weird command sequence. (Dominique Pelle) +Solution: Use vim_snprintf() instead of STRCPY(). +Files: src/misc1.c + +Patch 8.0.0876 +Problem: MS-Windows: Backslashes and wildcards in backticks don't work. +Solution: Do not handle backslashes inside backticks in the wrong place. + (Yasuhiro Matsumoto, closes #1942) +Files: src/os_mswin.c, src/os_win32.c + +Patch 8.0.0877 +Problem: Using CTRL-\ CTRL-N in terminal is inconsistent. +Solution: Stay in Normal mode. +Files: src/terminal.c, src/proto/terminal.pro, src/main.c, src/normal.c, + src/option.c + +Patch 8.0.0878 +Problem: No completion for :mapclear. +Solution: Add completion (Nobuhiro Takasaki et al. closes #1943) +Files: runtime/doc/eval.txt, runtime/doc/map.txt, src/ex_docmd.c, + src/ex_getln.c, src/proto/ex_docmd.pro, + src/testdir/test_cmdline.vim, src/vim.h + +Patch 8.0.0879 +Problem: Crash when shifting with huge number. +Solution: Check for overflow. (Dominique Pelle, closes #1945) +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.0.0880 +Problem: Travis uses an old Ubuntu version. +Solution: Switch from precise to trusty. (Ken Takata, closes #1897) +Files: .travis.yml, Filelist, src/testdir/if_ver-1.vim, + src/testdir/if_ver-2.vim, src/testdir/lsan-suppress.txt + +Patch 8.0.0881 +Problem: win32.mak no longer included in Windows SDK. +Solution: Do not include win32.mak. (Ken Takata) +Files: src/GvimExt/Makefile, src/Make_mvc.mak + +Patch 8.0.0882 +Problem: term_scrape() and term_getline() require two arguments but it is + not enforced. +Solution: Correct minimal number of arguments. (Hirohito Higashi) Update + documentation. (Ken Takata) +Files: src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.0.0883 +Problem: Invalid memory access with nonsensical script. +Solution: Check "dstlen" being positive. (Dominique Pelle) +Files: src/misc1.c + +Patch 8.0.0884 +Problem: Can't specify the wait time for term_wait(). +Solution: Add an optional second argument. +Files: src/evalfunc.c, src/terminal.c, runtime/doc/eval.txt + +Patch 8.0.0885 +Problem: Terminal window scrollback is stored inefficiently. +Solution: Store the text in the Vim buffer. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0886 +Problem: Crash when using ":term ls". +Solution: Fix line number computation. Add a test for this. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0887 +Problem: Can create a logfile in the sandbox. +Solution: Disable ch_logfile() in the sandbox. (Yasuhiro Matsumoto) +Files: src/evalfunc.c + +Patch 8.0.0888 +Problem: Compiler warnings with 64 bit build. +Solution: Add type cast of change the type. (Mike Williams) +Files: src/message.c, src/os_mswin.c, src/os_win32.c + +Patch 8.0.0889 +Problem: Gcc gives warnings for uninitialized variables. (Tony Mechelynck) +Solution: Initialize variables even though they are not used. +Files: src/terminal.c + +Patch 8.0.0890 +Problem: Still many old style tests. +Solution: Convert several tests to new style. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test103.in, src/testdir/test103.ok, + src/testdir/test107.in, src/testdir/test107.ok, + src/testdir/test51.in, src/testdir/test51.ok, + src/testdir/test91.in, src/testdir/test91.ok, + src/testdir/test_getvar.vim, src/testdir/test_highlight.vim, + src/testdir/test_visual.vim, src/testdir/test_window_cmd.vim, + src/Makefile + +Patch 8.0.0891 +Problem: Uninitialized memory use with empty line in terminal. +Solution: Initialize growarray earlier. (Yasuhiro Matsumoto, closes #1949) +Files: src/terminal.c + +Patch 8.0.0892 +Problem: When opening a terminal the pty size doesn't always match. +Solution: Update the pty size after opening the terminal. (Ken Takata) +Files: src/terminal.c + +Patch 8.0.0893 +Problem: Cannot get the scroll count of a terminal window. +Solution: Add term_getscrolled(). +Files: src/terminal.c, src/proto/terminal.pro, src/evalfunc.c, + runtime/doc/eval.txt, src/testdir/test_terminal.vim + +Patch 8.0.0894 +Problem: There is no test for runtime filetype detection. +Solution: Test a list of filetypes from patterns. +Files: src/testdir/test_filetype.vim, runtime/filetype.vim + +Patch 8.0.0895 (after 8.0.0894) +Problem: Filetype test fails on MS-Windows. +Solution: Fix file names. +Files: src/testdir/test_filetype.vim + +Patch 8.0.0896 +Problem: Cannot automatically close a terminal window when the job ends. +Solution: Add the ++close argument to :term. Add the term_finish option to + term_start(). (Yasuhiro Matsumoto, closes #1950) Also add + ++open. +Files: runtime/doc/eval.txt, runtime/doc/terminal.txt, src/channel.c, + src/structs.h, src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0897 (after 8.0.0896) +Problem: Wrong error message for invalid term_finish value +Solution: Pass the right argument to emsg(). +Files: src/channel.c + +Patch 8.0.0898 +Problem: Can't use the alternate screen in a terminal window. +Solution: Initialize the alternate screen. (Yasuhiro Matsumoto, closes + #1957) Add term_getaltscreen(). +Files: src/libvterm/include/vterm.h, src/terminal.c, + src/proto/terminal.pro, src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.0.0899 +Problem: Function name mch_stop_job() is confusing. +Solution: Rename to mch_signal_job(). +Files: src/channel.c, src/os_unix.c, src/proto/os_unix.pro, + src/os_win32.c, src/proto/os_win32.pro, src/terminal.c + +Patch 8.0.0900 +Problem: :tab options doesn't open a new tab page. (Aviany) +Solution: Support the :tab modifier. (closes #1960) +Files: src/ex_cmds2.c, runtime/optwin.vim + +Patch 8.0.0901 +Problem: Asan suppress file missing from distribution. +Solution: Add the file. +Files: Filelist + +Patch 8.0.0902 +Problem: Cannot specify directory or environment for a job. +Solution: Add the "cwd" and "env" arguments to job options. (Yasuhiro + Matsumoto, closes #1160) +Files: runtime/doc/channel.txt, src/channel.c, src/terminal.c, + src/os_unix.c, src/os_win32.c, src/structs.h, + src/testdir/test_channel.vim, src/testdir/test_terminal.vim + +Patch 8.0.0903 (after 8.0.0902) +Problem: Early return from test function. +Solution: Remove the return. +Files: src/testdir/test_terminal.vim + +Patch 8.0.0904 +Problem: Cannot set a location list from text. +Solution: Add the "text" argument to setqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0905 +Problem: MS-Windows: broken multibyte characters in the console. +Solution: Restore all regions of the console buffer. (Ken Takata) +Files: src/os_win32.c + +Patch 8.0.0906 +Problem: Don't recognize Couchbase files. +Solution: Add filetype detection. (Eugene Ciurana, closes #1951) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.0.0907 +Problem: With cp932 font names might be misinterpreted. +Solution: Do not see "_" as a space when it is the second byte of a double + byte character. (Ken Takata) +Files: src/os_win32.c + +Patch 8.0.0908 +Problem: Cannot set terminal size with options. +Solution: Add "term_rows", "term_cols" and "vertical". +Files: src/terminal.c, runtime/doc/eval.txt, src/channel.c, + src/proto/channel.pro, src/structs.h, src/evalfunc.c, + src/testdir/test_terminal.vim + +Patch 8.0.0909 +Problem: Channel test fails. +Solution: Allow for "cwd" and "env" arguments. +Files: src/channel.c + +Patch 8.0.0910 +Problem: Cannot create a terminal in the current window. +Solution: Add option "curwin" and ++curwin. +Files: src/terminal.c, runtime/doc/eval.txt, src/channel.c, + src/structs.h, src/ex_cmds.h, src/testdir/test_terminal.vim + +Patch 8.0.0911 +Problem: Terminal test takes too long. +Solution: Instead of "sleep 1" use a Python program to briefly sleep. +Files: src/testdir/test_terminal.vim, src/testdir/test_short_sleep.py + +Patch 8.0.0912 +Problem: Cannot run a job in a hidden terminal. +Solution: Add option "hidden" and ++hidden. +Files: src/terminal.c, src/structs.h, src/channel.c, src/fileio.c, + runtime/doc/terminal.txt, src/testdir/test_terminal.vim + +Patch 8.0.0913 +Problem: MS-Windows: CTRL-C kills shell in terminal window instead of the + command running in the shell. +Solution: Make CTRL-C only send a CTRL_C_EVENT and have CTRL-BREAK kill the + job. (partly by Yasuhiro Matsumoto, closes #1962) +Files: src/os_win32.c, src/gui_w32.c, src/terminal.c, src/globals.h + +Patch 8.0.0914 +Problem: Highlight attributes are always combined. +Solution: Add the 'nocombine' value to replace attributes instead of + combining them. (scauligi, closes #1963) +Files: runtime/doc/syntax.txt, src/syntax.c, src/vim.h + +Patch 8.0.0915 +Problem: Wrong initialisation of global. +Solution: Use INIT(). +Files: src/globals.h + +Patch 8.0.0916 +Problem: Cannot specify properties of window for when opening a window for + a finished terminal job. +Solution: Add "term_opencmd". +Files: src/channel.c, src/structs.h, src/terminal.c, + runtime/doc/eval.txt, src/testdir/test_terminal.vim + +Patch 8.0.0917 +Problem: MS-Windows:CTRL-C handling in terminal window is wrong +Solution: Pass CTRL-C as a key. Turn CTRL-BREAK into a key stroke. (Yasuhiro + Matsumoto, closes #1965) +Files: src/os_win32.c, src/terminal.c + +Patch 8.0.0918 +Problem: Cannot get terminal window cursor shape or attributes. +Solution: Support cursor shape, attributes and color. +Files: src/terminal.c, runtime/doc/eval.txt, + src/libvterm/include/vterm.h, src/libvterm/src/state.c, + src/libvterm/src/vterm.c, src/feature.h, src/ui.c, + src/proto/ui.pro, src/term.c, src/proto/term.pro, + src/option.c, src/term.h + +Patch 8.0.0919 +Problem: Cursor color isn't set on startup. +Solution: Initialize showing_mode to invalid value. +Files: src/term.c + +Patch 8.0.0920 +Problem: The cursor shape is wrong after switch back from an alternate + screen in a terminal window. (Marius Gedminas) +Solution: Change bitfield to unsigned. Set flag that cursor shape was set. +Files: src/terminal.c, src/libvterm/src/vterm_internal.h + +Patch 8.0.0921 +Problem: Terminal window cursor shape not supported in the GUI. +Solution: Use the terminal window cursor shape in the GUI. +Files: src/terminal.c, src/proto/terminal.pro, src/gui.c, src/syntax.c, + src/proto/syntax.pro + +Patch 8.0.0922 +Problem: Quickfix list always added after current one. +Solution: Make it possible to add a quickfix list after the last one. + (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.0923 +Problem: Crash in GUI when terminal job exits. (Kazunobu Kuriyama) +Solution: reset in_terminal_loop when a terminal is freed. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.0924 +Problem: Terminal window not updated after using term_sendkeys(). +Solution: Call redraw_after_callback(). +Files: src/terminal.c + +Patch 8.0.0925 +Problem: MS-Windows GUI: channel I/O not handled right away. +Solution: Don't call process_message() unless a message is available. + (Yasuhiro Matsumoto, closes #1969) +Files: src/gui_w32.c + +Patch 8.0.0926 +Problem: When job in terminal window ends topline may be wrong. +Solution: When the job ends adjust topline so that the active part of the + terminal is displayed. +Files: src/terminal.c + +Patch 8.0.0927 +Problem: If a terminal job sends a blank title "running" is not shown. +Solution: When the title is blank make it empty. +Files: src/terminal.c + +Patch 8.0.0928 +Problem: MS-Windows: passing arglist to job has escaping problems. +Solution: Improve escaping. (Yasuhiro Matsumoto, closes #1954) +Files: src/testdir/test_channel.vim, src/testdir/test_terminal.vim, + src/channel.c, src/proto/channel.pro, src/terminal.c + +Patch 8.0.0929 +Problem: :term without argument does not work. +Solution: Use shell for empty command. (Yasuhiro Matsumoto, closes #1970) +Files: src/terminal.c + +Patch 8.0.0930 +Problem: Terminal buffers are stored in the viminfo file while they can't + be useful. +Solution: Skip terminal buffers for file marks and buffer list +Files: src/buffer.c, src/mark.c + +Patch 8.0.0931 +Problem: getwininfo() does not indicate a terminal window. +Solution: Add "terminal" to the dictionary. +Files: runtime/doc/eval.txt, src/evalfunc.c + +Patch 8.0.0932 +Problem: Terminal may not use right characters for BS and Enter. +Solution: Get the characters from the tty. +Files: src/os_unix.c, src/proto/os_unix.pro, src/terminal.c + +Patch 8.0.0933 +Problem: Terminal test tries to start GUI when it's not possible. +Solution: Check if the GUI can run. (James McCoy, closes #1971) +Files: src/testdir/shared.vim, src/testdir/test_terminal.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim + +Patch 8.0.0934 (after 8.0.0932) +Problem: Change to struts.h missing in patch. +Solution: Include adding ttyinfo_T. +Files: src/structs.h + +Patch 8.0.0935 +Problem: Cannot recognize a terminal buffer in :ls output. +Solution: Use R for a running job and F for a finished job. +Files: src/buffer.c + +Patch 8.0.0936 +Problem: mode() returns wrong value for a terminal window. +Solution: Return 't' when typed keys go to a job. +Files: src/evalfunc.c, src/testdir/test_terminal.vim + +Patch 8.0.0937 +Problem: User highlight groups are not adjusted for StatusLineTerm. +Solution: Combine attributes like for StatusLineNC. +Files: src/syntax.c, src/globals.h, src/screen.c + +Patch 8.0.0938 +Problem: Scrolling in terminal window is inefficient. +Solution: Use win_del_lines(). +Files: src/terminal.c + +Patch 8.0.0939 +Problem: Test_terminal_env is flaky. (James McCoy) +Solution: Use WaitFor() instead of term_wait(). +Files: src/testdir/test_terminal.vim + +Patch 8.0.0940 +Problem: Test_terminal_scrape_multibyte is flaky. (James McCoy) +Solution: Use WaitFor() instead of term_wait(). +Files: src/testdir/test_terminal.vim + +Patch 8.0.0941 +Problem: Existing color schemes don't work well with StatusLineTerm. +Solution: Don't use "reverse", use fg and bg colors. Also add + StatusLineTermNC. +Files: src/syntax.c, src/vim.h, src/screen.c, src/globals.h, src/option.c + +Patch 8.0.0942 +Problem: Using freed memory with ":terminal" if an autocommand changes + 'shell' when splitting the window. (Marius Gedminas) +Solution: Make a copy of 'shell'. (closes #1974) +Files: src/terminal.c + +Patch 8.0.0943 +Problem: Test_terminal_scrape_multibyte fails if the codepage is not utf-8. +Solution: Start "cmd" with the utf-8 codepage. (micbou, closes #1975) +Files: src/testdir/test_terminal.vim + +Patch 8.0.0944 +Problem: Test_profile is a little bit flaky. +Solution: Accept a match when self and total time are the same. (James + McCoy, closes #1972) +Files: src/testdir/test_profile.vim + +Patch 8.0.0945 +Problem: 64-bit compiler warnings. +Solution: Use "size_t" instead of "int". (Mike Williams) +Files: src/os_win32.c + +Patch 8.0.0946 +Problem: Using PATH_MAX does not work well on some systems. +Solution: use MAXPATHL instead. (James McCoy, closes #1973) +Files: src/main.c + +Patch 8.0.0947 +Problem: When in Insert mode and using CTRL-O CTRL-W CTRL-W to move to a + terminal window, get in a weird Insert mode. +Solution: Don't go to Insert mode in a terminal window. (closes #1977) +Files: src/normal.c + +Patch 8.0.0948 +Problem: Crash if timer closes window while dragging status line. +Solution: Check if the window still exists. (Yasuhiro Matsumoto, closes + #1979) +Files: src/edit.c, src/evalfunc.c, src/gui.c, src/normal.c, src/ui.c + +Patch 8.0.0949 +Problem: winpty.dll name is fixed. +Solution: Add the 'winptydll' option. Make the default name depend on + whether it is a 32-bit or 64-bit build. (idea by Yasuhiro + Matsumoto, closes #1978) +Files: src/option.c, src/option.h, src/terminal.c, + runtime/doc/options.txt + +Patch 8.0.0950 +Problem: MS-Windows: wrong #ifdef, compiler warnings for signed/unsigned. +Solution: Change variable type. Change TERMINAL to FEAT_TERMINAL. +Files: src/os_win32.c, src/option.h + +Patch 8.0.0951 +Problem: Another wrong #ifdef. +Solution: Change TERMINAL to FEAT_TERMINAL. (closes #1981) +Files: src/option.c + +Patch 8.0.0952 +Problem: MS-Windows: has('terminal') does not check existence of dll file. +Solution: Check if the winpty dll file can be loaded. (Ken Takata) +Files: src/evalfunc.c, src/proto/terminal.pro, src/terminal.c + +Patch 8.0.0953 +Problem: Get "no write since last change" error in terminal window. +Solution: Use another message when closing a terminal window. Make ":quit!" + also end the job. +Files: src/globals.h, src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/quickfix.c, src/terminal.c + +Patch 8.0.0954 +Problem: /proc/self/exe might be a relative path. +Solution: Make the path a full path. (James McCoy, closes #1983) +Files: src/main.c + +Patch 8.0.0955 +Problem: Test_existent_file() fails on some file systems. +Solution: Run the test again with a sleep when the test fails without a + sleep. (James McCoy, closes #1984) +Files: src/testdir/test_stat.vim + +Patch 8.0.0956 +Problem: Scrolling in a terminal hwindow as flicker when the Normal + background differs from the terminal window background. +Solution: Set the attribute to clear with. +Files: src/terminal.c, src/screen.c, src/proto/screen.pro, src/message.c, + src/move.c + +Patch 8.0.0957 +Problem: When term_sendkeys() sends many keys it may get stuck in writing + to the job. +Solution: Make the write non-blocking, buffer keys to be sent. +Files: src/terminal.c, src/channel.c, src/proto/channel.pro, + src/structs.h src/testdir/test_terminal.vim + +Patch 8.0.0958 +Problem: The terminal test fails on MS-Windows when compiled with the + terminal feature but the winpty DLL is missing. +Solution: Check if the terminal feature works. (Ken Takata) +Files: src/testdir/test_terminal.vim + +Patch 8.0.0959 +Problem: Build failure on MS-Windows. +Solution: Use ioctlsocket() instead of fcntl(). +Files: src/channel.c + +Patch 8.0.0960 +Problem: Job in terminal does not get CTRL-C, we send a SIGINT instead. +Solution: Don't call may_send_sigint() on CTRL-C. Make CTRL-W CTRL-C end + the job. +Files: src/terminal.c, runtime/doc/terminal.txt + +Patch 8.0.0961 +Problem: The script to build the installer does not include winpty. +Solution: Add winpty32.dll and winpty-agent.exe like diff.exe +Files: nsis/gvim.nsi + +Patch 8.0.0962 +Problem: Crash with virtualedit and joining lines. (Joshua T Corbin, Neovim + #6726) +Solution: When using a mark check that coladd is valid. +Files: src/normal.c, src/misc2.c, src/Makefile, + src/testdir/test_virtualedit.vim, src/testdir/test_alot.vim + +Patch 8.0.0963 +Problem: Terminal test fails on macOS. (chdiza) +Solution: Wait for the shell to echo the characters. (closes #1991) +Files: src/testdir/test_terminal.vim + +Patch 8.0.0964 +Problem: Channel write buffer does not work with poll(). +Solution: Use the same mechanism as with select(). +Files: src/channel.c + +Patch 8.0.0965 +Problem: The cursor shape is not reset after it was changed in a terminal. +Solution: Request the original cursor shape and restore it. Add t_RS. + Do not add t_SH for now, it does not work properly. +Files: src/term.c, src/term.h, src/option.c, src/terminal.c + +Patch 8.0.0966 (after 8.0.0965) +Problem: Build failure without terminal feature. +Solution: Move #endif. +Files: src/term.c + +Patch 8.0.0967 +Problem: Using a terminal may cause the cursor to blink. +Solution: Do not set t_vs, since we cannot restore the old blink state. +Files: src/term.c + +Patch 8.0.0968 +Problem: Crash when switching terminal modes. (Nikolai Pavlov) +Solution: Check that there are scrollback lines. +Files: src/terminal.c + +Patch 8.0.0969 +Problem: Coverity warning for unused return value. +Solution: Add (void) to avoid the warning. +Files: src/channel.c + +Patch 8.0.0970 +Problem: if there is no StatusLine highlighting and there is StatusLineNC + or StatusLineTermNC highlighting then an invalid highlight id is + passed to combine_stl_hlt(). (Coverity) +Solution: Check id_S to be -1 instead of zero. +Files: src/syntax.c + +Patch 8.0.0971 +Problem: 'winptydll' missing from :options. +Solution: Add the entry. +Files: runtime/optwin.vim + +Patch 8.0.0972 +Problem: Compiler warnings for unused variables. (Tony Mechelynck) +Solution: Add #ifdefs. +Files: src/term.c + +Patch 8.0.0973 +Problem: initial info about blinking cursor is wrong +Solution: Invert the blink flag. Add t_VS to stop a blinking cursor. +Files: src/term.c, src/proto/term.pro, src/term.h, src/option.c, + src/terminal.c + +Patch 8.0.0974 +Problem: Resetting a string option does not trigger OptionSet. (Rick Howe) +Solution: Set the origval. +Files: src/option.c, src/testdir/test_autocmd.vim + +Patch 8.0.0975 +Problem: Using freed memory when setting 'backspace'. +Solution: When changing oldval also change origval. +Files: src/option.c + +Patch 8.0.0976 +Problem: Cannot send lines to a terminal job. +Solution: Make [range]terminal send selected lines to the job. + Use ++rows and ++cols for the terminal size. +Files: src/ex_cmds.h, src/terminal.c, src/os_unix.c, + src/testdir/test_terminal.vim + +Patch 8.0.0977 +Problem: Cannot send lines to a terminal job on MS-Windows. +Solution: Set jv_in_buf. Command doesn't get EOF yet though. +Files: src/terminal.c + +Patch 8.0.0978 +Problem: Writing to terminal job is not tested. +Solution: Add a test. +Files: src/testdir/test_terminal.vim + +Patch 8.0.0979 +Problem: Terminal noblock test fails on MS-Windows. (Christian Brabandt) +Solution: Ignore empty line below "done". +Files: src/testdir/test_terminal.vim + +Patch 8.0.0980 +Problem: Coverity warning for failing to open /dev/null. +Solution: When /dev/null can't be opened exit the child. +Files: src/os_unix.c + +Patch 8.0.0981 +Problem: Cursor in terminal window blinks by default, while in a real xterm + it does not blink, unless the -bc argument is used. +Solution: Do not use a blinking cursor by default. +Files: src/terminal.c + +Patch 8.0.0982 +Problem: When 'encoding' is set to a multibyte encoding other than utf-8 + the characters from their terminal are messed up. +Solution: Convert displayed text from utf-8 to 'encoding' for MS-Windows. + (Yasuhiro Matsumoto, close #2000) +Files: src/terminal.c + +Patch 8.0.0983 +Problem: Unnecessary check for NULL pointer. +Solution: Remove the NULL check in dialog_changed(), it already happens in + dialog_msg(). (Ken Takata) +Files: src/ex_cmds2.c + +Patch 8.0.0984 +Problem: Terminal blinking cursor not correct in the GUI. +Solution: Set blinkoff correctly. Also make the cursor blink on MS-Windows + by default. (Ken Takata) +Files: src/terminal.c + +Patch 8.0.0985 +Problem: Libvterm has its own idea of character width. +Solution: Use the Vim functions for character width and composing to avoid a + mismatch. (idea by Yasuhiro Matsumoto) +Files: src/Makefile, src/libvterm/src/unicode.c, src/mbyte.c, + src/proto/mbyte.pro, src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.0986 +Problem: Terminal feature always requires multibyte feature. +Solution: Remove #ifdef FEAT_MBYTE, disable terminal without multibyte. +Files: src/terminal.c, src/feature.h + +Patch 8.0.0987 +Problem: terminal: second byte of double-byte char wrong +Solution: Set the second byte to NUL only for utf-8 and non-multibyte. +Files: src/terminal.c + +Patch 8.0.0988 +Problem: Warning from Covscan about using NULL pointer. +Solution: Add extra check for NULL. (zdohnal) +Files: src/fileio.c, src/undo.c + +Patch 8.0.0989 +Problem: ActiveTcl dll name has changed in 8.6.6. +Solution: Adjust the makefile. (Ken Takata) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.0990 +Problem: When 'encoding' is a double-byte encoding, pasting a register into + a terminal ends up with the wrong characters. +Solution: Convert from 'encoding' to utf-8. (Yasuhiro Matsumoto, closes + #2007) +Files: src/terminal.c + +Patch 8.0.0991 +Problem: Using wrong character conversion for DBCS. +Solution: Use utf_char2bytes instead of mb_char2bytes. (Yasuhiro Matsumoto, + closes #2012) +Files: src/terminal.c + +Patch 8.0.0992 +Problem: Terminal title is wrong when 'encoding' is DBCS. +Solution: Convert the title from DBCS to utf-8. (Yasuhiro Matsumoto, closes + #2009) +Files: src/terminal.c + +Patch 8.0.0993 +Problem: Sometimes an xterm sends an extra CTRL-X after the response for + the background color. Related to t_RS. +Solution: Check for the CTRL-X after the terminating 0x7. +Files: src/term.c + +Patch 8.0.0994 +Problem: MS-Windows: cursor in terminal blinks even though the blinking + cursor was disabled on the system. +Solution: Use GetCaretBlinkTime(). (Ken Takata) +Files: src/terminal.c + +Patch 8.0.0995 +Problem: Terminal tests fail on Mac. +Solution: Add workaround: sleep a moment in between sending keys. +Files: src/testdir/test_terminal.vim + +Patch 8.0.0996 +Problem: Mac: t_RS is echoed on the screen in Terminal.app. Even though + $TERM is set to "xterm-256colors" it cannot handle this xterm + escape sequence. +Solution: Recognize Terminal.app from the termresponse and skip sending t_RS + if it looks like Terminal.app. +Files: src/term.c + +Patch 8.0.0997 (after 8.0.0996) +Problem: Libvterm and Terminal.app not recognized from termresponse. +Solution: Adjust string compare. +Files: src/term.c + +Patch 8.0.0998 +Problem: Strange error when using K while only spaces are selected. + (Christian J. Robinson) +Solution: Check for blank argument. +Files: src/normal.c, src/testdir/test_help.vim + +Patch 8.0.0999 +Problem: Indenting raw C++ strings is wrong. +Solution: Add special handling of raw strings. (Christian Brabandt) +Files: src/misc1.c, src/testdir/test_cindent.vim + +Patch 8.0.1000 +Problem: Cannot open a terminal without running a job in it. +Solution: Make ":terminal NONE" open a terminal with a pty. +Files: src/terminal.c, src/os_unix.c, src/proto/os_unix.pro, + src/channel.c, src/proto/channel.pro, src/structs.h, + src/testdir/test_terminal.c, src/misc2.c, src/gui_gtk_x11.c + +Patch 8.0.1001 +Problem: Setting 'encoding' makes 'printheader' invalid. +Solution: Do not translate the default value of 'printheader'. (Yasuhiro + Matsumoto, closes #2026) +Files: src/option.c + +Patch 8.0.1002 +Problem: Unnecessarily updating screen after timer callback. +Solution: Check if calling the timer sets must_redraw. +Files: src/ex_cmds2.c, src/channel.c, src/screen.c, src/proto/screen.pro, + src/terminal.c + +Patch 8.0.1003 +Problem: 64 bit compiler warning +Solution: Add type cast. (Mike Williams) +Files: src/channel.c + +Patch 8.0.1004 +Problem: matchstrpos() without a match returns too many items. +Solution: Also remove the second item when the position is beyond the end of + the string. (Hirohito Higashi) Use an enum for the type. +Files: src/evalfunc.c, src/testdir/test_match.vim + +Patch 8.0.1005 +Problem: Terminal without job updates slowly in GUI. +Solution: Poll for input when a channel has the keep_open flag. +Files: src/channel.c, src/proto/channel.pro, src/gui_gtk_x11.c + +Patch 8.0.1006 +Problem: Cannot parse text with 'errorformat' without changing a quickfix + list. +Solution: Add the "text" argument to getqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/quickfix.pro, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1007 +Problem: No test for filetype detection for scripts. +Solution: Add a first test file script filetype detection. +Files: src/testdir/test_filetype.vim, runtime/scripts.vim + +Patch 8.0.1008 +Problem: Slow updating of terminal window in Motif. +Solution: Add a timeout to the wait-for-character loop. +Files: src/gui_x11.c + +Patch 8.0.1009 +Problem: Xterm cursor blinking status may be inverted. +Solution: Use another request to get the blink status and compare with the + cursor style report +Files: src/term.c, src/proto/term.pro, src/term.h, src/option.c, + src/terminal.c + +Patch 8.0.1010 (after 8.0.1009) +Problem: Build failure without termresponse feature. +Solution: Add #ifdef. +Files: src/term.c + +Patch 8.0.1011 +Problem: Terminal test fails with Athena and Motif. +Solution: Ignore the error for the input context. (Kazunobu Kuriyama) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1012 +Problem: MS-Windows: Problem with $HOME when it was set internally. +Solution: Only use the $HOME default internally. (Yasuhiro Matsumoto, closes + #2013) +Files: src/misc1.c, src/testdir/Make_all.mak, src/Makefile, + src/testdir/test_windows_home.vim + +Patch 8.0.1013 +Problem: A terminal window with a running job behaves different from a + window containing a changed buffer. +Solution: Do not set 'bufhidden' to "hide". Fix that a buffer where a + terminal used to run is listed as "[Scratch]". +Files: src/terminal.c, runtime/doc/terminal.txt, src/buffer.c + +Patch 8.0.1014 +Problem: Old compiler doesn't know uint32_t. Warning for using NULL instead + of NUL. +Solution: Use UINT32_T. Use NUL instead of NULL. +Files: src/mbyte.c, src/proto/mbyte.pro, src/misc1.c + +Patch 8.0.1015 (after 8.0.1013) +Problem: Missing update to terminal test. +Solution: Add the changes to the test. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1016 +Problem: Gnome terminal echoes t_RC. +Solution: Detect Gnome terminal by the version string. Add v: variables for + all the term responses. +Files: src/term.c, src/eval.c, src/vim.h, runtime/doc/eval.txt + +Patch 8.0.1017 +Problem: Test for MS-Windows $HOME always passes. +Solution: Rename the test function. Make the test pass. +Files: src/testdir/test_windows_home.vim + +Patch 8.0.1018 +Problem: Warnings from 64-bit compiler. (Christian Brabandt) +Solution: Add type casts. +Files: src/terminal.c + +Patch 8.0.1019 +Problem: Pasting in virtual edit happens in the wrong place. +Solution: Do not adjust coladd when after the end of the line (closes #2015) +Files: src/testdir/test_virtualedit.vim, src/misc2.c + +Patch 8.0.1020 +Problem: When a timer calls getchar(1) input is overwritten. +Solution: Increment tb_change_cnt in inchar(). (closes #1940) +Files: src/getchar.c + +Patch 8.0.1021 +Problem: Older Gnome terminal still echoes t_RC. (Fran莽ois Ingelrest) +Solution: Check for version > 3000 instead of 4000. +Files: src/term.c + +Patch 8.0.1022 +Problem: Test 80 is old style. +Solution: Turn it into a new style test. (Yegappan Lakshmanan) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test80.in, src/testdir/test80.ok, + src/testdir/test_substitute.vim + +Patch 8.0.1023 +Problem: It is not easy to identify a quickfix list. +Solution: Add the "id" field. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1024 +Problem: Manual folds are lost when a session file has the same buffer in + two windows. (Jeansen) +Solution: Use ":edit" only once. (Christian Brabandt, closes #1958) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.0.1025 +Problem: Stray copy command in test. +Solution: Remove the copy command. +Files: src/testdir/test_mksession.vim + +Patch 8.0.1026 +Problem: GTK on-the-spot input has problems. (Gerd Wachsmuth) +Solution: Support over-the-spot. (Yukihiro Nakadaira, Ken Takata, closes + #1215) +Files: runtime/doc/mbyte.txt, runtime/doc/options.txt, src/edit.c, + src/ex_getln.c, src/mbyte.c, src/misc1.c, src/option.c, + src/option.h, src/screen.c, src/undo.c, + src/testdir/gen_opt_test.vim + +Patch 8.0.1027 +Problem: More terminals can't handle requesting cursor mode. +Solution: Recognize Putty. (Hirohito Higashi) Also include Xfce in the + version check. (Dominique Pelle) Recognize Konsole. +Files: src/term.c + +Patch 8.0.1028 +Problem: MS-Windows: viminfo uses $VIM/_viminfo if $HOME not set. (Yongwei + Wu) +Solution: Use vim_getenv() but check it's returning the default "C:/". +Files: src/ex_cmds.c + +Patch 8.0.1029 +Problem: Return value of getqflist() is inconsistent. (Lcd47) +Solution: Always return an "items" entry. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1030 +Problem: MS-Windows: wrong size computation in is_cygpty(). +Solution: Compute the size properly. (Ken Takata) +Files: src/iscygpty.c, src/iscygpty.h + +Patch 8.0.1031 +Problem: "text" argument for getqflist() is confusing. (Lcd47) +Solution: Use "lines" instead. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1032 +Problem: "make tags" doesn't work well on MS-Windows. +Solution: Add or fix tags target. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.1033 +Problem: Detecting background color does not work in screen, even when it + is working like an xterm. +Solution: Make "screen.xterm" use termcap entries like an xterm. (Lubomir + Rintel, closes #2048) When termresponse version is huge also + recognize as not being an xterm. +Files: src/os_unix.c, src/term.c + +Patch 8.0.1034 +Problem: Sending buffer lines to terminal doesn't work on MS-Windows. +Solution: Send CTRL-D to mark the end of the text. (Yasuhiro Matsumoto, + closes #2043) Add the "eof_chars" option. +Files: src/channel.c, src/proto/terminal.pro, src/terminal.c, + src/testdir/test_terminal.vim, src/structs.h + +Patch 8.0.1035 +Problem: Sending buffer lines to terminal doesn't work on MS-Windows. +Solution: Use CR instead of NL after every line. Make the EOF text work + properly. Add the ++eof argument to :terminal. +Files: src/structs.h, src/channel.c, src/terminal.c, + runtime/doc/terminal.txt, runtime/doc/eval.txt + +Patch 8.0.1036 +Problem: ++eof argument for terminal only available on MS-Windows. +Solution: Also support ++eof on Unix. Add a test. +Files: src/channel.c, src/terminal.c, src/structs.h, + src/testdir/test_terminal.vim + +Patch 8.0.1037 +Problem: "icase" of 'diffopt' is not used for highlighting differences. +Solution: Also use "icase". (Rick Howe) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.0.1038 +Problem: Strike-through text not supported. +Solution: Add support for the "strikethrough" attribute. (Christian + Brabandt, Ken Takata) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/syntax.txt, runtime/doc/term.txt, src/evalfunc.c, + src/gui.c, src/gui.h, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_w32.c, src/gui_x11.c, src/option.c, src/screen.c, + src/syntax.c, src/term.c, src/term.h, src/terminal.c, src/vim.h + +Patch 8.0.1039 +Problem: Cannot change a line in a buffer other than the current one. +Solution: Add setbufline(). (Yasuhiro Matsumoto, Ozaki Kiichi, closes #1953) +Files: src/evalfunc.c, runtime/doc/eval.txt, src/Makefile, + src/testdir/test_bufline.vim, src/testdir/test_alot.vim + + +Patch 8.0.1040 +Problem: Cannot use another error format in getqflist(). +Solution: Add the "efm" argument to getqflist(). (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1041 +Problem: Bogus characters appear when indenting kicks in while doing a + visual-block append. +Solution: Recompute when indenting is done. (Christian Brabandt) +Files: runtime/doc/visual.txt, src/charset.c, src/edit.c, src/misc1.c, + src/ops.c, src/proto/charset.pro, src/proto/misc1.pro, + src/screen.c, src/spell.c, src/testdir/test_cindent.vim + +Patch 8.0.1042 (after 8.0.1038) +Problem: Without the syntax feature highlighting doesn't work. +Solution: Always use unsigned short to store attributes. +Files: src/vim.h + +Patch 8.0.1043 +Problem: Warning for uninitialized variable. (John Marriott) +Solution: Move code to check indent inside "if". +Files: src/ops.c + +Patch 8.0.1044 +Problem: Warning for uninitialized variable. (John Marriott) +Solution: Initialize ind_pre. +Files: src/ops.c + +Patch 8.0.1045 +Problem: Running tests may pollute shell history. (Manuel Ortega) +Solution: Make $HISTFILE empty. +Files: src/testdir/setup.vim + +Patch 8.0.1046 +Problem: Code duplication in diff mode. +Solution: Use diff_equal_char() also in diff_cmp(). (Rick Howe) +Files: src/diff.c + +Patch 8.0.1047 +Problem: Buffer overflow in Ruby. +Solution: Allocate one more byte. (Dominique Pelle) +Files: src/if_ruby.c + +Patch 8.0.1048 +Problem: No test for what 8.0.1020 fixes. +Solution: Add test_feedinput(). Add a test. (Ozaki Kiichi, closes #2046) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_timers.vim, + src/ui.c + +Patch 8.0.1049 +Problem: Shell on Mac can't handle long text, making terminal test fail. +Solution: Only write 1000 characters instead of 5000. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1050 +Problem: Terminal window feature not included by default. +Solution: Include the terminal feature for the "huge" build. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1051 +Problem: Cannot run terminal with spaces in argument. +Solution: Accept backslash to escape space and other characters. (closes + #1999) +Files: src/os_unix.c, src/testdir/test_terminal.vim + +Patch 8.0.1052 +Problem: term_start() does not allow in_io, out_io and err_io options. +Solution: Add JO_OUT_IO to get_job_options(). +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1053 +Problem: setline() does not work on startup. (Manuel Ortega) +Solution: Do not check for ml_mfp to be set for the current buffer. + (Christian Brabandt) +Files: src/testdir/shared.vim, src/testdir/test_alot.vim, + src/testdir/test_bufline.vim, src/testdir/test_timers.vim, + src/evalfunc.c + +Patch 8.0.1054 +Problem: Terminal test fails on MS-Windows. +Solution: Disable the redirection test for now. Improve scrape test to make + it less flaky. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1055 +Problem: Bufline test hangs on MS-Windows. +Solution: Avoid message for writing file. Source shared.vim when running + test individually. +Files: src/testdir/test_bufline.vim, src/testdir/test_timers.vim + +Patch 8.0.1056 +Problem: Cannot build with the diff feature but without the multibyte + feature. +Solution: Remove #ifdefs. (John Marriott) +Files: src/diff.c + +Patch 8.0.1057 +Problem: Terminal scrape test waits too long, it checks for one instead of + three. +Solution: Check there are three characters. (micbou) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1058 +Problem: Terminal redirection test is flaky. +Solution: Wait for job to finish. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1059 +Problem: older Gnome terminal returns smaller version number. (antarestrue) +Solution: Lower version limit from 2800 to 2500. (#2032) +Files: src/term.c + +Patch 8.0.1060 +Problem: When imstyle is zero, mapping <Left> breaks preediting. +Solution: Pass though preediting key-events. (Yasuhiro Matsumoto, closes + #2064, closes #2063) +Files: src/getchar.c, src/mbyte.c + +Patch 8.0.1061 +Problem: Coverity: no check for NULL command. +Solution: Check for NULL list item. +Files: src/terminal.c + +Patch 8.0.1062 +Problem: Coverity warnings in libvterm. +Solution: Add (void) to avoid warning for not checking return value. + Add "break" before "case". +Files: src/libvterm/src/screen.c, src/libvterm/src/state.c + +Patch 8.0.1063 +Problem: Coverity warns for NULL check and using variable pointer as an + array. +Solution: Remove the NULL check. Make "argvar" an array. +Files: src/terminal.c + +Patch 8.0.1064 +Problem: Coverity warns for leaking resource. +Solution: Free pty_master_fd on failure. +Files: src/os_unix.c + +Patch 8.0.1065 +Problem: Not all macro examples are included in the self-installing + executable. (lkintact) +Solution: Add the directories to the NSIS script. (closes #2065) +Files: nsis/gvim.nsi + +Patch 8.0.1066 +Problem: Some terminals can't handle requesting cursor mode. (Steven + Hartland) +Solution: Recognize vandyke SecureCRT. (closes #2008) +Files: src/term.c + +Patch 8.0.1067 +Problem: Using try/catch in timer does not prevent it from being stopped. +Solution: Reset the exception context and use did_emsg instead of + called_emsg. +Files: src/ex_cmds2.c, src/testdir/test_timers.vim, src/globals.h, + src/message.c + +Patch 8.0.1068 (after 8.0.1066) +Problem: Vandyke SecureCRT terminal can't handle cursor mode request. + (Steven Hartland) +Solution: Fix pointer computation. (closes #2008) +Files: src/term.c + +Patch 8.0.1069 +Problem: Still get CTRL-X sometimes for t_RS request. +Solution: Also skip 0x18 after a key code response. +Files: src/term.c + +Patch 8.0.1070 +Problem: Terminal test is flaky on Mac. +Solution: Add Test_terminal_noblock() to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1071 +Problem: $TERM names starting with "putty" and "cygwin" are likely to have + a dark background, but are not recognized. +Solution: Only check the first few characters of $TERM to match "putty" or + "cygwin". (Christian Brabandt) +Files: src/option.c + +Patch 8.0.1072 +Problem: The :highlight command causes a redraw even when nothing changed. +Solution: Only set "need_highlight_changed" when an attribute changed. +Files: src/syntax.c + +Patch 8.0.1073 +Problem: May get an endless loop if 'statusline' changes a highlight. +Solution: Do not let evaluating 'statusline' trigger a redraw. +Files: src/buffer.c + +Patch 8.0.1074 +Problem: ":term NONE" does not work on MS-Windows. +Solution: Make it work. Split "pty" into "pty_in" and "pty_out". (Yasuhiro + Matsumoto, closes #2058, closes #2045) +Files: runtime/doc/eval.txt, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + src/channel.c, src/evalfunc.c, src/os_unix.c, src/structs.h, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1075 +Problem: MS-Windows: mouse does not work in terminal. +Solution: Force the winpty mouse on. (Yasuhiro Matsumoto, closes #2072) +Files: src/terminal.c + +Patch 8.0.1076 +Problem: term_start() does not take callbacks. When using two terminals + without a job only one is read from. A terminal without a window + returns the wrong pty. +Solution: Support "callback", "out_cb" and "err_cb". Fix terminal without a + window. Fix reading from multiple channels. +Files: src/terminal.c, src/proto/terminal.pro, src/channel.c + +Patch 8.0.1077 +Problem: No debugger making use of the terminal window. +Solution: Add the term debugger plugin. So far only displays the current + line when stopped. +Files: Filelist, runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1078 +Problem: Using freed memory with ":hi Normal". +Solution: Get "item" again after updating the table. +Files: src/syntax.c + +Patch 8.0.1079 +Problem: Memory leak when remote_foreground() fails. +Solution: Free the error message. +Files: src/evalfunc.c, src/if_xcmdsrv.c + +Patch 8.0.1080 +Problem: Memory leak for eof_chars terminal option and buffer name. +Solution: Free job options. Free the buffer name +Files: src/terminal.c + +Patch 8.0.1081 +Problem: Memory leak for the channel write queue. +Solution: Free the write queue when clearing a channel. +Files: src/channel.c + +Patch 8.0.1082 +Problem: Tests fail when run under valgrind. +Solution: Increase waiting times. +Files: src/testdir/test_clientserver.vim, src/testdir/test_terminal.vim + +Patch 8.0.1083 +Problem: Leaking memory in input part of channel. +Solution: Clear the input part of channel. Free the entry. Move failing + command test to a separate file to avoid bogus leak reports + clouding tests that should not leak. +Files: src/channel.c, src/testdir/test_terminal.vim, src/Makefile, + src/testdir/test_terminal_fail.vim, src/testdir/Make_all.mak + +Patch 8.0.1084 +Problem: GTK build has compiler warnings. (Christian Brabandt) +Solution: Get screen size with a different function. (Ken Takata, Yasuhiro + Matsumoto) +Files: src/mbyte.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, + src/gui_beval.c + +Patch 8.0.1085 +Problem: The terminal debugger can't set breakpoints. +Solution: Add :Break and :Delete commands. Also commands for stepping + through code. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1086 (after 8.0.1084) +Problem: Can't build with GTK 3. +Solution: Rename function argument. (Kazunobu Kuriyama) +Files: src/gui_gtk_x11.c + +Patch 8.0.1087 +Problem: Test_terminal_cwd is flaky. MS-Windows: term_start() "cwd" + argument does not work. +Solution: Wait for the condition to be true instead of using a sleep. + Pass the directory to winpty. +Files: src/testdir/test_terminal.vim, src/terminal.c + +Patch 8.0.1088 +Problem: Occasional memory use after free. +Solution: Use the highlight table directly, don't keep a pointer. +Files: src/syntax.c + +Patch 8.0.1089 +Problem: Cannot get range count in user command. +Solution: Add <range> argument. +Files: src/ex_docmd.c, runtime/doc/map.txt + +Patch 8.0.1090 +Problem: cannot get the text under the cursor like v:beval_text +Solution: Add <cexpr>. +Files: src/ex_docmd.c, src/testdir/test_normal.vim, + runtime/doc/cmdline.txt + +Patch 8.0.1091 (after 8.0.1090) +Problem: Test for <cexpr> fails without +balloon_eval feature. +Solution: Remove #ifdefs. +Files: src/normal.c + +Patch 8.0.1092 +Problem: Terminal debugger can't evaluate expressions. +Solution: Add :Evaluate and K. Various other improvements. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1093 +Problem: Various small quickfix issues. +Solution: Remove ":" prefix from title set by a user. Add the qf_id2nr(). + function. Add a couple more tests. Update documentation. + (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/evalfunc.c, + src/proto/quickfix.pro, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1094 +Problem: Using ssh from Terminal.app runs into xterm incompatibility. +Solution: Also detect Terminal.app on non-Mac systems. +Files: src/term.c + +Patch 8.0.1095 +Problem: Terminal multibyte scrape test is flaky. +Solution: Add another condition to wait for. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1096 +Problem: Terminal window in Normal mode has wrong background. +Solution: Store the default background and use it for clearing until the + end of the line. Not for below the last line, since there is no + text there. +Files: src/screen.c, src/terminal.c + +Patch 8.0.1097 (after 8.0.1096) +Problem: Background color wrong if job changes background color. +Solution: Get the background color from vterm. +Files: src/terminal.c, src/screen.c + +Patch 8.0.1098 +Problem: Build failure if libvterm installed on the system. (Oleh + Hushchenkov) +Solution: Change the CCCTERM argument order. (Ken Takata, closes #2080) +Files: src/Makefile + +Patch 8.0.1099 +Problem: Warnings for GDK calls. +Solution: Use other calls for GTK 3 and fix a few problems. (Kazunobu + Kuriyama) +Files: src/mbyte.c + +Patch 8.0.1100 +Problem: Stuck in redraw loop when 'lazyredraw' is set. +Solution: Don't loop on update_screen() when not redrawing. (Yasuhiro + Matsumoto, closes #2082) +Files: src/terminal.c, src/screen.c, src/proto/screen.pro + +Patch 8.0.1101 +Problem: Channel write fails if writing to log fails. +Solution: Ignore return value of fwrite(). (Ozaki Kiichi, closes #2081) +Files: src/channel.c + +Patch 8.0.1102 +Problem: Terminal window does not use Normal colors. +Solution: For the GUI and when 'termguicolors' is enabled, use the actual + foreground and background colors for the terminal. (Yasuhiro + Matsumoto, closes #2067) + Use the "Terminal" highlight group if defined. +Files: src/terminal.c, src/syntax.c, src/proto/syntax.pro + +Patch 8.0.1103 (after 8.0.1102) +Problem: Converting cterm color fails for grey ramp. +Solution: Use index instead of number. +Files: src/terminal.c + +Patch 8.0.1104 +Problem: The qf_jump() function is too long. +Solution: Split of parts to separate functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1105 +Problem: match() and matchend() are not tested. +Solution: Add tests. (Ozaki Kiichi, closes #2088) +Files: src/testdir/test_functions.vim, src/testdir/test_match.vim + +Patch 8.0.1106 +Problem: Terminal colors on an MS-Windows console are not matching the + normal colors. +Solution: Use the normal colors for the terminal. (Yasuhiro Matsumoto, + closes #2087) +Files: src/terminal.c + +Patch 8.0.1107 +Problem: Terminal debugger jumps to non-existing file. +Solution: Check that the file exists. Add an option to make the Vim width + wide. Fix removing highlight groups. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1108 +Problem: Cannot specify mappings for the terminal window. +Solution: Add the :tmap command and associated code. (Jacob Askeland, + closes #2073) +Files: runtime/doc/map.txt, runtime/doc/terminal.txt, src/ex_cmdidxs.h, + src/ex_cmds.h, src/ex_docmd.c, src/getchar.c, src/gui.c, + src/terminal.c, src/testdir/test_terminal.vim, src/vim.h, + src/proto/terminal.pro, src/main.c, src/evalfunc.c + +Patch 8.0.1109 +Problem: Timer causes error on exit from Ex mode. (xtal8) +Solution: save and restore the ex_pressedreturn flag. (Christian Brabandt, + closes #2079) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_cmds2.c, + src/testdir/test_timers.vim + +Patch 8.0.1110 +Problem: FORTIFY_SOURCE from Perl causes problems. (Scott Baker) +Solution: Filter out the flag. (Christian Brabandt, closes #2068) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1111 +Problem: Syntax error in configure when using Perl. +Solution: Add missing quote +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1112 +Problem: Can't get size or current index from quickfix list. +Solution: Add "idx" and "size" options. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1113 +Problem: Can go to Insert mode from Terminal-Normal mode. +Solution: Prevent :startinsert and "VA" to enter Insert mode. (Yasuhiro + Matsumoto, closes #2092) +Files: src/normal.c + +Patch 8.0.1114 +Problem: Default for 'iminsert' is annoying. +Solution: Make the default always zero. (Yasuhiro Matsumoto, closes #2071) +Files: src/option.c, runtime/doc/options.txt + +Patch 8.0.1115 +Problem: Crash when using foldtextresult() recursively. +Solution: Avoid recursive calls. (Yasuhiro Matsumoto, closes #2098) +Files: src/evalfunc.c, src/testdir/test_fold.vim + +Patch 8.0.1116 +Problem: Terminal test fails on MS-Windows. +Solution: Wait for the text to appear. (micbou, closes #2097) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1117 +Problem: Test_terminal_no_cmd hangs on MS-Windows with GUI. (Christian + Brabandt) +Solution: Run the command with "start" and wait for the text to appear. + (micbou, closes #2096) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1118 +Problem: FEAT_WINDOWS adds a lot of #ifdefs while it is nearly always + enabled and only adds 7% to the binary size of the tiny build. +Solution: Graduate FEAT_WINDOWS. +Files: src/feature.h, src/window.c, src/vim.h, src/structs.h, + src/globals.h, src/gui.h, src/if_py_both.h, src/option.h, + src/term.h, src/buffer.c, src/charset.c, src/digraph.c, + src/edit.c, src/eval.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/fileio.c, + src/fold.c, src/getchar.c, src/gui.c, src/gui_athena.c, + src/gui_beval.c, src/gui_gtk.c, src/gui_motif.c, src/gui_w32.c, + src/if_cscope.c, src/if_lua.c, src/if_mzsch.c, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/main.c, + src/mark.c, src/memline.c, src/misc1.c, src/misc2.c, src/move.c, + src/netbeans.c, src/normal.c, src/option.c, src/popupmnu.c, + src/quickfix.c, src/screen.c, src/search.c, src/spell.c, + src/syntax.c, src/tag.c, src/term.c, src/ui.c, src/version.c, + src/workshop.c, src/if_perl.xs, src/testdir/test_normal.vim + +Patch 8.0.1119 +Problem: Quitting a split terminal window kills the job. (Yasuhiro + Matsumoto) +Solution: Only stop terminal job if it is the last window. +Files: src/buffer.c, src/testdir/test_terminal.vim + +Patch 8.0.1120 (after 8.0.1108) +Problem: :tm means :tmap instead of :tmenu. (Taro Muraoka) +Solution: Move the new entry below the old entry. (closes #2102) +Files: src/ex_cmds.h, runtime/doc/map.txt + +Patch 8.0.1121 +Problem: Can uncheck executables in MS-Windows installer. +Solution: Make the choice read-only. (Ken Takata, closes #2106) +Files: nsis/gvim.nsi + +Patch 8.0.1122 +Problem: vimtutor.bat doesn't work well with vim.bat. +Solution: Use "call vim". (Ken Takata, closes #2105) +Files: vimtutor.bat + +Patch 8.0.1123 +Problem: Cannot define a toolbar for a window. +Solution: Add a window-local toolbar. +Files: src/syntax.c, src/proto/syntax.pro, src/structs.h, src/menu.c, + src/proto/menu.pro, src/testdir/test_winbar.vim, src/Makefile, + src/normal.c, src/testdir/Make_all.mak, src/if_perl.xs, + src/eval.c, src/evalfunc.c, src/window.c, src/ui.c, + src/terminal.c, src/screen.c, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/gui.txt, runtime/doc/terminal.txt + +Patch 8.0.1124 +Problem: Use of MZSCHEME_VER is unclear. +Solution: Add a comment. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.1125 +Problem: Wrong window height when splitting window with window toolbar. +Solution: Add or subtract the window toolbar height. +Files: src/window.c + +Patch 8.0.1126 +Problem: Endless resize when terminal showing in two buffers. (Hirohito + Higashi) +Solution: Set a flag to prevent resizing the window. +Files: src/terminal.c + +Patch 8.0.1127 +Problem: Test_peek_and_get_char fails on 32 bit system. (Elimar + Riesebieter) +Solution: Avoid an integer overflow. (James McCoy, closes #2116) +Files: src/ex_cmds2.c + +Patch 8.0.1128 +Problem: Old xterm sends CTRL-X in response to t_RS. +Solution: Only send t_RS for xterm 279 and later. Remove the workaround to + ignore CTRL-X. +Files: src/term.c + +Patch 8.0.1129 +Problem: Window toolbar missing a part of the patch. +Solution: Add change in vim.h. +Files: src/vim.h + +Patch 8.0.1130 +Problem: The qf_jump() function is still too long. +Solution: Split of parts to separate functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1131 +Problem: It is not easy to trigger an autocommand for new terminal window. + (Marco Restelli) +Solution: Trigger BufWinEnter after setting 'buftype'. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1132 +Problem: #if condition is not portable. +Solution: Add defined(). (Zuloloxi, closes #2136) +Files: src/libvterm/src/vterm.c + +Patch 8.0.1133 +Problem: Syntax timeout not used correctly. +Solution: Do not pass the timeout to syntax_start() but set it explicitly. + (Yasuhiro Matsumoto, closes #2139) +Files: src/proto/syntax.pro, src/screen.c, src/syntax.c + +Patch 8.0.1134 +Problem: Superfluous call to syn_get_final_id(). +Solution: Remove it. (Ken Takata) +Files: src/syntax.c + +Patch 8.0.1135 +Problem: W_WINCOL() is always the same. +Solution: Expand the macro. +Files: src/edit.c, src/ex_docmd.c, src/gui_gtk.c, src/gui_w32.c, + src/netbeans.c, src/popupmnu.c, src/screen.c, src/term.c, + src/terminal.c, src/ui.c, src/window.c, src/if_py_both.h, + src/structs.h, src/vim.h + +Patch 8.0.1136 +Problem: W_WIDTH() is always the same. +Solution: Expand the macro. +Files: src/charset.c, src/edit.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_docmd.c, src/getchar.c, src/gui.c, src/gui_beval.c, + src/gui_mac.c, src/if_lua.c, src/if_mzsch.c, src/if_py_both.h, + src/if_ruby.c, src/misc1.c, src/misc2.c, src/move.c, src/normal.c, + src/popupmnu.c, src/quickfix.c, src/screen.c, src/search.c, + src/structs.h, src/ui.c, src/vim.h, src/window.c + +Patch 8.0.1137 (after 8.0.1136) +Problem: Cannot build with Ruby. +Solution: Fix misplaced brace. +Files: src/if_ruby.c + +Patch 8.0.1138 +Problem: Click in window toolbar starts Visual mode. +Solution: Add the MOUSE_WINBAR flag. +Files: src/ui.c, src/vim.h, src/normal.c + +Patch 8.0.1139 +Problem: Using window toolbar changes state. +Solution: Always execute window toolbar actions in Normal mode. +Files: runtime/doc/gui.txt, src/structs.h, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/menu.c + +Patch 8.0.1140 +Problem: Still old style tests. +Solution: Convert two tests to new style. (Yegappan Lakshmanan) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test56.in, src/testdir/test56.ok, + src/testdir/test57.in, src/testdir/test57.ok, + src/testdir/test_sort.vim, src/testdir/test_vimscript.vim + +Patch 8.0.1141 +Problem: MS-Windows build dependencies are incomplete. +Solution: Fix the dependencies. (Ken Takata) +Files: src/Make_cyg.mak, src/Make_cyg_ming.mak, src/Make_ming.mak, + src/Make_mvc.mak + +Patch 8.0.1142 +Problem: Window toolbar menu gets a tear-off item. +Solution: Recognize the window toolbar. +Files: src/menu.c + +Patch 8.0.1143 +Problem: Macros always expand to the same thing. +Solution: Remove W_VSEP_WIDTH() and W_STATUS_HEIGHT(). +Files: src/vim.h, src/structs.h, src/gui.c, src/ex_getln.c, src/screen.c + +Patch 8.0.1144 +Problem: Using wrong #ifdef for computing length. +Solution: use BACKSLASH_IN_FILENAME instead of COLON_IN_FILENAME. (Yasuhiro + Matsumoto, closes #2153) +Files: src/quickfix.c + +Patch 8.0.1145 +Problem: Warning when compiling with Perl. +Solution: Remove unused variable. (Ken Takata) +Files: src/if_perl.xs + +Patch 8.0.1146 +Problem: Redraw when highlight is set with same names. (Ozaki Kiichi) +Solution: Only free and save a name when it changed. (closes #2120) +Files: src/syntax.c + +Patch 8.0.1147 +Problem: Fail to build with tiny features. (Tony Mechelynck) +Solution: Move #ifdefs. +Files: src/syntax.c + +Patch 8.0.1148 +Problem: "gN" doesn't work on last match with 'wrapscan' off. (fcpg) +Solution: Adjust for searching backward. (Christian Brabandt) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.0.1149 +Problem: libvterm colors differ from xterm. +Solution: Use the xterm colors for libvterm. +Files: src/terminal.c, src/libvterm/src/pen.c, + src/testdir/xterm_ramp.vim, Filelist + +Patch 8.0.1150 +Problem: MS-Windows GUI: dialog font size is incorrect. +Solution: Pass flag to indicate 'encoding' or active codepage. (Yasuhiro + Matsumoto, closes #2160) +Files: src/gui_w32.c + +Patch 8.0.1151 +Problem: "vim -c startinsert!" doesn't append. +Solution: Correct line number on startup. (Christian Brabandt, closes #2117) +Files: src/ex_docmd.c, src/testdir/test_startup.vim + +Patch 8.0.1152 +Problem: Encoding of error message wrong in Cygwin terminal. +Solution: Get locale from environment variables. (Ken Takata) +Files: src/main.c, src/mbyte.c, src/proto/mbyte.pro + +Patch 8.0.1153 +Problem: No tests for diff_hlID() and diff_filler(). +Solution: Add tests. (Dominique Pelle, closes #2156) +Files: src/testdir/test_diffmode.vim + +Patch 8.0.1154 +Problem: 'indentkeys' does not work properly. (Gary Johnson) +Solution: Get the cursor line again. (Christian Brabandt, closes #2151) +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.0.1155 +Problem: Ruby command triggers a warning when RUBYOPT is set to "-w". +Solution: use "-e_=0" instead of "-e0". (Masataka Pocke Kuwabara, closes + #2143) +Files: src/if_ruby.c + +Patch 8.0.1156 +Problem: Removing one -W argument from Perl CFLAGS may cause trouble. +Solution: Remove all -W flags. (Christian Brabandt) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1157 +Problem: Compiler warning on MS-Windows. +Solution: Add type cast. (Yasuhiro Matsumoto) +Files: src/main.c + +Patch 8.0.1158 +Problem: Still old style tests. +Solution: Convert several tests to new style. (Yegappan Lakshmanan) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test33.in, + src/testdir/test33.ok, src/testdir/test41.in, + src/testdir/test41.ok, src/testdir/test43.in, + src/testdir/test43.ok, src/testdir/test53.in, + src/testdir/test53.ok, src/testdir/test_file_size.vim, + src/testdir/test_lispwords.vim, src/testdir/test_search.vim, + src/testdir/test_textobjects.vim + +Patch 8.0.1159 +Problem: Typo in #ifdef. +Solution: Change "PROT" to "PROTO". (Nobuhiro Takasaki, closes #2165) +Files: src/syntax.c + +Patch 8.0.1160 +Problem: Getting tab-local variable fails after closing window. +Solution: set tp_firstwin and tp_lastwin. (Jason Franklin, closes #2170) +Files: src/window.c, src/evalfunc.c, src/testdir/test_getvar.vim + +Patch 8.0.1161 +Problem: Popup menu drawing problem when resizing terminal. +Solution: Redraw after resizing also when a popup menu is visible. (Ozaki + Kiichi, closes #2110) +Files: src/popupmnu.c, src/term.c, src/testdir/shared.vim, + src/testdir/test_popup.vim + +Patch 8.0.1162 +Problem: Shared script for tests cannot be included twice. +Solution: Include it where needed, it will "finish" if loaded again. +Files: src/testdir/test_alot.vim, src/testdir/test_bufline.vim, + src/testdir/test_timers.vim + +Patch 8.0.1163 +Problem: Popup test is flaky. +Solution: Add a WaitFor() and fix another. +Files: src/testdir/test_popup.vim + +Patch 8.0.1164 +Problem: Changing StatusLine highlight while evaluating 'statusline' may + not change the status line color. +Solution: When changing highlighting while redrawing don't cause another + redraw. (suggested by Ozaki Kiichi, closes #2171, closes #2120) +Files: src/buffer.c, src/syntax.c + +Patch 8.0.1165 +Problem: Popup test is still flaky. +Solution: Add a term_wait() call. (Ozaki Kiichi) +Files: src/testdir/test_popup.vim + +Patch 8.0.1166 +Problem: :terminal doesn't work on Mac High Sierra. +Solution: Change #ifdef for OpenPTY(). (Ozaki Kiichi, Kazunobu Kuriyama, + closes #2162) +Files: src/pty.c + +Patch 8.0.1167 +Problem: Motif: typing in terminal window is slow. +Solution: Do not redraw the whole terminal window but only what was changed. +Files: src/terminal.c + +Patch 8.0.1168 +Problem: wrong highlighting with combination of match and 'cursorline'. +Solution: Use "line_attr" when appropriate. (Ozaki Kiichi, closes #2111) + But don't highlight more than one character. +Files: src/screen.c, src/testdir/test_highlight.vim, + src/testdir/view_util.vim + +Patch 8.0.1169 +Problem: Highlighting one char too many with 'list' and 'cul'. +Solution: Check for 'list' being active. (Ozaki Kiichi, closes #2177) +Files: src/screen.c, src/testdir/test_highlight.vim + +Patch 8.0.1170 +Problem: Using termdebug results in 100% CPU time. (tomleb) +Solution: Use polling instead of select(). +Files: src/os_unix.c, src/channel.c, src/proto/channel.pro + +Patch 8.0.1171 +Problem: Popup test is still a bit flaky. +Solution: Change term_wait() calls. (Ozaki Kiichi) +Files: src/testdir/test_popup.vim + +Patch 8.0.1172 +Problem: When E734 is given option is still set. +Solution: Assign NULL to "s". (Christian Brabandt) +Files: src/eval.c, src/testdir/test_assign.vim + +Patch 8.0.1173 +Problem: Terminal window is not redrawn after CTRL-L. (Marcin Szamotulski) +Solution: Redraw the whole terminal when w_redr_type is NOT_VALID. +Files: src/terminal.c + +Patch 8.0.1174 +Problem: Mac Terminal.app has wrong color for white. +Solution: Use white from the color cube. +Files: src/globals.h, src/term.c, src/syntax.c + +Patch 8.0.1175 (after 8.0.1174) +Problem: Build failure without +termresponse. +Solution: Add #ifdef. +Files: src/syntax.c + +Patch 8.0.1176 +Problem: Job_start() does not handle quote and backslash correctly. +Solution: Remove quotes, recognize and remove backslashes. +Files: src/testdir/test_channel.vim, src/os_unix.c + +Patch 8.0.1177 +Problem: In a terminal window the popup menu is not cleared. (Gerry + Agbobada) +Solution: Redraw when SOME_VALID is used instead of NOT_VALID. (closes + #2194) +Files: src/terminal.c + +Patch 8.0.1178 +Problem: Using old compiler on MS-Windows. +Solution: Switch default build on MS-Windows to use MSVC 2015. (Ken Takata) +Files: src/msvc2015.bat, src/INSTALLpc.txt, src/GvimExt/Makefile, + src/Make_mvc.mak, src/tee/Make_mvc.mak, src/xxd/Make_mvc.mak + +Patch 8.0.1179 +Problem: Test_popup_and_window_resize() does not always pass. +Solution: Do not use $VIMPROG, pass the Vim executable in the vimcmd file. + (Ozaki Kiichi, closes #2186) +Files: src/testdir/Makefile, src/testdir/shared.vim, + src/testdir/test_popup.vim + +Patch 8.0.1180 +Problem: MS-Windows testclean target deletes the color script. +Solution: Rename the script file. +Files: src/testdir/xterm_ramp.vim, src/testdir/color_ramp.vim + +Patch 8.0.1181 +Problem: Tests using Vim command fail on MS-Windows. +Solution: Do not add quotes around the Vim command. +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 8.0.1182 +Problem: Cannot see or change mzscheme dll name. +Solution: Add 'mzschemedll' and 'mzschemegcdll'. +Files: src/if_mzsch.c, src/option.h, src/option.c, + runtime/doc/if_mzsch.txt + +Patch 8.0.1183 +Problem: MS-Windows build instructions are outdated. +Solution: Update instructions for MSVC 2015. Update the build script. +Files: Filelist, Makefile, src/INSTALLpc.txt, src/bigvim.bat + +Patch 8.0.1184 +Problem: The :marks command is not tested. +Solution: Add a test. (Dominique Pelle, closes #2197) +Files: src/testdir/test_marks.vim + +Patch 8.0.1185 +Problem: Ruby library includes minor version number. +Solution: Only use the API version number. (Ben Boeckel, closes #2199) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1186 +Problem: Still quite a few old style tests. +Solution: Convert old to new style tests. (Yegappan Lakshmanan) + Avoid ringing the bell while running tests. +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/main.aap, + src/testdir/test31.in, src/testdir/test31.ok, + src/testdir/test4.in, src/testdir/test4.ok, src/testdir/test5.in, + src/testdir/test5.ok, src/testdir/test60.in, + src/testdir/test60.ok, src/testdir/test60.vim, + src/testdir/test7.in, src/testdir/test7.ok, src/testdir/test78.in, + src/testdir/test78.ok, src/testdir/test_autocmd.vim, + src/testdir/test_exists.vim, src/testdir/test_recover.vim, + src/testdir/test_winbuf_close.vim, src/testdir/runtest.vim + +Patch 8.0.1187 +Problem: Building with lua fails for OSX on Travis. +Solution: Separate brew-update and brew-install. (Ozaki Kiichi, closes #2203) +Files: .travis.yml + +Patch 8.0.1188 +Problem: Autocmd test fails on MS-Windows. +Solution: Give the buffer a name and find the buffer to be wiped out by + name. +Files: src/testdir/test_autocmd.vim + +Patch 8.0.1189 +Problem: E172 is not actually useful, it's only on Unix anyway. +Solution: Remove the check and the error. +Files: src/ex_docmd.c, runtime/doc/message.txt + +Patch 8.0.1190 +Problem: Vim becomes unusable after opening new window in BufWritePre + event. +Solution: Call not_exiting(). (Martin Tournoij, closes #2205) + Also for "2q" when a help window is open. Add a test. +Files: src/ex_docmd.c, src/testdir/test_writefile.vim + +Patch 8.0.1191 +Problem: MS-Windows: missing 32 and 64 bit files in installer. +Solution: Include both 32 and 64 bit GvimExt and related dll files. Remove + old Windows code from the installer. (Ken Takata, closes #2144) +Files: nsis/README.txt, nsis/gvim.nsi, src/GvimExt/gvimext.cpp, + src/dosinst.c, src/dosinst.h, src/uninstal.c, Makefile + +Patch 8.0.1192 +Problem: MS-Windows: terminal feature not enabled by default. +Solution: Enable it. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.0.1193 +Problem: Crash when wiping out a buffer after using getbufinfo(). + (Yegappan Lakshmanan) +Solution: Remove b:changedtick from the buffer variables. +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 8.0.1194 +Problem: Actual fg and bg colors of terminal are unknown. +Solution: Add t_RF. Store response to t_RB and t_RF, use for terminal. +Files: src/term.c, src/term.h, src/proto/term.pro, src/terminal.c, + src/vim.h, src/eval.c, runtime/doc/eval.txt + +Patch 8.0.1195 (after 8.0.1194) +Problem: Can't build on MS-Windows. +Solution: Adjust #ifdef and add #ifdefs. +Files: src/term.c, src/terminal.c + +Patch 8.0.1196 (after 8.0.1194) +Problem: Crash when t_RF is not set. (Brian Pina) +Solution: Add t_RF to the list of terminal options. (Hirohito Higashi) +Files: src/option.c + +Patch 8.0.1197 +Problem: MS-Windows build instructions are not up to date. +Solution: Adjust the instructions. Fix the nsis script. +Files: Makefile, nsis/gvim.nsi + +Patch 8.0.1198 +Problem: Older compilers don't know uint8_t. +Solution: Use char_u instead. +Files: src/term.c, src/proto/term.pro + +Patch 8.0.1199 +Problem: When 'clipboard' is "autoselectplus" the star register is also + set. (Gilles Moris) +Solution: Don't set the star register in this situation. +Files: src/ops.c + +Patch 8.0.1200 +Problem: Tests switch the bell off twice. +Solution: Don't set 'belloff' in individual tests. (Christian Brabandt) +Files: src/testdir/test_alot.vim, src/testdir/test_alot_utf8.vim, + src/testdir/test_autocmd.vim, src/testdir/test_cmdline.vim, + src/testdir/test_diffmode.vim, src/testdir/test_digraph.vim, + src/testdir/test_edit.vim, src/testdir/test_file_size.vim, + src/testdir/test_gn.vim, src/testdir/test_normal.vim, + src/testdir/test_packadd.vim, src/testdir/test_popup.vim, + src/testdir/test_recover.vim, src/testdir/test_search.vim, + src/testdir/test_textobjects.vim, src/testdir/test_undo.vim, + src/testdir/test_usercommands.vim, src/testdir/test_visual.vim + +Patch 8.0.1201 +Problem: "yL" is affected by 'scrolloff'. (Eli the Bearded) +Solution: Don't use 'scrolloff' when an operator is pending. +Files: src/normal.c, runtime/doc/motion.txt + +Patch 8.0.1202 +Problem: :wall gives an error for a terminal window. (Marius Gedminas) +Solution: Don't try writing a buffer that can't be written. (Yasuhiro + Matsumoto, closes #2190) +Files: src/ex_cmds.c, src/testdir/test_terminal.vim + +Patch 8.0.1203 +Problem: Terminal window mistreats composing characters. +Solution: Count composing characters with the base character. (Ozaki Kiichi, + closes #2195) +Files: src/mbyte.c, src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1204 +Problem: A QuitPre autocommand may get the wrong file name. +Solution: Pass the buffer being closed to apply_autocmds(). (Rich Howe) +Files: src/ex_docmd.c, src/testdir/test_autocmd.vim + +Patch 8.0.1205 +Problem: Using "1q" it is possible to unload a changed buffer. (Rick Howe) +Solution: Check the right window for changes. +Files: src/testdir/test_edit.vim, src/ex_docmd.c + +Patch 8.0.1206 +Problem: No autocmd for entering or leaving the command line. +Solution: Add CmdlineEnter and CmdlineLeave. +Files: runtime/doc/autocmd.txt, src/ex_getln.c, src/fileio.c, src/vim.h, + src/testdir/test_autocmd.vim + +Patch 8.0.1207 +Problem: Profiling skips the first and last script line. +Solution: Check for BOM after setting script ID. (LemonBoy, closes #2103, + closes #2112) Add a test. List the trailing script lines. +Files: src/testdir/test_profile.vim, src/ex_cmds2.c + +Patch 8.0.1208 +Problem: 'statusline' drops empty group with highlight change. +Solution: Do not drop an empty group if it changes highlighting. (Marius + Gedminas, closes #2228) +Files: src/buffer.c, src/testdir/test_statusline.vim + +Patch 8.0.1209 +Problem: Still too many old style tests. +Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, + closes #2230) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_ming.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Makefile, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test34.in, + src/testdir/test34.ok, src/testdir/test54.in, + src/testdir/test54.ok, src/testdir/test8.in, src/testdir/test8.ok, + src/testdir/test_autocmd.vim, src/testdir/test_autoformat_join.in, + src/testdir/test_autoformat_join.ok, src/testdir/test_join.vim, + src/testdir/test_user_func.vim + +Patch 8.0.1210 +Problem: When typing a search pattern CTRL-G and CTRL-T are ignored when + there is typeahead. +Solution: Don't pass SEARCH_PEEK and don't call char_avail(). (haya14busa, + closes #2233) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.0.1211 +Problem: Cannot reorder tab pages with drag & drop. +Solution: Support drag & drop for GTK and MS-Windows. (Ken Takata, Masamichi + Abe) +Files: src/gui_gtk_x11.c, src/gui_w32.c + +Patch 8.0.1212 +Problem: MS-Windows: tear-off menu does not work on 64 bit. (shaggyaxe) +Solution: Change how the menu handle is looked up. (Ken Takata, closes + #1205) +Files: src/gui_w32.c + +Patch 8.0.1213 +Problem: Setting 'mzschemedll' has no effect. +Solution: Move loading .vimrc to before call to mzscheme_main(). +Files: src/main.c + +Patch 8.0.1214 +Problem: Accessing freed memory when EXITFREE is set and there is more than + one tab and window. (Dominique Pelle) +Solution: Free options later. Skip redraw when exiting. +Files: src/screen.c, src/misc2.c + +Patch 8.0.1215 +Problem: Newer gcc warns for implicit fallthrough. +Solution: Consistently use a FALLTHROUGH comment. (Christian Brabandt) +Files: src/buffer.c, src/edit.c, src/eval.c, src/ex_docmd.c, + src/ex_getln.c, src/main.c, src/message.c, src/normal.c, + src/regexp.c, src/regexp_nfa.c, src/spell.c, src/window.c, + src/if_perl.xs + +Patch 8.0.1216 +Problem: Tabline is not always updated for :file command. (Norio Takagi) +Solution: Set redraw_tabline. (Hirohito Higashi) +Files: src/ex_cmds.c + +Patch 8.0.1217 +Problem: Can't use remote eval to inspect vars in debug mode. +Solution: Don't discard the call stack in debug mode. (closes #2237, #2247) +Files: src/globals.h, src/ex_cmds2.c, src/main.c + +Patch 8.0.1218 +Problem: Writing to freed memory in autocmd. +Solution: Make a copy of the tag line. (Dominique Pelle, closes #2245) +Files: src/tag.c, src/testdir/test_autocmd.vim + +Patch 8.0.1219 +Problem: Terminal test is flaky. +Solution: Add test function to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1220 +Problem: Skipping empty statusline groups is not correct. +Solution: Also set group_end_userhl. (itchyny) +Files: src/buffer.c, src/testdir/test_statusline.vim + +Patch 8.0.1221 +Problem: Still too many old style tests. +Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, + closes #2256) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test19.in, + src/testdir/test19.ok, src/testdir/test20.in, + src/testdir/test20.ok, src/testdir/test25.in, + src/testdir/test25.ok, src/testdir/test28.in, + src/testdir/test28.ok, src/testdir/test32.in, + src/testdir/test32.ok, src/testdir/test38.in, + src/testdir/test38.ok, src/testdir/test66.in, + src/testdir/test66.ok, src/testdir/test79.in, + src/testdir/test79.ok, src/testdir/test_ins_complete.vim, + src/testdir/test_source_utf8.vim, src/testdir/test_substitute.vim, + src/testdir/test_tab.vim, src/testdir/test_tagjump.vim, + src/testdir/test_undo.vim, src/testdir/test_visual.vim, + src/testdir/test79.ok, src/testdir/test79.in, + src/testdir/test28.in + +Patch 8.0.1222 +Problem: Test functions interfere with each other. +Solution: Cleanup tab pages, windows and buffers. Reset option. +Files: src/testdir/runtest.vim, src/testdir/test_filetype.vim, + src/testdir/test_tabpage.vim, src/testdir/test_lispwords.vim + +Patch 8.0.1223 +Problem: Crash when using autocomplete and tab pages. +Solution: Check if the current tab changed. (Christian Brabandt, closes + #2239) +Files: src/popupmnu.c, src/testdir/test_popup.vim, src/misc1.c, + +Patch 8.0.1224 +Problem: Still interference between test functions. +Solution: Clear autocommands. Wipe all buffers. Fix tests that depend on a + specific start context. +Files: src/testdir/runtest.vim, src/testdir/test_autocmd.vim, + src/testdir/test_arglist.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_command_count.vim, src/testdir/test_quickfix.vim, + src/testdir/test_hardcopy.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_packadd.vim, src/testdir/test_signs.vim, + src/testdir/test_autochdir.vim + +Patch 8.0.1225 +Problem: No check for spell region being zero. (geeknik) +Solution: Check for zero. (closes #2252) +Files: src/spellfile.c, src/testdir/test_spell.vim + +Patch 8.0.1226 +Problem: Edit and popup tests failing. +Solution: Make the tests pass. +Files: src/testdir/test_edit.vim, src/testdir/test_popup.vim + +Patch 8.0.1227 +Problem: Undefined left shift in readfile(). (Brian 'geeknik' Carpenter) +Solution: Add cast to unsigned. (Dominique Pelle, closes #2253) +Files: src/fileio.c + +Patch 8.0.1228 +Problem: Invalid memory access in GUI test. +Solution: Check that the row is not outside of the screen. +Files: src/screen.c + +Patch 8.0.1229 +Problem: Condition in vim_str2nr() is always true. (Nikolai Pavlov) +Solution: Remove the condition. (Closes #2259) +Files: src/charset.c + +Patch 8.0.1230 +Problem: CTRL-A in Visual mode uses character after selection. (Nikolai + Pavlov) +Solution: Check the length before using a character. +Files: src/charset.c + +Patch 8.0.1231 +Problem: Expanding file name drops dash. (stucki) +Solution: Use the right position. (Christian Brabandt, closes #2184) +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.0.1232 +Problem: MS-Windows users are confused about default mappings. +Solution: Don't map keys in the console where they don't work. Add a choice + in the installer to use MS-Windows key bindings or not. (Christian + Brabandt, Ken Takata, closes #2093) +Files: Filelist, nsis/gvim.nsi, nsis/vimrc.ini, src/dosinst.c, + runtime/mswin.vim + +Patch 8.0.1233 +Problem: Typo in dos installer. +Solution: Remove comma. +Files: src/dosinst.c + +Patch 8.0.1234 +Problem: MS-Windows: composing characters are not shown properly. +Solution: Pass base character and composing characters to the renderer at + once. (Ken Takata, closes #2206) +Files: src/gui.c, src/gui_w32.c + +Patch 8.0.1235 +Problem: Cannot disable the terminal feature in a huge build. (lindhobe) +Solution: Adjust the autoconf check. (Kazunobu Kuriyama, closes #2242) +Files: src/configure.ac, src/auto/configure, src/Makefile + +Patch 8.0.1236 +Problem: Mac features are confusing. +Solution: Make feature names more consistent, add "osxdarwin". Rename + feature flags, cleanup Mac code. (Kazunobu Kuriyama, closes #2178) + Also includes a fix for when Ruby throws an exception inside + :rubyfile. (ujihisa) +Files: runtime/doc/eval.txt, runtime/doc/os_mac.txt, src/auto/configure, + src/config.h.in, src/configure.ac, src/digraph.c, src/edit.c, + src/evalfunc.c, src/feature.h, src/fileio.c, src/getchar.c, + src/globals.h, src/gui.c, src/gui_mac.c, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/keymap.h, src/macros.h, + src/main.c, src/mbyte.c, src/message.c, src/misc1.c, src/misc2.c, + src/option.c, src/os_mac.h, src/os_macosx.m, src/os_unix.c, + src/proto.h, src/pty.c, src/structs.h, src/term.c, src/termlib.c, + src/ui.c, src/undo.c, src/version.c, src/vim.h, src/window.c + +Patch 8.0.1237 +Problem: ":set scroll&" often gives an error. +Solution: Don't use a fixed default value, use half the window height. Add a + test. (Ozaki Kiichi, closes #2104) +Files: src/Makefile, src/option.c, src/testdir/test_alot.vim, + src/testdir/test_scroll_opt.vim + +Patch 8.0.1238 +Problem: Incremental search only shows one match. +Solution: When 'incsearch' and 'hlsearch' are both set highlight all + matches. (haya14busa, itchyny, closes #2198) +Files: runtime/doc/options.txt, src/ex_getln.c, src/proto/search.pro, + src/search.c, src/testdir/test_search.vim + +Patch 8.0.1239 +Problem: Cannot use a lambda for the skip argument to searchpair(). +Solution: Evaluate a partial, funcref and lambda. (LemonBoy, closes #1454, + closes #2265) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/evalfunc.pro, + src/eval.c, src/proto/eval.pro, src/search.c, + src/testdir/test_search.vim + +Patch 8.0.1240 +Problem: MS-Windows: term_start() does not support environment. +Solution: Implement the environment argument. (Yasuhiro Matsumoto, closes + #2264) +Files: src/os_win32.c, src/proto/os_win32.pro, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.0.1241 +Problem: Popup test is flaky. (James McCoy) +Solution: Increase the wait time. (Dominique Pelle) +Files: src/testdir/test_popup.vim + +Patch 8.0.1242 +Problem: Function argument with only dash is seen as number zero. (Wang + Shidong) +Solution: See a dash as a string. (Christian Brabandt) +Files: src/testdir/test_ins_complete.vim, src/Makefile, src/eval.c + +Patch 8.0.1243 +Problem: No test for what 8.0.1227 fixes. +Solution: Add a test that triggers the problem. (Christian Brabandt) +Files: src/testdir/test_normal.vim, src/testdir/test_search.vim + +Patch 8.0.1244 +Problem: Search test does not work correctly on MS-Windows. +Solution: Put text in a file instead of sending it to the terminal. + (Christian Brabandt) +Files: src/testdir/test_search.vim + +Patch 8.0.1245 +Problem: When WaitFor() has a wrong expression it just waits a second, + which goes unnoticed. (James McCoy) +Solution: When WaitFor() times out throw an exception. Fix places where the + expression was wrong. +Files: src/testdir/shared.vim, src/testdir/test_channel.vim, + src/testdir/test_netbeans.vim, src/testdir/test_terminal.vim + +Patch 8.0.1246 +Problem: Popup test has an arbitrary delay. +Solution: Wait for the ruler to show. (James McCoy) +Files: src/testdir/test_popup.vim + +Patch 8.0.1247 +Problem: Not easy to find Debian build info. +Solution: Add a badge in the README file. (Dominique Pelle) +Files: README.md + +Patch 8.0.1248 (after 8.0.1247) +Problem: Stray + in README file. +Solution: Remove the +. Add a line break. +Files: README.md + +Patch 8.0.1249 +Problem: No error when WaitFor() gets an invalid wrong expression. +Solution: Do not ignore errors in evaluation of the expression. Fix places + where the expression was wrong. +Files: src/testdir/shared.vim, src/testdir/test_netbeans.vim + +Patch 8.0.1250 +Problem: 'hlsearch' highlighting not removed after incsearch (lacygoill) +Solution: Redraw all windows. Start search at the end of the match. Improve + how CTRL-G works with incremental search. Add tests. (Christian + Brabandt, Hirohito Higashi, haya14busa, closes #2267) +Files: runtime/doc/options.txt, src/ex_getln.c, + src/testdir/test_search.vim + +Patch 8.0.1251 (after 8.0.1249) +Problem: Invalid expression passed to WaitFor(). +Solution: Check if the variable exists. +Files: src/testdir/test_clientserver.vim + +Patch 8.0.1252 +Problem: Incomplete translations makefile for MinGW/Cygwin. +Solution: Add missing source files. Make it work with msys2's bash. (Ken + Takata) +Files: src/po/Make_cyg.mak, src/po/Make_ming.mak, src/po/Make_mvc.mak + +Patch 8.0.1253 +Problem: Still too many old style tests. +Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, + closes #2272) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test12.in, + src/testdir/test12.ok, src/testdir/test40.in, + src/testdir/test40.ok, src/testdir/test45.in, + src/testdir/test45.ok, src/testdir/test83.in, + src/testdir/test83.ok, src/testdir/test_autocmd.vim, + src/testdir/test_fold.vim, src/testdir/test_swap.vim, + src/testdir/test_tagjump.vim + +Patch 8.0.1254 +Problem: Undefined left shift in gethexchrs(). (geeknik) +Solution: Use unsigned long. (idea by Christian Brabandt, closes #2255) +Files: src/regexp.c, src/regexp_nfa.c + + +Patch 8.0.1255 (after 8.0.1248) +Problem: duplicate badge README file. +Solution: Remove one. (Dominique Pelle) +Files: README.md + +Patch 8.0.1256 +Problem: Typo in configure variable vim_cv_tgent. (Matthieu Guillard) +Solution: Rename the variable. (closes #2281) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1257 (after 8.0.1254) +Problem: No test for fix of undefined behavior. +Solution: Add a test. (closes #2255) +Files: src/testdir/test_search.vim + +Patch 8.0.1258 +Problem: 'ttymouse' is set to "sgr" even though it's not supported. (Gary + Johnson) +Solution: Adjust #ifdef +Files: src/term.c + +Patch 8.0.1259 +Problem: Search test can be flaky. +Solution: Use WaitFor() instead of a delay. Make it possible to pass a + funcref to WaitFor() to avoid the need for global variables. + (James McCoy, closes #2282) +Files: src/testdir/shared.vim, src/testdir/test_search.vim + +Patch 8.0.1260 (after 8.0.1259) +Problem: Using global variables for WaitFor(). +Solution: Use a lambda function instead. Don't check a condition if + WaitFor() already checked it. +Files: src/testdir/test_popup.vim, src/testdir/test_terminal.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_job_fails.vim, src/testdir/test_quotestar.vim + +Patch 8.0.1261 +Problem: Program in terminal window gets NL instead of CR. (Lifepillar) +Solution: Check the tty setup more often. (closes #1998) +Files: src/terminal.c + +Patch 8.0.1262 +Problem: Terminal redir test is flaky. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1263 +Problem: Others can read the swap file if a user is careless with his + primary group. +Solution: If the group permission allows for reading but the world + permissions doesn't, make sure the group is right. +Files: src/fileio.c, src/testdir/test_swap.vim, src/Makefile + +Patch 8.0.1264 +Problem: Terminal debugger gets stuck in small window. +Solution: Add "-quiet" to the gdb command. (Christian Brabandt, closes #2154) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1265 (after 8.0.1263) +Problem: Swap test not skipped when there is one group. +Solution: Convert list to string for the message. +Files: src/testdir/test_swap.vim + +Patch 8.0.1266 (after 8.0.1263) +Problem: Test_swap_directory was accidentally commented out. +Solution: Uncomment the test. +Files: src/testdir/test_swap.vim + +Patch 8.0.1267 (after 8.0.1263) +Problem: Test_swap_group may leave file behind. +Solution: Add a try/finally. +Files: src/testdir/test_swap.vim, src/testdir/test_undo.vim + +Patch 8.0.1268 +Problem: PC install instructions are incomplete. +Solution: Update the instructions. (Ken Takata) +Files: src/INSTALLpc.txt + +Patch 8.0.1269 +Problem: Effect of autocommands on marks is not tested. +Solution: Add a couple of tests. (James McCoy, closes #2271) +Files: src/testdir/test_autocmd.vim + +Patch 8.0.1270 +Problem: Mismatching file name with Filelist. +Solution: Rename color_ramp.vim to xterm_ramp.vim +Files: src/testdir/color_ramp.vim, src/testdir/xterm_ramp.vim + +Patch 8.0.1271 +Problem: Still too many old style tests. +Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, + closes #2290) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/sautest/autoload/footest.vim, src/testdir/test55.in, + src/testdir/test55.ok, src/testdir/test_changelist.in, + src/testdir/test_changelist.ok, src/testdir/test_fold.vim, + src/testdir/test_ins_complete.vim, + src/testdir/test_insertcount.in, src/testdir/test_insertcount.ok, + src/testdir/test_listdict.vim, src/testdir/test_normal.vim, + src/testdir/test_search.vim, src/testdir/test_search_mbyte.in + +Patch 8.0.1272 +Problem: Warnings for unused variables in tiny build. +Solution: Add #ifdef. (Dominique Pelle, closes #2288) +Files: src/term.c + +Patch 8.0.1273 (after 8.0.1271) +Problem: Old test file remaining. +Solution: Delete it. +Files: src/testdir/test_search_mbyte.ok + +Patch 8.0.1274 +Problem: setbufline() fails when using folding. +Solution: Set "curwin" if needed. (Ozaki Kiichi, closes #2293) +Files: src/evalfunc.c, src/testdir/test_bufline.vim + +Patch 8.0.1275 +Problem: CmdlineLeave autocmd prevents fold from opening. (Waivek) +Solution: Save and restore KeyTyped. (closes #2305) +Files: src/fileio.c + +Patch 8.0.1276 +Problem: Typed key is lost when the terminal window is closed in exit + callback. (Gabriel Barta) +Solution: When the current window changes bail out of the wait loop. (closes + #2302) +Files: src/misc2.c, src/terminal.c + +Patch 8.0.1277 +Problem: Terminal window CR-NL conversions may cause problems. +Solution: Avoid most conversions, only fetch the current backspace key value + from the tty. (mostly by Ozaki Kiichi, closes #2278) +Files: src/terminal.c + +Patch 8.0.1278 +Problem: GUI window always resizes when adding/removing a scrollbar, + toolbar, etc. +Solution: Add the 'k' flag in 'guioptions' to keep the GUI window size and + change the number of lines/columns instead. (Ychin, closes #703) +Files: runtime/doc/options.txt, src/gui.c, src/gui_gtk_x11.c, + src/gui_w32.c, src/option.h + +Patch 8.0.1279 +Problem: Initializing menus can be slow, especially when there are many + keymaps, color schemes, etc. +Solution: Do the globbing for runtime files lazily. (Ken Takata) +Files: runtime/doc/gui.txt, runtime/menu.vim + +Patch 8.0.1280 +Problem: Python None cannot be converted to a Vim type. +Solution: Convert it to v:none. (Ken Takata) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok, + runtime/doc/if_pyth.txt + +Patch 8.0.1281 +Problem: Loading file type detection slows down startup. +Solution: Move functions to an autoload script. +Files: runtime/filetype.vim, runtime/autoload/filetype.vim, + runtime/scripts.vim + +Patch 8.0.1282 (after 8.0.1281) +Problem: script-local variable defined in the wrong script +Solution: Move variable to autoload/filetype.vim. +Files: runtime/filetype.vim, runtime/autoload/filetype.vim + +Patch 8.0.1283 +Problem: Test 86 fails under ASAN. +Solution: Fix that an item was added to a dictionary twice. +Files: src/if_py_both.h + +Patch 8.0.1284 +Problem: Loading file type detection slows down startup. +Solution: Store the last pattern of an autocommand event to make appending + quicker. +Files: src/fileio.c + +Patch 8.0.1285 +Problem: Distributed autoload files may clash with user files. (Andy + Wokula) +Solution: Use the "autoload/dist" directory. +Files: runtime/filetype.vim, runtime/autoload/filetype.vim, + runtime/autoload/dist/ft.vim, runtime/scripts.vim, Filelist, + src/Makefile, nsis/gvim.nsi + +Patch 8.0.1286 +Problem: Occasional crash when using a channel. (Marek) +Solution: Decrement reference count later. (closes #2315) +Files: src/channel.c + +Patch 8.0.1287 +Problem: The temp file used when updating the viminfo file may have the + wrong permissions if setting the group fails. +Solution: Check if the group matches and reduce permissions if not. +Files: src/ex_cmds.c + +Patch 8.0.1288 +Problem: GUI: cannot drag the statusline of a terminal window. +Solution: Handle the TERMINAL state. (Hirohito Higashi) +Files: src/gui.c + +Patch 8.0.1289 +Problem: Mkview always includes the local directory. +Solution: Add the "curdir" value in 'viewoptions'. (Eric Roberts, closes + #2316) +Files: runtime/doc/options.txt, runtime/doc/starting.txt, src/ex_docmd.c, + src/option.c + +Patch 8.0.1290 +Problem: seq_cur of undotree() wrong after undo. +Solution: Get the actual sequence number instead of decrementing the current + one. (Ozaki Kiichi, closes #2319) +Files: src/undo.c, src/testdir/test_undo.vim + +Patch 8.0.1291 +Problem: C indent wrong when * immediately follows comment. (John Bowler) +Solution: Do not see "/*" after "*" as a comment start. (closes #2321) +Files: src/search.c, src/testdir/test3.in, src/testdir/test3.ok + +Patch 8.0.1292 +Problem: Quick clicks in the WinBar start Visual mode. +Solution: Use a double click in the WinBar like a normal click. +Files: src/ui.c + +Patch 8.0.1293 +Problem: Setting a breakpoint in the terminal debugger sometimes fails. +Solution: Interrupt the program if needed. Set the interface to async. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1294 +Problem: GUI: get stuck when splitting a terminal window. +Solution: Stop blinking when values become zero. (Hirohito Higashi) +Files: src/gui.c + +Patch 8.0.1295 +Problem: Cannot automatically get a server name in a terminal. +Solution: Add the --enable-autoservername flag to configure. (Cimbali, + closes #2317) +Files: runtime/doc/eval.txt, runtime/doc/various.txt, src/config.h.in, + src/configure.ac, src/auto/configure, src/evalfunc.c, + src/feature.h, src/main.c, src/version.c, src/Makefile + +Patch 8.0.1296 (after 8.0.1294) +Problem: Checking the same condition twice. (John Marriott) +Solution: Check blinkwait. +Files: src/gui.c + +Patch 8.0.1297 +Problem: +autoservername does not show enabled on MS-Windows. +Solution: Always define the flag on MS-Windows. (Ken Takata) +Files: src/feature.h + +Patch 8.0.1298 +Problem: Missing test file. +Solution: Add samples/test000. (Christian Brabandt) +Files: src/testdir/samples/test000, Filelist + +Patch 8.0.1299 +Problem: Bracketed paste does not work well in terminal window. +Solution: Send translated string to job right away. (Ozaki Kiichi, closes + #2341) +Files: src/terminal.c + +Patch 8.0.1300 +Problem: File permissions may end up wrong when writing. +Solution: Use fchmod() instead of chmod() when possible. Don't truncate + until we know we can change the file. +Files: src/os_unix.c, src/proto/os_unix.pro, src/configure.ac, + src/auto/configure, src/config.h.in, src/fileio.c + +Patch 8.0.1301 +Problem: Generated license file for NSIS has a modeline. +Solution: Adjust the pattern for sed. (Ken Takata) +Files: runtime/doc/Makefile + +Patch 8.0.1302 +Problem: Still too many old style tests. +Solution: Convert a few more tests to new style. (Yegappan Lakshmanan, + closes #2326) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/runtest.vim, + src/testdir/test68.in, src/testdir/test68.ok, + src/testdir/test73.in, src/testdir/test73.ok, + src/testdir/test_close_count.in, src/testdir/test_close_count.ok, + src/testdir/test_close_count.vim, + src/testdir/test_erasebackword.in, + src/testdir/test_erasebackword.ok, + src/testdir/test_erasebackword.vim, + src/testdir/test_find_complete.vim, src/testdir/test_fixeol.in, + src/testdir/test_fixeol.ok, src/testdir/test_fixeol.vim, + src/testdir/test_listchars.in, src/testdir/test_listchars.ok, + src/testdir/test_listchars.vim, src/testdir/test_textformat.vim + +Patch 8.0.1303 +Problem: 'ttymouse' is not set to "sgr" for Terminal.app and Iterm2. +Solution: Recognize Iterm2 by the termresponse. +Files: src/term.c + +Patch 8.0.1304 +Problem: CTRL-G/CTRL-T don't work with incsearch and empty pattern. +Solution: Use the last search pattern. (Christian Brabandt, closes #2292) +Files: src/ex_getln.c, src/proto/search.pro, src/search.c, + src/testdir/test_search.vim + +Patch 8.0.1305 +Problem: writefile() never calls fsync(). +Solution: Follow the 'fsync' option with override to enable or disable. +Files: src/fileio.c, src/evalfunc.c, runtime/doc/eval.txt, src/globals.h, + src/testdir/test_writefile.vim + +Patch 8.0.1306 +Problem: ASAN error stack trace is not useful. +Solution: Add "asan_symbolize". (James McCoy, closes #2344) +Files: .travis.yml + +Patch 8.0.1307 (after 8.0.1300) +Problem: Compiler warning for ignoring return value of ftruncate(). (Tony + Mechelynck) +Solution: Assign returned value to "ignore". +Files: src/fileio.c + +Patch 8.0.1308 +Problem: The "Reading from stdin" message may be undesired and there is no + easy way to skip it. +Solution: Don't show the message with --not-a-term was used. +Files: src/fileio.c + +Patch 8.0.1309 +Problem: Cannot use 'balloonexpr' in a terminal. +Solution: Add 'balloonevalterm' and add code to handle mouse movements in a + terminal. Initial implementation for Unix with GUI. +Files: src/option.c, src/option.h, src/os_unix.c, src/proto/os_unix.pro, + src/feature.h, src/misc2.c, src/keymap.h, src/edit.c, + src/ex_getln.c, src/message.c, src/misc1.c, src/normal.c, + src/terminal.c, src/getchar.c, src/ex_cmds2.c, src/gui_beval.c, + src/proto/gui_beval.pro, src/evalfunc.c, src/popupmnu.c, + src/proto/popupmnu.pro, src/version.c, src/globals.h, src/gui.c, + runtime/doc/options.txt, src/term.c, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1310 +Problem: Cproto generates errors because of missing type. +Solution: Define _Float128 when generating prototypes. +Files: src/vim.h + +Patch 8.0.1311 +Problem: No test for strpart(). +Solution: Add a test. (Dominique Pelle, closes #2347) +Files: src/testdir/test_functions.vim + +Patch 8.0.1312 (after 8.0.1309) +Problem: balloon_show() only works in terminal when compiled with the GUI. +Solution: Add FEAT_BEVAL_GUI and refactor to move common code out of the GUI + specific file. +Files: src/feature.h, src/evalfunc.c, src/gui.c, src/gui_athena.c, + src/gui_beval.c, src/proto/gui_beval.pro, src/beval.c, + src/proto/beval.pro, src/gui_motif.c, src/gui_w32.c, + src/gui_x11.c, src/integration.c, src/workshop.c, src/menu.c, + src/netbeans.c, src/option.c, src/os_unix.c, src/os_win32.c, + src/syntax.c, src/version.c, src/gui.h, src/gui_beval.h, + src/vim.h, src/beval.h, src/option.h, src/ex_cmds2.c, src/ui.c, + src/getchar.c, src/normal.c, src/popupmnu.c, src/globals.h, + src/Makefile, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/Make_vms.mms, Filelist + +Patch 8.0.1313 (after 8.0.1312) +Problem: Missing dependencies cause parallel make to fail. +Solution: Update dependencies. +Files: src/Makefile + +Patch 8.0.1314 (after 8.0.1312) +Problem: Build fails on Mac. (chdiza) +Solution: Add #ifdef around GUI fields. +Files: src/beval.h + +Patch 8.0.1315 (after 8.0.1312) +Problem: Build still fails on Mac. (chdiza) +Solution: Remove bogus typedef. +Files: src/os_macosx.m + +Patch 8.0.1316 (after 8.0.1312) +Problem: Build still still fails on Mac. (chdiza) +Solution: Remove another bogus typedef. +Files: src/os_mac_conv.c + +Patch 8.0.1317 +Problem: Accessing freed memory in term_wait(). (Dominique Pelle) +Solution: Check that the buffer still exists. +Files: src/terminal.c + +Patch 8.0.1318 +Problem: Terminal balloon only shows one line. +Solution: Split into several lines in a clever way. Add balloon_split(). + Make balloon_show() accept a list in the terminal. +Files: src/popupmnu.c, src/proto/popupmnu.pro, src/evalfunc.c, + src/beval.c, src/proto/beval.pro, src/testdir/test_popup.vim, + runtime/doc/eval.txt, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1319 +Problem: Can't build GUI on MS-Windows. +Solution: Don't define the balloon_split() function in a GUI-only build. +Files: src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.0.1320 +Problem: Popup test fails on GUI-only build. +Solution: Don't test balloon_split() when it's not available. +Files: src/testdir/test_popup.vim + +Patch 8.0.1321 +Problem: Can't build huge version with Athena. (Mark Kelly) +Solution: Move including beval.h to before structs.h. Include beval.pro like + other proto files. +Files: src/vim.h, src/beval.h, src/proto.h + +Patch 8.0.1322 +Problem: Textformat test isn't run. (Yegappan Lakshmanan) +Solution: Add target to the list of tests. +Files: src/testdir/Make_all.mak + +Patch 8.0.1323 +Problem: Mouse events in a terminal window may cause endless loop. +Solution: Adjust position computation. Don't stuff a mouse event when + coming from normal_cmd(). +Files: src/normal.c, src/terminal.c + +Patch 8.0.1324 +Problem: Some xterm sends different mouse move codes. +Solution: Also accept 0x80 as a move event. +Files: src/term.c + +Patch 8.0.1325 +Problem: More tests are not run. +Solution: Add targets to the list of tests. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak + +Patch 8.0.1326 +Problem: Largefile test fails on CI, glob test on MS-Windows. +Solution: Remove largefile test from list of all tests. Don't run + Test_glob() on non-unix systems. More cleanup. (Yegappan + Lakshmanan, closes #2354) +Files: src/testdir/Make_all.mak, src/testdir/test_escaped_glob.vim, + src/testdir/test_plus_arg_edit.vim + +Patch 8.0.1327 +Problem: New proto file missing from distribution. +Solution: Add it. (closes #2355) +Files: Filelist + +Patch 8.0.1328 +Problem: Trouble when using ":term ++close" with autocmd. (Gabriel Barta) +Solution: Use aucmd_prepbuf() and aucmd_restbuf() instead of setting curbuf. + (closes #2339) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1329 +Problem: When a flaky test fails it also often fails the second time. +Solution: Sleep a couple of seconds before the second try. +Files: src/testdir/runtest.vim + +Patch 8.0.1330 +Problem: MS-Windows: job in terminal can't get back to Vim. +Solution: set VIM_SERVERNAME in the environment. (Yasuhiro Matsumoto, closes + #2360) +Files: runtime/doc/terminal.txt, src/os_win32.c, src/proto/os_win32.pro, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1331 +Problem: Possible crash when window can be zero lines high. (Joseph + Dornisch) +Solution: Only set w_fraction if the window is at least two lines high. +Files: src/window.c + +Patch 8.0.1332 +Problem: Highlighting in quickfix window could be better. (Axel Bender) +Solution: Use the qfSeparator highlight item. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1333 +Problem: Some tests are run twice. +Solution: Invoked most utf8 tests only from test_alot_utf8. (Yegappan + Lakshmanan, closes #2369) +Files: src/testdir/Make_all.mak, src/testdir/test_alot_utf8.vim, + src/testdir/test_mksession_utf8.vim + +Patch 8.0.1334 +Problem: Splitting a window with a WinBar damages window layout. + (Lifepillar) +Solution: Take the winbar into account when computing the new window + position. Add WINBAR_HEIGHT(). +Files: src/vim.h, src/window.c + +Patch 8.0.1335 +Problem: writefile() using fsync() may give an error for a device. + (Yasuhiro Matsumoto) +Solution: Ignore fsync() failing. (closes #2373) +Files: src/evalfunc.c + +Patch 8.0.1336 +Problem: Cannot use imactivatefunc() unless compiled with +xim. +Solution: Allow using imactivatefunc() when not compiled with +xim. + (Yasuhiro Matsumoto, closes #2349) +Files: runtime/doc/options.txt, runtime/doc/mbyte.txt, src/mbyte.c, + src/option.c, src/option.h, src/structs.h, + src/testdir/test_iminsert.vim, src/Makefile, + src/testdir/Make_all.mak, src/vim.h + +Patch 8.0.1337 (after 8.0.1336) +Problem: Typo in #ifdef. +Solution: Fix the #if line. +Files: src/mbyte.c + +Patch 8.0.1338 (after 8.0.1337) +Problem: USE_IM_CONTROL is confusing and incomplete. +Solution: Just use FEAT_MBYTE. Call 'imactivatefunc' also without GUI. +Files: src/vim.h, src/edit.c, src/ex_getln.c, src/getchar.c, src/gui.c, + src/gui_mac.c, src/gui_w32.c, src/mbyte.c, src/normal.c, + src/option.c, src/ui.c, src/globals.h, src/option.h + +Patch 8.0.1339 +Problem: No test for what 8.0.1335 fixes. +Solution: Add a test. (Yasuhiro Matsumoto, closes #2373) +Files: src/testdir/test_writefile.vim + +Patch 8.0.1340 +Problem: MS-Windows: cannot build GUI without IME. +Solution: Define im_get_status() and im_set_active() when IME is not used. +Files: src/mbyte.c + +Patch 8.0.1341 +Problem: 'imactivatefunc' test fails on MS-Windows. +Solution: Skip the text. +Files: src/testdir/test_iminsert.vim, runtime/doc/options.txt + +Patch 8.0.1342 +Problem: Cannot build with Motif and multibyte. (Mohamed Boughaba) +Solution: Use the right input method status flag. (closes #2374) +Files: src/mbyte.c + +Patch 8.0.1343 +Problem: MS-Windows: does not show colored emojis. +Solution: Implement colored emojis. Improve drawing speed. Make 'taamode' + work. (Taro Muraoka, Yasuhiro Matsumoto, Ken Takata, close #2375) +Files: appveyor.yml, runtime/doc/options.txt, src/gui_dwrite.cpp, + src/gui_dwrite.h, src/gui_w32.c, src/proto/gui_w32.pro + +Patch 8.0.1344 +Problem: Using 'imactivatefunc' in the GUI does not work. +Solution: Do not use 'imactivatefunc' and 'imstatusfunc' in the GUI. +Files: runtime/doc/options.txt, src/mbyte.c, + src/testdir/test_iminsert.vim + +Patch 8.0.1345 +Problem: Race condition between stat() and open() for the viminfo temp + file. (Simon Ruderich) +Solution: use open() with O_EXCL to atomically check if the file exists. + Don't try using a temp file, renaming it will fail anyway. +Files: src/ex_cmds.c + +Patch 8.0.1346 +Problem: Crash when passing 50 char string to balloon_split(). +Solution: Fix off-by-one error. +Files: src/testdir/test_popup.vim, src/popupmnu.c + +Patch 8.0.1347 +Problem: MS-Windows: build broken by misplaced curly. +Solution: Move curly after #endif. +Files: src/ex_cmds.c + +Patch 8.0.1348 +Problem: Make testclean deletes script file on MS-Windows. +Solution: Rename file to avoid it starting with an "x". +Files: src/testdir/xterm_ramp.vim, src/testdir/color_ramp.vim, Filelist + +Patch 8.0.1349 +Problem: Options test fails when using Motif or GTK GUI. +Solution: Use "fixed" instead of "fixedsys" for Unix. Don't try "xxx" for + guifonteset. Don't set 'termencoding' to anything but "utf-8" for + GTK. Give an error if 'termencoding' can't be converted. +Files: src/testdir/gen_opt_test.vim, src/option.c + +Patch 8.0.1350 +Problem: Cannot build with +eval and -multi_byte. +Solution: Adjust #ifdefs. (John Marriott) Always include the multi_byte + feature when an input method feature is enabled. +Files: src/mbyte.c, src/feature.h + +Patch 8.0.1351 +Problem: Warning for unused variables building with MinGW. +Solution: Change a few #ifdefs (suggested by John Marriott). Remove + superfluous checks of FEAT_MBYTE. +Files: src/gui_w32.c + +Patch 8.0.1352 +Problem: Dead URLs in the help go unnoticed. +Solution: Add a script to check URLs in the help files. (Christian Brabandt) +Files: runtime/doc/Makefile, runtime/doc/test_urls.vim, Filelist + +Patch 8.0.1353 +Problem: QuickFixCmdPost is not used consistently. +Solution: Invoke QuickFixCmdPost consistently after QuickFixCmdPre. + (Yegappan Lakshmanan, closes #2377) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1354 +Problem: Shift-Insert doesn't always work in MS-Windows console. +Solution: Handle K_NUL differently. (Yasuhiro Matsumoto, closes #2381) +Files: src/os_win32.c + +Patch 8.0.1355 (after 8.0.1354) +Problem: Cursor keys don't work in MS-Windows console. +Solution: Revert the previous patch. Also delete dead code. +Files: src/os_win32.c + +Patch 8.0.1356 +Problem: Using simalt in a GUIEnter autocommand inserts strange characters. + (Chih-Long Chang) +Solution: Ignore K_NOP in Insert mode. (closes #2379) +Files: src/edit.c, src/ex_getln.c + +Patch 8.0.1357 +Problem: Startup test fails on OpenBSD. (Edd Barrett) +Solution: Check for "BSD" instead of "FreeBSD" being defined. (James McCoy, + closes #2376, closes #2378) +Files: src/vim.h + +Patch 8.0.1358 +Problem: Undercurl is not used in the terminal. (Kovid Goyal) +Solution: Only fall back to underline when undercurl highlighting is not + defined. (closes #1306) +Files: src/screen.c + +Patch 8.0.1359 +Problem: Libvterm ANSI colors can not always be recognized from the RGB + values. The default color is wrong when t_RB is empty. +Solution: Add the ANSI color index to VTermColor. +Files: src/libvterm/include/vterm.h, src/libvterm/src/pen.c, + src/terminal.c + +Patch 8.0.1360 +Problem: The Terminal highlighting doesn't work in a terminal. (Ozaki + Kiichi) +Solution: Use the Terminal highlighting when the cterm index is zero. +Files: src/terminal.c + +Patch 8.0.1361 +Problem: Some users don't want to diff with hidden buffers. +Solution: Add the "hiddenoff" item to 'diffopt'. (Alisue, closes #2394) +Files: runtime/doc/options.txt, src/buffer.c, src/diff.c, + src/proto/diff.pro, src/testdir/test_diffmode.vim + +Patch 8.0.1362 +Problem: Terminal window colors wrong when using Terminal highlighting. +Solution: Set ansi_index when setting the default color. Also cache the + color index for Terminal. (Ozaki Kiichi, closes #2393) +Files: src/libvterm/src/pen.c, src/proto/terminal.pro, src/syntax.c, + src/terminal.c + +Patch 8.0.1363 +Problem: Recovering does not work when swap file ends in .stz. +Solution: Check for all possible swap file names. (Elfling, closes #2395, + closes #2396) +Files: src/memline.c + +Patch 8.0.1364 +Problem: There is no easy way to get the window position. +Solution: Add win_screenpos(). +Files: src/evalfunc.c, src/testdir/test_window_cmd.vim, + runtime/doc/eval.txt + +Patch 8.0.1365 +Problem: When one channel test fails others fail as well. +Solution: Stop the job after a failure. Also add a couple of tests to the + list of flaky tests. +Files: src/testdir/test_channel.vim, src/testdir/runtest.vim + +Patch 8.0.1366 +Problem: Balloon shows when cursor is in WinBar. +Solution: Don't show the balloon when row is negative. +Files: src/beval.c + +Patch 8.0.1367 +Problem: terminal test hangs, executing abcde. (Stucki) +Solution: Rename abcde to abxde. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1368 +Problem: Cannot drag status line or vertical separator of new terminal + window. (UncleBill) +Solution: Adjust mouse row and column computation. (Yasuhiro Matsumoto, + closes #2410) +Files: src/terminal.c + +Patch 8.0.1369 +Problem: MS-Windows: drawing underline, curl and strikethrough is slow, + mFallbackDC not properly updated. +Solution: Several performance improvements. (Ken Takata, Taro Muraoka, + Yasuhiro Matsumoto, closes #2401) +Files: runtime/doc/options.txt, src/gui_dwrite.cpp, src/gui_dwrite.h, + src/gui_w32.c + +Patch 8.0.1370 +Problem: Channel test for callback is flaky. +Solution: Add the test to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1371 +Problem: Shift-Insert doesn't always work in MS-Windows console. +Solution: Handle K_NUL differently if the second character is more than one + byte. (Yasuhiro Matsumoto, closes #2381) +Files: src/os_win32.c + +Patch 8.0.1372 +Problem: Profile log may be truncated halfway a character. +Solution: Find the start of the character. (Ozaki Kiichi, closes #2385) +Files: src/ex_cmds2.c, src/testdir/test_profile.vim + +Patch 8.0.1373 +Problem: No error when setting 'renderoptions' to an invalid value before + starting the GUI. +Solution: Always check the value. (Ken Takata, closes #2413) +Files: src/gui_w32.c, src/option.c + +Patch 8.0.1374 +Problem: CTRL-A does not work with an empty line. (Alex) +Solution: Decrement the end only once. (Hirohito Higashi, closes #2387) +Files: src/ops.c, src/testdir/test_increment.vim + +Patch 8.0.1375 +Problem: Window size wrong after maximizing with WinBar. (Lifepillar) +Solution: Fix height computations. Redraw window when it is zero height but + has a WinBar. (closes #2356) +Files: src/window.c, src/screen.c, src/vim.h + +Patch 8.0.1376 +Problem: Cursor in terminal not always updated. +Solution: Call gui_mch_flush(). (Ken Takata) +Files: src/terminal.c + +Patch 8.0.1377 +Problem: Cannot call a dict function in autoloaded dict. +Solution: Call get_lval() passing the read-only flag. +Files: src/userfunc.c, src/eval.c, src/testdir/sautest/autoload/foo.vim, + src/testdir/sautest/autoload/globone.vim, + src/testdir/sautest/autoload/globtwo.vim, + src/testdir/test_escaped_glob.vim, src/Makefile, + src/testdir/test_autoload.vim, src/Makefile, + src/testdir/Make_all.mak + +Patch 8.0.1378 +Problem: Autoload script sources itself when defining function. +Solution: Pass TFN_NO_AUTOLOAD to trans_function_name(). (Yasuhiro + Matsumoto, closes #2423) +Files: src/userfunc.c, src/testdir/test_autoload.vim, + src/testdir/sautest/autoload/sourced.vim + +Patch 8.0.1379 +Problem: Configure check for selinux does not check for header file. +Solution: Add an AC_CHECK_HEADER(). (Benny Siegert) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1380 +Problem: When recovering a file with "vim -r swapfile" the hit-enter prompt + is at the top of the window. +Solution: Invalidate the cursor position. +Files: src/term.c + +Patch 8.0.1381 +Problem: ch_readraw() waits for NL if channel mode is NL. +Solution: Pass a "raw" flag to channel_read_block(). (Yasuhiro Matsumoto) +Files: src/channel.c, src/proto/channel.pro, + src/testdir/test_channel.vim, src/testdir/test_channel_pipe.py + +Patch 8.0.1382 +Problem: Get "no write since last change" message if a terminal is open. + (Fritz mehner) +Solution: Don't consider a buffer changed if it's a terminal window. +Files: src/ex_cmds.c, src/undo.c, src/proto/undo.pro + +Patch 8.0.1383 +Problem: Local additions in help skips some files. (joshklod) +Solution: Check the base file name length equals. +Files: src/ex_cmds.c, src/testdir/test_help.vim + +Patch 8.0.1384 +Problem: Not enough quickfix help; confusing winid. +Solution: Add more examples in the help. When the quickfix window is not + present, return zero for getqflist() with 'winid'. Add more tests + for jumping to quickfix list entries. (Yegappan Lakshmanan, closes + #2427) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1385 +Problem: Python 3.5 is getting old. +Solution: Make Python 3.6 the default. (Ken Takata, closes #2429) +Files: runtime/doc/if_pyth.txt, src/INSTALLpc.txt, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/bigvim.bat + +Patch 8.0.1386 +Problem: Cannot select modified buffers with getbufinfo(). +Solution: Add the "bufmodified" flag. (Yegappan Lakshmanan, closes #2431) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim + +Patch 8.0.1387 +Problem: Wordcount test is old style. +Solution: Change into a new style test. (Yegappan Lakshmanan, closes #2434) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/test_wordcount.in, + src/testdir/test_wordcount.ok, src/testdir/test_wordcount.vim + +Patch 8.0.1388 +Problem: Char not overwritten with ambiguous width char, if the ambiguous + char is single width but we reserve double-width space. +Solution: First clear the screen cells. (Ozaki Kiichi, closes #2436) +Files: src/screen.c + +Patch 8.0.1389 +Problem: getqflist() items are missing if not set, that makes it more + difficult to handle the values. +Solution: When a value is not available return zero or another invalid + value. (Yegappan Lakshmanan, closes #2430) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1390 +Problem: DirectX scrolling can be slow, vertical positioning is off. +Solution: Make scroll slightly faster when using "scrlines:1". Fix y + position of displayed text. Fix DirectX with non-utf8 encoding. + (Ken Takata, closes #2440) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/gui_dwrite.cpp, src/gui_w32.c + +Patch 8.0.1391 +Problem: Encoding empty string to JSON sometimes gives "null". +Solution: Handle NULL string as empty string. (closes #2446) +Files: src/testdir/test_json.vim, src/json.c + +Patch 8.0.1392 +Problem: Build fails with --with-features=huge --disable-channel. +Solution: Don't enable the terminal feature when the channel feature is + missing. (Dominique Pelle, closes #2453) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1393 +Problem: Too much highlighting with 'hlsearch' and 'incsearch' set. +Solution: Do not highlight matches when the pattern matches everything. +Files: src/ex_getln.c + +Patch 8.0.1394 +Problem: Cannot intercept a yank command. +Solution: Add the TextYankPost autocommand event. (Philippe Vaucher et al., + closes #2333) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, src/dict.c, + src/eval.c, src/fileio.c, src/ops.c, src/proto/dict.pro, + src/proto/eval.pro, src/proto/fileio.pro, + src/testdir/test_autocmd.vim, src/vim.h + +Patch 8.0.1395 +Problem: It is not easy to see if a colorscheme is well written. +Solution: Add a script that checks for common mistakes. (Christian Brabandt) +Files: runtime/colors/check_colors.vim, runtime/colors/README.txt + +Patch 8.0.1396 +Problem: Memory leak when CTRL-G in search command line fails. +Solution: Move restore_last_search_pattern to after "if". +Files: src/ex_getln.c + +Patch 8.0.1397 +Problem: Pattern with \& following nothing gives an error. +Solution: Emit an empty node when needed. +Files: src/regexp_nfa.c, src/testdir/test_search.vim + +Patch 8.0.1398 +Problem: :packadd does not load packages from the "start" directory. + (Alejandro Hernandez) +Solution: Make :packadd look in the "start" directory if those packages were + not loaded on startup. +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 8.0.1399 +Problem: Warnings and errors when building tiny version. (Tony Mechelynck) +Solution: Add #ifdefs. +Files: src/ex_getln.c, src/ops.c + +Patch 8.0.1400 +Problem: Color scheme check script shows up as color scheme. +Solution: Move it to the "tools" subdirectory. (closes #2457) +Files: Filelist, runtime/colors/check_colors.vim, + runtime/colors/tools/check_colors.vim, runtime/colors/README.txt + +Patch 8.0.1401 +Problem: Cannot build with GTK but without XIM. (Guido) +Solution: Adjust #ifdef. (closes #2461) +Files: src/gui.c + +Patch 8.0.1402 +Problem: Crash with nasty autocommand. (gy741, Dominique Pelle) +Solution: Check that the new current buffer isn't wiped out. (closes #2447) +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 8.0.1403 +Problem: Using freed buffer in grep command. (gy741, Dominique Pelle) +Solution: Lock the dummy buffer to avoid autocommands wiping it out. +Files: src/quickfix.c, src/testdir/test_autocmd.vim + +Patch 8.0.1404 +Problem: Invalid memory access on exit when autocommands wipe out a buffer. + (gy741, Dominique Pelle) +Solution: Check if the buffer is still valid. (closes #2449) +Files: src/main.c + +Patch 8.0.1405 +Problem: Duplicated code for getting a typed character. CursorHold is + called too often in the GUI. (lilydjwg) +Solution: Refactor code to move code up from mch_inchar(). Don't fire + CursorHold if feedkeys() was used. (closes #2451) +Files: src/gui.c, src/proto/gui.pro, src/main.c, src/ui.c, + src/proto/ui.pro, src/os_unix.c + +Patch 8.0.1406 +Problem: Difficult to track changes to a quickfix list. +Solution: Add a "changedtick" value. (Yegappan Lakshmanan, closes #2460) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1407 +Problem: GUI: CursorHold may trigger before 'updatetime' when using timers. +Solution: Check that 'updatetime' has passed. +Files: src/gui.c + +Patch 8.0.1408 +Problem: Crash in setqflist(). +Solution: Check for string to be NULL. (Dominique Pelle, closes #2464) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1409 +Problem: Buffer overflow in :tags command. +Solution: Use vim_snprintf(). (Dominique Pelle, closes #2471, closes #2475) + Add a test. +Files: src/testdir/test_taglist.vim, src/tag.c + +Patch 8.0.1410 +Problem: Hang when using count() with an empty string. +Solution: Return zero for an empty string. (Dominique Pelle, closes #2465) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.0.1411 +Problem: Reading invalid memory with CTRL-W :. +Solution: Correct the command characters. (closes #2469) +Files: src/normal.c, src/testdir/test_window_cmd.vim, src/ops.c + +Patch 8.0.1412 +Problem: Using free memory using setloclist(). (Dominique Pelle) +Solution: Mark location list context as still in use when needed. (Yegappan + Lakshmanan, closes #2462) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1413 +Problem: Accessing freed memory in :cbuffer. +Solution: Get quickfix list after executing autocmds. (closes #2470) +Files: src/quickfix.c, src/testdir/test_autocmd.vim + +Patch 8.0.1414 +Problem: Accessing freed memory in :lfile. +Solution: Get the current window after executing autocommands. (Yegappan + Lakshmanan, closes #2473) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1415 +Problem: Warning for unused function without timers feature. +Solution: Add #ifdef. (John Marriott) +Files: src/gui.c + +Patch 8.0.1416 +Problem: Crash when searching for a sentence. +Solution: Return NUL when getting character at MAXCOL. (closes #2468) +Files: src/misc1.c, src/misc2.c, src/testdir/test_search.vim, + src/ex_docmd.c + +Patch 8.0.1417 +Problem: Test doesn't search for a sentence. Still fails when searching for + start of sentence. (Dominique Pelle) +Solution: Add paren. Check for MAXCOL in dec(). +Files: src/testdir/test_search.vim, src/misc2.c + +Patch 8.0.1418 +Problem: No test for expanding backticks. +Solution: Add a test. (Dominique Pelle, closes #2479) +Files: src/testdir/test_normal.vim + +Patch 8.0.1419 +Problem: Cursor column is not updated after ]s. (Gary Johnson) +Solution: Set the curswant flag. +Files: src/testdir/test_spell.vim, src/normal.c, src/evalfunc.c + +Patch 8.0.1420 +Problem: Accessing freed memory in vimgrep. +Solution: Check that the quickfix list is still valid. (Yegappan Lakshmanan, + closes #2474) +Files: src/quickfix.c, src/testdir/test_autocmd.vim, + src/testdir/test_quickfix.vim + +Patch 8.0.1421 +Problem: Accessing invalid memory with overlong byte sequence. +Solution: Check for NUL character. (test by Dominique Pelle, closes #2485) +Files: src/misc2.c, src/testdir/test_functions.vim + +Patch 8.0.1422 +Problem: No fallback to underline when undercurl is not set. (Ben Jackson) +Solution: Check for the value to be empty instead of NULL. (closes #2424) +Files: src/screen.c + +Patch 8.0.1423 +Problem: Error in return not caught by try/catch. +Solution: Call update_force_abort(). (Yasuhiro Matsumoto, closes #2483) +Files: src/testdir/test_eval.in, src/testdir/test_eval_stuff.vim, + src/Makefile, src/testdir/Make_all.mak, src/userfunc.c + +Patch 8.0.1424 +Problem: The timer_pause test is flaky on Travis. +Solution: Accept a longer sleep time on Mac. +Files: src/testdir/test_timers.vim + +Patch 8.0.1425 +Problem: execute() does not work in completion of user command. (thinca) +Solution: Switch off redir_off and restore it. (Ozaki Kiichi, closes #2492) +Files: src/evalfunc.c, src/testdir/test_usercommands.vim + +Patch 8.0.1426 +Problem: "gf" and <cfile> don't accept ? and & in URL. (Dmitrii Tcyganok) +Solution: Check for a URL and allow for extra characters. (closes #2493) +Files: src/window.c, src/testdir/test_gf.vim + +Patch 8.0.1427 +Problem: The :leftabove modifier doesn't work for :copen. +Solution: Respect the split modifier. (Yegappan Lakshmanan, closes #2496) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1428 +Problem: Compiler warning on 64 bit MS-Windows system. +Solution: Change type from "int" to "size_t". (Mike Williams) +Files: src/ex_getln.c + +Patch 8.0.1429 +Problem: Crash when calling term_start() with empty argument. +Solution: Check for invalid argument. (Yasuhiro Matsumoto, closes #2503) + Fix memory leak. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1430 (after 8.0.1429) +Problem: Crash when term_start() fails. +Solution: Initialize winpty_err. +Files: src/terminal.c + +Patch 8.0.1431 +Problem: MS-Windows: vimtutor fails if %TMP% has special chars. +Solution: Add quotes. (Tamce, closes #2561) +Files: vimtutor.bat + +Patch 8.0.1432 +Problem: After ":copen" can't get the window-ID of the quickfix window. + (FalacerSelene) +Solution: Make it work without a quickfix list. Add a test. (Yegappan + Lakshmanan, closes #2541) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1433 +Problem: Illegal memory access after undo. (Dominique Pelle) +Solution: Avoid the column becomes negative. (Christian Brabandt, + closes #2533) +Files: src/mbyte.c, src/testdir/test_undo.vim + +Patch 8.0.1434 +Problem: GTK: :promtfind does not put focus on text input. (Adam Novak) +Solution: When re-opening the dialog put focus on the text input. (Kazunobu + Kuriyama, closes #2563) +Files: src/gui_gtk.c + +Patch 8.0.1435 +Problem: Memory leak in test_arabic. +Solution: Free the from and to parts. (Christian Brabandt, closes #2569) +Files: src/buffer.c, src/digraph.c, src/proto/digraph.pro + +Patch 8.0.1436 +Problem: Not enough information about what Python version may work. +Solution: Add "python_compiled", "python3_compiled", "python_dynamic" and + "python3_dynamic" values for has(). +Files: src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.0.1437 +Problem: Pkg-config doesn't work with cross compiling. +Solution: Use AC_PATH_TOOL() instead of AC_PATH_PROG(). (James McCoy, + closes #2513) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1438 +Problem: Filetype detection test not updated for change. +Solution: Update the test. +Files: src/testdir/test_filetype.vim + +Patch 8.0.1439 +Problem: If cscope fails a search Vim may hang. +Solution: Bail out when a search error is encountered. (Safouane Baroudi, + closes #2598) +Files: src/if_cscope.c + +Patch 8.0.1440 +Problem: Terminal window: some vterm responses are delayed. +Solution: After writing input. check if there is output to read. (Ozaki + Kiichi, closes #2594) +Files: src/terminal.c, src/testdir/test_search.vim, + src/testdir/test_terminal.vim + +Patch 8.0.1441 +Problem: Using ":undo 0" leaves undo in wrong state. +Solution: Instead of searching for state 1 and go above, just use the start. + (Ozaki Kiichi, closes #2595) +Files: src/undo.c, src/testdir/test_undo.vim + +Patch 8.0.1442 (after 8.0.1439) +Problem: Using pointer before it is set. +Solution: Search in whole buffer instead of next token. +Files: src/if_cscope.c + +Patch 8.0.1443 (after 8.0.1441) +Problem: Compiler complains about uninitialized variable. (Tony Mechelynck) +Solution: Assign a value to the variable. +Files: src/undo.c + +Patch 8.0.1444 +Problem: Missing -D_FILE_OFFSET_BITS=64 may cause problems if a library is + compiled with it. +Solution: Include -D_FILE_OFFSET_BITS if some CFLAGS has it. (James McCoy, + closes #2600) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1445 +Problem: Cannot act on edits in the command line. +Solution: Add the CmdlineChanged autocommand event. (xtal8, closes #2603, + closes #2524) +Files: runtime/doc/autocmd.txt, src/ex_getln.c, src/fileio.c, + src/testdir/test_autocmd.vim, src/vim.h + +Patch 8.0.1446 +Problem: Accessing freed memory after window command in auto command. + (gy741) +Solution: Adjust the pointer in the parent frame. (Christian Brabandt, + closes #2467) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.0.1447 +Problem: Still too many old style tests. +Solution: Turn a few tests into new style. (Yegappan Lakshmanan, + closes #2509) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/main.aap, src/testdir/test15.in, + src/testdir/test15.ok, src/testdir/test36.in, + src/testdir/test36.ok, src/testdir/test50.in, + src/testdir/test50.ok, src/testdir/test_regex_char_classes.vim, + src/testdir/test_shortpathname.vim, + src/testdir/test_textformat.vim + +Patch 8.0.1448 +Problem: Segmentation fault when Ruby throws an exception inside :rubyfile + command. +Solution: Use rb_protect() instead of rb_load_protect(). (ujihisa, + closes #2147, greywolf, closes #2512, #2511) +Files: src/if_ruby.c, src/testdir/test_ruby.vim + +Patch 8.0.1449 +Problem: Slow redrawing with DirectX. +Solution: Avoid calling gui_mch_flush() unnecessarily, especially when + updating the cursor. (Ken Takata, closes #2560) +Files: runtime/doc/options.txt, src/channel.c, src/edit.c, src/getchar.c, + src/gui.c, src/gui_dwrite.cpp, src/gui_dwrite.h, src/gui_w32.c, + src/macros.h, src/main.c, src/message.c, src/netbeans.c, + src/proto/gui.pro, src/proto/term.pro, src/screen.c, src/search.c, + src/term.c, src/ui.c + +Patch 8.0.1450 +Problem: Endless loop when gui_mch_stop_blink() is called while blink_state + is BLINK_OFF. (zdohnal) +Solution: Avoid calling gui_update_cursor() recursively. +Files: src/gui.c, src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, + src/gui_mac.c, src/proto/gui_mac.pro, src/gui_photon.c, + src/proto/gui_photon.pro, src/gui_w32.c, src/proto/gui_w32.pro, + src/gui_x11.c, src/proto/gui_x11.pro + +Patch 8.0.1451 +Problem: It is difficult to set the python home directory properly for + Python 2.7 and 3.5 since both use $PYTHONHOME. +Solution: Add the 'pythonhome' and 'pythonthreehome' options. (Kazuki + Sakamoto, closes #1266) +Files: runtime/doc/options.txt, runtime/doc/quickref.txt, + runtime/optwin.vim, src/if_python.c, src/if_python3.c, + src/option.c, src/option.h + +Patch 8.0.1452 +Problem: Terminal test fails on some systems. (jonathonf) +Solution: Use "cat" instead of Python to produce the input. Add a delay. + (closes #2607) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1453 +Problem: Terminal test fails on some slow terminals. +Solution: Increase timeout to 10 seconds. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1454 +Problem: When in silent mode too much output is buffered. +Solution: Use line buffering instead of fully buffered. (Brian M. Carlson, + closes #2537) +Files: src/main.c + +Patch 8.0.1455 +Problem: If $SHELL contains a space then the default value of 'shell' is + incorrect. (Matthew Horan) +Solution: Escape spaces in $SHELL. (Christian Brabandt, closes #459) +Files: src/option.c, runtime/doc/options.txt, + src/testdir/test_startup.vim + +Patch 8.0.1456 +Problem: Timer test on travis Mac is still flaky. +Solution: Increase time range a bit more. +Files: src/testdir/test_timers.vim + +Patch 8.0.1457 +Problem: Clojure now supports a shebang line. +Solution: Detect clojure script from the shebang line. (David Burgin, + closes #2570) +Files: runtime/scripts.vim + +Patch 8.0.1458 +Problem: Filetype detection test does not check all scripts. +Solution: Add most scripts to the test +Files: src/testdir/test_filetype.vim + +Patch 8.0.1459 +Problem: Cannot handle change of directory. +Solution: Add the DirChanged autocommand event. (Andy Massimino, + closes #888) Avoid changing directory for 'autochdir' too often. +Files: runtime/doc/autocmd.txt, src/buffer.c, src/ex_docmd.c, + src/fileio.c, src/main.c, src/vim.h, src/proto/misc2.pro, + src/gui_mac.c, src/netbeans.c, src/os_win32.c, + src/testdir/test_autocmd.vim + +Patch 8.0.1460 (after 8.0.1459) +Problem: Missing file in patch. +Solution: Add changes to missing file. +Files: src/misc2.c + +Patch 8.0.1461 (after 8.0.1459) +Problem: Missing another file in patch. +Solution: Add changes to missing file. +Files: src/ex_cmds.c + +Patch 8.0.1462 (after 8.0.1459) +Problem: Missing yet another file in patch. +Solution: Add changes to missing file. +Files: src/gui.c + +Patch 8.0.1463 +Problem: Test fails without 'autochdir' option. +Solution: Skip test if 'autochdir' is not supported. +Files: src/testdir/test_autocmd.vim + +Patch 8.0.1464 +Problem: Completing directory after :find does not add slash. +Solution: Adjust the flags for globpath(). (Genki Sky) +Files: src/misc1.c, src/testdir/test_find_complete.vim + +Patch 8.0.1465 +Problem: Python2 and python3 detection not tested. (Matej Cepl) +Solution: Add test for detecting python2 and python3. Also detect a script + using "js" as javascript. +Files: runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.0.1466 +Problem: Older GTK versions don't have gtk_entry_get_text_length(). +Solution: Add a function with #ifdefs to take care of GTK version + differences. (Kazunobu Kuriyama, closes #2605) +Files: src/gui_gtk.c + +Patch 8.0.1467 +Problem: Libvterm doesn't handle illegal byte sequence correctly. +Solution: After the invalid code check if there is space to store another + character. Allocate one more character. (zhykzhykzhyk, closes + #2614, closes #2613) +Files: src/libvterm/src/encoding.c, src/libvterm/src/state.c + +Patch 8.0.1468 +Problem: Illegal memory access in del_bytes(). +Solution: Check for negative byte count. (Christian Brabandt, closes #2466) +Files: src/message.c, src/misc1.c + +Patch 8.0.1469 +Problem: When package path is a symlink adding it to 'runtimepath' happens + at the end. +Solution: Do not resolve symlinks before locating the position in + 'runtimepath'. (Ozaki Kiichi, closes #2604) +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 8.0.1470 +Problem: Integer overflow when using regexp pattern. (geeknik) +Solution: Use a long instead of int. (Christian Brabandt, closes #2251) +Files: src/regexp_nfa.c + +Patch 8.0.1471 (after 8.0.1401) +Problem: On MS-Windows CursorIM highlighting no longer works. +Solution: Adjust #if statements. (Ken Takata) +Files: src/gui.c + +Patch 8.0.1472 +Problem: MS-Windows: nsis installer is a bit slow. +Solution: Use ReserveFile for vimrc.ini. (Ken Takata, closes #2522) +Files: nsis/gvim.nsi + +Patch 8.0.1473 +Problem: MS-Windows: D&D fails between 32 and 64 bit apps. +Solution: Add the /HIGHENTROPYVA:NO linker option. (Ken Takata, closes #2504) +Files: src/Make_mvc.mak + +Patch 8.0.1474 +Problem: Visual C 2017 has multiple MSVCVER numbers. +Solution: Assume the 2017 version if MSVCVER >= 1910. (Leonardo Valeri + Manera, closes #2619) +Files: src/Make_mvc.mak + +Patch 8.0.1475 +Problem: Invalid memory access in read_redo(). (gy741) +Solution: Convert the replacement character back from a negative number to + CR or NL. (hint by Dominique Pelle, closes #2616) +Files: src/testdir/test_undo.vim, src/normal.c, src/vim.h, src/ops.c + +Patch 8.0.1476 +Problem: Screen isn't always updated right away. +Solution: Adjust #ifdef: Call out_flush() when not running the GUI. +Files: src/screen.c + +Patch 8.0.1477 +Problem: Redraw flicker when moving the mouse outside of terminal window. +Solution: Instead of updating the cursor color and shape every time leaving + and entering a terminal window, only update when different from + the previously used cursor. +Files: src/terminal.c + +Patch 8.0.1478 +Problem: Unnecessary condition for "len" being zero. +Solution: Remove the condition. (Dominique Pelle) +Files: src/regexp_nfa.c + +Patch 8.0.1479 +Problem: Insert mode completion state is confusing. +Solution: Move ctrl_x_mode into edit.c. Add CTRL_X_NORMAL for zero. +Files: src/edit.c, src/globals.h, src/proto/edit.pro, src/search.c, + src/getchar.c + +Patch 8.0.1480 (after 8.0.1479) +Problem: Patch missing change. +Solution: Add missing change. +Files: src/evalfunc.c + +Patch 8.0.1481 +Problem: Clearing a pointer takes two lines. +Solution: Add vim_clear() to free and clear the pointer. +Files: src/misc2.c, src/proto/misc2.pro, src/edit.c + +Patch 8.0.1482 +Problem: Using feedkeys() does not work to test Insert mode completion. + (Lifepillar) +Solution: Do not check for typed keys when executing :normal or feedkeys(). + Fix thesaurus completion not working when 'complete' is empty. +Files: src/edit.c, src/testdir/test_ins_complete.vim, + src/testdir/test_popup.vim, src/testdir/test_edit.vim + +Patch 8.0.1483 +Problem: searchpair() might return an invalid value on timeout. +Solution: When the second search times out, do not accept a match from the + first search. (Daniel Hahler, closes #2552) +Files: src/search.c + +Patch 8.0.1484 +Problem: Redundant conditions. +Solution: Remove them. (Dominique Pelle) +Files: src/terminal.c + +Patch 8.0.1485 +Problem: Weird autocmd may cause arglist to be changed recursively. +Solution: Prevent recursively changing the argument list. (Christian + Brabandt, closes #2472) +Files: src/ex_docmd.c, src/globals.h + +Patch 8.0.1486 +Problem: Accessing invalid memory with "it". (Dominique Pelle) +Solution: Avoid going over the end of the line. (Christian Brabandt, + closes #2532) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.0.1487 (after 8.0.1486) +Problem: Test 14 fails. +Solution: Fix of-by-one error. +Files: src/search.c + +Patch 8.0.1488 (after 8.0.1218) +Problem: Emacs tags no longer work. (zdohnal) +Solution: Do not skip over end of line. +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.0.1489 +Problem: There is no easy way to get the global directory, esp. if some + windows have a local directory. +Solution: Make getcwd(-1) return the global directory. (Andy Massimino, + closes #2606) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_getcwd.vim + +Patch 8.0.1490 +Problem: Number of spell regions is spread out through the code. +Solution: Define MAXREGIONS. +Files: src/spell.h, src/spellfile.c + +Patch 8.0.1491 +Problem: The minimum width of the popup menu is hard coded. +Solution: Add the 'pumwidth' option. (Christian Brabandt, James McCoy, + closes #2314) +Files: runtime/doc/options.txt, src/option.c, src/option.h, + src/popupmnu.c + +Patch 8.0.1492 +Problem: Memory leak in balloon_split(). +Solution: Free the balloon lines. Free the balloon when exiting. +Files: src/misc2.c, src/evalfunc.c + +Patch 8.0.1493 +Problem: Completion items cannot be annotated. +Solution: Add a "user_data" entry to the completion item. (Ben Jackson, + closes #2608, closes #2508) +Files: runtime/doc/insert.txt, src/edit.c, src/structs.h, + src/testdir/test_ins_complete.vim + +Patch 8.0.1494 +Problem: No autocmd triggered in Insert mode with visible popup menu. +Solution: Add TextChangedP. (Prabir Shrestha, Christian Brabandt, + closes #2372, closes #1691) + Fix that the TextChanged autocommands are not always triggered + when sourcing a script. +Files: runtime/doc/autocmd.txt, src/edit.c, src/globals.h, src/structs.h, + src/fileio.c, src/proto/fileio.pro, src/vim.h, src/main.c, + src/testdir/test_autocmd.vim + +Patch 8.0.1495 +Problem: Having 'pumwidth' default to zero has no merit. +Solution: Make the default 15, as the actual default value. +Files: src/popupmnu.c, src/option.c + +Patch 8.0.1496 +Problem: Clearing a pointer takes two lines. +Solution: Add VIM_CLEAR() and replace vim_clear(). (Hirohito Higashi, + closes #2629) +Files: src/buffer.c, src/channel.c, src/crypt.c, src/edit.c, src/eval.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, src/gui_gtk_x11.c, src/gui_photon.c, + src/gui_w32.c, src/gui_x11.c, src/hardcopy.c, src/if_cscope.c, + src/macros.h, src/main.c, src/mark.c, src/mbyte.c, src/memfile.c, + src/memline.c, src/menu.c, src/message.c, src/misc1.c, + src/misc2.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/os_amiga.c, src/os_mac_conv.c, src/os_mswin.c, + src/os_unix.c, src/os_win32.c, src/popupmnu.c, + src/proto/misc2.pro, src/quickfix.c, src/regexp.c, + src/regexp_nfa.c, src/screen.c, src/search.c, src/spell.c, + src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, + src/terminal.c, src/ui.c, src/undo.c, src/userfunc.c, src/window.c + +Patch 8.0.1497 +Problem: Getting the jump list requires parsing the output of :jumps. +Solution: Add getjumplist(). (Yegappan Lakshmanan, closes #2609) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/Makefile, + src/evalfunc.c, src/list.c, src/proto/list.pro, + src/testdir/Make_all.mak, src/testdir/test_jumplist.vim + +Patch 8.0.1498 (after 8.0.1497) +Problem: getjumplist() returns duplicate entries. (lacygoill) +Solution: Call cleanup_jumplist(). (Yegappan Lakshmanan) +Files: src/evalfunc.c, src/mark.c, src/proto/mark.pro, + src/testdir/test_jumplist.vim + +Patch 8.0.1499 +Problem: Out-of-memory situation not correctly handled. (Coverity) +Solution: Check for NULL value. +Files: src/terminal.c + +Patch 8.0.1500 +Problem: Possible NULL pointer dereference. (Coverity) +Solution: Check for the pointer not being NULL. +Files: src/quickfix.c + +Patch 8.0.1501 +Problem: Out-of-memory situation not correctly handled. (Coverity) +Solution: Check for NULL value. +Files: src/ops.c + +Patch 8.0.1502 +Problem: In out-of-memory situation character is not restored. (Coverity) +Solution: Restore the character in all situations. +Files: src/ex_getln.c + +Patch 8.0.1503 +Problem: Access memory beyond end of string. (Coverity) +Solution: Keep allocated memory in separate pointer. Avoid outputting the + NUL character. +Files: src/hardcopy.c + +Patch 8.0.1504 +Problem: Win32: the screen may be cleared on startup. +Solution: Only call shell_resized() when the size actually changed. (Ken + Takata, closes #2527) +Files: src/os_win32.c + +Patch 8.0.1505 +Problem: Debugger can't break on a condition. (Charles Campbell) +Solution: Add ":breakadd expr". (Christian Brabandt, closes #859) +Files: runtime/doc/repeat.txt, src/eval.c, src/evalfunc.c, + src/userfunc.c, src/ex_cmds2.c, src/ex_docmd.c, + src/proto/eval.pro, src/proto/ex_cmds2.pro, src/structs.h + +Patch 8.0.1506 +Problem: New version of HP NonStop (Tandem) doesn't like the default header + for setenv(). +Solution: Put a #ifdef around the setenv() entry. (Joachim Schmitz) +Files: src/osdef2.h.in + +Patch 8.0.1507 +Problem: Timer test is a bit flaky. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1508 +Problem: The :drop command is not always available. +Solution: Include :drop in all builds. (Yasuhiro Matsumoto, closes #2639) +Files: runtime/doc/windows.txt, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/testdir/test_normal.vim, + src/testdir/test_tabpage.vim + +Patch 8.0.1509 (after 8.0.1508) +Problem: Test for failing drag-n-drop command no longer fails. +Solution: Check for the "dnd" feature. +Files: src/testdir/test_normal.vim + +Patch 8.0.1510 +Problem: Cannot test if a command causes a beep. +Solution: Add assert_beeps(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/eval.c, + src/proto/eval.pro, src/misc1.c, src/globals.h, + src/testdir/test_normal.vim, src/testdir/test_assert.vim + +Patch 8.0.1511 (after 8.0.1505) +Problem: Some code for the debugger watch expression is clumsy. +Solution: Clean up the code. +Files: src/ex_cmds2.c, src/eval.c, src/proto/eval.pro + +Patch 8.0.1512 +Problem: Warning for possibly using NULL pointer. (Coverity) +Solution: Skip using the pointer if it's NULL. +Files: src/ex_cmds.c + +Patch 8.0.1513 +Problem: The jumplist is not always properly cleaned up. +Solution: Call fname2fnum() before cleanup_jumplist(). (Yegappan Lakshmanan) +Files: src/evalfunc.c, src/mark.c, src/proto/mark.pro + +Patch 8.0.1514 +Problem: Getting the list of changes is not easy. +Solution: Add the getchangelist() function. (Yegappan Lakshmanan, + closes #2634) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/Make_all.mak, src/testdir/test_changelist.vim, + src/Makefile + +Patch 8.0.1515 +Problem: BufWinEnter event fired when opening hidden terminal. +Solution: Do not fire BufWinEnter when the terminal is hidden and does not + open a window. (Kenta Sato, closes #2636) +Files: src/terminal.c + +Patch 8.0.1516 +Problem: Errors for job options are not very specific. +Solution: Add more specific error messages. +Files: src/channel.c, src/globals.h + +Patch 8.0.1517 +Problem: Invalid memory access with pattern using look-behind match. + (Dominique Pelle) +Solution: Get a pointer to the right line. +Files: src/regexp.c + +Patch 8.0.1518 +Problem: Error messages suppressed after ":silent! try". (Ben Reilly) +Solution: Restore emsg_silent before executing :try. (closes #2531) +Files: src/ex_docmd.c, src/testdir/test_eval_stuff.vim + +Patch 8.0.1519 +Problem: getchangelist() does not use argument as bufname(). +Solution: Use get_buf_tv(). (Yegappan Lakshmanan, closes #2641) +Files: src/evalfunc.c, src/testdir/test_changelist.vim + +Patch 8.0.1520 +Problem: Cursor is in the wrong line when using a WinBar in a Terminal + window. +Solution: Adjust the row number. (Christian Brabandt, closes #2362) +Files: src/screen.c, src/terminal.c + +Patch 8.0.1521 +Problem: Shift-Tab does not work in a terminal window. +Solution: Recognize Shift-Tab key press. (Jsees Luehrs, closes #2644) +Files: src/terminal.c + +Patch 8.0.1522 (after 8.0.1491) +Problem: Popup menu is positioned in the wrong place. (Davit Samvelyan, + Boris Staletic) +Solution: Correct computation of the column and the conditions for that. + (Hirohito Higashi, closes #2640) +Files: src/popupmnu.c + +Patch 8.0.1523 +Problem: Cannot write and read terminal screendumps. +Solution: Add term_dumpwrite(), term_dumpread() and term_dumpdiff(). + Also add assert_equalfile(). +Files: src/terminal.c, src/proto/terminal.pro, src/evalfunc.c, + src/normal.c, src/eval.c, src/proto/eval.pro, + runtime/doc/eval.txt, src/testdir/test_assert.vim + +Patch 8.0.1524 (after 8.0.1523) +Problem: Compiler warnings for uninitialized variables. (Tony Mechelynck) +Solution: Initialize variables. +Files: src/terminal.c + +Patch 8.0.1525 +Problem: Using :wqa exits even if a job runs in a terminal window. (Jason + Felice) +Solution: Check if a terminal has a running job. (closes #2654) +Files: src/ex_cmds2.c, src/buffer.c, src/proto/buffer.pro, src/ex_cmds.c, + src/testdir/test_terminal.vim + +Patch 8.0.1526 +Problem: No test using a screen dump yet. +Solution: Add a test for C syntax highlighting. Add helper functions. +Files: src/terminal.c, src/testdir/test_syntax.vim, + src/testdir/shared.vim, src/testdir/screendump.vim, + src/testdir/dumps/Test_syntax_c_01.dump, runtime/doc/terminal.txt, + src/testdir/README.txt + +Patch 8.0.1527 (after 8.0.1526) +Problem: Screen dump test fails on MS-Windows. +Solution: Skip dump test on MS-Windows for now. +Files: src/testdir/test_syntax.vim + +Patch 8.0.1528 +Problem: Dead code found. +Solution: Remove the useless lines. (CodeAi, closes #2656) +Files: src/screen.c, src/spell.c, src/syntax.c, src/window.c + +Patch 8.0.1529 +Problem: Assert_equalfile() does not close file descriptors. (Coverity) +Solution: Close the file descriptors. +Files: src/eval.c + +Patch 8.0.1530 +Problem: Dump test fails when using a shadow directory. +Solution: Add the directory to the list of symlinks to make (Elimar + Riesebieter) +Files: src/Makefile + +Patch 8.0.1531 +Problem: Cannot use 24 bit colors in MS-Windows console. +Solution: Add support for vcon. (Nobuhiro Takasaki, Ken Takata, + fixes #1270, fixes #2060) +Files: runtime/doc/options.txt, src/misc1.c, src/option.c, + src/evalfunc.c, src/os_win32.c, src/proto/os_win32.pro, + src/feature.h, src/proto/term.pro, src/screen.c, src/syntax.c, + src/term.c, src/testdir/gen_opt_test.vim, src/version.c + +Patch 8.0.1532 +Problem: Compiler warnings without termguicolors feature. +Solution: Add #ifdef. (John Marriott) Cleanup the code a bit. +Files: src/term.c + +Patch 8.0.1533 +Problem: Libterm doesn't support requesting fg and bg color. +Solution: Implement t_RF and t_RB. +Files: src/libvterm/src/vterm_internal.h, src/libvterm/src/state.c, + src/libvterm/src/vterm.c + +Patch 8.0.1534 +Problem: C syntax test fails when using gvim +Solution: Force running in a terminal. Check that 'background' is correct + even when $COLORFGBG is set. +Files: src/testdir/test_syntax.vim, src/testdir/screendump.vim + +Patch 8.0.1535 (after 8.0.1534) +Problem: C syntax test still fails when using gvim. +Solution: Clear Normal cterm highlighting instead of setting it. +Files: src/testdir/test_syntax.vim, src/testdir/screendump.vim, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.0.1536 +Problem: Quotestar test is flaky when using the GUI. +Solution: Add check that the star register arrived at the server. Increase + timeouts. +Files: src/testdir/test_quotestar.vim + +Patch 8.0.1537 +Problem: Xxd does not skip NUL lines when using ebcdic. +Solution: Check for a NUL before converting a character for ebcdic. (Tim + Sell, closes #2668) +Files: src/xxd/xxd.c + +Patch 8.0.1538 +Problem: Popupmenu is too far left when completion is long. (Linwei) +Solution: Adjust column computations. (Hirohito Higashi, closes #2661) +Files: src/popupmnu.c + +Patch 8.0.1539 +Problem: No test for the popup menu positioning. +Solution: Add a screendump test for the popup menu. +Files: src/terminal.c, src/testdir/test_syntax.vim, + src/testdir/screendump.vim, + src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_position_01.dump, + src/testdir/dumps/Test_popup_position_02.dump, + src/testdir/dumps/Test_popup_position_03.dump, + runtime/doc/eval.txt + +Patch 8.0.1540 +Problem: Popup menu positioning fails with longer string. +Solution: Only align with right side of window when width is less than + 'pumwidth' (closes #2661) +Files: src/popupmnu.c, src/testdir/screendump.vim, + src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_position_04.dump + +Patch 8.0.1541 +Problem: synpat_T is taking too much memory. +Solution: Reorder members to reduce padding. (Dominique Pelle, closes #2671) +Files: src/syntax.c + +Patch 8.0.1542 +Problem: Terminal screen dump does not include cursor position. +Solution: Mark the cursor position in the dump. +Files: src/terminal.c, + src/testdir/dumps/Test_popup_position_01.dump, + src/testdir/dumps/Test_popup_position_02.dump, + src/testdir/dumps/Test_popup_position_03.dump, + src/testdir/dumps/Test_popup_position_04.dump, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.0.1543 +Problem: With 'termguicolors' Normal color doesn't work correctly. +Solution: Set cterm_normal_bg_gui_color and cterm_normal_fg_color always. + (Kazunobu Kuriyama, closes #981, closes #2332) +Files: src/syntax.c + +Patch 8.0.1544 +Problem: When using 'termguicolors' SpellBad doesn't show. +Solution: When the GUI colors are not set fall back to the cterm colors. +Files: src/syntax.c, src/screen.c, src/gui.h, src/structs.h + +Patch 8.0.1545 +Problem: Screen dumps not included in distribution. +Solution: Add dumps to the list of distributed files. +Files: Filelist + +Patch 8.0.1546 +Problem: Using feedkeys() in a terminal window may trigger mappings. + (Charles Sheridan) +Solution: Avoid triggering a mapping when peeking for a key. +Files: src/getchar.c, src/terminal.c + +Patch 8.0.1547 +Problem: Undo in the options window makes it empty. +Solution: Set 'undolevels' while filling the buffer. (Yasuhiro Matsumoto, + closes #2645) +Files: runtime/optwin.vim + +Patch 8.0.1548 +Problem: Screen dump test script not included in distribution. +Solution: Add the script to the list of distributed files. +Files: Filelist + +Patch 8.0.1549 +Problem: Various small problems in test files. +Solution: Include small changes. +Files: src/testdir/test_channel.py, src/testdir/shared.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim + +Patch 8.0.1550 +Problem: Various small problems in source files. +Solution: Fix the problems. +Files: src/README.txt, src/beval.c, src/json_test.c, src/mbyte.c, + src/libvterm/include/vterm_keycodes.h, src/Makefile, + src/gui_gtk.c, src/if_xcmdsrv.c, src/pty.c, src/if_python.c, + src/if_py_both.h, uninstal.txt, src/dosinst.c, src/iscygpty.c, + src/vimrun.c, src/os_vms.c + +Patch 8.0.1551 +Problem: On Mac 'maxmemtot' is set to a weird value. +Solution: For Mac use total memory and subtract system memory. For other + systems accept both a 32 bit and 64 bit result. (Ozaki Kiichi, + closes #2646) +Files: src/os_unix.c + +Patch 8.0.1552 +Problem: May leak file descriptors when executing job. +Solution: Close more file descriptors. (Ozaki Kiichi, closes #2651) +Files: src/os_unix.c, src/testdir/test_channel.vim + +Patch 8.0.1553 +Problem: Cannot see what digraph is used to insert a character. +Solution: Show the digraph with the "ga" command. (Christian Brabandt) +Files: runtime/doc/various.txt, src/digraph.c, src/ex_cmds.c, + src/proto/digraph.pro, src/testdir/shared.vim, + src/testdir/test_matchadd_conceal.vim, + src/testdir/test_digraph.vim, src/testdir/test_ga.vim, + src/testdir/test_arabic.vim + +Patch 8.0.1554 +Problem: Custom plugins loaded with --clean. +Solution: Do not include the home directory in 'runtimepath'. +Files: src/option.c, src/main.c, src/proto/option.pro, src/structs.h, + src/os_unix.h, src/os_amiga.h, src/os_dos.h, src/os_mac.h, + runtime/doc/starting.txt + +Patch 8.0.1555 +Problem: Build error for some combination of features. +Solution: Declare variable in more situations. +Files: src/main.c + +Patch 8.0.1556 +Problem: May not parse the t_RS response correctly, resulting in wrong + characters in the input stream. +Solution: When the t_RS response is partly received wait for more + characters. +Files: src/term.c + +Patch 8.0.1557 +Problem: printf() does not work with only one argument. (Daniel Hahler) +Solution: Allow using just the format. (Ken Takata, closes #2687) +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 8.0.1558 +Problem: No right-click menu in a terminal. +Solution: Implement the right click menu for the terminal. +Files: src/popupmnu.c, src/proto/popupmnu.pro, src/normal.c, src/menu.c, + src/proto/menu.pro, src/feature.h + +Patch 8.0.1559 +Problem: Build failure without GUI. +Solution: Adjust #ifdef for get_fpos_of_mouse(). +Files: src/ui.c + +Patch 8.0.1560 +Problem: Build failure without GUI on MS-Windows. +Solution: Adjust #ifdef for vcol2col(). +Files: src/ui.c + +Patch 8.0.1561 +Problem: Crash with rust syntax highlighting. (Edd Barrett) +Solution: Avoid going past the end of an empty line. +Files: src/syntax.c + +Patch 8.0.1562 +Problem: The terminal debugger can't set a breakpoint with the mouse. +Solution: Add popup menu entries. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1563 +Problem: Timeout of getwinposx() can be too short. (lilydjwg) +Solution: Add getwinpos(). (closes #2689) +Files: src/evalfunc.c, src/term.c, src/proto/term.pro, runtime/doc/eval.txt + +Patch 8.0.1564 +Problem: Too many #ifdefs. +Solution: Graduate the +autocmd feature. Takes away 450 #ifdefs and + increases code size of tiny Vim by only 40 Kbyte. +Files: src/buffer.c, src/diff.c, src/edit.c, src/eval.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, + src/fileio.c, src/getchar.c, src/globals.h, src/gui.c, + src/if_cscope.c, src/if_xcmdsrv.c, src/main.c, src/mbyte.c, + src/memline.c, src/menu.c, src/misc1.c, src/gui_mac.c, + src/misc2.c, src/move.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/option.h, src/feature.h, src/vim.h, + src/os_amiga.c, src/os_mswin.c, src/os_unix.c, src/os_win32.c, + src/quickfix.c, src/screen.c, src/search.c, src/spell.c, + src/structs.h, src/syntax.c, src/tag.c, src/term.c, + src/terminal.c, src/ui.c, src/undo.c, src/userfunc.c, + src/version.c, src/window.c + +Patch 8.0.1565 +Problem: Can't build Mac version without GUI. +Solution: Adjust when IME_WITHOUT_XIM is defined. +Files: src/vim.h + +Patch 8.0.1566 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_SCROLLBIND and FEAT_CURSORBIND. +Files: src/buffer.c, src/diff.c, src/edit.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/gui.c, + src/main.c, src/move.c, src/normal.c, src/option.c, src/term.c, + src/version.c, src/window.c, src/globals.h, src/macros.h, + src/option.h, src/structs.h + +Patch 8.0.1567 +Problem: Cannot build Win32 GUI without IME. (John Marriott) +Solution: Adjust when IME_WITHOUT_XIM and HAVE_INPUT_METHOD are defined and + use it in a few more places. +Files: src/vim.h, src/gui.c + +Patch 8.0.1568 +Problem: Can't build on older Mac, header file is missing. +Solution: Remove the header file. (Ozaki Kiichi, closes #2691) +Files: src/os_unix.c + +Patch 8.0.1569 +Problem: Warning for uninitialized variable from gcc. +Solution: Initialize the variable. +Files: src/quickfix.c + +Patch 8.0.1570 +Problem: Can't use :popup for a menu in the terminal. (Wei Zhang) +Solution: Make :popup work in the terminal. Also fix that entries were + included that don't work in the current state. +Files: src/ex_docmd.c, src/popupmnu.c, src/proto/popupmnu.pro, + src/menu.c, src/proto/menu.pro + +Patch 8.0.1571 (after 8.0.1571) +Problem: Can't build without GUI. +Solution: Adjust #ifdef for gui_find_menu(). +Files: src/menu.c + +Patch 8.0.1572 +Problem: Mac: getting memory size doesn't work everywhere. +Solution: Use MACOS_X instead of MACOS_X_DARWIN. (Kazunobu Kuriyama) +Files: src/os_unix.c + +Patch 8.0.1573 +Problem: getwinpos(1) may cause response to be handled as command. +Solution: Handle any cursor position report once one was requested. (partly + by Hirohito Higashi) +Files: src/term.c + +Patch 8.0.1574 +Problem: Show cursor in wrong place when using popup menu. (Wei Zhang) +Solution: Force updating the cursor position. Fix skipping over unused + entries. +Files: src/screen.c, src/proto/screen.pro, src/popupmnu.c + +Patch 8.0.1575 +Problem: Crash when using virtual replace. +Solution: Adjust orig_line_count. Add more tests. (Christian Brabandt) +Files: src/edit.c, src/testdir/test_visual.vim + +Patch 8.0.1576 +Problem: Perl VIM::Buffers() does not find every buffer. +Solution: Also find unlisted buffer by number or name. (Chris Weyl, + closes #2692) +Files: src/if_perl.xs + +Patch 8.0.1577 +Problem: Virtual replace test fails on MS-Windows. +Solution: Make adding a termcap entry work for a builtin terminal. + Restore terminal keys in a better way. +Files: src/term.c, src/testdir/test_visual.vim + +Patch 8.0.1578 +Problem: No test for :popup in terminal. +Solution: Add a screen dump test. +Files: src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_command_01.dump, + src/testdir/dumps/Test_popup_command_02.dump, + src/testdir/dumps/Test_popup_command_03.dump + +Patch 8.0.1579 +Problem: Virtual replace test fails in GUI. +Solution: Don't save key options if they were not set. +Files: src/testdir/test_visual.vim + +Patch 8.0.1580 +Problem: FEAT_CURSORBIND and FEAT_SCROLLBIND are unused. +Solution: Delete them. +Files: src/feature.h + +Patch 8.0.1581 +Problem: Cannot build Win32 GUI without +eval. +Solution: Define HAVE_INPUT_METHOD without +eval. (Ken Takata) +Files: src/vim.h + +Patch 8.0.1582 +Problem: In the MS-Windows console mouse movement is not used. +Solution: Pass mouse movement events when useful. +Files: src/os_win32.c, src/proto/os_win32.pro, src/feature.h + +Patch 8.0.1583 +Problem: Using C99 comment. +Solution: Use old style comment. (Kazunobu Kuriyama) +Files: src/quickfix.c + +Patch 8.0.1584 +Problem: Using C99 in Mac file gives compiler warning messages. +Solution: Add #pragmas to avoid the warnings. (Kazunobu Kuriyama) +Files: src/os_macosx.m + +Patch 8.0.1585 +Problem: Enabling beval_term feature in Win32 GUI. +Solution: Only enable beval_term in Win32 console. +Files: src/feature.h + +Patch 8.0.1586 +Problem: Imactivatefunc does not work on non-GUI Mac. +Solution: Fix logic in #ifdef. +Files: src/vim.h + +Patch 8.0.1587 +Problem: inserting from the clipboard doesn't work literally +Solution: When pasting from the * or + register always assume literally. +Files: src/ops.c, src/proto/ops.pro, src/testdir/test_paste.vim + +Patch 8.0.1588 +Problem: Popup menu hangs after typing CTRL-C. +Solution: Make CTRL-C exit the loop. (Ozaki Kiichi, closes #2697) +Files: src/popupmnu.c + +Patch 8.0.1589 +Problem: Error for setting 'modifiable' when resetting it. +Solution: Check if 'modifiable' was actually set. +Files: src/option.c + +Patch 8.0.1590 +Problem: Padding in list type wastes memory. +Solution: Reorder struct members to optimize padding. (Dominique Pelle, + closes #2704) +Files: src/structs.h + +Patch 8.0.1591 +Problem: MS-Windows: when reparsing the arguments 'wildignore' matters. +Solution: Save and reset 'wildignore'. (Yasuhiro Matsumoto, closes #2702) +Files: src/os_win32.c + +Patch 8.0.1592 +Problem: Terminal windows in a session are not properly restored. +Solution: Add "terminal" in 'sessionoptions'. When possible restore the + command running in a terminal. +Files: src/option.c, src/option.h, src/ex_docmd.c, src/terminal.c, + src/proto/terminal.pro, src/evalfunc.c, src/structs.h, + src/channel.c, src/testdir/test_terminal.vim, + src/testdir/shared.vim, src/testdir/test_mksession.vim + +Patch 8.0.1593 +Problem: :qall never exits with an active terminal window. +Solution: Add a way to kill a job in a terminal window. +Files: src/ex_cmds2.c, src/terminal.c, src/proto/terminal.pro, + src/structs.h, src/channel.c, src/evalfunc.c, + src/testdir/test_terminal.vim, runtime/doc/terminal.txt, + runtime/doc/eval.txt + +Patch 8.0.1594 +Problem: :confirm qall not tested with active terminal window. +Solution: Add a test. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1595 +Problem: No autocommand triggered before exiting. +Solution: Add the ExitPre autocommand event. +Files: src/ex_docmd.c, src/fileio.c, src/vim.h, + src/testdir/test_exit.vim, src/Makefile, src/testdir/Make_all.mak, + runtime/doc/autocmd.txt + +Patch 8.0.1596 +Problem: No autocommand specifically for opening a terminal window. +Solution: Add TerminalOpen. (Yasuhiro Matsumoto, closes #2484) +Files: runtime/doc/autocmd.txt, src/fileio.c, src/terminal.c, + src/testdir/test_terminal.vim, src/vim.h + +Patch 8.0.1597 +Problem: Autocommand events are not sorted. +Solution: Sort the autocommand events. +Files: src/vim.h + +Patch 8.0.1598 +Problem: Cannot select text in a terminal with the mouse. +Solution: When a job in a terminal is not consuming mouse events, use them + for modeless selection. Also stop Insert mode when clicking in a + terminal window. +Files: src/libvterm/include/vterm.h, src/libvterm/src/state.c, + src/libvterm/src/vterm_internal.h, src/terminal.c, + src/proto/terminal.pro, src/ui.c + +Patch 8.0.1599 +Problem: No error message when gdb does not support the terminal debugger. +Solution: Check for the response to open the Machine Interface. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1600 +Problem: Crash when setting t_Co to zero when 'termguicolors' is set. +Solution: Use IS_CTERM instead of checking the number of colors. + (closes #2710) +Files: src/screen.c, src/testdir/test_highlight.vim + +Patch 8.0.1601 +Problem: Highlight test fails on Win32. +Solution: Check for vtp and vcon support. +Files: src/evalfunc.c, src/testdir/test_highlight.vim + +Patch 8.0.1602 +Problem: Crash in parsing JSON. +Solution: Fail when using array or dict as dict key. (Damien) +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.0.1603 +Problem: Cannot build with +terminal but without +menu. +Solution: Add #ifdef. (Damien) +Files: src/terminal.c + +Patch 8.0.1604 +Problem: Paste test may fail if $DISPLAY is not set. +Solution: Add WorkingClipboard() and use it in the paste test. +Files: src/testdir/shared.vim, src/testdir/test_paste.vim + +Patch 8.0.1605 +Problem: Terminal test is a bit flaky. +Solution: Check for the shell prompt. Use more lambda functions. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1606 +Problem: Singular/plural variants not translated. +Solution: Add NGETTEXT argument to xgettext. (Sergey Alyoshin) +Files: src/po/Make_cyg.mak, src/po/Make_ming.mak, src/po/Make_mvc.mak, + src/po/Makefile + +Patch 8.0.1607 +Problem: --clean loads user settings from .gvimrc. +Solution: Behave like "-U NONE" was used. (Ken Takata) +Files: src/main.c, runtime/doc/starting.txt + +Patch 8.0.1608 +Problem: Win32: directx not enabled by default. +Solution: Change Makefile to enable directx by default. (Ken Takata) +Files: runtime/doc/various.txt, src/Make_cyg_ming.mak, + src/Make_mvc.mak + +Patch 8.0.1609 +Problem: Shell commands in the GUI use a dumb terminal. +Solution: Add the "!" flag to 'guioptions' to execute system commands in a + special terminal window. Only for Unix now. +Files: src/os_unix.c, src/option.h, src/evalfunc.c, src/terminal.c, + src/proto/terminal.pro, src/channel.c, src/proto/channel.pro, + src/vim.h, runtime/doc/options.txt + +Patch 8.0.1610 (after 8.0.1609) +Problem: Cannot build without GUI. +Solution: Add #ifdef. +Files: src/terminal.c + +Patch 8.0.1611 +Problem: CTRL-W in system terminal does not go to job. +Solution: Do not use CTRL-W as a terminal command in a system terminal. +Files: src/terminal.c + +Patch 8.0.1612 +Problem: Need to close terminal after shell stopped. +Solution: Make :terminal without argument close the window by default. +Files: src/terminal.c, src/testdir/test_terminal.vim, + runtime/doc/terminal.txt + +Patch 8.0.1613 +Problem: Warning for unused variable in tiny build. (Tony Mechelynck) +Solution: Move declaration to inner block. +Files: src/os_unix.c + +Patch 8.0.1614 +Problem: "make tags" doesn't include libvterm. +Solution: Add the libvterm sources to the tags command. +Files: src/Makefile + +Patch 8.0.1615 +Problem: term_dumpload() does not use the right colors. +Solution: Initialize colors when not using create_vterm(). +Files: src/terminal.c + +Patch 8.0.1616 +Problem: Win32: shell commands in the GUI open a new console. +Solution: Use a terminal window for interactive use when 'guioptions' + contains "!". +Files: src/os_win32.c + +Patch 8.0.1617 (after 8.0.1616) +Problem: Win32: :shell command in the GUI crashes. +Solution: Handle the situation that "cmd" is NULL. (Yasuhiro Matsumoto, + closes #2721) +Files: src/os_win32.c + +Patch 8.0.1618 +Problem: Color Grey50, used for ToolbarLine, is missing in the compiled-in + table. +Solution: Add the color to the list. (Kazunobu Kuriyama) +Files: src/term.c + +Patch 8.0.1619 +Problem: Win32 GUI: crash when winpty is not installed and trying to use + :shell in a terminal window. +Solution: Check for NULL return form term_start(). (Yasuhiro Matsumoto, + closes #2727) +Files: src/os_win32.c + +Patch 8.0.1620 +Problem: Reading spell file has no good EOF detection. +Solution: Check for EOF at every character read for a length field. +Files: src/misc2.c + +Patch 8.0.1621 +Problem: Using invalid default value for highlight attribute. +Solution: Use zero instead of -1. +Files: src/syntax.c + +Patch 8.0.1622 +Problem: Possible NULL pointer dereference. (Coverity) +Solution: Reverse the check for a NULL pointer. +Files: src/quickfix.c + +Patch 8.0.1623 +Problem: Terminal kill tests are flaky. +Solution: Instead of running Vim in a terminal, run it as a normal command. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1624 +Problem: Options for term_dumpdiff() and term_dumpload() not implemented + yet. +Solution: Implement the relevant options. +Files: src/terminal.c, runtime/doc/eval.txt + +Patch 8.0.1625 +Problem: Test_quotestar is flaky when run in GTK GUI. +Solution: Do not call lose_selection when invoked from + selection_clear_event(). +Files: src/gui_gtk_x11.c + +Patch 8.0.1626 +Problem: Compiler warning for possible loss of data. +Solution: Use size_t instead of int. (Christian Brabandt) +Files: src/terminal.c + +Patch 8.0.1627 +Problem: Compiler warning for visibility attribute not supported on MinGW + builds. +Solution: Don't add the attribute when we don't expect it to work. + (Christian Brabandt) +Files: src/libvterm/src/vterm_internal.h + +Patch 8.0.1628 +Problem: Channel log doesn't mention exiting. +Solution: Add a ch_log() call in getout(). +Files: src/main.c + +Patch 8.0.1629 +Problem: Mac: getpagesize() is deprecated. +Solution: Use sysconf() instead. (Ozaki Kiichi, closes #2741) +Files: src/os_unix.c + +Patch 8.0.1630 +Problem: Trimming white space is not that easy. +Solution: Add the trim() function. (Bukn, Yasuhiro Matsumoto, closes #1280) +Files: src/evalfunc.c, runtime/doc/eval.txt, + src/testdir/test_functions.vim + +Patch 8.0.1631 +Problem: Testing with Vim running in terminal is a bit flaky. +Solution: Delete any .swp file so that later tests don't fail. +Files: src/testdir/screendump.vim + +Patch 8.0.1632 +Problem: In a terminal dump NUL and space considered are different, + although they are displayed the same. +Solution: When encountering NUL handle it like space. +Files: src/terminal.c + +Patch 8.0.1633 +Problem: A TextChanged autocmd triggers when it is defined after creating a + buffer. +Solution: Set b_last_changedtick when opening a buffer. (Hirohito Higashi, + closes #2742) +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 8.0.1634 +Problem: The ex_vimgrep() function is too long. +Solution: Split it in smaller functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1635 +Problem: Undefining _POSIX_THREADS causes problems with Python 3. (Micah + Bucy, closes #2748) +Solution: Remove the lines. +Files: src/if_python3.c + +Patch 8.0.1636 +Problem: No test for term_dumpload() and term_dumpdiff(). +Solution: Add tests. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1637 +Problem: No test for term_dumpdiff() options argument. +Solution: Add a test. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1638 +Problem: Popup test fails depending on environment variable. +Solution: Reset $COLORFGBG when running Vim in a terminal. (closes #2693) +Files: src/testdir/screendump.vim + +Patch 8.0.1639 +Problem: Libvterm code lags behind master. +Solution: Sync to head, solve merge problems. +Files: src/libvterm/README, src/libvterm/bin/unterm.c, + src/libvterm/bin/vterm-ctrl.c, src/libvterm/bin/vterm-dump.c, + src/libvterm/doc/URLs, src/libvterm/doc/seqs.txt, + src/libvterm/include/vterm.h, + src/libvterm/include/vterm_keycodes.h, src/libvterm/src/mouse.c, + src/libvterm/src/parser.c, src/libvterm/src/pen.c, + src/libvterm/src/screen.c, src/libvterm/src/state.c, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h, + src/libvterm/t/10state_putglyph.test, + src/libvterm/t/25state_input.test, src/libvterm/t/harness.c, + src/libvterm/t/26state_query.test + +Patch 8.0.1640 +Problem: Test_cwd() is flaky. +Solution: Add to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.0.1641 +Problem: Job in terminal can't communicate with Vim. +Solution: Add the terminal API. +Files: src/terminal.c, src/buffer.c, src/testdir/test_terminal.vim, + src/testdir/screendump.vim, runtime/doc/terminal.txt + +Patch 8.0.1642 +Problem: Running Vim in terminal fails with two windows. +Solution: Pass the number of rows to RunVimInTerminal(). +Files: src/testdir/screendump.vim, src/testdir/test_terminal.vim + +Patch 8.0.1643 +Problem: Terminal API tests fail. +Solution: Explicitly set 'title'. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1644 +Problem: Terminal API tests still fail. +Solution: Explicitly set 'title' in the terminal job. (Ozaki Kiichi, + closes #2750) +Files: src/testdir/test_terminal.vim, src/testdir/screendump.vim + +Patch 8.0.1645 +Problem: Test for terminal response to escape sequence fails for some + people. (toothpik) +Solution: Run "cat" and let it echo the characters. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1646 +Problem: MS-Windows: executable contains unreferenced functions and data. +Solution: Add /opt:ref to the compiler command. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 8.0.1647 +Problem: Terminal API may call a function not meant to be called by this + API. +Solution: Require the function to start with Tapi_. +Files: runtime/doc/terminal.txt, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.0.1648 +Problem: Resource fork tool doesn't work on Python 3. +Solution: Use "print()" instead of "print". (Marius Gedminas) +Files: src/dehqx.py + +Patch 8.0.1649 +Problem: No completion for argument list commands. +Solution: Add arglist completion. (Yegappan Lakshmanan, closes #2706) +Files: runtime/doc/eval.txt, runtime/doc/map.txt, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/proto/ex_cmds2.pro, + src/testdir/test_cmdline.vim, src/vim.h + +Patch 8.0.1650 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_LISTCMDS, no reason to leave out buffer commands. +Files: runtime/doc/various.txt, src/buffer.c, src/charset.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/version.c, src/feature.h + +Patch 8.0.1651 +Problem: Cannot filter :ls output for terminal buffers. +Solution: Add flags for terminal buffers. (Marcin Szamotulski, closes #2751) +Files: runtime/doc/windows.txt, src/buffer.c, + src/testdir/test_terminal.vim + +Patch 8.0.1652 +Problem: term_dumpwrite() does not output composing characters. +Solution: Use the cell index. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1653 +Problem: Screen dump is made too soon. +Solution: Wait until the ruler is displayed. (Ozaki Kiichi, closes #2755) +Files: src/testdir/dumps/Test_popup_command_01.dump, + src/testdir/dumps/Test_popup_command_02.dump, + src/testdir/screendump.vim, src/testdir/test_autocmd.vim, + src/testdir/test_terminal.vim + +Patch 8.0.1654 +Problem: Warnings for conversion of void to function pointer. +Solution: Use a temp variable that is a function pointer. +Files: src/if_python.c, src/if_python3.c + +Patch 8.0.1655 +Problem: Outdated gdb message in terminal debugger unclear. +Solution: Specifically mention the required gdb version. Avoid getting + stuck on pagination. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.0.1656 +Problem: No option to have xxd produce upper case variable names. +Solution: Add the -C argument. (Matt Panaro, closes #2772) +Files: src/xxd/xxd.c + +Patch 8.0.1657 +Problem: Crash when reading a channel. +Solution: Clear the write flag before writing. (idea by Shinya Ohyanagi, + closes #2769). +Files: src/channel.c + +Patch 8.0.1658 +Problem: Capitalize argument not available in long form. +Solution: Recognize -capitalize. Update man page. +Files: src/xxd/xxd.c, runtime/doc/xxd.1, runtime/doc/xxd.man + +Patch 8.0.1659 +Problem: Scroll events not recognized for some xterm emulators. +Solution: Recognize mouse codes 0x40 and 0x41 as scroll events. +Files: src/term.c + +Patch 8.0.1660 +Problem: The terminal API "drop" command doesn't support options. +Solution: Implement the options. +Files: src/terminal.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/ex_cmds.h, src/eval.c, src/misc2.c, src/fileio.c, + src/testdir/test_terminal.vim, runtime/doc/terminal.txt + +Patch 8.0.1661 +Problem: Warnings from 64 bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/terminal.c + +Patch 8.0.1662 +Problem: Showing dump diff doesn't mention both file names. +Solution: Add the file name in the separator line. +Files: src/terminal.c + +Patch 8.0.1663 (after 8.0.1660) +Problem: Cannot build without multibyte feature. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.0.1664 +Problem: Test failure because of not allocating enough space. +Solution: Allocate more bytes. +Files: src/terminal.c + +Patch 8.0.1665 +Problem: When running a terminal from the GUI 'term' is not useful. +Solution: Use $TERM in the GUI if it starts with "xterm". (closes #2776) +Files: src/os_unix.c, runtime/doc/terminal.txt + +Patch 8.0.1666 +Problem: % argument in ch_log() causes trouble. +Solution: Use string as third argument in internal ch_log(). (Dominique + Pelle, closes #2784) +Files: src/evalfunc.c, src/testdir/test_channel.vim + +Patch 8.0.1667 +Problem: Terminal window tests are flaky. +Solution: Increase the waiting time for Vim to start. +Files: src/testdir/screendump.vim + +Patch 8.0.1668 +Problem: Terminal debugger: can't re-open source code window. +Solution: Add the :Source command. Also create the window if needed when + gdb stops at a source line. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1669 +Problem: :vimgrep may add entries to the wrong quickfix list. +Solution: Use the list identifier. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1670 +Problem: Terminal window tests are still a bit flaky. +Solution: Increase the waiting time for the buffer to be created. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1671 +Problem: Crash when passing non-dict argument as env to job_start(). +Solution: Check for valid argument. (Ozaki Kiichi, closes #2765) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.0.1672 +Problem: Error during completion causes command to be cancelled. +Solution: Reset did_emsg before waiting for another character. (Tom M.) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.0.1673 +Problem: Terminal window tests are still a bit flaky. +Solution: Increase the waiting time even more. (Elimar Riesebieter) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1674 +Problem: Libvterm can't handle a long OSC string that is split. +Solution: When an incomplete OSC string is received copy it to the parser + buffer. Increase the size of the parser buffer to be able to + handle longer strings. +Files: src/libvterm/src/parser.c, src/libvterm/src/vterm.c + +Patch 8.0.1675 +Problem: Unused macro argument in libvterm. (Randall W. Morris) +Solution: Remove the argument. +Files: src/libvterm/src/parser.c + +Patch 8.0.1676 +Problem: No compiler warning for wrong printf format. +Solution: Add a printf attribute for gcc. Fix reported problems. (Dominique + Pelle, closes #2789) +Files: src/channel.c, src/vim.h, src/proto/channel.pro + +Patch 8.0.1677 +Problem: No compiler warning for wrong format in vim_snprintf(). +Solution: Add printf attribute for gcc. Fix reported problems. +Files: src/vim.h, src/proto.h, src/eval.c, src/fileio.c, src/mbyte.c, + src/ops.c, src/spellfile.c, src/undo.c, src/json.c + +Patch 8.0.1678 +Problem: Errorformat "%r" implies "%>". (Jan Gosmann) +Solution: Jump to before setting fmt_ptr. (Yegappan Lakshmanan, + closes #2785) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1679 +Problem: Compiler warning for printf format. (Chdiza) +Solution: Change type to "long long". (closes #2791) +Files: src/ops.c + +Patch 8.0.1680 +Problem: Memory allocated by libvterm does not show up in profile. +Solution: Pass allocator functions to vterm_new(). +Files: src/terminal.c + +Patch 8.0.1681 +Problem: The format attribute fails with MinGW. (John Marriott) +Solution: Don't use the format attribute with MinGW. +Files: src/vim.h, src/proto.h, src/channel.c + +Patch 8.0.1682 +Problem: Auto indenting breaks inserting a block. +Solution: Do not check for cursor movement if indent was changed. (Christian + Brabandt, closes #2778) +Files: src/testdir/test_blockedit.vim, src/testdir/Make_all.mak, + src/Makefile, src/ops.c + +Patch 8.0.1683 +Problem: Python upgrade breaks Vim when defining PYTHON_HOME. +Solution: Do not define PYTHON_HOME and PYTHON3_HOME in configure. (Naoki + Inada, closes #2787) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1684 +Problem: ml_get errors when using terminal window for shell command. + (Blay263) +Solution: Do not change the size of the current window. +Files: src/terminal.c + +Patch 8.0.1685 +Problem: Can't set ANSI colors of a terminal window. +Solution: Add term_setansicolors(), term_getansicolors() and + g:term_ansi_colors. (Andy Massimino, closes #2747) +Files: runtime/doc/eval.txt, runtime/doc/terminal.txt, src/channel.c, + src/evalfunc.c, src/proto/terminal.pro, src/structs.h, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1686 (after 8.0.1683) +Problem: Python does not work when configuring with specific dir. (Rajdeep) +Solution: Do define PYTHON_HOME and PYTHON3_HOME in configure if the Python + config dir was specified. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1687 +Problem: 64 bit compiler warnings. +Solution: change type, add type cast. (Mike Williams) +Files: src/terminal.c + +Patch 8.0.1688 +Problem: Some macros are used without a semicolon, causing auto-indent to be + wrong. +Solution: Use the do-while(0) trick. (Ozaki Kiichi, closes #2729) +Files: src/buffer.c, src/dosinst.c, src/ex_cmds.c, src/gui_at_sb.c, + src/macros.h, src/main.c, src/memline.c, src/option.c, + src/os_vms.c, src/screen.c, src/window.c + +Patch 8.0.1689 +Problem: No tests for xxd. +Solution: Add a test. (Christian Brabandt) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Makefile, + src/testdir/test_xxd.vim, src/testdir/runtest.vim + +Patch 8.0.1690 +Problem: Not easy to run one test with gvim instead of vim. +Solution: Add VIMTESTTARGET in Makefile. +Files: src/Makefile + +Patch 8.0.1691 +Problem: Xxd test sometimes fails. +Solution: Wipe out the XXDfile buffer. +Files: src/testdir/test_xxd.vim + +Patch 8.0.1692 (after 8.0.1686) +Problem: Python may not work when using statically linked library. +Solution: Do not define PYTHON_HOME and PYTHON3_HOME in configure if the + Python library is linked statically. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1693 +Problem: Xxd is excluded from coverage statistics. +Solution: Don't skip the xxd directory. (Christian Brabandt) +Files: .travis.yml + +Patch 8.0.1694 +Problem: Terminal API test is a bit flaky. +Solution: Wait longer for Vim to stop. +Files: src/testdir/screendump.vim + +Patch 8.0.1695 +Problem: Xxd test not run on MS-Windows. +Solution: Use xxd.exe if it exists. +Files: src/testdir/test_xxd.vim + +Patch 8.0.1696 +Problem: Coverage statistics don't work. +Solution: Include the xxd directory. (Christian Brabandt) +Files: .travis.yml + +Patch 8.0.1697 +Problem: Various tests are still a bit flaky. +Solution: Increase the default wait time to five seconds. +Files: src/testdir/shared.vim, src/testdir/screendump.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_quotestar.vim, src/testdir/test_terminal.vim + +Patch 8.0.1698 +Problem: Coverage statistics don't work on coveralls. +Solution: Use curly braces for $SRCDIR. +Files: .travis.yml + +Patch 8.0.1699 +Problem: Leftover stuff for Python 1.4. +Solution: Remove outdated Python 1.4 stuff. (Naoki Inada, closes #2794) +Files: src/Makefile, src/config.aap.in, src/config.mk.in, + src/configure.ac, src/auto/configure + +Patch 8.0.1700 +Problem: Coverage statistics still don't work on coveralls. +Solution: Exclude the xxd directory again. +Files: .travis.yml + +Patch 8.0.1701 +Problem: Can disable COLOR_EMOJI with MSVC but not MinGW. +Solution: Add COLOR_EMOJI flag. Also add some empty lines for readability. +Files: src/Make_cyg_ming.mak + +Patch 8.0.1702 +Problem: Leaking memory when autocommands make a quickfix list invalid. +Solution: Call FreeWild(). (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1703 +Problem: In the tutor 'showcmd' is not set. +Solution: Set 'showcmd' in the vimtutor script. (Ken Takata, closes #2792) +Files: src/vimtutor + +Patch 8.0.1704 +Problem: 'backupskip' default doesn't work for Mac. +Solution: Use "/private/tmp". (Rainer M眉ller, closes #2793) +Files: src/option.c, src/testdir/test_options.vim, + runtime/doc/options.txt + +Patch 8.0.1705 +Problem: When making a vertical split the mode message isn't always + updated, "VISUAL" remains. (Alexei Averchenko) +Solution: Only reset clear_cmdline when filling all columns of the last + screen line. (Tom M. closes #2611) +Files: src/screen.c, src/testdir/test_window_cmd.vim + +Patch 8.0.1706 +Problem: Cannot send CTRL-\ to a terminal window. +Solution: Make CTRL-W CTRL-\ send CTRL-\ to a terminal window. +Files: src/terminal.c, runtime/doc/terminal.txt + +Patch 8.0.1707 +Problem: When 'wfh' is set ":bel 10new" scrolls window. (Andrew Pyatkov) +Solution: Set the fraction before changing the window height. (closes #2798) +Files: src/window.c + +Patch 8.0.1708 +Problem: Mkdir with 'p' flag fails on existing directory, which is + different from the mkdir shell command. +Solution: Don't fail if the directory already exists. (James McCoy, + closes #2775) +Files: src/evalfunc.c, src/testdir/test_eval_stuff.vim, + runtime/doc/eval.txt + +Patch 8.0.1709 +Problem: Some non-C89 code may slip through. +Solution: Enforce C89 in configure. Fix detected problems. (James McCoy, + closes #2735) +Files: src/channel.c, src/configure.ac, src/auto/configure, + src/gui_gtk_x11.c, src/if_python3.c + +Patch 8.0.1710 +Problem: Building with Ruby fails. +Solution: Don't add -ansi when building with Ruby. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1711 +Problem: Term_setsize() is not implemented yet. +Solution: Implement it. +Files: src/evalfunc.c, src/terminal.c, src/proto/terminal.pro, + src/testdir/test_terminal.vim, runtime/doc/eval.txt + +Patch 8.0.1712 +Problem: Terminal scrollback is not limited. +Solution: Add the 'terminalscroll' option. +Files: src/terminal.c, src/option.h, src/option.c, + runtime/doc/options.txt, runtime/doc/terminal.txt + +Patch 8.0.1713 +Problem: Terminal debugger doesn't handle arguments. +Solution: Use <f-args> and pass all the arguments to gdb, e.g. the core file + or process number. (suggested by Christian Brabandt) Disallow + starting the debugger twice. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1714 +Problem: Term_setsize() does not give an error in a normal buffer. +Solution: Add an error message. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1715 +Problem: Terminal buffer can be 1 more than 'terminalscroll' lines. +Solution: Change > to >=. +Files: src/terminal.c + +Patch 8.0.1716 +Problem: Test for term_setsize() does not give a good error message. +Solution: use assert_inrange(). +Files: src/testdir/test_terminal.vim + +Patch 8.0.1717 +Problem: C89 check causes too much trouble. +Solution: Remove enforcing C89 for now. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1718 +Problem: Terminal scrollback test fails on MS-Windows. +Solution: Check for the last line of output anticipating there might be an + empty line below it. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1719 +Problem: Cannot specify which Python executable configure should use. +Solution: Add --with-python-command and --with-python3-command. +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1720 +Problem: When a timer is running a terminal window may not close after a + shell has exited. +Solution: Call job_status() more often. +Files: src/terminal.c + +Patch 8.0.1721 +Problem: No test for using the 'termsize' option. +Solution: Add a test. +Files: src/testdir/screendump.vim, src/testdir/test_terminal.vim + +Patch 8.0.1722 +Problem: Cannot specify a minimal size for a terminal window. +Solution: Support the "rows*cols" format for 'winsize'. +Files: src/terminal.c, src/testdir/test_terminal.vim, src/option.c, + runtime/doc/options.txt + +Patch 8.0.1723 +Problem: Using one item array size declaration is misleading. +Solution: Instead of using "[1]" and actually using a larger array, use + "[]". This is to verify that this C99 feature works for all + compilers. +Files: src/structs.h, src/getchar.c + +Patch 8.0.1724 +Problem: Declarations cannot be halfway a block. +Solution: Move one declaration to check if this works for all compilers. +Files: src/main.c + +Patch 8.0.1725 +Problem: Terminal debugger doesn't handle command arguments. +Solution: Add the :TermdebugCommand command. Use a ! to execute right away. + (Christian Brabandt) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + runtime/doc/terminal.txt + +Patch 8.0.1726 (after 8.0.1724) +Problem: Older MSVC doesn't support declarations halfway a block. +Solution: Move the declaration back to the start of the block. +Files: src/main.c + +Patch 8.0.1727 +Problem: qf_get_properties() function is too long. +Solution: Refactor the code. (Yegappan Lakshmanan, closes #2807) +Files: src/quickfix.c + +Patch 8.0.1728 +Problem: Condition always false, useless code. +Solution: Remove the code. (Nikolai Pavlov, closes #2808) +Files: src/message.c + +Patch 8.0.1729 +Problem: No comma after last enum item. +Solution: Add a few commas to check if this works for all compilers. Also + add a few // comments. +Files: src/structs.h + +Patch 8.0.1730 +Problem: No configure check for the used C99 features. +Solution: Add a compilation check. Tentatively document C99 features. +Files: src/configure.ac, src/auto/configure, runtime/doc/develop.txt + +Patch 8.0.1731 +Problem: Characters deleted on completion. (Adri脿 Farr茅s) +Solution: Also check the last item for the ORIGINAL_TEXT flag. (Christian + Brabandt, closes #1645) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.1732 +Problem: Crash when terminal API call deletes the buffer. +Solution: Lock the buffer while calling a function. (closes #2813) +Files: src/buffer.c, src/terminal.c, src/testdir/test_terminal.vim, + src/testdir/test_autocmd.vim + +Patch 8.0.1733 +Problem: Incomplete testing for completion fix. (Lifepillar) +Solution: Add a test with CTRL-P. +Files: src/testdir/test_popup.vim + +Patch 8.0.1734 +Problem: Package directory not added to 'rtp' if prefix matches. +Solution: Check the match is a full match. (Ozaki Kiichi, closes #2817) + Also handle different ways of spelling a path. +Files: src/testdir/test_packadd.vim, src/ex_cmds2.c + +Patch 8.0.1735 (after 8.0.1723 and 8.0.1730) +Problem: Flexible array member feature not supported by HP-UX. (John + Marriott) +Solution: Do not use the flexible array member feature of C99. +Files: src/configure.ac, src/auto/configure, src/structs.h, + src/getchar.c, runtime/doc/develop.txt + +Patch 8.0.1736 +Problem: Check for C99 features is incomplete. +Solution: Use AC_PROG_CC_C99 and when C99 isn't fully supported check the + features we need. (James McCoy, closes #2820) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1737 +Problem: fchown() used when it is not supported. +Solution: Add #ifdef. +Files: src/fileio.c + +Patch 8.0.1738 +Problem: ":args" output is hard to read. +Solution: Make columns with the names if the output is more than one line. +Files: src/ex_cmds2.c, src/version.c, src/proto/version.pro, + src/testdir/test_arglist.vim + +Patch 8.0.1739 +Problem: MS-Windows with msys2 cannot build Ruby statically. +Solution: Define RUBY_VERSION. (Gray Wolf, closes #2826) +Files: src/Make_cyg_ming.mak + +Patch 8.0.1740 +Problem: Warning for signed-unsigned incompatibility. +Solution: Change type from "char *" to "char_u *". (John Marriott) +Files: src/ex_cmds2.c + +Patch 8.0.1741 +Problem: MS-Windows with msys2 cannot build Ruby statically. +Solution: Add RUBY_VERSION to CFLAGS later. (Gray Wolf, closes #2833) +Files: src/Make_cyg_ming.mak + +Patch 8.0.1742 +Problem: Cannot get a list of all the jobs. Cannot get the command of + the job. +Solution: When job_info() is called without an argument return a list of + jobs. Otherwise, include the command that the job is running. + (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/channel.c, src/evalfunc.c, + src/proto/channel.pro, src/structs.h, src/testdir/test_channel.vim + +Patch 8.0.1743 +Problem: Terminal window options are named inconsistently. +Solution: prefix terminal window options with "termwin". Keep the old names + for now as an alias. +Files: src/option.c, src/option.h, src/structs.h, src/terminal.c, + src/testdir/test_terminal.vim, src/testdir/gen_opt_test.vim, + runtime/doc/options.txt, runtime/doc/quickref.txt, + runtime/doc/terminal.txt, runtime/optwin.vim + +Patch 8.0.1744 +Problem: On some systems /dev/stdout isn't writable. +Solution: Skip test if writing is not possible. (James McCoy, closes #2830) +Files: src/testdir/test_writefile.vim + +Patch 8.0.1745 +Problem: Build failure on MS-Windows. +Solution: Build job arguments for MS-Windows. Fix allocating job twice. +Files: src/structs.h, src/channel.c, src/os_unix.c, src/misc2.c, + src/terminal.c, src/proto/misc2.pro + +Patch 8.0.1746 +Problem: MS-Windows: channel tests fail. +Solution: Make a copy of the command before splitting it. +Files: src/channel.c + +Patch 8.0.1747 +Problem: MS-Windows: term_start() does not set job_info() cmd. +Solution: Share the code from job_start() to set jv_argv. +Files: src/testdir/test_terminal.vim, src/channel.c, src/misc2.c, + src/proto/misc2.pro, src/terminal.c + +Patch 8.0.1748 +Problem: CmdlineEnter command uses backslash instead of slash. +Solution: Don't treat the character as a file name. (closes #2837) +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 8.0.1749 +Problem: VMS: 100% CPU use, redefining mch_open() and mch_fopen() fails. +Solution: Do not wait indefinitely in RealWaitForChar(). (Neil Rieck) + Do not redefine mch_open() and mch_fopen() on VMS. (Zoltan + Arpadffy) +Files: src/os_vms.c, src/vim.h + +Patch 8.0.1750 +Problem: Crash when clearing location list in autocommand. +Solution: Check if "qi" equals "ql_info". (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1751 +Problem: #ifdef causes bad highlighting. +Solution: Move code around. (Ozaki Kiichi, closes #2731) +Files: src/ui.c + +Patch 8.0.1752 +Problem: qf_set_properties() is to long. +Solution: Refactor the function. Define INVALID_QFIDX. (Yegappan + Lakshmanan, closes #2812) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1753 +Problem: Various warnings from a static analyser +Solution: Add type casts, remove unneeded conditions. (Christian Brabandt, + closes #2770) +Files: src/evalfunc.c, src/ex_cmds2.c, src/fileio.c, src/getchar.c, + src/normal.c, src/os_unix.c, src/search.c, src/term.c + +Patch 8.0.1754 +Problem: ex_helpgrep() is too long. +Solution: Refactor the function. (Yegappan Lakshmanan, closes #2766) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1755 +Problem: MS-Windows GUI: high unicode char received as two utf-16 words. +Solution: Keep the first word until the second word is received. (Chris + Morgan, closes #2800) +Files: src/gui_w32.c + +Patch 8.0.1756 +Problem: GUI: after prompting for a number the mouse shape is sometimes + wrong. +Solution: Call setmouse() after setting "State". (Hirohito Higashi, + closes #2709) +Files: src/misc1.c + +Patch 8.0.1757 +Problem: Unnecessary changes in libvterm. +Solution: Bring back // comments and trailing comma in enums. +Files: src/libvterm/bin/unterm.c, src/libvterm/bin/vterm-ctrl.c, + src/libvterm/bin/vterm-dump.c, src/libvterm/include/vterm.h, + src/libvterm/include/vterm_keycodes.h, + src/libvterm/src/encoding.c, src/libvterm/src/keyboard.c, + src/libvterm/src/parser.c, src/libvterm/src/pen.c, + src/libvterm/src/screen.c, src/libvterm/src/state.c, + src/libvterm/src/unicode.c, src/libvterm/src/utf8.h, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h + +Patch 8.0.1758 +Problem: open_line() returns TRUE/FALSE for success/failure. +Solution: Return OK or FAIL. +Files: src/misc1.c, src/normal.c, src/edit.c + +Patch 8.0.1759 +Problem: Memory leak from duplicate options. (Yegappan Lakshmanan) +Solution: Don't set the default value twice. +Files: src/option.c + +Patch 8.0.1760 +Problem: Wrong number of arguments to vms_read(). +Solution: Drop the first argument. (Ozaki Kiichi) +Files: src/ui.c + +Patch 8.0.1761 +Problem: Job in terminal window with no output channel is killed. +Solution: Keep the job running when the input is a tty. (Ozaki Kiichi, + closes #2734) +Files: src/channel.c, src/os_unix.c, src/testdir/test_channel.vim + +Patch 8.0.1762 +Problem: Terminal debug logging is a bit complicated. +Solution: Make log_tr() use variable arguments (Ozaki Kiichi, closes #2730) +Files: src/term.c + +Patch 8.0.1763 +Problem: :argedit does not reuse an empty unnamed buffer. +Solution: Add the BLN_CURBUF flag and fix all the side effects. (Christian + Brabandt, closes #2713) +Files: src/buffer.c, src/ex_cmds2.c, src/proto/buffer.pro, + src/testdir/test_arglist.vim, src/testdir/test_command_count.vim + +Patch 8.0.1764 +Problem: Lgtm considers tutor.es to be EcmaScript. +Solution: Add a config file for lgtm. (Bas van Schaik, closes #2844) +Files: .lgtm.yml, Filelist + +Patch 8.0.1765 +Problem: CTRL-G j in Insert mode is incorrect when 'virtualedit' is set. +Solution: Take coladd into account. (Christian Brabandt, closes #2743) +Files: src/charset.c, src/testdir/test_virtualedit.vim + +Patch 8.0.1766 (after 8.0.1758) +Problem: Expanding abbreviation doesn't work. (Tooth Pik) +Solution: Return OK instead of FALSE and FAIL instead of TRUE. (Christian + Brabandt) +Files: src/edit.c, src/testdir/test_mapping.vim + +Patch 8.0.1767 +Problem: With 'incsearch' text may jump up and down. () +Solution: Besides w_botline also save and restore w_empty_rows. + (closes #2530) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_scrolling_01.dump + +Patch 8.0.1768 +Problem: SET_NO_HLSEARCH() used in a wrong way. +Solution: Make it a function. (suggested by Dominique Pelle, + closes #2850) +Files: src/vim.h, src/ex_docmd.c, src/proto/ex_docmd.pro, src/search.c, + src/ex_getln.c, src/option.c, src/screen.c, src/tag.c + +Patch 8.0.1769 +Problem: Repeated saving and restoring viewstate for 'incsearch'. +Solution: Use a structure. +Files: src/ex_getln.c + +Patch 8.0.1770 +Problem: Assert functions don't return anything. +Solution: Return non-zero when the assertion fails. +Files: src/evalfunc.c, src/eval.c, src/proto/eval.pro, + src/testdir/test_assert.vim, runtime/doc/eval.txt + +Patch 8.0.1771 +Problem: In tests, when WaitFor() fails it doesn't say why. (James McCoy) +Solution: Add WaitForAssert(), which produces an assert error when it fails. +Files: src/testdir/shared.vim, src/testdir/test_terminal.vim, + src/testdir/screendump.vim, src/testdir/test_autocmd.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_job_fails.vim + +Patch 8.0.1772 +Problem: Quickfix: mixup of FALSE and FAIL, returning -1. +Solution: Use FAIL and INVALID_QFIDX. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.0.1773 +Problem: Dialog messages are not translated. +Solution: Add N_() and _() where needed. (Sergey Alyoshin) +Files: src/diff.c, src/ex_cmds2.c, src/ex_docmd.c, src/message.c, + src/po/Make_cyg.mak, src/po/Make_ming.mak, src/po/Make_mvc.mak, + src/po/Makefile, src/quickfix.c, src/vim.h + +Patch 8.0.1774 +Problem: Reading very long lines can be slow. +Solution: Read up to 1 Mbyte at a time to avoid a lot of copying. Add a + check for going over the column limit. +Files: src/fileio.c + +Patch 8.0.1775 +Problem: MS-Windows: warning for unused variable. +Solution: Move declaration inside #ifdef. (Mike Williams) +Files: src/channel.c + +Patch 8.0.1776 +Problem: In tests, when WaitFor() fails it doesn't say why. +Solution: Turn a few more WaitFor() into WaitForAssert(). +Files: src/testdir/test_popup.vim, src/testdir/test_quotestar.vim, + src/testdir/test_search.vim, src/testdir/test_terminal.vim, + src/testdir/test_timers.vim + +Patch 8.0.1777 +Problem: Cannot cleanup before loading another colorscheme. +Solution: Add the ColorSchemePre autocommand event. +Files: src/fileio.c, src/syntax.c, src/vim.h, src/testdir/test_gui.vim, + runtime/colors/README.txt + +Patch 8.0.1778 +Problem: Script to check translations does not always work. +Solution: Go to first line before searching for MIME. +Files: src/po/check.vim + +Patch 8.0.1779 +Problem: Deleting in a block selection causes problems. +Solution: Check the length of the line before adding bd.textcol and + bd.textlen. (Christian Brabandt, closes #2825) +Files: src/ops.c, src/testdir/test_blockedit.vim + +Patch 8.0.1780 +Problem: Test fails because Vim in a terminal uses wrong 'encoding'. +Solution: Set encoding in the test where it matters. (James McCoy, + closes #2847) +Files: src/testdir/test_terminal.vim + +Patch 8.0.1781 +Problem: File names in quickfix window are not always shortened. +Solution: Shorten the file name when opening the quickfix window. (Yegappan + Lakshmanan, closes #2851, closes #2846) +Files: src/testdir/test_quickfix.vim, src/fileio.c, src/proto/fileio.pro, + src/quickfix.c + +Patch 8.0.1782 +Problem: No simple way to label quickfix entries. +Solution: Add the "module" item, to be used instead of the file name for + display purposes. (Marcin Szamotulski, closes #1757) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/alloc.h, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1783 +Problem: Cannot use 256 colors in a MS-Windows console. +Solution: Add 256 color support. (Nobuhiro Takasaki, closes #2821) +Files: src/misc1.c, src/option.c, src/os_win32.c, src/proto/os_win32.pro, + src/term.c, src/proto/term.pro, src/terminal.c + +Patch 8.0.1784 (after 8.0.1782) +Problem: Gvim test gets stuck in dialog. +Solution: Rename the file used. +Files: src/testdir/test_quickfix.vim + +Patch 8.0.1785 (after 8.0.1783) +Problem: Missing symbol in Win32 small build. +Solution: Define VTERM_ANSI_INDEX_NONE without the terminal feature. Also + fix unused function with #ifdef. +Files: src/term.c, src/os_win32.c + +Patch 8.0.1786 +Problem: No test for 'termwinkey'. +Solution: Add a test. Make feedkeys() handle terminal_loop() returning + before characters are consumed. +Files: src/testdir/test_terminal.vim, src/terminal.c, src/evalfunc.c, + src/ex_docmd.c, src/getchar.c, src/keymap.h + +Patch 8.0.1787 +Problem: Cannot insert the whole cursor line. +Solution: Make CTRL-R CTRL-L work. (Andy Massimino, closes #2857) +Files: runtime/doc/cmdline.txt, src/ex_getln.c, src/ops.c, + src/testdir/test_cmdline.vim + +Patch 8.0.1788 +Problem: Tool to check a color scheme is not installed. +Solution: Update the install rule. (Christian Brabandt) +Files: src/Makefile + +Patch 8.0.1789 +Problem: BufWinEnter does not work well for a terminal window. +Solution: Do not trigger BufWinEnter when opening a terminal window. +Files: src/terminal.c, runtime/doc/autocmd.txt, + src/testdir/test_terminal.vim + +Patch 8.0.1790 +Problem: 'winfixwidth' is not always respected by :close. +Solution: Prefer a frame without 'winfixwidth' or 'winfixheight'. (Jason + Franklin) +Files: src/window.c, src/testdir/test_winbuf_close.vim + +Patch 8.0.1791 +Problem: Using uint8_t does not work everywhere. +Solution: Use char_u instead. +Files: src/term.c, src/proto/term.pro, src/os_win32.c + +Patch 8.0.1792 +Problem: MS-Windows users expect -? to work like --help. +Solution: Add -?. (Christian Brabandt, closes #2867) +Files: src/main.c + +Patch 8.0.1793 +Problem: No test for "vim -g". +Solution: Add a test for "-g" and "-y". +Files: src/testdir/shared.vim, src/testdir/test_gui.vim + +Patch 8.0.1794 +Problem: Duplicate term options after renaming. +Solution: Remove the old names 'termkey', 'termsize' and 'terminalscroll'. +Files: src/option.c, src/terminal.c, src/option.h, + src/testdir/gen_opt_test.vim, src/testdir/screendump.vim + +Patch 8.0.1795 +Problem: Lose contact with jobs when :gui forks. +Solution: Don't fork when there is a running job. Make log message for a + died job clearer. Also close the terminal when stderr and stdout + are the same FD. +Files: src/gui.h, src/gui.c, src/channel.c, src/proto/channel.pro, + src/os_unix.c, src/terminal.c + +Patch 8.0.1796 +Problem: GUI: click on tab fails when the focus is in a terminal window. +Solution: Handle K_TABLINE. +Files: src/terminal.c + +Patch 8.0.1797 +Problem: Terminal window is redrawn too often and scrolling is repeated. +Solution: Don't scroll immediately but only when redrawing. Avoid redrawing + the whole terminal window on every change. +Files: src/terminal.c, src/screen.c, src/proto/terminal.pro + +Patch 8.0.1798 +Problem: MS-Windows: file considered read-only when another program has + opened it. +Solution: Pass file sharing flag to CreateFile(). (Linwei, closes #2860) +Files: src/os_win32.c + +Patch 8.0.1799 +Problem: No test for :registers command. +Solution: Add a test. (Dominique Pelle, closes #2880) +Files: src/testdir/test_registers.vim + +Patch 8.0.1800 +Problem: X11: getting color is slow. +Solution: Avoid using sprintf() and XParseColor(), put the RGB values in + XColor directly. +Files: src/gui_x11.c + +Patch 8.0.1801 +Problem: MS-Windows: redirecting terminal output does not work. +Solution: Intercept the text written to the terminal and write it to the + file. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1802 (after 8.0.1802) +Problem: MS-Windows: terminal test fails. +Solution: Close redirected output file earlier. +Files: src/terminal.c + +Patch 8.0.1803 +Problem: Warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize it. +Files: src/terminal.c + +Patch 8.0.1804 +Problem: Using :normal in terminal window causes problems. (Dominique + Pelle) +Solution: Don't call terminal_loop() for :normal. (closes #2886) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/evalfunc.c + +Patch 8.0.1805 +Problem: qf_parse_line() is too long. +Solution: Split it in parts. Properly handle vim_realloc() failing. + (Yegappan Lakshmanan, closes #2881) +Files: src/quickfix.c + +Patch 8.0.1806 +Problem: InsertCharPre causes problems for autocomplete. (Lifepillar) +Solution: Check for InsertCharPre before calling vpeekc(). (Christian + Brabandt, closes #2876) +Files: src/edit.c, src/testdir/test_popup.vim + +Patch 8.0.1807 +Problem: Function to set terminal name is too long. +Solution: Refactor the function. Fix typo in test. +Files: src/term.c, src/testdir/test_options.vim + +Patch 8.0.1808 (after 8.0.1807) +Problem: Can't build without TGETENT. +Solution: Add #ifdef +Files: src/term.c + +Patch 8.0.1809 +Problem: Various typos. +Solution: Correct the mistakes, change "cursur" to "cursor". (closes #2887) +Files: src/edit.c, src/normal.c, src/screen.c, src/proto/screen.pro, + src/ui.c + +Patch 8.0.1810 +Problem: Buffer of a terminal only updated in Terminal-Normal mode. +Solution: Copy the terminal window content to the buffer when in + Terminal-Job mode. +Files: src/terminal.c, src/proto/terminal.pro, src/ex_cmds2.c, + src/proto/ex_cmds2.pro + +Patch 8.0.1811 +Problem: No test for winrestcmd(). +Solution: Add a test. (Dominique Pelle, closes #2894) +Files: src/testdir/test_window_cmd.vim + +Patch 8.0.1812 +Problem: The qf_jump_to_usable_window() function is too long. +Solution: Split it in parts. (Yegappan Lakshmanan, closes #2891) +Files: src/quickfix.c + +Patch 8.0.1813 +Problem: Windows installer doesn't install terminal debugger. +Solution: Add the package to the list of files to install. +Files: nsis/gvim.nsi + +Patch 8.0.1814 +Problem: Crash with terminal window and with 'lazyredraw' set. (Antoine) +Solution: Check the terminal still exists after update_screen(). +Files: src/terminal.c + +Patch 8.0.1815 (after 8.0.1814) +Problem: Still a crash with terminal window and with 'lazyredraw' set. + (Antoine) +Solution: Do not wipe out the buffer when updating the screen. +Files: src/terminal.c, src/proto/terminal.pro, src/screen.c, + src/proto/screen.pro, src/ui.c + +Patch 8.0.1816 +Problem: No test for setcmdpos(). +Solution: Add a test. (Dominique Pelle, closes #2901) +Files: src/testdir/test_cmdline.vim + +Patch 8.0.1817 +Problem: A timer may change v:count unexpectedly. +Solution: Save and restore v:count and similar variables when a timer + callback is invoked. (closes #2897) +Files: src/eval.c, src/proto/eval.pro, src/ex_cmds2.c, src/structs.h, + src/testdir/test_timers.vim + +Patch 8.0.1818 (after 8.0.1810) +Problem: Lines remove from wrong buffer when using terminal window. +Solution: Make sure to use tl_buffer. +Files: src/terminal.c + +Patch 8.0.1819 +Problem: Swap file warning for a file in a non-existing directory, if there + is another with the same file name. (Juergen Weigert) +Solution: When expanding the file name fails compare the file names. +Files: src/testdir/test_swap.vim, src/memline.c + +Patch 8.0.1820 +Problem: Terminal window redirecting stdout does not show stderr. (Mat茅o + Zanibelli) +Solution: When stdout is not connected to pty_master_fd then use it for + stderr. (closes #2903) +Files: src/os_unix.c, src/testdir/test_terminal.vim + +Patch 8.0.1821 +Problem: Cursor in terminal window moves when pressing CTRL-W. (Dominique + Pelle) +Solution: Do not more the cursor or redraw when not in Terminal-Normal mode. + (closes #2904) +Files: src/terminal.c + +Patch 8.0.1822 +Problem: Make uninstall does not remove colors/tools. +Solution: Add a line to delete the tools directory. (Kazunobu Kuriyama) +Files: src/Makefile + +Patch 8.0.1823 +Problem: Test for terminal stdout redirection is flaky. +Solution: Wait for the job to finish. +Files: src/testdir/test_terminal.vim + +Patch 8.0.1824 +Problem: Coverity warns for variable that may be uninitialized. +Solution: Initialize the variable. +Files: src/terminal.c + +Patch 8.0.1825 +Problem: Might use NULL pointer when out of memory. (Coverity) +Solution: Handle NULL pointer better. +Files: src/getchar.c + +Patch 8.0.1826 +Problem: Configure uses old compiler flag. +Solution: Remove _DARWIN_C_SOURCE. (Kazunobu Kuriyama) +Files: src/configure.ac, src/auto/configure + +Patch 8.0.1827 +Problem: Compiler warning for signed/unsigned char pointers. (Cesar Romani) +Solution: Change the type of jv_argv. +Files: src/channel.c, src/structs.h + +Patch 8.0.1828 +Problem: Get no clue why :gui does not fork. +Solution: Add a channel log message. +Files: src/channel.c + +Patch 8.0.1829 +Problem: MS-Windows: script for vimdiff can't handle ! chars. +Solution: Escape the ! chars. (Hans Ginzel, closes #2896) +Files: src/dosinst.c + +Patch 8.0.1830 +Problem: Switching to Terminal-Normal mode does not redraw. (Dominique + Pelle) +Solution: Also redraw when not updating the snapshot. (closes #2904) +Files: src/terminal.c + +Patch 8.0.1831 +Problem: Sometimes the quickfix title is incorrectly prefixed with ':'. +Solution: Prepend the colon in another way. (Yegappan Lakshmanan, closes + #2905) +Files: src/evalfunc.c, src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.0.1832 +Problem: Cannot use :unlet for an environment variable. +Solution: Make it work. Use unsetenv() if available. (Yasuhiro Matsumoto, + closes #2855) +Files: runtime/doc/eval.txt, src/config.h.in, src/configure.ac, + src/auto/configure, src/eval.c, src/misc1.c, src/proto/misc1.pro, + src/testdir/test_unlet.vim + +Patch 8.0.1833 +Problem: X11: ":echo 3.14" gives E806. +Solution: set LC_NUMERIC to "C". (Dominique Pelle, closes #2368) +Files: src/gui_x11.c + +Patch 8.0.1834 +Problem: GUI: find/replace dialog does not handle some chars properly. +Solution: Escape '?' when needed. Always escape backslash. (closes #2418, + closes #2435) +Files: src/gui.c + +Patch 8.0.1835 +Problem: Print document name does not support multibyte. +Solution: Use StartDocW() if needed. (Yasuhiro Matsumoto, closes #2478) +Files: src/os_mswin.c + +Patch 8.0.1836 +Problem: Buffer-local window options may not be recent if the buffer is + still open in another window. +Solution: Copy the options from the window instead of the outdated window + options. (Bjorn Linse, closes #2336) +Files: src/buffer.c, src/testdir/test_options.vim + +Patch 8.0.1837 +Problem: One character cmdline abbreviation not triggered after '<,'>. +Solution: Skip over the special range. (Christian Brabandt, closes #2320) +Files: src/ex_getln.c, src/testdir/test_mapping.vim + +Patch 8.0.1838 +Problem: Cursor in wrong position when switching to Terminal-Normal mode. + (Dominique Pelle) +Solution: Move to the end of the line if coladvance() fails. Do not take a + snapshot a second time. +Files: src/terminal.c + +Patch 8.0.1839 +Problem: Script to check .po file doesn't check for plural header. +Solution: Add a check that the plural header is present when needed. +Files: src/po/check.vim + +Patch 8.0.1840 +Problem: getwinpos() is not tested. +Solution: Add a test. (Dominique Pelle, closes #2911) +Files: src/testdir/test_gui.vim + +Patch 8.0.1841 +Problem: HP-UX does not have setenv(). +Solution: Use vim_setenv(). (John Marriott) +Files: src/misc1.c + +Patch 8.0.1842 +Problem: Popup menu inside terminal window isn't cleared. +Solution: Use NOT_VALID in pum_undisplay(). (suggested by Christian + Brabandt, closes #2908) +Files: src/popupmnu.c + +Patch 8.0.1843 +Problem: Entry for 'wrap' in options window is wrong. (John Little) +Solution: Make the change apply locally. +Files: runtime/optwin.vim + +Patch 8.0.1844 +Problem: Superfluous quickfix code, missing examples. +Solution: Remove unneeded code. Add a few examples. Add a bit more + testing. (Yegappan Lakshmanan, closes #2916) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.0.1845 +Problem: Various comment updates needed, missing white space. +Solution: Update comments, add white space. +Files: src/getchar.c, src/testdir/test_cscope.vim, src/gui_mac.c + +Patch 8.0.1846 +Problem: Python interface is incompatible with lldb. +Solution: For OutputType set the base to be PyFile_Type. (Boxu Zhang) + Partly disabled to avoid a crash. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 8.0.1847 +Problem: Some build options don't have an example. +Solution: Add a couple more examples and compiler flags. +Files: src/Makefile + +Patch 8.0.1848 +Problem: 'termwinscroll' does not work properly. (Dominique Pelle) +Solution: Subtract removed scrollback from the scrollback count. Add a test + for 'termwinscroll'. (closes #2909) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.0.1849 +Problem: Compiler warning for unused arguments and missing prototype. +Solution: Add UNUSED. Add static. +Files: src/mbyte.c, src/if_ruby.c + +Patch 8.0.1850 +Problem: Todo items in source code not visible for users. +Solution: Move the todo items to the help file. +Files: src/terminal.c + + +============================================================================== +VERSION 8.2 *version-8.2* *version8.2* *vim-8.2* + +This section is about improvements made between version 8.1 and 8.2. + +This release has hundreds of bug fixes, there are several new features and +there are many minor improvements. + + +Popup windows *new-popup-window* +------------- + +Popup windows can be used to display text on top of other windows. This can +be for a simple message such as "Build finished successfully", showing a +function prototype while editing a function call, a flexible popup menu and +many other purposes. See |popup-window|. + +Popup windows are very flexible: they can be positioned relative to text, an +absolute position or just in the middle of the screen. The size can be fixed +or adjusts to fit the text. A "zindex" value specifies what popup window goes +on top of others. + +The new 'wincolor' option allows for setting the color for the whole popup +window. This also works for normal windows. + + +Text properties *new-text-properties* +--------------- + +Text properties give a plugin author flexibility about what to highlight. +This can be used with an external asynchronous parser to do syntax +highlighting. Or to highlight text in a popup window. The text properties +stick with the text when characters are deleted or inserted, which makes them +also useful as text markers. See |text-properties|. + +The listener functions have been added to report text changes to a server so +that it can dynamically update highlighting, mark syntax errors and the like. +See |listener_add()|. + + +Vim script improvements *new-vimscript-8.2* +----------------------- + +Functions can now be called in a chain, using "->": > + mylist->filter(filterexpr)->map(mapexpr)->sort()->join() +The new `:eval` command can be used if the chain has no result. + +Function arguments can be made optional by giving them a default value +|optional-function-argument|: > + function Something(key, value = 10) + +The `:scriptversion` command was added to allow for changes that are not +backwards compatible. E.g. to only use ".." for string concatenation, so that +"." can be used to access a dictionary member consistently. + +`:const` was added to allow for declaring a variable that cannot change: > + const TIMER_DELAY = 400 + +A heredoc-style assignment was added to easily assign a list of lines to a +variable without quoting or line continuation: > + let lines =<< trim END + line one + line two + END + +The |Blob| type was added. This makes it easy to deal with binary data. + +The /= and %= assignment operators were added. + +A Dictionary can be defined with literal keys using #{}. This avoids having +to use a lot of quotes: > + let options = #{width: 30, height: 24} + + +Other improvements *new-other-8.2* +------------------ + +- When 'incsearch' is set it also applies to `:substitute`. +- |modifyOtherKeys| was added to allow mapping more key combinations. +- ConPTY support was added for Windows 10, supports full color in the terminal. +- The MS-Windows installer supports translations, silent install and looks + much better. + + +Changed *changed-8.2* +------- + +The xdiff library was included to avoid the need for an external diff program +and to make updating diffs much faster. + +The code is using a few more modern C features, such as // comments. + +Support for old compilers has been dropped: Borland C++, MSVC 2008. + +Hangul input support was removed, it actually didn't work anymore. + +Makefiles for old Amiga compilers were removed: Dice, Manx and SAS. + +If a swap file is found without any changes it is automatically deleted. + +The FEAT_TAG_OLDSTATIC code was removed, it slowed down tag searches. +The FEAT_TAG_ANYWHITE code was removed, it was not enabled in any build. +The UNICODE16 code was removed, it was not useful. +Workshop support was removed, nobody was using it. +The Aap build files were removed, they were outdated. +Farsi support was removed, it was outdated and unused. + +VIMDLL was re-implemented, this shares the common parts between vim and gvim +to reduce the total install size. + +The following features are now included in all versions: |+multi_byte|, +|+virtualedit|, |+vreplace|, |+localmap|, |+cmdline_hist|, |+cmdline_compl|, +|+insert_expand|, |+modify_fname|, |+comments| + + +Added *added-8.2* +----- + +Added functions: + All the popup_ functions. + All the prop_ functions. + All the sign_ functions. + All the sound_ functions. + + |appendbufline()| + |balloon_gettext()| + |bufadd()| + |bufload()| + |ch_readblob()| + |chdir()| + |debugbreak()| + |deletebufline()| + |environ()| + |expandcmd()| + |getenv()| + |getimstatus()| + |getmousepos()| + |gettagstack()| + |interrupt()| + |isinf()| + |list2str()| + |listener_add()| + |listener_flush()| + |listener_remove()| + |prompt_setcallback()| + |prompt_setinterrupt()| + |prompt_setprompt()| + |pum_getpos()| + |rand()| + |readdir()| + |reg_executing()| + |reg_recording()| + |rubyeval()| + |screenchars()| + |screenpos()| + |screenstring()| + |setenv()| + |settagstack()| + |srand()| + |state()| + |str2list()| + |strptime()| + |swapinfo()| + |swapname()| + |term_setapi()| + |test_getvalue()| + |test_null_blob()| + |test_refcount()| + test_scrollbar() (later replaced with |test_gui_event()|) + |test_setmouse()| + |win_execute()| + |win_splitmove()| + |winlayout()| + +Added autocommands: + |CompleteChanged| + |DiffUpdated| + |SafeState| + |SafeStateAgain| + |SourcePost| + |TerminalWinOpen| + +Added commands: + Jumping to errors relative to the cursor position: + `:cabove` + `:cafter` + `:cbefore` + `:cbelow` + `:labove` + `:lbefore` + `:lbelow` + `:lafter` + Tab-local directory: + `:tcd` + `:tchdir` + Others: + `:const` + `:eval` + `:redrawtabline` + `:scriptversion` + `:spellrare` + `:tlmenu` + `:tlnoremenu` + `:tlunmenu` + `:xrestore` + +Added options: + 'completepopup' + 'completeslash' + 'cursorlineopt' + 'modelineexpr' + 'previewpopup' + 'scrollfocus' + 'tagfunc' + 'termwintype' + 'varsofttabstop' + 'vartabstop' + 'wincolor' + + +Patches *patches-8.2* +------- + +These patches were applied after the 8.1 release and are included in the 8.2 +release. + +Patch 8.1.0001 +Problem: The netrw plugin does not work. +Solution: Make it accept version 8.x. +Files: runtime/autoload/netrw.vim + +Patch 8.1.0002 +Problem: :stopinsert changes the message position. +Solution: Save and restore msg_col and msg_row in clearmode(). (Jason + Franklin) +Files: src/screen.c, src/testdir/test_messages.vim + +Patch 8.1.0003 +Problem: The :compiler command is not tested. +Solution: Add a test. (Dominique Pelle, closes #2930) +Files: src/Makefile, src/testdir/test_alot.vim, + src/testdir/test_compiler.vim + +Patch 8.1.0004 +Problem: Test for :compiler command sometimes fails. +Solution: Be less strict about the error message. (Dominique Pelle) +Files: src/testdir/test_compiler.vim + +Patch 8.1.0005 +Problem: Test for :compiler command fails on MS-Windows. +Solution: Ignore difference in path. +Files: src/testdir/test_compiler.vim + +Patch 8.1.0006 +Problem: syn_id2cterm_bg() may be undefined. (Axel Bender) +Solution: Adjust #ifdef. +Files: src/syntax.c + +Patch 8.1.0007 +Problem: No test for "o" and "O" in Visual block mode. +Solution: Add a test. (Dominique Pelle, closes #2932) +Files: src/testdir/test_visual.vim + +Patch 8.1.0008 +Problem: No test for strwidth(). +Solution: Add a test. (Dominique Pelle, closes #2931) +Files: src/testdir/test_functions.vim + +Patch 8.1.0009 +Problem: Tabpages insufficiently tested. +Solution: Add more test coverage. (Dominique Pelle, closes #2934) +Files: src/testdir/test_tabpage.vim + +Patch 8.1.0010 +Problem: efm_to_regpat() is too long. +Solution: Split off three functions. (Yegappan Lakshmanan, closes #2924) +Files: src/quickfix.c + +Patch 8.1.0011 +Problem: maparg() and mapcheck() confuse empty and non-existing. +Solution: Return <Nop> for an existing non-empty mapping. (closes #2940) +Files: src/evalfunc.c, src/testdir/test_maparg.vim + +Patch 8.1.0012 +Problem: Misplaced #endif. +Solution: Move the #endif to after the expression. (David Binderman) +Files: src/fileio.c + +Patch 8.1.0013 +Problem: Using freed memory when changing terminal cursor color. +Solution: Make a copy of the color. (Dominique Pelle, closes #2938, + closes #2941) +Files: src/terminal.c + +Patch 8.1.0014 +Problem: qf_init_ext() is too long. +Solution: Split it into multiple functions. (Yegappan Lakshmanan, + closes #2939) +Files: src/quickfix.c + +Patch 8.1.0015 +Problem: Cursor color wrong when closing a terminal window, ending up in + another terminal window. (Dominique Pelle) +Solution: Bail out of terminal_loop() when the buffer changes. + (closes #2942) +Files: src/terminal.c + +Patch 8.1.0016 +Problem: Possible crash in term_wait(). (Dominique Pelle) +Solution: Check for a valid buffer after ui_delay(). (closes #2944) +Files: src/terminal.c + +Patch 8.1.0017 +Problem: Shell command completion has duplicates. (Yegappan Lakshmanan) +Solution: Use a hash table to avoid duplicates. (Ozaki Kiichi, closes #539, + closes #2733) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.1.0018 +Problem: Using "gn" may select wrong text when wrapping. +Solution: Avoid wrapping when searching forward. (Christian Brabandt) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.1.0019 +Problem: Error when defining a Lambda with index of a function result. +Solution: When not evaluating an expression and skipping a function call, + set the return value to VAR_UNKNOWN. +Files: src/userfunc.c, src/testdir/test_lambda.vim + +Patch 8.1.0020 +Problem: Cannot tell whether a register is being used for executing or + recording. +Solution: Add reg_executing() and reg_recording(). (Hirohito Higashi, + closes #2745) Rename the global variables for consistency. Store + the register name in reg_executing. +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_functions.vim, src/getchar.c, src/normal.c, + src/ops.c, src/globals.h, src/edit.c, src/fileio.c, src/message.c, + src/screen.c + +Patch 8.1.0021 +Problem: Clang warns for undefined behavior. +Solution: Move #ifdef outside of sprintf() call. (suggestion by Michael + Jarvis, closes #2946) +Files: src/term.c + +Patch 8.1.0022 +Problem: Repeating put from expression register fails. +Solution: Re-evaluate the expression register. (Andy Massimino, + closes #2945) +Files: src/getchar.c, src/testdir/test_put.vim + +Patch 8.1.0023 +Problem: gcc 8.1 warns for use of strncpy(). (John Marriott) +Solution: Use mch_memmove() instead of STRNCPY(). +Files: src/memline.c + +Patch 8.1.0024 +Problem: % command not tested on #ifdef and comment. +Solution: Add tests. (Dominique Pelle, closes #2956) +Files: src/testdir/test_goto.vim + +Patch 8.1.0025 +Problem: No test for the undofile() function. +Solution: Add test. (Dominique Pelle, closes #2958) +Files: src/testdir/test_undo.vim + +Patch 8.1.0026 +Problem: Terminal test fails with very tall terminal. (Tom) +Solution: Fix the terminal window size in the test. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0027 +Problem: Difficult to make a plugin that feeds a line to a job. +Solution: Add the initial code for the "prompt" buftype. +Files: runtime/doc/channel.txt, runtime/doc/eval.txt, + runtime/doc/options.txt, runtime/doc/tags, runtime/doc/todo.txt, + src/Makefile, src/buffer.c, src/channel.c, src/diff.c, src/edit.c, + src/evalfunc.c, src/normal.c, src/ops.c, src/option.c, + src/proto/buffer.pro, src/proto/channel.pro, src/proto/edit.pro, + src/proto/ops.pro, src/structs.h, src/testdir/Make_all.mak, + src/testdir/screendump.vim, src/testdir/test_prompt_buffer.vim + +Patch 8.1.0028 (after 8.1.0027) +Problem: Prompt buffer test fails on MS-Windows. +Solution: Disable the test for now. Remove stray assert. +Files: src/testdir/test_prompt_buffer.vim + +Patch 8.1.0029 +Problem: Terminal test fails on MS-Windows when "wc" exists. +Solution: Skip test with redirection on MS-Windows. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0030 +Problem: Stopping Vim running in a terminal may not work. +Solution: Instead of sending <Esc> send CTRL-O. +Files: src/testdir/screendump.vim, src/testdir/test_prompt_buffer.vim + +Patch 8.1.0031 +Problem: Terminal test aucmd_on_close is flaky. +Solution: Wait a bit longer. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0032 +Problem: BS in prompt buffer starts new line. +Solution: Do not allow BS over the prompt. Make term_sendkeys() handle + special keys. Add a test. +Files: src/option.c, src/terminal.c, src/testdir/test_prompt_buffer.vim + +Patch 8.1.0033 +Problem: Keys to stop Vim in terminal are wrong. (Marius Gedminas) +Solution: Move ":" to before CTRL-U. +Files: src/testdir/screendump.vim + +Patch 8.1.0034 +Problem: Cursor not restored with ":edit #". +Solution: Don't assume autocommands moved the cursor when it was moved to + the first non-blank. +Files: src/ex_cmds.c, src/testdir/test_edit.vim + +Patch 8.1.0035 +Problem: Not easy to switch between prompt buffer and other windows. +Solution: Accept CTRL-W commands in Insert mode. Start and stop Insert mode + as one would expect. +Files: src/edit.c, src/ex_docmd.c, src/structs.h, src/window.c + +Patch 8.1.0036 +Problem: Not restoring Insert mode if leaving a prompt buffer by using a + mouse click. +Solution: Set b_prompt_insert appropriately. Also correct cursor position + when moving cursor to last line. +Files: src/buffer.c, src/edit.c, src/window.c + +Patch 8.1.0037 +Problem: Cannot easily append lines to another buffer. +Solution: Add appendbufline(). +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufline.vim, src/testdir/test_edit.vim + +Patch 8.1.0038 +Problem: Popup test causes Vim to exit. +Solution: Disable the broken part of the test for now. +Files: src/testdir/test_popup.vim + +Patch 8.1.0039 +Problem: Cannot easily delete lines in another buffer. +Solution: Add deletebufline(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_bufline.vim + +Patch 8.1.0040 +Problem: Warnings from 64-bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/edit.c + +Patch 8.1.0041 +Problem: Attribute "width" missing from python window attribute list. +Solution: Add the item. (Ken Takata) Order the list like the items are used + in the WindowAttr() function. +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 8.1.0042 +Problem: If omni completion opens a window Insert mode is stopped. + (Hirohito Higashi) +Solution: Only set stop_insert_mode in a prompt buffer window. +Files: src/window.c + +Patch 8.1.0043 +Problem: ++bad argument of :edit does not work properly. +Solution: Return FAIL from get_bad_opt() only when there is no valid + argument. (Dominique Pelle, Christian Brabandt, closes #2966, + closes #2947) +Files: src/ex_docmd.c, src/testdir/test_plus_arg_edit.vim + +Patch 8.1.0044 +Problem: If a test function exits Vim this may go unnoticed. +Solution: Check for a test function quitting Vim. Fix tests that did exit + Vim. +Files: src/testdir/runtest.vim, src/testdir/test_assert.vim + +Patch 8.1.0045 (after 8.1.0038) +Problem: Popup test isn't run completely. +Solution: Remove "finish". Clean up function definitions. +Files: src/testdir/test_popup.vim + +Patch 8.1.0046 +Problem: Loading a session file fails if 'winheight' is a big number. +Solution: Set 'minwinheight' to zero at first. Don't give an error when + setting 'minwinheight' while 'winheight' is a big number. + Fix using vertical splits. Fix setting 'minwinwidth'. + (closes #2970) +Files: src/testdir/test_mksession.vim, src/option.c, src/window.c, + src/proto/window.pro + +Patch 8.1.0047 +Problem: No completion for :unlet $VAR. +Solution: Add completion. (Jason Franklin) +Files: src/ex_docmd.c, src/testdir/test_unlet.vim + +Patch 8.1.0048 +Problem: vim_str2nr() does not handle numbers close to the maximum. +Solution: Check for overflow more precisely. (Ken Takata, closes #2746) +Files: src/charset.c + +Patch 8.1.0049 +Problem: Shell cannot tell running in a terminal window. +Solution: Add the VIM_TERMINAL environment variable. (Christian Brabandt) +Files: runtime/doc/terminal.txt, src/os_unix.c, src/os_win32.c, + src/testdir/test_terminal.vim + +Patch 8.1.0050 (after 8.1.0049) +Problem: $VIM_TERMINAL is also set when not in a terminal window. +Solution: Pass a flag to indicate whether the job runs in a terminal. +Files: src/channel.c, src/proto/channel.pro, src/evalfunc.c, + src/terminal.c, src/os_unix.c, src/proto/os_unix.pro, + src/os_win32.c + +Patch 8.1.0051 (after 8.1.0050) +Problem: MS-Windows: missing #endif. +Solution: Add the #endif. +Files: src/os_win32.c + +Patch 8.1.0052 +Problem: When a mapping to <Nop> times out the next mapping is skipped. +Solution: Reset "timedout" when waiting for a character. (Christian + Brabandt, closes #2921) +Files: src/getchar.c + +Patch 8.1.0053 +Problem: The first argument given to 'completefunc' can be Number or + String, depending on the value. +Solution: Avoid guessing the type of an argument, use typval_T in the + callers of call_vim_function(). (Ozaki Kiichi, closes #2993) +Files: src/edit.c, src/eval.c, src/ex_getln.c, src/mbyte.c, src/normal.c, + src/proto/eval.pro, src/testdir/test_ins_complete.vim + +Patch 8.1.0054 +Problem: Compiler warning for using %ld for "long long". +Solution: Add a type cast. (closes #3002) +Files: src/os_unix.c + +Patch 8.1.0055 (after 8.1.0053) +Problem: Complete test has wrong order of arguments. Wrong type for + sentinel variable. +Solution: Swap arguments, use VAR_UNKNOWN. (Ozaki Kiichi) +Files: src/mbyte.c, src/testdir/test_ins_complete.vim + +Patch 8.1.0056 +Problem: Crash when using :hardcopy with illegal byte. +Solution: Check for string_convert() returning NULL. (Dominique Pelle) +Files: src/hardcopy.c, src/testdir/test_hardcopy.vim + +Patch 8.1.0057 +Problem: Popup menu displayed wrong when using autocmd. +Solution: Use aucmd_prepbuf(). Force updating status line if the popup menu + is going to be redrawn anyway. (Christian Brabandt, closes #3009) +Files: src/edit.c, src/screen.c, src/proto/screen.pro + +Patch 8.1.0058 +Problem: Display problem with margins and scrolling. +Solution: Place the cursor in the right column. (Kouichi Iwamoto, + closes #3016) +Files: src/screen.c + +Patch 8.1.0059 +Problem: Displayed digraph for "ga" wrong with 'encoding' "cp1251". +Solution: Convert from 'encoding' to "utf-8" if needed. (closes #3015) +Files: src/digraph.c, src/testdir/test_digraph.vim + +Patch 8.1.0060 +Problem: Crash when autocommands delete the current buffer. (Dominique + Pelle) +Solution: Check that autocommands don't change the buffer. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0061 +Problem: Window title is wrong after resetting and setting 'title'. +Solution: Move resetting the title into maketitle(). (Jason Franklin) +Files: src/option.c, src/buffer.c + +Patch 8.1.0062 +Problem: Popup menu broken if a callback changes the window layout. (Qiming + Zhao) +Solution: Recompute the popup menu position if needed. Redraw the ruler + even when the popup menu is displayed. +Files: src/popupmnu.c, src/proto/popupmnu.pro, src/screen.c + +Patch 8.1.0063 +Problem: Mac: NSStringPboardType is deprecated. +Solution: Use NSPasteboardTypeString. (Akshay Hegde, closes #3022) +Files: src/os_macosx.m + +Patch 8.1.0064 +Problem: Typing CTRL-W in a prompt buffer shows mode "-- --". +Solution: Set restart_edit to 'A' and check for it. +Files: src/edit.c, src/window.c, src/screen.c + +Patch 8.1.0065 (after 8.1.0062) +Problem: Balloon displayed at the wrong position. +Solution: Do not reposition the popup menu at the cursor position. +Files: src/popupmnu.c + +Patch 8.1.0066 +Problem: Nasty autocommand causes using freed memory. (Dominique Pelle) +Solution: Do not force executing autocommands if the value of 'syntax' or + 'filetype' did not change. +Files: src/option.c + +Patch 8.1.0067 +Problem: Syntax highlighting not working when re-entering a buffer. +Solution: Do force executing autocommands when not called recursively. +Files: src/option.c + +Patch 8.1.0068 +Problem: Nasty autocommands can still cause using freed memory. +Solution: Disallow using setloclist() and setqflist() recursively. +Files: src/evalfunc.c + +Patch 8.1.0069 +Problem: Cannot handle pressing CTRL-C in a prompt buffer. +Solution: Add prompt_setinterrupt(). +Files: runtime/doc/eval.txt, src/edit.c, src/evalfunc.c, src/channel.c, + src/proto/channel.pro + +Patch 8.1.0070 +Problem: Missing part of the changes for prompt_setinterrupt(). +Solution: Add the missing changes. +Files: src/structs.h + +Patch 8.1.0071 +Problem: Terminal debugger only works with the terminal feature. +Solution: Make it also work with a prompt buffer. Makes it possible to use + on MS-Windows. Various other improvements. (closes #3012) +Files: runtime/doc/terminal.txt, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0072 +Problem: Use of 'termwinkey' is inconsistent. +Solution: Change the documentation and the behavior. (Ken Takata) +Files: src/terminal.c, runtime/doc/terminal.txt + +Patch 8.1.0073 +Problem: Crash when autocommands call setloclist(). (Dominique Pelle) +Solution: If the quickfix list changes then don't jump to the error. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0074 (after 8.1.0073) +Problem: Crash when running quickfix tests. +Solution: Do not alloc a new location list when checking for the reference + to be still valid. +Files: src/quickfix.c + +Patch 8.1.0075 +Problem: No Vim logo in README file. +Solution: Add one. (脕rni Dagur, closes #3024) +Files: README.md + +Patch 8.1.0076 +Problem: Command getting cleared with CTRL-W : in a terminal window. (Jason + Franklin) +Solution: Call redraw_after_callback() when editing the command line. +Files: src/terminal.c + +Patch 8.1.0077 +Problem: Header of README file is not nice. +Solution: Move text to the bottom. +Files: README.md + +Patch 8.1.0078 +Problem: "..." used inconsistently in messages. +Solution: Drop the space before " ...". +Files: src/spellfile.c, src/regexp_nfa.c + +Patch 8.1.0079 +Problem: Superfluous space in messages. +Solution: Remove the spaces. (closes #3030) +Files: src/gui_w32.c + +Patch 8.1.0080 +Problem: Can't see the breakpoint number in the terminal debugger. +Solution: Use the breakpoint number for the sign. (Christian Brabandt) +Files: runtime/doc/terminal.txt, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0081 +Problem: The terminal debugger doesn't adjust to changed 'background'. +Solution: Add an OptionSet autocommand. (Christian Brabandt) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0082 +Problem: In terminal window, typing : at more prompt, inserts ':' instead + of starting another Ex command. +Solution: Add skip_term_loop and set it when putting ':' in the typeahead + buffer. +Files: src/globals.h, src/main.c, src/message.c + +Patch 8.1.0083 +Problem: "is" and "as" have trouble with quoted punctuation. +Solution: Check for punctuation before a quote. (Jason Franklin) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.1.0084 +Problem: User name completion does not work on MS-Windows. +Solution: Use NetUserEnum() to get user names. (Yasuhiro Matsumoto) +Files: src/Make_ivc.mak, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/misc1.c + +Patch 8.1.0085 +Problem: No test for completing user name and language. +Solution: Add tests. (Dominique Pelle, closes #2978) +Files: src/testdir/test_cmdline.vim + +Patch 8.1.0086 +Problem: No tests for libcall() and libcallnr(). +Solution: Add tests. (Dominique Pelle, closes #2982) +Files: src/testdir/test_functions.vim + +Patch 8.1.0087 +Problem: v:shell_error is always zero when using terminal for "!cmd". +Solution: Use "exitval" of terminal-job. (Ozaki Kiichi, closes #2994) +Files: src/os_unix.c, src/os_win32.c, src/proto/terminal.pro, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0088 +Problem: Terminal test for stdout and stderr is a bit flaky. +Solution: Wait for both stdout and stderr to have been processed. (Ozaki + Kiichi, closes #2991) +Files: src/testdir/test_terminal.vim + +Patch 8.1.0089 +Problem: error when ending the terminal debugger +Solution: Fix deleting defined signs for breakpoints. Make the debugger + work better on MS-Windows. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0090 +Problem: "..." used inconsistently in a message. +Solution: Define the message with " ..." once. (hint by Ken Takata) +Files: src/regexp_nfa.c + +Patch 8.1.0091 +Problem: MS-Windows: Cannot interrupt gdb when program is running. +Solution: Add debugbreak() and use it in the terminal debugger. + Respect 'modified' in a prompt buffer. +Files: src/evalfunc.c, runtime/doc/eval.txt, src/undo.c, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0092 (after 8.1.0091) +Problem: Prompt buffer test fails. +Solution: Set 'nomodified' before closing the window. (Ozaki Kiichi, + closes #3051) +Files: src/testdir/test_prompt_buffer.vim + +Patch 8.1.0093 +Problem: non-MS-Windows: Cannot interrupt gdb when program is running. +Solution: Only use debugbreak() on MS-Windows. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0094 +Problem: Help text "usage:" is not capitalized. +Solution: Make it "Usage:". (closes #3044) +Files: src/main.c + +Patch 8.1.0095 +Problem: Dialog for ":browse tabnew" says "new window". +Solution: Use "new tab page". (closes #3053) +Files: src/ex_docmd.c + +Patch 8.1.0096 +Problem: Inconsistent use of the word autocommands. +Solution: Don't use auto-commands or "auto commands". +Files: src/fileio.c + +Patch 8.1.0097 +Problem: Superfluous space before exclamation mark. +Solution: Remove the space. Don't translate debug message. +Files: src/regexp_nfa.c + +Patch 8.1.0098 +Problem: Segfault when pattern with \z() is very slow. +Solution: Check for NULL regprog. Add "nfa_fail" to test_override() to be + able to test this. Fix that 'searchhl' resets called_emsg. +Files: src/syntax.c, runtime/doc/eval.txt, src/evalfunc.c, src/vim.h, + src/testdir/test_syntax.vim, src/globals.h, src/screen.c, + src/regexp.c, src/regexp_nfa.c + +Patch 8.1.0099 +Problem: Exclamation mark in error message not needed. +Solution: Remove the exclamation mark. +Files: src/regexp_nfa.c + +Patch 8.1.0100 +Problem: Terminal debugger: error when setting a watch point. +Solution: Don't try defining a sign for a watch point. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0101 +Problem: No test for getcmdwintype(). +Solution: Add a test. (Dominique Pelle, closes #3068) +Files: src/testdir/test_cmdline.vim + +Patch 8.1.0102 +Problem: Cannot build without syntax highlighting. +Solution: Add #ifdef around using reg_do_extmatch. +Files: src/regexp.c + +Patch 8.1.0103 +Problem: Long version string cannot be translated. +Solution: Build the string in init_longVersion(). +Files: src/globals.h, src/version.h, src/version.c, + src/proto/version.pro, src/main.c + +Patch 8.1.0104 +Problem: Can't build without the +eval feature. +Solution: Add #ifdef. +Files: src/regexp_nfa.c + +Patch 8.1.0105 +Problem: All tab stops are the same. +Solution: Add the variable tabstop feature. (Christian Brabandt, + closes #2711) +Files: runtime/doc/change.txt, runtime/doc/options.txt, + runtime/doc/various.txt, runtime/optwin.vim, src/beval.c, + src/beval.h, src/buffer.c, src/charset.c, src/edit.c, + src/evalfunc.c, src/ex_cmds.c, src/feature.h, src/gui_beval.c, + src/gui_w32.c, src/hardcopy.c, src/message.c, src/misc1.c, + src/ops.c, src/option.c, src/option.h, src/proto/misc1.pro, + src/proto/option.pro, src/screen.c, src/structs.h, + src/testdir/Make_all.mak, src/testdir/gen_opt_test.vim, + src/testdir/test_breakindent.vim, src/testdir/test_vartabs.vim, + src/version.c, src/workshop.c, src/Makefile + +Patch 8.1.0106 (after 8.1.0103) +Problem: Build fails when HAVE_DATE_TIME is undefined. +Solution: Always define init_longVersion(). (Christian Brabandt, + closes #3075) +Files: src/version.c + +Patch 8.1.0107 +Problem: Python: getting buffer option clears message. (Jacob Niehus) +Solution: Don't use aucmd_prepbuf(). (closes #3079) +Files: src/option.c + +Patch 8.1.0108 +Problem: No Danish translations. +Solution: Add Danish message translations. (closes #3073) Move list of + languages to a common makefile. +Files: src/po/Makefile, src/po/Make_cyg.mak, src/po/Make_mvc.mak, + src/po/Make_ming.mak, src/po/Make_all.mak, src/po/da.po + +Patch 8.1.0109 +Problem: New po makefile missing from distribution. +Solution: Add it to the file list. +Files: Filelist + +Patch 8.1.0110 +Problem: File name not displayed with ":file" when 'F' is in 'shortmess'. +Solution: Always display the file name when there is no argument (Christian + Brabandt, closes #3070) +Files: src/ex_cmds.c, src/testdir/test_options.vim + +Patch 8.1.0111 +Problem: .po files do not use recommended names. +Solution: Give a warning if the recommended name is not used. Accept the + recommended name for conversion. (Christian Brabandt, Ken Takata) +Files: src/po/Makefile, src/po/sjiscorr.c, src/po/check.vim + +Patch 8.1.0112 +Problem: No error when using bad arguments with searchpair(). +Solution: Add error messages. +Files: src/evalfunc.c, src/testdir/test_search.vim + +Patch 8.1.0113 +Problem: Compiler warning for unused variable. (Yegappan Lakshmanan) +Solution: Add UNUSED. (Christian Brabandt) +Files: src/screen.c + +Patch 8.1.0114 +Problem: Confusing variable name. +Solution: Rename new_ts to new_vts_array. Change zero to NULL. +Files: src/ex_cmds.c, src/option.c + +Patch 8.1.0115 +Problem: The matchparen plugin may throw an error. +Solution: Change the skip argument from zero to "0". +Files: runtime/plugin/matchparen.vim + +Patch 8.1.0116 +Problem: Display problem with 'vartabstop' and 'linebreak'. (Chauca + Fuentes) +Solution: Call tabstop_padding(). (Christian Brabandt, closes #3076) +Files: src/screen.c, src/testdir/test_vartabs.vim + +Patch 8.1.0117 +Problem: URL in install program still points to SourceForge. +Solution: Change it to www.vim.org. (closes #3100) +Files: src/dosinst.c + +Patch 8.1.0118 +Problem: Duplicate error message for put command. +Solution: Check return value of u_save(). (Jason Franklin) +Files: src/ops.c, src/testdir/test_messages.vim src/testdir/test_put.vim + +Patch 8.1.0119 +Problem: Failing test goes unnoticed because testdir/messages is not + written. +Solution: Set 'nomodifiable' only local to the buffer. +Files: src/testdir/test_put.vim + +Patch 8.1.0120 +Problem: Buffer 'modified' set even when :sort has no changes. +Solution: Only set 'modified' when lines are moved. (Jason Franklin) +Files: src/ex_cmds.c, src/testdir/test_sort.vim + +Patch 8.1.0121 +Problem: Crash when using ballooneval related to 'vartabstop'. +Solution: Initialize balloonEval->vts to NULL. (Markus Braun) +Files: src/ex_cmds2.c, src/gui_beval.c, src/gui_w32.c, src/gui.c + +Patch 8.1.0122 +Problem: Translators don't always understand the maintainer message. +Solution: Add a comment that ends up in the generated po file. (Christian + Brabandt, closes #3037) +Files: src/message.c + +Patch 8.1.0123 +Problem: MS-Windows: colors are wrong after setting 'notgc'. +Solution: Only call control_console_color_rgb() for the win32 terminal. + (Nobuhiro Takasaki, closes #3107) +Files: src/option.c + +Patch 8.1.0124 +Problem: has('vcon') returns true even for non-win32 terminal. +Solution: Check the terminal type. (Nobuhiro Takasaki, closes #3106) +Files: src/evalfunc.c + +Patch 8.1.0125 +Problem: Virtual edit replace with multibyte fails at end of line. (Lukas + Werling) +Solution: use ins_char() to add the character. (Christian Brabandt, + closes #3114) Rename PCHAR() to PBYTE() to avoid mistakes like + this. +Files: src/ops.c, src/testdir/test_virtualedit.vim, src/macros.h + +Patch 8.1.0126 +Problem: Various problems with 'vartabstop'. +Solution: Fix memory leak. Fix crash. Add a few more tests. (Christian + Brabandt, closes #3076) +Files: src/ex_cmds.c, src/option.c, src/screen.c, + src/testdir/test_vartabs.vim + +Patch 8.1.0127 +Problem: Build failure when disabling the session feature. (Pawel Slowik) +Solution: Adjust #ifdef for vim_chdirfile(). +Files: src/misc2.c + +Patch 8.1.0128 +Problem: Building with MinGW does not work out-of-the-box. +Solution: Add instructions for MSYS2. Set default WINVER. Add batch files + to set $PATH for MSYS2. +Files: src/Make_cyg_ming.mak, src/INSTALLpc.txt, src/msys32.bat, + src/msys64.bat, Filelist + +Patch 8.1.0129 +Problem: Still some xterm-like terminals get a stray "p" on startup. +Solution: Consider all terminals that reply with a version smaller than 95 + as not an xterm. (James McCoy) +Files: src/term.c + +Patch 8.1.0130 +Problem: ":profdel func" does not work if func was called already. + (Dominique Pelle) +Solution: Reset uf_profiling and add a flag to indicate initialization was + done. +Files: src/structs.h, src/userfunc.c + +Patch 8.1.0131 +Problem: :profdel is not tested. +Solution: Add a test. (Dominique Pelle, closes #3123) +Files: src/testdir/test_profile.vim + +Patch 8.1.0132 +Problem: Lua tests are old style. +Solution: Convert to new style tests. Improve coverage. (Dominique Pelle, + closes #3091) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_vms.mms, + src/testdir/test85.in, src/testdir/test_lua.vim + +Patch 8.1.0133 +Problem: tagfiles() can have duplicate entries. +Solution: Simplify the filename to make checking for duplicates work better. + Add a test. (Dominique Pelle, closes #2979) +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.1.0134 +Problem: Lua interface does not support funcref. +Solution: Add funcref support. (Luis Carvalho) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.1.0135 +Problem: Undo message delays screen update for CTRL-O u. +Solution: Add smsg_attr_keep(). (closes #3125) +Files: src/message.c, src/proto.h, src/undo.c + +Patch 8.1.0136 +Problem: Lua tests don't cover new features. +Solution: Add more tests. (Dominique Pelle, closes #3130) +Files: runtime/doc/if_lua.txt, src/testdir/test_lua.vim + +Patch 8.1.0137 +Problem: CI does not run with TCL. +Solution: Add TCL to the travis config. (Dominique Pelle, closes #3133) +Files: .travis.yml + +Patch 8.1.0138 +Problem: Negative value of 'softtabstop' not used correctly. +Solution: Use get_sts_value(). (Tom Ryder) +Files: src/edit.c, src/option.c, src/Makefile, src/testdir/test_tab.vim + +Patch 8.1.0139 +Problem: Lua tests fail on some platforms. +Solution: Accept a hex number with and without "0x". (Ken Takata, + closes #3137) +Files: src/testdir/test_lua.vim + +Patch 8.1.0140 +Problem: Recording into a register has focus events. (Michael Naumann) +Solution: Don't record K_FOCUSGAINED and K_FOCUSLOST. (closes #3143) +Files: src/getchar.c + +Patch 8.1.0141 +Problem: :cexpr no longer jumps to the first error. +Solution: Use the quickfix list identifier. (Yegappan Lakshmanan, + closes #3092) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0142 +Problem: Xterm and vt320 builtin termcap missing keypad keys. +Solution: Add the escape sequences. (Kouichi Iwamoto, closes #2973) +Files: src/term.c + +Patch 8.1.0143 +Problem: Matchit and matchparen don't handle E363. +Solution: Catch the E363 error. (Christian Brabandt) +Files: runtime/pack/dist/opt/matchit/plugin/matchit.vim, + runtime/plugin/matchparen.vim + +Patch 8.1.0144 +Problem: The :cd command does not have good test coverage. +Solution: Add more tests. (Dominique Pelle, closes #2972) +Files: src/testdir/test_cd.vim + +Patch 8.1.0145 +Problem: Test with grep is failing on MS-Windows. +Solution: Skip the test. +Files: src/testdir/test_quickfix.vim + +Patch 8.1.0146 +Problem: When $LANG is set the compiler test may fail. +Solution: Unset $LANG. +Files: src/testdir/test_compiler.vim + +Patch 8.1.0147 +Problem: Compiler warning when building with Python 3.7. +Solution: #undef PySlice_GetIndicesEx before redefining it. (Ozaki Kiichi, + closes #3153) +Files: src/if_python3.c + +Patch 8.1.0148 +Problem: Memory leak when using :tcl expr command. +Solution: Free the result of expression evaluation. (Dominique Pelle, + closes #3150) +Files: src/if_tcl.c + +Patch 8.1.0149 +Problem: The generated sessions file does not restore tabs properly if :lcd + was used in one of them. +Solution: Create the tab pages before setting the directory. (Yee Cheng + Chin, closes #3152) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0150 +Problem: Insufficient test coverage for Tcl. +Solution: Add more tests. (Dominique Pelle, closes #3140) +Files: src/testdir/test_tcl.vim + +Patch 8.1.0151 +Problem: Mksession test fails on MS-Windows. +Solution: Always use an argument for :lcd. +Files: src/testdir/test_mksession.vim + +Patch 8.1.0152 +Problem: Cannot easily run individual tests on MS-Windows. +Solution: Move the list of tests to a separate file. Add a build rule in + the MSVC makefile. +Files: Filelist, src/Makefile, src/Make_all.mak, src/Make_mvc.mak + +Patch 8.1.0153 (after 8.1.0152) +Problem: Build with SHADOWDIR fails. (Elimar Riesebieter) +Solution: Create a link for Make_all.mak. (Tony Mechelynck) +Files: src/Makefile + +Patch 8.1.0154 +Problem: Crash with "set smarttab shiftwidth=0 softtabstop=-1". +Solution: Fall back to using 'tabstop'. (closes #3155) +Files: src/edit.c, src/testdir/test_tab.vim + +Patch 8.1.0155 +Problem: Evim.man missing from the distribution. +Solution: Add it to the list. +Files: Filelist + +Patch 8.1.0156 +Problem: MS-Windows compiler warning. +Solution: Add a type cast. (Mike Williams) +Files: src/version.c + +Patch 8.1.0157 +Problem: Old iTerm2 is not recognized, resulting in stray output. +Solution: Recognize the termresponse. +Files: src/term.c + +Patch 8.1.0158 +Problem: GUI: input() fails if CTRL-C was pressed before. (Michael Naumann) +Solution: call vpeekc() to drop the CTRL-C from the input stream. +Files: src/ex_docmd.c + +Patch 8.1.0159 +Problem: Completion for user names does not work if a prefix is also a full + matching name. (Nazri Ramliy) +Solution: Accept both full and partial matches. (Dominique Pelle) +Files: src/misc1.c, src/ex_docmd.c + +Patch 8.1.0160 +Problem: No Danish manual translations. +Solution: Add the Danish manual translations to the file list. +Files: Filelist + +Patch 8.1.0161 +Problem: Buffer not updated with 'autoread' set if file was deleted. + (Michael Naumann) +Solution: Don't set the timestamp to zero. (closes #3165) +Files: src/fileio.c, src/testdir/test_stat.vim + +Patch 8.1.0162 +Problem: Danish and German man pages are not installed. (Tony Mechelynck) +Solution: Adjust the makefile +Files: src/Makefile + +Patch 8.1.0163 +Problem: Insufficient testing for Tcl. +Solution: Add a few more tests. (Dominique Pelle, closes #3166) +Files: src/testdir/test_tcl.vim + +Patch 8.1.0164 +Problem: luaeval('vim.buffer().name') returns an error. +Solution: Return an empty string. (Dominique Pelle, closes #3167) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.1.0165 +Problem: :clist output can be very long. +Solution: Support filtering :clist entries. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0166 +Problem: Using dict_add_nr_str() is clumsy. +Solution: Split into two functions. (Ozaki Kiichi, closes #3154) +Files: src/channel.c, src/dict.c, src/edit.c, src/evalfunc.c, + src/ex_cmds2.c, src/ops.c, src/option.c, src/proto/dict.pro, + src/quickfix.c, src/tag.c, src/terminal.c, src/undo.c + +Patch 8.1.0167 +Problem: Lock flag in new dictitem is reset in many places. +Solution: Always reset the lock flag. +Files: src/dict.c, src/channel.c, src/ex_cmds2.c, src/userfunc.c, + src/if_perl.xs, src/if_py_both.h + +Patch 8.1.0168 +Problem: Output of :marks is too short with multibyte chars. (Tony + Mechelynck) +Solution: Get more bytes from the text line. +Files: src/mark.c, src/testdir/test_marks.vim + +Patch 8.1.0169 (after 8.1.0165) +Problem: Calling message_filtered() a bit too often. +Solution: Only call message_filtered() when filtering is already false. +Files: src/quickfix.c, runtime/doc/quickfix.txt + +Patch 8.1.0170 +Problem: Invalid memory use with complicated pattern. (Andy Massimino) +Solution: Reallocate the list of listids when needed. (closes #3175) + Remove unnecessary function prototypes. +Files: src/regexp_nfa.c + +Patch 8.1.0171 +Problem: Typing CTRL-W n in a terminal window causes ml_get error. +Solution: When resizing the terminal outside of terminal_loop() make sure + the snapshot is complete. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0172 +Problem: 'viminfofile' option does not behave like a file name. +Solution: Add the P_EXPAND flag. (closes #3178) +Files: src/option.c + +Patch 8.1.0173 +Problem: Compiler warning on MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/libvterm/src/state.c + +Patch 8.1.0174 +Problem: After paging up and down fold line is wrong. +Solution: Correct the computation of w_topline and w_botline. (Hirohito + Higashi) +Files: src/move.c, src/testdir/test_fold.vim + +Patch 8.1.0175 +Problem: Marks test fails in very wide window. (Vladimir Lomov) +Solution: Extend the text to match 'columns'. (closes #3180, closes #3181) +Files: src/testdir/test_marks.vim + +Patch 8.1.0176 +Problem: Overlapping string argument for strcpy(). (Coverity) +Solution: Use STRMOVE() instead of STRCPY(). (Dominique Pelle, closes #3187) +Files: src/term.c + +Patch 8.1.0177 +Problem: Defining function in sandbox is inconsistent, cannot use :function + but can define a lambda. +Solution: Allow defining a function in the sandbox, but also use the sandbox + when executing it. (closes #3182) +Files: src/userfunc.c, src/ex_cmds.h + +Patch 8.1.0178 +Problem: Warning for passing pointer to non-pointer argument. +Solution: Use zero instead of NULL. +Files: src/if_ole.cpp + +Patch 8.1.0179 +Problem: Redundant condition for boundary check. +Solution: Remove the condition. (Dominique Pelle). Change FALSE to FAIL. +Files: src/undo.c + +Patch 8.1.0180 +Problem: Static analysis errors in Lua interface. (Coverity) +Solution: Check for NULL pointers. +Files: src/if_lua.c + +Patch 8.1.0181 +Problem: Memory leak with trailing characters in skip expression. +Solution: Free the return value. +Files: src/eval.c, src/testdir/test_search.vim + +Patch 8.1.0182 +Problem: Unicode standard was updated. +Solution: Include the changes. (Christian Brabandt) +Files: src/mbyte.c + +Patch 8.1.0183 +Problem: Lua API changed, breaking the build. +Solution: Adjust prototype of lua_rawgeti(). (Ken Takata, + closes #3157, closes #3144) +Files: src/if_lua.c + +Patch 8.1.0184 +Problem: Not easy to figure out the window layout. +Solution: Add "wincol" and "winrow" to what getwininfo() returns. +Files: src/evalfunc.c, src/testdir/test_bufwintabinfo.vim, + runtime/doc/eval.txt + +Patch 8.1.0185 +Problem: Running tests writes lua.vim even though it is not used. +Solution: Stop writing lua.vim. +Files: src/testdir/test1.in, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile + +Patch 8.1.0186 +Problem: Test for getwininfo() fails in GUI. +Solution: Account for missing tabline. +Files: src/testdir/test_bufwintabinfo.vim + +Patch 8.1.0187 (after 8.1.0184) +Problem: getwininfo() and win_screenpos() return different numbers. +Solution: Add one to "wincol" and "winrow" from getwininfo(). +Files: src/evalfunc.c, src/testdir/test_bufwintabinfo.vim, + runtime/doc/eval.txt + +Patch 8.1.0188 +Problem: No test for ":cscope add". +Solution: Add a test. (Dominique Pelle, closes #3212) +Files: src/testdir/test_cscope.vim + +Patch 8.1.0189 +Problem: Function defined in sandbox not tested. +Solution: Add a text. +Files: src/testdir/test_functions.vim + +Patch 8.1.0190 +Problem: Perl refcounts are wrong. +Solution: Improve refcounting. Add a test. (Damien) +Files: src/if_perl.xs, src/testdir/test_perl.vim + +Patch 8.1.0191 (after 8.1.0190) +Problem: Perl test fails in 24 line terminal. +Solution: Create fewer windows. +Files: src/testdir/test_perl.vim + +Patch 8.1.0192 +Problem: Executing regexp recursively fails with a crash. +Solution: Move global variables into "rex". +Files: src/regexp.c, src/regexp.h, src/regexp_nfa.c + +Patch 8.1.0193 +Problem: Terminal debugger buttons don't always work. (Dominique Pelle) +Solution: Set 'cpo' to its default value. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0194 +Problem: Possibly use of NULL pointer. (Coverity) +Solution: Reset the re_in_use flag earlier. +Files: src/regexp.c + +Patch 8.1.0195 +Problem: Terminal debugger commands don't always work. (Dominique Pelle) +Solution: Set 'cpo' to its default value when defining commands. (Christian + Brabandt) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0196 +Problem: Terminal debugger error with .gdbinit file. +Solution: Check two lines for the "new ui" response. (hint from Hirohito + Higashi) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0197 +Problem: Windows GUI: title for search/replace is wrong. +Solution: Remove remark about doubling backslash. (closes #3230) +Files: src/gui_win32.c + +Patch 8.1.0198 +Problem: There is no hint that syntax is disabled for 'redrawtime'. +Solution: Add a message. +Files: src/syntax.c + +Patch 8.1.0199 +Problem: spellbadword() does not check for caps error. (Dominique Pelle) +Solution: Adjust capcol when advancing. +Files: src/userfunc.c + +Patch 8.1.0200 +Problem: spellbadword() not tested. +Solution: Add a test. (Dominique Pelle, closes #3235) +Files: src/testdir/test_spell.vim + +Patch 8.1.0201 +Problem: Newer Python uses "importlib" instead of "imp". +Solution: Use "importlib" for newer Python versions. (Ozaki Kiichi, + closes #3163) +Files: src/if_py_both.h, src/testdir/test87.in + +Patch 8.1.0202 +Problem: :version always shows +packages. (Takuya Fujiwara) +Solution: Add #ifdef (closes #3198) Also for has(). +Files: src/version.c, src/evalfunc.c + +Patch 8.1.0203 +Problem: Building with Perl 5.28 fails on Windows. +Solution: Define Perl_mg_get. (closes #3196) +Files: src/if_perl.xs + +Patch 8.1.0204 +Problem: inputlist() is not tested. +Solution: Add a test. (Dominique Pelle, closes #3240) +Files: src/testdir/test_functions.vim + +Patch 8.1.0205 +Problem: Invalid memory access with invalid modeline. +Solution: Pass pointer limit. Add a test. (closes #3241) +Files: src/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_modeline.vim, src/option.c + +Patch 8.1.0206 (after 8.1.0205) +Problem: Duplicate test function name. +Solution: Rename both functions. +Files: src/testdir/test_modeline.vim, src/testdir/test_glob2regpat.vim + +Patch 8.1.0207 +Problem: Need many menu translation files to cover regions. +Solution: When there is no region match, try without. (Christian Brabandt) +Files: runtime/menu.vim + +Patch 8.1.0208 (after 8.1.0205) +Problem: File left behind after running individual test. +Solution: Delete the file. +Files: src/testdir/test_modeline.vim + +Patch 8.1.0209 +Problem: Stderr output from Ruby messes up display. +Solution: Turn the stderr output into a Vim message. (Masataka Pocke + Kuwabara, closes #3238) +Files: src/if_ruby.c + +Patch 8.1.0210 +Problem: Still a few K&R function declarations. +Solution: Use ANSI function declarations (Hirohito Higashi) +Files: src/eval.c, src/evalfunc.c, src/list.c + +Patch 8.1.0211 +Problem: Expanding a file name "~" results in $HOME. (Aidan Shafran) +Solution: Change "~" to "./~" before expanding. (closes #3072) +Files: src/testdir/test_expand.vim, src/ex_docmd.c, src/eval.c, + src/proto/eval.pro, src/evalfunc.c, src/if_cscope.c, src/misc1.c + +Patch 8.1.0212 +Problem: Preferred cursor column not set in interfaces. +Solution: Set w_set_curswant when setting the cursor. (David Hotham, + closes #3060) +Files: src/if_lua.c, src/if_mzsch.c, src/if_perl.xs, src/if_py_both.h, + src/if_ruby.c, src/if_tcl.c, src/testdir/test_lua.vim, + src/testdir/test_perl.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_ruby.vim, + src/testdir/test_tcl.vim + +Patch 8.1.0213 +Problem: CTRL-W CR does not work properly in a quickfix window. +Solution: Split the window if needed. (Jason Franklin) +Files: src/normal.c, src/proto/quickfix.pro, src/quickfix.c, + src/testdir/test_quickfix.vim, src/window.c + +Patch 8.1.0214 +Problem: +autochdir feature not reported by has() or :version. +Solution: Add the feature in the list. +Files: src/evalfunc.c, src/version.c + +Patch 8.1.0215 +Problem: No error if configure --with-x cannot configure X. +Solution: Check that when --with-x is used X can be configured. +Files: src/configure.ac, src/auto/configure + +Patch 8.1.0216 +Problem: Part of file not indented properly. +Solution: Adjust the indent. (Ken Takata) +Files: src/getchar.c + +Patch 8.1.0217 +Problem: Compiler warning for variable set but not used. +Solution: Move tilde_file inside #ifdef. (Hirohito Higashi, closes #3255) +Files: src/ex_docmd.c + +Patch 8.1.0218 +Problem: Cannot add matches to another window. (Qiming Zhao) +Solution: Add the "window" argument to matchadd() and matchaddpos(). + (closes #3260) +Files: src/evalfunc.c, runtime/doc/eval.txt, src/testdir/test_match.vim + +Patch 8.1.0219 +Problem: Expanding ## fails to escape backtick. +Solution: Escape a backtick in a file name. (closes #3257) +Files: src/ex_docmd.c, src/testdir/test_edit.vim + +Patch 8.1.0220 +Problem: Ruby converts v:true and v:false to a number. +Solution: Use Qtrue and Qfalse instead. (Masataka Pocke Kuwabara, + closes #3259) +Files: src/if_ruby.c, src/testdir/test_ruby.vim + +Patch 8.1.0221 +Problem: Not enough testing for the Ruby interface. +Solution: Add more tests. (Dominique Pelle, closes #3252) +Files: runtime/doc/if_ruby.txt, src/testdir/test_ruby.vim + +Patch 8.1.0222 +Problem: Errors are reported for "make install". +Solution: Skip missing language files. (Christian Brabandt, closes #3254) +Files: src/installman.sh + +Patch 8.1.0223 +Problem: Completing shell command finds sub-directories in $PATH. +Solution: Remove EW_DIR when completing an item in $PATH. (Jason Franklin) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.1.0224 +Problem: Hang in bracketed paste mode when t_PE not encountered. +Solution: Break out of the loop when got_int is set. (suggested by Christian + Brabandt, closes #3146) +Files: src/edit.c + +Patch 8.1.0225 +Problem: Mode() does not indicate using CTRL-O from Insert mode. +Solution: Add "niI", "niR" and "niV" to mode() result. (closes #3000) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.1.0226 +Problem: Too many #ifdefs. +Solution: Graduate the +vreplace feature, it's not much code and quite a few + #ifdefs. +Files: runtime/doc/change.txt, runtime/doc/various.txt, src/edit.c, + src/evalfunc.c, src/gui.c, src/misc1.c, src/misc2.c, src/normal.c, + src/ops.c, src/screen.c, src/version.c, src/feature.h, + src/globals.h, src/macros.h, src/vim.h + +Patch 8.1.0227 +Problem: Spaces instead of tabs in makefile. +Solution: Use tabs and fix sorting. (Ken Takata) +Files: src/po/Make_all.mak + +Patch 8.1.0228 +Problem: Dropping files is ignored while Vim is busy. +Solution: Postpone the effect of dropping files until it's safe. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/gui.c, src/gui.h, + src/screen.c, src/main.c, src/gui_mac.c + +Patch 8.1.0229 +Problem: Crash when dumping profiling data. +Solution: Reset flag indicating that initialization was done. +Files: src/userfunc.c + +Patch 8.1.0230 +Problem: Directly checking 'buftype' value. +Solution: Add the bt_normal() function. (Yegappan Lakshmanan) +Files: src/buffer.c, src/ex_docmd.c, src/fileio.c, src/proto/buffer.pro, + src/quickfix.c + +Patch 8.1.0231 +Problem: :help -? goes to help for -+. +Solution: Add -? to list of special cases. (Hirohito Higashi) +Files: src/ex_cmds.c, src/testdir/test_help_tagjump.vim + +Patch 8.1.0232 +Problem: Ruby error does not include backtrace. +Solution: Add an error backtrace. (Masataka Pocke Kuwabara, closes #3267) +Files: src/if_ruby.c + +Patch 8.1.0233 +Problem: "safe" argument of call_vim_function() is always FALSE. +Solution: Remove the argument. +Files: src/eval.c, src/proto/eval.pro, src/edit.c, src/mbyte.c, + src/normal.c, src/ex_getln.c + +Patch 8.1.0234 +Problem: Incorrect reference counting in Perl interface. +Solution: Call SvREFCNT_inc more often, add a test. (Damien) +Files: src/if_perl.xs, src/testdir/test_perl.vim + +Patch 8.1.0235 (after 8.1.0231) +Problem: More help tags that jump to the wrong location. +Solution: Add more exceptions and a table for "expr-" tags. (Hirohito + Higashi) +Files: src/ex_cmds.c, src/testdir/test_help_tagjump.vim + +Patch 8.1.0236 (after 8.1.0232) +Problem: Ruby build fails when ruby_intern is missing. +Solution: Do not use ruby_intern2. (Ken Takata) +Files: src/if_ruby.c + +Patch 8.1.0237 +Problem: Ruby on Cygwin doesn't always work. +Solution: Use LIBRUBY_SO if LIBRUBY_ALIASES isn't set. (Ken Takata) +Files: src/configure.ac, src/auto/configure + +Patch 8.1.0238 +Problem: 'buftype' is cleared when using ":term ++hidden cat". (Marcin + Szamotulski) +Solution: Set the "options initialized" flag earlier. (closes #3278) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0239 (after 8.1.0236) +Problem: Now Ruby build fails on other systems. +Solution: Always define rb_intern. (Ken Takata, closes #3275) +Files: src/if_ruby.c + +Patch 8.1.0240 +Problem: g:actual_curbuf set in wrong scope. (Daniel Hahler) +Solution: Prepend the "g:" name space. (closes #3279) +Files: src/buffer.c + +Patch 8.1.0241 +Problem: Effect of ":tabmove N" is not clear. +Solution: Add a test that shows the behavior. (Christian Brabandt, + closes #3288) +Files: src/testdir/test_tabpage.vim + +Patch 8.1.0242 +Problem: Insert mode completion may use an invalid buffer pointer. (Akib + Nizam) +Solution: Check for ins_buf to be valid. (closes #3290) +Files: src/edit.c + +Patch 8.1.0243 +Problem: Using :term ++close ++hidden closes a window. (Marcin Szamotulski) +Solution: Don't close the window if only using it temporarily for unloading + the terminal buffer. (closes #3287) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0244 +Problem: No redraw when using a STOP signal on Vim and then a CONT signal. +Solution: Catch the CONT signal and force a redraw. (closes #3285) +Files: src/os_unix.c, src/term.c, src/proto/term.pro + +Patch 8.1.0245 +Problem: Calling setline() in TextChangedI autocmd breaks undo. (Jason + Felice) +Solution: Don't save lines for undo when already saved. (closes #3291) +Files: src/edit.c, src/testdir/test_autocmd.vim + +Patch 8.1.0246 (after 8.1.0245) +Problem: Build failure without the +eval feature. +Solution: Add #ifdef +Files: src/edit.c + +Patch 8.1.0247 +Problem: Python: error message for failing import is incorrect. +Solution: Adjust how modules are loaded. (Ozaki Kiichi, closes #3162) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok + +Patch 8.1.0248 +Problem: duplicated quickfix code. +Solution: Move the code to a function. +Files: src/quickfix.c + +Patch 8.1.0249 +Problem: GTK: when screen DPI changes Vim does not handle it. +Solution: Handle the gtk-xft-dpi signal. (Roel van de Kraats, + closes #2357) +Files: src/gui_gtk_x11.c + +Patch 8.1.0250 +Problem: MS-Windows using VTP: windows size change incorrect. +Solution: Call SetConsoleScreenBufferSize() first. (Nobuhiro Takasaki, + closes #3164) +Files: src/os_win32.c + +Patch 8.1.0251 +Problem: Using a full path is supported for 'directory' but not for + 'backupdir'. (Mikolaj Machowski) +Solution: Support 'backupdir' as well. (Christian Brabandt, closes #179) +Files: runtime/doc/options.txt, src/fileio.c, src/memline.c, + src/proto/memline.pro, src/testdir/test_alot.vim, + src/testdir/test_backup.vim, src/Make_all.mak + +Patch 8.1.0252 +Problem: Quickfix functions are too long. +Solution: Refactor. (Yegappan Lakshmanan, closes #2950) +Files: src/quickfix.c + +Patch 8.1.0253 +Problem: Saving and restoring window title does not always work. +Solution: Use the stack push and pop commands. (Kouichi Iwamoto, + closes #3059) +Files: runtime/doc/term.txt, src/main.c, src/option.c, src/os_unix.c, + src/proto/term.pro, src/term.c, src/term.h, src/vim.h, + src/buffer.c, src/ex_docmd.c, src/option.c, src/os_amiga.c, + src/os_mswin.c, src/os_win32.c + +Patch 8.1.0254 (after 8.1.0253) +Problem: Cannot build on MS-Windows; Unused macro HAVE_HANDLE_DROP. +Solution: Adjust #ifdef. Delete the macro. +Files: src/main.c, src/vim.h + +Patch 8.1.0255 (after 8.1.0251) +Problem: Backup test fails when using shadow directory. +Solution: Remove check for "src". +Files: src/testdir/test_backup.vim + +Patch 8.1.0256 (after 8.1.0245) +Problem: Using setline() in TextChangedI splits undo. +Solution: Use another solution for undo not working properly. +Files: src/edit.c, src/testdir/test_autocmd.vim + +Patch 8.1.0257 +Problem: No test for pathshorten(). +Solution: Add a test. (Dominique Pelle, closes #3295) +Files: src/testdir/test_functions.vim + +Patch 8.1.0258 +Problem: Not enough testing for the CompleteDone event. +Solution: Add a test. (closes #3297) +Files: src/testdir/test_ins_complete.vim + +Patch 8.1.0259 +Problem: No test for fixed quickfix issue. +Solution: Add a test. Clean up the code a bit. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0260 +Problem: No LGTM logo in README file. +Solution: Add one. (Bas van Schaik, closes #3305) +Files: README.md + +Patch 8.1.0261 +Problem: Coverity complains about a negative array index. +Solution: When qf_id2nr() cannot find the list then don't set qf_curlist. +Files: src/quickfix.c + +Patch 8.1.0262 +Problem: Not enough testing for getftype(). +Solution: Add a test. (Dominique Pelle, closes #3300) +Files: src/evalfunc.c, src/testdir/test_stat.vim + +Patch 8.1.0263 +Problem: Channel log doesn't show part of channel. +Solution: Add "sock", "out", "err" or "in". (Ozaki Kiichi, closes #3303) +Files: src/channel.c + +Patch 8.1.0264 +Problem: Backup tests fail when CWD is in /tmp. +Solution: Make 'backupskip' empty. (Christian Brabandt, closes #3301) +Files: src/testdir/test_backup.vim + +Patch 8.1.0265 +Problem: The getcmdline() function is way too big. +Solution: Factor out the incremental search highlighting. +Files: src/ex_getln.c + +Patch 8.1.0266 +Problem: Parsing Ex address range is not a separate function. +Solution: Refactor do_one_cmd() to separate address parsing. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 8.1.0267 +Problem: No good check if restoring quickfix list worked. +Solution: Let qf_restore_list() return OK/FAIL. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0268 +Problem: File type checking has too many #ifdef. +Solution: Always define the S_IF macros. (Ken Takata, closes #3306) +Files: src/buffer.c, src/evalfunc.c, src/fileio.c, src/if_cscope.c, + src/os_unix.c, src/os_unix.h, src/vim.h + +Patch 8.1.0269 +Problem: Ruby Kernel.#p method always returns nil. +Solution: Copy p method implementation from Ruby code. (Masataka Pocke + Kuwabara, closes #3315) +Files: src/if_ruby.c, src/testdir/test_ruby.vim + +Patch 8.1.0270 +Problem: Checking for a Tab in a line could be faster. +Solution: Use strchr() instead of strrchr(). (closes #3312) +Files: src/ex_cmds.c + +Patch 8.1.0271 +Problem: 'incsearch' doesn't work for :s, :g or :v. +Solution: Also use 'incsearch' for other commands that use a pattern. +Files: src/ex_getln.c, src/globals.h, src/screen.c, + src/testdir/test_search.vim + +Patch 8.1.0272 +Problem: Options test fails if temp var ends in slash. (Tom Briden) +Solution: Check for optional slash. (closes #3308) +Files: src/testdir/test_options.vim + +Patch 8.1.0273 +Problem: Invalid memory access when using 'incsearch'. +Solution: Reset "patlen" when using previous search pattern. +Files: src/ex_getln.c + +Patch 8.1.0274 +Problem: 'incsearch' triggers on ":source". +Solution: Check for the whole command name. +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0275 +Problem: 'incsearch' with :s doesn't start at cursor line. +Solution: Set cursor before parsing address. (closes #3318) + Also accept a match at the start of the first line. +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0276 +Problem: No test for 'incsearch' highlighting with :s. +Solution: Add a screendump test. +Files: src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_01.dump + +Patch 8.1.0277 +Problem: 'incsearch' highlighting wrong in a few cases. +Solution: Fix using last search pattern. Restore highlighting when changing + command. (issue #3321) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_02.dump, + src/testdir/dumps/Test_incsearch_substitute_03.dump + +Patch 8.1.0278 +Problem: 'incsearch' highlighting does not accept reverse range. +Solution: Swap the range when needed. (issue #3321) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_04.dump + +Patch 8.1.0279 +Problem: 'incsearch' highlighting does not skip white space. +Solution: Skip white space after the command. (issue #3321) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_05.dump + +Patch 8.1.0280 +Problem: 'incsearch' highlighting does not work for ":g!/". +Solution: Skip the exclamation mark. (Hirohito Higashi) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0281 +Problem: Parsing command modifiers is not separated. +Solution: Move command modifier parsing to a separate function. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_cmds.h, + src/globals.h, src/feature.h + +Patch 8.1.0282 +Problem: 'incsearch' does not work with command modifiers. +Solution: Skip command modifiers. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_getln.c, + src/testdir/test_search.vim + +Patch 8.1.0283 (after 8.1.0282) +Problem: Missing test dump. +Solution: Add the dump file +Files: src/testdir/dumps/Test_incsearch_substitute_06.dump + +Patch 8.1.0284 +Problem: 'cursorline' highlighting wrong with 'incsearch'. +Solution: Move the cursor back if the match is outside the range. +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_07.dump + src/testdir/dumps/Test_incsearch_substitute_08.dump + +Patch 8.1.0285 +Problem: Compiler warning for conversion. +Solution: Add a type cast. (Mike Williams) +Files: src/ex_getln.c + +Patch 8.1.0286 +Problem: 'incsearch' does not apply to :smagic and :snomagic. +Solution: Add support. (Hirohito Higashi) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0287 +Problem: MAX is not defined everywhere. +Solution: Define MAX where needed. +Files: src/ex_getln.c + +Patch 8.1.0288 +Problem: Quickfix code uses cmdidx too often. +Solution: Add is_loclist_cmd(). (Yegappan Lakshmanan) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/quickfix.c + +Patch 8.1.0289 +Problem: Cursor moves to wrong column after quickfix jump. +Solution: Set the curswant flag. (Andy Massimino, closes #3331) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0290 +Problem: "cit" on an empty HTML tag changes the whole tag. +Solution: Only adjust the area in Visual mode. (Andy Massimino, + closes #3332) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.1.0291 +Problem: 'incsearch' highlighting not used for :sort. +Solution: Handle pattern in :sort command. +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_sort_01.dump + +Patch 8.1.0292 +Problem: MS-Windows: the text "self-installing" confuses some users. +Solution: Remove the text from the uninstall entry. (closes #3337) +Files: src/dosinst.c + +Patch 8.1.0293 +Problem: Checks for type of stack is cryptic. +Solution: Define IS_QF_STACK() and IS_LL_STACK(). (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0294 +Problem: MS-Windows: sometimes uses short directory name. +Solution: Expand to long file name with correct caps. (Nobuhiro Takasaki, + closes #3334) +Files: src/os_win32.c + +Patch 8.1.0295 +Problem: No 'incsearch' highlighting for :vimgrep and similar commands. +Solution: Parse the :vimgrep command and similar ones to locate the search + pattern. (Hirohito Higashi, closes #3344) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_vimgrep_01.dump, + src/testdir/dumps/Test_incsearch_vimgrep_02.dump, + src/testdir/dumps/Test_incsearch_vimgrep_03.dump, + src/testdir/dumps/Test_incsearch_vimgrep_04.dump, + src/testdir/dumps/Test_incsearch_vimgrep_05.dump + +Patch 8.1.0296 +Problem: Command parsing for 'incsearch' is a bit ugly. +Solution: Return when there is no pattern. Put common checks together. +Files: src/ex_getln.c + +Patch 8.1.0297 (after 8.1.0294) +Problem: MS-Windows: tests fail, Vim crashes. +Solution: Fix long file name handling. +Files: src/os_win32.c + +Patch 8.1.0298 +Problem: Window resize test sometimes fails on Mac. +Solution: Add Test_popup_and_window_resize() to flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0299 (after 8.1.0298) +Problem: misplaced comment +Solution: Remove comment +Files: src/testdir/runtest.vim + +Patch 8.1.0300 +Problem: The old window title might be freed twice. (Dominique Pelle) +Solution: Do not free "oldtitle" in a signal handler but set a flag to have + it freed later. +Files: src/os_unix.c + +Patch 8.1.0301 +Problem: GTK: Input method popup displayed on wrong screen. +Solution: Add the screen position offset. (Ken Takata, closes #3268) +Files: src/gui_beval.c, src/gui_gtk_x11.c, src/mbyte.c, + src/proto/gui_gtk_x11.pro + +Patch 8.1.0302 +Problem: Crash when using :suspend and "fg". +Solution: Undo patch 8.1.0244. +Files: src/os_unix.c, src/term.c, src/proto/term.pro + +Patch 8.1.0303 +Problem: line2byte() is wrong for last line with 'noeol' and 'nofixeol'. +Solution: Fix off-by-one error. (Shane Harper, closes #3351) +Files: src/memline.c, src/testdir/test_functions.vim + +Patch 8.1.0304 +Problem: No redraw when using a STOP signal on Vim and then a CONT signal. +Solution: Catch the CONT signal and set the terminal to raw mode. This is + like 8.1.0244 but without the screen redraw and a fix for + multi-threading suggested by Dominique Pelle. +Files: src/os_unix.c, src/term.c, src/proto/term.pro + +Patch 8.1.0305 +Problem: Missing support for Lua 5.4 32 bits on Unix. +Solution: Define lua_newuserdatauv. (Kazunobu Kuriyama) +Files: src/if_lua.c + +Patch 8.1.0306 +Problem: Plural messages are not translated properly. +Solution: Add more usage of NGETTEXT(). (Sergey Alyoshin) +Files: src/vim.h, src/buffer.c, src/ex_cmds.c, src/ex_docmd.c, + src/fileio.c, src/misc1.c, src/ops.c + +Patch 8.1.0307 +Problem: There is no good way to get the window layout. +Solution: Add the winlayout() function. (Yegappan Lakshmanan) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/window.pro, + src/window.c, src/testdir/test_window_id.vim + +Patch 8.1.0308 +Problem: A quick undo shows "1 seconds ago". (Tony Mechelynck) +Solution: Add singular/plural message. +Files: src/undo.c + +Patch 8.1.0309 +Problem: Profiling does not show a count for condition lines. (Daniel + Hahler) +Solution: Count lines when not skipping. (Ozaki Kiichi, closes #2499) +Files: src/ex_docmd.c, src/testdir/test_profile.vim + +Patch 8.1.0310 +Problem: File info message not always suppressed with 'F' in 'shortmess'. + (Asheq Imran) +Solution: Save and restore msg_silent. (Christian Brabandt, closes #3221) +Files: src/buffer.c, src/memline.c, src/testdir/test_options.vim + +Patch 8.1.0311 +Problem: Filtering entries in a quickfix list is not easy. +Solution: Add the cfilter plugin. (Yegappan Lakshmanan) +Files: runtime/pack/dist/opt/cfilter/plugin/cfilter.vim, + runtime/doc/quickfix.txt + +Patch 8.1.0312 +Problem: Wrong type for flags used in signal handlers. +Solution: Use sig_atomic_t. (Dominique Pelle, closes #3356) +Files: src/globals.h, src/os_unix.c, src/os_win32.h + +Patch 8.1.0313 +Problem: Information about a swap file is unavailable. +Solution: Add swapinfo(). (Enzo Ferber) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/memline.c, + src/proto/memline.pro, src/testdir/test_swap.vim + +Patch 8.1.0314 (after 8.1.0313) +Problem: Build failure without the +eval feature. (Brenton Horne) +Solution: Add #ifdef. Also add the "dirty" item. +Files: src/memline.c, runtime/doc/eval.txt, src/testdir/test_swap.vim + +Patch 8.1.0315 +Problem: Helpgrep with language doesn't work properly. (Takuya Fujiwara) +Solution: Check for the language earlier. (Hirohito Higashi) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0316 +Problem: swapinfo() test fails on Travis. +Solution: Handle a long host name. (Ozaki Kiichi, closes #3361) + Also make the version check flexible. (James McCoy) +Files: src/testdir/test_swap.vim + +Patch 8.1.0317 +Problem: Cscope test fails when using shadow directory. +Solution: Resolve symlink in Vim. (James McCoy, closes #3364) +Files: src/testdir/test_cscope.vim + +Patch 8.1.0318 +Problem: The getftype() test may fail for char devices if the file + disappeared in between the listing and the getftype() call. +Solution: Ignore empty result. (Ozaki Kiichi, closes #3360) +Files: src/testdir/test_stat.vim + +Patch 8.1.0319 +Problem: bzero() function prototype doesn't work for Android. +Solution: Add an #ifdef. (Elliott Hughes, closes #3365) +Files: src/osdef1.h.in + +Patch 8.1.0320 +Problem: Too much 'incsearch' highlight for pattern matching everything. +Solution: Add the skiplen to the command and remove the line range. + (Christian Brabandt) Check for empty pattern earlier. +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_09.dump + +Patch 8.1.0321 (after 8.1.0320) +Problem: 'incsearch' regression: /\v highlights everything. +Solution: Put back the empty_pattern() check. +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_search_01.dump, + src/testdir/dumps/Test_incsearch_search_02.dump + +Patch 8.1.0322 +Problem: Test_copy_winopt() does not restore 'hidden'. +Solution: Restore the option, fix indent. (Ozaki Kiichi, closes #3367) +Files: src/testdir/test_options.vim + +Patch 8.1.0323 +Problem: Reverse order of VTP calls only needed the first time. +Solution: Add a flag to remember the state. (Nobuhiro Takasaki, closes #3366) +Files: src/os_win32.c + +Patch 8.1.0324 +Problem: Off-by-one error in cmdidx check. (Coverity) +Solution: Use ">=" instead of ">". +Files: src/ex_docmd.c + +Patch 8.1.0325 +Problem: Strings in swap file may not be NUL terminated. (Coverity) +Solution: Limit the length of the used string. +Files: src/memline.c + +Patch 8.1.0326 +Problem: Screen dump does not consider NUL and space equal. +Solution: Use temp variables instead of character from cell. +Files: src/terminal.c, src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.0327 +Problem: The "g CTRL-G" command isn't tested much. +Solution: Add more tests. (Dominique Pelle, closes #3369) +Files: src/testdir/test_normal.vim + +Patch 8.1.0328 +Problem: inputlist() doesn't work with a timer. (Dominique Pelle) +Solution: Don't redraw when cmdline_row is zero. (Hirohito Higashi, + closes #3239) +Files: src/misc1.c, src/screen.c + +Patch 8.1.0329 +Problem: Using inputlist() during startup results in garbage. (Dominique + Pelle) +Solution: Make sure the xterm tracing is stopped when disabling the mouse. +Files: src/os_unix.c + +Patch 8.1.0330 +Problem: The qf_add_entries() function is too long. +Solution: Split in two parts. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0331 +Problem: Insufficient test coverage for :mkview and :loadview. +Solution: Add tests. (Dominique Pelle, closes #3385) +Files: src/testdir/test_mksession.vim + +Patch 8.1.0332 +Problem: Get Gdk-Critical error on first balloon show. +Solution: Get screen geometry using the draw area widget. (Davit Samvelyan, + closes #3386) +Files: src/gui_beval.c + +Patch 8.1.0333 +Problem: :mkview does not restore cursor properly after "$". (Dominique + Pelle) +Solution: Position the cursor with "normal! $". +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0334 +Problem: 'autowrite' takes effect when buffer is not to be written. +Solution: Don't write buffers that are not supposed to be written. (Even Q + Jones, closes #3391) Add tests for 'autowrite'. +Files: src/ex_cmds2.c, src/testdir/test_writefile.vim + +Patch 8.1.0335 +Problem: mkview test fails on CI. +Solution: Attempt to force recomputing curswant after folding. +Files: src/testdir/test_mksession.vim + +Patch 8.1.0336 +Problem: mkview test still fails on CI. +Solution: Ignore curswant, don't see another solution. +Files: src/testdir/test_mksession.vim + +Patch 8.1.0337 +Problem: :file fails in quickfix command. +Solution: Allow :file without argument when curbuf_lock is set. (Jason + Franklin) +Files: src/ex_docmd.c, src/testdir/test_quickfix.vim + +Patch 8.1.0338 +Problem: MS-Windows: VTP doesn't work properly with PowerShell. +Solution: Adjust the color index. (Nobuhiro Takasaki, closes #3347) +Files: src/os_win32.c + +Patch 8.1.0339 +Problem: Wrong highlight when 'incsearch' set and cancelling :s. +Solution: Reset search line range. (Hirohito Higashi, Masamichi Abe) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_10.dump + +Patch 8.1.0340 +Problem: No test for :spellinfo. +Solution: Add a test. (Dominique Pelle, closes #3394) +Files: src/testdir/test_spell.vim + +Patch 8.1.0341 +Problem: :argadd in empty buffer changes the buffer name. (Pavol Juhas) +Solution: Don't re-use the current buffer when not going to edit the file. + (closes #3397) Do re-use the current buffer for :next. +Files: src/ex_cmds2.c, src/testdir/test_arglist.vim, + src/testdir/test_command_count.vim + +Patch 8.1.0342 +Problem: Crash when a callback deletes a window that is being used. (Ozaki + Kiichi) +Solution: Do not unload a buffer that is being displayed while redrawing the + screen. Also avoid invoking callbacks while redrawing. + (closes #2107) +Files: src/buffer.c, src/misc2.c + +Patch 8.1.0343 +Problem: 'shellslash' is not used for getcwd() with local directory. + (Daniel Hahler) +Solution: Call slash_adjust() later. (closes #3399) +Files: src/evalfunc.c + +Patch 8.1.0344 +Problem: 'hlsearch' highlighting has a gap after /$. +Solution: Remove suspicious code. (Ricky Zhou, closes #3400) +Files: src/screen.c, src/testdir/test_hlsearch.vim + +Patch 8.1.0345 +Problem: Cannot get the window id associated with the location list. +Solution: Add the "filewinid" argument to getloclist(). (Yegappan + Lakshmanan, closes #3202) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.1.0346 +Problem: Building with Aap is outdated and unused. +Solution: Remove the Aap build files. +Files: Filelist, src/main.aap, src/testdir/main.aap, src/config.aap.in, + runtime/macros/maze/main.aap + +Patch 8.1.0347 +Problem: Some tests fail on Solaris. +Solution: Skip writefile test. Fix path to libc.so. Improve test for Turkish + case change. (Libor Bukata, Bjorn Linse, closes #3403) +Files: src/testdir/test_functions.vim, src/testdir/test_normal.vim, + src/testdir/test_writefile.vim + +Patch 8.1.0348 +Problem: On Travis the slowest build is run last. (Dominique Pelle) +Solution: Reorder the build entries. +Files: .travis.yml + +Patch 8.1.0349 +Problem: Crash when wiping buffer in a callback. +Solution: Do not handle messages when only peeking for a character. + (closes #2107) Add "redraw_flag" to test_override(). +Files: src/os_unix.c, src/os_win32.c, src/screen.c, src/evalfunc.c, + src/globals.h, runtime/doc/eval.txt + +Patch 8.1.0350 +Problem: Vim may block on ch_sendraw() when the job is sending data back to + Vim, which isn't read yet. (Nate Bosch) +Solution: Add the "noblock" option to job_start(). (closes #2548) +Files: src/channel.c, src/structs.h, src/testdir/test_channel.vim, + runtime/doc/channel.txt + +Patch 8.1.0351 +Problem: 'incsearch' for :/foo/s//<Esc> changes last search pattern. +Solution: Save the last search pattern earlier. +Files: src/ex_docmd.c, src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0352 +Problem: Browsing compressed tar files does not always work. +Solution: Use the "file" command to get the compression type. +Files: runtime/autoload/tar.vim + +Patch 8.1.0353 +Problem: An "after" directory of a package is appended to 'rtp', which + will be after the user's "after" directory. () +Solution: Insert the package "after" directory before any other "after" + directory in 'rtp'. (closes #3409) +Files: src/ex_cmds2.c, src/testdir/test_packadd.vim + +Patch 8.1.0354 (after 8.1.0353) +Problem: Packadd test fails on MS-Windows. +Solution: Ignore difference between forward and backward slashes. +Files: src/testdir/test_packadd.vim + +Patch 8.1.0355 +Problem: Incorrect adjusting the popup menu for the preview window. +Solution: Compute position and height properly. (Ronan Pigott) Also show at + least ten items. (closes #3414) +Files: src/popupmnu.c + +Patch 8.1.0356 +Problem: Using :s with 'incsearch' prevents CTRL-R CTRL-W. (Boris Staletic) +Solution: When past the pattern put cursor back in the start position. + (closes #3413) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.0357 +Problem: Instructions for tests are outdated. (Jason Franklin) +Solution: Update the text. +Files: src/testdir/README.txt + +Patch 8.1.0358 +Problem: Crash when using term_dumpwrite() after the job finished. +Solution: Check for a finished job and give an error message. +Files: src/terminal.c + +Patch 8.1.0359 +Problem: No clue what test failed when using a screendump twice. +Solution: Add an extra argument to VerifyScreenDump(). +Files: src/testdir/screendump.vim + +Patch 8.1.0360 +Problem: Using an external diff program is slow and inflexible. +Solution: Include the xdiff library. (Christian Brabandt, closes #2732) + Use it by default. +Files: Filelist, runtime/doc/diff.txt, runtime/doc/options.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile, src/diff.c, + src/structs.h, src/testdir/dumps/Test_diff_01.dump, + src/testdir/dumps/Test_diff_02.dump, + src/testdir/dumps/Test_diff_03.dump, + src/testdir/dumps/Test_diff_04.dump, + src/testdir/dumps/Test_diff_05.dump, + src/testdir/dumps/Test_diff_06.dump, + src/testdir/dumps/Test_diff_07.dump, + src/testdir/dumps/Test_diff_08.dump, + src/testdir/dumps/Test_diff_09.dump, + src/testdir/dumps/Test_diff_10.dump, + src/testdir/dumps/Test_diff_11.dump, + src/testdir/dumps/Test_diff_12.dump, + src/testdir/dumps/Test_diff_13.dump, + src/testdir/dumps/Test_diff_14.dump, + src/testdir/dumps/Test_diff_15.dump, + src/testdir/dumps/Test_diff_16.dump, + src/testdir/test_diffmode.vim, src/xdiff/COPYING, + src/xdiff/xdiff.h, src/xdiff/xdiffi.c, src/xdiff/xdiffi.h, + src/xdiff/xemit.c, src/xdiff/xemit.h, src/xdiff/xhistogram.c, + src/xdiff/xinclude.h, src/xdiff/xmacros.h, src/xdiff/xpatience.c, + src/xdiff/xprepare.c, src/xdiff/xprepare.h, src/xdiff/xtypes.h, + src/xdiff/xutils.c, src/xdiff/xutils.h, src/xdiff/README.txt + +Patch 8.1.0361 +Problem: Remote user not used for completion. (Stucki) +Solution: Use $USER too. (Dominique Pelle, closes #3407) +Files: src/misc1.c + +Patch 8.1.0362 +Problem: Cannot get the script line number when executing a function. +Solution: Store the line number besides the script ID. (Ozaki Kiichi, + closes #3362) Also display the line number with ":verbose set". +Files: runtime/doc/cmdline.txt, runtime/doc/eval.txt, src/Make_all.mak, + src/buffer.c, src/eval.c, src/evalfunc.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/globals.h, src/main.c, src/menu.c, src/option.c, + src/proto/eval.pro, src/structs.h, src/syntax.c, + src/testdir/test_alot.vim, src/testdir/test_expand_func.vim, + src/testdir/test_maparg.vim, src/term.c src/userfunc.c + +Patch 8.1.0363 +Problem: Internal diff isn't used by default as advertised. +Solution: Add "internal" to the default value of 'diffopt'. + Also add couple of files missing from the distribution. +Files: src/option.c, runtime/doc/options.txt, Filelist + +Patch 8.1.0364 +Problem: Compiler warning in xdiff code. (Yegappan Lakshmanan) +Solution: Initialize directly. +Files: src/xdiff/xemit.c, src/xdiff/README.txt + +Patch 8.1.0365 +Problem: Function profile doesn't specify where it was defined. +Solution: Show the script name and line number. +Files: src/userfunc.c, src/testdir/test_profile.vim + +Patch 8.1.0366 +Problem: Pieces of the xdiff code are not used. +Solution: Add "#if 0" to omit unused code. +Files: src/xdiff/xemit.c + +Patch 8.1.0367 +Problem: getchar(1) no longer processes pending messages. (Yasuhiro + Matsumoto) +Solution: Call parse_queued_messages(). +Files: src/evalfunc.c + +Patch 8.1.0368 +Problem: GTK code has too many #ifdefs and building fails with GTK 2.10. +Solution: Always use gtk_widget_get_window() and define it for older GTK + versions. (Ken Takata, closes #3421) +Files: src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_f.c, + src/gui_gtk_x11.c, src/mbyte.c, src/vim.h + +Patch 8.1.0369 +Problem: Continuation lines cannot contain comments. +Solution: Support using "\ . +Files: src/ex_cmds2.c, src/testdir/test_eval_stuff.vim, + runtime/indent/vim.vim, runtime/doc/repeat.txt + +Patch 8.1.0370 +Problem: Not using internal diff if 'diffopt' is not changed. +Solution: Correct initialization of diff_flags. (Christian Brabandt) +Files: src/diff.c + +Patch 8.1.0371 +Problem: Argument types for select() may be wrong. +Solution: Use a configure macro. (Tobias Ulmer) +Files: src/config.h.in, src/configure.ac, src/auto/configure, + src/os_unix.c + +Patch 8.1.0372 +Problem: Screen updating slow when 'cursorline' is set. +Solution: Only redraw the old and new cursor line, not all lines. +Files: src/edit.c, src/move.c, src/screen.c, src/proto/screen.pro + +Patch 8.1.0373 (after 8.1.0372) +Problem: Screen updating still slow when 'cursorline' is set. +Solution: Fix setting last_cursorline. +Files: src/move.c + +Patch 8.1.0374 +Problem: Moving the cursor is slow when 'relativenumber' is set. +Solution: Only redraw the number column, not all lines. +Files: src/screen.c, src/move.c + +Patch 8.1.0375 +Problem: Cannot use diff mode with Cygwin diff.exe. (Igor Forca) +Solution: Skip over unrecognized lines in the diff output. +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.1.0376 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize the variable. +Files: src/screen.c + +Patch 8.1.0377 +Problem: Xdiff doesn't use the Vim memory allocation functions. +Solution: Change the xdl_ defines. Check for out-of-memory. Rename + "ignored" to "vim_ignored". +Files: src/xdiff/xdiff.h, src/xdiff/xpatience.c, src/xdiff/xdiffi.c, + src/channel.c, src/diff.c, src/evalfunc.c, src/ex_cmds.c, + src/fileio.c, src/main.c, src/mbyte.c, src/netbeans.c, + src/os_unix.c, src/os_win32.c, src/ui.c, src/window.c, + src/globals.h, src/term.c + +Patch 8.1.0378 +Problem: CI build failure. +Solution: Include vim.h as ../vim.h. Fix compiler warning. +Files: src/xdiff/xdiff.h, src/xdiff/xpatience.c + +Patch 8.1.0379 +Problem: Build dependencies are incomplete. +Solution: Update the build dependencies, mainly for xdiff. Adjust object + directory for libvterm and xdiff. +Files: src/Makefile, src/configure.ac, src/auto/configure, + src/libvterm/src/screen.c, src/libvterm/src/termscreen.c, + src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.0380 +Problem: "make proto" doesn't work well. +Solution: Define a few more types for cproto. Update proto files. Fix that + workshop didn't build. +Files: src/vim.h, src/protodef.h, src/if_ruby.c, src/workshop.c, + src/proto/digraph.pro, src/hardcopy.pro, src/proto/option.pro, + src/proto/window.pro + +Patch 8.1.0381 +Problem: Variable declaration not at start of block. +Solution: Fix line ordering. +Files: src/xdiff/xpatience.c + +Patch 8.1.0382 +Problem: Some make programs can't handle dependency on "xdiff/../". +Solution: Strip it out. +Files: src/Makefile + +Patch 8.1.0383 +Problem: Missing source file rename. +Solution: Update the dependency. +Files: src/Make_mvc.mak + +Patch 8.1.0384 +Problem: Sign ordering depends on +netbeans feature. +Solution: Also order signs without +netbeans. (Christian Brabandt, + closes #3224) +Files: src/structs.h, src/buffer.c + +Patch 8.1.0385 +Problem: Coveralls badge doesn't update. +Solution: Update the URL +Files: README.md + +Patch 8.1.0386 +Problem: Cannot test with non-default option value. +Solution: Add test_option_not_set(). +Files: runtime/doc/eval.txt, src/option.c, src/proto/option.pro, + src/evalfunc.c + +Patch 8.1.0387 +Problem: No test for 'ambiwidth' detection. +Solution: Add a test. +Files: src/testdir/test_startup_utf8.vim + +Patch 8.1.0388 +Problem: Coverity complains about possible NULL pointer use. +Solution: Use get_tv_string() instead of get_tv_string_chk(). +Files: src/evalfunc.c + +Patch 8.1.0389 +Problem: :behave command is not tested. +Solution: Add a test. (Dominique Pelle, closes #3429) +Files: src/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_behave.vim + +Patch 8.1.0390 +Problem: Scrollbars are not tested. +Solution: Add test_scrollbar() and a test. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_gui.vim + +Patch 8.1.0391 +Problem: Building in a shadow directory fails. +Solution: Don't link the xdiff directory but what's in it. (closes #3428) +Files: src/Makefile + +Patch 8.1.0392 +Problem: Error while typing :/foo/s// with 'incsearch' enabled. +Solution: Do not give search errors when highlighting matches. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_getln.c, + src/testdir/test_search.vim + +Patch 8.1.0393 +Problem: Not all white space difference options available. +Solution: Add "iblank", "iwhiteall" and "iwhiteeol" to 'diffopt'. +Files: src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_17.dump, + src/testdir/dumps/Test_diff_18.dump, + src/testdir/dumps/Test_diff_19.dump, + src/testdir/dumps/Test_diff_20.dump + +Patch 8.1.0394 +Problem: Diffs are not always updated correctly. +Solution: When using internal diff update for any changes properly. +Files: src/structs.h, src/diff.c, src/proto/diff.pro, src/misc1.c, + src/main.c + +Patch 8.1.0395 +Problem: Compiler warning on 64-bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/diff.c + +Patch 8.1.0396 +Problem: Another compiler warning on 64-bit MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/xdiff/xutils.c + +Patch 8.1.0397 +Problem: No event triggered after updating diffs. +Solution: Add the DiffUpdated event. +Files: src/vim.h, src/diff.c, src/fileio.c, + src/testdir/test_diffmode.vim, runtime/doc/autocmd.txt + +Patch 8.1.0398 +Problem: No test for -o and -O command line arguments. +Solution: Add a test. (Dominique Pelle, closes #3438) +Files: src/testdir/test_startup.vim + +Patch 8.1.0399 +Problem: 'hlsearch' highlight remains in other window after cancelling + command. +Solution: Redraw all windows. Also remove unnecessary delays. (closes #3437) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_11.dump, + src/testdir/dumps/Test_incsearch_substitute_12.dump, + src/testdir/dumps/Test_incsearch_substitute_13.dump + +Patch 8.1.0400 +Problem: Using freed memory with :diffget. +Solution: Skip ex_diffupdate() while updating diffs. (closes #3442) +Files: src/diff.c + +Patch 8.1.0401 +Problem: Can't get swap name of another buffer. +Solution: Add swapname(). (Ozaki Kiichi, closes #3441) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_swap.vim + +Patch 8.1.0402 +Problem: The DiffUpdate event isn't triggered for :diffput. +Solution: Also trigger DiffUpdate for :diffget and :diffput. +Files: src/diff.c + +Patch 8.1.0403 +Problem: Header file missing from distribution. +Solution: Add src/protodef.h. +Files: Filelist + +Patch 8.1.0404 +Problem: Accessing invalid memory with long argument name. +Solution: Use item_count instead of checking for a terminating NULL. + (Dominique Pelle, closes #3444) +Files: src/testdir/test_arglist.vim, src/version.c + +Patch 8.1.0405 +Problem: Too many #ifdefs for GTK. +Solution: Define macros instead of using #ifdef. (Ken Takata, closes #3436) +Files: src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_f.c, + src/gui_gtk_x11.c, src/vim.h + +Patch 8.1.0406 +Problem: Several command line arguments are not tested. +Solution: Add tests for -A, -F, -H, -p and -V. (Dominique Pelle, + closes #3446) +Files: src/testdir/test_startup.vim + +Patch 8.1.0407 +Problem: Quickfix code mixes using the stack and a list pointer. +Solution: Use a list pointer in more places. (Yegappan Lakshmanan, + closes #3443) +Files: src/quickfix.c + +Patch 8.1.0408 +Problem: MSVC: cannot use the "x64" native compiler option. +Solution: Ignore case for %Platform%. Improve documentation. (Ken Takata) +Files: src/INSTALLpc.txt, src/msvc2015.bat + +Patch 8.1.0409 (after 8.1.0406) +Problem: Startup test fails on MS-Windows. +Solution: Do the Arabic test in silent Ex mode. Loosen the check for -V2. +Files: src/testdir/test_startup.vim + +Patch 8.1.0410 +Problem: The ex_copen() function is too long. +Solution: Refactor to split off two functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0411 +Problem: Renamed file missing from distribution. +Solution: Rename screen.c to termscreen.c (Zdenek Dohnal, closes #3449) +Files: Filelist + +Patch 8.1.0412 +Problem: Cannot build with GTK 2.4. +Solution: Add back a few #ifdefs. (Ken Takata, closes #3447) + Also support older GTK. (Tom Christensen) +Files: src/gui_gtk_x11.c + +Patch 8.1.0413 +Problem: Test output is duplicated or missing. +Solution: Adjust the MS-Windows and Unix test makefiles. (Ken Takata, + closes #3452) +Files: src/testdir/Make_dos.mak, src/testdir/Makefile + +Patch 8.1.0414 +Problem: v:option_old and v:option_new are cleared when using :set in + OptionSet autocmd. (Gary Johnson) +Solution: Don't trigger OptionSet recursively. +Files: src/option.c + +Patch 8.1.0415 +Problem: Not actually using 16 colors with vtp. +Solution: Always use 256 colors when vtp is used. (Nobuhiro Takasaki, + closes #3432) +Files: src/option.c, src/term.c + +Patch 8.1.0416 +Problem: Sort doesn't report deleted lines. +Solution: Call msgmore(). (Christian Brabandt, closes #3454) +Files: src/ex_cmds.c, src/testdir/test_sort.vim + +Patch 8.1.0417 +Problem: Several command line arguments are not tested. +Solution: Add tests for -m, -M, -R and -Vfile. (Dominique Pelle, + closes #3458) +Files: src/testdir/test_startup.vim + +Patch 8.1.0418 +Problem: MS-Windows: cannot separate Lua include and library directories. +Solution: Add LUA_LIBDIR and LUA_INCDIR. (Ken Takata, closes #3464) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0419 +Problem: Cygwin: running cproto fails with -O2. +Solution: Strip -O2 for cproto. (Ken Takata, closes #3465) +Files: src/Makefile + +Patch 8.1.0420 +Problem: Generating vim.lib when using ActivePerl 5.20.3 or later. +Solution: Redefine XS_EXTERNAL(). (Ken Takata, closes #3462) +Files: src/if_perl.xs + +Patch 8.1.0421 +Problem: MS-Windows: Ruby path is wrong for Ruby 1.9 and later. +Solution: Let -I argument depend on Ruby version. (Ken Takata, closes #3461) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.0422 +Problem: Cannot create map file with MinGW. +Solution: Add support for $MAP. (Ken Takata, closes #3460) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0423 +Problem: MS-Windows: using dup-close for flushing a file. +Solution: Use _commit(). (Ken Takata, closes #3463) +Files: src/memfile.c, src/os_mac.h, src/os_win32.h + +Patch 8.1.0424 +Problem: Test output is very verbose, loading CI log is slow. +Solution: Redirect output to /dev/null. (Ken Takata, closes #3456) +Files: src/testdir/Makefile + +Patch 8.1.0425 +Problem: ml_get error and crash with appendbufline(). (Masashi Iizuka) +Solution: Set per-window buffer info. (Hirohito Higashi, closes #3455) +Files: src/buffer.c, src/testdir/test_bufline.vim + +Patch 8.1.0426 +Problem: Accessing invalid memory in SmcOpenConnection(). +Solution: Reduce size of errorstring by one. (Dominique Pelle, closes #3469) +Files: src/os_unix.c, src/testdir/test_startup.vim + +Patch 8.1.0427 +Problem: MS-Windows GUI: using invalid encoded file name. +Solution: Drop the file name and return NULL. (Ken Takata, closes #3467) +Files: src/gui_w32.c + +Patch 8.1.0428 +Problem: The :suspend command is not tested. +Solution: Add a test. (Dominique Pelle, closes #3472) +Files: src/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_suspend.vim + +Patch 8.1.0429 (after 8.1.0343) +Problem: No test for :lcd with 'shellslash'. +Solution: Add a test. (Daniel Hahler, closes #3475) +Files: src/testdir/test_getcwd.vim + +Patch 8.1.0430 +Problem: Xargadd file left behind after running test. +Solution: Delete the file. (Dominique Pelle) +Files: src/testdir/test_arglist.vim + +Patch 8.1.0431 +Problem: The qf_jump() function is too long. +Solution: Refactor to split it into several functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0432 +Problem: Compiler warning for signed/unsigned. +Solution: Add type cast. (Mike Williams) +Files: src/xdiff/xemit.c + +Patch 8.1.0433 +Problem: Mapping can obtain text from inputsecret(). (Tommy Allen) +Solution: Disallow CTRL-R = and CTRL-\ e when using inputsecret(). +Files: src/ex_getln.c + +Patch 8.1.0434 +Problem: copy_loclist() is too long. +Solution: Split in multiple functions. (Yegappan Lakshmanan) +Files: src/proto/quickfix.pro, src/quickfix.c, src/window.c + +Patch 8.1.0435 +Problem: Cursorline highlight not removed in some situation. (Vitaly + Yashin) +Solution: Reset last_cursorline when resetting 'cursorline'. (Christian + Brabandt, closes #3481) +Files: src/move.c, src/proto/move.pro, src/option.c + +Patch 8.1.0436 +Problem: Can get the text of inputsecret() with getcmdline(). (Tommy Allen) +Solution: Don't return the text. +Files: src/ex_getln.c + +Patch 8.1.0437 +Problem: May access freed memory when syntax HL times out. (Philipp Gesang) +Solution: Clear b_sst_first when clearing b_sst_array. +Files: src/syntax.c + +Patch 8.1.0438 +Problem: The ex_make() function is too long. +Solution: Split it into several functions. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0439 +Problem: Recursive use of getcmdline() still not protected. +Solution: Instead of saving the command buffer when making a call which may + cause recursiveness, save the buffer when actually being called + recursively. +Files: src/ex_getln.c, src/proto/ex_getln.pro, src/getchar.c, src/main.c + +Patch 8.1.0440 +Problem: remove() with a range not sufficiently tested. +Solution: Add a test. (Dominique Pelle, closes #3497) +Files: src/testdir/test_listdict.vim + +Patch 8.1.0441 +Problem: Build failure without command line history. +Solution: Move cmdline_init() outside of #ifdef. +Files: src/ex_getln.c + +Patch 8.1.0442 +Problem: GUI: Cursor not drawn after ":redraw | sleep". +Solution: Flush the output. (closes #3496) +Files: src/ex_docmd.c + +Patch 8.1.0443 +Problem: Unnecessary static function prototypes. +Solution: Remove unnecessary prototypes. +Files: src/arabic.c, src/blowfish.c, src/buffer.c, src/charset.c, + src/crypt_zip.c, src/digraph.c, src/edit.c, src/eval.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_eval.c, src/ex_getln.c, src/fileio.c, src/getchar.c, + src/gui.c, src/gui_at_fs.c, src/gui_athena.c, src/gui_gtk_x11.c, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w32.c, + src/gui_x11.c, src/hangulin.c, src/hardcopy.c, src/if_cscope.c, + src/if_mzsch.c, src/if_python3.c, src/if_xcmdsrv.c, + src/integration.c, src/json.c, src/main.c, src/mbyte.c, + src/memline.c, src/message.c, src/misc1.c, src/misc2.c, + src/move.c, src/netbeans.c, src/normal.c, src/ops.c, src/option.c, + src/os_unix.c, src/os_win32.c, src/pty.c, src/regexp.c, + src/screen.c, src/search.c, src/sha256.c, src/spell.c, + src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, src/ui.c, + src/undo.c, src/version.c, src/window.c, src/workshop.c + +Patch 8.1.0444 +Problem: Unnecessary check for NULL pointer. +Solution: Remove check and call vim_free() directly. +Files: src/beval.c + +Patch 8.1.0445 +Problem: Setting 'term' does not store location for termcap options. +Solution: Set the script context for termcap options that are changed when + 'term' is set. +Files: src/option.c, src/proto/option.pro, src/term.c, + src/testdir/test_options.vim + +Patch 8.1.0446 +Problem: Options test fails in the GUI. +Solution: Don't try changing 'term' in the GUI. +Files: src/testdir/test_options.vim + +Patch 8.1.0447 +Problem: GUI scrollbar test fails with Athena and Motif. +Solution: When not using on-the-fly scrolling call normal_cmd(). +Files: src/evalfunc.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 8.1.0448 +Problem: Cursorline not removed when using 'cursorbind'. (Justin Keyes) +Solution: Store the last cursor line per window. (closes #3488) +Files: src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_with_cursorline_01.dump, + src/testdir/dumps/Test_diff_with_cursorline_02.dump, + src/testdir/dumps/Test_diff_with_cursorline_03.dump, + src/structs.h, src/move.c + +Patch 8.1.0449 +Problem: When 'rnu' is set folded lines are not displayed correctly. + (Vitaly Yashin) +Solution: When only redrawing line numbers do draw folded lines. + (closes #3484) +Files: src/screen.c, src/testdir/test_fold.vim, + src/testdir/dumps/Test_folds_with_rnu_01.dump, + src/testdir/dumps/Test_folds_with_rnu_02.dump + +Patch 8.1.0450 (after patch 8.1.0449) +Problem: Build failure without the +fold feature. +Solution: Add #ifdef. +Files: src/screen.c + +Patch 8.1.0451 +Problem: Win32 console: keypad keys don't work. +Solution: Use numbers instead of characters to avoid the value becoming + negative. (Mike Williams) +Files: src/os_win32.c + +Patch 8.1.0452 +Problem: MS-Windows: not finding intl.dll. +Solution: Also find intl.dll next to libintl.dll. (Ken Takata) +Files: src/os_win32.c, runtime/doc/mlang.txt + +Patch 8.1.0453 +Problem: MS-Windows: executable() is not reliable. +Solution: Use $PATHEXT properly. (Yasuhiro Matsumoto, closes #3512) +Files: src/os_win32.c, src/testdir/test_functions.vim + +Patch 8.1.0454 +Problem: resolve() was not tested with a symlink cycle. +Solution: Add a test. (Dominique Pelle, closes #3513) +Files: src/testdir/test_functions.vim + +Patch 8.1.0455 +Problem: Checking for empty quickfix stack is not consistent. +Solution: Use qf_stack_empty(). (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0456 +Problem: Running test hangs when the input file is being edited. +Solution: Use a SwapExists autocommand to ignore editing the test script. +Files: src/testdir/Makefile, src/testdir/runtest.vim + +Patch 8.1.0457 (after 8.1.0451) +Problem: Win32 console: key mappings don't work. +Solution: Use another solution for the keypad keys that doesn't break + mappings. Some values will be negative. (Mike Williams) +Files: src/os_win32.c + +Patch 8.1.0458 +Problem: Ml_get error and crash when using "do". +Solution: Adjust cursor position also when diffupdate is not needed. + (Hirohito Higashi) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.1.0459 +Problem: Test_executable fails when there is a dog in the system. +Solution: Rename the dog. (Hirohito Higashi) +Files: src/testdir/test_functions.vim + +Patch 8.1.0460 +Problem: assert_fails() does not take a message argument +Solution: Add the argument. +Files: src/evalfunc.c, src/eval.c, src/testdir/test_assert.vim + +Patch 8.1.0461 +Problem: Quickfix code uses too many /* */ comments. +Solution: Change to // comments. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0462 +Problem: When using ConPTY Vim can be a child process. +Solution: To find a Vim window use both EnumWindows() and + EnumChildWindows(). (Nobuhiro Takasaki, closes #3521) +Files: src/os_mswin.c + +Patch 8.1.0463 +Problem: "simalt ~x" in .vimrc blocks swap file prompt. +Solution: Flush buffers before prompting. (Yasuhiro Matsumoto, + closes #3518, closes #2192) +Files: src/memline.c + +Patch 8.1.0464 +Problem: MS-Windows: job_info() has cmd without backslashes. (Daniel + Hahler) +Solution: Use rem_backslash(). (closes #3517, closes #3404) Add a test. + (Yasuhiro Matsumoto) +Files: src/misc2.c, src/testdir/test_channel.vim + +Patch 8.1.0465 (after 8.1.0452) +Problem: Client-server test fails. +Solution: Change logic in EnumWindows(). +Files: src/os_mswin.c + +Patch 8.1.0466 (after 8.1.0463) +Problem: Autocmd test fails. +Solution: Do call inchar() when flushing typeahead. +Files: src/vim.h, src/getchar.c, src/proto/getchar.pro, src/memline.c, + src/message.c, src/misc1.c + +Patch 8.1.0467 (after 8.1.0063) +Problem: Cannot build with Mac OS X 10.5. +Solution: Change #ifdef into #if. (Akshay Hegde, closes #3022) +Files: src/os_macosx.m + +Patch 8.1.0468 +Problem: MS-Windows: Filter command with pipe character fails. (Johannes + Riecken) +Solution: Find the pipe character outside of quotes. (Yasuhiro Matsumoto, + closes #1743, closes #3523) +Files: src/ex_cmds.c, src/testdir/test_filter_cmd.vim + +Patch 8.1.0469 +Problem: Too often indexing in qf_lists[]. +Solution: Use a qf_list_T pointer. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0470 +Problem: Pointer ownership around fname_expand() is unclear. +Solution: Allow b_ffname and b_sfname to point to the same allocated memory, + only free one. Update comments. +Files: src/buffer.c, src/structs.h, src/fileio.c, src/ex_cmds.c + +Patch 8.1.0471 +Problem: Some tests are flaky or fail on some systems. +Solution: Increase waiting time for port number. Use "cmd /c" to execute + "echo" on win32. (Ken Takata, closes #3534) +Files: src/testdir/shared.vim, src/testdir/test_channel.vim + +Patch 8.1.0472 +Problem: Dosinst command has a few flaws. +Solution: Register DisplayIcon, DisplayVersion and Publisher for the + uninstaller. (closes #3485) Don't set 'diffexpr' if internal diff + is supported. Allow for using Vi compatible from the command line. + Remove needless sleeps. Add comments in the generated _vimrc. + (Ken Takata, closes #3525) +Files: src/dosinst.c + +Patch 8.1.0473 +Problem: User doesn't notice file does not exist when swap file does. +Solution: Add a note that the file cannot be found. Make the "still + running" notice stand out. +Files: src/memline.c + +Patch 8.1.0474 +Problem: Directory where if_perl.c is written is inconsistent. +Solution: use auto/if_perl.c for MS-Windows. (Ken Takata, closes #3540) +Files: src/Make_bc5.mak, src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.0475 +Problem: Memory not freed on exit when quit in autocmd. +Solution: Remember funccal stack when executing autocmd. +Files: src/structs.h, src/userfunc.c, src/proto/userfunc.pro, + src/fileio.c, src/eval.c, src/ex_cmds2.c, src/main.c + +Patch 8.1.0476 +Problem: Memory leaks in test_escaped_glob. +Solution: Avoid failure when running the shell, use the sandbox. +Files: src/testdir/test_escaped_glob.vim + +Patch 8.1.0477 (after 8.1.0475) +Problem: Tiny build fails. +Solution: Add a dummy declaration for funccal_entry_T. +Files: src/structs.h + +Patch 8.1.0478 +Problem: Cannot build with perl using MinGW. +Solution: Add -I. (Ken Takata, Cesar Romani) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0479 +Problem: Failure when setting 'varsofttabstop' to end in a comma. (Ralf + Schandl) +Solution: Reject value with trailing comma. Add test for invalid values + (closes #3544) +Files: src/testdir/test_vartabs.vim, src/option.c + +Patch 8.1.0480 +Problem: MinGW build file uses different -I flags than MVC. +Solution: Add -I to $CFLAGS. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0481 +Problem: When "Terminal" highlight is reverted cursor doesn't show. +Solution: Get the colors of the "Terminal" group. (closes #3546) +Files: src/terminal.c + +Patch 8.1.0482 +Problem: MinGW "make clean" deletes all .exe files. +Solution: Only delete .exe files that it builds. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0483 +Problem: MinGW does not build tee.exe. +Solution: Add build instructions. (Yasuhiro Matsumoto, closes #3548) +Files: src/Make_cyg_ming.mak, src/tee/Makefile + +Patch 8.1.0484 +Problem: Some file types are not recognized. +Solution: Update the file type detection. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.0485 +Problem: term_start() does not check if directory is accessible. +Solution: Add mch_access() call. (Jason Franklin) +Files: src/channel.c, src/testdir/test_terminal.vim + +Patch 8.1.0486 (after 8.1.0485) +Problem: Can't build in MS-Windows. +Solution: Put mch_access() call inside #ifdef +Files: src/channel.c + +Patch 8.1.0487 +Problem: No menus specifically for the terminal window. +Solution: Add :tlmenu. (Yee Cheng Chin, closes #3439) Add a menu test. +Files: runtime/delmenu.vim, runtime/doc/autocmd.txt, runtime/doc/gui.txt, + runtime/doc/index.txt, runtime/doc/terminal.txt, + runtime/doc/usr_42.txt, runtime/menu.vim, src/ex_cmdidxs.h, + src/ex_cmds.h, src/ex_docmd.c, src/menu.c, src/proto/menu.pro, + src/popupmnu.c, src/structs.h, src/testdir/test_menu.vim + +Patch 8.1.0488 +Problem: Using freed memory in quickfix code. (Dominique Pelle) +Solution: Add the quickfix_busy() flag to postpone deleting quickfix lists + until it is safe. (Yegappan Lakshmanan, closes #3538) +Files: src/quickfix.c, src/proto/quickfix.pro, src/misc2.c, + src/testdir/test_quickfix.vim + +Patch 8.1.0489 +Problem: Crash when autocmd clears vimpgrep location list. +Solution: Return from qf_jump_edit_buffer() early. (Yegappan Lakshmanan) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0490 +Problem: MS-Windows: doesn't handle missing libwinpthread-1.dll. +Solution: Adjust Cygwin/MinGW build file. (Ken Takata, closes #2827) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0491 +Problem: If a terminal dump has CR it is considered corrupt. +Solution: Ignore CR characters. (Nobuhiro Takasaki, closes #3558) +Files: src/terminal.c + +Patch 8.1.0492 +Problem: "Edit with existing Vim" list can get long. +Solution: Move the list to a submenu. (Ken Takata, closes #3561) +Files: src/GvimExt/gvimext.cpp + +Patch 8.1.0493 +Problem: argv() and argc() only work on the current argument list. +Solution: Add a window ID argument. (Yegappan Lakshmanan, closes #832) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_arglist.vim, + src/eval.c, src/proto/eval.pro + +Patch 8.1.0494 +Problem: Functions do not check for a window ID in other tabs. +Solution: Also find the window ID in other than the current tab. +Files: src/evalfunc.c + +Patch 8.1.0495 +Problem: :filter only supports some commands. +Solution: Add :filter support for more commands. (Marcin Szamotulski, + closes #2856) +Files: runtime/doc/various.txt, src/eval.c, src/mark.c, src/option.c, + src/syntax.c, src/testdir/test_filter_cmd.vim, src/userfunc.c + +Patch 8.1.0496 +Problem: No tests for indent files. +Solution: Add a mechanism for running indent file tests. Add a first test + for Vim indenting. +Files: runtime/indent/Makefile, runtime/indent/testdir/runtest.vim, + runtime/indent/testdir/cleantest.vim, runtime/indent/README.txt, + runtime/indent/testdir/README.txt, runtime/indent/testdir/vim.in, + runtime/indent/testdir/vim.ok, Filelist + +Patch 8.1.0497 +Problem: :%diffput changes order of lines. (Markus Braun) +Solution: Do adjust marks when using internal diff. +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.1.0498 +Problem: /etc/gitconfig not recognized at a gitconfig file. +Solution: Add pattern to filetype detection. (closes #3568) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.0499 +Problem: :2vimgrep causes an ml_get error +Solution: Pass tomatch pointer instead of value. (Yegappan Lakshmanan) +Files: src/ex_getln.c, src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0500 +Problem: Cleaning up in src/tee may not always work. +Solution: Use "rm" when appropriate. (Michael Soyka, closes #3571) +Files: src/tee/Makefile + +Patch 8.1.0501 +Problem: Cppcheck warns for using array index before bounds check. +Solution: Swap the conditions. (Dominique Pelle) +Files: src/memline.c + +Patch 8.1.0502 +Problem: Internal diff fails when diffing a context diff. (Hirohito Higashi) +Solution: Only use callback calls with one line. (closes #3581) +Files: src/diff.c, src/testdir/dumps/test_diff_of_diff_01.dump + +Patch 8.1.0503 +Problem: Missing change to diff test. (Hirohito Higashi) +Solution: Add the missing test function. +Files: src/testdir/test_diffmode.vim + +Patch 8.1.0504 +Problem: When CTRL-C is mapped it triggers InsertLeave. +Solution: Make CTRL-C behave the same way when typed or used in a mapping. +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.1.0505 +Problem: Filter command test may fail if helplang is not set. +Solution: Set 'helplang' for the test. (James McCoy, closes #3591) +Files: src/testdir/test_filter_cmd.vim + +Patch 8.1.0506 +Problem: Modeline test fails when run by root. +Solution: Set 'modeline' for the test. (James McCoy, closes #3592) +Files: src/testdir/test_modeline.vim + +Patch 8.1.0507 +Problem: .raml files not properly detected. +Solution: Recognize .raml as raml instead of yaml. (closes #3594) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.0508 +Problem: Suspend test fails when run by root. +Solution: Accept both '$' and '#' for the prompt. (James McCoy, closes #3590) +Files: src/testdir/test_suspend.vim + +Patch 8.1.0509 +Problem: Checking cwd not accessible fails for root. (James McCoy) +Solution: Skip this part of the test for root. (closes #3595) +Files: src/testdir/test_terminal.vim + +Patch 8.1.0510 +Problem: Filter test fails when $LANG is C.UTF-8. +Solution: Set 'helplang' to "en" for any C language. (Christian Brabandt, + closes #3577) +Files: src/option.c + +Patch 8.1.0511 +Problem: ml_get error when calling a function with a range. +Solution: Don't position the cursor after the last line. +Files: src/userfunc.c, src/testdir/test_functions.vim + +Patch 8.1.0512 +Problem: 'helplang' default is inconsistent for C and C.UTF-8. +Solution: Don't accept a value unless it starts with two letters. +Files: src/ex_cmds2.c + +Patch 8.1.0513 +Problem: No error for set diffopt+=algorithm:. +Solution: Check for missing argument. (Hirohito Higashi, closes #3598) +Files: src/diff.c, src/testdir/gen_opt_test.vim + +Patch 8.1.0514 +Problem: CTRL-W ^ does not work when alternate buffer has no name. +Solution: Use another method to split and edit the alternate buffer. (Jason + Franklin) +Files: src/testdir/test_normal.vim, src/testdir/test_window_cmd.vim, + src/normal.c, src/window.c, runtime/doc/windows.txt + +Patch 8.1.0515 +Problem: Reloading a script gives errors for existing functions. +Solution: Allow redefining a function once when reloading a script. +Files: src/testdir/test_functions.vim, src/userfunc.c, src/structs.h, + src/globals.h, src/buffer.c, src/ex_cmds2.c, src/main.c, + src/option.c, runtime/doc/eval.txt + +Patch 8.1.0516 +Problem: :move command marks buffer modified when nothing changed. +Solution: Do not set 'modified'. Add a test. (Jason Franklin) +Files: src/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_move.vim, src/ex_cmds.c + +Patch 8.1.0517 +Problem: Test_window_split_edit_alternate() fails on AppVeyor. +Solution: Disable the failing part for now. +Files: src/testdir/test_window_cmd.vim + +Patch 8.1.0518 +Problem: Test_window_split_edit_bufnr() fails on AppVeyor. +Solution: Disable the failing part for now. +Files: src/testdir/test_window_cmd.vim + +Patch 8.1.0519 +Problem: Cannot save and restore the tag stack. +Solution: Add gettagstack() and settagstack(). (Yegappan Lakshmanan, + closes #3604) +Files: runtime/doc/eval.txt, runtime/doc/tagsrch.txt, + runtime/doc/usr_41.txt, src/alloc.h, src/dict.c, src/evalfunc.c, + src/list.c, src/misc2.c, src/proto/dict.pro, src/proto/list.pro, + src/proto/misc2.pro, src/proto/tag.pro, src/tag.c, + src/testdir/test_tagjump.vim + +Patch 8.1.0520 +Problem: Screen diff test sometimes fails. +Solution: Add to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0521 +Problem: Cannot build with +eval but without +quickfix. +Solution: Remove #ifdef for e_stringreq. (John Marriott) +Files: src/evalfunc.c + +Patch 8.1.0522 +Problem: :terminal does not show trailing empty lines. +Solution: Add empty lines. (Hirohito Higashi, closes #3605) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0523 +Problem: Opening window from quickfix leaves empty buffer behind. +Solution: Add qf_jump_newwin(). (Yegappan Lakshmanan, closes #2574) +Files: src/proto/quickfix.pro, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.1.0524 (after 8.1.0522) +Problem: Terminal test fails on Windows. +Solution: Skip Test_terminal_does_not_truncate_last_newlines() for now. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0525 (after 8.1.0524) +Problem: Terminal test skips part on Windows. +Solution: Fix Test_terminal_does_not_truncate_last_newlines(). (Hirohito + Higashi, closes #3606) +Files: src/Make_mvc.mak, src/testdir/test_terminal.vim + +Patch 8.1.0526 +Problem: Running out of signal stack in RealWaitForChar. (Vladimir Marek) +Solution: Make the fd_set variables static. +Files: src/os_unix.c + +Patch 8.1.0527 +Problem: Using 'shiftwidth' from wrong buffer for folding. +Solution: Use "buf" instead of "curbuf". (Christian Brabandt) +Files: src/fold.c + +Patch 8.1.0528 +Problem: Various typos in comments. +Solution: Fix the typos. +Files: src/fileio.c, src/gui.c, src/macros.h, src/screen.c, src/search.c, + src/spell.c, src/spellfile.c, src/vim.h, src/testdir/README.txt, + src/INSTALL, src/gui_athena.c, src/gui_gtk.c, src/gui_gtk_x11.c, + src/gui_motif.c, src/gui_xmebw.c, src/if_tcl.c, src/os_amiga.c, + src/gui_w32.c, src/os_win32.c, src/gui_mac.c, src/os_vms_fix.com + +Patch 8.1.0529 +Problem: Flaky test sometimes fails in different ways. +Solution: When the second run gives a different error, try running the test + again, up to five times. +Files: src/testdir/runtest.vim + +Patch 8.1.0530 +Problem: Channel and terminal tests that start a server can be flaky. +Solution: Add all channel and terminal tests that start a server to the list + of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0531 +Problem: Flaky tests often fail with a common error message. +Solution: Add a pattern to match an error message indicating a flaky test. +Files: src/testdir/runtest.vim + +Patch 8.1.0532 +Problem: Cannot distinguish between quickfix and location list. +Solution: Add an explicit type variable. (Yegappan Lakshmanan) +Files: src/quickfix.c + +Patch 8.1.0533 +Problem: Screendump tests can be flaky. +Solution: Add VerifyScreenDump to the pattern of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0534 +Problem: MS-Windows installer uses different $HOME than Vim. +Solution: Use the Vim logic also in the MS-Windows installer. (Ken Takata, + closes #3564) +Files: src/dosinst.c, src/misc1.c + +Patch 8.1.0535 +Problem: Increment/decrement might get interrupted by updating folds. +Solution: Disable fold updating for a moment. (Christian Brabandt, + closes #3599) +Files: src/ops.c + +Patch 8.1.0536 +Problem: File time test fails when using NFS. +Solution: Use three file times instead of localtim(). (James McCoy, + closes #3618) +Files: src/testdir/test_stat.vim + +Patch 8.1.0537 +Problem: ui_breakcheck() may be called recursively, which doesn't work. +Solution: When called recursively, just return. (James McCoy, closes #3617) +Files: src/ui.c + +Patch 8.1.0538 +Problem: Evaluating a modeline might invoke using a shell command. (Paul + Huber) +Solution: Set the sandbox flag when setting options from a modeline. +Files: src/buffer.c + +Patch 8.1.0539 +Problem: Cannot build without the sandbox. +Solution: Set the secure option instead of using the sandbox. Also restrict + the characters from 'spelllang' that are used for LANG.vim. + (suggested by Yasuhiro Matsumoto) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c + +Patch 8.1.0540 +Problem: May evaluate insecure value when appending to option. +Solution: Set the secure flag when changing an option that was previously + set insecurely. Also allow numbers for the characters from + 'spelllang' that are used for LANG.vim. (closes #3623) +Files: src/option.c + +Patch 8.1.0541 +Problem: Help message in dosinst.c is outdated. +Solution: Update the comment. (Ken Takata, closes #3626) +Files: src/dosinst.c + +Patch 8.1.0542 +Problem: shiftwidth() does not take 'vartabstop' into account. +Solution: Use the cursor position or a position explicitly passed. + Also make >> and << work better with 'vartabstop'. (Christian + Brabandt) +Files: runtime/doc/change.txt, runtime/doc/eval.txt, src/edit.c, + src/evalfunc.c, src/normal.c, src/ops.c, src/option.c, + src/proto/edit.pro, src/proto/option.pro, + src/testdir/test_vartabs.vim + +Patch 8.1.0543 +Problem: Coverity warns for leaking memory and using wrong struct. +Solution: Free pointer when allocation fails. Change "boff" to "loff". + (closes #3634) +Files: src/ex_getln.c, src/move.c + +Patch 8.1.0544 (after 8.1.0540) +Problem: Setting 'filetype' in a modeline causes an error (Hirohito + Higashi). +Solution: Don't add the P_INSECURE flag when setting 'filetype' from a + modeline. Also for 'syntax'. +Files: src/option.c, src/testdir/test_modeline.vim + +Patch 8.1.0545 +Problem: When executing indent tests user preferences interfere. +Solution: Add "--clean". +Files: runtime/indent/Makefile, runtime/indent/testdir/runtest.vim + +Patch 8.1.0546 +Problem: Modeline test with keymap fails. +Solution: Check that the keymap feature is available. +Files: src/testdir/test_modeline.vim + +Patch 8.1.0547 +Problem: Modeline test with keymap still fails. +Solution: Check that the keymap feature is available for the failure assert. +Files: src/testdir/test_modeline.vim + +Patch 8.1.0548 +Problem: Crash when job callback unloads a buffer. (James McCoy) +Solution: Don't round up the wait time to 10 msec in ui_inchar(). +Files: src/ui.c + +Patch 8.1.0549 +Problem: Netbeans test depends on README.txt contents. +Solution: Use a generated file instead. +Files: src/testdir/test_netbeans.vim, src/testdir/test_netbeans.py + +Patch 8.1.0550 +Problem: Expression evaluation may repeat an error message. (Jason + Franklin) +Solution: Increment did_emsg and check for the value when giving an error + for the echo command. +Files: src/message.c, src/eval.c, src/testdir/test108.ok + +Patch 8.1.0551 (after 8.1.0550) +Problem: Expression evaluation may repeat an error message. (Jason + Franklin) +Solution: Check for the value of did_emsg when giving an error + for the :execute command. +Files: src/eval.c + +Patch 8.1.0552 +Problem: Saved last search pattern may not be restored. +Solution: Call restore_last_search_pattern(). Add a check for balancing + saving and restoring the last search pattern. +Files: src/ex_getln.c, src/search.c + +Patch 8.1.0553 +Problem: It is not easy to edit a script that was sourced. +Solution: Add a count to ":scriptnames", so that ":script 40" edits the + script with script ID 40. +Files: src/ex_cmds.h, src/ex_cmds2.c, src/testdir/test_scriptnames.vim, + src/Make_all.mak, src/testdir/Make_all.mak, runtime/doc/repeat.txt + +Patch 8.1.0554 +Problem: Popup menu overlaps with preview window. +Solution: Adjust the height computation. (Hirohito Higashi, closes #3414) +Files: src/popupmnu.c, src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_and_previewwindow_01.dump + +Patch 8.1.0555 +Problem: Crash when last search pat is set but not last substitute pat. +Solution: Do not mix up last search pattern and last substitute pattern. + (closes #3647) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.1.0556 +Problem: Saving/restoring search patterns share saved last_idx. +Solution: Use a separate saved last_idx for saving search patterns for + functions and incremental search. +Files: src/search.c + +Patch 8.1.0557 +Problem: Termdebug: gdb may use X.Y for breakpoint number. (Ryou Ezoe) +Solution: Handle X.Y breakpoint numbers. (Yasuhiro Matsumoto, close #3641) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0558 +Problem: Some MS-Windows instructions are outdated. +Solution: Update the uninstall instructions and the NSIS README. (Ken + Takata, closes #3614) Also update remark about diff.exe. +Files: nsis/README.txt, uninstal.txt + +Patch 8.1.0559 +Problem: Command line completion not sufficiently tested. +Solution: Add more tests. (Dominique Pelle, closes #3622) +Files: src/testdir/test_arglist.vim, src/testdir/test_filetype.vim, + src/testdir/test_history.vim, src/testdir/test_messages.vim, + src/testdir/test_syntax.vim + +Patch 8.1.0560 +Problem: Cannot use address type "other" with user command. +Solution: Add "other" to the list. (Daniel Hahler, closes #3655) Also + reject "%" for commands with "other". Add some more tests. +Files: src/ex_docmd.c, src/testdir/test_usercommands.vim + +Patch 8.1.0561 +Problem: MSVC error format has changed. +Solution: Make the space between the line number and colon optional. +Files: src/option.h + +Patch 8.1.0562 +Problem: Parsing of 'diffopt' is slightly wrong. +Solution: Fix the parsing and add a test. (Jason Franklin, Christian + Brabandt) +Files: src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_09.dump, + src/testdir/dumps/Test_diff_11.dump, src/testdir/screendump.vim + +Patch 8.1.0563 +Problem: Setting v:errors to a string give confusing error. (Christian + Brabandt) +Solution: Change internal error into normal error message. +Files: src/eval.c + +Patch 8.1.0564 +Problem: Setting v:errors to wrong type still possible. +Solution: Return after giving an error message. (Christian Brabandt) +Files: src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.0565 +Problem: Asan complains about reading before allocated block. +Solution: Workaround: Avoid offset from becoming negative. +Files: src/gui.c + +Patch 8.1.0566 +Problem: SGR not enabled for mintty because $TERM is "xterm". +Solution: Detect mintty by the termresponse. (Ken Takata, closes #3667) +Files: src/term.c + +Patch 8.1.0567 (after 8.1.0565) +Problem: Error for NUL byte in ScreenLines goes unnoticed. +Solution: Add an internal error message. +Files: src/gui.c + +Patch 8.1.0568 (after 8.1.0567) +Problem: Error message for NUL byte in ScreenLines breaks Travis CI. +Solution: Use a normal message fornow. +Files: src/gui.c + +Patch 8.1.0569 +Problem: Execute() always resets display column to zero. (Sha Liu) +Solution: Don't reset it to zero, restore the previous value. (closes #3669) +Files: src/evalfunc.c, src/testdir/test_execute_func.vim + +Patch 8.1.0570 +Problem: 'commentstring' not used when adding fold marker. (Maxim Kim) +Solution: Only use empty 'comments' middle when leader is empty. (Christian + Brabandt, closes #3670) +Files: src/misc1.c, src/testdir/test_fold.vim + +Patch 8.1.0571 (after 8.1.0569) +Problem: Non-silent execute() resets display column to zero. +Solution: Keep the display column as-is. +Files: src/evalfunc.c, src/testdir/test_execute_func.vim + +Patch 8.1.0572 +Problem: Stopping a job does not work properly on OpenBSD. +Solution: Do not use getpgid() to check the process group of the job + process ID, always pass the negative process ID to kill(). + (George Koehler, closes #3656) +Files: src/os_unix.c + +Patch 8.1.0573 +Problem: Cannot redefine user command without ! in same script +Solution: Allow redefining user command without ! in same script, like with + functions. +Files: src/ex_docmd.c, src/testdir/test_usercommands.vim, + runtime/doc/map.txt + +Patch 8.1.0574 +Problem: 'commentstring' not used when adding fold marker in C. +Solution: Require white space before middle comment part. (mostly by + Hirohito Higashi) +Files: src/misc1.c, src/testdir/test_fold.vim + +Patch 8.1.0575 +Problem: Termdebug: clearing multi-breakpoint does not work. +Solution: Delete all X.Y breakpoints. Keep more information about placed + breakpoints. (Ozaki Kiichi, closes #3641) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0576 +Problem: Indent script tests pick up installed scripts. +Solution: Use current runtime indent scripts. +Files: runtime/indent/Makefile + +Patch 8.1.0577 +Problem: Tabpage right-click menu never shows "Close tab". +Solution: Always create the "Close tab" item but ignore the event if there + is only one tab. +Files: src/gui_gtk_x11.c, src/gui_mac.c, src/gui_motif.c, src/gui.c + +Patch 8.1.0578 +Problem: Cannot disable arabic, rightleft and farsi in configure. +Solution: Add configure flags. (Diego Fernando Carri贸n, closes #1867) +Files: src/configure.ac, src/auto/configure, src/config.h.in, + src/feature.h, src/Makefile + +Patch 8.1.0579 +Problem: Cannot attach properties to text. +Solution: First part of adding text properties. +Files: Filelist, runtime/doc/Makefile, runtime/doc/eval.txt, + runtime/doc/textprop.txt, src/Make_all.mak, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/Makefile, src/buffer.c, src/edit.c, + src/evalfunc.c, src/feature.h, src/memline.c, src/misc1.c, + src/misc2.c, src/proto.h, src/proto/memline.pro, + src/proto/textprop.pro, src/screen.c, src/structs.h, + src/testdir/Make_all.mak, src/testdir/test_textprop.vim, + src/textprop.c, src/userfunc.c, src/version.c + +Patch 8.1.0580 +Problem: Invalid memory access when using text properties. +Solution: Disable text properties for now. +Files: src/feature.h + +Patch 8.1.0581 +Problem: Double free without the text properties feature. +Solution: Reset the dirty flag. +Files: src/memline.c + +Patch 8.1.0582 +Problem: Text properties are not enabled. +Solution: Fix sizeof argument and re-enable the text properties feature. + Fix memory leak. +Files: src/feature.h, src/textprop.c + +Patch 8.1.0583 +Problem: Using illogical name for get_dict_number()/get_dict_string(). +Solution: Rename to start with dict_. +Files: src/dict.c, src/proto/dict.pro, src/edit.c, src/eval.c, + src/evalfunc.c, src/quickfix.c, src/tag.c, src/terminal.c, + src/textprop.c + +Patch 8.1.0584 +Problem: With search CTRL-L does not pick up composing characters. +Solution: Check for composing characters. (Christian Brabandt, closes #3682) + [code change was accidentally included in 8.1.0579] +Files: src/testdir/test_search.vim + +Patch 8.1.0585 +Problem: Undo test may fail on MS-Windows. +Solution: Also handle lower case drive letters. +Files: src/testdir/test_undo.vim + +Patch 8.1.0586 +Problem: :digraph output is not easy to read. +Solution: Add highlighting for :digraphs. (Marcin Szamotulski, closes #3572) + Also add section headers for :digraphs!. +Files: src/ex_docmd.c, src/digraph.c, src/proto/digraph.pro, + src/ex_cmds.h, runtime/doc/digraph.txt + +Patch 8.1.0587 +Problem: GvimExt: realloc() failing is not handled properly. +Solution: Check for NULL return. (Jan-Jaap Korpershoek, closes #3689) +Files: src/GvimExt/gvimext.cpp + +Patch 8.1.0588 +Problem: Cannot define a sign with space in the text. +Solution: Allow for escaping characters. (Ben Jackson, closes #2967) +Files: src/ex_cmds.c, src/testdir/test_signs.vim + +Patch 8.1.0589 +Problem: Compilation error in gvimext.cpp. +Solution: Return a value. Also fix using uninitialized variable. +Files: src/GvimExt/gvimext.cpp, src/dosinst.c + +Patch 8.1.0590 +Problem: When a job ends the closed channels are not handled. +Solution: When a job is detected to have ended, check the channels again. + (closes #3530) +Files: src/channel.c, src/proto/channel.pro, src/misc2.c + +Patch 8.1.0591 +Problem: Channel sort test is flaky. +Solution: Do not check if the job is running, it may have be done very fast. +Files: src/testdir/test_channel.vim + +Patch 8.1.0592 +Problem: The libvterm tests are not run as part of Vim tests. +Solution: Add testing libvterm. +Files: src/Makefile, src/libvterm/Makefile + +Patch 8.1.0593 +Problem: Illegal memory access in libvterm test. +Solution: Fix off-by-one error. +Files: src/libvterm/src/vterm.c, src/libvterm/Makefile, + src/libvterm/t/run-test.pl + +Patch 8.1.0594 +Problem: Libvterm tests fail to run on Mac. +Solution: Only run libvterm tests on Linux. +Files: src/Makefile + +Patch 8.1.0595 +Problem: Libvterm tests are not run with coverage. +Solution: Adjust the Travis config. Show the actually run commands. +Files: .travis.yml, src/libvterm/Makefile + +Patch 8.1.0596 +Problem: Not all parts of printf() are tested. +Solution: Add a few more test cases. (Dominique Pelle, closes #3691) +Files: src/testdir/test_expr.vim + +Patch 8.1.0597 +Problem: Cannot run test_libvterm from the top directory. +Solution: Add test target in toplevel Makefile. +Files: Makefile + +Patch 8.1.0598 +Problem: Indent tests may use the wrong Vim binary. +Solution: Pass in the just built Vim binary. +Files: Makefile + +Patch 8.1.0599 +Problem: Without the +eval feature the indent tests don't work. +Solution: Skip the body of the tests. +Files: runtime/indent/testdir/cleantest.vim, + runtime/indent/testdir/runtest.vim + +Patch 8.1.0600 +Problem: Channel test is flaky. +Solution: Add test to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0601 +Problem: A few compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/GvimExt/gvimext.cpp, src/memline.c, src/textprop.c + +Patch 8.1.0602 +Problem: DirChanged is also triggered when the directory didn't change. + (Daniel Hahler) +Solution: Compare the current with the new directory. (closes #3697) +Files: src/ex_docmd.c, src/testdir/test_autocmd.vim, src/misc2.c, + src/testdir/test_autochdir.vim + +Patch 8.1.0603 +Problem: The :stop command is not tested. +Solution: Test :stop using a terminal window. +Files: src/testdir/test_terminal.vim, src/testdir/shared.vim + +Patch 8.1.0604 +Problem: Autocommand test fails on MS-Windows. +Solution: Use pathcmp() instead of strcmp() to check if a directory differs. +Files: src/ex_docmd.c, src/misc2.c + +Patch 8.1.0605 +Problem: Running make in the top directory echoes a comment. +Solution: Prefix with @. (closes #3698) +Files: Makefile + +Patch 8.1.0606 +Problem: 'cryptmethod' defaults to a very old method. +Solution: Default to "blowfish2", it is now widely available. +Files: src/option.c, runtime/doc/options.txt + +Patch 8.1.0607 +Problem: Proto files are not in sync with the source code. +Solution: Update the proto files. +Files: src/os_mswin.c, src/proto/buffer.pro, src/proto/ex_cmds.pro, + src/proto/ex_getln.pro, src/proto/misc2.pro, + src/proto/userfunc.pro + +Patch 8.1.0608 +Problem: Coveralls is not updating. +Solution: Adjust path in Travis config. +Files: .travis.yml + +Patch 8.1.0609 +Problem: MS-Windows: unused variable, depending on the Ruby version. +Solution: Put ruby_sysinit and NtInitialize inside #ifdef and make them + consistent. (Ken Takata) +Files: src/if_ruby.c + +Patch 8.1.0610 +Problem: MS-Windows ctags file list differs from Unix. +Solution: Define TAGS_FILES in the common makefile. (partly by Ken Takata) +Files: src/Make_all.mak, src/Makefile, src/Make_mvc.mak, + src/Make_cyg_ming.mak + +Patch 8.1.0611 +Problem: Crash when using terminal with long composing characters. +Solution: Make space for all characters. (Yasuhiro Matsumoto, closes #3619, + closes #3703) +Files: src/terminal.c + +Patch 8.1.0612 +Problem: Cannot use two global runtime dirs with configure. +Solution: Support a comma in --with-global-runtime. (James McCoy, + closes #3704) +Files: src/config.h.in, src/configure.ac, src/feature.h, src/os_unix.h, + src/auto/configure, src/Makefile + +Patch 8.1.0613 +Problem: When executing an insecure function the secure flag is stuck. + (Gabriel Barta) +Solution: Restore "secure" instead of decrementing it. (closes #3705) +Files: src/testdir/test_autocmd.vim, src/option.c, src/buffer.c + +Patch 8.1.0614 +Problem: Placing signs can be complicated. +Solution: Add functions for defining and placing signs. Introduce a group + name to avoid different plugins using the same signs. (Yegappan + Lakshmanan, closes #3652) +Files: runtime/doc/eval.txt, runtime/doc/sign.txt, + runtime/doc/usr_41.txt, src/alloc.h, src/buffer.c, src/evalfunc.c, + src/ex_cmds.c, src/globals.h, src/list.c, src/misc2.c, + src/netbeans.c, src/proto/buffer.pro, src/proto/ex_cmds.pro, + src/proto/list.pro, src/proto/misc2.pro, src/structs.h, + src/testdir/test_signs.vim, src/workshop.c + +Patch 8.1.0615 +Problem: Get_tv function names are not consistent. +Solution: Rename to tv_get. +Files: src/eval.c, src/proto/eval.pro, src/channel.c, src/dict.c, + src/evalfunc.c, src/list.c, src/message.c, src/tag.c, + src/terminal.c, src/textprop.c, src/window.c, src/ex_cmds.c, + src/os_unix.c, src/os_win32.c, src/json.c, src/regexp.c, + src/edit.c, src/misc2.c, src/popupmnu.c + +Patch 8.1.0616 +Problem: NSIS installer is outdated. +Solution: Use modern syntax, MUI2 and make it work better. Add translations. + (Guopeng Wen, Ken Takata, closes #3501) +Files: Filelist, nsis/gvim.nsi, nsis/icons/header.svg, + nsis/icons/welcome.svg, nsis/icons/header.bmp, + nsis/icons/un_header.bmp, nsis/icons/uninstall.bmp, + nsis/icons/welcome.bmp, nsis/lang/danish.nsi, nsis/lang/dutch.nsi, + nsis/lang/english.nsi, nsis/lang/german.nsi, + nsis/lang/italian.nsi, nsis/lang/japanese.nsi, + nsis/lang/simpchinese.nsi, nsis/lang/tradchinese.nsi, + src/dosinst.c + +Patch 8.1.0617 (after 8.1.0616) +Problem: NSIS installer gets two files from the wrong directory. +Solution: Change ${VIMRT} to "..\". +Files: nsis/gvim.nsi + +Patch 8.1.0618 +Problem: term_getjob() does not return v:null as documented. +Solution: Do return v:null. (Damien) Add a test. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0619 +Problem: :echomsg and :echoerr do not handle List and Dict like :echo does. + (Daniel Hahler) +Solution: Be more tolerant about the expression result type. +Files: src/eval.c, src/proto/eval.pro, src/evalfunc.c, + src/proto/evalfunc.pro, runtime/doc/eval.txt, + src/testdir/test_messages.vim, src/message.c + +Patch 8.1.0620 +Problem: Overruling CONF_ARGS from the environment no longer works. (Tony + Mechelynck) +Solution: Do not define any CONF_ARGS by default. +Files: src/Makefile + +Patch 8.1.0621 +Problem: Terminal debugger does not handle unexpected debugger exit. +Solution: Check for debugger job ended and close unused buffers. (Damien) +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.0622 +Problem: Adding quickfix items marks items as valid errors. (Daniel Hahler) +Solution: Check when items are valid. (Yegappan Lakshmanan, closes #3683, + closes #3633) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0623 +Problem: Iterating through window frames is repeated. +Solution: Define FOR_ALL_FRAMES. (Yegappan Lakshmanan) +Files: src/ex_docmd.c, src/globals.h, src/screen.c, src/window.c + +Patch 8.1.0624 (after 8.1.0620) +Problem: Overruling CONF_ARGS from the environment still does not work. + (Tony Mechelynck) +Solution: Add back CONF_ARGS next to the new numbered ones. +Files: src/Makefile + +Patch 8.1.0625 +Problem: MS-Windows: terminal test fails in white console. +Solution: Accept both white and black background colors. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0626 +Problem: MS-Windows: no resize to fit parent when using --windowid. +Solution: Pass FALSE for "mustset" in gui_set_shellsize(). (Agorgianitis + Loukas, closes #3616) +Files: src/gui.c + +Patch 8.1.0627 +Problem: Python cannot handle function name of script-local function. +Solution: Use <SNR> instead of the special byte code. (Ozaki Kiichi, closes + #3681) +Files: src/if_py_both.h, src/testdir/test_python2.vim, + src/testdir/test_python3.vim + +Patch 8.1.0628 +Problem: Compiler warning on MS-Windows. +Solution: Add type cast. (Mike Williams) +Files: src/if_py_both.h + +Patch 8.1.0629 +Problem: "gn" selects the wrong text with a multi-line match. +Solution: Get the end position from searchit() directly. (closes #3695) +Files: src/testdir/test_gn.vim, src/search.c, src/proto/search.pro, + src/edit.c, src/evalfunc.c, src/ex_docmd.c, src/ex_getln.c, + src/normal.c + +Patch 8.1.0630 +Problem: "wincmd p" does not work after using an autocmd window. +Solution: Store "prevwin" in aco_save_T. (Christian Brabandt, closes #3690) +Files: src/fileio.c, src/structs.h, src/testdir/test_window_cmd.vim + +Patch 8.1.0631 +Problem: Test for :stop fails on Arch. +Solution: Check five lines for the expected output. (closes #3714) +Files: src/testdir/test_terminal.vim + +Patch 8.1.0632 +Problem: Using sign group names is inefficient. +Solution: Store group names in a hash table and use a reference to them. + Also remove unnecessary use of ":exe" from the tests. (Yegappan + Lakshmanan, closes #3715) +Files: src/buffer.c, src/ex_cmds.c, src/structs.h, + src/testdir/test_signs.vim + +Patch 8.1.0633 +Problem: Crash when out of memory while opening a terminal window. +Solution: Handle out-of-memory more gracefully. +Files: src/terminal.c, src/libvterm/src/vterm.c, + src/libvterm/src/state.c, src/libvterm/src/termscreen.c + +Patch 8.1.0634 +Problem: Text properties cannot cross line boundaries. +Solution: Support multi-line text properties. +Files: src/textprop.c, src/testdir/test_textprop.vim, + runtime/doc/eval.txt + +Patch 8.1.0635 +Problem: Coverity complains about null pointer use. +Solution: Avoid using a null pointer. +Files: src/evalfunc.c + +Patch 8.1.0636 +Problem: line2byte() gives wrong values with text properties. (Bjorn Linse) +Solution: Compute byte offsets differently when text properties were added. + (closes #3718) +Files: src/structs.h, src/textprop.c, src/proto/textprop.pro, + src/memline.c, src/testdir/test_textprop.vim + +Patch 8.1.0637 +Problem: Nsis file no longer used. +Solution: Remove the file. (Ken Takata) +Files: nsis/vimrc.ini, Filelist + +Patch 8.1.0638 +Problem: Text property highlighting is off by one column. (Bjorn Linse) +Solution: Update text property highlighting earlier. Let it overrule syntax + highlighting. +Files: src/structs.h, src/screen.c + +Patch 8.1.0639 +Problem: text properties test fails on MS-Windows +Solution: Set fileformat to "unix". +Files: src/testdir/test_textprop.vim + +Patch 8.1.0640 +Problem: Get E14 while typing command :tab with 'incsearch' set. +Solution: Do not give an error when looking for the command. (Hirohito + Higashi) +Files: src/testdir/test_search.vim, src/ex_docmd.c + +Patch 8.1.0641 +Problem: No check for out-of-memory when converting regexp. +Solution: Bail out when lalloc() returns NULL. (John Marriott) +Files: src/regexp_nfa.c + +Patch 8.1.0642 +Problem: swapinfo() leaks memory. (Christian Brabandt) +Solution: Avoid allocating the strings twice. +Files: src/memline.c, src/dict.c, src/proto/dict.pro + +Patch 8.1.0643 +Problem: Computing byte offset wrong. (Bjorn Linse) +Solution: Use the right variable for array index. +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.1.0644 +Problem: Finding next sign ID is inefficient. +Solution: Add next_sign_id. (Yegappan Lakshmanan, closes #3717) +Files: runtime/doc/eval.txt, src/buffer.c, src/evalfunc.c, src/ex_cmds.c, + src/globals.h, src/main.c, src/proto/buffer.pro, src/structs.h, + src/testdir/test_signs.vim + +Patch 8.1.0645 +Problem: Coverity warns for possible use of NULL pointer. +Solution: Check return value of vterm_obtain_screen(). +Files: src/terminal.c + +Patch 8.1.0646 +Problem: Cannot build with Ruby 2.6.0. +Solution: Add rb_ary_detransient(). (Ozaki Kiichi, closes #3724) +Files: src/if_ruby.c + +Patch 8.1.0647 +Problem: MS-Windows: balloon_show() does not handle wide characters. +Solution: Use CreateWindowExW(). (Yasuhiro Matsumoto, closes #3708) +Files: src/gui_w32.c + +Patch 8.1.0648 +Problem: Custom operators can't act upon a forced motion. (Christian + Wellenbrock) +Solution: Add the forced motion to the mode() result. (Christian Brabandt, + closes #3490) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/globals.h, src/normal.c, + src/testdir/test_mapping.vim + +Patch 8.1.0649 +Problem: setjmp() variables defined globally are used in one file. +Solution: Move the declarations to that file. +Files: src/globals.h, src/os_unix.c + +Patch 8.1.0650 +Problem: Command line argument -q [errorfile] is not tested. +Solution: Add a test. (Dominique Pelle, closes #3730) +Files: src/testdir/test_startup.vim + +Patch 8.1.0651 +Problem: :args \"foo works like :args without argument. +Solution: Fix check for empty argument. (closes #3728) +Files: src/ex_cmds2.c, src/testdir/test_arglist.vim + +Patch 8.1.0652 +Problem: Freeing memory for balloon eval too early. +Solution: Store the pointer in BalloonEval and free it later. (Yasuhiro + Matsumoto, closes #3725) +Files: src/beval.h, src/gui_w32.c + +Patch 8.1.0653 (after 8.1.0651) +Problem: Arglist test fails on MS-windows. +Solution: Only use a file name with a double quote on Unix. +Files: src/testdir/test_arglist.vim + +Patch 8.1.0654 +Problem: When deleting a line text property flags are not adjusted. +Solution: Adjust text property flags in preceding and following lines. +Files: src/memline.c, src/misc2.c, src/proto/misc2.pro, + src/testdir/test_textprop.vim + +Patch 8.1.0655 +Problem: When appending a line text property flags are not added. +Solution: Add text properties to a newly added line. +Files: src/memline.c, src/testdir/test_textprop.vim, src/textprop.c + +Patch 8.1.0656 +Problem: Trying to reconnect to X server may cause problems. +Solution: Do no try reconnecting when exiting. (James McCoy) +Files: src/os_unix.c + +Patch 8.1.0657 (after 8.1.0656) +Problem: Get error for using regexp recursively. (Dominique Pelle) +Solution: Do no check if connection is desired. +Files: src/os_unix.c + +Patch 8.1.0658 +Problem: Deleting signs and completion for :sign is insufficient. +Solution: Add deleting signs in a specified or any group from the current + cursor location. Add group and priority to sign command + completion. Add tests for different sign unplace commands. Update + help text. Add tests for sign jump with group. Update help for + sign jump. (Yegappan Lakshmanan, closes #3731) +Files: runtime/doc/sign.txt, src/buffer.c, src/evalfunc.c, src/ex_cmds.c, + src/netbeans.c, src/proto/buffer.pro, src/proto/ex_cmds.pro, + src/testdir/test_signs.vim + +Patch 8.1.0659 (after 8.1.0658) +Problem: Build failure without the sign feature. +Solution: Put the sign struct declarations outside of the #ifdef. +Files: src/structs.h + +Patch 8.1.0660 +Problem: sign_unplace() may leak memory. +Solution: Free the group name before returning. Add a few more tests. + (Yegappan Lakshmanan) +Files: src/evalfunc.c, src/testdir/test_signs.vim + +Patch 8.1.0661 +Problem: Clipboard regexp might be used recursively. +Solution: Check for recursive use and bail out. +Files: src/regexp.c, src/proto/regexp.pro, src/os_unix.c + +Patch 8.1.0662 +Problem: Needlessly searching for tilde in string. +Solution: Only check the first character. (James McCoy, closes #3734) +Files: src/misc1.c + +Patch 8.1.0663 +Problem: Text property display wrong when 'number' is set. (Dominique + Pelle) +Solution: Compare with "vcol" instead of "col". +Files: src/screen.c + +Patch 8.1.0664 +Problem: Configure "fail-if-missing" does not apply to the enable-gui + argument. (Rhialto) +Solution: Make configure fail if a GUI was specified and "fail-if-missing" + is enabled and the GUI test fails. +Files: src/configure.ac, src/auto/configure + +Patch 8.1.0665 +Problem: Text property display wrong when 'spell' is set. (Dominique Pelle) +Solution: Remove unnecessary assignment to char_attr. Combine attributes if + needed. Add a screenshot test. +Files: src/screen.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.0666 (after 8.1.0665) +Problem: Text property test fails. +Solution: Update screenshot. +Files: src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.0667 (after 8.1.0665) +Problem: Textprop test leaves file behind. +Solution: Delete the file. (Dominique Pelle, closes #3743) +Files: src/testdir/test_textprop.vim + +Patch 8.1.0668 +Problem: No test for overstrike mode in the command line. +Solution: Add a test. (Dominique Pelle, closes #3742) +Files: src/testdir/test_cmdline.vim + +Patch 8.1.0669 +Problem: The ex_sign() function is too long. +Solution: Refactor the function. Add a bit more testing. (Yegappan + Lakshmanan, closes #3745) +Files: src/testdir/test_signs.vim, src/ex_cmds.c + +Patch 8.1.0670 +Problem: Macro for popup menu width is unused. +Solution: Remove it. (Hirohito Higashi) +Files: src/popupmnu.c + +Patch 8.1.0671 +Problem: Cursor in the wrong column after auto-formatting. +Solution: Check for deleting more spaces than adding. (closes #3748) +Files: src/ops.c, src/testdir/test_textformat.vim, src/mark.c, + src/proto/mark.pro, src/misc1.c + +Patch 8.1.0672 +Problem: The Lua interface doesn't know about v:null. +Solution: Add Lua support for v:null. (Uji, closes #3744) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.1.0673 +Problem: Functionality for signs is spread out over several files. +Solution: Move most of the sign functionality into sign.c. (Yegappan + Lakshmanan, closes #3751) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/README.txt, src/buffer.c, + src/evalfunc.c, src/ex_cmds.c, src/proto.h, src/proto/buffer.pro, + src/proto/ex_cmds.pro, src/proto/sign.pro, src/sign.c + +Patch 8.1.0674 +Problem: Leaking memory when updating a single line. +Solution: Do not call start_search_hl() twice. +Files: src/screen.c + +Patch 8.1.0675 +Problem: Text property column is screen columns is not practical. +Solution: Use byte values for the column. +Files: src/structs.h, src/textprop.c, src/proto/textprop.pro, + runtime/doc/eval.txt, runtime/doc/textprop.txt, + src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.0676 +Problem: Textprop screendump test fails. +Solution: Add missing changes. +Files: src/screen.c + +Patch 8.1.0677 +Problem: Look-behind match may use the wrong line number. (Dominique Pelle) +Solution: Use the line number in regsave instead of the one in behind_pos, + we may be looking at the previous line. (closes #3749) +Files: src/regexp.c + +Patch 8.1.0678 +Problem: Text properties as not adjusted for inserted text. +Solution: Adjust text properties when inserting text. +Files: src/misc1.c, src/proto/misc1.pro, src/textprop.c, + src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.0679 +Problem: Sign functions do not take buffer argument as documented. +Solution: Use get_buf_tv(). (Yegappan Lakshmanan, closes #3755) +Files: src/evalfunc.c, src/testdir/test_signs.vim + +Patch 8.1.0680 +Problem: Not easy to see what features are unavailable. +Solution: Highlight disabled features in the :version output. (Nazri Ramliy, + closes #3756) +Files: src/version.c + +Patch 8.1.0681 +Problem: Text properties as not adjusted for deleted text. +Solution: Adjust text properties when backspacing to delete text. +Files: src/edit.c, src/misc1.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.0682 +Problem: Text properties are not adjusted when backspacing replaced text. +Solution: Keep text properties on text restored in replace mode. +Files: src/edit.c, src/textprop.c, src/globals.h, + src/testdir/test_textprop.vim + +Patch 8.1.0683 +Problem: Spell highlighting does not always end. (Gary Johnson) +Solution: Also reset char_attr when spell errors are highlighted. +Files: src/screen.c + +Patch 8.1.0684 +Problem: Warnings from 64-bit compiler. +Solution: Add type casts. (Mike Williams) +Files: src/memline.c, src/textprop.c + +Patch 8.1.0685 +Problem: get_buf_tv() is named inconsistently. +Solution: Rename it to tv_get_buf(). (Yegappan Lakshmanan, closes #3759) +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/terminal.c, + src/textprop.c + +Patch 8.1.0686 +Problem: When 'y' is in 'cpoptions' yanking for the clipboard changes redo. +Solution: Do not use the 'y' flag when "gui_yank" is TRUE. (Andy Massimino, + closes #3760) +Files: src/normal.c + +Patch 8.1.0687 +Problem: Sentence text object in Visual mode is not tested. +Solution: Add a test. (Dominique Pelle, closes #3758) +Files: src/testdir/test_visual.vim + +Patch 8.1.0688 +Problem: Text properties are not restored by undo. +Solution: Also save text properties for undo. +Files: src/structs.h, src/undo.c, src/memline.c, src/proto/memline.pro + +Patch 8.1.0689 (after 8.1.0688) +Problem: Undo with text properties not tested. +Solution: Add a test function. +Files: src/testdir/test_textprop.vim + +Patch 8.1.0690 +Problem: setline() and setbufline() do not clear text properties. +Solution: Clear text properties when setting the text. +Files: src/evalfunc.c, src/testdir/test_textprop.vim + +Patch 8.1.0691 +Problem: Text properties are not adjusted for :substitute. +Solution: Adjust text properties as well as possible. +Files: src/ex_cmds.c, src/textprop.c, src/proto/textprop.pro, + src/testdir/test_textprop.vim + +Patch 8.1.0692 +Problem: If a buffer was deleted a channel can't write to it. +Solution: When the buffer exists but was unloaded, prepare it for writing. + (closes #3764) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.1.0693 (after 8.1.0692) +Problem: Channel test fails sometimes. +Solution: Avoid race condition. +Files: src/testdir/test_channel.vim + +Patch 8.1.0694 +Problem: When using text props may free memory that is not allocated. + (Andy Massimino) +Solution: Allocate the line when adjusting text props. (closes #3766) +Files: src/textprop.c + +Patch 8.1.0695 +Problem: Internal error when using :popup. +Solution: When a menu only exists in Terminal mode give an error. (Naruhiko + Nishino, closes #3765) +Files: runtime/doc/gui.txt, src/globals.h, src/menu.c, src/popupmnu.c, + src/testdir/test_popup.vim + +Patch 8.1.0696 +Problem: When test_edit fails 'insertmode' may not be reset and the next + test may get stuck. (James McCoy) +Solution: Always reset 'insertmode' after executing a test. Avoid that an + InsertCharPre autocommand or a 'complete' function can change the + state. (closes #3768) +Files: src/testdir/runtest.vim, src/edit.c + +Patch 8.1.0697 +Problem: ":sign place" requires the buffer argument. +Solution: Make the argument optional. Also update the help and clean up the + sign test. (Yegappan Lakshmanan, closes #3767) +Files: runtime/doc/eval.txt, runtime/doc/sign.txt, src/sign.c, + src/testdir/test_signs.vim + +Patch 8.1.0698 +Problem: Clearing the window is used too often, causing the command line + to be cleared when opening a tab. (Miroslav Ko拧k谩r) +Solution: Use NOT_VALID instead of CLEAR. (suggested by Jason Franklin, + closes #630) Also do this for a few other places where clearing + the screen isn't really needed. +Files: src/window.c + +Patch 8.1.0699 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Add a dummy init. +Files: src/edit.c + +Patch 8.1.0700 (after 8.1.0698) +Problem: Using "gt" sometimes does not redraw a tab. (Jason Franklin) +Solution: Always set must_redraw in redraw_all_later(). +Files: src/screen.c + +Patch 8.1.0701 +Problem: Sign message not translated and inconsistent spacing. +Solution: Add _() for translation. Add a space. (Ken Takata) Also use + MSG_BUF_LEN instead of BUFSIZ. +Files: src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.0702 +Problem: ":sign place" only uses the current buffer. +Solution: List signs for all buffers when there is no buffer argument. + Fix error message for invalid buffer name in sign_place(). + (Yegappan Lakshmanan, closes #3774) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/sign.c, + src/testdir/test_signs.vim + +Patch 8.1.0703 +Problem: Compiler warnings with 64-bit compiler. +Solution: Change types, add type casts. (Mike Williams) +Files: src/textprop.c, src/undo.c + +Patch 8.1.0704 +Problem: Building with Ruby 2.6 gives compiler warnings. +Solution: Define a stub for rb_ary_detransient. (Ozaki Kiichi, closes #3779) +Files: src/if_ruby.c + +Patch 8.1.0705 +Problem: :colorscheme isn't tested enough +Solution: Improve test coverage of :colorscheme. (Dominique Pelle, closes + #3777) Remove unnecessary sleep. +Files: src/testdir/test_gui.vim + +Patch 8.1.0706 +Problem: Tabline is not always redrawn when something that is used in + 'tabline' changes. +Solution: Add ":redrawtabline" so that a plugin can at least cause the + redraw when needed. +Files: runtime/doc/various.txt, runtime/doc/options.txt, src/ex_docmd.c, + src/ex_cmds.h, src/screen.c, src/proto/screen.pro, + src/ex_cmdidxs.h, src/testdir/test_tabline.vim + +Patch 8.1.0707 +Problem: Text property columns are not adjusted for changed indent. +Solution: Adjust text properties. +Files: src/misc1.c, src/testdir/test_textprop.vim + +Patch 8.1.0708 +Problem: Third argument for redrawWinline() is always FALSE. +Solution: Drop the argument. (neovim #9479) +Files: src/edit.c, src/move.c, src/screen.c, src/proto/screen.pro + +Patch 8.1.0709 +Problem: Windows are updated for every added/deleted sign. +Solution: Do not call update_debug_sign(). Only redraw when the line with + the sign is visible. (idea from neovim #9479) +Files: src/sign.c, src/screen.c, src/proto/screen.pro + +Patch 8.1.0710 +Problem: When using timers may wait for job exit quite long. +Solution: Return from ui_wait_for_chars_or_timer() when a job or channel + needs to be handled. (Ozaki Kiichi, closes #3783) +Files: src/ui.c, src/testdir/test_channel.vim + +Patch 8.1.0711 +Problem: Test files still use function!. +Solution: Remove the exclamation mark. Fix overwriting a function. +Files: src/testdir/test49.vim, src/testdir/test_autocmd.vim, + src/testdir/test_charsearch.vim, + src/testdir/test_charsearch_utf8.vim, + src/testdir/test_display.vim, src/testdir/test_edit.vim, + src/testdir/test_eval_func.vim, src/testdir/test_fnameescape.vim, + src/testdir/test_getcwd.vim, src/testdir/test_highlight.vim, + src/testdir/test_hlsearch.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_lambda.vim, src/testdir/test_listdict.vim, + src/testdir/test_listlbr.vim, src/testdir/test_listlbr_utf8.vim, + src/testdir/test_marks.vim, src/testdir/test_matchadd_conceal.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_messages.vim, src/testdir/test_number.vim, + src/testdir/test_options.vim, src/testdir/test_partial.vim, + src/testdir/test_smartindent.vim, src/testdir/test_substitute.vim, + src/testdir/test_system.vim, src/testdir/test_terminal.vim, + src/testdir/test_textobjects.vim, src/testdir/test_utf8.vim, + src/testdir/test_utf8_comparisons.vim, + src/testdir/test_vartabs.vim, src/testdir/test_vimscript.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_xxd.vim + +Patch 8.1.0712 +Problem: MS-Windows build instructions are a bit outdated. +Solution: Update the instructions. (Ken Takata) +Files: src/INSTALLpc.txt + +Patch 8.1.0713 +Problem: Images for NSIS take up too much space. +Solution: Put the images in a zip file. +Files: nsis/icons.zip, nsis/icons/disabled.bmp, nsis/icons/enabled.bmp, + nsis/icons/header.bmp, nsis/icons/header.svg, + nsis/icons/un_header.bmp, nsis/icons/uninstall.bmp, + nsis/icons/vim_16c.ico, nsis/icons/vim_uninst_16c.ico, + nsis/icons/welcome.bmp, nsis/icons/welcome.svg, + nsis/README.txt, Filelist, Makefile + +Patch 8.1.0714 +Problem: Unnecessary #if lines in GTK code. +Solution: Remove the #if. (Ken Takata, closes #3785) +Files: src/gui_beval.c, src/if_mzsch.c + +Patch 8.1.0715 +Problem: Superfluous call to redraw_win_later(). +Solution: Remove the call. +Files: src/move.c + +Patch 8.1.0716 +Problem: Get warning message when 'completefunc' returns nothing. +Solution: Allow for returning v:none to suppress the warning message. + (Yasuhiro Matsumoto, closes #3789) +Files: runtime/doc/insert.txt, src/edit.c, + src/testdir/test_ins_complete.vim + +Patch 8.1.0717 +Problem: There is no function for the ":sign jump" command. +Solution: Add the sign_jump() function. (Yegappan Lakshmanan, closes #3780) +Files: runtime/doc/eval.txt, runtime/doc/sign.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/sign.pro, + src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.0718 +Problem: A couple compiler warnings. +Solution: Rename shadowed variables. Add UNUSED. +Files: src/misc1.c + +Patch 8.1.0719 +Problem: Too many #ifdefs. +Solution: Always build with the +visualextra feature. +Files: src/evalfunc.c, src/version.c, src/normal.c, src/ops.c, + src/feature.h, runtime/doc/various.txt + +Patch 8.1.0720 +Problem: Cannot easily change the current quickfix list index. +Solution: Add the "idx" argument to setqflist(). (Yegappan Lakshmanan, + closes #3701) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.1.0721 +Problem: Conceal mode is not sufficiently tested. +Solution: Add screendump tests. Check all 'concealcursor' values. +Files: src/testdir/test_conceal.vim, src/Make_all.mak, + src/testdir/Make_all.mak + src/testdir/dumps/Test_conceal_two_windows_01.dump, + src/testdir/dumps/Test_conceal_two_windows_02.dump, + src/testdir/dumps/Test_conceal_two_windows_03.dump, + src/testdir/dumps/Test_conceal_two_windows_04.dump, + src/testdir/dumps/Test_conceal_two_windows_05.dump, + src/testdir/dumps/Test_conceal_two_windows_06i.dump, + src/testdir/dumps/Test_conceal_two_windows_06v.dump, + src/testdir/dumps/Test_conceal_two_windows_06c.dump, + src/testdir/dumps/Test_conceal_two_windows_06n.dump, + src/testdir/dumps/Test_conceal_two_windows_07i.dump, + src/testdir/dumps/Test_conceal_two_windows_07v.dump, + src/testdir/dumps/Test_conceal_two_windows_07c.dump, + src/testdir/dumps/Test_conceal_two_windows_07n.dump, + src/testdir/dumps/Test_conceal_two_windows_08i.dump, + src/testdir/dumps/Test_conceal_two_windows_08v.dump, + src/testdir/dumps/Test_conceal_two_windows_08c.dump, + src/testdir/dumps/Test_conceal_two_windows_08n.dump, + src/testdir/dumps/Test_conceal_two_windows_09i.dump, + src/testdir/dumps/Test_conceal_two_windows_09v.dump, + src/testdir/dumps/Test_conceal_two_windows_09c.dump, + src/testdir/dumps/Test_conceal_two_windows_09n.dump + +Patch 8.1.0722 +Problem: Cannot build without the virtualedit feature. +Solution: Make getviscol2() always available. +Files: src/misc2.c, src/proto/misc2.pro, src/ops.c + +Patch 8.1.0723 +Problem: Cannot run specific test when in src/testdir the same was as in + the src directory. +Solution: Move build rule to src/testdir/Makefile. +Files: src/testdir/Make_all.mak, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/Makefile, src/Make_all.mak, src/testdir/Makefile, + src/testdir/README.txt, src/Make_mvc.mak + +Patch 8.1.0724 +Problem: Build for MinGW fails. +Solution: Avoid specifying dependencies in included makefile. +Files: src/testdir/Make_all.mak, src/testdir/Makefile, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak + +Patch 8.1.0725 +Problem: Conceal mode is not completely tested. +Solution: Add tests for moving the cursor in Insert mode. +Files: src/testdir/test_conceal.vim, + src/testdir/dumps/Test_conceal_two_windows_10.dump, + src/testdir/dumps/Test_conceal_two_windows_11.dump, + src/testdir/dumps/Test_conceal_two_windows_12.dump, + src/testdir/dumps/Test_conceal_two_windows_13.dump + +Patch 8.1.0726 +Problem: Redrawing specifically for conceal feature. +Solution: Use generic redrawing methods. +Files: src/edit.c, src/gui.c, src/main.c, src/normal.c, src/screen.c, + src/proto/screen.pro, src/window.c + +Patch 8.1.0727 +Problem: Compiler warning for sprintf() argument. +Solution: Add type cast. +Files: src/dosinst.c + +Patch 8.1.0728 +Problem: Cannot avoid breaking after a single space. +Solution: Add the 'p' flag to 'formatoptions'. (Tom Ryder) +Files: runtime/doc/change.txt, src/edit.c, src/option.h, + src/testdir/test_textformat.vim + +Patch 8.1.0729 +Problem: There is a SourcePre autocommand event but not a SourcePost. +Solution: Add the SourcePost autocommand event. (closes #3739) +Files: src/vim.h, src/fileio.c, src/ex_cmds2.c, runtime/doc/autocmd.txt, + src/testdir/test_source.vim, src/testdir/Make_all.mak + +Patch 8.1.0730 +Problem: Compiler warning for get_buf_arg() unused. +Solution: Add #ifdef. (John Marriott) +Files: src/evalfunc.c + +Patch 8.1.0731 +Problem: JS encoding does not handle negative infinity. +Solution: Add support for negative infinity for JS encoding. (Dominique + Pelle, closes #3792) +Files: runtime/doc/eval.txt, src/json.c, src/testdir/test_json.vim + +Patch 8.1.0732 +Problem: Cannot build without the eval feature. +Solution: Make a copy of the sourced file name. +Files: src/ex_cmds2.c + +Patch 8.1.0733 +Problem: Too many #ifdefs for the multibyte feature. +Solution: Tentatively always enable the multibyte feature. If you have a + problem with this, please discuss on the Vim maillist. +Files: src/configure.ac, src/auto/configure, src/feature.h, src/Makefile, + src/Make_bc5.mak, src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.0734 +Problem: The hlsearch state is not stored in a session file. +Solution: Add "nohlsearch" if appropriate. (Jason Franklin) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0735 +Problem: Cannot handle binary data. +Solution: Add the Blob type. (Yasuhiro Matsumoto, closes #3638) +Files: runtime/doc/eval.txt, runtime/doc/if_perl.txt, + runtime/doc/if_ruby.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/Makefile, src/blob.c, src/channel.c, src/eval.c, + src/evalfunc.c, src/if_perl.xs, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/json.c, src/netbeans.c, + src/proto.h, src/proto/blob.pro, src/proto/channel.pro, + src/structs.h, src/testdir/Make_all.mak, src/vim.h, src/globals.h, + src/testdir/test_blob.vim, src/testdir/test_channel.vim + +Patch 8.1.0736 +Problem: Code for Blob not sufficiently tested. +Solution: Add more tests. Fix uncovered crash. Add test_null_blob(). +Files: src/testdir/test_blob.vim, src/testdir/test_assign.vim, src/eval.c, + src/testdir/test_eval_stuff.vim, src/testdir/test_lambda.vim, + runtime/doc/eval.txt, src/evalfunc.c, src/blob.c, + src/testdir/test49.vim + +Patch 8.1.0737 +Problem: Compiler warning for uninitialized variable. +Solution: Add initialization. (John Marriott) +Files: src/eval.c + +Patch 8.1.0738 +Problem: Using freed memory, for loop over blob leaks memory. +Solution: Clear pointer after freeing memory. Decrement reference count + after for loop over blob. +Files: src/eval.c + +Patch 8.1.0739 +Problem: Text objects in not sufficiently tested. +Solution: Add a few more test cases. (Dominique Pelle, closes #3795) +Files: src/testdir/test_visual.vim + +Patch 8.1.0740 +Problem: Tcl test fails. +Solution: When the argument is empty don't give an error, instead rely on + the error reporting higher up. +Files: src/eval.c + +Patch 8.1.0741 +Problem: Viminfo with Blob is not tested. +Solution: Extend the viminfo test. Fix reading a blob. Fixed storing a + special variable value. +Files: src/testdir/test_viminfo.vim, src/eval.c, src/blob.c, + src/proto/blob.pro + +Patch 8.1.0742 +Problem: Not all Blob operations are tested. +Solution: Add more testing for Blob. +Files: src/testdir/test_blob.vim, src/evalfunc.c, + src/testdir/test_eval_stuff.vim + +Patch 8.1.0743 +Problem: Giving error messages is not flexible. +Solution: Add semsg(). Change argument from "char_u *" to "char *", also + for msg() and get rid of most MSG macros. (Ozaki Kiichi, closes + #3302) Also make emsg() accept a "char *" argument. Get rid of + an enormous number of type casts. +Files: src/blob.c, src/blowfish.c, src/buffer.c, src/channel.c, + src/crypt.c, src/dict.c, src/diff.c, src/digraph.c, src/edit.c, + src/eval.c, src/evalfunc.c, src/ex_cmds.c, src/ex_cmds.h, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/farsi.h, src/fileio.c, src/fold.c, src/getchar.c, + src/globals.h, src/gui.c, src/gui_at_fs.c, src/gui_at_sb.c, + src/gui_beval.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, src/hangulin.c, + src/hardcopy.c, src/hashtab.c, src/if_cscope.c, src/if_lua.c, + src/if_mzsch.c, src/if_perl.xs, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/if_xcmdsrv.c, + src/json.c, src/list.c, src/main.c, src/mark.c, src/mbyte.c, + src/memfile.c, src/memline.c, src/menu.c, src/message.c, + src/misc1.c, src/misc2.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/os_amiga.c, src/os_mswin.c, src/os_unix.c, + src/os_win32.c, src/popupmnu.c, src/proto.h, src/proto/buffer.pro, + src/proto/digraph.pro, src/proto/ex_docmd.pro, + src/proto/ex_eval.pro, src/proto/ex_getln.pro, + src/proto/hardcopy.pro, src/proto/mbyte.pro, + src/proto/message.pro, src/proto/misc2.pro, src/proto/option.pro, + src/proto/spell.pro, src/quickfix.c, src/regexp.c, + src/regexp_nfa.c, src/search.c, src/sign.c, src/spell.c, + src/spellfile.c, src/structs.h, src/syntax.c, src/tag.c, + src/term.c, src/terminal.c, src/textprop.c, src/ui.c, src/undo.c, + src/userfunc.c, src/version.c, src/vim.h, src/window.c, + +Patch 8.1.0744 (after 8.1.0743) +Problem: Compiler warnings for signed/unsigned strings. +Solution: A few more type cast fixes. +Files: src/option.c, src/if_perl.xs, src/if_py_both.h, src/integration.c + +Patch 8.1.0745 +Problem: Compiler warnings for signed/unsigned string. +Solution: Remove type casts. (John Marriott) +Files: src/ex_docmd.c, src/mbyte.c + +Patch 8.1.0746 +Problem: Highlighting not updated with conceal and 'cursorline'. (Jason + Franklin) +Solution: Do not use a zero line number. Check if 'conceallevel' is set for + the current window. +Files: src/main.c, src/testdir/test_conceal.vim, + src/testdir/dumps/Test_conceal_cul_01.dump, + src/testdir/dumps/Test_conceal_cul_02.dump, + src/testdir/dumps/Test_conceal_cul_03.dump + +Patch 8.1.0747 +Problem: map() with a bad expression doesn't give an error. (Ingo Karkat) +Solution: Check for giving an error message. (closes #3800) +Files: src/eval.c, src/testdir/test_filter_map.vim + +Patch 8.1.0748 +Problem: Using sprintf() instead of semsg(). +Solution: Use semsg(). Fix bug with E888. (Ozaki Kiichi, closes #3801) +Files: src/regexp.c + +Patch 8.1.0749 (after 8.1.0747) +Problem: Error message contains garbage. (Dominique Pelle) +Solution: Use correct pointer to failed expression. +Files: src/eval.c + +Patch 8.1.0750 +Problem: When the last sign is deleted the signcolumn may not be removed + even though 'signcolumn' is "auto". +Solution: When deleting the last sign redraw the buffer. (Dominique Pelle, + closes #3803, closes #3804) +Files: src/sign.c + +Patch 8.1.0751 +Problem: Some regexp errors are not tested. +Solution: Add a test function. +Files: src/testdir/test_regexp_latin.vim + +Patch 8.1.0752 +Problem: One more compiler warning for signed/unsigned string. (Tony + Mechelynck) +Solution: Remove type cast. +Files: src/ex_docmd.c + +Patch 8.1.0753 +Problem: printf format not checked for semsg(). +Solution: Add GNUC attribute and fix reported problems. (Dominique Pelle, + closes #3805) +Files: src/buffer.c, src/diff.c, src/eval.c, src/evalfunc.c, + src/ex_docmd.c, src/if_cscope.c, src/netbeans.c, src/proto.h, + src/proto/message.pro, src/quickfix.c, src/regexp_nfa.c, + src/sign.c, src/spellfile.c, src/window.c, src/gui_x11.c + +Patch 8.1.0754 +Problem: Preferred column is lost when setting 'cursorcolumn'. +Solution: Change option flag to P_RWINONLY. (Takayuki Kurosawa, + closes #3806) +Files: src/option.c, src/testdir/test_cursor_func.vim + +Patch 8.1.0755 +Problem: Error message for get() on a Blob with invalid index. +Solution: Return an empty Blob, like get() on a List does. +Files: src/evalfunc.c, src/testdir/test_blob.vim + +Patch 8.1.0756 +Problem: copy() does not make a copy of a Blob. +Solution: Make a copy. +Files: src/eval.c, src/testdir/test_blob.vim + +Patch 8.1.0757 +Problem: Not enough documentation for Blobs. +Solution: Add a section about Blobs. +Files: runtime/doc/eval.txt + +Patch 8.1.0758 +Problem: Font number is always one instead of the actual. +Solution: Use "%d" instead of "1". (Ken Takata) +Files: src/gui_x11.c + +Patch 8.1.0759 +Problem: Showing two characters for tab is limited. +Solution: Allow for a third character for "tab:" in 'listchars'. (Nathaniel + Braun, Ken Takata, closes #3810) +Files: runtime/doc/options.txt, src/globals.h, src/message.c, + src/option.c, src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.0760 +Problem: No proper test for using 'termencoding'. +Solution: Add a screendump test. Fix using double width characters in a + screendump. +Files: src/terminal.c, src/testdir/test_termencoding.vim, + src/testdir/Make_all.mak, + src/testdir/dumps/Test_tenc_euc_jp_01.dump + +Patch 8.1.0761 +Problem: Default value for brief_wait is wrong. +Solution: Make the default FALSE. (Ozaki Kiichi, closes #3812, closes #3799) +Files: src/ui.c + +Patch 8.1.0762 +Problem: Compiler warning. +Solution: Add type cast. (Mike Williams) +Files: src/channel.c + +Patch 8.1.0763 +Problem: Nobody is using the Sun Workshop support. +Solution: Remove the Workshop support. +Files: runtime/doc/workshop.txt, runtime/doc/help.txt, + runtime/doc/netbeans.txt, src/Makefile, src/auto/configure, + src/beval.c, src/buffer.c, src/config.h.in, src/config.mk.in, + src/configure.ac, src/evalfunc.c, src/ex_cmds.c, src/ex_cmds.h, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/globals.h, + src/gui.c, src/gui_beval.c, src/gui_motif.c, src/gui_x11.c, + src/integration.c, src/integration.h, src/main.c, src/misc2.c, + src/nbdebug.c, src/netbeans.c, src/proto.h, + src/proto/workshop.pro, src/ui.c, src/version.c, src/vim.h, + src/workshop.c, src/workshop.h, src/wsdebug.c, src/wsdebug.h, + src/ex_cmdidxs.h + +Patch 8.1.0764 +Problem: List of distributed files is outdated. +Solution: Remove workshop files. Add blob files. +Files: Filelist + +Patch 8.1.0765 +Problem: String format of a Blob can't be parsed back. +Solution: Use 0z format. +Files: src/blob.c, src/eval.c, src/testdir/test_blob.vim + +Patch 8.1.0766 +Problem: Various problems when using Vim on VMS. +Solution: Various fixes. Define long_long_T. (Zoltan Arpadffy) +Files: src/eval.c, src/feature.h, src/fileio.c, src/gui_motif.c, + src/gui_x11.c, src/gui_xmebw.c, src/json.c, src/Make_vms.mms, + src/ops.c, src/os_vms_conf.h, src/vim.h, src/xdiff/xdiff.h, + src/xdiff/xinclude.h + +Patch 8.1.0767 +Problem: When deleting lines at the bottom signs are misplaced. +Solution: Properly update the line number of signs at the end of a buffer + after a delete/undo operation. (Yegappan Lakshmanan, closes #3798) +Files: src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.0768 +Problem: Updating completions may cause the popup menu to flicker. +Solution: Avoid updating the text below the popup menu before drawing the + popup menu. +Files: src/popupmnu.c, src/proto/popupmnu.pro, src/edit.c, src/screen.c + +Patch 8.1.0769 +Problem: :stop is covered in two tests. +Solution: Remove Test_stop_in_terminal(). Make other test exit Vim cleanly. + (Ozaki Kiichi, closes #3814) +Files: src/testdir/test_terminal.vim, src/testdir/test_suspend.vim + +Patch 8.1.0770 +Problem: Inconsistent use of ELAPSED_FUNC. +Solution: Consistently use ELAPSED_FUNC. Also turn ELAPSED_TYPE into a + typedef. (Ozaki Kiichi, closes #3815) +Files: src/channel.c, src/gui.c, src/misc1.c, src/os_unix.c, src/vim.h + +Patch 8.1.0771 +Problem: Some shell filetype patterns end in a star. +Solution: Make sure that patterns not ending in a star are preferred. +Files: runtime/filetype.vim, runtime/autoload/dist/ft.vim + +Patch 8.1.0772 +Problem: The sign_define_by_name() function is too long. +Solution: Split it into smaller functions. (Yegappan Lakshmanan, + closes #3819) +Files: src/sign.c + +Patch 8.1.0773 +Problem: Not all crypt code is tested. +Solution: Disable unused crypt code. Add more test coverage. +Files: src/structs.h, src/crypt.c, src/testdir/test_crypt.vim, + src/proto/crypt.pro, src/fileio.c + +Patch 8.1.0774 +Problem: VMS build is missing the blob file. +Solution: Add the blob file to the build rules. (Zoltan Arpadffy) +Files: src/Make_vms.mms, runtime/doc/os_vms.txt + +Patch 8.1.0775 +Problem: Matching too many files as zsh. (Danek Duvall) +Solution: Be more specific with zsh filetype patterns. +Files: runtime/filetype.vim + +Patch 8.1.0776 +Problem: Travis does not build a version without GUI on Linux. +Solution: Add an environment for tiny features without GUI. +Files: .travis.yml + +Patch 8.1.0777 +Problem: Win32: using pipes for channel does not work well. +Solution: Use a larger buffer and handle overlaps. (Yasuhiro Matsumoto, + closes #3782) +Files: src/channel.c, src/os_win32.c + +Patch 8.1.0778 +Problem: Terminal test fails on MS-Windows. +Solution: Temporarily skip the test on MS-Windows. Do run it both in + terminal and GUI on other systems. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0779 +Problem: Argument for message functions is inconsistent. +Solution: Make first argument to msg() "char *". +Files: src/buffer.c, src/crypt.c, src/edit.c, src/ex_cmds.c, src/eval.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/farsi.c, + src/if_cscope.c, src/fileio.c, src/getchar.c, src/globals.h, + src/gui.c, src/if_perl.xs, src/netbeans.c, src/gui_w32.c, + src/hardcopy.c, src/if_mzsch.c, src/if_py_both.h, src/if_ruby.c, + src/if_tcl.c, src/mark.c, src/mbyte.c, src/menu.c, src/memline.c, + src/message.c, src/misc1.c, src/misc2.c, src/normal.c, src/ops.c, + src/option.c, src/os_amiga.c, src/os_unix.c, src/os_win32.c, + src/proto/message.pro, src/quickfix.c, src/sign.c, src/regexp.c, + src/ui.c, src/screen.c, src/search.c, src/spell.c, + src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, src/undo.c, + src/userfunc.c, src/version.c, src/vim.h, src/window.c, + src/proto/eval.pro, src/evalfunc.c, src/ex_eval.c, src/farsi.h + +Patch 8.1.0780 +Problem: Terminal test fails on Mac. +Solution: Skip the test on Mac. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0781 +Problem: Build error when using if_xcmdsrv.c. +Solution: Add missing part of 8.1.0779. +Files: src/if_xcmdsrv.c + +Patch 8.1.0782 +Problem: Win32: cursor blinks when Vim is not active. +Solution: Remove call to setActiveWindow(). (Yasuhiro Matsumoto, + closes #3778) +Files: src/gui_w32.c, src/proto/gui_w32.pro, src/menu.c + +Patch 8.1.0783 +Problem: Compiler warning for signed/unsigned. +Solution: Add type cast. Change type of buffer. (Ozaki Kiichi, closes #3827) +Files: src/main.c, src/message.c + +Patch 8.1.0784 +Problem: Messy indent in if statement. +Solution: Improve structure of if statement. (Ozaki Kiichi, closes #3826) +Files: src/os_win32.c + +Patch 8.1.0785 +Problem: Depending on the configuration some functions are unused. +Solution: Add more #ifdefs, remove unused functions. (Dominique Pelle, + closes #3822) +Files: src/buffer.c, src/channel.c, src/ex_cmds2.c, src/ex_docmd.c, + src/fileio.c, src/getchar.c, src/gui_gtk_x11.c, src/hashtab.c, + src/json.c, src/mbyte.c, src/message.c, src/misc1.c, src/misc2.c, + src/ops.c, src/option.c, src/os_unix.c, src/proto/os_unix.pro, + src/proto/regexp.pro, src/proto/terminal.pro, src/regexp.c, + src/screen.c, src/search.c, src/syntax.c, src/term.c, + src/terminal.c, src/ui.c, src/userfunc.c + +Patch 8.1.0786 +Problem: ml_get error when updating the status line and a terminal had its + scrollback cleared. (Chris Patuzzo) +Solution: Check the cursor position when drawing the status line. + (closes #3830) +Files: src/buffer.c, src/testdir/test_terminal.vim + +Patch 8.1.0787 +Problem: Compiler warning for unused function. (Tony Mechelynck) +Solution: Tune #ifdef around setjmp functions. +Files: src/os_unix.c + +Patch 8.1.0788 +Problem: Cannot build with tiny features. +Solution: Adjust #ifdefs. +Files: src/os_unix.c + +Patch 8.1.0789 +Problem: Sourcing a session sets v:errmsg. +Solution: Use "%argdel" instead of "argdel *". (Jason Franklin) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0790 +Problem: Code for creating tabpages in session is too complex. +Solution: Simplify the code. (Jason Franklin) +Files: src/ex_docmd.c + +Patch 8.1.0791 +Problem: A few compiler warnings on VMS. +Solution: Remove type cast. Adjust #ifdef. (Zoltan Arpadffy) +Files: src/os_unix.c, src/proto.h + +Patch 8.1.0792 +Problem: Popup menu is displayed on top of the cmdline window if it is + opened from Insert completion. (Bjorn Linse) +Solution: Remove the popup menu. Restore the cursor position. + (closes #3838) +Files: src/edit.c, src/ex_getln.c + +Patch 8.1.0793 +Problem: Incorrect error messages for functions that now take a Blob + argument. +Solution: Adjust the error messages. (Dominique Pelle, closes #3846) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/globals.h, + src/testdir/test_blob.vim, src/testdir/test_listdict.vim + +Patch 8.1.0794 +Problem: White space before " -Ntabmove" causes problems. +Solution: Skip whitespace. (Ozaki Kiichi, closes #3841) +Files: src/ex_docmd.c, src/testdir/test_tabpage.vim + +Patch 8.1.0795 (after 8.1.0792) +Problem: Cannot build without popup menu. +Solution: Add #ifdef +Files: src/ex_getln.c + +Patch 8.1.0796 +Problem: MS-Windows 7: problem with named pipe on channel. +Solution: Put back the disconnect/connect calls. (Yasuhiro Matsumoto, + closes #3833) +Files: src/channel.c, src/testdir/test_terminal.vim + +Patch 8.1.0797 +Problem: Error E898 is used twice. +Solution: Rename the Blob error to E899. (closes #3853) +Files: src/evalfunc.c, runtime/doc/eval.txt, + src/testdir/test_listdict.vim + +Patch 8.1.0798 +Problem: Changing a blob while iterating over it works strangely. +Solution: Make a copy of the Blob before iterating. +Files: src/blob.c, src/proto/blob.pro, src/eval.c, + src/testdir/test_blob.vim + +Patch 8.1.0799 +Problem: Calling deleted function; test doesn't work on Mac. +Solution: Wait for the function to be called before deleting it. Use a job + to write to the pty, unless in the GUI. (Ozaki Kiichi, + closes #3854) +Files: src/testdir/test_channel.vim, src/testdir/test_terminal.vim + +Patch 8.1.0800 +Problem: May use a lot of memory when a function creates a cyclic + reference. +Solution: After saving a funccal many times, invoke the garbage collector. + (closes #3835) +Files: src/userfunc.c + +Patch 8.1.0801 +Problem: MinGW: no hint that tests fail because of small terminal. +Solution: Add a rule for test1 that checks for "wrongtermsize". + (msoyka-of-wharton) +Files: src/testdir/Make_ming.mak + +Patch 8.1.0802 +Problem: Negative index doesn't work for Blob. +Solution: Make it work, add a test. (closes #3856) +Files: src/blob.c, src/proto/blob.pro, src/eval.c, + src/testdir/test_blob.vim + +Patch 8.1.0803 +Problem: Session file has problem with single quote in file name. (Jon + Crowe) +Solution: Use a double quoted string. Add a test. +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0804 +Problem: Crash when setting v:errmsg to empty list. (Jason Franklin) +Solution: Separate getting value and assigning result. +Files: src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.0805 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_MBYTE, part 1. +Files: src/buffer.c, src/charset.c, src/diff.c, src/digraph.c, + src/edit.c, src/eval.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/fileio.c, + src/fold.c, src/gui.c, src/gui_mac.c, src/gui_photon.c, + src/gui_w32.c + +Patch 8.1.0806 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_MBYTE, part 2. +Files: src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/gui_w32.c, + src/gui_x11.c, src/hardcopy.c, src/if_xcmdsrv.c, src/json.c, + src/kword_test.c, src/main.c, src/mbyte.c, src/memline.c, + src/message.c, src/misc1.c, src/misc2.c, src/move.c, src/normal.c, + src/ops.c, src/option.c, src/charset.c + +Patch 8.1.0807 +Problem: Session test fails on MS-Windows. +Solution: Don't try creating file with illegal name. +Files: src/testdir/test_mksession.vim + +Patch 8.1.0808 +Problem: MS-Windows: build error with GUI. +Solution: Remove "static". +Files: src/gui_w32.c + +Patch 8.1.0809 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_MBYTE, part 3. +Files: src/os_amiga.c, src/os_mswin.c, src/os_unix.c, src/os_w32exe.c, + src/os_win32.c, src/quickfix.c, src/regexp.c, src/regexp_nfa.c, + src/screen.c + +Patch 8.1.0810 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_MBYTE, part 4. +Files: src/getchar.c, src/search.c, src/sign.c, src/spell.c, + src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, src/ui.c, + src/version.c, src/winclip.c, src/window.c, src/glbl_ime.cpp, + src/ex_cmds.h, src/globals.h, src/gui.h, src/if_py_both.h, + src/macros.h, src/option.h, src/os_mac.h, src/os_win32.h, + src/proto.h, src/spell.h, src/structs.h, src/vim.h + +Patch 8.1.0811 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_MBYTE, the final chapter. +Files: src/feature.h, src/vim.h, src/crypt_zip.c, src/fileio.c, + src/message.c, src/spell.h, src/structs.h, src/config.h.in, + src/configure.ac, src/auto/configure, src/testdir/runtest.vim, + src/testdir/test_alot_utf8.vim, src/testdir/test_arabic.vim, + src/testdir/test_charsearch_utf8.vim, + src/testdir/test_cmdline.vim, src/testdir/test_digraph.vim, + src/testdir/test_display.vim, src/testdir/test_edit.vim, + src/testdir/test_erasebackword.vim, + src/testdir/test_expr_utf8.vim, src/testdir/test_functions.vim, + src/testdir/test_ga.vim, src/testdir/test_iminsert.vim, + src/testdir/test_increment_dbcs.vim, src/testdir/test_json.vim, + src/testdir/test_makeencoding.vim, src/testdir/test_maparg.vim, + src/testdir/test_mapping.vim, src/testdir/test_marks.vim, + src/testdir/test_match.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_mksession_utf8.vim, src/testdir/test_normal.vim, + src/testdir/test_plus_arg_edit.vim, src/testdir/test_profile.vim, + src/testdir/test_put.vim, src/testdir/test_regex_char_classes.vim, + src/testdir/test_regexp_utf8.vim, src/testdir/test_search.vim, + src/testdir/test_source_utf8.vim, src/testdir/test_spell.vim, + src/testdir/test_startup_utf8.vim, + src/testdir/test_termencoding.vim, src/testdir/test_terminal.vim, + src/testdir/test_utf8.vim, src/testdir/test_utf8_comparisons.vim, + src/testdir/test_viminfo.vim, src/testdir/test_virtualedit.vim, + src/testdir/test_visual.vim, src/testdir/test_wordcount.vim, + src/testdir/test_writefile.vim, src/appveyor.bat, src/os_macosx.m + +Patch 8.1.0812 +Problem: Unicode 16 feature is not useful and cannot be detected. +Solution: Remove UNICODE16. +Files: src/screen.c, src/vim.h, src/feature.h + +Patch 8.1.0813 +Problem: FileChangedShell not sufficiently tested. +Solution: Add a more comprehensive test case. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.0814 +Problem: :mksession cannot handle a very long 'runtimepath'. (Timothy + Madden) +Solution: Expand each part separately, instead of the whole option at once. + (Christian Brabandt, closes #3466) +Files: src/option.c, src/testdir/test_mksession.vim + +Patch 8.1.0815 +Problem: Dialog for file changed outside of Vim not tested. +Solution: Add a test. Move FileChangedShell test. Add 'L' flag to + feedkeys(). +Files: src/testdir/test_autocmd.vim, src/testdir/test_filechanged.vim, + src/testdir/Make_all.mak, src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.1.0816 +Problem: Test for 'runtimepath' in session fails on MS-Windows. +Solution: Skip the test for now. +Files: src/testdir/test_mksession.vim + +Patch 8.1.0817 +Problem: ":=" command is not tested. +Solution: Add a test. (Dominique Pelle, closes #3859) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_ex_equal.vim + +Patch 8.1.0818 +Problem: MS-Windows: cannot send large data with ch_sendraw(). +Solution: Split write into several WriteFile() calls. (Yasuhiro Matsumoto, + closes #3823) +Files: src/channel.c, src/os_win32.c, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py, src/vim.h + +Patch 8.1.0819 +Problem: A failed assert with a long string is hard to read. +Solution: Shorten the assert message. +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 8.1.0820 +Problem: Test for sending large data over channel sometimes fails. +Solution: Handle that the job may have finished early. Also fix that file + changed test doesn't work in the GUI and reduce flakiness. (Ozaki + Kiichi, closes #3861) +Files: src/testdir/test_channel.vim, src/testdir/test_filechanged.vim + +Patch 8.1.0821 +Problem: Xxd "usage" output and other arguments not tested. +Solution: Add a test to trigger the usage output in various ways. Fix + uncovered problem. +Files: src/testdir/test_xxd.vim, src/xxd/xxd.c + +Patch 8.1.0822 +Problem: Peeking and flushing output slows down execution. +Solution: Do not update the mode message when global_busy is set. Do not + flush when only peeking for a character. (Ken Takata) +Files: src/getchar.c, src/screen.c, src/proto/screen.pro, src/edit.c + +Patch 8.1.0823 +Problem: Not sufficient testing of xxd. +Solution: Add some more test coverage. +Files: src/testdir/test_xxd.vim + +Patch 8.1.0824 +Problem: SunOS/Solaris has a problem with ttys. +Solution: Add mch_isatty() with extra handling for SunOS. (Ozaki Kiichi, + closes #3865) +Files: src/auto/configure, src/channel.c, src/config.h.in, + src/configure.ac, src/os_unix.c, src/proto/pty.pro, src/pty.c, + src/terminal.c + +Patch 8.1.0825 +Problem: Code for autocommands is mixed with file I/O code. +Solution: Move autocommand code to a separate file. (Yegappan Lakshmanan, + closes #3863) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/README.txt, src/autocmd.c, + src/fileio.c, src/globals.h, src/proto.h, src/proto/autocmd.pro, + src/proto/fileio.pro + +Patch 8.1.0826 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_VIRTUALEDIT. Adds about 10Kbyte to the code. +Files: src/buffer.c, src/charset.c, src/edit.c, src/eval.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/feature.h, + src/globals.h, src/gui.c, src/if_py_both.h, src/macros.h, + src/mark.c, src/mbyte.c, src/memline.c, src/menu.c, src/misc1.c, + src/misc2.c, src/move.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/option.h, src/screen.c, src/search.c, + src/spell.c, src/structs.h, src/tag.c, src/ui.c, src/undo.c, + src/userfunc.c, src/version.c, src/vim.h, src/window.c + +Patch 8.1.0827 (after 8.1.0825) +Problem: Missing dependency in Makefile. +Solution: Add dependency from autocmd.o on auto/osdef.h +Files: src/Makefile + +Patch 8.1.0828 +Problem: Still using FEAT_VIRTUALEDIT. +Solution: Remove last use of FEAT_VIRTUALEDIT. +Files: src/quickfix.c + +Patch 8.1.0829 +Problem: When 'hidden' is set session creates extra buffers. +Solution: Move :badd commands to the end. (Jason Franklin) +Files: src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.1.0830 +Problem: Test leaves directory behind on MS-Windows. +Solution: Close buffer before deleting directory. +Files: src/testdir/test_swap.vim + +Patch 8.1.0831 +Problem: Xxd test fails if man page has dos fileformat. +Solution: Make a copy with unix fileformat. +Files: src/testdir/test_xxd.vim + +Patch 8.1.0832 +Problem: confirm() is not tested. +Solution: Add a test. (Dominique Pelle, closes #3868) +Files: src/testdir/test_functions.vim + +Patch 8.1.0833 +Problem: Memory leak when jumps output is filtered. +Solution: Free the filtered name. (Dominique Pelle, closes #3869) +Files: src/mark.c + +Patch 8.1.0834 +Problem: GUI may wait too long before dealing with messages. Returning + early may cause a mapping to time out. +Solution: Use the waiting loop from Unix also for the GUI. + (closes #3817, closes #3824) +Files: src/ui.c, src/proto/ui.pro, src/os_unix.c, src/gui.c, + src/testdir/screendump.vim + +Patch 8.1.0835 +Problem: GUI build fails on MS-Windows. +Solution: Adjust #ifdef. +Files: src/ui.c + +Patch 8.1.0836 +Problem: User completion test can fail on MS-Windows. +Solution: Allow for other names before "Administrator". +Files: src/testdir/test_cmdline.vim + +Patch 8.1.0837 +Problem: Timer interrupting cursorhold and mapping not tested. +Solution: Add tests with timers. (Ozaki Kiichi, closes #3871) +Files: src/testdir/test_autocmd.vim, src/testdir/test_mapping.vim + +Patch 8.1.0838 +Problem: Compiler warning for type conversion. +Solution: Add a type cast. (Mike Williams) +Files: src/channel.c + +Patch 8.1.0839 +Problem: When using VTP wrong colors after a color scheme change. +Solution: When VTP is active always clear after a color scheme change. + (Nobuhiro Takasaki, closes #3872) +Files: src/ex_docmd.c + +Patch 8.1.0840 +Problem: getchar(0) never returns a character in the terminal. +Solution: Call wait_func() at least once. +Files: src/ui.c, src/testdir/test_timers.vim, src/gui_gtk_x11.c, + src/gui_w32.c, src/gui_photon.c, src/gui_x11.c + +Patch 8.1.0841 +Problem: Travis config to get Lua on macOS is too complicated. +Solution: Use an addons entry. (Ozaki Kiichi, closes #3876) +Files: .travis.yml + +Patch 8.1.0842 +Problem: getchar_zero test fails on MS-Windows. +Solution: Disable the test for now. +Files: src/testdir/test_timers.vim + +Patch 8.1.0843 +Problem: Memory leak when running "make test_cd". +Solution: Free the stack element when failing. (Dominique Pelle, + closes #3877) +Files: src/misc2.c + +Patch 8.1.0844 +Problem: When timer fails test will hang forever. +Solution: Use reltime() to limit waiting time. (Ozaki Kiichi, closes #3878) +Files: src/testdir/test_timers.vim + +Patch 8.1.0845 +Problem: Having job_status() free the job causes problems. +Solution: Do not actually free the job or terminal yet, put it in a list and + free it a bit later. Do not use a terminal after checking the job + status. (closes #3873) +Files: src/channel.c, src/terminal.c, src/proto/terminal.pro, src/misc2.c + +Patch 8.1.0846 +Problem: Not easy to recognize the system Vim runs on. +Solution: Add more items to the features list. (Ozaki Kiichi, closes #3855) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_channel.vim, src/testdir/test_functions.vim, + src/testdir/test_terminal.vim, src/testdir/test_writefile.vim + +Patch 8.1.0847 +Problem: May use terminal after it was cleaned up. +Solution: Use the job pointer. +Files: src/terminal.c + +Patch 8.1.0848 +Problem: Cannot build with Ruby 1.8. (Tom G. Christensen) +Solution: Use rb-str_new2(). (Yasuhiro Matsumoto, closes #3883, + closes #3884) +Files: src/if_ruby.c + +Patch 8.1.0849 +Problem: Cursorline highlight is not always updated. +Solution: Set w_last_cursorline when redrawing. Fix resetting cursor flags + when using the popup menu. +Files: src/screen.c, src/popupmnu.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_cursorline_yank_01.dump + +Patch 8.1.0850 +Problem: Test for 'backupskip' is not correct. +Solution: Split the option in parts and use expand(). (Michael Soyka) +Files: src/testdir/test_options.vim + +Patch 8.1.0851 +Problem: feedkeys() with "L" does not work properly. +Solution: Do not set typebuf_was_filled when using "L". (Ozaki Kiichi, + closes #3885) +Files: src/evalfunc.c, src/testdir/test_autocmd.vim, + src/testdir/test_mapping.vim, src/testdir/test_timers.vim + +Patch 8.1.0852 +Problem: findfile() and finddir() are not properly tested. +Solution: Extend the test and add more. (Dominique Pelle, closes #3880) +Files: src/testdir/test_findfile.vim + +Patch 8.1.0853 (after 8.1.0850) +Problem: Options test fails on Mac. +Solution: Remove a trailing slash from $TMPDIR. +Files: src/testdir/test_options.vim + +Patch 8.1.0854 +Problem: xxd does not work with more than 32 bit addresses. +Solution: Add support for 64 bit addresses. (Christer Jensen, closes #3791) +Files: src/xxd/xxd.c + +Patch 8.1.0855 +Problem: Cannot build xxd with MSVC 10. +Solution: Move declaration to start of block. +Files: src/xxd/xxd.c + +Patch 8.1.0856 +Problem: When scrolling a window other than the current one the cursorline + highlighting is not always updated. (Jason Franklin) +Solution: Call redraw_for_cursorline() after scrolling. Only set + w_last_cursorline when drawing the cursor line. Reset the lines + to be redrawn also when redrawing the whole window. +Files: src/move.c, src/proto/move.pro, src/normal.c + +Patch 8.1.0857 +Problem: Indent functionality is not separated. +Solution: Move indent functionality into a new file. (Yegappan Lakshmanan, + closes #3886) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/edit.c, src/indent.c, + src/misc1.c, src/proto.h, src/proto/edit.pro, + src/proto/indent.pro, src/proto/misc1.pro + +Patch 8.1.0858 +Problem: 'indentkeys' and 'cinkeys' defaults are different. +Solution: Make them the same, update docs. (close #3882) +Files: src/option.c, runtime/doc/options.txt, runtime/doc/indent.txt + +Patch 8.1.0859 +Problem: "%v" in 'errorformat' does not handle multibyte characters. +Solution: Handle multibyte characters. (Yegappan Lakshmanan, closes #3700) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0860 +Problem: Debug lines left in the code. +Solution: Delete the lines. +Files: src/edit.c + +Patch 8.1.0861 +Problem: Building with MinGW and static libc doesn't work. +Solution: Change the LIB argument. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0862 +Problem: No verbose version of character classes. +Solution: Add [:ident:], [:keyword:] and [:fname:]. (Ozaki Kiichi, + closes #1373) +Files: runtime/doc/pattern.txt, src/regexp.c, src/regexp_nfa.c, + src/testdir/test_regexp_utf8.vim + +Patch 8.1.0863 +Problem: Cannot see what signal caused a job to end. +Solution: Add "termsig" to job_info(). (Ozaki Kiichi, closes #3786) +Files: runtime/doc/eval.txt, src/channel.c, src/os_unix.c, src/structs.h, + src/testdir/test_channel.vim + +Patch 8.1.0864 +Problem: Cannot have a local value for 'scrolloff' and 'sidescrolloff'. + (Gary Holloway) +Solution: Make 'scrolloff' and 'sidescrolloff' global-local. (mostly by + Aron Widforss, closes #3539) +Files: runtime/doc/options.txt, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/gui.c, src/misc2.c, src/move.c, src/normal.c, + src/option.c, src/proto/option.pro, src/option.h, src/search.c, + src/structs.h, src/window.c, src/testdir/test_options.vim + +Patch 8.1.0865 +Problem: When 'listchars' only contains "nbsp:X" it does not work. +Solution: Set extra_check when lcs_nbsp is set. (Ralf Schandl, closes #3889) +Files: src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.0866 +Problem: Build file dependencies are outdated. (John Little) +Solution: Run "make proto" and "make depend". +Files: src/vim.h, src/Makefile, src/proto/sign.pro, src/proto/gui_w32.pro + +Patch 8.1.0867 +Problem: Cannot build Python interface with Python 2.4. (Tom G. Christensen) +Solution: Define PyBytes_FromStringAndSize. (Ken Takata, closes #3888) +Files: src/if_python.c + +Patch 8.1.0868 +Problem: Crash if triggering garbage collector after a function call. + (Michael Henry) +Solution: Don't call the garbage collector right away, do it later. + (closes #3894) +Files: src/userfunc.c + +Patch 8.1.0869 +Problem: Travis CI script is too complicated. +Solution: Add names to environments. Move appveyor script outside of src + directory. (Ozaki Kiichi, closes #3890) +Files: .travis.yml, appveyor.yml, ci/appveyor.bat, src/appveyor.bat, + Filelist + +Patch 8.1.0870 +Problem: Vim doesn't use the new ConPTY support in Windows 10. +Solution: Use ConPTY support, if available. (Nobuhiro Takasaki, closes #3794) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/terminal.txt, src/channel.c, src/evalfunc.c, + src/globals.h, src/option.c, src/option.h, src/os_win32.c, + src/proto/terminal.pro, src/structs.h, src/terminal.c, + src/testdir/gen_opt_test.vim, src/testdir/test_autocmd.vim, + src/testdir/test_mksession.vim, src/testdir/test_terminal.vim + +Patch 8.1.0871 +Problem: Build error when building with Ruby 2.6.0. +Solution: Change argument of rb_int2big_stub(). (Android Baumann, + closes #3899) +Files: src/if_ruby.c + +Patch 8.1.0872 +Problem: Confusing condition. +Solution: Use "==" instead of "<=". +Files: src/gui_gtk_x11.c + +Patch 8.1.0873 +Problem: List if distributed files does not include the matchit autoload + directory. +Solution: Add the directory. +Files: src/Filelist + +Patch 8.1.0874 +Problem: Using old style comments in new file. +Solution: Convert to // comments in new file. (Yegappan Lakshmanan) +Files: src/indent.c + +Patch 8.1.0875 +Problem: Not all errors of marks and findfile()/finddir() are tested. +Solution: Add more test coverage. (Dominique Pelle) +Files: src/testdir/test_findfile.vim, src/testdir/test_marks.vim + +Patch 8.1.0876 +Problem: Completion match not displayed when popup menu is not shown. +Solution: Call update_screen() when not displaying the popup menu to show + the inserted match. (Ken Takata, Hirohito Higashi) +Files: src/edit.c + +Patch 8.1.0877 +Problem: New buffer used every time the quickfix window is opened. +Solution: Reuse the buffer. (Yegappan Lakshmanan, closes #3902) +Files: src/buffer.c, src/proto/quickfix.pro, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.1.0878 +Problem: Test for has('bsd') fails on some BSD systems. +Solution: Adjust the uname match. (James McCoy, closes #3909) +Files: src/testdir/test_functions.vim + +Patch 8.1.0879 +Problem: MS-Windows: temp name encoding can be wrong. +Solution: Convert from active code page to 'encoding'. (Yasuhiro Matsumoto, + closes #3520, closes #1698) +Files: src/fileio.c + +Patch 8.1.0880 +Problem: MS-Windows: inconsistent selection of winpty/conpty. +Solution: Name option 'termwintype', use ++type argument and "term_pty" for + term_start(). (Hirohito Higashi, closes #3915) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/terminal.txt, src/channel.c, src/option.c, + src/option.h, src/structs.h, src/terminal.c, + src/testdir/gen_opt_test.vim, runtime/optwin.vim, + runtime/doc/quickref.txt + +Patch 8.1.0881 +Problem: Can execute shell commands in rvim through interfaces. +Solution: Disable using interfaces in restricted mode. Allow for writing + file with writefile(), histadd() and a few others. +Files: runtime/doc/starting.txt, src/if_perl.xs, src/if_cmds.h, + src/ex_cmds.c, src/ex_docmd.c, src/evalfunc.c, + src/testdir/test_restricted.vim, src/testdir/Make_all.mak + +Patch 8.1.0882 (after 8.1.0879) +Problem: Checking for FEAT_MBYTE which doesn't exist anymore. (Christ van + Willegen) +Solution: Remove it. +Files: src/fileio.c + +Patch 8.1.0883 +Problem: Missing some changes for Ex commands. +Solution: Add missing changes in header file. +Files: src/ex_cmds.h + +Patch 8.1.0884 +Problem: Double check for bsd systems. +Solution: Delete the old line. +Files: src/testdir/test_functions.vim + +Patch 8.1.0885 +Problem: Test for restricted hangs on MS-Windows GUI. +Solution: Skip the test. +Files: src/testdir/test_restricted.vim + +Patch 8.1.0886 +Problem: Compiler warning for adding to NULL pointer and a condition that + is always true. +Solution: Check for NULL pointer before adding. Remove useless "if". + (Friedirch, closes #3913) +Files: src/dosinst.c, src/search.c + +Patch 8.1.0887 +Problem: The 'l' flag in :substitute is sticky. +Solution: Reset the flag. (Dominique Pelle, closes #3925) +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.1.0888 +Problem: The a: dict is not immutable as documented. +Solution: Make the a:dict immutable, add a test. (Ozaki Kiichi, Yasuhiro + Matsumoto, closes #3929) +Files: src/eval.c, src/userfunc.c, src/testdir/test_let.vim, + src/testdir/test_listdict.vim + +Patch 8.1.0889 +Problem: MS-Windows: a channel write may hang. +Solution: Check for WriteFile() not writing anything. (Yasuhiro Matsumoto, + closes #3920) +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel_pipe.py + +Patch 8.1.0890 +Problem: Pty allocation wrong if using file for out channel and using null + for in channel and null for error channel. +Solution: Correct using use_file_for_out in condition. (Ozaki Kiichi, closes + #3917) +Files: src/os_unix.c, src/testdir/test_channel.vim + +Patch 8.1.0891 +Problem: Substitute command insufficiently tested. +Solution: Add more test coverage. (Dominique Pelle) +Files: src/testdir/test_substitute.vim + +Patch 8.1.0892 +Problem: Failure when closing a window when location list is in use. +Solution: Handle the situation gracefully. Make sure memory for 'switchbuf' + is not freed at the wrong time. (Yegappan Lakshmanan, + closes #3928) +Files: src/eval.c, src/evalfunc.c, src/proto/window.pro, src/quickfix.c, + src/testdir/test_quickfix.vim, src/window.c + +Patch 8.1.0893 +Problem: Terminal test is a bit flaky. +Solution: Add test_terminal_no_cmd() to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0894 +Problem: MS-Windows: resolve() does not return a reparse point. +Solution: Improve resolve(). (Yasuhiro Matsumoto, closes #3896) +Files: runtime/doc/eval.txt, src/buffer.c, src/evalfunc.c, + src/os_mswin.c, src/proto/os_mswin.pro, + src/testdir/test_functions.vim + +Patch 8.1.0895 (after 8.1.0879) +Problem: MS-Windows: dealing with temp name encoding not quite right. +Solution: Use more wide functions. (Ken Takata, closes #3921) +Files: src/fileio.c + +Patch 8.1.0896 +Problem: Tests for restricted mode not run for MS-Windows GUI. +Solution: Make tests also work in MS-Windows GUI. +Files: src/testdir/test_restricted.vim + +Patch 8.1.0897 +Problem: Can modify a:000 when using a reference. +Solution: Make check for locked variable stricter. (Ozaki Kiichi, + closes #3930) +Files: src/dict.c, src/eval.c, src/evalfunc.c, src/proto/eval.pro, + src/testdir/test_channel.vim, src/testdir/test_let.vim, + src/userfunc.c + +Patch 8.1.0898 +Problem: A messed up rgb.txt can crash Vim. (Pavel Cheremushkin) +Solution: Limit to 10000 entries. Also don't retry many times when the file + cannot be read. +Files: src/term.c + +Patch 8.1.0899 +Problem: No need to check restricted mode for setwinvar(). +Solution: Remove check_restricted(). +Files: src/eval.c + +Patch 8.1.0900 +Problem: ConPTY may crash with 32-bit build. +Solution: Fix function declarations. (Ken Takata, closes #3943) +Files: src/terminal.c + +Patch 8.1.0901 +Problem: Index in getjumplist() may be wrong. (Epheien) +Solution: Call cleanup_jumplist() earlier. (Yegappan Lakshmanan, + closes #3942) +Files: src/evalfunc.c, src/testdir/test_jumplist.vim + +Patch 8.1.0902 +Problem: Incomplete set of assignment operators. +Solution: Add /=, *= and %=. (Ozaki Kiichi, closes #3931) +Files: runtime/doc/eval.txt src/eval.c src/testdir/test_vimscript.vim + +Patch 8.1.0903 +Problem: Struct uses more bytes than needed. +Solution: Reorder members of regitem_S. (Dominique Pelle, closes #3936) +Files: src/regexp.c + +Patch 8.1.0904 +Problem: USE_LONG_FNAME never defined. +Solution: Remove using USE_LONG_FNAME. (Ken Takata, closes #3938) +Files: src/buffer.c, src/ex_cmds.c, src/fileio.c + +Patch 8.1.0905 +Problem: Complicated regexp causes a crash. (Kuang-che Wu) +Solution: Limit the recursiveness of addstate(). (closes #3941) +Files: src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0906 +Problem: Using clumsy way to get console window handle. +Solution: Use GetConsoleWindow(). (Ken Takata, closes #3940) +Files: src/os_mswin.c + +Patch 8.1.0907 +Problem: CI tests on AppVeyor are failing. +Solution: Reduce the recursiveness limit for regexp. +Files: src/regexp_nfa.c + +Patch 8.1.0908 +Problem: Can't handle large value for %{nr}v in regexp. (Kuang-che Wu) +Solution: Give an error if the value is too large. (closes #3948) +Files: src/regexp_nfa.c + +Patch 8.1.0909 +Problem: MS-Windows: using ConPTY even though it is not stable. +Solution: When ConPTY version is unstable, prefer using winpty. (Ken Takata, + closes #3949) +Files: runtime/doc/options.txt, src/os_win32.c, src/proto/os_win32.pro, + src/terminal.c + +Patch 8.1.0910 +Problem: Crash with tricky search pattern. (Kuang-che Wu) +Solution: Check for running out of memory. (closes #3950) +Files: src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0911 +Problem: Tag line with Ex command cannot have extra fields. +Solution: Recognize |;" as the end of the command. (closes #2402) +Files: runtime/doc/tagsrch.txt, src/tag.c, src/testdir/test_taglist.vim + +Patch 8.1.0912 +Problem: MS-Windows: warning for signed/unsigned. +Solution: Add type cast. (Nobuhiro Takasaki, closes #3945) +Files: src/terminal.c + +Patch 8.1.0913 +Problem: CI crashes when running out of memory. +Solution: Apply 'maxmempattern' also to new regexp engine. +Files: src/regexp_nfa.c + +Patch 8.1.0914 +Problem: Code related to findfile() is spread out. +Solution: Put findfile() related code into a new source file. (Yegappan + Lakshmanan, closes #3934) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/README.txt, src/findfile.c, + src/misc1.c, src/misc2.c, src/proto.h, src/proto/findfile.pro, + src/proto/misc1.pro, src/proto/misc2.pro, src/proto/window.pro, + src/window.c + +Patch 8.1.0915 +Problem: fsync() may not work properly on Mac. +Solution: Use fcntl() with F_FULLFSYNC. (suggested by Justin M. Keyes) +Files: src/fileio.c, src/proto/fileio.pro, src/evalfunc.c, src/memfile.c + +Patch 8.1.0916 +Problem: With Python 3.7 "find_module" is not made available. +Solution: Also add "find_module" with Python 3.7. (Joel Frederico, + closes #3954) +Files: src/if_py_both.h + +Patch 8.1.0917 +Problem: Double free when running out of memory. +Solution: Remove one free. (Ken Takata, closes #3955) +Files: src/userfunc.c + +Patch 8.1.0918 +Problem: MS-Windows: startup messages are not converted. +Solution: Convert messages when the current codepage differs from + 'encoding'. (Yasuhiro Matsumoto, closes #3914) +Files: src/message.c, src/os_mswin.c, src/vim.h + +Patch 8.1.0919 +Problem: Compiler warnings. +Solution: Add type casts. (Mike Williams) +Files: src/message.c, src/regexp_nfa.c + +Patch 8.1.0920 +Problem: In Terminal-Normal mode job output messes up the window. +Solution: Postpone scrolling and updating the buffer when in Terminal-Normal + mode. +Files: src/terminal.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_01.dump, + src/testdir/dumps/Test_terminal_02.dump, + src/testdir/dumps/Test_terminal_03.dump + +Patch 8.1.0921 +Problem: Terminal test sometimes fails; using memory after free. +Solution: Fee memory a bit later. Add test to cover this. Disable flaky + screenshot test. (closes #3956) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0922 +Problem: Terminal scrollback test is flaky. +Solution: Wait a bit before running the tail command. +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_01.dump, + src/testdir/dumps/Test_terminal_02.dump, + src/testdir/dumps/Test_terminal_03.dump + +Patch 8.1.0923 +Problem: Terminal dump diff swap does not update file names. +Solution: Also swap the file name. Add a test. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.0924 +Problem: Terminal scrollback test still flaky. +Solution: Wait a bit longer before running the tail command. +Files: src/testdir/test_terminal.vim + +Patch 8.1.0925 +Problem: Terminal scrollback test still still flaky. +Solution: Explicitly set the shell. Disable ruler. (Ozaki Kiichi, + closes #3966) +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_01.dump, + src/testdir/dumps/Test_terminal_02.dump, + src/testdir/dumps/Test_terminal_03.dump + +Patch 8.1.0926 +Problem: No test for :wnext, :wNext and :wprevious. +Solution: Add a test. (Dominique Pelle, closes #3963) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_wnext.vim + +Patch 8.1.0927 +Problem: USE_CR is never defined. +Solution: Remove usage of USE_CR. (Ken Takata, closes #3958) +Files: runtime/doc/options.txt, src/diff.c, src/evalfunc.c, + src/ex_cmds2.c, src/fileio.c, src/message.c, src/ops.c, + src/option.h, src/proto/ex_cmds2.pro, src/proto/fileio.pro, + src/tag.c + +Patch 8.1.0928 (after 8.1.0927) +Problem: Stray log function call. +Solution: Remove the log function call. +Files: src/ex_cmds2.c + +Patch 8.1.0929 +Problem: No error when requesting ConPTY but it's not available. +Solution: Add an error message. (Hirohito Higashi, closes #3967) +Files: runtime/doc/terminal.txt, src/terminal.c + +Patch 8.1.0930 +Problem: Typo in Makefile. +Solution: Change ABORT_CLFAGS to ABORT_CFLAGS. (Kuang-che Wu, closes #3977) +Files: src/Makefile + +Patch 8.1.0931 +Problem: vtp_working included in GUI build but unused. +Solution: Adjust #ifdefs. (Ken Takata, closes #3971) +Files: src/os_win32.c + +Patch 8.1.0932 +Problem: Farsi support is outdated and unused. +Solution: Delete the Farsi support. +Files: Filelist, src/farsi.c, src/proto/farsi.pro, src/farsi.h, src/edit.c, + src/main.c, src/normal.c, src/option.c, src/getchar.c, + src/ex_cmds.c, src/search.c, src/ex_getln.c, src/charset.c, + src/evalfunc.c, src/screen.c, src/window.c, src/globals.h, + src/proto.h, farsi/README.txt, src/structs.h, + farsi/fonts/DOS/far-a01.com, farsi/fonts/SunOs/far-a01.fb, + farsi/fonts/UNIXs/far-a01.f16, farsi/fonts/UNIXs/far-a01.pcf.gz, + farsi/fonts/UNIXs/far-a01.pcf.Z, farsi/fonts/WINDOWS/far-a01.fon, + src/Makefile, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/configure.ac, src/auto/configure, + src/config.h.in, src/testdir/test_farsi.vim, src/version.c, + src/testdir/Make_all.mak, runtime/doc/options.txt, + runtime/doc/starting.txt, runtime/doc/quickref.txt, + runtime/doc/farsi.txt + +Patch 8.1.0933 +Problem: When using VTP scroll region isn't used properly. +Solution: Make better use of the scroll region. (Nobuhiro Takasaki, + closes #3974) +Files: src/os_win32.c, src/term.c + +Patch 8.1.0934 +Problem: Invalid memory access in search pattern. (Kuang-che Wu) +Solution: Check for incomplete equivalence class. (closes #3970) +Files: src/regexp.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0935 +Problem: Old regexp engine may use invalid buffer for 'iskeyword' or + uninitialized buffer pointer. (Kuang-che Wu) +Solution: Set rex.reg_buf when compiling the pattern. (closes #3972) +Files: src/regexp.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0936 +Problem: May leak memory when using 'vartabstop'. (Kuang-che Wu) +Solution: Fix handling allocated memory for 'vartabstop'. (closes #3976) +Files: src/option.c, src/buffer.c + +Patch 8.1.0937 +Problem: Invalid memory access in search pattern. (Kuang-che Wu) +Solution: Check for incomplete collation element. (Dominique Pelle, + closes #3985) +Files: src/regexp.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0938 +Problem: Background color is wrong in MS-Windows console when not using VTP. +Solution: Use g_attrCurrent. (Nobuhiro Takasaki, closes #3987) +Files: src/os_win32.c + +Patch 8.1.0939 +Problem: No completion for sign group names. +Solution: Add completion for sign group names and buffer names. (Yegappan + Lakshmanan, closes #3980) +Files: src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.0940 +Problem: MS-Windows console resizing not handled properly. +Solution: Handle resizing the console better. (Nobuhiro Takasaki, Ken + Takata, closes #3968, closes #3611) +Files: src/ex_docmd.c, src/normal.c, src/os_win32.c, + src/proto/os_win32.pro + +Patch 8.1.0941 +Problem: Macros for MS-Windows are inconsistent, using "32", "3264" and + others. +Solution: Use MSWIN for all MS-Windows builds. Use FEAT_GUI_MSWIN for the + GUI build. (Hirohito Higashi, closes #3932) +Files: src/GvimExt/gvimext.h, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_ivc.mak, src/Make_mvc.mak, src/beval.h, src/blowfish.c, + src/channel.c, src/edit.c, src/eval.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, + src/feature.h, src/fileio.c, src/getchar.c, src/glbl_ime.cpp, + src/globals.h, src/gui.c, src/gui.h, src/gui_beval.c, + src/gui_gtk.c, src/gui_gtk_f.c, src/gui_gtk_x11.c, + src/if_cscope.c, src/if_cscope.h, src/if_lua.c, src/if_mzsch.c, + src/if_ole.cpp, src/if_perl.xs, src/if_python.c, src/if_python3.c, + src/if_ruby.c, src/if_tcl.c, src/macros.h, src/main.c, + src/mbyte.c, src/memfile.c, src/memline.c, src/menu.c, + src/message.c, src/misc1.c, src/misc2.c, src/nbdebug.c, + src/netbeans.c, src/normal.c, src/option.c, src/option.h, + src/os_mswin.c, src/os_unix.c, src/os_w32exe.c, src/os_win32.c, + src/os_win32.h, src/proto.h, src/screen.c, src/search.c, + src/structs.h, src/syntax.c, src/term.c, src/terminal.c, src/ui.c, + src/undo.c, src/version.c, src/vim.h, src/vim.rc, src/winclip.c + +Patch 8.1.0942 +Problem: Options window still checks for the multi_byte feature. +Solution: Remove the unnecessary check. (Dominique Pelle, closes #3990) +Files: runtime/optwin.vim + +Patch 8.1.0943 +Problem: Still a trace of Farsi support. +Solution: Remove defining macros. +Files: src/feature.h + +Patch 8.1.0944 +Problem: Format of nbdbg() arguments is not checked. +Solution: Add format attribute. Fix reported problems. (Dominique Pelle, + closes #3992) +Files: src/nbdebug.h, src/netbeans.c + +Patch 8.1.0945 +Problem: Internal error when using pattern with NL in the range. +Solution: Use an actual newline for the range. (closes #3989) Also fix + error message. (Dominique Pelle) +Files: src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.1.0946 +Problem: Coveralls is not very useful. +Solution: Remove Coveralls badge, add badge for packages. +Files: README.md + +Patch 8.1.0947 +Problem: Using MSWIN before it is defined. (Cesar Romani) +Solution: Move the block that uses MSWIN to below including vim.h. (Ken + Takata) +Files: src/if_ruby.c + +Patch 8.1.0948 +Problem: When built without +eval "Vim --clean" produces errors. (James + McCoy) +Solution: Do not enable filetype detection. +Files: runtime/defaults.vim + +Patch 8.1.0949 +Problem: MS-Windows defines GUI macros different than other systems. +Solution: Swap FEAT_GUI and FEAT_GUI_MSWIN. (Hirohito Higashi, closes #3996) +Files: src/Make_bc5.mak, src/Make_cyg_ming.mak, src/Make_ivc.mak, + src/Make_mvc.mak, src/if_ole.cpp, src/vim.h, src/vim.rc + +Patch 8.1.0950 +Problem: Using :python sets 'pyxversion' even when not executed. +Solution: Check the "skip" flag. (Shane Harper, closes #3995) +Files: src/if_python.c, src/if_python3.c, src/testdir/test_python2.vim, + src/testdir/test_python3.vim + +Patch 8.1.0951 +Problem: Using WIN64 even though it is never defined. +Solution: Only use _WIN64. (Ken Takata, closes #3997) +Files: src/evalfunc.c + +Patch 8.1.0952 +Problem: Compilation warnings when building the MS-Windows installer. +Solution: Fix buffer sizes. (Yasuhiro Matsumoto, closes #3999) +Files: src/dosinst.c, src/dosinst.h, src/uninstal.c + +Patch 8.1.0953 +Problem: A very long file is truncated at 2^31 lines. +Solution: Use LONG_MAX for MAXLNUM. (Dominique Pelle, closes #4011) +Files: src/vim.h + +Patch 8.1.0954 +Problem: Arguments of semsg() and siemsg() are not checked. +Solution: Add function prototype with __attribute__. +Files: src/message.c, src/proto/message.pro, src/proto.h + +Patch 8.1.0955 +Problem: Matchit autoload directory not in installer. (Chris Morgan) +Solution: Adjust the NSIS script. (Christian Brabandt, closes #4006) +Files: nsis/gvim.nsi + +Patch 8.1.0956 +Problem: Using context:0 in 'diffopt' does not work well. +Solution: Make zero context do the same as one line context. (closes #4005) +Files: src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_06.0.dump, + src/testdir/dumps/Test_diff_06.1.dump, + src/testdir/dumps/Test_diff_06.2.dump + +Patch 8.1.0957 (after 8.1.0915) +Problem: Mac: fsync fails on network share. +Solution: Check for ENOTSUP. (Yee Cheng Chin, closes #4016) +Files: src/fileio.c + +Patch 8.1.0958 +Problem: Compiling weird regexp pattern is very slow. +Solution: When reallocating post list increase size by 50%. (Kuang-che Wu, + closes #4012) Make assert_inrange() accept float values. +Files: src/regexp_nfa.c, src/eval.c, src/testdir/test_regexp_latin.vim, + src/testdir/test_assert.vim + +Patch 8.1.0959 +Problem: Sorting large numbers is not tested and does not work properly. +Solution: Add test. Fix comparing lines with and without a number. + (Dominique Pelle, closes #4017) +Files: src/ex_cmds.c, src/testdir/test_sort.vim + +Patch 8.1.0960 +Problem: When using ConPTY garbage collection has undefined behavior. +Solution: Free the channel in a better way. (Nobuhiro Takasaki, closes #4020) +Files: src/channel.c + +Patch 8.1.0961 (after 8.1.0957) +Problem: Mac: fsync may fail sometimes. +Solution: Do not check errno. (Yee Cheng Chin, closes #4025) +Files: src/fileio.c + +Patch 8.1.0962 +Problem: Building with MinGW and static libs doesn't work. (Salman Halim) +Solution: Add -lgcc. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 8.1.0963 +Problem: Illegal memory access when using 'incsearch'. +Solution: Reset highlight_match when changing text. (closes #4022) +Files: src/testdir/test_search.vim, src/misc1.c, + src/testdir/dumps/Test_incsearch_change_01.dump + +Patch 8.1.0964 +Problem: Cannot see in CI why a screenshot test failed. +Solution: Add info about the failure. +Files: src/testdir/screendump.vim + +Patch 8.1.0965 +Problem: Search test fails. +Solution: Wait a bit longer for the 'ambiwidth' redraw. +Files: src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_change_01.dump + +Patch 8.1.0966 +Problem: One terminal test is flaky. +Solution: Add to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.0967 +Problem: Stray dependency in test Makefile. +Solution: Remove it. (Masato Nishihata, closes #4018) +Files: src/testdir/Makefile + +Patch 8.1.0968 +Problem: Crash when using search pattern \%Ufffffc23. +Solution: Limit character to INT_MAX. (closes #4009) +Files: src/regexp_nfa.c, src/testdir/test_search.vim + +Patch 8.1.0969 +Problem: Message written during startup is truncated. +Solution: Restore message after truncating. (closes #3969) Add a test. + (Yasuhiro Matsumoto) +Files: src/message.c, src/testdir/test_startup.vim + +Patch 8.1.0970 +Problem: Text properties test fails when 'encoding' is not utf-8. +Solution: Compare with original value of 'encoding'. (Christian Brabandt, + closes #3986) +Files: src/testdir/runtest.vim, src/testdir/test_textprop.vim + +Patch 8.1.0971 +Problem: Failure for selecting quoted text object moves cursor. +Solution: Restore the Visual selection on failure. (Christian Brabandt, + closes #4024) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.1.0972 +Problem: Cannot switch from terminal window to next tabpage. +Solution: Make CTRL-W gt move to next tabpage. +Files: src/window.c, src/testdir/test_terminal.vim, + runtime/doc/terminal.txt + +Patch 8.1.0973 +Problem: Pattern with syntax error gives three error messages. (Kuang-che + Wu) +Solution: Remove outdated internal error. Don't fall back to other engine + after an error.(closes #4035) +Files: src/regexp_nfa.c, src/testdir/test_search.vim, src/regexp.c + +Patch 8.1.0974 +Problem: Cannot switch from terminal window to previous tabpage. +Solution: Make CTRL-W gT move to previous tabpage. +Files: src/window.c, src/testdir/test_terminal.vim, + runtime/doc/terminal.txt + +Patch 8.1.0975 +Problem: Using STRNCPY() wrongly. Warning for uninitialized variable. +Solution: Use mch_memmove(). Initialize variable. (Yasuhiro Matsumoto, + closes #3979) +Files: src/screen.c, src/textprop.c + +Patch 8.1.0976 +Problem: Dosinstall still has buffer overflow problems. +Solution: Adjust buffer sizes. (Yasuhiro Matsumoto, closes #4002) +Files: src/dosinst.c, src/dosinst.h, src/uninstal.c + +Patch 8.1.0977 +Problem: Blob not tested with Ruby. +Solution: Add more test coverage. Fixes a crash. (Dominique Pelle, + closes #4036) +Files: src/if_ruby.c, src/testdir/test_ruby.vim + +Patch 8.1.0978 +Problem: Blob not tested with Perl. +Solution: Add more test coverage. Fixes a crash. (Dominique Pelle, + closes #4037) +Files: src/if_perl.c, src/testdir/test_ruby.vim + +Patch 8.1.0979 +Problem: Compiler warning for unused functions. (Yasuhiro Matsumoto) +Solution: Adjust #ifdef. +Files: src/screen.c + +Patch 8.1.0980 +Problem: extend() insufficiently tested. +Solution: Add more tests. (Dominique Pelle, closes #4040) +Files: src/testdir/test_listdict.vim + +Patch 8.1.0981 +Problem: Pasting in terminal insufficiently tested. +Solution: Add more tests. (Dominique Pelle, closes #4040) +Files: src/testdir/test_terminal.vim + +Patch 8.1.0982 +Problem: update_cursor() called twice in :shell. +Solution: Remove one of the calls. (Yasuhiro Matsumoto, closes #4039) +Files: src/terminal.c + +Patch 8.1.0983 +Problem: Checking __CYGWIN32__ unnecessarily. +Solution: Remove the checks. (Ken Takata) +Files: src/evalfunc.c, src/os_unix.c, src/os_win32.c + +Patch 8.1.0984 +Problem: Unnecessary #ifdefs. +Solution: Remove the #ifdefs. (Ken Takata) +Files: src/winclip.c + +Patch 8.1.0985 +Problem: Crash with large number in regexp. (Kuang-che Wu) +Solution: Check for long becoming negative int. (closes #4042) +Files: src/regexp.c, src/testdir/test_search.vim + +Patch 8.1.0986 +Problem: rename() is not properly tested. +Solution: Add tests. (Dominique Pelle, closes #4061) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_rename.vim + +Patch 8.1.0987 +Problem: Unnecessary condition in #ifdef. +Solution: Remove using CYGWIN32. (Ken Takata) +Files: src/os_unix.h, src/xxd/xxd.c + +Patch 8.1.0988 +Problem: Deleting a location list buffer breaks location list window + functionality. +Solution: (Yegappan Lakshmanan, closes #4056) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.0989 +Problem: Various small code ugliness. +Solution: Remove pointless NULL checks. Fix function calls. Fix typos. + (Dominique Pelle, closes #4060) +Files: src/buffer.c, src/crypt.c, src/evalfunc.c, src/ex_cmds2.c, + src/globals.h, src/gui_gtk_f.c, src/gui_gtk_x11.c, src/gui_mac.c, + src/ops.c, src/option.h, src/os_unix.c, src/os_win32.c, + src/popupmnu.c, src/regexp.c, src/ui.c, src/version.c + +Patch 8.1.0990 +Problem: Floating point exception with "%= 0" and "/= 0". +Solution: Avoid dividing by zero. (Dominique Pelle, closes #4058) +Files: src/eval.c, src/testdir/test_vimscript.vim + +Patch 8.1.0991 +Problem: Cannot build with FEAT_EVAL defined and FEAT_SEARCH_EXTRA + undefined, and with FEAT_DIFF defined and FEAT_EVAL undefined. +Solution: Add a couple of #ifdefs. (closes #4067) +Files: src/diff.c, src/search.c + +Patch 8.1.0992 +Problem: A :normal command while executing a register resets the + reg_executing() result. +Solution: Save and restore reg_executing. (closes #4066) +Files: src/ex_docmd.c, src/structs.h, src/testdir/test_functions.vim + +Patch 8.1.0993 +Problem: ch_read() may return garbage if terminating NL is missing. +Solution: Add terminating NUL. (Ozaki Kiichi, closes #4065) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.1.0994 +Problem: Relative cursor position is not calculated correctly. +Solution: Always set topline, also when window is one line only. + (Robert Webb) Add more info to getwininfo() for testing. +Files: src/window.c, src/evalfunc.c, runtime/doc/eval.txt, + src/testdir/test_window_cmd.vim + +Patch 8.1.0995 +Problem: A getchar() call while executing a register resets the + reg_executing() result. +Solution: Save and restore reg_executing. (closes #4066) +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.1.0996 (after 8.1.0994) +Problem: A few screendump tests fail because of scrolling. +Solution: Update the screendumps. +Files: src/testdir/dumps/Test_incsearch_substitute_11.dump, + src/testdir/dumps/Test_incsearch_substitute_12.dump, + src/testdir/dumps/Test_incsearch_substitute_13.dump + +Patch 8.1.0997 +Problem: Using GUI colors in vim.exe when 'termguicolors' is off. +Solution: Add condition for 'termguicolors' set. (Ken Takata, closes #4078) +Files: src/os_win32.c + +Patch 8.1.0998 +Problem: getcurpos() unexpectedly changes "curswant". +Solution: Save and restore "curswant". (closes #4069) +Files: src/evalfunc.c, src/testdir/test_visual.vim + +Patch 8.1.0999 +Problem: Use register one too often and not properly tested. +Solution: Do not always use register one when specifying a register. + (closes #4085) Add more tests. +Files: src/ops.c, src/testdir/test_registers.vim + +Patch 8.1.1000 +Problem: Indenting is off. +Solution: Make indenting consistent and update comments. (Ozaki Kiichi, + closes #4079) +Files: src/getchar.c, src/ops.c + +Patch 8.1.1001 +Problem: Visual area not correct when using 'cursorline'. +Solution: Update w_last_cursorline also in Visual mode. (Hirohito Higashi, + closes #4086) +Files: src/screen.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_cursorline_with_visualmode_01.dump + +Patch 8.1.1002 +Problem: "gf" does not always work when URL has a port number. (Jakob + Sch枚ttl) +Solution: When a URL is recognized also accept ":". (closes #4082) +Files: src/findfile.c, src/testdir/test_gf.vim + +Patch 8.1.1003 +Problem: Playing back recorded key sequence mistakes key code. +Solution: Insert a <Nop> after the <Esc>. (closes #4068) +Files: src/getchar.c, src/testdir/test_registers.vim + +Patch 8.1.1004 +Problem: Function "luaV_setref()" not covered with tests. +Solution: Add a test. (Dominique Pelle, closes #4089) +Files: src/testdir/test_lua.vim + +Patch 8.1.1005 (after 8.1.1003) +Problem: Test fails because t_F2 is not set. +Solution: Add try-catch. +Files: src/testdir/test_registers.vim + +Patch 8.1.1006 +Problem: Repeated code in quickfix support. +Solution: Move code to functions. (Yegappan Lakshmanan, closes #4091) +Files: src/quickfix.c + +Patch 8.1.1007 +Problem: Using closure may consume a lot of memory. +Solution: unreference items that are no longer needed. Add a test. (Ozaki + Kiichi, closes #3961) +Files: src/testdir/Make_all.mak, src/testdir/test_memory_usage.vim, + src/userfunc.c + +Patch 8.1.1008 +Problem: MS-Windows: HAVE_STDINT_H only defined for non-debug version. +Solution: Move definition of HAVE_STDINT_H up. (Taro Muraoka, closes #4109) +Files: src/Make_mvc.mak + +Patch 8.1.1009 +Problem: MS-Windows: some text is not baseline aligned. +Solution: Use bottom alignment. (Taro Muraoka, closes #4116, closes #1520) +Files: src/gui_dwrite.cpp + +Patch 8.1.1010 +Problem: Lua interface leaks memory. +Solution: Clear typeval after copying it. +Files: src/if_lua.c + +Patch 8.1.1011 +Problem: Indent from autoindent not removed from blank line. (Daniel Hahler) +Solution: Do not reset did_ai when text follows. (closes #4119) +Files: src/misc1.c, src/testdir/test_edit.vim + +Patch 8.1.1012 +Problem: Memory leak with E461. +Solution: Clear the typeval. (Dominique Pelle, closes #4111) +Files: src/eval.c + +Patch 8.1.1013 +Problem: MS-Windows: Scrolling fails when dividing the screen. +Solution: Position the cursor before calling ScrollConsoleScreenBuffer(). + (Nobuhiro Takasaki, closes #4115) +Files: src/os_win32.c + +Patch 8.1.1014 +Problem: MS-Windows: /analyze only defined for non-debug version. +Solution: Move adding of /analyze up. (Ken Takata, closes #4114) +Files: src/Make_mvc.mak + +Patch 8.1.1015 +Problem: Quickfix buffer shows up in list, can't get buffer number. +Solution: Make the quickfix buffer unlisted when the quickfix window is + closed. get the quickfix buffer number with getqflist(). + (Yegappan Lakshmanan, closes #4113) +Files: runtime/doc/eval.txt, runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim, src/window.c + +Patch 8.1.1016 +Problem: MS-Windows: No color in shell when using "!" in 'guioptions'. +Solution: Don't stop termcap when using a terminal window for the shell. + (Nobuhiro Takasaki, vim-jp, closes #4117) +Files: src/ex_cmds.c + +Patch 8.1.1017 +Problem: Off-by-one error in filetype detection. +Solution: Also check the last line of the file. +Files: runtime/autoload/dist/ft.vim + +Patch 8.1.1018 +Problem: Window cleared when entering Terminal-Normal twice. (Epheien) +Solution: Don't cleanup scrollback when there is no postponed scrollback. + (Christian Brabandt, closes #4126) +Files: src/terminal.c + +Patch 8.1.1019 +Problem: Lua: may garbage collect function reference in use. +Solution: Keep the function name instead of the typeval. Make luaV_setref() + handle funcref objects. (Ozaki Kiichi, closes #4127) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.1.1020 +Problem: Compiler warning for Python3 interface. +Solution: Add type cast. (Ozaki Kiichi, closes #4128, closes #4103) +Files: src/if_python3.c + +Patch 8.1.1021 +Problem: pyeval() and py3eval() leak memory. +Solution: Do not increase the reference count twice. (Ozaki Kiichi, + closes #4129) +Files: src/if_python.c, src/if_python3.c + +Patch 8.1.1022 +Problem: May use NULL pointer when out of memory. (Coverity) +Solution: Check for blob_alloc() returning NULL. +Files: src/blob.c + +Patch 8.1.1023 +Problem: May use NULL pointer when indexing a blob. (Coverity) +Solution: Break out of loop after using index on blob +Files: src/eval.c + +Patch 8.1.1024 +Problem: Stray log calls in terminal code. (Christian Brabandt) +Solution: Remove the calls. +Files: src/terminal.c + +Patch 8.1.1025 +Problem: Checking NULL pointer after addition. (Coverity) +Solution: First check for NULL, then add the column. +Files: src/regexp.c + +Patch 8.1.1026 +Problem: Unused condition. (Coverity) +Solution: Remove the condition. Also remove unused #define. +Files: src/move.c + +Patch 8.1.1027 +Problem: Memory usage test sometimes fails. +Solution: Use 80% of before.last as the lower limit. (Christian Brabandt) +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1028 +Problem: MS-Windows: memory leak when creating terminal fails. +Solution: Free the command. (Ken Takata, closes #4138) +Files: src/os_win32.c + +Patch 8.1.1029 +Problem: DirectWrite doesn't take 'linespace' into account. +Solution: Include 'linespace' in the position. (Ken Takata, closes #4137) +Files: src/gui_dwrite.cpp, src/gui_w32.c + +Patch 8.1.1030 +Problem: Quickfix function arguments are inconsistent. +Solution: Pass a list pointer instead of info and index. (Yegappan + Lakshmanan, closes #4135) +Files: src/quickfix.c + +Patch 8.1.1031 +Problem: Memory usage test may still fail. +Solution: Drop the unused min value. (Christian Brabandt) +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1032 +Problem: Warnings from clang static analyzer. (Yegappan Lakshmanan) +Solution: Fix relevant warnings. +Files: src/arabic.c, src/edit.c, src/eval.c, src/fileio.c, src/normal.c, + src/option.c, src/os_unix.c, src/regexp.c, src/screen.c, + src/channel.c, src/charset.c, src/message.c + +Patch 8.1.1033 +Problem: Memory usage test may still fail on some systems. (Elimar + Riesebieter) +Solution: Increase tolerance from 1% to 3%. +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1034 +Problem: Too many #ifdefs. +Solution: Merge FEAT_MOUSE_SGR into FEAT_MOUSE_XTERM / FEAT_MOUSE_TTY. +Files: src/evalfunc.c, src/misc2.c, src/os_unix.c, src/term.c, + src/version.c, src/feature.h + +Patch 8.1.1035 +Problem: prop_remove() second argument is not optional. +Solution: Fix argument count. Use "buf" instead of "curbuf". (closes #4147) +Files: src/evalfunc.c, src/testdir/test_textprop.vim, src/textprop.c + +Patch 8.1.1036 +Problem: Quickfix function arguments are inconsistent. +Solution: Pass a list pointer to more functions. (Yegappan Lakshmanan, + closes #4149) +Files: src/quickfix.c + +Patch 8.1.1037 +Problem: Memory usage test may still fail on some systems. +Solution: Increase tolerance from 3% to 20%. +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1038 +Problem: Arabic support excludes Farsi. +Solution: Add Farsi support to the Arabic support. (Ali Gholami Rudi, + Ameretat Reith) +Files: Filelist, src/arabic.c, src/arabic.h, src/globals.h, src/macros.h, + src/mbyte.c, src/proto/arabic.pro, src/proto/mbyte.pro, + src/Makefile, src/testdir/test_arabic.vim + +Patch 8.1.1039 +Problem: MS-Windows build fails. +Solution: Remove dependency on arabic.h +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms + +Patch 8.1.1040 +Problem: FEAT_TAG_ANYWHITE is not enabled in any build. +Solution: Remove the feature. +Files: src/feature.h, src/tag.c, src/evalfunc.c, src/version.c, + src/Make_vms.mms + +Patch 8.1.1041 +Problem: Test for Arabic no longer needed. +Solution: Remove the test for something that was intentionally left out. +Files: src/testdir/test_arabic.vim + +Patch 8.1.1042 +Problem: The paste test doesn't work properly in the Windows console. +Solution: Disable the test. +Files: src/testdir/test_paste.vim + +Patch 8.1.1043 +Problem: Lua interface does not support Blob. +Solution: Add support to Blob. (Ozaki Kiichi, closes #4151) +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.1.1044 +Problem: No way to check the reference count of objects. +Solution: Add test_refcount(). (Ozaki Kiichi, closes #4124) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_vimscript.vim + +Patch 8.1.1045 +Problem: E315 ml_get error when using Python and hidden buffer. +Solution: Make sure the cursor position is valid. (Ben Jackson, + closes #4153, closes #4154) +Files: src/if_py_both.h, src/testdir/test_python2.vim, + src/testdir/test_python3.vim + +Patch 8.1.1046 +Problem: the "secure" variable is used inconsistently. (Justin M. Keyes) +Solution: Set it to one instead of incrementing. +Files: src/buffer.c, src/option.c + +Patch 8.1.1047 +Problem: WINCH signal is not tested. +Solution: Add a test. (Dominique Pelle, closes #4158) +Files: src/testdir/Make_all.mak, src/testdir/test_signals.vim + +Patch 8.1.1048 +Problem: Minor issues with tests. +Solution: Delete unused test OK file. Add missing entries in list of tests. + Fix readme file. (Masato Nishihata, closes #4160) +Files: src/testdir/test85.ok, src/testdir/Make_all.mak, + src/testdir/README.txt + +Patch 8.1.1049 +Problem: When user tries to exit with CTRL-C message is confusing. +Solution: Only mention ":qa!" when there is a changed buffer. (closes #4163) +Files: src/undo.c, src/proto/undo.pro, src/normal.c, + src/testdir/test_normal.vim + +Patch 8.1.1050 +Problem: Blank screen when DirectWrite failed. +Solution: Call redraw_later_clear() after recreating the Direct2D render + target. (Ken Takata, closes #4172) +Files: src/gui_dwrite.cpp + +Patch 8.1.1051 +Problem: Not all ways to switch terminal mode are tested. +Solution: Add more test cases. +Files: src/testdir/test_terminal.vim + +Patch 8.1.1052 +Problem: test for CTRL-C message sometimes fails +Solution: Make sure there are no changed buffers. +Files: src/testdir/test_normal.vim + +Patch 8.1.1053 +Problem: Warning for missing return statement. (Dominique Pelle) +Solution: Add return statement. +Files: src/undo.c + +Patch 8.1.1054 +Problem: Not checking return value of ga_grow(). (Coverity) +Solution: Only append when ga_grow() returns OK. +Files: src/if_lua.c + +Patch 8.1.1055 +Problem: CTRL-G U in Insert mode doesn't work to avoid splitting the undo + sequence for shift-left and shift-right. +Solution: Also check dont_sync_undo for shifted cursor keys. (Christian + Brabandt) +Files: src/edit.c, src/testdir/test_mapping.vim + +Patch 8.1.1056 +Problem: No eval function for Ruby. +Solution: Add rubyeval(). (Ozaki Kiichi, closes #4152) +Files: runtime/doc/eval.txt, runtime/doc/if_ruby.txt, src/evalfunc.c, + src/if_ruby.c, src/proto/if_ruby.pro, src/testdir/test_ruby.vim + +Patch 8.1.1057 +Problem: Nsis config is too complicated. +Solution: Use "File /r" for the macros and pack directories. (Ken Takata, + closes #4169) +Files: nsis/gvim.nsi + +Patch 8.1.1058 +Problem: Memory usage test may still fail on some systems. +Solution: Use 98% of the lower limit. (Christian Brabandt) +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1059 +Problem: MS-Windows: PlatformId() is called unnecessarily. +Solution: Remove calls to PlatformId(). (Ken Takata, closes #4170) +Files: src/os_win32.c + +Patch 8.1.1060 +Problem: MS-Windows: get_cmd_args() is no longer needed, get_cmd_argsW() is + always used. +Solution: Remove get_cmd_args(). (Ken Takata, closes #4171) +Files: src/gui_w32.c, src/os_w32exe.c + +Patch 8.1.1061 +Problem: When substitute string throws error, substitute happens anyway. +Solution: Skip substitution when aborting. (closes #4161) +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.1.1062 +Problem: Quickfix code is repeated. +Solution: Define FOR_ALL_QFL_ITEMS(). Move some code to separate functions. + (Yegappan Lakshmanan, closes #4166) +Files: src/quickfix.c + +Patch 8.1.1063 +Problem: Insufficient testing for wildmenu completion. +Solution: Extend the test case. (Dominique Pelle, closes #4182) +Files: src/testdir/test_cmdline.vim + +Patch 8.1.1064 +Problem: No test for output conversion in the GTK GUI. +Solution: Add a simplistic test. +Files: src/testdir/test_gui.vim + +Patch 8.1.1065 +Problem: No test for using and deleting menu in the GUI. +Solution: Add a test. +Files: src/testdir/test_gui.vim + +Patch 8.1.1066 +Problem: VIMDLL isn't actually used. +Solution: Remove VIMDLL support. +Files: src/gui_w32.c, src/main.c, src/os_w32exe.c, src/Make_bc5.mak, + src/os_w32dll.c + +Patch 8.1.1067 +Problem: Issues added on github are unstructured. +Solution: Add a bug and feature request template. (Ken Takata, closes #4183) +Files: .github/ISSUE_TEMPLATE/feature_request.md, + .github/ISSUE_TEMPLATE/bug_report.md + +Patch 8.1.1068 +Problem: Cannot get all the information about current completion. +Solution: Add complete_info(). (Shougo, Hirohito Higashi, closes #4106) +Files: runtime/doc/eval.txt, runtime/doc/insert.txt, + runtime/doc/usr_41.txt, src/edit.c, src/evalfunc.c, + src/proto/edit.pro, src/testdir/test_popup.vim + +Patch 8.1.1069 +Problem: Source README file doesn't look nice on github. +Solution: Turn it into markdown, still readable as plain text. + (WenxuanHuang, closes #4141) +Files: src/README.txt, src/README.md, Filelist + +Patch 8.1.1070 +Problem: Issue templates are not good enough. +Solution: Rephrase to anticipate unexperienced users. +Files: .github/ISSUE_TEMPLATE/feature_request.md, + .github/ISSUE_TEMPLATE/bug_report.md + +Patch 8.1.1071 +Problem: Cannot get composing characters from the screen. +Solution: Add screenchars() and screenstring(). (partly by Ozaki Kiichi, + closes #4059) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_utf8.vim, src/testdir/view_util.vim + +Patch 8.1.1072 +Problem: Extending sign and foldcolumn below the text is confusing. +Solution: Let the sign and foldcolumn stop at the last text line, just like + the line number column. Also stop the command line window leader. + (Christian Brabandt, closes #3964) +Files: src/screen.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_of_diff_01.dump, + src/testdir/dumps/Test_diff_01.dump, + src/testdir/dumps/Test_diff_02.dump, + src/testdir/dumps/Test_diff_03.dump, + src/testdir/dumps/Test_diff_04.dump, + src/testdir/dumps/Test_diff_05.dump, + src/testdir/dumps/Test_diff_06.dump, + src/testdir/dumps/Test_diff_06.0.dump, + src/testdir/dumps/Test_diff_06.1.dump, + src/testdir/dumps/Test_diff_06.2.dump, + src/testdir/dumps/Test_diff_10.dump, + src/testdir/dumps/Test_diff_11.dump, + src/testdir/dumps/Test_diff_12.dump, + src/testdir/dumps/Test_diff_13.dump, + src/testdir/dumps/Test_diff_14.dump, + src/testdir/dumps/Test_diff_15.dump, + src/testdir/dumps/Test_diff_16.dump, + src/testdir/dumps/Test_diff_17.dump, + src/testdir/dumps/Test_diff_18.dump, + src/testdir/dumps/Test_diff_19.dump, + src/testdir/dumps/Test_diff_20.dump, + src/testdir/dumps/Test_diff_with_cursorline_01.dump, + src/testdir/dumps/Test_diff_with_cursorline_02.dump, + src/testdir/dumps/Test_diff_with_cursorline_03.dump, + src/testdir/dumps/Test_folds_with_rnu_01.dump, + src/testdir/dumps/Test_folds_with_rnu_02.dump + +Patch 8.1.1073 +Problem: Space in number column is on wrong side with 'rightleft' set. +Solution: Move the space to the text side. Add a test. +Files: src/screen.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_of_diff_02.dump + +Patch 8.1.1074 +Problem: Python test doesn't wipe out hidden buffer. +Solution: Wipe out the buffer. (Ben Jackson, closes #4189) +Files: src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.1.1075 +Problem: Function reference count wrong in Python code. +Solution: Use "O" instead of "N" for the arguments. (Ben Jackson, + closes #4188) +Files: src/if_py_both.h + +Patch 8.1.1076 +Problem: File for Insert mode is much too big. +Solution: Split off the code for Insert completion. (Yegappan Lakshmanan, + closes #4044) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/edit.c, src/evalfunc.c, + src/globals.h, src/insexpand.c, src/misc2.c, src/proto.h, + src/proto/edit.pro, src/proto/insexpand.pro, src/search.c, + src/spell.c, src/structs.h, src/tag.c, src/vim.h + +Patch 8.1.1077 +Problem: reg_executing() is reset by calling input(). +Solution: Implement a more generic way to save and restore reg_executing. + (Ozaki Kiichi, closes #4192) +Files: src/evalfunc.c, src/ex_docmd.c, src/testdir/test_functions.vim + +Patch 8.1.1078 +Problem: When 'listchars' is set a composing char on a space is wrong. +Solution: Separate handling a non-breaking space and a space. (Yasuhiro + Matsumoto, closes #4046) +Files: src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.1079 +Problem: No need for a separate ScreenLinesUtf8() test function. +Solution: Get the composing characters with ScreenLines(). +Files: src/testdir/view_util.vim, src/testdir/test_listchars.vim, + src/testdir/test_utf8.vim + +Patch 8.1.1080 +Problem: When a screendump test fails, moving the file is a hassle. +Solution: Instead of appending ".failed" to the file name, keep the same + file name but put the screendump in the "failed" directory. + Then the file name only needs to be typed once when moving a + screendump. +Files: src/testdir/screendump.vim + +Patch 8.1.1081 +Problem: MS-Windows: cannot use fonts whose name cannot be represented in + the current code page. +Solution: Use wide font functions. (Ken Takata, closes #4000) +Files: src/gui_w32.c, src/os_mswin.c, src/proto/gui_w32.pro, + src/proto/os_mswin.pro + +Patch 8.1.1082 +Problem: "Conceal" match is mixed up with 'hlsearch' match. +Solution: Check that a match is found, not a 'hlsearch' item. (Andy + Massimino, closes #4073) +Files: src/screen.c + +Patch 8.1.1083 +Problem: MS-Windows: hang when opening a file on network share. +Solution: Avoid using FindFirstFile(), use GetLongPathNameW(). (Ken Takata, + closes #3923) +Files: src/os_win32.c + +Patch 8.1.1084 +Problem: Cannot delete a match from another window. (Paul Jolly) +Solution: Add window ID argument to matchdelete(), clearmatches(), + getmatches() and setmatches(). (Andy Massimino, closes #4178) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_match.vim + +Patch 8.1.1085 +Problem: Compiler warning for possibly uninitialized variable. (Tony + Mechelynck) +Solution: Make conditions more logical. +Files: src/arabic.c + +Patch 8.1.1086 +Problem: Too many curly braces. +Solution: Remove curly braces where they are not needed. (Hirohito Higashi, + closes #3982) +Files: src/autocmd.c, src/buffer.c, src/crypt_zip.c, src/dosinst.c, + src/edit.c, src/insexpand.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_docmd.c, src/ex_getln.c, src/getchar.c, src/gui.c, + src/gui_gtk.c, src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, + src/gui_w32.c, src/gui_x11.c, src/if_mzsch.c, src/if_python3.c, + src/if_ruby.c, src/if_tcl.c, src/indent.c, src/libvterm/src/pen.c, + src/macros.h, src/memline.c, src/menu.c, src/misc1.c, src/move.c, + src/netbeans.c, src/normal.c, src/ops.c, src/option.c, + src/os_mswin.c, src/os_qnx.c, src/os_unix.c, src/os_win32.c, + src/regexp_nfa.c, src/screen.c, src/spell.c, src/terminal.c + +Patch 8.1.1087 +Problem: tag stack is incorrect after CTRL-T and then :tag +Solution: Handle DT_TAG differently. (test by Andy Massimino, closes #3944, + closes #4177) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.1.1088 +Problem: Height of quickfix window not retained with vertical split. +Solution: Use frame_fixed_height() and frame_fixed_width(). (Hongbo Liu, + closes #4013, closes #2998) +Files: src/testdir/test_winbuf_close.vim, src/window.c + +Patch 8.1.1089 +Problem: Tutor does not check $LC_MESSAGES. +Solution: Let $LC_MESSAGES overrule $LANG. (Miklos Vajna, closes #4112) +Files: runtime/tutor/tutor.vim + +Patch 8.1.1090 +Problem: MS-Windows: modify_fname() has problems with some 'encoding'. +Solution: Use GetLongPathNameW() instead of GetLongPathName(). (Ken Takata, + closes #4007) +Files: src/eval.c + +Patch 8.1.1091 +Problem: MS-Windows: cannot use multibyte chars in environment var. +Solution: Use the wide API. (Ken Takata, closes #4008) +Files: src/misc1.c, src/testdir/test_let.vim + +Patch 8.1.1092 +Problem: Setting 'guifont' when maximized resizes the Vim window. When + 'guioptions' contains "k" gvim may open with a tiny window. +Solution: Avoid un-maximizing when setting 'guifont'. (Yee Cheng Chin, + closes #3808) +Files: src/gui.c + +Patch 8.1.1093 +Problem: Support for outdated tags format slows down tag parsing. +Solution: Remove FEAT_TAG_OLDSTATIC. +Files: runtime/doc/tagsrch.txt, src/feature.h, src/tag.c, src/version.c + +Patch 8.1.1094 +Problem: Long line in tags file causes error. +Solution: Check for overlong line earlier. (Andy Massimino, closes #4051, + closes #4084) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.1.1095 +Problem: MS-Windows: executable() fails on very long filename. +Solution: Use much bigger buffer. (Ken Takata, closes #4015) +Files: src/os_win32.c, src/testdir/test_functions.vim + +Patch 8.1.1096 +Problem: MS-Windows: cannot distinguish BS and CTRL-H. +Solution: Add code for VK_BACK. (Linwei, closes #1833) +Files: src/term.c, src/os_win32.c + +Patch 8.1.1097 (after 8.1.1092) +Problem: Motif build fails. (Paul Jolly) +Solution: Only use gui_mch_maximized() for MS-Windows. (closes #4194) +Files: src/gui.c + +Patch 8.1.1098 +Problem: Quickfix code duplication. +Solution: Refactor the qf_init_ext() function. (Yegappan Lakshmanan, + closes #4193) +Files: src/README.md, src/quickfix.c + +Patch 8.1.1099 +Problem: The do_tag() function is too long. +Solution: Factor parts out to separate functions. Move simplify_filename() + to a file where it fits better. (Andy Massimino, closes #4195) +Files: src/tag.c, src/proto/tag.pro, src/findfile.c, + src/proto/findfile.pro + +Patch 8.1.1100 +Problem: Tag file without trailing newline no longer works. (Marco Hinz) +Solution: Don't expect a newline at the end of the file. (closes #4200) +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.1.1101 +Problem: Signals test may fail in the GUI. +Solution: Skip the test for the GUI. (Yee Checng Chin, closes #4202) +Files: src/testdir/test_signals.vim + +Patch 8.1.1102 +Problem: Win32 exe file contains unused code. +Solution: Remove unused #ifdefs and code. (Ken Takata, closes #4198) +Files: src/os_w32exe.c + +Patch 8.1.1103 +Problem: MS-Windows: old API calls are no longer needed. +Solution: Always use the wide functions. (Ken Takata, closes #4199) +Files: src/glbl_ime.cpp, src/globals.h, src/gui_w32.c, src/misc1.c, + src/os_mswin.c, src/os_win32.c, src/vim.h, + +Patch 8.1.1104 +Problem: MS-Windows: not all environment variables can be used. +Solution: Use the wide version of WinMain() and main(). (Ken Takata, + closes #4206) +Files: src/Make_cyg.mak, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/main.c, src/os_w32exe.c + +Patch 8.1.1105 +Problem: Long escape sequences may be split up. +Solution: Assume escape sequences can be up to 80 bytes long. (Nobuhiro + Takasaki, closes #4196) +Files: src/term.c + +Patch 8.1.1106 +Problem: No test for 'writedelay'. +Solution: Add a test. +Files: src/testdir/test_options.vim + +Patch 8.1.1107 +Problem: No test for 'visualbell'. +Solution: Add a test. +Files: src/testdir/test_options.vim + +Patch 8.1.1108 +Problem: Test for 'visualbell' doesn't work. +Solution: Make 'belloff' empty. +Files: src/testdir/test_options.vim + +Patch 8.1.1109 +Problem: Deleted file still in list of distributed files. +Solution: Remove the src/os_w32dll.c entry. +Files: Filelist + +Patch 8.1.1110 +Problem: Composing chars on space wrong when 'listchars' is set. +Solution: Do not use "space" and "nbsp" entries of 'listchars' when there is + a composing character. (Yee Cheng Chin, closes #4197) +Files: src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.1111 +Problem: It is not easy to check for infinity. +Solution: Add isinf(). (Ozaki Kiichi, closes #3787) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_float_func.vim + +Patch 8.1.1112 +Problem: Duplicate code in quickfix file. +Solution: Move code into functions. (Yegappan Lakshmanan, closes #4207) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.1113 +Problem: Making an autocommand trigger once is not so easy. +Solution: Add the ++once argument. Also add ++nested as an alias for + "nested". (Justin M. Keyes, closes #4100) +Files: runtime/doc/autocmd.txt, src/autocmd.c, + src/testdir/test_autocmd.vim, src/globals.h + +Patch 8.1.1114 +Problem: Confusing overloaded operator "." for string concatenation. +Solution: Add ".." for string concatenation. Also "let a ..= b". +Files: src/eval.c, src/testdir/test_eval_stuff.vim, runtime/doc/eval.txt + +Patch 8.1.1115 +Problem: Cannot build with older C compiler. +Solution: Move variable declaration to start of block. +Files: src/autocmd.c + +Patch 8.1.1116 +Problem: Cannot enforce a Vim script style. +Solution: Add the :scriptversion command. (idea by Yasuhiro Matsumoto, + closes #3857) +Files: runtime/doc/repeat.txt, runtime/doc/eval.txt, src/eval.c, + src/ex_cmds.h, src/evalfunc.c, src/ex_cmds2.c, + src/proto/ex_cmds2.pro, src/structs.h, src/buffer.c, src/main.c, + src/option.c, src/ex_cmdidxs.h, src/testdir/test_eval_stuff.vim + +Patch 8.1.1117 +Problem: Build failure without the +eval feature. +Solution: Add #ifdef. +Files: src/ex_cmds2.c + +Patch 8.1.1118 +Problem: A couple of conditions are hard to understand. +Solution: Split the conditions into pieces. (Ozaki Kiichi, closes #3879) +Files: src/getchar.c, src/os_unix.c + +Patch 8.1.1119 +Problem: No support for Windows on ARM64. +Solution: Add ARM64 support (Leendert van Doorn) +Files: src/GvimExt/Makefile, src/Make_mvc.mak, src/dosinst.c, + src/xpm/arm64/lib-vc14/libXpm.lib, Filelist, src/INSTALLpc.txt + +Patch 8.1.1120 +Problem: Cannot easily get directory entry matches. +Solution: Add the readdir() function. (Yasuhiro Matsumoto, closes #2439) +Files: runtime/doc/eval.txt, src/eval.c, src/evalfunc.c, src/misc1.c, + src/proto/eval.pro, src/testdir/test_functions.vim + +Patch 8.1.1121 +Problem: Test for term_gettitle() was disabled. +Solution: Enable the test and bail out only when it doesn't work. (Dominique + Pelle, closes #3776) +Files: src/testdir/test_terminal.vim + +Patch 8.1.1122 +Problem: char2nr() does not handle composing characters. +Solution: Add str2list() and list2str(). (Ozaki Kiichi, closes #4190) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_utf8.vim + +Patch 8.1.1123 +Problem: No way to avoid filtering for autocomplete function, causing + flickering of the popup menu. +Solution: Add the "equal" field to complete items. (closes #3887) +Files: runtime/doc/insert.txt, src/insexpand.c, + src/testdir/test_popup.vim + +Patch 8.1.1124 +Problem: Insert completion flags are mixed up. +Solution: Clean up flags use of ins_compl_add() and cp_flags. +Files: src/insexpand.c, src/proto/insexpand.pro, src/search.c, src/spell.c + +Patch 8.1.1125 +Problem: Libvterm does not handle the window position report. +Solution: Let libvterm call the fallback CSI handler when not handling CSI + sequence. Handle the window position report in Vim. +Files: src/libvterm/src/state.c, src/terminal.c, src/ui.c, + src/proto/ui.pro, src/evalfunc.c, src/testdir/test_terminal.vim + +Patch 8.1.1126 +Problem: Build failure with +terminal but without tgetent. +Solution: Adjust #ifdef. +Files: src/ui.c + +Patch 8.1.1127 +Problem: getwinpos() doesn't work in terminal on MS-Windows console. +Solution: Adjust #ifdefs. Disable test for MS-Windows console. +Files: src/ui.c, src/term.c, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.1.1128 +Problem: getwinpos() test does not work on MS-Windows. +Solution: Skip the test. +Files: src/testdir/test_terminal.vim + +Patch 8.1.1129 +Problem: When making a new screendump test have to create the file. +Solution: Continue creating the failed screendump, so it can be moved once + it is correct. +Files: src/testdir/screendump.vim + +Patch 8.1.1130 +Problem: MS-Windows: warning for unused variable. +Solution: Remove the variable. +Files: src/evalfunc.c + +Patch 8.1.1131 +Problem: getwinpos() does not work in the MS-Windows console. +Solution: Implement getwinpos(). +Files: src/ui.c, src/evalfunc.c, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.1.1132 +Problem: getwinpos() test fails on MS-Windows. +Solution: Don't try running this test. +Files: src/testdir/test_terminal.vim + +Patch 8.1.1133 +Problem: Compiler warning for uninitialized struct member. (Yegappan + Lakshmanan) +Solution: Add initializer field. +Files: src/globals.h + +Patch 8.1.1134 +Problem: Buffer for quickfix window is reused for another file. +Solution: Don't reuse the quickfix buffer. (Yegappan Lakshmanan) +Files: src/buffer.c, src/testdir/test_quickfix.vim + +Patch 8.1.1135 (after 8.1.1134) +Problem: Build failure for small version. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/buffer.c + +Patch 8.1.1136 +Problem: Decoding of mouse click escape sequence is not tested. +Solution: Add a test for xterm and SGR using low-level input. Make + low-level input execution with feedkeys() work. +Files: src/testdir/test_termcodes.vim, src/testdir/Make_all.mak, + src/evalfunc.c, src/ex_docmd.c + +Patch 8.1.1137 +Problem: Xterm mouse wheel escape sequence is not tested. +Solution: Add a test using low-level input. (Dominique Pelle, closes #4221) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1138 +Problem: Plugins don't get notified when the popup menu changes. +Solution: Add the CompleteChanged event. (Qiming Zhao, Andy Massimino, + closes #4176) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/dict.c, + src/insexpand.c, src/popupmnu.c, src/proto/autocmd.pro, + src/proto/dict.pro, src/proto/popupmnu.pro, + src/testdir/test_popup.vim, src/vim.h + +Patch 8.1.1139 +Problem: No test for what is fixed in patch 8.1.0716. +Solution: Add a test. (Yasuhiro Matsumoto, closes #3797) +Files: src/testdir/test_ins_complete.vim + +Patch 8.1.1140 +Problem: Not easy to find out what neighbors a window has. +Solution: Add more arguments to winnr(). (Yegappan Lakshmanan, closes #3993) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/proto/window.pro, + src/testdir/test_window_cmd.vim, src/window.c + +Patch 8.1.1141 +Problem: Terminal winpos test fails with very large terminal. (Dominique + Pelle) +Solution: Compute the expected size more accurately. (closes #4228) +Files: src/testdir/test_terminal.vim + +Patch 8.1.1142 +Problem: No test for dragging the window separators with the mouse. +Solution: Add a test. (Dominique Pelle, closes #4226) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1143 +Problem: May pass weird strings to file name expansion. +Solution: Check for matching characters. Disallow control characters. +Files: src/misc1.c, src/testdir/test_spell.vim, src/option.c, + src/proto/option.pro, src/spell.c, + src/testdir/test_escaped_glob.vim + +Patch 8.1.1144 (after 8.1.1143) +Problem: Too strict checking of the 'spellfile' option. +Solution: Allow for a path. +Files: src/option.c, src/testdir/test_spell.vim + +Patch 8.1.1145 +Problem: Compiler warning for unused function. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/option.c + +Patch 8.1.1146 +Problem: In MS-Windows console colors in a terminal window are wrong. +Solution: Use the ansi index also for 16 colors. (Ken Takata) +Files: src/terminal.c + +Patch 8.1.1147 +Problem: Desktop file translations are requiring manual updates. +Solution: Use the .po files for desktop file translations. (Christian + Brabandt) +Files: src/po/Makefile, src/po/gvim.desktop.in, src/po/vim.desktop.in, + CONTRIBUTING.md, Filelist, runtime/vim.desktop, + runtime/gvim.desktop + +Patch 8.1.1148 +Problem: CTRL-L with 'incsearch' does not pick up char under cursor. + (Smylers) +Solution: Do not compare the position with the cursor position. (Hirohito + Higashi, closes #3620) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.1149 +Problem: Building desktop files fails with older msgfmt. +Solution: Add autoconf check. Avoid always building the desktop files. +Files: src/configure.ac, src/auto/configure, src/po/Makefile, + src/po/Make_all.mak, src/config.mk.in + +Patch 8.1.1150 +Problem: Generating desktop files not tested on Travis. +Solution: Install a newer msgfmt package. (Christian Brabandt) +Files: .travis.yml + +Patch 8.1.1151 +Problem: Build fails when using shadow directory. +Solution: Link the desktop.in files. +Files: src/Makefile + +Patch 8.1.1152 +Problem: Compiler warning with VS2019. +Solution: Specify different offset for "AMD64". (Ken Takata, closes #4235) +Files: src/GvimExt/Makefile + +Patch 8.1.1153 +Problem: Msgfmt complains about missing LINGUAS file. (Tony Mechelynck) +Solution: Add command to generate LINGUAS. +Files: src/po/Makefile + +Patch 8.1.1154 +Problem: Getting a newer msgfmt on Travis is too complicated. +Solution: Use a "sourceline" entry. (Ozaki Kiichi, closes #4236) +Files: .travis.yml + +Patch 8.1.1155 +Problem: Termcodes tests can be improved. +Solution: Add helper functions to simplify tests. Dragging statusline for + xterm and sgr. (Dominique Pelle, closes #4237) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1156 +Problem: Unicode emoji and other image characters not recognized. +Solution: Add ranges for musical notation, game pieces, etc. (Martin + Tournoij, closes #4238) +Files: src/mbyte.c + +Patch 8.1.1157 +Problem: Unicode tables are out of date. +Solution: Update to Unicode 12. (Christian Brabandt, closes #4240) +Files: src/mbyte.c + +Patch 8.1.1158 +Problem: Json encoded string is sometimes missing the final NUL. +Solution: Add the NUL. Also for log messages. +Files: src/json.c, src/channel.c, src/testdir/test_json.vim + +Patch 8.1.1159 +Problem: MS-Windows: with a silent (un)install $VIM/_vimrc is removed. +Solution: Don't delete _vimrc in silent mode. (Ken Takata, closes #4242) +Files: nsis/gvim.nsi + +Patch 8.1.1160 +Problem: Termcodes test would fail in a very big terminal. +Solution: Bail out when the row is larger than what will work. (Dominique + Pelle, closes #4246) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1161 +Problem: Unreachable code. +Solution: Remove condition that will never be true. Add tests for all ANSI + colors. +Files: src/terminal.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_all_ansi_colors.dump + +Patch 8.1.1162 +Problem: Incorrect coverage information; typo in color name. +Solution: Fix the typo. Set environment variables to have a nested Vim + write the coverage info in another directory. +Files: src/testdir/test_terminal.vim, src/testdir/screendump.vim, + src/testdir/dumps/Test_terminal_all_ansi_colors.dump + +Patch 8.1.1163 +Problem: Codecov does not report all the coverage information. +Solution: Make a second run with the nested execution output, expect that + Codecov will merge the results. +Files: .travis.yml + +Patch 8.1.1164 +Problem: Gettitle test is failing when server name differs. (Kenta Sato) +Solution: Accept "VIM1" when 'autoservername' is used. (Dominique Pelle, + closes #4250, closes #4249) +Files: src/testdir/test_terminal.vim + +Patch 8.1.1165 +Problem: No test for mouse clicks in the terminal tabpage line. +Solution: Add a test. (Dominique Pelle, closes #4247). Also init + TabPageIdxs[], in case it's used before a redraw. +Files: src/screen.c, src/testdir/test_termcodes.vim + +Patch 8.1.1166 (after 8.1.1164) +Problem: Gettitle test can still fail when another Vim is running. +Solution: Accept any server name number. (Dominique Pelle, closes #4252) +Files: src/testdir/test_terminal.vim + +Patch 8.1.1167 +Problem: No test for closing tab by click in tabline. +Solution: Add a test. Also fix that dragging window separator could fail in + a large terminal. (Dominique Pelle, closes #4253) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1168 +Problem: Not all screen update code of the terminal window is executed in + tests. +Solution: Redraw before taking a screenshot. +Files: src/testdir/screendump.vim + +Patch 8.1.1169 +Problem: Writing coverage info in a separate dir is not needed. +Solution: Revert the changes to use a separate directory. +Files: .travis.yml, src/testdir/screendump.vim + +Patch 8.1.1170 +Problem: Terminal ANSI color test does not cover all colors. +Solution: Use the color number, the name is not always resulting in an ANSI + color when t_Co is 256. +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_all_ansi_colors.dump + +Patch 8.1.1171 +Problem: Statusline test could fail in large terminal. +Solution: Make the test work on a huge terminal. (Dominique Pelle, + closes #4255) +Files: src/testdir/test_statusline.vim + +Patch 8.1.1172 +Problem: Cursor properties were not fully tested. +Solution: Add a test. (Dominique Pelle, closes #4256) +Files: src/testdir/test_terminal.vim + +Patch 8.1.1173 +Problem: Suspend test has duplicated lines. +Solution: Use a function. +Files: src/testdir/test_suspend.vim + +Patch 8.1.1174 +Problem: Cannot build with Ruby 1.8. (Tom G. Christensen) +Solution: Include ruby/st.h. (Ozaki Kiichi, closes #4257) +Files: src/if_ruby.c + +Patch 8.1.1175 +Problem: No test for dragging a tab with the mouse and for creating a new + tab by double clicking in the tabline. +Solution: Add two tests. (Dominique Pelle, closes #4258) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1176 (after 8.1.1175) +Problem: Test for dragging a tab is flaky. +Solution: Add a brief sleep. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1177 +Problem: .ts files are recognized as xml, while typescript is more common. +Solution: Recognize .ts files as typescript. (closes #4264) +Files: runtime/filetype.vim src/testdir/test_filetype.vim + +Patch 8.1.1178 +Problem: When mouse click tests fails value of 'ttymouse' is unknown. +Solution: Add a message to the assert. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1179 +Problem: No test for mouse clicks in the fold column. +Solution: Add a test. (Dominique Pelle, closes #4261) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1180 +Problem: Vim script debugger tests are old style. +Solution: Turn into new style tests. (Yegappan Lakshmanan, closes #4259) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test108.in, src/testdir/test108.ok, + src/testdir/test_debugger.vim + +Patch 8.1.1181 +Problem: Tests for mouse clicks are a bit flaky when run in an interactive + terminal. +Solution: Use "xterm2" instead of "xterm" for 'ttymouse' to avoid spurious + drag events. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1182 +Problem: Some function prototypes are outdated. +Solution: Update function prototypes. (Ken Takata, closes #4267) +Files: src/os_mswin.c, src/proto/ex_getln.pro, src/proto/gui_w32.pro, + src/terminal.c, src/proto/terminal.pro, src/proto/window.pro, + src/window.c + +Patch 8.1.1183 +Problem: Typos in VisVim comments. +Solution: Correct the typos. (Christ van Willegen) +Files: src/VisVim/Commands.cpp, src/VisVim/OleAut.cpp, + src/VisVim/README_VisVim.txt + +Patch 8.1.1184 +Problem: Undo file left behind after running test. +Solution: Delete the undo file. (Dominique Pelle, closes #4279) +Files: src/testdir/test_filechanged.vim + +Patch 8.1.1185 +Problem: Mapping for CTRL-X is inconsistent. +Solution: Map CTRL-X to "*d also for the MS-Windows console. (Ken Takata, + closes #4265) +Files: src/getchar.c + +Patch 8.1.1186 +Problem: readdir() allocates list twice. +Solution: Remove second allocation. Also check for zero length. +Files: src/evalfunc.c + +Patch 8.1.1187 +Problem: Cannot recognize Pipfile. +Solution: Use existing filetypes. (Charles Ross, closes #4280) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.1188 +Problem: Not all Vim variables require the v: prefix. +Solution: When scriptversion is 3 all Vim variables can only be used with + the v: prefix. (Ken Takata, closes #4274) +Files: src/eval.c, src/ex_cmds2.c, src/testdir/test_eval_stuff.vim, + runtime/doc/eval.txt + +Patch 8.1.1189 +Problem: Mode is not cleared when leaving Insert mode. +Solution: Clear the mode when got_int is set. (Ozaki Kiichi, closes #4270) +Files: src/edit.c, src/testdir/test_bufline.vim, + src/testdir/test_messages.vim + +Patch 8.1.1190 +Problem: has('vimscript-3') does not work. +Solution: Add "vimscript-3" to the list of features. (partly by Ken Takata) +Files: src/evalfunc.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.1191 +Problem: Not all debug commands are covered by a test. +Solution: Add more tests. (Yegappan Lakshmanan, closes #4282) +Files: src/testdir/test_debugger.vim + +Patch 8.1.1192 +Problem: Mode is not cleared when leaving Insert mode with mapped Esc. +Solution: Clear the mode when redraw_cmdline is set. (closes #4269) +Files: src/globals.h, src/screen.c, src/testdir/test_messages.vim + +Patch 8.1.1193 +Problem: Typos and small problems in test files. +Solution: Small improvements. +Files: src/testdir/test_gn.vim, src/testdir/test_quotestar.vim, + src/testdir/test_registers.vim, src/testdir/test_syntax.vim, + src/testdir/test_tabpage.vim, src/testdir/test_vartabs.vim + +Patch 8.1.1194 +Problem: Typos and small problems in source files. +Solution: Small fixes. +Files: src/channel.c, src/crypt.c, src/edit.c, src/regexp.h, src/tag.c, + src/term.c, src/terminal.c, src/userfunc.c, src/installman.sh + +Patch 8.1.1195 +Problem: Vim script debugger functionality needs cleanup. +Solution: Move debugger code to a separate file. Add more tests. (Yegappan + Lakshmanan, closes #4285) +Files: Filelist, src/Make_bc5.mak, src/Make_cyg_ming.mak, + src/Make_dice.mak, src/Make_ivc.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/debugger.c, src/ex_cmds2.c, + src/proto.h, src/proto/debugger.pro, src/proto/ex_cmds2.pro + +Patch 8.1.1196 +Problem: Parallel build may fail. +Solution: Update dependencies. +Files: src/Makefile + +Patch 8.1.1197 +Problem: When starting with multiple tabs file messages is confusing. +Solution: Set 'shortmess' when loading the other tabs. (Christian Brabandt) +Files: src/main.c, src/testdir/test_startup.vim, + src/testdir/dumps/Test_start_with_tabs.dump + +Patch 8.1.1198 +Problem: Bracketed paste may remain active after Vim exists, because the + terminal emulator restores the setting. +Solution: Set/reset bracketed paste mode before setting the terminal mode. + (closes #3579) +Files: src/term.c + + +Patch 8.1.1199 +Problem: No test for :abclear. +Solution: Add a test. (Dominique Pelle, closes #4292) +Files: src/testdir/test_mapping.vim + +Patch 8.1.1200 +Problem: Old style comments in debugger source. +Solution: Use new style comments. (Yegappan Lakshmanan, closes #4286) +Files: src/README.md, src/debugger.c + +Patch 8.1.1201 +Problem: Output of :command is hard to read. +Solution: Make some columns wider, some narrower. Truncate the command when + listing all. +Files: src/ex_docmd.c, src/message.c, src/proto/message.pro, + src/getchar.c, src/menu.c + +Patch 8.1.1202 +Problem: Always get regexp debugging logs when building with -DDEBUG. +Solution: By default do not create regexp debugging logs. (Ken Takata) +Files: src/regexp.c + +Patch 8.1.1203 +Problem: Some autocmd tests are old style. +Solution: Turn the tests into new style. (Yegappan Lakshmanan, closes #4295) +Files: src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_vms.mms, + src/testdir/test11.in, src/testdir/test11.ok, + src/testdir/test_autocmd.vim + +Patch 8.1.1204 +Problem: Output of :command with address completion is not nice. +Solution: Shorten the address completion names. +Files: src/ex_docmd.c, runtime/doc/map.txt + +Patch 8.1.1205 +Problem: A BufReadPre autocommand may cause the cursor to move. +Solution: Restore the cursor position after executing the autocommand, + unless the autocommand moved it. (Christian Brabandt, + closes #4302, closes #4294) +Files: src/autocmd.c, src/proto/window.pro, src/structs.h, + src/testdir/test_autocmd.vim, src/window.c + +Patch 8.1.1206 +Problem: User command parsing and listing not properly tested. +Solution: Add more tests. (Dominique Pelle, closes #4296) +Files: src/testdir/test_usercommands.vim + +Patch 8.1.1207 +Problem: Some compilers give warning messages. +Solution: Initialize variables, change printf() argument. (Christian + Brabandt, closes #4305) +Files: src/eval.c, src/screen.c, src/undo.c, src/window.c + +Patch 8.1.1208 +Problem: Links to repository use wrong file name. +Solution: Swap the file names. (Nahuel Ourthe, closes #4304) +Files: src/README.md + +Patch 8.1.1209 +Problem: Clever compiler warns for buffer being too small. +Solution: Make the buffer bigger (even though it's not really needed). +Files: src/evalfunc.c, src/syntax.c + +Patch 8.1.1210 +Problem: Support for user commands is spread out. No good reason to make + user commands optional. +Solution: Move user command support to usercmd.c. Always enable the + user_commands feature. +Files: src/usercmd.c, src/proto/usercmd.pro, Filelist, src/Make_bc5.mak, + src/Make_cyg_ming.mak, src/Make_dice.mak, src/Make_ivc.mak, + src/Make_manx.mak, src/Make_morph.mak, src/Make_mvc.mak, + src/Make_sas.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/buffer.c, src/eval.c, src/evalfunc.c, src/ex_cmds.h, + src/ex_docmd.c, src/proto/ex_docmd.pro, src/ex_getln.c, + src/feature.h, src/macros.h, src/misc2.c, src/proto.h, + src/structs.h, src/version.c, runtime/doc/eval.txt, + runtime/doc/various.txt + +Patch 8.1.1211 +Problem: Not all user command code is tested. +Solution: Add more tests. +Files: src/testdir/test_usercommands.vim + +Patch 8.1.1212 +Problem: Signal PWR is not tested. +Solution: Test that PWR updates the swap file. (Dominique Pelle, + closes #4312) +Files: src/testdir/test_signals.vim + +Patch 8.1.1213 +Problem: "make clean" in top dir does not cleanup indent test output. +Solution: Clean the indent test output. Do not rely on the vim executable + for that. (closes #4307) +Files: Makefile, runtime/indent/Makefile, + runtime/indent/testdir/cleantest.vim + +Patch 8.1.1214 +Problem: Old style tests. +Solution: Move tests from test14 to new style test files. (Yegappan + Lakshmanan, closes #4308) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test14.in, src/testdir/test14.ok, + src/testdir/test_edit.vim, src/testdir/test_normal.vim, + src/testdir/test_search.vim, src/testdir/test_substitute.vim, + src/testdir/test_visual.vim + +Patch 8.1.1215 +Problem: "make clean" does not remove generated src/po files. +Solution: Remove the files for "make clean". (Christian Brabandt) +Files: src/po/Makefile + +Patch 8.1.1216 +Problem: Mouse middle click is not tested. +Solution: Add a test. (Dominique Pelle, closes #4310) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1217 +Problem: MS-Windows: no space reserved for font quality name. +Solution: Add quality_name length if present. (Ken Takata, closes #4311) +Files: src/gui_w32.c + +Patch 8.1.1218 +Problem: Cannot set a directory for a tab page. +Solution: Add the tab-local directory. (Yegappan Lakshmanan, closes #4212) +Files: runtime/doc/autocmd.txt, runtime/doc/editing.txt, + runtime/doc/eval.txt, runtime/doc/index.txt, + runtime/doc/options.txt, runtime/doc/usr_22.txt, + runtime/doc/usr_41.txt, src/eval.c, src/evalfunc.c, + src/ex_cmdidxs.h, src/ex_cmds.h, src/ex_docmd.c, src/if_py_both.h, + src/proto/eval.pro, src/proto/ex_docmd.pro, src/structs.h, + src/testdir/test_getcwd.vim, src/testdir/test_mksession.vim, + src/window.c + +Patch 8.1.1219 +Problem: Not checking for NULL return from alloc(). +Solution: Add checks. (Martin Kunev, closes #4303, closes #4174) +Files: src/beval.c, src/blowfish.c, src/crypt.c, src/crypt_zip.c, + src/ops.c, src/option.c, src/popupmnu.c, src/proto/blowfish.pro, + src/proto/crypt_zip.pro, src/gui_gtk_f.c, src/gui_gtk_x11.c, + src/libvterm/src/state.c, src/libvterm/src/termscreen.c + +Patch 8.1.1220 (after 8.1.1219) +Problem: Build fails on MS-Windows. +Solution: Move declaration to start of block. +Files: src/libvterm/src/state.c + +Patch 8.1.1221 +Problem: Filtering does not work when listing marks. +Solution: Implement filtering marks. (Marcin Szamotulski, closes #3895) +Files: runtime/doc/various.txt, src/mark.c, + src/testdir/test_filter_cmd.vim + +Patch 8.1.1222 (after 8.1.1219) +Problem: Build still fails on MS-Windows. +Solution: Move another declaration to start of block. +Files: src/libvterm/src/state.c + +Patch 8.1.1223 +Problem: Middle mouse click test fails without a clipboard. +Solution: Check if the clipboard can be used. (Dominique Pelle, Christian + Brabandt) Also use WorkingClipboard() instead of checking for the + "clipboard" feature. +Files: src/testdir/test_termcodes.vim, src/testdir/test_quotestar.vim + +Patch 8.1.1224 +Problem: MS-Windows: cannot specify font weight. +Solution: Add the "W" option to 'guifont'. (closes #4309) Move GUI font + explanation out of options.txt. +Files: runtime/doc/options.txt, runtime/doc/gui.txt, + runtime/doc/mbyte.txt, src/gui_w32.c, src/os_mswin.c + +Patch 8.1.1225 +Problem: Cannot create a pty to use with :terminal on FreeBSD. +Solution: Add support for posix_openpt(). (Ozaki Kiichi, closes #4306, + closes #4289) +Files: src/configure.ac, src/config.h.in, src/auto/configure, src/pty.c + +Patch 8.1.1226 +Problem: {not in Vi} remarks get in the way of useful help text. +Solution: Make a list of all Vi options, instead of mentioning what Vi does + not have. Update the help text for options. +Files: runtime/doc/vi_diff.txt, runtime/doc/options.txt + +Patch 8.1.1227 +Problem: Duplicate entries in the generated .desktop files. (Ralf Schandl) +Solution: Remove translated entries from the .in files. (closes #4313) +Files: src/po/gvim.desktop.in, src/po/vim.desktop.in + +Patch 8.1.1228 +Problem: Not possible to process tags with a function. +Solution: Add tagfunc() (Christian Brabandt, Andy Massimino, closes #4010) +Files: runtime/doc/options.txt, runtime/doc/tagsrch.txt, + runtime/optwin.vim, src/buffer.c, src/dict.c, src/ex_cmds.c, + src/globals.h, src/insexpand.c, src/normal.c, src/option.c, + src/option.h, src/proto/dict.pro, src/structs.h, src/tag.c, + src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_tagfunc.vim, src/vim.h, src/window.c + +Patch 8.1.1229 +Problem: Warning for posix_openpt() not declared. (Tony Mechelynck) +Solution: Add declaration. +Files: src/pty.c + +Patch 8.1.1230 +Problem: A lot of code is shared between vim.exe and gvim.exe. +Solution: Optionally put the shared code in vim.dll. (Ken Takata, + closes #4287) +Files: Filelist, nsis/gvim.nsi, runtime/doc/gui_w32.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/channel.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/feature.h, + src/fileio.c, src/getchar.c, src/globals.h, src/gui.c, src/gui.h, + src/gui_gtk_x11.c, src/gui_w32.c, src/if_mzsch.c, src/main.c, + src/mbyte.c, src/memline.c, src/message.c, src/misc2.c, + src/normal.c, src/option.c, src/os_mswin.c, src/os_w32dll.c, + src/os_w32exe.c, src/os_win32.c, src/os_win32.h, + src/proto/gui.pro, src/proto/gui_w32.pro, src/proto/misc2.pro, + src/proto/os_mswin.pro, src/proto/os_win32.pro, src/syntax.c, + src/term.c, src/terminal.c, src/ui.c, src/version.c, src/vim.rc + +Patch 8.1.1231 +Problem: Asking about existing swap file unnecessarily. +Solution: When it is safe, delete the swap file. Remove + HAS_SWAP_EXISTS_ACTION, it is always defined. (closes #1237) +Files: src/memline.c, src/globals.h, src/buffer.c, src/ex_cmds.c, + src/fileio.c, src/main.c, src/testdir/test_swap.vim, + runtime/doc/usr_11.txt, src/os_win32.c, src/proto/os_win32.pro, + src/os_unix.c, src/proto/os_unix.pro + +Patch 8.1.1232 +Problem: Can't build on MS-Windows. +Solution: Define process_still_running. +Files: src/memline.c, src/os_win32.c, src/proto/os_win32.pro, + src/os_unix.c, src/proto/os_unix.pro + +Patch 8.1.1233 +Problem: Cannot build tiny version. +Solution: Remove #ifdef for verb_msg(). +Files: src/message.c + +Patch 8.1.1234 +Problem: Swap file test fails on MS-Windows. +Solution: Only compare the tail of the file names. +Files: src/testdir/test_swap.vim + +Patch 8.1.1235 +Problem: Compiler warnings for using STRLEN() value. +Solution: Cast to int. (Christian Brabandt, Mike Williams) +Files: src/tag.c + +Patch 8.1.1236 +Problem: sjiscorr.c not found in shadow directory. (Tony Mechelynck) +Solution: Link po/*.c files with "make shadow". +Files: src/Makefile + +Patch 8.1.1237 +Problem: Error for using "compl", reserved word in C++. +Solution: Rename to "complp". (suggestion by Ken Takata) +Files: src/usercmd.c, src/proto/usercmd.pro + +Patch 8.1.1238 +Problem: MS-Windows: compiler warning for sprintf() format. +Solution: Change %d to %ld. (Ken Takata) +Files: src/gui_w32.c + +Patch 8.1.1239 +Problem: Key with byte sequence containing CSI does not work. +Solution: Do not recognize CSI as special unless the GUI is active. (Ken + Takata, closes #4318) +Files: src/getchar.c + +Patch 8.1.1240 +Problem: Runtime desktop files are overwritten by build. (Tony Mechelynck) +Solution: Instead of copying the files find them with "make install". +Files: src/Makefile, src/po/Makefile + +Patch 8.1.1241 +Problem: Ex command info contains confusing information. +Solution: When using the NOTADR flag use ADDR_OTHER for the address type. + Cleanup code using NOTADR. Check for errors in + create_cmdidxs.vim. Adjust Makefile to see the errors. +Files: src/ex_cmds.h, src/ex_docmd.c, src/Makefile, + src/create_cmdidxs.vim, src/usercmd.c, src/ex_cmds.c, + src/window.c, src/testdir/test_usercommands.vim + +Patch 8.1.1242 +Problem: No cmdline redraw when tabpages have different 'cmdheight'. +Solution: redraw the command line when 'cmdheight' changes when switching + tabpages. (closes #4321) +Files: src/testdir/test_tabpage.vim, src/window.c, + src/testdir/dumps/Test_tabpage_cmdheight.dump, + src/testdir/screendump.vim + +Patch 8.1.1243 (after 8.1.1241) +Problem: Compiler warnings for incomplete switch statement. (Tony + Mechelynck) +Solution: Add ADDR_QUICKFIX to the list. +Files: src/ex_docmd.c + +Patch 8.1.1244 +Problem: No tests for CTRL-mouse-click. +Solution: Add a few tests. (Dominique Pelle, closes #4323) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1245 +Problem: ":copen 10" sets height in full-height window. (Daniel Hahler) +Solution: Don't set the height if the quickfix window is full height. + (closes #4325) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.1246 +Problem: Cannot handle negative mouse coordinate from urxvt. +Solution: Accept '-' where a digit is expected. (Vincent Vinel, + closes #4326) +Files: src/term.c + +Patch 8.1.1247 +Problem: Urxvt mouse codes are not tested. +Solution: Also set 'ttymouse' to "urxvt" in the termcodes test. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1248 +Problem: No test for dec mouse. +Solution: Add some tests for dec mouse. Add "no_query_mouse". +Files: src/evalfunc.c, src/globals.h, src/os_unix.c, + src/testdir/test_termcodes.vim, runtime/doc/eval.txt + +Patch 8.1.1249 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. (Christian Brabandt) +Files: src/regexp_nfa.c + +Patch 8.1.1250 +Problem: No test for netterm mouse. +Solution: Add some tests for netterm mouse. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1251 +Problem: No test for completion of mapping keys. +Solution: Add a test. Also clean up the code. +Files: src/getchar.c, src/term.c, src/proto/term.pro, + src/testdir/test_cmdline.vim + +Patch 8.1.1252 +Problem: Not all mapping completion is tested. +Solution: Add a few more mapping completion tests. +Files: src/testdir/test_cmdline.vim + +Patch 8.1.1253 (after 8.1.1252) +Problem: Mapping completion test fails. +Solution: Fix expected output. +Files: src/testdir/test_cmdline.vim + +Patch 8.1.1254 +Problem: Mapping completion contains dead code. +Solution: Remove the code. +Files: src/term.c, src/testdir/test_cmdline.vim + +Patch 8.1.1255 +Problem: Building desktop files fails on FreeBSD. (Adam Weinberger) +Solution: Avoid using non-portable construct in Makefile. (closes #4332) +Files: src/po/Makefile + +Patch 8.1.1256 +Problem: Cannot navigate through errors relative to the cursor. +Solution: Add :cabove, :cbelow, :labove and :lbelow. (Yegappan Lakshmanan, + closes #4316) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmdidxs.h, + src/ex_cmds.h, src/ex_docmd.c, src/proto/quickfix.pro, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.1257 +Problem: MSVC: name of object directory not always right. +Solution: Adjust comment. Don't use different directory for DIRECTX. Do + use different directory for USE_MSVCRT. (Ken Takata, closes #4333) +Files: src/Make_mvc.mak + +Patch 8.1.1258 +Problem: The "N files to edit" message can not be suppressed. +Solution: Suppress the message with --not-a-term. (closes #4320) +Files: src/main.c + +Patch 8.1.1259 +Problem: Crash when exiting early. (Ralf Schandl) +Solution: Only pop/push the title when it was set. (closes #4334) +Files: src/os_unix.c, src/misc2.c, src/usercmd.c, src/tag.c + +Patch 8.1.1260 +Problem: Comparing with pointer instead of value. +Solution: Add a "*". (Ken Takata, closes #4336) +Files: src/usercmd.c + +Patch 8.1.1261 +Problem: No error for quickfix commands with negative range. +Solution: Add ADDR_UNSIGNED and use it for quickfix commands. Make + assert_fails() show the command if the error doesn't match. +Files: src/ex_cmds.h, src/ex_docmd.c, src/testdir/test_quickfix.vim, + runtime/doc/quickfix.txt, src/eval.c, src/quickfix.c, + src/proto/quickfix.pro, src/ex_cmds2.c + +Patch 8.1.1262 +Problem: Cannot simulate a mouse click in a test. +Solution: Add test_setmouse(). +Files: src/evalfunc.c, runtime/doc/eval.txt, runtime/doc/usr_41.txt + +Patch 8.1.1263 +Problem: Mouse clicks in WinBar not tested. +Solution: Add a test for clicking on the WinBar entries. +Files: src/testdir/test_winbar.vim + +Patch 8.1.1264 +Problem: Crash when closing window from WinBar click. (Ben Jackson) +Solution: Check that window pointer is still valid. (closes #4337) +Files: src/menu.c + +Patch 8.1.1265 +Problem: When GPM mouse support is enabled double clicks in xterm do not + work. +Solution: Use KS_GPM_MOUSE for GPM mouse events. +Files: src/term.c, src/os_unix.c, src/keymap.h + +Patch 8.1.1266 +Problem: Winbar test doesn't test enough. +Solution: Check that the WinBar actually shows up. Correct check for clicks + with no effect. (Ben Jackson, closes #4338) +Files: src/testdir/test_winbar.vim + +Patch 8.1.1267 +Problem: Cannot check if GPM mouse support is working. +Solution: Add the "mouse_gpm_enable" feature. +Files: src/evalfunc.c, src/os_unix.c, src/proto/os_unix.pro, + runtime/doc/eval.txt + +Patch 8.1.1268 +Problem: Map completion test fails in GUI. +Solution: Skip the test that fails. +Files: src/testdir/test_cmdline.vim + +Patch 8.1.1269 +Problem: MS-Windows GUI: multibyte chars with a 0x80 byte do not work when + compiled with VIMDLL. +Solution: Adjust the condition for fixing the input buffer. (Ken Takata, + closes #4330) +Files: src/getchar.c + +Patch 8.1.1270 +Problem: Cannot see current match position. +Solution: Show "3/44" when using the "n" command and "S" is not in + 'shortmess'. (Christian Brabandt, closes #4317) +Files: runtime/doc/options.txt, runtime/doc/pattern.txt, src/option.c, + src/option.h, src/search.c, src/testdir/Make_all.mak, + src/testdir/test_search_stat.vim + +Patch 8.1.1271 (after 8.1.1270) +Problem: Compiler warnings for use of STRNCPY(). (John Marriott) +Solution: Use mch_memmove() instead of STRNCPY(). +Files: src/search.c + +Patch 8.1.1272 +Problem: Click on WinBar of other window not tested. +Solution: Add a test case. +Files: src/testdir/test_winbar.vim + +Patch 8.1.1273 +Problem: Compiler warning in direct write code. +Solution: Add a type cast. +Files: src/gui_dwrite.cpp + +Patch 8.1.1274 +Problem: After :unmenu can still execute the menu with :emenu. +Solution: Do not execute a menu that was disabled for the specified mode. +Files: src/menu.c, src/testdir/test_menu.vim + +Patch 8.1.1275 +Problem: Cannot navigate to errors before/after the cursor. +Solution: Add the :cbefore and :cafter commands. (Yegappan Lakshmanan, + closes #4340) +Files: runtime/doc/index.txt, runtime/doc/quickfix.txt, src/ex_cmdidxs.h, + src/ex_cmds.h, src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.1276 +Problem: Cannot combine text properties with syntax highlighting. +Solution: Add the "combine" field to prop_type_add(). (closes #4343) +Files: runtime/doc/eval.txt, runtime/doc/textprop.txt, src/screen.c, + src/structs.h, src/testdir/test_textprop.vim + +Patch 8.1.1277 (after 8.1.1276) +Problem: Missing screenshot update. +Solution: Update the screenshot. +Files: src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.1278 (after 8.1.1276) +Problem: Missing change for "combine" field. +Solution: Also change the textprop implementation. +Files: src/textprop.c + +Patch 8.1.1279 +Problem: Cannot set 'spelllang' to "sr@latin". (Bojan Stipic) +Solution: Allow using '@' in 'spelllang'. (closes #4342) +Files: src/option.c, src/testdir/gen_opt_test.vim + +Patch 8.1.1280 +Problem: Remarks about functionality not in Vi clutters the help. +Solution: Move all info about what is new in Vim or already existed in Vi to + vi_diff.txt. Remove {not in Vi} remarks. (closes #4268) Add + "noet" to the help files modeline. Also include many other help + file improvements. +Files: runtime/doc/vi_diff.txt, runtime/doc/arabic.txt, + runtime/doc/autocmd.txt, runtime/doc/change.txt, + runtime/doc/channel.txt, runtime/doc/cmdline.txt, + runtime/doc/debugger.txt, runtime/doc/debug.txt, + runtime/doc/develop.txt, runtime/doc/diff.txt, + runtime/doc/digraph.txt, runtime/doc/editing.txt, + runtime/doc/eval.txt, runtime/doc/farsi.txt, + runtime/doc/filetype.txt, runtime/doc/fold.txt, + runtime/doc/ft_ada.txt, runtime/doc/ft_rust.txt, + runtime/doc/ft_sql.txt, runtime/doc/gui.txt, + runtime/doc/gui_w32.txt, runtime/doc/gui_x11.txt, + runtime/doc/hangulin.txt, runtime/doc/hebrew.txt, + runtime/doc/helphelp.txt, runtime/doc/help.txt, + runtime/doc/howto.txt, runtime/doc/if_cscop.txt, + runtime/doc/if_lua.txt, runtime/doc/if_mzsch.txt, + runtime/doc/if_ole.txt, runtime/doc/if_perl.txt, + runtime/doc/if_pyth.txt, runtime/doc/if_ruby.txt, + runtime/doc/if_sniff.txt, runtime/doc/if_tcl.txt, + runtime/doc/indent.txt, runtime/doc/index.txt, + runtime/doc/insert.txt, runtime/doc/intro.txt, + runtime/doc/map.txt, runtime/doc/mbyte.txt, + runtime/doc/message.txt, runtime/doc/mlang.txt, + runtime/doc/motion.txt, runtime/doc/netbeans.txt, + runtime/doc/options.txt, runtime/doc/os_390.txt, + runtime/doc/os_amiga.txt, runtime/doc/os_beos.txt, + runtime/doc/os_dos.txt, runtime/doc/os_mac.txt, + runtime/doc/os_mint.txt, runtime/doc/os_msdos.txt, + runtime/doc/os_os2.txt, runtime/doc/os_qnx.txt, + runtime/doc/os_risc.txt, runtime/doc/os_unix.txt, + runtime/doc/os_vms.txt, runtime/doc/os_win32.txt, + runtime/doc/pattern.txt, runtime/doc/pi_getscript.txt, + runtime/doc/pi_gzip.txt, runtime/doc/pi_logipat.txt, + runtime/doc/pi_netrw.txt, runtime/doc/pi_paren.txt, + runtime/doc/pi_spec.txt, runtime/doc/pi_tar.txt, + runtime/doc/pi_vimball.txt, runtime/doc/pi_zip.txt, + runtime/doc/print.txt, runtime/doc/quickfix.txt, + runtime/doc/quickref.txt, runtime/doc/quotes.txt, + runtime/doc/recover.txt, runtime/doc/remote.txt, + runtime/doc/repeat.txt, runtime/doc/rileft.txt, + runtime/doc/russian.txt, runtime/doc/scroll.txt, + runtime/doc/sign.txt, runtime/doc/spell.txt, + runtime/doc/sponsor.txt, runtime/doc/starting.txt, + runtime/doc/syntax.txt, runtime/doc/tabpage.txt, + runtime/doc/tagsrch.txt, runtime/doc/terminal.txt, + runtime/doc/term.txt, runtime/doc/textprop.txt, + runtime/doc/tips.txt, runtime/doc/todo.txt, + runtime/doc/uganda.txt, runtime/doc/undo.txt, + runtime/doc/usr_01.txt, runtime/doc/usr_02.txt, + runtime/doc/usr_03.txt, runtime/doc/usr_04.txt, + runtime/doc/usr_05.txt, runtime/doc/usr_06.txt, + runtime/doc/usr_07.txt, runtime/doc/usr_08.txt, + runtime/doc/usr_09.txt, runtime/doc/usr_10.txt, + runtime/doc/usr_11.txt, runtime/doc/usr_12.txt, + runtime/doc/usr_20.txt, runtime/doc/usr_21.txt, + runtime/doc/usr_22.txt, runtime/doc/usr_23.txt, + runtime/doc/usr_24.txt, runtime/doc/usr_25.txt, + runtime/doc/usr_26.txt, runtime/doc/usr_27.txt, + runtime/doc/usr_28.txt, runtime/doc/usr_29.txt, + runtime/doc/usr_30.txt, runtime/doc/usr_31.txt, + runtime/doc/usr_32.txt, runtime/doc/usr_40.txt, + runtime/doc/usr_41.txt, runtime/doc/usr_43.txt, + runtime/doc/usr_44.txt, runtime/doc/usr_45.txt, + runtime/doc/usr_90.txt, runtime/doc/usr_toc.txt, + runtime/doc/various.txt, runtime/doc/version4.txt, + runtime/doc/version5.txt, runtime/doc/version6.txt, + runtime/doc/version7.txt, runtime/doc/version8.txt, + runtime/doc/visual.txt, runtime/doc/windows.txt, runtime/doc/tags + +Patch 8.1.1281 +Problem: Cannot specify a count with :chistory. +Solution: Add a count to :chistory and :lhistory. (Yegappan Lakshmanan, + closes #4344) +Files: runtime/doc/quickfix.txt, src/ex_cmds.h, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.1.1282 +Problem: Running make in src/po leaves LINGUAS file behind. (Ken Takata) +Solution: Delete LINGUAS after running msgfmt. +Files: src/po/Makefile + +Patch 8.1.1283 +Problem: Delaying half a second after the top-bot message. +Solution: Instead of the delay add "W" to the search count. +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.1.1284 +Problem: Detecting *.tmpl as htmlcheetah is outdated. +Solution: Use the generic name "template". (closes #4348) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.1285 +Problem: Test17 is old style. +Solution: Turn into new style test. (Yegappan Lakshmanan, closes #4347) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test17.in, src/testdir/test17.ok, + src/testdir/test17a.in, src/testdir/test_checkpath.vim, + src/testdir/test_gf.vim + +Patch 8.1.1286 +Problem: Running tests leaves XTest_tabpage_cmdheight file behind. +Solution: Delete the right file. (closes #4350) +Files: src/testdir/test_tabpage.vim + +Patch 8.1.1287 +Problem: Cannot build with +eval but without +mouse. +Solution: Add #ifdefs around f_test_setmouse(). (John Marriott) +Files: src/evalfunc.c + +Patch 8.1.1288 +Problem: Search stats don't show for mapped command. +Solution: Remove SEARCH_PEEK from searchit flags. Add a test. (Christian + Brabandt) +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.1.1289 +Problem: May not have enough space to add "W" to search stats. +Solution: Reserve a bit more space. (Christian Brabandt) +Files: src/search.c + +Patch 8.1.1290 +Problem: .hgignore and .gitignore are either distributed or in git, not + both. +Solution: Add .gitignore to the distribution and .hgignore to git. Update + the entries. (Christian Brabandt, Ken Takata) +Files: .gitignore, .hgignore, Filelist + +Patch 8.1.1291 +Problem: Not easy to change directory and restore. +Solution: Add the chdir() function. (Yegappan Lakshmanan, closes #4358) +Files: runtime/doc/eval.txt, runtime/doc/todo.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/ex_docmd.c, + src/if_py_both.h, src/proto/ex_docmd.pro, src/structs.h, + src/testdir/test_cd.vim + +Patch 8.1.1292 +Problem: Invalid command line arguments not tested. +Solution: Add a test. (Dominique Pelle, closes #4346) +Files: src/testdir/test_startup.vim + +Patch 8.1.1293 +Problem: MSVC files are no longer useful for debugging. Newer Visual + Studio versions cannot read them. +Solution: Delete the files. (Ken Takata, closes #4357) +Files: Filelist, src/Make_dvc.mak, src/Make_ivc.mak, + runtime/doc/debug.txt, src/INSTALLpc.txt, src/Make_mvc.mak + +Patch 8.1.1294 +Problem: MS-Windows: Some fonts return wrong average char width. +Solution: Compute the average ourselves. (Ken Takata, closes #4356) +Files: src/gui_w32.c + +Patch 8.1.1295 +Problem: When vimrun.exe does not exist external command may fail. +Solution: Use "cmd /c" twice to get the same behavior. (Ken Takata, + closes #4355) +Files: src/os_win32.c + +Patch 8.1.1296 +Problem: Crash when using invalid command line argument. +Solution: Check for options not being initialized. +Files: src/term.c, src/testdir/test_startup.vim + +Patch 8.1.1297 +Problem: Invalid argument test fails without GTK. +Solution: Test -display and --display separately. +Files: src/testdir/test_startup.vim + +Patch 8.1.1298 +Problem: Invalid argument test fails without X clipboard. +Solution: Test -display only with the +xterm_clipboard feature. +Files: src/testdir/test_startup.vim + +Patch 8.1.1299 +Problem: "extends" from 'listchars' is used when 'list' is off. (Hiroyuki + Yoshinaga) +Solution: Only use the "extends" character when 'list' is on. (Hirohito + Higashi, closes #4360) +Files: src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.1300 +Problem: In a terminal 'ballooneval' does not work right away. +Solution: Flush output after drawing the balloon. Add the <Ignore> key + code. Add a test. +Files: src/ex_cmds2.c, src/testdir/test_balloon.vim, src/misc2.c, + src/testdir/Make_all.mak, + src/testdir/dumps/Test_balloon_eval_term_01.dump + +Patch 8.1.1301 +Problem: When compiled with VIMDLL some messages are not shown. +Solution: Set/reset gui.in_use and gui.starting as needed. (Ken Takata, + closes #4361) +Files: src/gui_w32.c, src/main.c, src/message.c + +Patch 8.1.1302 +Problem: v:beval_text is not tested in Visual mode. +Solution: Add a screenshot of the balloon in Visual mode. +Files: src/testdir/test_balloon.vim, src/normal.c, + src/testdir/dumps/Test_balloon_eval_term_01.dump, + src/testdir/dumps/Test_balloon_eval_term_02.dump + +Patch 8.1.1303 +Problem: Not possible to hide a balloon. +Solution: Hide the balloon when balloon_show() is called with an empty + string or list. Add balloon_gettext(). +Files: src/evalfunc.c, src/popupmnu.c, src/gui_beval.c, src/gui_w32.c, + src/beval.h, src/testdir/test_balloon.vim, runtime/doc/eval.txt + +Patch 8.1.1304 +Problem: MS-Windows: compiler warning for unused value. +Solution: Adjust #ifdefs. (Ken Takata, closes #4363) +Files: src/gui.c + +Patch 8.1.1305 +Problem: There is no easy way to manipulate environment variables. +Solution: Add environ(), getenv() and setenv(). (Yasuhiro Matsumoto, + closes #2875) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/Make_all.mak, src/testdir/test_environ.vim + +Patch 8.1.1306 +Problem: Borland support is outdated and doesn't work. +Solution: Remove Borland support, there are other (free) compilers + available. (Thomas Dziedzic, Ken Takata, closes #4364) +Files: .gitignore, .hgignore, Filelist, runtime/doc/debug.txt, + runtime/doc/develop.txt, runtime/doc/usr_90.txt, + src/GvimExt/Make_bc5.mak, src/GvimExt/gvimext.cpp, + src/GvimExt/gvimext.rc, src/INSTALLpc.txt, src/Make_bc5.mak, + src/dosinst.c, src/dosinst.h, src/evalfunc.c, src/ex_cmds.c, + src/ex_getln.c, src/gui_w32.c, src/if_ole.cpp, src/if_py_both.h, + src/main.c, src/mark.c, src/message.c, src/misc1.c, src/misc2.c, + src/normal.c, src/option.c, src/os_mswin.c, src/os_w32exe.c, + src/os_win32.c, src/os_win32.h, src/proto.h, src/screen.c, + src/spell.c, src/spellfile.c, src/syntax.c, src/userfunc.c, + src/vim.h, src/vim.rc, src/vimrun.c, src/xxd/Make_bc5.mak, + src/xxd/xxd.c + +Patch 8.1.1307 +Problem: Cannot reconnect to the X server after it restarted. +Solution: Add the :xrestore command. (Adrian Kocis, closes #844) +Files: runtime/doc/index.txt, runtime/doc/various.txt, src/os_unix.c, + src/proto/os_unix.pro, src/globals.h, src/ex_cmds.h, + src/ex_cmdidxs.h, src/ex_docmd.c, src/testdir/test_paste.vim + +Patch 8.1.1308 +Problem: The Normal highlight is not defined when compiled with GUI. +Solution: Always define Normal. (Christian Brabandt, closes #4072) +Files: runtime/doc/syntax.txt, src/syntax.c, + src/testdir/test_highlight.vim + +Patch 8.1.1309 (after 8.1.1308) +Problem: Test for Normal highlight fails on MS-Windows GUI. +Solution: Skip the test for MS-Windows GUI. +Files: src/testdir/test_highlight.vim + +Patch 8.1.1310 +Problem: Named function arguments are never optional. +Solution: Support optional function arguments with a default value. (Andy + Massimino, closes #3952) +Files: runtime/doc/eval.txt, src/structs.h, + src/testdir/test_user_func.vim, src/userfunc.c + +Patch 8.1.1311 +Problem: Aborting an autocmd with an exception is not tested. +Solution: Add a test. Also shows how to abort a command by throwing an + exception. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.1312 +Problem: Coverity warning for using uninitialized variable. +Solution: Clear exarg_T. +Files: src/quickfix.c, src/channel.c, src/ex_cmds2.c + +Patch 8.1.1313 +Problem: Warnings for using localtime() and ctime(). +Solution: Use localtime_r() if available. Avoid using ctime(). +Files: src/configure.ac, src/auto/configure, src/config.h.in, + src/evalfunc.c, src/nbdebug.c, src/undo.c, src/memline.c, + src/proto/memline.pro, src/hardcopy.c + +Patch 8.1.1314 +Problem: MSVC makefile is not nicely indented. +Solution: Adjust spaces in preprocessor directives. (Ken Takata) +Files: src/Make_mvc.mak + +Patch 8.1.1315 +Problem: There is always a delay if a termrequest is never answered. +Solution: When the response is not received within two seconds consider the + request to have failed. +Files: src/term.c + +Patch 8.1.1316 +Problem: Duplicated localtime() call. +Solution: Delete one. +Files: src/undo.c + +Patch 8.1.1317 +Problem: Output from Travis can be improved. +Solution: Add section headers. Handle errors better. (Ozaki Kiichi, + closes #4098) +Files: .travis.yml, configure + +Patch 8.1.1318 +Problem: Code for text changes is in a "misc" file. +Solution: Move the code to change.c. +Files: src/misc1.c, src/proto/misc1.pro, src/change.c, + src/proto/change.pro, src/proto.h, src/memline.c, Filelist, + src/Make_cyg_ming.mak, src/Make_dice.mak, src/Make_manx.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_sas.mak, + src/Make_vms.mms, src/Makefile, src/README.md + +Patch 8.1.1319 +Problem: Computing function length name in many places. +Solution: compute name length in call_func(). +Files: src/eval.c, src/userfunc.c, src/channel.c, src/evalfunc.c, + src/ex_cmds2.c, src/regexp.c, src/terminal.c + +Patch 8.1.1320 +Problem: It is not possible to track changes to a buffer. +Solution: Add listener_add() and listener_remove(). No docs or tests yet. +Files: src/structs.h, src/change.c, src/proto/change.pro + +Patch 8.1.1321 +Problem: No docs or tests for listener functions. +Solution: Add help and tests for listener_add() and listener_remove(). + Invoke the callbacks before redrawing. +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, + src/testdir/test_listener.vim, src/testdir/Make_all.mak, + src/change.c, src/screen.c, src/evalfunc.c, src/proto/evalfunc.pro + +Patch 8.1.1322 +Problem: Cygwin makefile is not nicely indented. +Solution: Adjust spaces in preprocessor directives. (Ken Takata) +Files: src/Make_cyg_ming.mak + +Patch 8.1.1323 +Problem: 'mouse' option is reset when using GPM mouse. +Solution: Add flag for GPM mouse. +Files: src/term.c + +Patch 8.1.1324 +Problem: Stray comma in VMS makefile. +Solution: Remove the comma. (Naruhiko Nishino, closes #4368) +Files: src/Make_vms.mms + +Patch 8.1.1325 +Problem: Cannot build with +eval but without +channel and +timers. (John + Marriott) +Solution: Adjust #ifdef for get_callback(). +Files: src/evalfunc.c, src/testdir/test_autocmd.vim + +Patch 8.1.1326 +Problem: No test for listener with partial. +Solution: Add a test. Add example to help. +Files: src/testdir/test_listener.vim, runtime/doc/eval.txt + +Patch 8.1.1327 +Problem: Unnecessary scroll after horizontal split. +Solution: Don't adjust to fraction if all the text fits in the window. + (Martin Kunev, closes #4367) +Files: src/testdir/test_window_cmd.vim, src/window.c + +Patch 8.1.1328 +Problem: No test for listener with undo operation. +Solution: Add a test. +Files: src/testdir/test_listener.vim + +Patch 8.1.1329 +Problem: Plans for popup window support are spread out. +Solution: Add a first version of the popup window help. +Files: runtime/doc/popup.txt, runtime/doc/Makefile, runtime/doc/help.txt + +Patch 8.1.1330 +Problem: Using bold attribute in terminal changes the color. (Jason + Franklin) +Solution: Don't set the "bold-highbright" flag in vterm unless the terminal + supports less than 16 colors. +Files: src/terminal.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_all_ansi_colors.dump + +Patch 8.1.1331 +Problem: Test 29 is old style. +Solution: Turn it into a new style test. (Yegappan Lakshmanan, closes #4370) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test29.in, src/testdir/test29.ok, + src/testdir/test_backspace_opt.vim, src/testdir/test_join.vim + +Patch 8.1.1332 +Problem: Cannot flush change listeners without also redrawing. The line + numbers in the list of changes may become invalid. +Solution: Add listener_flush(). Invoke listeners before adding a change + that makes line numbers invalid. +Files: src/evalfunc.c, src/change.c, src/proto/change.pro, + src/screen.c, runtime/doc/eval.txt, src/testdir/test_listener.vim + +Patch 8.1.1333 +Problem: Text properties don't always move after changes. +Solution: Update properties before reporting changes to listeners. Move text + property when splitting a line. +Files: src/change.c, src/ex_cmds.c, src/textprop.c, + src/proto/textprop.pro, src/testdir/test_textprop.vim + +Patch 8.1.1334 +Problem: When buffer is hidden "F" in 'shortmess' is not used. +Solution: Check the "F" flag in 'shortmess' when the buffer is already + loaded. (Jason Franklin) Add test_getvalue() to be able to test + this. +Files: src/buffer.c, src/evalfunc.c, src/testdir/test_options.vim, + runtime/doc/eval.txt + +Patch 8.1.1335 +Problem: Listener callback is called after inserting text. +Solution: Flush the changes before inserting or deleting a line. Store + changes per buffer. +Files: src/change.c, src/proto/change.pro, src/memline.c, + src/structs.h, src/testdir/test_listener.vim + +Patch 8.1.1336 +Problem: Some eval functionality is not covered by tests. +Solution: Add a few more test cases. (Masato Nishihata, closes #4374) +Files: src/testdir/test_bufline.vim, src/testdir/test_cindent.vim, + src/testdir/test_cursor_func.vim, src/testdir/test_delete.vim, + src/testdir/test_expand_func.vim, src/testdir/test_float_func.vim, + src/testdir/test_fnamemodify.vim, src/testdir/test_functions.vim + +Patch 8.1.1337 +Problem: Get empty text prop when splitting line just after text prop. +Solution: Do not create an empty text prop at the start of the line. +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.1.1338 +Problem: Hang when concealing the '>' shown for a wide char that doesn't + fit in the last cell. +Solution: Put back the pointer when the '>' is not going to be displayed. + (closes #4377) +Files: src/screen.c + +Patch 8.1.1339 +Problem: Installer needs to product name et al. +Solution: Add a few lines to the NSIS installer script. (Ken Takata) +Files: nsis/gvim.nsi + +Patch 8.1.1340 +Problem: Attributes from 'cursorline' overwrite textprop. +Solution: Combine the attributes. (closes #3912) +Files: src/screen.c, src/textprop.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.1341 +Problem: Text properties are lost when joining lines. +Solution: Move the text properties to the joined line. +Files: src/ops.c, src/textprop.c, src/proto/textprop.pro, + src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.1342 +Problem: Using freed memory when joining line with text property. +Solution: Use already computed length. +Files: src/ops.c + +Patch 8.1.1343 +Problem: Text properties not adjusted for Visual block mode delete. +Solution: Call adjust_prop_columns(). (closes #4384) +Files: src/ops.c, src/textprop.c, src/testdir/test_textprop.vim, + src/misc1.c, src/testdir/dumps/Test_textprop_vis_01.dump, + src/testdir/dumps/Test_textprop_vis_02.dump + +Patch 8.1.1344 +Problem: Coverity complains about possibly using a NULL pointer and copying + a string into a fixed size buffer. +Solution: Check for NULL, even though it should not happen. Use + vim_strncpy() instead of strcpy(). +Files: src/change.c, src/memline.c + +Patch 8.1.1345 +Problem: Stuck in sandbox with ":s/../\=Function/gn". +Solution: Don't skip over code to restore sandbox. (Christian Brabandt) +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.1.1346 +Problem: Error for Python exception does not show useful info. +Solution: Show the last line instead of the first one. (Ben Jackson, + closes #4381) +Files: src/if_py_both.h, src/testdir/test86.ok, src/testdir/test87.ok, + src/testdir/test_python2.vim, src/testdir/test_python3.vim, + src/testdir/test_pyx2.vim, src/testdir/test_pyx3.vim + +Patch 8.1.1347 (after 8.1.1327) +Problem: Fractional scroll position not restored after closing window. +Solution: Do restore fraction if topline is not one. +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.1.1348 +Problem: Running tests may cause the window to move. +Solution: Correct the reported window position for the offset with the + position after ":winpos". Works around an xterm bug. +Files: src/testdir/test_edit.vim + +Patch 8.1.1349 +Problem: If writing runs into a conversion error the backup file is + deleted. (Arseny Nasokin) +Solution: Don't delete the backup file is the file was overwritten and a + conversion error occurred. (Christian Brabandt, closes #4387) +Files: src/fileio.c, src/testdir/test_writefile.vim + +Patch 8.1.1350 +Problem: "W" for wrapping not shown when more than 99 matches. +Solution: Adjust check for length. (Masato Nishihata, closes #4388) +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.1.1351 +Problem: Text property wrong after :substitute. +Solution: Save for undo before changing any text properties. +Files: src/testdir/test_textprop.vim, src/ex_cmds.c, src/textprop.c, + src/proto/textprop.pro, src/change.c, src/edit.c, src/misc1.c, + src/ops.c + +Patch 8.1.1352 +Problem: Undofile() reports wrong name. (Francisco Giordano) +Solution: Clean up the name before changing path separators. (closes #4392, + closes #4394) +Files: src/evalfunc.c, src/testdir/test_undo.vim + +Patch 8.1.1353 (after 8.1.1352) +Problem: Undo test fails on Mac. +Solution: Expect "private" on the Mac. +Files: src/testdir/test_undo.vim + +Patch 8.1.1354 +Problem: Getting a list of text lines is clumsy. +Solution: Add the =<< assignment. (Yegappan Lakshmanan, closes #4386) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_let.vim + +Patch 8.1.1355 +Problem: Obvious mistakes are accepted as valid expressions. +Solution: Be more strict about parsing numbers. (Yasuhiro Matsumoto, + closes #3981) +Files: src/charset.c, src/eval.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_getln.c, src/json.c, src/misc2.c, src/ops.c, src/option.c, + src/proto/charset.pro, src/testdir/test_expr.vim, + src/testdir/test_json.vim + +Patch 8.1.1356 +Problem: Some text in heredoc assignment ends the text. (Ozaki Kiichi) +Solution: Recognize "let v =<<" and skip until the end. +Files: src/userfunc.c, src/testdir/test_let.vim + +Patch 8.1.1357 +Problem: Test 37 is old style. +Solution: Turn it into a new style test. (Yegappan Lakshmanan, closes #4398) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test37.in, src/testdir/test37.ok, + src/testdir/test_scrollbind.vim + +Patch 8.1.1358 +Problem: Cannot enter character with a CSI byte. +Solution: Only check "gui.in_use" when VIMDLL is defined. (Ken Takata, + closes #4396) +Files: src/getchar.c + +Patch 8.1.1359 +Problem: Text property wrong after :substitute with backslash. +Solution: Adjust text property columns when removing backslashes. + (closes #4397) +Files: src/ex_cmds.c, src/testdir/test_textprop.vim, src/vim.h, + src/textprop.c, src/proto/textprop.pro, src/change.c, src/edit.c, + src/misc1.c, src/ops.c + +Patch 8.1.1360 (after Patch 8.1.1345) +Problem: Buffer left 'nomodifiable' after :substitute. (Ingo Karkat) +Solution: Save the value of 'modifiable' earlier. (Christian Brabandt, + closes #4403) +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.1.1361 +Problem: Python setuptools don't work with Python 3. +Solution: Add dummy implementation for find_module. (Joel Frederico, + closes #4402, closes #3984) +Files: src/if_py_both.h + +Patch 8.1.1362 +Problem: Code and data in tests can be hard to read. +Solution: Use the new heredoc style. (Yegappan Lakshmanan, closes #4400) +Files: src/testdir/test_autocmd.vim, src/testdir/test_balloon.vim, + src/testdir/test_bufline.vim, src/testdir/test_cindent.vim, + src/testdir/test_conceal.vim, src/testdir/test_exit.vim, + src/testdir/test_fold.vim, src/testdir/test_goto.vim, + src/testdir/test_join.vim, src/testdir/test_mksession_utf8.vim, + src/testdir/test_normal.vim, src/testdir/test_profile.vim, + src/testdir/test_quickfix.vim, src/testdir/test_startup.vim, + src/testdir/test_terminal.vim, src/testdir/test_xxd.vim + +Patch 8.1.1363 +Problem: ":vert options" does not make a vertical split. +Solution: Pass the right modifiers in $OPTWIN_CMD. (Ken Takata, + closes #4401) +Files: src/ex_cmds2.c, src/testdir/test_options.vim + +Patch 8.1.1364 +Problem: Design for popup window support needs more details. +Solution: Add details about using a window and buffer. Rename popup_show() + to popup_create() and add popup_show() and popup_hide(). +Files: runtime/doc/popup.txt + +Patch 8.1.1365 +Problem: Source command doesn't check for the sandbox. (Armin Razmjou) +Solution: Check for the sandbox when sourcing a file. +Files: src/getchar.c, src/testdir/test_source.vim + +Patch 8.1.1366 +Problem: Using expressions in a modeline is unsafe. +Solution: Disallow using expressions in a modeline, unless the + 'modelineexpr' option is set. Update help, add more tests. +Files: runtime/doc/options.txt, src/option.c, src/option.h, + src/testdir/test_modeline.vim, src/testdir/test49.in + +Patch 8.1.1367 (after 8.1.1366) +Problem: can set 'modelineexpr' in modeline. +Solution: Add P_SECURE flag. +Files: src/option.c, src/testdir/test_modeline.vim + +Patch 8.1.1368 (after 8.1.1366) +Problem: Modeline test fails with python but without pythonhome. +Solution: Correct test argument. +Files: src/testdir/test_modeline.vim + +Patch 8.1.1369 +Problem: Get E484 when using system() during GUI startup. +Solution: Check "gui.starting". (Ken Takata) +Files: src/os_win32.c + +Patch 8.1.1370 +Problem: Not using the new github feature for donations. +Solution: Add a Sponsor button. (closes #4417) +Files: .github/FUNDING.yml + +Patch 8.1.1371 +Problem: Cannot recover from a swap file. +Solution: Do not expand environment variables in the swap file name. + Do not check the extension when we already know a file is a swap + file. (Ken Takata, closes #4415, closes #4369) +Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/gui.c, src/if_cscope.c, src/main.c, src/memline.c, + src/misc1.c, src/proto/memline.pro, src/proto/misc1.pro, + src/search.c, src/spell.c, src/spellfile.c, src/tag.c, + src/testdir/test_swap.vim, src/vim.h + +Patch 8.1.1372 +Problem: When evaluating 'statusline' the current window is unknown. + (Daniel Hahler) +Solution: Set "g:actual_curwin" for %{} items. Set "g:statusline_winid" + when evaluating %!. (closes #4406, closes #3299) +Files: src/buffer.c, runtime/doc/options.txt, + src/testdir/test_statusline.vim + +Patch 8.1.1373 +Problem: "[p" in Visual mode puts in wrong line. +Solution: Call nv_put() instead of duplicating the functionality. + (closes #4408) +Files: src/normal.c, src/testdir/test_put.vim + +Patch 8.1.1374 +Problem: Check for file changed triggers too often. +Solution: Don't use "b_p_ar" when it is negative. +Files: src/fileio.c + +Patch 8.1.1375 +Problem: Without "TS" in 'shortmess' get a hit-enter prompt often. +Solution: Always truncate the search message. Also avoid putting it in the + message history. (closes #4413) +Files: src/search.c, src/main.c, src/testdir/test_search_stat.vim + +Patch 8.1.1376 +Problem: Warnings for size_t/int mixups. +Solution: Change types, add type casts. (Mike Williams) +Files: src/search.c, src/textprop.c + +Patch 8.1.1377 +Problem: MS-Windows GUI uses wrong shell command for bash. (Robert Bogomip) +Solution: Check that 'shellcmdflag' is "/c". (Ken Takata, closes #4418) +Files: src/os_win32.c + +Patch 8.1.1378 +Problem: Delete() can not handle a file name that looks like a pattern. +Solution: Use readdir() instead of appending "/*" and expanding wildcards. + (Ken Takata, closes #4424, closes #696) +Files: src/testdir/test_functions.vim, src/evalfunc.c, src/fileio.c, + src/proto/fileio.pro + +Patch 8.1.1379 (after 8.1.1374) +Problem: Filechanged test hangs. +Solution: Do not check 'autoread'. +Files: src/fileio.c, src/testdir/test_filechanged.vim + +Patch 8.1.1380 +Problem: MS-Windows building VIMDLL with MSVC: SUBSYSTEM is not set. +Solution: Invert condition. (Ken Takata, closes #4422) +Files: src/Make_mvc.mak + +Patch 8.1.1381 +Problem: MS-Windows: missing build dependency. +Solution: Make gui_dwrite.cpp depend on gui_dwrite.h. (Ken Takata, + closes #4423) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.1382 +Problem: Error when editing test file. +Solution: Remove part of modeline. +Files: src/testdir/test_vimscript.vim, src/testdir/test49.vim, + src/testdir/test49.in + +Patch 8.1.1383 +Problem: Warning for size_t/int mixup. +Solution: Change type. (Mike Williams) +Files: src/search.c + +Patch 8.1.1384 +Problem: Using "int" for alloc() often results in compiler warnings. +Solution: Use "size_t" and remove type casts. Remove alloc_check(), Vim + only works with 32 bit ints anyway. +Files: src/misc2.c, src/proto/misc2.pro, src/change.c, src/ex_cmds.c, + src/netbeans.c, src/autocmd.c, src/buffer.c, src/change.c, + src/channel.c, src/charset.c, src/debugger.c, src/dict.c, + src/diff.c, src/digraph.c, src/edit.c, src/eval.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/fileio.c, src/findfile.c, src/fold.c, + src/getchar.c, src/gui.c, src/gui_at_fs.c, src/gui_gtk.c, + src/gui_gtk_x11.c, src/gui_motif.c, src/gui_w32.c, src/hashtab.c, + src/if_cscope.c, src/if_perlsfio.c, src/if_python3.c, + src/if_xcmdsrv.c, src/indent.c, src/insexpand.c, src/main.c, + src/mbyte.c, src/memfile.c, src/memline.c, src/menu.c, + src/message.c, src/misc1.c, src/misc2.c, src/netbeans.c, + src/ops.c, src/option.c, src/os_amiga.c, src/os_mswin.c, + src/os_unix.c, src/os_vms.c, src/os_win32.c, src/quickfix.c, + src/regexp.c, src/screen.c, src/spell.c, src/spellfile.c, + src/syntax.c, src/term.c, src/undo.c, src/usercmd.c, + src/userfunc.c, src/version.c, src/winclip.c + +Patch 8.1.1385 +Problem: Signed/unsigned compiler warning. +Solution: Use STRLEN() instead of strlen(). +Files: src/fileio.c + +Patch 8.1.1386 +Problem: Unnecessary type casts for lalloc(). +Solution: Remove type casts. Change lalloc(size, TRUE) to alloc(size). +Files: src/buffer.c, src/change.c, src/channel.c, src/diff.c, src/edit.c, + src/eval.c, src/ex_cmds.c, src/ex_getln.c, src/fileio.c, + src/getchar.c, src/gui_mac.c, src/insexpand.c, src/gui_w32.c, + src/gui_x11.c, src/menu.c, src/netbeans.c, src/ops.c, + src/os_mswin.c, src/os_amiga.c, src/os_qnx.c, src/os_unix.c, + src/os_win32.c, src/popupmnu.c, src/quickfix.c, src/regexp.c, + src/regexp_nfa.c, src/screen.c, src/search.c, src/sign.c, + src/spell.c, src/spellfile.c, src/syntax.c, src/tag.c, + src/terminal.c, src/textprop.c, src/ui.c, src/undo.c, + src/userfunc.c, src/winclip.c, src/window.c + +Patch 8.1.1387 +Problem: Calling prop_add() in an empty buffer doesn't work. (Dominique + Pelle) +Solution: Open the memline before adding a text property. (closes #4412) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.1.1388 +Problem: Errors when calling prop_remove() for an unloaded buffer. +Solution: Bail out when the buffer is not loaded. Add a few more tests for + failing when the buffer number is invalid. +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.1.1389 +Problem: Changes are not flushed when end and start overlap. (Paul Jolly) +Solution: When end of a previous changes overlaps with start of a new + change, first flush listeners. +Files: src/change.c, src/testdir/test_listener.vim + +Patch 8.1.1390 +Problem: Search stats are off when using count or offset. +Solution: Recompute the stats when needed. (Masato Nishihata, closes #4410) +Files: src/testdir/test_search_stat.vim, src/search.c + +Patch 8.1.1391 +Problem: No popup window support. +Solution: Add initial code for popup windows. Add the 'wincolor' option. +Files: Filelist, runtime/doc/popup.txt, runtime/doc/options.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile, src/autocmd.c, src/buffer.c, src/ex_cmds.h, + src/ex_cmdidxs.h, src/proto/buffer.pro, src/eval.c src/evalfunc.c + src/feature.h, src/globals.h, src/option.c, src/option.h, + src/popupwin.c, src/proto.h, src/proto/popupwin.pro, + src/proto/window.pro, src/screen.c, src/structs.h, src/terminal.c, + src/testdir/Make_all.mak, src/testdir/dumps/Test_popupwin_01.dump, + src/testdir/test_popupwin.vim, src/vim.h, src/window.c + +Patch 8.1.1392 (after 8.1.1391) +Problem: Build failure in tiny version. +Solution: Define ex_popupclear to ex_ni if not implemented. Add UNUSED. +Files: src/ex_docmd.c, src/window.c + +Patch 8.1.1393 +Problem: Unnecessary type casts. +Solution: Remove type casts from alloc() and lalloc() calls. (Mike Williams) +Files: src/channel.c, src/crypt.c, src/dict.c, src/dosinst.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, src/findfile.c, src/if_ole.cpp, + src/if_py_both.h, src/list.c, src/message.c, src/misc1.c, + src/misc2.c, src/ops.c, src/os_vms.c, src/os_win32.c, + src/quickfix.c, src/regexp_nfa.c, src/screen.c, src/search.c, + src/sign.c, src/syntax.c, src/tag.c, src/term.c, src/terminal.c, + src/textprop.c + +Patch 8.1.1394 +Problem: Not restoring t_F2 in registers test. +Solution: Assign to &t_F2 instead of t_F2. (Andy Massimino, closes #4434) +Files: src/testdir/test_registers.vim + +Patch 8.1.1395 +Problem: Saving for undo may access invalid memory. (Dominique Pelle) +Solution: Set ml_line_len also when returning a constant string. +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.1.1396 +Problem: 'wincolor' does not apply to lines below the buffer. +Solution: Also apply 'wincolor' to the "~" lines and the number column. +Files: src/screen.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_wincolor_01.dump + +Patch 8.1.1397 +Problem: Build fails in tiny version. +Solution: Always define hl_combine_attr(). +Files: src/syntax.c + +Patch 8.1.1398 +Problem: Duplicate line in MSVC build file. +Solution: Remove the line. (Ken Takata, closes #4436) +Files: src/Make_mvc.mak + +Patch 8.1.1399 +Problem: Popup windows not adjusted when switching tabs. +Solution: Save and restore first_tab_popupwin. Fix closing a tabpage. +Files: src/window.c, src/popupwin.c, src/proto/popupwin.pro, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_02.dump, + src/testdir/dumps/Test_popupwin_03.dump, + src/testdir/dumps/Test_popupwin_04.dump + +Patch 8.1.1400 +Problem: Using global pointer for tab-local popups is clumsy. +Solution: Use the pointer in tabpage_T. +Files: src/popupwin.c, src/globals.h, src/eval.c, src/screen.c, + src/window.c + +Patch 8.1.1401 +Problem: Misspelled mkspellmem as makespellmem. +Solution: Drop duplicate help entry, fix test. (Naruhiko Nishino, Yasuhiro + Matsumoto, closes #4437) +Files: runtime/doc/options.txt, src/testdir/test_modeline.vim + +Patch 8.1.1402 +Problem: "timer" option of popup windows not supported. +Solution: Implement the "timer" option. (Yasuhiro Matsumoto, closes #4439) +Files: src/structs.h, src/testdir/test_popupwin.vim, src/popupwin.c, + src/window.c, runtime/doc/popup.txt + +Patch 8.1.1403 +Problem: Cannot build without the timer feature. +Solution: Add #ifdef. +Files: src/structs.h, src/window.c, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1404 +Problem: Cannot change the patch level when building with NSIS. +Solution: Use $PATCHLEVEL if defined. (Christian Brabandt) +Files: nsis/gvim.nsi + +Patch 8.1.1405 +Problem: "highlight" option of popup windows not supported. +Solution: Implement the "highlight" option. +Files: src/option.c, src/proto/option.pro, src/diff.c src/popupwin.c, + runtime/doc/popup.txt, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_01.dump, + src/testdir/dumps/Test_popupwin_03.dump + +Patch 8.1.1406 +Problem: popup_hide() and popup_show() not implemented yet. +Solution: Implement the functions. +Files: src/popupwin.c, src/proto/popupwin.pro, src/evalfunc.c, + src/structs.h, runtime/doc/popup.txt, src/screen.c, src/vim.h, + src/testdir/test_popupwin.vim + +Patch 8.1.1407 +Problem: Popup_create() does not support text properties. +Solution: Support the third form of the text argument. +Files: src/textprop.c, src/proto/textprop.pro, src/popupwin.c, + src/testdir/test_popupwin.vim, src/screen.c, + src/testdir/dumps/Test_popupwin_02.dump, + src/testdir/dumps/Test_popupwin_03.dump, + src/testdir/dumps/Test_popupwin_04.dump, + runtime/doc/popup.txt + +Patch 8.1.1408 +Problem: PFL_HIDDEN conflicts with system header file. (Ken Takata) +Solution: Rename to POPF_HIDDEN. +Files: src/popupwin.c, src/screen.c, src/vim.h + +Patch 8.1.1409 +Problem: Coverity warns for using uninitialized memory. +Solution: Add a condition to clearing the growarray. +Files: src/json.c + +Patch 8.1.1410 +Problem: Popup_move() is not implemented yet. +Solution: Implement it. (Yasuhiro Matsumoto, closes #4441) Improve the + positioning and resizing. +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/screen.c, src/structs.h, src/proto/popupwin.pro, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_05.dump + +Patch 8.1.1411 +Problem: Coverity warns for divide by zero. +Solution: Make sure width is larger than zero. +Files: src/charset.c + +Patch 8.1.1412 +Problem: Test 30 is old style. +Solution: Turn it into a new style test. (Yegappan Lakshmanan, closes #4440) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test30.in, src/testdir/test30.ok, + src/testdir/test_fileformat.vim + +Patch 8.1.1413 +Problem: Error when the drive of the swap file was disconnected. +Solution: Try closing and re-opening the swap file. (partly by Joe Orost, + closes #4378) +Files: src/memfile.c, src/structs.h, src/testdir/test_startup.vim + +Patch 8.1.1414 +Problem: Alloc() returning "char_u *" causes a lot of type casts. +Solution: Have it return "void *". (Mike Williams) Define ALLOC_ONE() to + check the simple allocations. +Files: src/autocmd.c, src/blob.c, src/blowfish.c, src/buffer.c, + src/change.c, src/channel.c, src/crypt.c, src/crypt_zip.c, + src/dict.c, src/diff.c, src/eval.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, + src/fileio.c, src/findfile.c, src/getchar.c, src/gui_gtk.c, + src/gui_gtk_x11.c, src/gui_mac.c, src/gui_motif.c, + src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, src/hardcopy.c, + src/hashtab.c, src/if_cscope.c, src/if_mzsch.c, src/if_perlsfio.c, + src/if_py_both.h, src/if_python3.c, src/if_xcmdsrv.c, + src/insexpand.c, src/list.c, src/mark.c, src/mbyte.c, + src/memfile.c, src/memfile_test.c, src/memline.c, src/message.c, + src/misc2.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/os_amiga.c, src/os_mac_conv.c, src/os_mswin.c, + src/os_unix.c, src/os_vms.c, src/os_win32.c, src/popupmnu.c, + src/proto/misc2.pro, src/quickfix.c, src/regexp.c, + src/regexp_nfa.c, src/screen.c, src/search.c, src/sign.c, + src/spell.c, src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, + src/terminal.c, src/textprop.c, src/ui.c, src/undo.c, + src/userfunc.c, src/version.c, src/winclip.c, src/window.c, + src/vim.h, src/testdir/test_cscope.vim + +Patch 8.1.1415 (after 8.1.1414) +Problem: Build error in MS-Windows GUI. +Solution: Fix the LALLOC_MULT() argument. +Files: src/gui_w32.c + +Patch 8.1.1416 +Problem: Popup_getposition() not implemented yet. +Solution: Implement it. (Yasuhiro Matsumoto, closes #4449) +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + +Patch 8.1.1417 +Problem: MS-Windows: resolve() does not resolve all components of the path. + (David Briscoe) +Solution: Do not bail out for a reparse point. (Yasuhiro Matsumoto, + closes #4211, closes #4447) +Files: src/os_mswin.c, src/testdir/test_functions.vim + +Patch 8.1.1418 +Problem: Win_execute() is not implemented yet. +Solution: Implement it. +Files: src/evalfunc.c, src/popupwin.c, src/testdir/test_execute_func.vim, + runtime/doc/popup.txt, runtime/doc/eval.txt + +Patch 8.1.1419 +Problem: Listener callbacks may be called recursively. +Solution: Set "updating_screen" while listener callbacks are invoked. +Files: src/change.c, src/screen.c, src/proto/screen.pro, src/ui.c + +Patch 8.1.1420 +Problem: Popup window size only uses first line length. +Solution: Use the longest line. (Ben Jackson, closes #4451) Also deal with + wrapping lines. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1421 +Problem: Drawing "~" line in popup window. +Solution: Just draw text in the last line of the popup window. +Files: src/screen.c, src/structs.h, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_05.dump, + src/testdir/dumps/Test_popupwin_06.dump + +Patch 8.1.1422 +Problem: Popup_getoptions() not implemented yet. +Solution: Implement it. (closes #4452) +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + +Patch 8.1.1423 +Problem: Popup windows use options from current window and buffer. +Solution: Clear all local options when creating a popup window. +Files: src/popupwin.c, src/option.c, src/proto/option.pro, + src/testdir/test_popupwin.vim + +Patch 8.1.1424 +Problem: Crash when popup menu is deleted while waiting for char. +Solution: Bail out when pum_array was cleared. +Files: src/popupmnu.c + +Patch 8.1.1425 +Problem: Win_execute() does not set window pointers properly. +Solution: Use switch_win_noblock(). Also execute autocommands in a popup + window. +Files: src/window.c, src/proto/window.pro, src/evalfunc.c, src/autocmd.c + +Patch 8.1.1426 +Problem: No test for syntax highlight in popup window. +Solution: Add a screenshot test. Update associated documentation. Avoid + 'buftype' being reset by setbufvar(). +Files: runtime/doc/eval.txt, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_10.dump, + src/testdir/dumps/Test_popupwin_11.dump + +Patch 8.1.1427 (after 8.1.1426) +Problem: Popup window screenshot test fails. +Solution: Add missing change to popup window code. +Files: src/popupwin.c + +Patch 8.1.1428 +Problem: Popup_atcursor() not implemented yet. +Solution: Implement it. (Yasuhiro Matsumoto, closes #4456) +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + +Patch 8.1.1429 +Problem: "pos" option of popup window not supported yet. +Solution: Implement the option. Rename popup_getposition() to + popup_getpos(). +Files: src/structs.h, src/popupwin.c, src/proto/popupwin.pro, + runtime/doc/popup.txt + +Patch 8.1.1430 +Problem: Popup window option "wrap" not supported. +Solution: Implement it. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_wrap.dump, + src/testdir/dumps/Test_popupwin_nowrap.dump + +Patch 8.1.1431 +Problem: Popup window listed as "Scratch". +Solution: List them as "Popup". +Files: src/buffer.c, src/popupwin.c, src/testdir/test_popupwin.vim, + runtime/doc/popup.txt, runtime/doc/windows.txt + +Patch 8.1.1432 (after 8.1.1429) +Problem: Can't build with eval feature. +Solution: Add missing rename. +Files: src/evalfunc.c + +Patch 8.1.1433 +Problem: Win_execute() may leave popup window focused, eventually leading + to a crash. (Bjorn Linse) +Solution: When previous window was closed, go to the first window. +Files: src/window.c, src/testdir/test_popupwin.vim + +Patch 8.1.1434 +Problem: Test 3 is old style. +Solution: Turn into a new style test. (Yegappan Lakshmanan, closes #4460) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test3.in, src/testdir/test3.ok, + src/testdir/test_cindent.vim + +Patch 8.1.1435 +Problem: Memory usage test is a bit too flaky. +Solution: Adjust the tolerances a bit. (Christian Brabandt) +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1436 +Problem: Writefile test fails when run under /tmp. +Solution: Adjust 'backupskip'. (Kenta Sato, closes #4462) +Files: src/testdir/test_writefile.vim + +Patch 8.1.1437 +Problem: Code to handle callbacks is duplicated. +Solution: Add callback_T and functions to deal with it. +Files: src/structs.h, src/evalfunc.c, src/proto/evalfunc.pro, + src/change.c, src/channel.c, src/proto/channel.pro, src/buffer.c, + src/userfunc.c, src/proto/userfunc.pro, src/eval.c, + src/ex_cmds2.c, src/popupwin.c + +Patch 8.1.1438 +Problem: Some commands cause trouble in a popup window. +Solution: Add NOT_IN_POPUP_WINDOW. +Files: src/macros.h, src/popupwin.c, src/proto/popupwin.pro, + src/ex_docmd.c, src/ex_cmds2.c, src/window.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1439 +Problem: Json_encode() is very slow for large results. +Solution: In the growarray use a growth of at least 50%. (Ken Takata, + closes #4461) +Files: src/misc2.c + +Patch 8.1.1440 +Problem: Win_execute() test fails. +Solution: Adjust the expected error number. Move to popup test. +Files: src/testdir/test_execute_func.vim, src/testdir/test_popupwin.vim + +Patch 8.1.1441 +Problem: Popup window filter not yet implemented. +Solution: Implement the popup filter. +Files: src/structs.h, runtime/doc/popup.txt, src/popupwin.c, + src/proto/popupwin.pro, src/window.c, src/getchar.c, src/screen.c, + src/misc2.c, src/proto/misc2.pro, src/vim.h, + src/testdir/test_popupwin.vim + +Patch 8.1.1442 +Problem: Popup windows not considered when the Vim window is resized. + (Ben Jackson) +Solution: Reallocate the w_lines structure. (closes #4467) +Files: src/screen.c + +Patch 8.1.1443 +Problem: Popup window padding and border not implemented yet. +Solution: Implement padding and border. Add core position and size to + popup_getpos(). +Files: src/structs.h, src/popupwin.c, src/screen.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_20.dump, runtime/doc/popup.txt + +Patch 8.1.1444 +Problem: Not using double line characters for popup border. +Solution: Use double line characters if using utf-8. +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.1.1445 +Problem: Popup window border highlight not implemented yet. +Solution: Implement the "borderhighlight" option. +Files: src/structs.h, src/popupwin.c, src/window.c, src/screen.c, + src/testdir/test_popupwin.vim, runtime/doc/popup.txt, + src/testdir/dumps/Test_popupwin_22.dump + +Patch 8.1.1446 +Problem: Popup window callback not implemented yet. +Solution: Implement the callback. +Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h, + src/evalfunc.c, src/window.c, src/testdir/test_popupwin.vim + +Patch 8.1.1447 +Problem: Not allowed to create an empty popup. +Solution: Remove restriction that there is some text. (closes #4470) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1448 +Problem: Statusline is sometimes drawn on top of popup. +Solution: Redraw popups after the statusline. (Naruhiko Nishino, + closes #4468) +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_behind.dump + +Patch 8.1.1449 +Problem: Popup text truncated at end of screen. +Solution: Move popup left if needed. Add the "fixed" property to disable + that. (Ben Jackson, closes #4466) +Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h, + src/testdir/test_popupwin.vim + +Patch 8.1.1450 +Problem: Popup window positioning wrong when using padding or borders. +Solution: Fix computing the position. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_corners.dump + +Patch 8.1.1451 +Problem: CTRL-L does not clear screen with a popup window. +Solution: Do not change the type to NOT_VALID. Redraw all windows. + (closes #4471) +Files: src/screen.c + +Patch 8.1.1452 +Problem: Line and col property of popup windows not properly checked. +Solution: Check for "+" or "-" sign. +Files: src/popupwin.c, src/dict.c, src/proto/dict.pro, + src/window.c, src/testdir/test_popupwin.vim + +Patch 8.1.1453 +Problem: Popup window "moved" property not implemented yet. +Solution: Implement it. +Files: src/main.c, src/edit.c, src/gui.c, src/globals.h, src/structs.h, + src/screen.c, src/popupwin.c, src/proto/popupwin.pro, + src/testdir/test_popupwin.vim, runtime/doc/popup.txt + +Patch 8.1.1454 +Problem: Build failure without the conceal feature. +Solution: Remove #ifdef. +Files: src/autocmd.c + +Patch 8.1.1455 +Problem: Popup_atcursor() not completely implemented. +Solution: Add the default for the "moved" property. +Files: src/popupwin.c, src/normal.c, src/vim.h, + src/testdir/test_popupwin.vim + +Patch 8.1.1456 +Problem: WinBar not redrawn after scrolling one line. +Solution: Exclude the winbar height when deciding what to redraw. + (closes #4473) +Files: src/screen.c, src/testdir/test_winbar.vim + +Patch 8.1.1457 +Problem: Cannot reuse a buffer when loading a screen dump. +Solution: Add the "bufnr" option. +Files: runtime/doc/eval.txt, src/structs.h, src/channel.c, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.1458 +Problem: Crash when using gtags. (issue #4102) +Solution: Check for negative row or col in screen_puts_len(). (Christian + Brabandt) +Files: src/screen.c + +Patch 8.1.1459 +Problem: Popup window border looks bad when 'ambiwidth' is "double". + (Yasuhiro Matsumoto) +Solution: Only use line drawing characters when 'ambiwidth' is "single". + (Ken Takata, closes #4477) +Files: src/screen.c + +Patch 8.1.1460 +Problem: Popup window border characters may be wrong. +Solution: Reset the border characters for each popup. Correct use of + 'ambiwidth'. +Files: src/screen.c + +Patch 8.1.1461 +Problem: Tests do not run or are not reliable on some systems. +Solution: Use "findstr" instead of "grep" on MS-Windows. Clear + PROMPT_COMMAND in the terminal test. Delete temp file. Wait for + output after executing a debug command. (Yegappan Lakshmanan, + closes #4479) +Files: src/testdir/test_debugger.vim, src/testdir/test_environ.vim, + src/testdir/test_filetype.vim, src/testdir/test_source.vim, + src/testdir/test_terminal.vim + +Patch 8.1.1462 +Problem: MS-Windows: using special character requires quoting. +Solution: Add quotes. (Ken Takata) +Files: src/testdir/test_environ.vim + +Patch 8.1.1463 +Problem: Gcc warns for uninitialized variable. +Solution: Put usage inside "if". (Ken Takata) +Files: src/textprop.c + +Patch 8.1.1464 +Problem: Only 4-digit rgb termresponse is recognized. +Solution: Also recognize 2-digit rgb response. (closes #4486) +Files: src/term.c, src/test_termcodes.vim + +Patch 8.1.1465 +Problem: Allocating wrong amount of memory. (Yegappan Lakshmanan) +Solution: Use sizeof() for right type of struct. +Files: src/memfile_test.c + +Patch 8.1.1466 +Problem: Not updating priority on existing sign. +Solution: Set the sign priority. Add a test. (Yegappan Lakshmanan) +Files: src/sign.c, src/testdir/test_signs.vim, runtime/doc/eval.txt, + runtime/doc/sign.txt + +Patch 8.1.1467 (after 8.1.1465) +Problem: Cscope test fails. +Solution: Update expected text. +Files: src/testdir/test_cscope.vim + +Patch 8.1.1468 +Problem: The generated desktop files may be invalid. +Solution: Check validity with desktop-file-validate. (Christian Brabandt, + Will Thompson, closes #4480) +Files: src/po/Makefile + +Patch 8.1.1469 +Problem: No test for checking the cursor style response. +Solution: Add a simple test. Also include the missing part of 8.1.1464. +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.1.1470 +Problem: New Unicode character U+32FF missing from double-width table. +Solution: Add the character. +Files: src/mbyte.c + +Patch 8.1.1471 +Problem: 'background' not correctly set for 2-digit rgb termresponse. +Solution: Adjust what digit to use. (closes #4495) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.1.1472 +Problem: Add_termcap_entry() is not tested. +Solution: Add a simple test. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1473 +Problem: New resolve() implementation causes problem for plugins. +Solution: Only resolve a reparse point after checking it is needed. (Ken + Takata, closes #4492) +Files: src/os_mswin.c, src/testdir/test_functions.vim + +Patch 8.1.1474 +Problem: 'ttybuiltin' is not tested. +Solution: At least test that it doesn't break things. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.1475 +Problem: Search string not displayed when 'rightleft' is set. +Solution: Clear the right part of the old text. (closes #4488, closes #4489) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.1.1476 +Problem: No statistics displayed after running tests. +Solution: Summarize the test results. (Christian Brabandt, closes #4391) + Also make it possible to report a skipped file. +Files: src/Makefile, src/testdir/Makefile, src/testdir/summarize.vim, + src/testdir/runtest.vim, src/testdir/test_arabic.vim, + src/testdir/test_autochdir.vim, src/testdir/test_balloon.vim + +Patch 8.1.1477 +Problem: Test summary fails in the tiny version. +Solution: set 'nocompatible'. +Files: Filelist, src/testdir/summarize.vim + +Patch 8.1.1478 +Problem: Still an error when running tests with the tiny version. +Solution: Do not try reading test.log +Files: src/testdir/Makefile, src/testdir/summarize.vim + +Patch 8.1.1479 +Problem: Change included for debugging only. +Solution: Restore the REDIR_TEST_TO_NULL line. +Files: src/testdir/Makefile + +Patch 8.1.1480 +Problem: Desktop file check doesn't run on CI. +Solution: Install the desktop-file-utils packages. (Christian Brabandt, + closes #4498) +Files: .travis.yml + +Patch 8.1.1481 +Problem: Length for two-digit rgb termresponse is off by one. +Solution: Adjust the length. (closes #4494) +Files: src/term.c + +Patch 8.1.1482 +Problem: No test for wincol() depending on the 'number' option. +Solution: Add a couple of tests. (Christian Brabandt, closes #4500) +Files: src/testdir/test_gui.vim + +Patch 8.1.1483 +Problem: Skipped tests are not properly listed. +Solution: Throw a "Skipped" exception instead of using ":finish" or ":return". +Files: src/testdir/test_breakindent.vim, src/testdir/test_cdo.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_balloon.vim, src/testdir/test_conceal.vim, + src/testdir/test_debugger.vim, src/testdir/test_diffmode.vim, + src/testdir/test_fold.vim, src/testdir/test_highlight.vim, + src/testdir/test_popup.vim, src/testdir/test_popupwin.vim, + src/testdir/test_search.vim, src/testdir/test_startup.vim, + src/testdir/test_startup_utf8.vim, src/testdir/test_syntax.vim, + src/testdir/test_tabpage.vim, src/testdir/test_termencoding.vim, + src/testdir/test_terminal.vim, src/testdir/test_textprop.vim, + src/testdir/test_timers.vim + +Patch 8.1.1484 +Problem: Some tests are slow. +Solution: Add timing to the test messages. Fix double free when quitting in + VimLeavePre autocmd. +Files: src/testdir/runtest.vim, src/eval.c + +Patch 8.1.1485 +Problem: Double free when garbage_collect() is used in autocommand. +Solution: Have garbage collection also set the copyID in funccal_stack. +Files: src/eval.c, src/userfunc.c + +Patch 8.1.1486 +Problem: A listener change is merged even when it adds a line. (Paul Jolly) +Solution: Do not merge a change that adds or removes a line. (closes #4490) +Files: src/change.c, src/testdir/test_listener.vim + +Patch 8.1.1487 +Problem: Older msgfmt cannot generate proper .desktop file. +Solution: Add a configure check to not use this msgfmt version. (Ken Takata) +Files: src/configure.ac, src/auto/configure + +Patch 8.1.1488 +Problem: Summary of tests has incorrect failed count. +Solution: Add to the failed count instead of setting it. (Christian Brabandt) +Files: src/testdir/summarize.vim + +Patch 8.1.1489 +Problem: Sign order wrong when priority was changed. +Solution: Reorder signs when priority is changed. (Yegappan Lakshmanan, + closes #4502) +Files: src/quickfix.c, src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.1490 +Problem: When a single test fails the exit code is not set. (Daniel Hahler) +Solution: Add an exit command. (closes #4506) +Files: src/testdir/Makefile + +Patch 8.1.1491 +Problem: When skipping over code after an exception was thrown expression + evaluation is aborted after a function call. (Ingo Karkat) +Solution: Do not fail if not executing the expression. (closes #4507) +Files: src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.1492 +Problem: MS-Windows: when "!" is in 'guioptions' ":!start" fails. +Solution: Do not use a terminal window when the shell command begins with + "!start". (Yasuhiro Matsumoto, closes #4504) +Files: src/misc2.c, src/os_win32.c + +Patch 8.1.1493 +Problem: Redrawing with popups is slow and causes flicker. +Solution: Avoid clearing and redrawing using a zindex mask. +Files: src/globals.h, src/screen.c, src/proto/screen.pro, src/popupwin.c, + src/popupmnu.c + +Patch 8.1.1494 (after 8.1.1493) +Problem: Build failure. +Solution: Add missing changes. +Files: src/structs.h + +Patch 8.1.1495 (after 8.1.1494) +Problem: Memory access error. +Solution: Use the correct size for clearing the popup mask. +Files: src/screen.c + +Patch 8.1.1496 +Problem: Popup window height is not recomputed. +Solution: Recompute the height when needed. +Files: src/popupwin.c, src/testdir/dumps/Test_popupwin_06.dump + +Patch 8.1.1497 +Problem: Accessing memory beyond allocated space. +Solution: Check column before accessing popup mask. +Files: src/screen.c + +Patch 8.1.1498 +Problem: ":write" increments b:changedtick even though nothing changed. + (Daniel Hahler) +Solution: Only increment b:changedtick if the modified flag is reset. +Files: src/change.c, src/proto/change.pro, runtime/doc/eval.txt, + src/buffer.c, src/ex_cmds2.c, src/fileio.c, src/memline.c, + src/undo.c + +Patch 8.1.1499 +Problem: Ruler not updated after popup window was removed. +Solution: use popup_mask in screen_puts(). +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_07.dump, + src/testdir/dumps/Test_popupwin_08.dump + +Patch 8.1.1500 +Problem: Wrong shell command when building with VIMDLL and "!" in + 'guioptions'. +Solution: Add check for GUI in use. (Ken Takata) +Files: src/misc2.c + +Patch 8.1.1501 +Problem: New behavior of b:changedtick not tested. +Solution: Add a few test cases. (Daniel Hahler) +Files: src/testdir/test_changedtick.vim + +Patch 8.1.1502 +Problem: Cannot play any sound. +Solution: Use libcanberra if available. Add sound functions. +Files: src/configure.ac, src/auto/configure, src/config.h.in, + src/Makefile, src/sound.c, src/proto/sound.pro, src/proto.h, + src/evalfunc.c, src/feature.h, runtime/doc/eval.txt, Filelist, + src/version.c, src/testdir/test_sound.vim, src/testdir/silent.wav, + src/testdir/Make_all.mak, .travis.yml + +Patch 8.1.1503 +Problem: Sound test fails on Travis. +Solution: Set AUDIODEV to "null". +Files: .travis.yml + +Patch 8.1.1504 +Problem: Sound test still fails on Travis. +Solution: Add more lines to the install section. +Files: .travis.yml + +Patch 8.1.1505 +Problem: Running "make clean" twice gives errors. +Solution: Add "-f" to "rm". (closes #4516) +Files: src/testdir/Makefile + +Patch 8.1.1506 +Problem: Syntax error in Travis config. +Solution: Set AUDIODEV in another section. +Files: .travis.yml + +Patch 8.1.1507 +Problem: Sound test still fails on Travis. +Solution: Try another dummy sound approach. +Files: .travis.yml + +Patch 8.1.1508 +Problem: Sound keeps failing on Travis. +Solution: Throw a skipped exception in the test. +Files: src/testdir/test_sound.vim + +Patch 8.1.1509 +Problem: Cmdline_row can become negative, causing a crash. +Solution: Make sure cmdline_row does not become negative. (closes #4102) +Files: src/misc1.c + +Patch 8.1.1510 +Problem: A plugin cannot easily expand a command like done internally. +Solution: Add the expandcmd() function. (Yegappan Lakshmanan, closes #4514) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_expand.vim + +Patch 8.1.1511 +Problem: Matches in a popup window are not displayed properly. +Solution: Do display matches in a popup window. (closes #4517) +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_matches.dump + +Patch 8.1.1512 +Problem: ch_evalexpr() hangs when used recursively. (Paul Jolly) +Solution: Change ch_block_id from a single number to a list of IDs to wait + on. +Files: src/channel.c, src/structs.h + +Patch 8.1.1513 +Problem: All popup functionality is in functions, except :popupclear. +Solution: Add popup_clear() for consistency. Also rename sound_stopall() to + sound_clear(). +Files: src/ex_cmds.h, src/ex_cmdidxs.h, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/sound.c, src/proto/sound.pro, + src/testdir/test_popupwin.vim src/testdir/test_sound.vim, + runtime/doc/eval.txt runtime/doc/popup.txt + +Patch 8.1.1514 (after 8.1.1492) +Problem: MS-Windows: wrong shell command with ! in 'guioptions'. +Solution: Do not check for ! in 'guioptions' when applying 'shellxquote'. + (Yasuhiro Matsumoto, closes #4519) +Files: src/misc2.c + +Patch 8.1.1515 +Problem: Memory leak reported for sound when build with EXITFREE. +Solution: Free sound stuff when exiting. +Files: src/misc2.c + +Patch 8.1.1516 +Problem: Time reported for a test measured wrong. +Solution: Move the computation to the end of RunTheTest(). (Ozaki Kiichi, + closes #4520) +Files: src/testdir/runtest.vim + +Patch 8.1.1517 +Problem: When a popup changes all windows are redrawn. +Solution: Only update the lines that were affected. Add a file for + profiling popup windows efficiency. +Files: src/screen.c, src/proto/screen.pro, src/ui.c, src/popupwin.c, + src/globals.h, src/testdir/popupbounce.vim, Filelist + +Patch 8.1.1518 +Problem: Crash when setting 'columns' while a popup is visible. +Solution: Recompute all positions when clearing the screen. (closes #4467) +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_04a.dump + +Patch 8.1.1519 +Problem: 'backupskip' may contain duplicates. +Solution: Add the P_NODUP flag. (Tom Ryder) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.1.1520 +Problem: Popup windows are ignored when dealing with mouse position +Solution: Find the mouse position inside a popup window. Allow for modeless + selection. +Files: src/ui.c, src/proto/ui.pro, src/popupwin.c, + src/proto/popupwin.pro, src/screen.c, src/beval.c, src/edit.c, + src/evalfunc.c, src/gui.c, src/normal.c, src/structs.h + +Patch 8.1.1521 +Problem: When a popup window is closed the buffer remains. +Solution: Wipe out the buffer. +Files: src/window.c, src/testdir/test_popupwin.vim + +Patch 8.1.1522 +Problem: Popup_notification() not implemented yet. +Solution: Implement it. +Files: src/popupwin.c, src/proto/popupwin.pro, src/evalfunc.c, + src/structs.h, src/testdir/test_popupwin.vim, + runtime/doc/popup.txt + src/testdir/dumps/Test_popupwin_notify_01.dump, + src/testdir/dumps/Test_popupwin_notify_02.dump + +Patch 8.1.1523 +Problem: Cannot show range of buffer lines in popup window. +Solution: Add the "firstline" property. (closes #4523) +Files: src/popupwin.c, src/structs.h, runtime/doc/popup.txt, + src/testdir/test_popupwin.vim, + testdir/dumps/Test_popupwin_firstline.dump + +Patch 8.1.1524 +Problem: Tests are silently skipped. +Solution: Throw an exception for skipped tests in more places. +Files: src/testdir/test_assert.vim, src/testdir/test_paste.vim, + src/testdir/shared.vim, src/testdir/test_crypt.vim, + src/testdir/test_cscope.vim, src/testdir/test_digraph.vim, + src/testdir/test_float_func.vim, src/testdir/test_gui.vim, + src/testdir/test_gui_init.vim, src/testdir/test_history.vim, + src/testdir/test_langmap.vim, src/testdir/test_listlbr.vim, + src/testdir/test_listlbr_utf8.vim, src/testdir/test_lua.vim, + src/testdir/test_makeencoding.vim, + src/testdir/test_matchadd_conceal.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_memory_usage.vim, src/testdir/test_menu.vim, + src/testdir/test_mksession.vim, + src/testdir/test_mksession_utf8.vim, + src/testdir/test_netbeans.vim, src/testdir/test_paste.vim, + src/testdir/test_perl.vim, src/testdir/test_profile.vim, + src/testdir/test_prompt_buffer.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_pyx2.vim, + src/testdir/test_pyx3.vim, src/testdir/test_quickfix.vim, + src/testdir/test_quotestar.vim, src/testdir/test_reltime.vim, + src/testdir/test_ruby.vim, src/testdir/test_sha256.vim, + src/testdir/test_shortpathname.vim, src/testdir/test_signals.vim, + src/testdir/test_signs.vim, src/testdir/test_spell.vim, + src/testdir/test_syntax.vim, src/testdir/test_tcl.vim, + src/testdir/test_termcodes.vim, src/testdir/test_terminal.vim, + src/testdir/test_terminal_fail.vim, + src/testdir/test_textobjects.vim, src/testdir/test_textprop.vim, + src/testdir/test_timers.vim, src/testdir/test_vartabs.vim, + src/testdir/test_winbar.vim, src/testdir/test_windows_home.vim, + src/testdir/test_xxd.vim + +Patch 8.1.1525 +Problem: Cannot move a popup window with the mouse. +Solution: Add the "drag" property and make it possible to drag a popup + window by its border. +Files: src/popupwin.c, src/proto/popupwin.pro, src/structs.h, src/ui.c, + src/window.c, src/proto/window.pro, runtime/doc/popup.txt + +Patch 8.1.1526 +Problem: No numerical value for the patchlevel. +Solution: Add v:versionlong. +Files: src/version.c, src/eval.c, src/vim.h, runtime/doc/eval.txt, + src/testdir/test_eval_stuff.vim + +Patch 8.1.1527 +Problem: When moving a popup window over the command line it is not + redrawn. +Solution: Redraw the command line. Move popup redrawing code to the popupwin + file. +Files: src/screen.c, src/proto/screen.pro, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_drag_01.dump, + src/testdir/dumps/Test_popupwin_drag_02.dump + +Patch 8.1.1528 +Problem: Popup_any_visible() is unused. +Solution: Remove it. +Files: src/popupwin.c, src/proto/popupwin.pro + +Patch 8.1.1529 +Problem: Libcanberra is linked with even when not used. +Solution: Have configure check for libcanberra only when wanted. + (suggestions by Libor Bukata) +Files: src/feature.h, src/configure.ac, src/auto/configure, src/Makefile + +Patch 8.1.1530 +Problem: Travis config is not optimal. +Solution: Remove system conditions. Do not use excluding matrix. Cache OSX + results. (Ozaki Kiichi, closes #4521) +Files: .travis.yml + +Patch 8.1.1531 +Problem: Clipboard type name is inconsistent. +Solution: Rename VimClipboard to Clipboard_T. +Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/gui_mac.c, + src/proto/gui_mac.pro, src/gui_x11.c, src/proto/gui_x11.pro, + src/ops.c, src/proto/ops.pro, src/os_qnx.c, src/proto/os_qnx.pro, + src/os_unix.c, src/proto/os_unix.pro, src/ui.c, src/proto/ui.pro, + src/winclip.c, src/proto/winclip.pro, src/globals.h, src/proto.h + +Patch 8.1.1532 (after 8.1.1531) +Problem: Build fails. +Solution: Add missing changes. +Files: src/vim.h + +Patch 8.1.1533 +Problem: GUI build fails on Mac. +Solution: Change VimClipboard type in non-C file. +Files: src/os_macosx.m + +Patch 8.1.1534 +Problem: Modeless selection in popup window selects too much. +Solution: Restrict the selection to inside of the popup window. +Files: src/vim.h, src/ui.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_select_01.dump, + src/testdir/dumps/Test_popupwin_select_02.dump + +Patch 8.1.1535 (after 8.1.1534) +Problem: Popup select test fails on Mac. +Solution: Skip test if clipboard feature not available. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1536 (after 8.1.1534) +Problem: Popup select test still fails on Mac. +Solution: Set 'clipboard' to "autoselect" +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1537 +Problem: Using "tab" for popup window can be confusing. +Solution: Use "tabpage". (Hirohito Higashi, closes #4532) +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1538 +Problem: Cannot specify highlighting for notifications. +Solution: Use the PopupNotification group if it exists. Add a minimal width + to notifications. +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_notify_01.dump, + src/testdir/dumps/Test_popupwin_notify_02.dump + +Patch 8.1.1539 +Problem: Not easy to define a variable and lock it. +Solution: Add ":const". (Ryuichi Hayashida, closes #4541) +Files: runtime/doc/eval.txt, src/eval.c, src/ex_cmdidxs.h, src/ex_cmds.h, + src/proto/eval.pro, src/testdir/Make_all.mak, + src/testdir/test_const.vim + +Patch 8.1.1540 (after 8.1.1539) +Problem: Cannot build without the +eval feature. +Solution: Define ex_const if needed. +Files: src/ex_docmd.c + +Patch 8.1.1541 +Problem: Check for ASAN is not reliable. +Solution: Check the version output. (Dominique Pelle, closes #4543) +Files: src/testdir/test_memory_usage.vim + +Patch 8.1.1542 +Problem: An OptionSet autocommand does not get enough info. +Solution: Add v:option_command, v:option_oldlocal and v:option_oldglobal. + (Latrice Wilgus, closes #4118) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, + runtime/doc/version8.txt, src/eval.c, src/option.c, src/structs.h, + src/testdir/test_autocmd.vim, src/vim.h + +Patch 8.1.1543 +Problem: Const test fails with small features. +Solution: Don't unlet non-existing variables. +Files: src/testdir/test_const.vim + +Patch 8.1.1544 +Problem: Some balloon tests don't run when they can. +Solution: Split GUI balloon tests off into a separate file. (Ozaki Kiichi, + closes #4538) Change the feature check into a command for + consistency. +Files: Filelist, src/testdir/Make_all.mak, src/testdir/check.vim, + src/testdir/test_arabic.vim, src/testdir/test_balloon.vim, + src/testdir/test_balloon_gui.vim, src/testdir/test_crypt.vim, + src/testdir/test_cscope.vim, src/testdir/test_digraph.vim, + src/testdir/test_float_func.vim, src/testdir/test_gui.vim, + src/testdir/test_gui_init.vim, src/testdir/test_history.vim, + src/testdir/test_langmap.vim, src/testdir/test_listlbr.vim, + src/testdir/test_listlbr_utf8.vim, src/testdir/test_lua.vim, + src/testdir/test_makeencoding.vim, + src/testdir/test_matchadd_conceal.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_memory_usage.vim, src/testdir/test_menu.vim, + src/testdir/test_mksession.vim, + src/testdir/test_mksession_utf8.vim, + src/testdir/test_netbeans.vim, src/testdir/test_paste.vim, + src/testdir/test_perl.vim, src/testdir/test_popupwin.vim, + src/testdir/test_profile.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_python2.vim, src/testdir/test_python3.vim, + src/testdir/test_pyx2.vim, src/testdir/test_pyx3.vim, + src/testdir/test_quickfix.vim, src/testdir/test_quotestar.vim, + src/testdir/test_reltime.vim, src/testdir/test_ruby.vim, + src/testdir/test_sha256.vim, src/testdir/test_shortpathname.vim, + src/testdir/test_signals.vim, src/testdir/test_signs.vim, + src/testdir/test_spell.vim, src/testdir/test_syntax.vim, + src/testdir/test_tcl.vim, src/testdir/test_termcodes.vim, + src/testdir/test_terminal.vim, src/testdir/test_terminal_fail.vim, + src/testdir/test_textobjects.vim, src/testdir/test_textprop.vim, + src/testdir/test_timers.vim, src/testdir/test_vartabs.vim, + src/testdir/test_winbar.vim, src/testdir/test_windows_home.vim, + src/testdir/test_xxd.vim + +Patch 8.1.1545 +Problem: When the screen is too small there is no message about that. + (Daniel Hahler) +Solution: Do not use :cquit. (closes #4534) +Files: src/testdir/runtest.vim + +Patch 8.1.1546 +Problem: In some tests 'tags' is set but not restored. (Daniel Hahler) +Solution: Restore 'tags'. (closes #4535) +Files: src/testdir/test_autocmd.vim, src/testdir/test_cmdline.vim, + src/testdir/test_options.vim, src/testdir/test_tagcase.vim, + src/testdir/test_tagjump.vim, src/testdir/test_taglist.vim + +Patch 8.1.1547 +Problem: Functionality of bt_nofile() is confusing. +Solution: Split into bt_nofile() and bt_nofilename(). +Files: src/buffer.c, src/proto/buffer.pro, src/evalfunc.c, src/ex_cmds.c, + src/ex_docmd.c, src/fileio.c, src/popupmnu.c, src/quickfix.c + +Patch 8.1.1548 +Problem: Popup_dialog() is not implemented. +Solution: Implement popup_dialog() and popup_filter_yesno(). +Files: src/popupwin.c, src/proto/popupwin.pro, src/evalfunc.c, + src/structs.h, src/globals.h, src/testdir/test_popupwin.vim, + runtime/doc/popup.txt + +Patch 8.1.1549 (after 8.1.1547) +Problem: Quickfix test fails. +Solution: Negate result of bt_quickfix(). +Files: src/quickfix.c + +Patch 8.1.1550 +Problem: When a popup has left padding text may be cut off. +Solution: Add the border and padding when computing the size. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.1.1551 +Problem: Warning for shadowing popup_dragwin. (Dominique Pelle) +Solution: Add missing change. +Files: src/ui.c + +Patch 8.1.1552 +Problem: Cursor position is wrong after sign column appears or disappears. + (Yegappan Lakshmanan) +Solution: Call changed_line_abv_curs() instead of changed_cline_bef_curs(). +Files: src/sign.c, src/testdir/test_signs.vim, + src/testdir/dumps/Test_sign_cursor_01.dump, + src/testdir/dumps/Test_sign_cursor_02.dump + +Patch 8.1.1553 +Problem: Not easy to change the text in a popup window. +Solution: Add popup_settext(). (Ben Jackson, closes #4549) + Also display a space for an empty popup. +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, + src/testdir/dumps/Test_popup_settext_01.dump, + src/testdir/dumps/Test_popup_settext_02.dump, + src/testdir/dumps/Test_popup_settext_03.dump, + src/testdir/dumps/Test_popup_settext_04.dump, + src/testdir/dumps/Test_popup_settext_05.dump, + src/testdir/dumps/Test_popup_settext_06.dump, + src/testdir/test_popupwin.vim + +Patch 8.1.1554 (after 8.1.1539) +Problem: Docs and tests for :const can be improved. +Solution: Improve documentation, add a few more tests. (Ryuichi Hayashida, + closes #4551) +Files: runtime/doc/eval.txt, src/testdir/test_const.vim + +Patch 8.1.1555 +Problem: NOT_IN_POPUP_WINDOW is confusing. (Andy Massimino) +Solution: Rename to ERROR_IF_POPUP_WINDOW(). +Files: src/popupwin.c, src/proto/popupwin.pro, src/macros.h, + src/ex_cmds2.c, src/ex_docmd.c, src/window.c + +Patch 8.1.1556 +Problem: The command displayed to show a failing screenshot does not include + the "testdir" directory. +Solution: Prefix the directory name so that it can be copy-pasted. +Files: src/testdir/screendump.vim + +Patch 8.1.1557 +Problem: Compiler warning for unused variables in tiny version. (Tony + Mechelynck) +Solution: Add #ifdef. +Files: src/option.c + +Patch 8.1.1558 +Problem: Popup_menu() and popup_filter_menu() are not implemented yet. +Solution: Implement the functions. Fix that centering didn't take the border + and padding into account. +Files: runtime/doc/popup.txt, src/popupwin.c, src/proto/popupwin.pro, + src/evalfunc.c, src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_menu_01.dump, + src/testdir/dumps/Test_popupwin_menu_02.dump, + src/testdir/dumps/Test_popupwin_menu_03.dump, + src/testdir/dumps/Test_popupwin_drag_01.dump, + src/testdir/dumps/Test_popupwin_drag_02.dump + +Patch 8.1.1559 +Problem: Popup window title property not implemented yet. +Solution: Implement the title property. +Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h + src/window.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_menu_01.dump, + src/testdir/dumps/Test_popupwin_menu_02.dump, + src/testdir/dumps/Test_popupwin_title.dump + +Patch 8.1.1560 +Problem: Popup window hidden option not implemented yet. +Solution: Implement the hidden option. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1561 +Problem: Popup_setoptions() is not implemented yet. +Solution: Implement popup_setoptions(). Also add more fields to + popup_getoptions(). +Files: runtime/doc/popup.txt, src/popupwin.c, src/proto/popupwin.pro, + src/dict.c, src/proto/dict.pro, src/evalfunc.c, + src/testdir/test_popupwin.vim, src/testdir/runtest.vim + +Patch 8.1.1562 +Problem: Popup window not always redrawn after popup_setoptions(). +Solution: Force a redraw. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_23.dump + +Patch 8.1.1563 +Problem: Crash when using closures. +Solution: Set reference in varlist of funccal when running the garbage + collector. (Ozaki Kiichi, closes #4554, closes #4547) +Files: src/testdir/test_vimscript.vim, src/userfunc.c + +Patch 8.1.1564 +Problem: Sign column takes up space. (Adam Stankiewicz) +Solution: Optionally put signs in the number column. (Yegappan Lakshmanan, + closes #4555, closes #4515) +Files: runtime/doc/options.txt, src/option.c, src/screen.c, + src/testdir/test_signs.vim + +Patch 8.1.1565 +Problem: MS-Windows: no sound support. +Solution: Add sound support for MS-Windows. (Yasuhiro Matsumoto, Ken Takata, + closes #4522) +Files: runtime/doc/eval.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/sound.c, src/testdir/test_sound.vim + +Patch 8.1.1566 +Problem: Error message when terminal closes while it is not in the current + tab. +Solution: Also set "do_set_w_closing" when using the special autocommand + window. (closes #4552) +Files: src/terminal.c + +Patch 8.1.1567 +Problem: Localtime_r() does not respond to $TZ changes. +Solution: If $TZ changes then call tzset(). (Tom Ryder) +Files: src/auto/configure, src/config.h.in, src/configure.ac, + src/evalfunc.c, src/memline.c, src/proto/memline.pro, + src/testdir/test_functions.vim, src/undo.c + +Patch 8.1.1568 (after 8.1.1567) +Problem: Strftime() test fails on MS-Windows. +Solution: Skip the check for using the $TZ environment variable. +Files: src/testdir/test_functions.vim + +Patch 8.1.1569 +Problem: Cannot build with signs but without diff feature. +Solution: Move #ifdef. (Tom Ryder) +Files: src/screen.c + +Patch 8.1.1570 +Problem: Icon signs not displayed properly in the number column. +Solution: Display them properly. (Yegappan Lakshmanan, closes #4559) +Files: src/gui.c, src/screen.c, src/testdir/test_signs.vim + +Patch 8.1.1571 +Problem: textprop highlight starts too early if just after a tab. +Solution: Check if still drawing a previous character. (closes #4558) +Files: src/screen.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_tab.dump + +Patch 8.1.1572 (after 8.1.1569) +Problem: Compiler warnings with tiny build. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/screen.c + +Patch 8.1.1573 (after 8.1.1571) +Problem: Textprop test fails if screenshots do not work. +Solution: Add check for screenshots working. +Files: src/testdir/test_textprop.vim + +Patch 8.1.1574 +Problem: Tabpage option not yet implemented for popup window. +Solution: Implement tabpage option, also for popup_getoptions(). +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1575 +Problem: Callbacks may be garbage collected. +Solution: Set reference in callbacks. (Ozaki Kiichi, closes #4564) +Files: src/buffer.c, src/channel.c, src/eval.c, src/ex_cmds2.c, + src/popupwin.c, src/proto/buffer.pro, src/proto/popupwin.pro, + src/terminal.c, src/testdir/test_listener.vim, + src/testdir/test_popupwin.vim, src/testdir/test_prompt_buffer.vim, + src/userfunc.c + +Patch 8.1.1576 +Problem: Compiler warning for unused argument. +Solution: Add "UNUSED" annotation. (Dominique Pelle, closes #4570) +Files: src/ui.c + +Patch 8.1.1577 +Problem: Command line redrawn for +arabic without Arabic characters. + (Dominique Pelle) +Solution: Check if there actually are any Arabic characters. Do redraw + after displaying incsearch. (closes #4569) +Files: src/ex_getln.c + +Patch 8.1.1578 +Problem: MS-Windows: pathdef.c should depend on build options. +Solution: Generate pathdef.c in the object directory. Fix dependencies. + (Ken Takata, closes #4565) +Files: .gitignore, .hgignore, src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.1579 +Problem: Dict and list could be GC'ed while displaying error in a timer. + (Yasuhiro Matsumoto) +Solution: Block garbage collection when executing a timer. Add + test_garbagecollect_soon(). Add "no_wait_return" to + test_override(). (closes #4571) +Files: src/dict.c, src/testdir/test_timers.vim, src/evalfunc.c, + runtime/doc/eval.txt + +Patch 8.1.1580 +Problem: Cannot make part of a popup transparent. +Solution: Add the "mask" option. +Files: runtime/doc/popup.txt, src/popupwin.c, src/screen.c, + src/structs.h, src/window.c, src/ui.c, src/vim.h, src/globals.h, + src/testdir/dumps/Test_popupwin_mask_1.dump, + src/testdir/dumps/Test_popupwin_mask_2.dump + +Patch 8.1.1581 +Problem: Shared functions for testing are disorganised. +Solution: Group functions in script files. (Ozaki Kiichi, closes #4573) +Files: Filelist, src/testdir/screendump.vim, src/testdir/shared.vim, + src/testdir/term_util.vim, src/testdir/test_mksession.vim, + src/testdir/test_suspend.vim, src/testdir/test_terminal.vim, + src/testdir/test_timers.vim, src/testdir/view_util.vim + +Patch 8.1.1582 +Problem: Cannot build with +textprop but without +timers. +Solution: Add #ifdef. (Ola S枚der, closes #4574) +Files: src/popupwin.c + +Patch 8.1.1583 +Problem: Set_ref_in_list() only sets ref in items. +Solution: Rename to set_ref_in_list_items() to avoid confusion. +Files: src/eval.c, src/proto/eval.pro, src/if_lua.c, src/popupwin.c, + src/userfunc.c, src/if_py_both.h + +Patch 8.1.1584 +Problem: The evalfunc.c file is getting too big. +Solution: Move channel and job related functions to channel.c. +Files: src/channel.c, src/evalfunc.c, src/proto/channel.pro + +Patch 8.1.1585 +Problem: :let-heredoc does not trim enough. +Solution: Trim indent from the contents based on the indent of the first + line. Use let-heredoc in more tests. +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_balloon.vim, + src/testdir/test_cindent.vim, src/testdir/test_const.vim, + src/testdir/test_debugger.vim, src/testdir/test_functions.vim, + src/testdir/test_goto.vim, src/testdir/test_gui.vim, + src/testdir/test_highlight.vim, src/testdir/test_join.vim, + src/testdir/test_let.vim, src/testdir/test_memory_usage.vim, + src/testdir/test_messages.vim, + src/testdir/test_mksession_utf8.vim, src/testdir/test_normal.vim, + src/testdir/test_popup.vim, src/testdir/test_popupwin.vim, + src/testdir/test_profile.vim, src/testdir/test_quickfix.vim, + src/testdir/test_xxd.vim + +Patch 8.1.1586 +Problem: Error number used in two places. +Solution: Renumber one. (Ken Takata) +Files: runtime/doc/popup.txt, src/popupwin.c + +Patch 8.1.1587 +Problem: Redraw problem when sign icons in the number column. +Solution: Clear and redraw when changing related options. Right align the + sign icon in the GUI. (Yegappan Lakshmanan, closes #4578) +Files: src/gui.c, src/option.c + +Patch 8.1.1588 +Problem: In :let-heredoc line continuation is recognized. +Solution: Do not consume line continuation. (Ozaki Kiichi, closes #4580) +Files: src/autocmd.c, src/digraph.c, src/eval.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_cmds.h, src/ex_cmds2.c, src/ex_docmd.c, + src/ex_getln.c, src/normal.c, src/ops.c, src/proto/autocmd.pro, + src/proto/ex_cmds2.pro, src/proto/ex_docmd.pro, + src/proto/ex_getln.pro, src/proto/userfunc.pro, + src/testdir/test_let.vim, src/testdir/test_startup.vim, + src/userfunc.c + +Patch 8.1.1589 +Problem: Popup window does not indicate scroll position. +Solution: Add a scrollbar. +Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_firstline.dump, + src/testdir/dumps/Test_popupwin_scroll_1.dump, + src/testdir/dumps/Test_popupwin_scroll_2.dump, + src/testdir/dumps/Test_popupwin_scroll_3.dump, + src/testdir/dumps/Test_popupwin_scroll_4.dump + +Patch 8.1.1590 +Problem: Popup window test fails. +Solution: Add "scrollbar" to expected result. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1591 +Problem: On error garbage collection may free memory in use. +Solution: Reset may_garbage_collect when evaluating expression mapping. + Add tests. (Ozaki Kiichi, closes #4579) +Files: src/ex_cmds2.c, src/getchar.c, src/testdir/test_mapping.vim, + src/testdir/test_timers.vim, src/testdir/test_vimscript.vim + +Patch 8.1.1592 +Problem: May start file dialog while exiting. +Solution: Ignore the "browse" modifier when exiting. (Ozaki Kiichi, + closes #4582) +Files: src/ex_cmds.c, src/terminal.c + +Patch 8.1.1593 +Problem: Filetype not detected for C++ header files without extension. +Solution: Recognize the file by the Emacs file mode. (Dmitry Ilyin, + closes #4593) +Files: runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.1.1594 +Problem: May still start file dialog while exiting. +Solution: Ignore the "browse" modifier in another place when exiting. + (Ozaki Kiichi, closes #4582) +Files: src/ex_cmds.c + +Patch 8.1.1595 +Problem: MS-Windows with VIMDLL: colors wrong in the GUI. +Solution: Do not set the terminal colors when not using the GUI. (Ken + Takata, closes #4588) +Files: src/syntax.c + +Patch 8.1.1596 +Problem: When resizing the screen may draw popup in wrong position. (Masato + Nishihata) +Solution: Check the popup is not outside of the screen. (fixes #4592) +Files: src/popupwin.c + +Patch 8.1.1597 +Problem: Cannot scroll a popup window with the mouse. +Solution: If the popup window has a scrollbar let the mouse scroll wheel + scroll the window. +Files: runtime/doc/popup.txt, src/normal.c, src/popupwin.c, src/screen.c, + src/testdir/dumps/Test_popupwin_firstline.dump, + src/testdir/dumps/Test_popupwin_scroll_1.dump, + src/testdir/dumps/Test_popupwin_scroll_2.dump, + src/testdir/dumps/Test_popupwin_scroll_3.dump, + src/testdir/dumps/Test_popupwin_scroll_5.dump, + src/testdir/dumps/Test_popupwin_scroll_6.dump, + src/testdir/dumps/Test_popupwin_scroll_7.dump + +Patch 8.1.1598 +Problem: Update to test file missing. +Solution: Update the popup window test file. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1599 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Add a dummy assignment. +Files: src/popupwin.c, src/normal.c + +Patch 8.1.1600 +Problem: Cannot specify highlighting for popup window scrollbar. +Solution: Add "scrollbarhighlight" and "thumbhighlight" options. +Files: src/popupwin.c, src/structs.h, src/window.c, + src/testdir/dumps/Test_popupwin_scroll_5.dump, + src/testdir/dumps/Test_popupwin_scroll_6.dump, + src/testdir/dumps/Test_popupwin_scroll_7.dump + +Patch 8.1.1601 +Problem: Missing changes to popup window test file. +Solution: Add those changes. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1602 +Problem: Popup window cannot overflow on the left or right. +Solution: Only set the "fixed" option when it is in the dict. Set w_leftcol + to allow for the popup overflowing on the left and use it when + applying the mask. +Files: src/popupwin.c + +Patch 8.1.1603 +Problem: Crash when using unknown highlighting in text property. +Solution: Check for zero highlight ID. +Files: src/screen.c, src/testdir/test_textprop.vim + +Patch 8.1.1604 +Problem: Popup window scroll test is flaky. +Solution: Add a delay between scroll events. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1605 +Problem: Vim may delay processing messages on a json channel. (Pontus + Leitzler) +Solution: Try parsing json when checking if there is readahead. +Files: src/channel.c + +Patch 8.1.1606 +Problem: On a narrow screen ":hi" output is confusing. +Solution: Insert a space between highlight group name and "xxx". (Masato + Nishihaga, closes #4599) +Files: src/syntax.c, src/testdir/test_highlight.vim + +Patch 8.1.1607 +Problem: Popup window scrollbar does not respond to click. +Solution: Mouse click in scrollbar scrolls by one line. +Files: src/popupwin.c, src/proto/popupwin.pro, src/structs.h, src/ui.c, + src/normal.c, runtime/doc/popup.txt, + src/testdir/dumps/Test_popupwin_scroll_8.dump, + src/testdir/dumps/Test_popupwin_scroll_9.dump + +Patch 8.1.1608 +Problem: The evalfunc.c file is too big. +Solution: Move sign functionality to sign.c. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/sign.c, + src/proto/sign.pro + +Patch 8.1.1609 +Problem: The user cannot easily close a popup window. +Solution: Add the "close" property. (mostly by Masato Nishihata, + closes #4601) +Files: runtime/doc/popup.txt, src/popupwin.c, src/proto/popupwin.pro, + src/structs.h, src/testdir/dumps/Test_popupwin_close_01.dump, + src/testdir/dumps/Test_popupwin_close_02.dump, + src/testdir/dumps/Test_popupwin_close_03.dump, + src/testdir/test_popupwin.vim, src/ui.c + +Patch 8.1.1610 +Problem: There is no way to add or load a buffer without side effects. +Solution: Add the bufadd() and bufload() functions. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.1.1611 +Problem: Bufadd() reuses existing buffer without a name. +Solution: When the name is empty always create a new buffer. +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.1.1612 +Problem: Cannot show an existing buffer in a popup window. +Solution: Support buffer number argument in popup_create(). +Files: src/buffer.c, src/proto/buffer.pro, src/evalfunc.c, + src/popupwin.c, src/vim.h, src/normal.c, src/screen.c, src/ui.c, + src/window.c, src/testdir/test_popupwin.vim, runtime/doc/popup.txt + +Patch 8.1.1613 +Problem: Popup window test fails with Athena and Motif. +Solution: Compute the highlight attribute when the GUI is not active. +Files: src/syntax.c + +Patch 8.1.1614 +Problem: 'numberwidth' can only go up to 10. +Solution: Allow up to 20. (Charlie Stanton, closes #4584) +Files: runtime/doc/options.txt, src/option.c, src/screen.c, + src/testdir/gen_opt_test.vim, src/testdir/test_options.vim + +Patch 8.1.1615 +Problem: Crash when passing buffer number to popup_create(). (Yasuhiro + Matsumoto) +Solution: Initialize the window properly. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1616 +Problem: Build failure with gcc on Amiga. +Solution: Add missing header includes. (Ola S枚der, closes #4603) +Files: src/os_amiga.h + +Patch 8.1.1617 +Problem: No test for popup window with mask and position fixed. +Solution: Add a couple of screenshots. Fix detected problems. +Files: src/popupwin.c, src/structs.h, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_mask_1.dump, + src/testdir/dumps/Test_popupwin_mask_2.dump, + src/testdir/dumps/Test_popupwin_mask_3.dump, + src/testdir/dumps/Test_popupwin_mask_4.dump + +Patch 8.1.1618 +Problem: Amiga-like systems quickly run out of stack. +Solution: Reserve a Megabyte stack. (Ola S枚der, closes #4608) +Files: src/os_amiga.c + +Patch 8.1.1619 +Problem: Tests are not run with GUI on Travis. +Solution: Add a testgui job. (Ozaki Kiichi, closes #4609) +Files: .travis.yml, src/testdir/test_highlight.vim, + src/testdir/test_mapping.vim, src/testdir/test_timers.vim + +Patch 8.1.1620 +Problem: No test for popup window with border and mask. +Solution: Add this popup window, fix problems. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_mask_1.dump, + src/testdir/dumps/Test_popupwin_mask_2.dump, + src/testdir/dumps/Test_popupwin_mask_3.dump, + src/testdir/dumps/Test_popupwin_mask_4.dump + +Patch 8.1.1621 +Problem: Amiga: time.h included twice. +Solution: Remove include from evalfunc.c, move outside of #ifdef in + os_amiga.h. (Ola S枚der, closes #4607) +Files: src/evalfunc.c, src/os_amiga.h + +Patch 8.1.1622 +Problem: Wrong width if displaying a lot of lines in a popup window. +Solution: Accurately compute the line overflow. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_firstline.dump + +Patch 8.1.1623 +Problem: Display wrong with signs in narrow number column. +Solution: Increase the numbercolumn width if needed. (Yegappan Lakshmanan, + closes #4606) +Files: src/option.c, src/screen.c, src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.1624 +Problem: When testing in the GUI may try to run gvim in a terminal. +Solution: Add the -v argument. (Yee Cheng Chin, closes #4605) Don't skip + tests that work now. +Files: src/testdir/shared.vim, src/testdir/term_util.vim, + src/testdir/test_mapping.vim, src/testdir/test_timers.vim + +Patch 8.1.1625 +Problem: Script line numbers are not exactly right. +Solution: Handle heredoc and continuation lines better. (Ozaki Kiichi, + closes #4611, closes #4511) +Files: src/ex_cmds2.c, src/proto/ex_cmds2.pro, + src/testdir/test_vimscript.vim, src/userfunc.c + +Patch 8.1.1626 +Problem: No test for closing a popup window with a modified buffer. +Solution: Add a test. Add "popups" to getbufinfo(). +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1627 +Problem: Header file contains mixed comment style. +Solution: Use // style comments. +Files: src/structs.h + +Patch 8.1.1628 +Problem: Popup window functions not in list of functions. +Solution: Add popup window functions to the list of functions. Reorganise + the popup window help. +Files: runtime/doc/eval.txt, runtime/doc/popup.txt, + runtime/doc/usr_41.txt + +Patch 8.1.1629 +Problem: Terminal function help is in the wrong file. +Solution: Move the function details to terminal.txt. +Files: runtime/doc/eval.txt, runtime/doc/terminal.txt + +Patch 8.1.1630 +Problem: Various small problems. +Solution: Various small improvements. +Files: src/gui_beval.c, src/list.c, src/menu.c, src/message.c, + src/misc2.c, src/testdir/test_terminal.vim, src/os_vms_conf.h, + src/testdir/Make_vms.mms + +Patch 8.1.1631 +Problem: Displaying signs is inefficient. +Solution: Avoid making multiple calls to get information about a placed + sign. (Yegappan Lakshmanan, closes #4586) +Files: src/proto/sign.pro, src/screen.c, src/sign.c, src/structs.h + +Patch 8.1.1632 +Problem: Build with EXITFREE but without +arabic fails. +Solution: Rename the function and adjust #ifdefs. (closes #4613) +Files: src/ex_getln.c, src/proto/ex_getln.pro, src/misc2.c + +Patch 8.1.1633 +Problem: Cannot generate prototypes with X11 but without GUI. +Solution: Include X11/Intrinsic.h. +Files: src/gui.h + +Patch 8.1.1634 +Problem: Terminal test fails when term_getansicolors() is missing. + Diff test fails without +rightleft. (Dominique Pelle) +Solution: Check if term_getansicolors() is supported. (closes #4597) +Files: src/testdir/test_terminal.vim, src/testdir/test_diffmode.vim + +Patch 8.1.1635 +Problem: Warnings for unused variables in small version. (John Marriott) +Solution: Adjust #ifdefs. +Files: src/screen.c + +Patch 8.1.1636 +Problem: Crash when popup has fitting scrollbar. (Trygve Aaberge) +Solution: Don't divide by zero if the scrollbar just fits. (closes #4615) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1637 +Problem: After running tests and clean the XfakeHOME directory remains. +Solution: Use "rm -rf". (Hirohito Higashi) +Files: src/testdir/Makefile, src/testdir/Make_amiga.mak + +Patch 8.1.1638 +Problem: Running tests leaves some files behind. +Solution: Delete the files. (Ozaki Kiichi, closes #4617) +Files: src/testdir/test_functions.vim, src/testdir/test_popupwin.vim + +Patch 8.1.1639 +Problem: Changing an autoload name into a script file name is inefficient. +Solution: Remember the last replaced #. (Ozaki Kiichi, closes #4618) +Files: src/eval.c + +Patch 8.1.1640 +Problem: The CursorHold autocommand takes down a balloon. (Paul Jolly) +Solution: Ignore the CursorHold pseudo-key. +Files: src/getchar.c, src/testdir/test_balloon.vim, + src/testdir/dumps/Test_balloon_eval_term_01.dump, + src/testdir/dumps/Test_balloon_eval_term_01a.dump + +Patch 8.1.1641 +Problem: Garbage collection may run at a wrong moment. (Trygve Aaberge) +Solution: Postpone garbage collection while parsing messages. (closes #4620) +Files: src/misc2.c + +Patch 8.1.1642 (after 8.1.0374) +Problem: May use uninitialized variable. (Patrick Palka) +Solution: Initialize variables earlier. (closes #4623) +Files: src/screen.c, src/testdir/test_number.vim + +Patch 8.1.1643 +Problem: Sign placement is wrong when 'foldcolumn' is set. +Solution: Adjust the column computation. (Yee Cheng Chin, closes #4627) +Files: src/gui.c + +Patch 8.1.1644 +Problem: Sound test does not work on Travis. +Solution: Use "sg" command to enable audio. (Ozaki Kiichi, closes #4624) +Files: .travis.yml + +Patch 8.1.1645 +Problem: Cannot use a popup window for a balloon. +Solution: Add popup_beval(). Add the "mousemoved" property. Add the + screenpos() function. +Files: src/popupwin.c, src/proto/popupwin.pro, src/move.c, + src/proto/move.pro, src/beval.c, src/proto/beval.pro, + src/evalfunc.c, src/popupmnu.c, src/normal.c, + src/testdir/test_popupwin.vim, src/testdir/test_cursor_func.vim, + runtime/doc/popup.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, + src/testdir/dumps/Test_popupwin_beval_1.dump, + src/testdir/dumps/Test_popupwin_beval_2.dump, + src/testdir/dumps/Test_popupwin_beval_3.dump + +Patch 8.1.1646 (after 8.1.1645) +Problem: build failure +Solution: Add changes to structure. +Files: src/structs.h + +Patch 8.1.1647 +Problem: Build error with GTK and hangulinput feature, im_get_status() + defined twice. (Dominique Pelle) +Solution: Adjust im_get_status(). (closes #4628) +Files: src/hangulin.c, src/mbyte.c + +Patch 8.1.1648 +Problem: MS-Windows: build error with normal features. +Solution: Adjust #ifdef for find_word_under_cursor(). +Files: src/beval.c, src/proto/beval.pro + +Patch 8.1.1649 +Problem: Illegal memory access when closing popup window. +Solution: Get w_next before closing the window. +Files: src/popupwin.c + +Patch 8.1.1650 +Problem: Warning for using uninitialized variable. (Tony Mechelynck) +Solution: Simplify the code by always using the mouse coordinates. +Files: src/beval.c + +Patch 8.1.1651 +Problem: Suspend test is flaky on some systems. +Solution: Wait for the shell prompt to show. (Yee Cheng Chin, closes #4632) +Files: src/testdir/test_suspend.vim + +Patch 8.1.1652 +Problem: GUI: popup window doesn't close on mouse movement. (Paul Jolly) +Solution: Generate mouse-move events when a popup window is visible. +Files: src/gui.c, src/globals.h + +Patch 8.1.1653 +Problem: Ubsan warns for possibly passing NULL pointer. +Solution: Skip code when length is zero. (Dominique Pelle, closes #4631) +Files: src/channel.c + +Patch 8.1.1654 +Problem: GUI: screen updates from 'balloonexpr' are not displayed. +Solution: Update the screen if needed. Also avoid the cursor being + displayed in the wrong position. +Files: src/beval.c + +Patch 8.1.1655 +Problem: Popup window border drawn wrong with multibyte char. (Marcin + Szamotulski) +Solution: Correct check in mb_fix_col(). (closes #4635) +Files: src/mbyte.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_24.dump + +Patch 8.1.1656 +Problem: Popup window width is wrong when using Tabs. (Paul Jolly) +Solution: Count tabs correctly. (closes #4637) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_11.dump + +Patch 8.1.1657 +Problem: Terminal: screen updates from 'balloonexpr' are not displayed. +Solution: Update the screen if needed. Fix the word position for + "mousemoved". +Files: src/beval.c, src/proto/beval.pro, src/popupwin.c, src/normal.c, + src/proto/normal.pro + +Patch 8.1.1658 +Problem: Debug statements included in patch. +Solution: Remove the debug statements. +Files: src/normal.c, src/popupwin.c + +Patch 8.1.1659 +Problem: Popup window "mousemoved" values not correct. +Solution: Convert text column to mouse column. +Files: src/popupwin.c, runtime/doc/popup.txt + +Patch 8.1.1660 +Problem: Assert_fails() does not fail inside try/catch. +Solution: Set trylevel to zero. (Ozaki Kiichi, closes #4639) +Files: src/eval.c, src/testdir/test_assert.vim + +Patch 8.1.1661 +Problem: Cannot build with +textprop but without +balloon_eval. +Solution: Adjust #ifdefs. (closes #4645) +Files: src/proto.h + +Patch 8.1.1662 +Problem: Cannot build uninstal.exe with some version of MinGW. +Solution: Add -lole32. (Rene Nyffenegger, closes #4646) +Files: src/Make_cyg_ming.mak + +Patch 8.1.1663 +Problem: Compiler warning for using size_t. +Solution: Add type cast. (Mike Williams) +Files: src/popupwin.c + +Patch 8.1.1664 +Problem: GUI resize may cause changing Rows at a bad time. (Dominique + Pelle) +Solution: Postpone resizing while updating the screen. +Files: src/term.c + +Patch 8.1.1665 +Problem: Crash when popup window with mask is below the screen. +Solution: Correct boundary check. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_mask_5.dump + +Patch 8.1.1666 +Problem: Click in popup window scrollbar with border doesn't scroll. +Solution: Correct column for the border. (Naruhiko Nishino, closes #4650) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_9.dump + +Patch 8.1.1667 +Problem: Flags for Ex commands may clash with other symbols. +Solution: Prepend with EX_. +Files: src/ex_cmds.h, src/evalfunc.c, src/ex_docmd.c, src/ex_getln.c, + src/usercmd.c, src/syntax.c + +Patch 8.1.1668 +Problem: Popup window test is a bit flaky on some systems. +Solution: Clear the command line. (Naruhiko Nishino, closes #4656) +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1669 +Problem: Travis: test results section is closed even when some tests + failed. +Solution: Only close the section on success. (Daniel Hahler, closes #4659) +Files: .travis.yml + +Patch 8.1.1670 +Problem: Sign column not always properly aligned. +Solution: Use "col" only after it was calculated. (Yee Cheng Chin, + closes #4649) +Files: src/gui.c + +Patch 8.1.1671 +Problem: Copying a blob may result in it being locked. +Solution: Reset v_lock. (Ken Takata, closes #4648) +Files: src/blob.c, src/testdir/test_blob.vim + +Patch 8.1.1672 (after 8.1.1667) +Problem: "make cmdidxs" doesn't work. +Solution: Update macro names. (Naruhiko Nishino, closes #4660) +Files: src/create_cmdidxs.vim + +Patch 8.1.1673 +Problem: Cannot easily find the popup window at a certain position. +Solution: Add popup_locate(). +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + +Patch 8.1.1674 +Problem: Script to check a colorscheme can be improved. +Solution: Match the whole group name. Don't warn for what is usually omitted. +Files: runtime/colors/tools/check_colors.vim + +Patch 8.1.1675 +Problem: Listener list not correctly updated on listener_remove(). +Solution: Only set "prev" when not removing a listener. Return one if the + listener was found and removed. +Files: src/change.c + +Patch 8.1.1676 +Problem: "maxwidth" of popup window does not always work properly. +Solution: Adjust the computation. (Naruhiko Nishino, closes #4653) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump + +Patch 8.1.1677 +Problem: Tests get stuck when running into an existing swapfile. +Solution: Set v:swapchoice to "q" and report an error. (Daniel Hahler, + closes #4644) +Files: src/testdir/runtest.vim + +Patch 8.1.1678 +Problem: When using popup_menu() does not scroll to show the selected line. +Solution: Scroll the text. (Naruhiko Nishino, closes #4651) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_menu_scroll_1.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_2.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_3.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_4.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_5.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_6.dump + +Patch 8.1.1679 +Problem: Test using SwapExists autocommand file may fail. +Solution: Remove the SwapExists autocommand. +Files: src/testdir/test_window_cmd.vim + +Patch 8.1.1680 +Problem: The command table is not well aligned. +Solution: Adjust indent. +Files: src/ex_cmds.h + +Patch 8.1.1681 +Problem: Insert stray "{" when listener gets buffer line. (Paul Jolly) +Solution: Flush the cached line after invoking listeners. (closes #4455) +Files: src/memline.c, src/testdir/test_listener.vim + +Patch 8.1.1682 +Problem: Placing a larger number of signs is slow. +Solution: Add functions for dealing with a list of signs. (Yegappan + Lakshmanan, closes #4636) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/proto/sign.pro, src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.1683 +Problem: Dictionary with string keys is longer than needed. +Solution: Use *{key: val} for literal keys. +Files: runtime/doc/eval.txt, src/eval.c, src/dict.c, src/proto/dict.pro, + src/testdir/test_listdict.vim, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_07.dump, + src/testdir/dumps/Test_popupwin_mask_2.dump, + src/testdir/dumps/Test_popupwin_mask_3.dump, + src/testdir/dumps/Test_popupwin_mask_4.dump, + src/testdir/dumps/Test_popupwin_mask_5.dump, + src/testdir/dumps/Test_popupwin_scroll_2.dump, + src/testdir/dumps/Test_popupwin_scroll_3.dump, + src/testdir/dumps/Test_popupwin_scroll_4.dump + +Patch 8.1.1684 +Problem: Profiling functionality is spread out. +Solution: Put profiling functionality in profiler.c. (Yegappan Lakshmanan, + closes #4666) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_dice.mak, + src/Make_manx.mak, src/Make_morph.mak, src/Make_mvc.mak, + src/Make_sas.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/ex_cmds2.c, src/globals.h, src/profiler.c, src/proto.h, + src/proto/ex_cmds2.pro, src/proto/profiler.pro, + src/proto/userfunc.pro, src/structs.h, src/userfunc.c + +Patch 8.1.1685 +Problem: Missing file in distributed file list. +Solution: Add profiler.pro +Files: Filelist + +Patch 8.1.1686 +Problem: "*" of "*{" is recognized as multiply operator. (Yasuhiro + Matsumoto) +Solution: Check for the "{". +Files: src/eval.c, src/testdir/test_listdict.vim + +Patch 8.1.1687 +Problem: The evalfunc.c file is too big. +Solution: Move testing support to a separate file. +Files: Filelist, src/evalfunc.c, src/eval.c, src/proto/eval.pro, + src/testing.c, src/proto/testing.pro, src/Make_cyg_ming.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile, src/README.md, src/proto.h + +Patch 8.1.1688 +Problem: Old makefiles are no longer useful. +Solution: Delete the makefiles, they most likely don't work anyway. +Files: Filelist, src/Make_dice.mak, src/Make_manx.mak, src/Make_sas.mak + +Patch 8.1.1689 +Problem: Profiling code is spread out. +Solution: Move more profiling code to profiler.c. (Yegappan Lakshmanan, + closes #4668) +Files: src/ex_cmds2.c, src/profiler.c, src/proto/ex_cmds2.pro, + src/proto/profiler.pro, src/proto/userfunc.pro, src/structs.h, + src/userfunc.c + +Patch 8.1.1690 +Problem: Default padding for popup window menu is too much. +Solution: Only add padding left and right. +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/dumps/Test_popupwin_menu_01.dump, + src/testdir/dumps/Test_popupwin_menu_02.dump, + src/testdir/dumps/Test_popupwin_menu_maxwidth_1.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_1.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_2.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_3.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_4.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_5.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_6.dump + +Patch 8.1.1691 +Problem: Diff test fails on some systems. (Elimar Riesebieter) +Solution: Add a term_wait() call. +Files: src/testdir/test_diffmode.vim + +Patch 8.1.1692 +Problem: Using *{} for literal dict is not backwards compatible. (Yasuhiro + Matsumoto) +Solution: Use ~{} instead. +Files: runtime/doc/eval.txt runtime/doc/popup.txt, src/eval.c, + src/testdir/test_listdict.vim src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_07.dump, + src/testdir/dumps/Test_popupwin_mask_2.dump, + src/testdir/dumps/Test_popupwin_mask_3.dump, + src/testdir/dumps/Test_popupwin_mask_4.dump, + src/testdir/dumps/Test_popupwin_mask_5.dump, + src/testdir/dumps/Test_popupwin_scroll_2.dump, + src/testdir/dumps/Test_popupwin_scroll_3.dump, + src/testdir/dumps/Test_popupwin_scroll_4.dump + +Patch 8.1.1693 +Problem: Syntax coloring and highlighting is in one big file. +Solution: Move the highlighting to a separate file. (Yegappan Lakshmanan, + closes #4674) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/globals.h, src/highlight.c, src/proto.h, + src/proto/highlight.pro, src/proto/syntax.pro, src/structs.h, + src/syntax.c + +Patch 8.1.1694 +Problem: The RUN_VIM variable is longer than needed. +Solution: Shorten RUN_VIM. (Daniel Hahler, closes #4643) +Files: src/testdir/Makefile, src/testdir/shared.vim + +Patch 8.1.1695 +Problem: Windows 10: crash when cursor is at bottom of terminal. +Solution: Position the cursor before resizing. (Yasuhiro Matsumoto, + closes #4679) +Files: src/os_win32.c + +Patch 8.1.1696 +Problem: MSVC: link command line is too long. +Solution: Use the @<< mechanism to pass the arguments via a file. (Christian + Brabandt) +Files: src/Make_mvc.mak + +Patch 8.1.1697 +Problem: Cannot build with MSVC. +Solution: Remove the backslashes after the @<< mechanism. +Files: src/Make_mvc.mak + +Patch 8.1.1698 +Problem: Appveyor build with MSVC fails. +Solution: Remove the sed command +Files: ci/appveyor.bat + +Patch 8.1.1699 +Problem: Highlight_ga can be local instead of global. +Solution: Move highlight_ga into highlight.c. (Yegappan Lakshmanan, + closes #4675) +Files: src/globals.h, src/highlight.c, src/proto/highlight.pro, + src/structs.h, src/syntax.c + +Patch 8.1.1700 +Problem: Listener callback called for the wrong buffer. +Solution: Invoke listeners before calling ml_append_int(). +Files: src/memline.c + +Patch 8.1.1701 +Problem: Appveyor build with MSVC fails puts progress bar in log. +Solution: Adjust the sed command. (Ken Takata) +Files: ci/appveyor.bat + +Patch 8.1.1702 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. (Christian Brabandt) +Files: src/gui.c + +Patch 8.1.1703 +Problem: Breaking out of loop by checking window pointer is insufficient. +Solution: Check the window ID and the buffer number. (closes #4683) +Files: src/misc2.c + +Patch 8.1.1704 +Problem: C-R C-W does not work after C-G when using 'incsearch'. +Solution: Put cursor at end of the match. (Yasuhiro Matsumoto, closes #4664) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.1.1705 +Problem: Using ~{} for a literal dict is not nice. +Solution: Use #{} instead. +Files: runtime/doc/eval.txt runtime/doc/popup.txt, src/eval.c, + src/testdir/test_listdict.vim src/testdir/test_popupwin.vim + +Patch 8.1.1706 +Problem: Typo in #ifdef. +Solution: Change PROT to PROTO. +Files: src/beval.c + +Patch 8.1.1707 +Problem: Coverity warns for possibly using a NULL pointer. +Solution: Change the logic to make sure no NULL pointer is used. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1708 +Problem: Coverity warns for using uninitialized variable. +Solution: Set the start col when col is set. +Files: src/beval.c + +Patch 8.1.1709 +Problem: Coverity warns for possibly using a NULL pointer. +Solution: Make sure no NULL pointer is used. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1710 +Problem: Coverity found dead code. +Solution: Remove merging of listener changes. +Files: src/change.c + +Patch 8.1.1711 +Problem: Listener callback called at the wrong moment +Solution: Invoke listeners before calling ml_delete_int(). (closes #4657) +Files: src/memline.c + +Patch 8.1.1712 +Problem: Signs in number column cause text to be misaligned. +Solution: Improve alignment. (Yasuhiro Matsumoto, closes #4694) +Files: src/screen.c, src/testdir/test_signs.vim + +Patch 8.1.1713 +Problem: Highlighting cursor line only works with popup_menu(). +Solution: Add the "cursorline" property. (Naruhiko Nishino, closes #4671) +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/dumps/Test_popupwin_cursorline_1.dump, + src/testdir/dumps/Test_popupwin_cursorline_2.dump, + src/testdir/dumps/Test_popupwin_cursorline_3.dump, + src/testdir/dumps/Test_popupwin_cursorline_4.dump, + src/testdir/dumps/Test_popupwin_cursorline_5.dump, + src/testdir/dumps/Test_popupwin_cursorline_6.dump, + src/testdir/dumps/Test_popupwin_menu_filter_1.dump, + src/testdir/dumps/Test_popupwin_menu_filter_2.dump, + src/testdir/dumps/Test_popupwin_menu_filter_3.dump, + src/testdir/dumps/Test_popupwin_menu_filter_4.dump, + src/testdir/test_popupwin.vim, src/vim.h + +Patch 8.1.1714 +Problem: Cannot preview a file in a popup window. +Solution: Add the 'previewpopup' option. +Files: runtime/doc/windows.txt, runtime/doc/options.txt, src/popupwin.c, + src/proto/popupwin.pro, src/option.c, src/option.h, src/ex_cmds.c, + src/testdir/dumps/Test_popupwin_previewpopup_1.dump, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/ex_docmd.c, src/testdir/gen_opt_test.vim + +Patch 8.1.1715 +Problem: Emoji characters are seen as word characters for spelling. (Gautam + Iyer) +Solution: Exclude class 3 from word characters. +Files: src/spell.c + +Patch 8.1.1716 +Problem: Old style comments are wasting space +Solution: Use new style comments in option header file. (closes #4702) +Files: src/option.h + +Patch 8.1.1717 +Problem: Last char in menu popup window highlighted. +Solution: Do not highlight an extra character twice. +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_menu_04.dump + +Patch 8.1.1718 +Problem: Popup menu highlighting does not look good. +Solution: Highlight the whole window line. Fix that sign line HL is not + displayed in a window with a background color. +Files: src/popupwin.c, src/sign.c, src/proto/sign.pro, src/screen.c, + src/testdir/dumps/Test_popupwin_menu_scroll_1.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_2.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_3.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_4.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_5.dump, + src/testdir/dumps/Test_popupwin_menu_scroll_6.dump, + src/testdir/dumps/Test_popupwin_menu_01.dump, + src/testdir/dumps/Test_popupwin_menu_02.dump, + src/testdir/dumps/Test_popupwin_menu_04.dump + +Patch 8.1.1719 +Problem: Popup too wide when 'showbreak' is set. +Solution: Set window width when computing line length. (closes #4701) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_showbreak.dump + +Patch 8.1.1720 +Problem: Crash with very long %[] pattern. (Reza Mirzazade farkhani) +Solution: Check for reg_toolong. (closes #4703) +Files: src/regexp.c, src/testdir/test_regexp_utf8.vim + +Patch 8.1.1721 +Problem: Build failure with normal features without netbeans interface. +Solution: Enable signs when using the text properties feature. +Files: src/feature.h + +Patch 8.1.1722 +Problem: Error when scriptversion is 2 a making a dictionary access. +Solution: Parse the subscript even when not evaluating the sub-expression. + (closes #4704) +Files: src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.1723 +Problem: Heredoc assignment has no room for new features. (FUJIWARA Takuya) +Solution: Require the marker does not start with a lower case character. + (closes #4705) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_let.vim + +Patch 8.1.1724 +Problem: Too much overhead checking for CTRL-C while processing text. +Solution: Increase BREAKCHECK_SKIP. Remove the difference for when built + with the GUI. (suggested by Andy Massimino, closes #4708) +Files: src/misc1.c, src/screen.c, src/feature.h + +Patch 8.1.1725 +Problem: MS-Windows: E325 message may use incorrect date format. +Solution: Convert strftime() result to 'encoding'. Also make the message + translatable. (Ken Takata, closes #4685, closes #4681) +Files: src/memline.c + +Patch 8.1.1726 +Problem: The eval.txt help file is too big. +Solution: Split off testing support to testing.txt. Move function details + to where the functionality is explained. +Files: runtime/doc/Makefile, runtime/doc/eval.txt, + runtime/doc/testing.txt, runtime/doc/sign.txt, + runtime/doc/textprop.txt, runtime/doc/help.txt, + runtime/doc/channel.txt, runtime/doc/tags + +Patch 8.1.1727 +Problem: Code for viminfo support is spread out. +Solution: Move to code to viminfo.c. (Yegappan Lakshmanan, closes #4686) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/buffer.c, + src/eval.c, src/ex_cmds.c, src/ex_docmd.c, src/globals.h, + src/proto.h, src/proto/buffer.pro, src/proto/eval.pro, + src/proto/ex_cmds.pro, src/proto/viminfo.pro, src/structs.h, + src/viminfo.c + +Patch 8.1.1728 +Problem: Wrong place for command line history viminfo support. +Solution: Move it to viminfo.c. +Files: src/ex_getln.c, src/proto/ex_getln.pro, src/viminfo.c, + src/structs.h + +Patch 8.1.1729 +Problem: Heredoc with trim not properly handled in function. +Solution: Allow for missing indent. (FUJIWARA Takuya, closes #4713) +Files: src/userfunc.c, src/testdir/test_let.vim + +Patch 8.1.1730 +Problem: Wrong place for mark viminfo support. +Solution: Move it to viminfo.c. (Yegappan Lakshmanan, closes #4716) +Files: src/README.md, src/mark.c, src/proto/mark.pro, + src/proto/viminfo.pro, src/structs.h, src/viminfo.c + +Patch 8.1.1731 +Problem: Command line history not read from viminfo on startup. +Solution: Get history length after initializing it. +Files: src/viminfo.c, src/testdir/test_viminfo.vim + +Patch 8.1.1732 +Problem: Completion in cmdwin does not work for buffer-local commands. +Solution: Use the right buffer. (closes #4711) +Files: src/usercmd.c, src/testdir/test_ins_complete.vim + +Patch 8.1.1733 +Problem: The man ftplugin leaves an empty buffer behind. +Solution: Don't make new window and edit, use split. (Jason Franklin) +Files: runtime/ftplugin/man.vim, src/testdir/test_man.vim + +Patch 8.1.1734 +Problem: The evalfunc.c file is too big. +Solution: Move some functions to other files. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/json.c, + src/proto/json.pro src/window.c, src/proto/window.pro, + src/highlight.c, src/proto/highlight.pro, src/globals.h + +Patch 8.1.1735 (after 8.1.1734) +Problem: Can't build with tiny features. +Solution: Add missing #ifdefs. +Files: src/json.c, src/highlight.c + +Patch 8.1.1736 +Problem: Viminfo support is spread out. +Solution: Move more viminfo code to viminfo.c. (Yegappan Lakshmanan, + closes #4717) Reorder code to make most functions static. +Files: src/fileio.c, src/ops.c, src/option.c, src/proto/ops.pro, + src/proto/option.pro, src/proto/search.pro, src/proto/viminfo.pro, + src/search.c, src/structs.h, src/viminfo.c, src/ex_cmds.c, + src/proto/ex_cmds.pro + +Patch 8.1.1737 +Problem: :args command that outputs one line gives more prompt. +Solution: Only output line break if needed. (Daniel Hahler, closes #4715) +Files: src/version.c, src/testdir/test_arglist.vim + +Patch 8.1.1738 +Problem: Testing lambda with timer is slow. +Solution: Do not test timer accuracy, only that it works. (Daniel Hahler, + closes #4723) +Files: src/testdir/test_lambda.vim + +Patch 8.1.1739 +Problem: Deleted match highlighting not updated in other window. +Solution: Mark the window for refresh. (closes #4720) Also fix that + ambi-width check clears with wrong attributes. +Files: src/term.c, src/highlight.c, src/testdir/test_match.vim, + src/testdir/dumps/Test_matchdelete_1.dump + +Patch 8.1.1740 +Problem: Exepath() doesn't work for "bin/cat". +Solution: Check for any path separator. (Daniel Hahler, closes #4724, + closes #4710) +Files: src/evalfunc.c, src/os_unix.c, src/testdir/test_functions.vim + +Patch 8.1.1741 +Problem: Cleared/added match highlighting not updated in other window. + (Andy Massimino) +Solution: Mark the right window for refresh. +Files: src/highlight.c, src/testdir/test_match.vim, + src/testdir/dumps/Test_matchclear_1.dump, + src/testdir/dumps/Test_matchadd_1.dump + +Patch 8.1.1742 +Problem: Still some match functions in evalfunc.c. +Solution: Move them to highlight.c. +Files: src/evalfunc.c, src/highlight.c, src/proto/highlight.pro, + src/ex_docmd.c + +Patch 8.1.1743 +Problem: 'hlsearch' and match highlighting in the wrong place. +Solution: Move highlighting from inside screen functions to highlight.c. +Files: src/screen.c, src/highlight.c, src/proto/highlight.pro + +Patch 8.1.1744 +Problem: Build error without the conceal feature. +Solution: Define variables also without the conceal feature. +Files: src/screen.c + +Patch 8.1.1745 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. Change comments to new style. +Files: src/highlight.c + +Patch 8.1.1746 +Problem: ":dl" is seen as ":dlist" instead of ":delete". +Solution: Do not use cmdidxs2[] if the length is 1. (closes #4721) +Files: src/ex_docmd.c, src/testdir/test_excmd.vim, + src/testdir/Make_all.mak + +Patch 8.1.1747 +Problem: Compiler warning for unused variables. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/screen.c + +Patch 8.1.1748 (after 8.1.1737) +Problem: :args output is not aligned. +Solution: Output a line break after the last item in a row. +Files: src/version.c + +Patch 8.1.1749 +Problem: Coverity warns for using negative index. +Solution: Move using index inside "if". +Files: src/viminfo.c + +Patch 8.1.1750 +Problem: Depending on the terminal width :version may miss a line break. +Solution: Add a line break when needed. +Files: src/version.c + +Patch 8.1.1751 +Problem: When redrawing popups plines_win() may be called often. +Solution: Pass a cache to mouse_comp_pos(). +Files: src/ui.c, src/proto/ui.pro, src/beval.c, src/evalfunc.c, + src/popupwin.c + +Patch 8.1.1752 +Problem: Resizing hashtable is inefficient. +Solution: Avoid resizing when the final size is predictable. +Files: src/hashtab.c, src/proto/hashtab.pro, src/popupwin.c + +Patch 8.1.1753 +Problem: Use of popup window mask is inefficient. +Solution: Precompute and cache the mask. +Files: src/popupwin.c + +Patch 8.1.1754 (after 8.1.1753) +Problem: Build failure. +Solution: Add missing change to window struct. +Files: src/structs.h + +Patch 8.1.1755 +Problem: Leaking memory when using a popup window mask. +Solution: Free the cached mask. +Files: src/window.c + +Patch 8.1.1756 +Problem: Autocommand that splits window messes up window layout. +Solution: Disallow splitting a window while closing one. In ":all" give an + error when moving a window will not work. +Files: src/buffer.c, src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.1.1757 +Problem: Text added with appendbufline() to another buffer isn't displayed. +Solution: Update topline. (partly by Christian Brabandt, closes #4718) +Files: src/evalfunc.c, src/testdir/test_bufline.vim, + src/testdir/dumps/Test_appendbufline_1.dump + +Patch 8.1.1758 +Problem: Count of g$ not used correctly when text is not wrapped. +Solution: Do use the count. (Christian Brabandt, closes #4729, closes #4566) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.1.1759 +Problem: No mode char for terminal mapping from maparg(). +Solution: Check for TERMINAL mode. (closes #4735) +Files: src/getchar.c, src/testdir/test_maparg.vim + +Patch 8.1.1760 +Problem: Extra line break for wrapping output of :args. +Solution: Avoid the extra line break. (Daniel Hahler, closes #4737) +Files: src/version.c, src/testdir/test_arglist.vim + +Patch 8.1.1761 +Problem: Filetype "vuejs" causes problems for some users. +Solution: Rename to "vue". +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.1762 +Problem: Some filetype rules are in the wrong place. +Solution: Move to the right place. Add a few more tests. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.1763 +Problem: Evalfunc.c is still too big. +Solution: Move dict and list functions to a better place. +Files: src/evalfunc.c, src/dict.c, src/proto/dict.pro, src/list.c, + src/proto/list.pro, src/blob.c, src/proto/blob.pro + +Patch 8.1.1764 +Problem: ":browse oldfiles" is not tested. +Solution: Add a test. +Files: src/testdir/test_viminfo.vim + +Patch 8.1.1765 +Problem: get(func, dict, def) does not work properly. +Solution: Handle NULL dict better. (Takuya Fujiwara, closes #4734) +Files: src/evalfunc.c, src/testdir/test_getvar.vim, + src/testdir/test_partial.vim + +Patch 8.1.1766 +Problem: Code for writing session file is spread out. +Solution: Put it in one file. (Yegappan Lakshmanan, closes #4728) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/eval.c, src/ex_docmd.c, src/misc2.c, src/proto.h, + src/proto/eval.pro, src/proto/misc2.pro, src/proto/session.pro, + src/session.c + +Patch 8.1.1767 +Problem: FEAT_SESSION defined separately. +Solution: Make FEAT_SESSION depend on FEAT_EVAL. +Files: src/feature.h, src/session.c, src/evalfunc.c, src/ex_docmd.c, + src/gui_gtk_x11.c, src/proto.h + +Patch 8.1.1768 +Problem: Man plugin changes setting in current window. +Solution: Set options later. (Jason Franklin) +Files: runtime/ftplugin/man.vim, src/testdir/test_man.vim + +Patch 8.1.1769 +Problem: 'shellslash' is also used for completion. +Solution: Add the 'completeslash' option. (Yasuhiro Matsumoto, closes #3612) +Files: runtime/doc/options.txt, src/ex_getln.c, src/insexpand.c, + src/option.c, src/option.h, src/structs.h, + src/testdir/test_ins_complete.vim + +Patch 8.1.1770 +Problem: Cannot get the window ID of the popup preview window. +Solution: Add popup_getpreview(). +Files: src/evalfunc.c, src/popupwin.c, src/proto/popupwin.pro, + runtime/doc/eval.txt, runtime/doc/popup.txt, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump + +Patch 8.1.1771 +Problem: Options test fails on MS-Windows. +Solution: Add correct and incorrect values for 'completeslash'. +Files: src/testdir/gen_opt_test.vim + +Patch 8.1.1772 +Problem: Options test still fails on MS-Windows. +Solution: Check buffer-local value of 'completeslash'. +Files: src/option.c + +Patch 8.1.1773 +Problem: The preview popup window may be too far to the right. +Solution: Keep it inside the screen. Also keep the close button and + scrollbar visible if possible. +Files: src/popupwin.c, src/proto/popupwin.pro, src/ex_cmds.c, + src/screen.c, src/vim.h, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_1.dump, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump + +Patch 8.1.1774 +Problem: Test is silently skipped. +Solution: Throw "Skipped". +Files: src/testdir/test_ins_complete.vim + +Patch 8.1.1775 +Problem: Error message may be empty in filetype test. +Solution: Use v:exception instead. (Daniel Hahler, closes #4744) +Files: src/testdir/test_filetype.vim + +Patch 8.1.1776 +Problem: Text added with a job to another buffer isn't displayed. +Solution: Update topline after adding a line. (closes #4745) +Files: src/channel.c, src/testdir/test_channel.vim, src/testdir/check.vim, + src/testdir/dumps/Test_job_buffer_scroll_1.dump + +Patch 8.1.1777 +Problem: Useless checks for job feature in channel test. +Solution: Remove the checks. Remove ch_log() calls. +Files: src/testdir/test_channel.vim + +Patch 8.1.1778 +Problem: Not showing the popup window right border is confusing. +Solution: Also show the border when there is no close button. (closes #4747) +Files: src/popupwin.c, src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.1.1779 +Problem: Not showing the popup window right border is confusing. +Solution: Also show the border when 'wrap' is off. (closes #4747) +Files: src/popupwin.c, src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.1.1780 +Problem: Warning for file no longer available is repeated every time Vim is + focused. (Brian Armstrong) +Solution: Only give the message once. (closes #4748) +Files: src/fileio.c + +Patch 8.1.1781 +Problem: Amiga: no builtin OS readable version info. +Solution: Add a "version" variable. (Ola S枚der, closes #4753) +Files: src/os_amiga.c + +Patch 8.1.1782 +Problem: MS-Windows: system() has temp file error with 'noshelltemp'. +Solution: Check s_dont_use_vimrun. (Ken Takata, closes #4754) +Files: src/os_win32.c + +Patch 8.1.1783 +Problem: MS-Windows: compiler test may fail when using %:S. +Solution: Reset 'shellslash'. +Files: src/testdir/test_compiler.vim + +Patch 8.1.1784 +Problem: MS-Windows: resolve() does not work if serial nr duplicated. +Solution: Use another method to get the full path. (Ken Takata, closes #4661) +Files: src/os_mswin.c + +Patch 8.1.1785 +Problem: Map functionality mixed with character input. +Solution: Move the map functionality to a separate file. (Yegappan + Lakshmanan, closes #4740) Graduate the +localmap feature. +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/buffer.c, src/feature.h, src/evalfunc.c, src/ex_docmd.c, + src/getchar.c, src/map.c, src/proto.h, src/proto/getchar.pro, + src/proto/map.pro, src/version.c, src/structs.h + +Patch 8.1.1786 +Problem: Double click in popup scrollbar starts selection. +Solution: Ignore the double click. +Files: src/ui.c, src/popupwin.c, src/proto/popupwin.pro + +Patch 8.1.1787 +Problem: Cannot resize a popup window. +Solution: Allow for resizing by dragging the lower right corner. +Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h, src/vim.h, + src/ui.c src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_drag_01.dump, + src/testdir/dumps/Test_popupwin_drag_02.dump, + src/testdir/dumps/Test_popupwin_drag_03.dump, + src/testdir/dumps/Test_popupwin_previewpopup_1.dump, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump + +Patch 8.1.1788 (after 8.1.1787) +Problem: missing changes in proto file +Solution: Update proto file. +Files: src/proto/popupwin.pro + +Patch 8.1.1789 +Problem: Cannot see file name of preview popup window. +Solution: Add the file name as the title. +Files: src/ex_cmds.c, src/popupwin.c, src/proto/popupwin.pro, + src/fileio.c, + src/testdir/dumps/Test_popupwin_previewpopup_1.dump, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump, + src/testdir/dumps/Test_popupwin_previewpopup_5.dump + +Patch 8.1.1790 +Problem: :mkvimrc is not tested. +Solution: Add a test. +Files: src/testdir/test_mksession.vim + +Patch 8.1.1791 +Problem: 'completeslash' also applies to globpath(). +Solution: Add the WILD_IGNORE_COMPLETESLASH flag. (test by Yasuhiro + Matsumoto, closes #4760) +Files: src/testdir/test_ins_complete.vim, src/ex_getln.c, src/evalfunc.c, + src/vim.h + +Patch 8.1.1792 +Problem: The vgetorpeek() function is too long. +Solution: Split off the part that handles mappings. +Files: src/getchar.c + +Patch 8.1.1793 +Problem: Mixed comment style in globals. +Solution: Use // comments where appropriate. +Files: src/globals.h + +Patch 8.1.1794 (after 8.1.1792) +Problem: Tests are flaky. +Solution: Undo the change to vgetorpeek(). +Files: src/getchar.c + +Patch 8.1.1795 +Problem: No syntax HL after splitting windows with :bufdo. (Yasuhiro + Matsumoto) +Solution: Trigger Syntax autocommands in buffers that are active. + (closes #4761) +Files: src/vim.h, src/option.c, src/ex_cmds2.c, + src/testdir/test_syntax.vim + +Patch 8.1.1796 +Problem: :argdo is not tested +Solution: Add a test. +Files: src/testdir/test_arglist.vim + +Patch 8.1.1797 (after 8.1.1794) +Problem: The vgetorpeek() function is too long. +Solution: Split off the part that handles mappings, with fix. +Files: src/getchar.c + +Patch 8.1.1798 +Problem: Warning for unused variable in tiny version. (Tony Mechelynck) +Solution: Move inside #ifdef. Reformat code. +Files: src/getchar.c + +Patch 8.1.1799 +Problem: Cannot avoid mapping for a popup window. +Solution: Add the "mapping" property, default TRUE. +Files: runtime/doc/popup.txt, src/getchar.c, src/popupwin.c, src/vim.h, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + +Patch 8.1.1800 +Problem: Function call functions have too many arguments. +Solution: Pass values in a funcexe_T struct. +Files: src/eval.c, src/structs.h, src/userfunc.c, src/proto/userfunc.pro, + src/list.c, src/regexp.c, src/terminal.c, src/change.c, + src/ex_cmds2.c, src/popupwin.c, src/channel.c + +Patch 8.1.1801 +Problem: Cannot build without the +eval feature. +Solution: Always define funcexe_T. +Files: src/structs.h + +Patch 8.1.1802 +Problem: Missing change to call_callback(). +Solution: Add missing change. +Files: src/sound.c + +Patch 8.1.1803 +Problem: All builtin functions are global. +Solution: Add the method call operator ->. Implemented for a limited number + of functions. +Files: runtime/doc/eval.txt, src/eval.c, src/structs.h, src/userfunc.c, + src/globals.h, src/evalfunc.c, src/proto/evalfunc.pro, + src/testdir/test_method.vim, src/testdir/Make_all.mak + +Patch 8.1.1804 +Problem: No test for display updating without a scroll region. +Solution: Add a test. +Files: src/testdir/test_display.vim, src/testdir/check.vim, + src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_scroll_no_region_1.dump, + src/testdir/dumps/Test_scroll_no_region_2.dump, + src/testdir/dumps/Test_scroll_no_region_3.dump + +Patch 8.1.1805 +Problem: Au_did_filetype is declared twice. +Solution: Remove it from autocmd.c. (closes #4767) +Files: src/globals.h, src/autocmd.c + +Patch 8.1.1806 +Problem: Test for display updating doesn't check without statusline. +Solution: Add screenshots without a status line. +Files: src/testdir/test_display.vim, + src/testdir/dumps/Test_scroll_no_region_4.dump, + src/testdir/dumps/Test_scroll_no_region_5.dump, + src/testdir/dumps/Test_scroll_no_region_6.dump + +Patch 8.1.1807 +Problem: More functions can be used as a method. +Solution: Add append(), appendbufline(), assert_equal(), etc. + Also add the :eval command. +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, src/evalfunc.c, + src/testdir/test_method.vim, src/ex_cmds.h, src/ex_eval.c, + src/proto/ex_eval.pro, src/ex_cmdidxs.h + +Patch 8.1.1808 +Problem: Build failure for tiny version. +Solution: Define ex_eval to ex_ni. Clean up the ordering a bit. +Files: src/ex_docmd.c + +Patch 8.1.1809 +Problem: More functions can be used as a method. +Solution: Add has_key(), split(), str2list(), etc. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_method.vim, + src/testdir/test_diffmode.vim, src/testdir/test_syntax.vim, + src/testdir/test_system.vim + +Patch 8.1.1810 +Problem: Popup_getoptions() is missing an entry for "mapping". +Solution: Add the entry. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1811 +Problem: Popup window color cannot be set to "Normal". +Solution: Check for non-empty 'wincolor' instead of zero attribute. + (closes #4772) +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.1.1812 +Problem: Reading a truncated undo file hangs Vim. +Solution: Check for reading EOF. (closes #4769) +Files: src/undo.c, src/testdir/test_undo.vim + +Patch 8.1.1813 +Problem: ATTENTION prompt for a preview popup window. +Solution: Close the popup window if aborting the buffer load. Avoid getting + the ATTENTION dialog. +Files: src/tag.c, src/ex_cmds.c, src/memline.c, src/vim.h, + runtime/doc/windows.txt + +Patch 8.1.1814 +Problem: A long title in a popup window overflows. +Solution: Truncate the title. (closes #4770) +Files: src/testdir/test_popupwin.vim, src/popupwin.c, + src/testdir/dumps/Test_popupwin_longtitle_1.dump, + src/testdir/dumps/Test_popupwin_longtitle_2.dump + +Patch 8.1.1815 +Problem: Duplicating info for internal functions. +Solution: Use one table to list internal functions. +Files: src/evalfunc.c + +Patch 8.1.1816 +Problem: Cannot use a user defined function as a method. +Solution: Pass the base as the first argument to the user defined function + after "->". (partly by FUJIWARA Takuya) +Files: src/eval.c, src/userfunc.c, src/testdir/test_user_func.vim, + src/testdir/test_autoload.vim, + src/testdir/sautest/autoload/foo.vim + +Patch 8.1.1817 +Problem: Github contribution text is incomplete. +Solution: Update the text. +Files: CONTRIBUTING.md + +Patch 8.1.1818 +Problem: Unused variable. +Solution: Remove the variable. (Mike Williams) +Files: src/sound.c + +Patch 8.1.1819 +Problem: :pedit does not work with a popup preview window. +Solution: Avoid aborting with an error. (fixes #4777) Also double check + that after prepare_tagpreview() the current window is not a + popup window. +Files: src/ex_docmd.c, src/popupmenu.c, src/search.c, src/tag.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_6.dump, + src/testdir/dumps/Test_popupwin_previewpopup_7.dump, + src/testdir/dumps/Test_popupwin_previewpopup_8.dump + +Patch 8.1.1820 +Problem: Using expr->FuncRef() does not work. +Solution: Make FuncRef work as a method. +Files: src/eval.c, src/userfunc.c, src/testdir/test_method.vim + +Patch 8.1.1821 +Problem: No test for wrong number of method arguments. +Solution: Add a test. +Files: src/testdir/test_method.vim + +Patch 8.1.1822 +Problem: Confusing error message when range is not allowed. +Solution: With ADDR_NONE give e_norange. Change e_invaddr to e_invrange for + consistency. +Files: src/ex_docmd.c, src/globals.h, src/testdir/test_excmd.vim + +Patch 8.1.1823 +Problem: Command line history code is spread out. +Solution: Put the code in a new file. (Yegappan Lakshmanan, closes #4779) + Also graduate the +cmdline_hist feature. +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/cmdhist.c, src/ex_getln.c, src/proto.h, src/proto/cmdhist.pro, + src/proto/ex_getln.pro, src/version.c, src/evalfunc.c, + src/ex_cmds.c, src/ex_docmd.c, src/misc2.c, src/normal.c, + src/ops.c, src/option.c, src/search.c, src/tag.c, src/usercmd.c, + src/viminfo.c, src/feature.h, src/globals.h + +Patch 8.1.1824 +Problem: Crash when correctly spelled word is very long. (Ben Kraft) +Solution: Check word length before copying. (closes #4778) +Files: src/spell.c, src/testdir/test_spell.vim + +Patch 8.1.1825 +Problem: Allocating more memory than needed for extended structs. +Solution: Use offsetof() instead of sizeof(). (Dominique Pelle, + closes #4785) +Files: src/dict.c + +Patch 8.1.1826 +Problem: Tests use hand coded feature and option checks. +Solution: Use the commands from check.vim in more tests. +Files: src/testdir/check.vim, src/testdir/shared.vim, + src/testdir/test_autochdir.vim, src/testdir/test_autocmd.vim, + src/testdir/test_balloon.vim, src/testdir/test_breakindent.vim, + src/testdir/test_bufline.vim, src/testdir/test_cdo.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_conceal.vim, src/testdir/test_cscope.vim, + src/testdir/test_debugger.vim, src/testdir/test_filechanged.vim, + src/testdir/test_fold.vim, src/testdir/test_functions.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim, + src/testdir/test_highlight.vim, src/testdir/test_mapping.vim, + src/testdir/test_match.vim, src/testdir/test_memory_usage.vim, + src/testdir/test_options.vim, src/testdir/test_paste.vim, + src/testdir/test_popup.vim, src/testdir/test_search.vim, + src/testdir/test_signals.vim, src/testdir/test_startup.vim, + src/testdir/test_syntax.vim, src/testdir/test_termcodes.vim, + src/testdir/test_terminal.vim, src/testdir/test_timers.vim, + src/testdir/test_vimscript.vim + +Patch 8.1.1827 +Problem: Allocating more memory than needed for extended structs. +Solution: Use offsetof() instead of sizeof(). (Dominique Pelle, + closes #4786) +Files: src/getchar.c, src/regexp.c, src/sign.c, src/structs.h, + src/syntax.c, src/textprop.c, src/userfunc.c + +Patch 8.1.1828 +Problem: Not strict enough checking syntax of method invocation. +Solution: Check there is no white space inside ->method(. +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_method.vim + +Patch 8.1.1829 +Problem: Difference in screenshots. +Solution: Update screenshots. Change checks in a few more tests. + (closes #4789) +Files: src/testdir/test_balloon_gui.vim, + src/testdir/test_shortpathname.vim, + src/testdir/test_windows_home.vim, + src/testdir/dumps/Test_popupwin_previewpopup_1.dump, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump, + src/testdir/dumps/Test_popupwin_previewpopup_5.dump + +Patch 8.1.1830 +Problem: Travis does not report error when tests fail. +Solution: Explicitly do "exit 1". +Files: .travis.yml + +Patch 8.1.1831 +Problem: Confusing skipped message. +Solution: Drop "run" from "run start the GUI". +Files: src/testdir/check.vim + +Patch 8.1.1832 +Problem: Win_execute() does not work in other tab. (Rick Howe) +Solution: Take care of the tab. (closes #4792) +Files: src/testdir/test_execute_func.vim, src/evalfunc.c, src/window.c, + src/proto/window.pro + +Patch 8.1.1833 +Problem: Allocating a bit too much when spellbadword() does not find a bad + word. +Solution: Reset "len" when going to the next word. (Daniel Hahler, + closes #4788) +Files: src/evalfunc.c + +Patch 8.1.1834 +Problem: Cannot use a lambda as a method. +Solution: Implement ->{lambda}(). (closes #4768) +Files: runtime/doc/eval.txt, src/eval.c, src/testdir/test_method.vim + +Patch 8.1.1835 +Problem: Cannot use printf() as a method. +Solution: Pass the base as the second argument to printf(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_method.vim + +Patch 8.1.1836 +Problem: Inaccurate memory estimate for Amiga-like OS. +Solution: Adjust #ifdef for AvailMem(). (Ola S枚der, closes #4797) +Files: src/os_amiga.c + +Patch 8.1.1837 +Problem: Popup test fails if clipboard is supported but not working. +Solution: Add the "clipboard_working" feature. Also use Check commands + instead of "if" and "throw". And remove stray ch_logfile(). +Files: src/testdir/test_popupwin.vim, src/evalfunc.c, + runtime/doc/eval.txt + +Patch 8.1.1838 +Problem: There is :spellwrong and :spellgood but not :spellrare. +Solution: Add :spellrare. (Martin Tournoij, closes #4291) +Files: runtime/doc/spell.txt, src/ex_cmdidxs.h, src/ex_cmds.h, + src/normal.c, src/proto/spellfile.pro, src/spellfile.c, + src/spell.h, src/testdir/Make_all.mak, + src/testdir/test_normal.vim, src/testdir/test_spellfile.vim + +Patch 8.1.1839 +Problem: Insufficient info when test fails because of screen size. +Solution: Report the detected screen size. +Files: src/testdir/runtest.vim + +Patch 8.1.1840 +Problem: Testing: WorkingClipboard() is not accurate. +Solution: Check feature clipboard_working instead. +Files: src/testdir/shared.vim, src/testdir/test_paste.vim, + src/testdir/test_quotestar.vim, src/testdir/test_termcodes.vim + +Patch 8.1.1841 +Problem: No test for Ex shift commands. +Solution: Add a test. (Dominique Pelle, closes #4801) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_shift.vim + +Patch 8.1.1842 +Problem: Test listed as flaky should no longer be flaky. +Solution: Remove Test_popup_and_window_resize from the list of flaky tests. + (Daniel Hahler, close #4807) +Files: src/testdir/runtest.vim + +Patch 8.1.1843 +Problem: Might be freeing memory that was not allocated. +Solution: Have next_fenc() set the fenc_alloced flag. (closes #4804) +Files: src/fileio.c + +Patch 8.1.1844 +Problem: Buffer no longer unloaded when adding text properties to it. +Solution: Do not create the memfile. (closes #4808) +Files: runtime/doc/textprop.txt, src/testdir/test_textprop.vim, + src/textprop.c + +Patch 8.1.1845 +Problem: May use NULL pointer when running out of memory. +Solution: Do not clear popup buffers when NULL. (closes #4802) +Files: src/screen.c + +Patch 8.1.1846 +Problem: Inconsistently using GetVimCommand() and v:progpath. (Daniel + Hahler) +Solution: Use GetVimCommand(). (closes #4806) +Files: src/testdir/test_autocmd.vim, src/testdir/test_gui.vim, + src/testdir/test_normal.vim, src/testdir/test_profile.vim, + src/testdir/test_suspend.vim, src/testdir/test_system.vim, + src/testdir/test_vimscript.vim + +Patch 8.1.1847 +Problem: Suspend test is failing. +Solution: Do not use GetVimCommandClean(). +Files: src/testdir/test_suspend.vim + +Patch 8.1.1848 +Problem: 'langmap' is not used for CTRL-W command in terminal. +Solution: Push the command in the typeahead buffer instead of the stuff + buffer. (closes #4814) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.1849 +problem: Some insert complete functions in the wrong file. +Solution: Move complete functions to insexpand.c. (Yegappan Lakshmanan, + closes #4815) +Files: src/evalfunc.c, src/insexpand.c, src/proto/insexpand.pro + +Patch 8.1.1850 +Problem: Focus may remain in popup window. +Solution: Change focus if needed. +Files: src/popupmnu.c + +Patch 8.1.1851 +Problem: Crash when sound_playfile() callback plays sound. +Solution: Invoke callback later from event loop. +Files: src/testdir/test_sound.vim, src/ui.c, src/sound.c, + src/proto/sound.pro, src/feature.h, src/os_unix.c, src/ex_docmd.c, + src/misc2.c + +Patch 8.1.1852 +Problem: Timers test is flaky. +Solution: Accept a larger count. Add test to list of flaky tests. +Files: src/testdir/test_timers.vim, src/testdir/runtest.vim + +Patch 8.1.1853 +Problem: Timers test is still flaky. +Solution: Compute the time to sleep more accurately. +Files: src/ex_docmd.c + +Patch 8.1.1854 +Problem: Now another timer test is flaky. +Solution: Add test to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.1855 +Problem: Another failing timer test. +Solution: Assert that timers are finished by the end of the test. Rename + test functions to make them easier to find. +Files: src/testdir/test_timers.vim, src/testdir/runtest.vim + +Patch 8.1.1856 +Problem: popup preview test fails sometimes. (Christian Brabandt) +Solution: Clear the command line. +Files: src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_6.dump + +Patch 8.1.1857 +Problem: Cannot use modifier with multibyte character. +Solution: Allow using a multibyte character, although it doesn't work + everywhere. +Files: src/misc2.c, src/testdir/test_mapping.vim + +Patch 8.1.1858 +Problem: Test for multibyte mapping fails on some systems. +Solution: Test in another way. +Files: src/testdir/test_mapping.vim + +Patch 8.1.1859 +Problem: Timer test sometimes fails on Mac. +Solution: Show more info when it fails. +Files: src/testdir/test_timers.vim + +Patch 8.1.1860 +Problem: Map timeout test is flaky. +Solution: Add test to list of flaky tests. Increase timeout. +Files: src/testdir/runtest.vim, src/testdir/test_mapping.vim + +Patch 8.1.1861 +Problem: Only some assert functions can be used as a method. +Solution: Allow using most assert functions as a method. +Files: runtime/doc/testing.txt, src/evalfunc.c, + src/testdir/test_assert.vim + +Patch 8.1.1862 +Problem: Coverity warns for not using return value. +Solution: Add "(void)" to avoid the warning. +Files: src/normal.c + +Patch 8.1.1863 +Problem: Confusing error when using a builtin function as method while it + does not support that. +Solution: Add a specific error message. +Files: src/vim.h, src/evalfunc.c, src/userfunc.c, + src/testdir/test_method.vim + +Patch 8.1.1864 +Problem: Still a timer test that is flaky on Mac. +Solution: Adjust the sleep times. +Files: src/testdir/test_timers.vim + +Patch 8.1.1865 +Problem: Spellrare and spellrepall in the wrong order. +Solution: Put spellrare below spellrepall. (closes #4820) +Files: runtime/doc/spell.txt, src/ex_cmds.h + +Patch 8.1.1866 +Problem: Modeless selection in GUI does not work properly. +Solution: Avoid going beyond the end of the line. (closes #4783) +Files: src/ui.c + +Patch 8.1.1867 +Problem: Still a timer test that is flaky on Mac. +Solution: Loop with a sleep instead of one fixed sleep. +Files: src/testdir/test_timers.vim + +Patch 8.1.1868 +Problem: Multibyte characters in 'listchars' don't work correctly if + 'linebreak' is also enabled. (Martin Tournoij) +Solution: Make it work correctly. (Christian Brabandt, closes #4822, + closes #4812) +Files: src/screen.c, src/testdir/test_listchars.vim + +Patch 8.1.1869 +Problem: Code for the argument list is spread out. +Solution: Put argument list code in arglist.c. (Yegappan Lakshmanan, + closes #4819) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/arglist.c, src/buffer.c, src/evalfunc.c, src/ex_cmds2.c, + src/ex_docmd.c, src/proto.h, src/proto/arglist.pro, + src/proto/buffer.pro, src/proto/ex_cmds2.pro, + src/proto/ex_docmd.pro + +Patch 8.1.1870 +Problem: Using :pedit from a help file sets the preview window to help + filetype. (Wang Shidong) +Solution: Do not set "keep_help_flag". (closes #3536) +Files: src/ex_docmd.c, src/testdir/test_window_cmd.vim + +Patch 8.1.1871 (after 8.1.1866) +Problem: Modeless selection in GUI still not correct. +Solution: Fix max_col. +Files: src/ui.c + +Patch 8.1.1872 +Problem: When Vim exits because of a signal, VimLeave is not triggered. + (Daniel Hahler) +Solution: Unblock autocommands when triggering VimLeave. (closes #4818) +Files: src/main.c + +Patch 8.1.1873 (after 8.1.1872) +Problem: Cannot build tiny version. +Solution: Remove #ifdef for is_autocmd_blocked(). +Files: src/autocmd.c + +Patch 8.1.1874 +Problem: Modeless selection in popup window overlaps scrollbar. +Solution: Subtract scrollbar from max_col. (closes #4773) +Files: src/ui.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_select_01.dump + +Patch 8.1.1875 +Problem: Cannot get size and position of the popup menu. +Solution: Add pum_getpos(). (Ben Jackson, closes #4827) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_popup.vim + +Patch 8.1.1876 +Problem: proto file missing from distribution +Solution: Add the file. +Files: Filelist + +Patch 8.1.1877 +Problem: Graduated features scattered. +Solution: Put graduated and obsolete features together. +Files: src/feature.h + +Patch 8.1.1878 +Problem: Negative float before method not parsed correctly. +Solution: Apply "!" and "-" in front of expression before using ->. +Files: src/eval.c, src/proto/eval.pro, src/userfunc.c, + src/testdir/test_method.vim + +Patch 8.1.1879 +Problem: More functions can be used as methods. +Solution: Make float functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_float_func.vim + +Patch 8.1.1880 +Problem: Cannot show extra info for completion in a popup window. +Solution: Add the "popup" entry in 'completeopt'. +Files: runtime/doc/options.txt, src/popupmnu.c, src/ex_cmds.c, + src/proto/ex_cmds.pro, src/ex_docmd.c, src/search.c, src/tag.c, + src/popupwin.c, src/proto/popupwin.pro, src/option.c, src/vim.h, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_1.dump, + src/testdir/dumps/Test_popupwin_infopopup_2.dump, + src/testdir/dumps/Test_popupwin_infopopup_3.dump, + src/testdir/dumps/Test_popupwin_infopopup_4.dump + +Patch 8.1.1881 +Problem: Popup window test fails in some configurations. +Solution: Check that screendumps can be made. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.1882 +Problem: Cannot specify properties of the info popup window. +Solution: Add the 'completepopup' option. Default to PmenuSel highlight. +Files: runtime/doc/options.txt, runtime/doc/insert.txt, src/option.c, + src/popupwin.c, src/proto/popupwin.pro, src/option.h, + src/testdir/test_popupwin.vim, src/screen.c, + src/testdir/dumps/Test_popupwin_infopopup_1.dump, + src/testdir/dumps/Test_popupwin_infopopup_2.dump, + src/testdir/dumps/Test_popupwin_infopopup_3.dump + +Patch 8.1.1883 +Problem: Options test fails. +Solution: Add entry for 'completepopup'. +Files: src/testdir/gen_opt_test.vim + +Patch 8.1.1884 +Problem: Cannot use mouse scroll wheel in popup in Insert mode. Mouse + clicks in popup close the popup menu. +Solution: Check if the mouse is in a popup window. Do not let mouse events + close the popup menu. (closes #4544) +Files: src/edit.c, src/popupmnu.c, src/insexpand.c + +Patch 8.1.1885 +Problem: Comments in libvterm are inconsistent. +Solution: Use // comments. Also update the table of combining characters. +Files: src/libvterm/bin/unterm.c, src/libvterm/bin/vterm-ctrl.c, + src/libvterm/bin/vterm-dump.c, src/libvterm/include/vterm.h, + src/libvterm/include/vterm_keycodes.h, + src/libvterm/src/encoding.c, src/libvterm/src/keyboard.c, + src/libvterm/src/mouse.c, src/libvterm/src/parser.c, + src/libvterm/src/pen.c, src/libvterm/src/rect.h, + src/libvterm/src/state.c, src/libvterm/src/unicode.c, + src/libvterm/src/utf8.h, src/libvterm/src/vterm.c, + src/libvterm/src/vterm_internal.h, src/libvterm/src/termscreen.c + +Patch 8.1.1886 +Problem: Command line expansion code is spread out. +Solution: Move the code to cmdexpand.c. (Yegappan Lakshmanan, closes #4831) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/cmdexpand.c, src/evalfunc.c, src/ex_getln.c, src/proto.h, + src/proto/cmdexpand.pro, src/proto/ex_getln.pro, src/structs.h + +Patch 8.1.1887 +Problem: The +cmdline_compl feature is not in the tiny version. +Solution: Graduate the +cmdline_compl feature. +Files: src/cmdexpand.c, src/arglist.c, src/autocmd.c, src/buffer.c, + src/cmdhist.c, src/eval.c, src/evalfunc.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/feature.h, src/highlight.c, + src/if_cscope.c, src/map.c, src/menu.c, src/misc1.c, src/misc2.c, + src/option.c, src/sign.c, src/syntax.c, src/tag.c, src/term.c, + src/usercmd.c, src/userfunc.c, src/version.c, src/globals.h, + src/option.h, src/structs.h, runtime/doc/cmdline.txt + +Patch 8.1.1888 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_vimscript.vim, src/testdir/test_balloon_gui.vim, + src/testdir/test_popup.vim, src/testdir/test_functions.vim, + src/testdir/test_hide.vim, src/testdir/test_arglist.vim + +Patch 8.1.1889 +Problem: Coverity warns for using a NULL pointer. +Solution: Use zero for column if pos is NULL. +Files: src/netbeans.c + +Patch 8.1.1890 +Problem: Ml_get error when deleting fold marker. +Solution: Check that the line number is not below the last line. Adjust the + fold when deleting the empty line. (Christian Brabandt, + closes #4834) +Files: src/fold.c, src/normal.c, src/testdir/test_fold.vim + +Patch 8.1.1891 +Problem: Functions used in one file are global. +Solution: Add "static". (Yegappan Lakshmanan, closes #4840) +Files: src/autocmd.c, src/buffer.c, src/change.c, src/channel.c, + src/charset.c, src/dict.c, src/digraph.c, src/eval.c, + src/ex_cmds.c, src/ex_eval.c, src/fileio.c, src/findfile.c, + src/getchar.c, src/gui.c, src/indent.c, src/json.c, src/list.c, + src/mark.c, src/menu.c, src/message.c, src/misc1.c, src/misc2.c, + src/ops.c, src/option.c, src/popupwin.c, src/profiler.c, + src/proto/autocmd.pro, src/proto/buffer.pro, src/proto/change.pro, + src/proto/channel.pro, src/proto/charset.pro, src/proto/dict.pro, + src/proto/eval.pro, src/proto/ex_cmds.pro, src/proto/ex_eval.pro, + src/proto/fileio.pro, src/proto/findfile.pro, + src/proto/getchar.pro, src/proto/gui.pro, src/proto/indent.pro, + src/proto/json.pro, src/proto/list.pro, src/proto/mark.pro, + src/proto/menu.pro, src/proto/message.pro, src/proto/misc1.pro, + src/proto/misc2.pro, src/proto/ops.pro, src/proto/option.pro, + src/proto/popupwin.pro, src/proto/profiler.pro, + src/proto/quickfix.pro, src/proto/spell.pro, src/proto/term.pro, + src/proto/textprop.pro, src/proto/ui.pro, src/proto/undo.pro, + src/proto/window.pro, src/quickfix.c, src/regexp.c, src/spell.c, + src/term.c, src/textprop.c, src/ui.c, src/undo.c, src/window.c + +Patch 8.1.1892 +Problem: Missing index entry and option menu for 'completepopup'. +Solution: Add the entries. Adjust #ifdefs to avoid dead code. +Files: runtime/doc/quickref.txt, runtime/optwin.vim, src/option.c, + src/option.h, src/popupwin.c + +Patch 8.1.1893 +Problem: Script to summarize test results can be improved. +Solution: Use "silent" for substitute to avoid reporting number of matches. + Remove duplicate "set nocp". (Daniel Hahler, closes #4845) +Files: src/testdir/summarize.vim + +Patch 8.1.1894 +Problem: Not checking for out-of-memory of autoload_name(). +Solution: Check for NULL. (Dominique Pelle, closes #4846) +Files: src/eval.c + +Patch 8.1.1895 +Problem: Using NULL pointer when out of memory. +Solution: Bail out or skip the code using the pointer. (Zu-Ming Jiang, + closes #4805, closes #4843, closes #4939, closes #4844) +Files: src/message.c, src/highlight.c, src/buffer.c, src/ops.c + +Patch 8.1.1896 +Problem: Compiler warning for unused variable. +Solution: Add #ifdef. (John Marriott) Missing part of 8.1.1892. +Files: src/popupmnu.c + +Patch 8.1.1897 +Problem: May free memory twice when out of memory. +Solution: Check that backslash_halve_save() returns a different pointer. + (Dominique Pelle, closes #4847) +Files: src/cmdexpand.c, src/misc1.c + +Patch 8.1.1898 +Problem: Crash when out of memory during startup. +Solution: When out of memory message given during initialisation bail out. + (closes #4842) +Files: src/misc2.c + +Patch 8.1.1899 +Problem: sign_place() does not work as documented. +Solution: Make it accept line numbers like line(). (Yegappan Lakshmanan, + closes #4848) +Files: src/sign.c, src/testdir/test_signs.vim + +Patch 8.1.1900 +Problem: Sign test fails in the GUI. +Solution: Catch and ignore the exception. +Files: src/testdir/test_signs.vim + +Patch 8.1.1901 +Problem: The +insert_expand feature is not always available. +Solution: Graduate the +insert_expand feature. +Files: src/feature.h, src/autocmd.c, src/buffer.c, src/change.c, + src/charset.c, src/edit.c, src/evalfunc.c, src/ex_cmds.c, + src/ex_getln.c, src/getchar.c, src/gui.c, src/highlight.c, + src/indent.c, src/insexpand.c, src/misc2.c, src/move.c, + src/option.c, src/popupmnu.c, src/screen.c, src/search.c, + src/spell.c, src/tag.c, src/term.c, src/userfunc.c, src/version.c, + src/globals.h, src/option.h, src/proto.h, src/structs.h, + src/vim.h, runtime/doc/change.txt, runtime/doc/index.txt, + runtime/doc/insert.txt, runtime/doc/options.txt + +Patch 8.1.1902 +Problem: Cannot have an info popup without a border. +Solution: Add the "border" item to 'completepopup'. +Files: src/popupwin.c, src/proto/popupwin.pro, src/popupmnu.c, + src/testdir/test_popupwin.vim, src/testdir/gen_opt_test.vim, + src/testdir/dumps/Test_popupwin_infopopup_nb_1.dump + +Patch 8.1.1903 +Problem: Cannot build without the +eval feature. +Solution: Add missing #ifdefs +Files: src/insexpand.c, src/popupmnu.c + +Patch 8.1.1904 +Problem: Cannot have an info popup align with the popup menu. +Solution: Add the "align" item to 'completepopup'. +Files: src/popupwin.c, src/popupmnu.c, src/vim.h, + runtime/doc/insert.txt, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_align_1.dump, + src/testdir/dumps/Test_popupwin_infopopup_align_2.dump, + src/testdir/dumps/Test_popupwin_infopopup_align_3.dump + +Patch 8.1.1905 +Problem: Cannot set all properties of the info popup. +Solution: Add popup_findinfo(). Rename popup_getpreview() to + popup_findpreview(). +Files: src/popupwin.c, src/proto/popupwin.pro, src/ex_cmds.c, + src/ex_docmd.c, src/popupmnu.c, src/evalfunc.c, + runtime/doc/popup.txt, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_align_3.dump + +Patch 8.1.1906 +Problem: Info popup size is sometimes incorrect. +Solution: Compute the position and size after setting the content. +Files: src/popupmnu.c + +Patch 8.1.1907 +Problem: Wrong position for info popup with scrollbar on the left. +Solution: Take the scrollbar into account. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_5.dump, + src/testdir/dumps/Test_popupwin_cursorline_3.dump, + src/testdir/dumps/Test_popupwin_cursorline_4.dump, + src/testdir/dumps/Test_popupwin_cursorline_5.dump, + src/testdir/dumps/Test_popupwin_cursorline_6.dump, + src/testdir/dumps/Test_popupwin_menu_filter_1.dump, + src/testdir/dumps/Test_popupwin_menu_filter_2.dump, + src/testdir/dumps/Test_popupwin_menu_filter_3.dump, + src/testdir/dumps/Test_popupwin_menu_filter_4.dump + +Patch 8.1.1908 +Problem: Every popup window consumes a buffer number. +Solution: Recycle buffers only used for popup windows. Do not list popup + window buffers. +Files: src/popupwin.c, src/window.c, src/vim.h, src/buffer.c, + src/proto/buffer.pro, src/ex_docmd.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1909 +Problem: More functions can be used as methods. +Solution: Make a few more functions usable as a method. +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, src/evalfunc.c, + src/testdir/test_popupwin.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_bufline.vim, src/testdir/test_assert.vim + +Patch 8.1.1910 +Problem: Redrawing too much when toggling 'relativenumber'. +Solution: Only clear when 'signcolumn' is set to "number". (Yegappan + Lakshmanan, closes #4852) +Files: src/option.c + +Patch 8.1.1911 +Problem: More functions can be used as methods. +Solution: Make a few more functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test69.in, + src/testdir/test69.ok, src/testdir/test_functions.vim + +Patch 8.1.1912 +Problem: More functions can be used as methods. +Solution: Make channel and job functions usable as a method. +Files: runtime/doc/channel.txt, src/evalfunc.c, + src/testdir/test_channel.vim + +Patch 8.1.1913 +Problem: Not easy to compute the space on the command line. +Solution: Add v:echospace. (Daniel Hahler, closes #4732) +Files: src/vim.h, src/eval.c, src/option.c, runtime/doc/eval.txt, + src/testdir/test_messages.vim + +Patch 8.1.1914 +Problem: Command line expansion code is spread out. +Solution: Move set_one_cmd_context(). (Yegappan Lakshmanan, closes #4855) +Files: src/cmdexpand.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 8.1.1915 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim, src/testdir/test_cd.vim, + src/testdir/test_cindent.vim, src/testdir/test_match.vim, + src/testdir/test_popup.vim, src/testdir/test_cursor_func.vim, + src/testdir/test_method.vim, src/testdir/test_bufline.vim, + src/testdir/test_diffmode.vim + +Patch 8.1.1916 +Problem: Trying to allocate negative amount of memory when closing a popup. +Solution: Check the rows are not out of bounds. Don't finish a selection if + it was never started. +Files: src/ui.c + +Patch 8.1.1917 +Problem: Non-current window is not redrawn when moving popup. (Ben Jackson) +Solution: Redraw all windows under a popup. (closes #4860) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_drag_01.dump, + src/testdir/dumps/Test_popupwin_drag_02.dump, + src/testdir/dumps/Test_popupwin_drag_03.dump + +Patch 8.1.1918 +Problem: Redrawing popups is inefficient. +Solution: Fix the logic to compute what window lines to redraw. Make it + work below the last line. Remove redrawing all windows. +Files: src/popupwin.c + +Patch 8.1.1919 +Problem: Using current window option values when passing a buffer to + popup_create(). +Solution: Clear the window-local options. (closes #4857) +Files: src/option.c, src/proto/option.pro, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1920 +Problem: Cannot close a popup by the X when a filter consumes all events. +Solution: Check for a click on the close button before invoking filters. + (closes #4858) +Files: src/popupwin.c, src/proto/popupwin.pro, src/ui.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_close_04.dump, + src/testdir/dumps/Test_popupwin_close_05.dump + +Patch 8.1.1921 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_expand.vim, + src/testdir/test_expand_func.vim, src/testdir/test_expr.vim, + src/testdir/test_findfile.vim, src/testdir/test_fnameescape.vim, + src/testdir/test_fnamemodify.vim, src/testdir/test_fold.vim, + src/testdir/test_functions.vim, src/testdir/test_search.vim, + src/testdir/test_vimscript.vim + +Patch 8.1.1922 +Problem: In diff mode global operations can be very slow. +Solution: Do not call diff_redraw() many times, call it once when redrawing. + And also don't update folds multiple times. +Files: src/globals.h, src/diff.c, src/proto/diff.pro, src/screen.c, + src/fold.c + +Patch 8.1.1923 +Problem: Some source files are not in a normal encoding. +Solution: Convert hangulin.c from euc-kr to utf-8 and digraph.c from latin1 + to utf-8. (Daniel Hahler, closes #4731) +Files: src/hangulin.c, src/digraph.c, .travis.yml + +Patch 8.1.1924 +Problem: Using empty string for current buffer is unexpected. +Solution: Make the argument optional for bufname() and bufnr(). +Files: src/evalfunc.c, src/testdir/test_arglist.vim, runtime/doc/eval.txt + +Patch 8.1.1925 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufline.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_cd.vim, src/testdir/test_changelist.vim, + src/testdir/test_cmdline.vim, src/testdir/test_edit.vim, + src/testdir/test_environ.vim, src/testdir/test_file_perm.vim, + src/testdir/test_getvar.vim, src/testdir/test_jumplist.vim, + src/testdir/test_put.vim, src/testdir/test_stat.vim + +Patch 8.1.1926 +Problem: Cursorline not redrawn when putting a line above the cursor. +Solution: Redraw when the cursor line is below a change. (closes #4862) +Files: src/change.c + +Patch 8.1.1927 +Problem: Code for dealing with script files is spread out. +Solution: Move the code to scriptfile.c. (Yegappan Lakshmanan, closes #4861) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/cmdexpand.c, src/ex_cmds2.c, src/proto.h, + src/proto/ex_cmds2.pro, src/proto/scriptfile.pro, src/scriptfile.c + +Patch 8.1.1928 +Problem: Popup windows don't move with the text when making changes. +Solution: Add the 'textprop' property to the popup window options, position + the popup relative to a text property. (closes #4560) + No tests yet. +Files: runtime/doc/popup.txt, src/textprop.c, src/proto/textprop.pro, + src/structs.h, src/popupwin.c, src/proto/popupwin.pro, src/move.c, + src/proto/move.pro, src/window.c + +Patch 8.1.1929 +Problem: No tests for text property popup window. +Solution: Add a few tests. +Files: src/testdir/Make_all.mak, src/textprop.c, + src/testdir/test_popupwin_textprop.vim, + src/testdir/dumps/Test_popup_textprop_01.dump, + src/testdir/dumps/Test_popup_textprop_02.dump, + src/testdir/dumps/Test_popup_textprop_03.dump, + src/testdir/dumps/Test_popup_textprop_04.dump, + src/testdir/dumps/Test_popup_textprop_05.dump, + src/testdir/dumps/Test_popup_textprop_06.dump + +Patch 8.1.1930 +Problem: Cannot recognize .jsx and .tsx files. +Solution: Recognize them as javascriptreact and typescriptreact. + (closes #4830) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim, + runtime/syntax/javascriptreact.vim, + runtime/indent/javascriptreact.vim, + runtime/ftplugin/javascriptreact.vim + +Patch 8.1.1931 (after 8.1.1930) +Problem: Syntax test fails. +Solution: Add new javascriptreact type to completions. +Files: src/testdir/test_syntax.vim + +Patch 8.1.1932 +Problem: Ml_get errors after using append(). (Alex Genco) +Solution: Do not update the cursor twice. (closes #1737) +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.1.1933 +Problem: The eval.c file is too big. +Solution: Move code related to variables to evalvars.c. (Yegappan + Lakshmanan, closes #4868) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/eval.c, src/evalfunc.c, src/evalvars.c, src/globals.h, + src/proto.h, src/proto/eval.pro, src/proto/evalvars.pro, src/vim.h + +Patch 8.1.1934 +Problem: Not enough tests for text property popup window. +Solution: Add a few more tests. +Files: src/popupwin.c, src/testdir/test_popupwin_textprop.vim, + src/testdir/dumps/Test_popup_textprop_corn_1.dump, + src/testdir/dumps/Test_popup_textprop_corn_2.dump, + src/testdir/dumps/Test_popup_textprop_corn_3.dump, + src/testdir/dumps/Test_popup_textprop_corn_4.dump + +Patch 8.1.1935 (after 8.1.1934) +Problem: Test for text property popup window is flaky. +Solution: Remove the undo message +Files: src/testdir/test_popupwin_textprop.vim, + src/testdir/dumps/Test_popup_textprop_corn_4.dump + +Patch 8.1.1936 +Problem: Not enough tests for text property popup window. +Solution: Add a few more tests. Make negative offset work. Close all + popups when window closes. +Files: src/popupwin.c, src/testdir/test_popupwin_textprop.vim, + src/testdir/dumps/Test_popup_textprop_07.dump, + src/testdir/dumps/Test_popup_textprop_off_1.dump, + src/testdir/dumps/Test_popup_textprop_off_2.dump, + src/testdir/dumps/Test_popup_textprop_corn_5.dump, + src/testdir/dumps/Test_popup_textprop_corn_6.dump + +Patch 8.1.1937 (after 8.1.1930) +Problem: Errors when using javascriptreact. +Solution: Use ":runtime" instead of ":source". (closes #4875) +Files: runtime/syntax/javascriptreact.vim, + runtime/indent/javascriptreact.vim, + runtime/ftplugin/javascriptreact.vim + +Patch 8.1.1938 +Problem: May crash when out of memory. +Solution: Initialize v_type to VAR_UNKNOWN. (Dominique Pelle, closes #4871) +Files: src/userfunc.c + +Patch 8.1.1939 +Problem: Code for handling v: variables in generic eval file. +Solution: Move v: variables to evalvars.c. (Yegappan Lakshmanan, + closes #4872) +Files: src/eval.c, src/evalvars.c, src/proto/eval.pro, + src/proto/evalvars.pro + +Patch 8.1.1940 (after 8.1.1939) +Problem: Script tests fail. +Solution: Don't set vimvars type in set_vim_var_nr(). +Files: src/eval.c, src/evalvars.c, src/proto/evalvars.pro + +Patch 8.1.1941 +Problem: getftype() test fails on Mac. +Solution: Skip /dev/fd/. +Files: src/testdir/test_stat.vim + +Patch 8.1.1942 +Problem: Shadow directory gets outdated when files are added. +Solution: Add the "shadowupdate" target and add a few comments. +Files: src/Makefile + +Patch 8.1.1943 +Problem: More code can be moved to evalvars.c. +Solution: Move it, clean up comments. Also move some window related + functions to window.c. (Yegappan Lakshmanan, closes #4874) +Files: src/eval.c, src/evalfunc.c, src/evalvars.c, src/proto/eval.pro, + src/proto/evalvars.pro, src/proto/window.pro, src/window.c + +Patch 8.1.1944 +Problem: Leaking memory when using sound callback. +Solution: Free the callback queue item. +Files: src/sound.c + +Patch 8.1.1945 +Problem: Popup window "firstline" cannot be reset. +Solution: Allow for setting "firstline" to zero. Fix that the text jumps to + the top when using win_execute(). (closes #4876) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_5.dump, + src/testdir/dumps/Test_popupwin_scroll_6.dump + +Patch 8.1.1946 +Problem: Memory error when profiling a function without a script ID. +Solution: Check for missing script ID. (closes #4877) +Files: src/testdir/test_profile.vim, src/profiler.c + +Patch 8.1.1947 +Problem: When executing one test the report doesn't show it. +Solution: Adjust the regexp. (Daniel Hahler, closes #4879) +Files: src/testdir/summarize.vim + +Patch 8.1.1948 +Problem: Mouse doesn't work in Linux console and causes 100% CPU. (James P. + Harvey) +Solution: Loop in WaitForCharOrMouse() when gpm_process_wanted is set. + (closes #4828) +Files: src/os_unix.c + +Patch 8.1.1949 +Problem: Cannot scroll a popup window to the very bottom. +Solution: Scroll to the bottom when the "firstline" property was set to -1. + (closes #4577) Allow resetting min/max width/height. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/dict.c, src/proto/dict.pro, + src/testdir/dumps/Test_popupwin_firstline.dump, + src/testdir/dumps/Test_popupwin_firstline_1.dump, + src/testdir/dumps/Test_popupwin_firstline_2.dump, + src/testdir/dumps/Test_popupwin_scroll_10.dump + +Patch 8.1.1950 +Problem: Using NULL pointer after an out-of-memory. +Solution: Check for NULL pointer. (Dominique Pelle, closes #4881) +Files: src/syntax.c + +Patch 8.1.1951 +Problem: Mouse double click test is a bit flaky. +Solution: Add to list of flaky tests. Update a couple of comments. +Files: src/testdir/runtest.vim, src/testdir/shared.vim, + src/testdir/test_substitute.vim + +Patch 8.1.1952 +Problem: More functions can be used as a method. +Solution: Allow more functions to be used as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_tagjump.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_terminal.vim, src/testdir/test_getvar.vim, + src/testdir/test_escaped_glob.vim, + src/testdir/test_glob2regpat.vim + +Patch 8.1.1953 +Problem: More functions can be used as a method. +Solution: Allow more functions to be used as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_blob.vim, + src/testdir/test_breakindent.vim, src/testdir/test_delete.vim, + src/testdir/test_functions.vim, src/testdir/test_getcwd.vim, + src/testdir/test_history.vim, src/testdir/test_listdict.vim, + src/testdir/test_syn_attr.vim, src/testdir/test_termcodes.vim, + src/testdir/test_true_false.vim + +Patch 8.1.1954 +Problem: More functions can be used as a method. +Solution: Allow more functions to be used as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_arglist.vim, src/testdir/test_functions.vim, + src/testdir/test_json.vim, src/testdir/test_lispwords.vim, + src/testdir/test_listener.vim, src/testdir/test_lua.vim, + src/testdir/test_utf8.vim + +Patch 8.1.1955 +Problem: Tests contain typos. +Solution: Correct the typos. (Dominique Pelle) +Files: src/testdir/popupbounce.vim, src/testdir/runtest.vim, + src/testdir/screendump.vim, src/testdir/test49.vim, + src/testdir/test_autocmd.vim, src/testdir/test_cindent.vim, + src/testdir/test_const.vim, src/testdir/test_popupwin.vim, + src/testdir/test_quickfix.vim, src/testdir/test_search.vim, + src/testdir/test_tabpage.vim, src/testdir/test_tcl.vim + +Patch 8.1.1956 +Problem: Screenshot tests may use a different encoding. (Dominique Pelle) +Solution: Always set 'encoding' to "utf-8" when running Vim in a terminal. + (closes #4884) +Files: src/testdir/shared.vim, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_behind.dump + +Patch 8.1.1957 +Problem: More code can be moved to evalvars.c. +Solution: Move code to where it fits better. (Yegappan Lakshmanan, + closes #4883) +Files: src/eval.c, src/evalvars.c, src/ex_getln.c, src/globals.h, + src/if_py_both.h, src/proto/eval.pro, src/proto/evalvars.pro, + src/proto/ex_getln.pro, src/proto/scriptfile.pro, + src/scriptfile.c, src/session.c, src/viminfo.c + +Patch 8.1.1958 +Problem: Old style comments taking up space. +Solution: Change to new style comments. +Files: src/vim.h + +Patch 8.1.1959 +Problem: When using "firstline" in popup window text may jump when + redrawing it. (Nick Jensen) +Solution: Set 'scrolloff' to zero in a popup window. (closes #4882) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_5.dump, + src/testdir/dumps/Test_popupwin_scroll_6.dump + +Patch 8.1.1960 +Problem: Fold code is spread out. +Solution: Move fold functions to fold.c. +Files: src/evalfunc.c, src/fold.c, src/proto/fold.pro + +Patch 8.1.1961 +Problem: More functions can be used as a method. +Solution: Allow more functions to be used as a method. Add a test for + mapcheck(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test70.in, + src/testdir/test_functions.vim, src/testdir/test_getcwd.vim, + src/testdir/test_maparg.vim, src/testdir/test_match.vim + +Patch 8.1.1962 +Problem: Leaking memory when using tagfunc(). +Solution: Free the user_data. (Dominique Pelle, closes #4886) +Files: src/window.c + +Patch 8.1.1963 +Problem: Popup window filter may be called recursively when using a Normal + mode command. (Nick Jensen) +Solution: Prevent recursiveness. (closes #4887) Also restore KeyTyped. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.1964 +Problem: Crash when using nested map() and filter(). +Solution: Do not set the v:key type to string without clearing the pointer. + (closes #4888) +Files: src/eval.c, src/testdir/test_filter_map.vim + +Patch 8.1.1965 +Problem: The search count message is not displayed when using a mapping. + (Gary Johnson) +Solution: Ignore cmd_silent for showing the search count. (Christian + Brabandt) +Files: src/search.c + +Patch 8.1.1966 +Problem: Some code in options.c fits better elsewhere. +Solution: Move functions from options.c to other files. (Yegappan + Lakshmanan, closes #4889) +Files: src/evalfunc.c, src/globals.h, src/indent.c, src/map.c, + src/option.c, src/proto/map.pro, src/proto/option.pro, + src/proto/quickfix.pro, src/proto/screen.pro, src/proto/spell.pro, + src/proto/window.pro, src/quickfix.c, src/screen.c, src/spell.c, + src/window.c + +Patch 8.1.1967 +Problem: Line() only works for the current window. +Solution: Add an optional argument for the window to use. +Files: runtime/eval.txt, src/evalfunc.c, src/testdir/test_popupwin.vim + +Patch 8.1.1968 +Problem: Crash when using nested map(). +Solution: Clear the pointer in prepare_vimvar(). (Ozaki Kiichi, + closes #4890, closes #4891) +Files: src/evalvars.c, src/testdir/test_filter_map.vim, + src/testdir/test_functions.vim + +Patch 8.1.1969 +Problem: Popup window filter is used in all modes. +Solution: Add the "filtermode" property. +Files: src/popupwin.c, src/vim.h, src/map.c, src/proto/map.pro, + src/structs.h, runtime/doc/popup.txt, + src/testdir/test_popupwin.vim + +Patch 8.1.1970 +Problem: Search stat space wrong, no test for 8.1.1965. +Solution: Fix check for cmd_silent. Add a test. (Christian Brabandt) +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.1.1971 +Problem: Manually enabling features causes build errors. (John Marriott) +Solution: Adjust #ifdefs. +Files: src/proto.h, src/popupmnu.c, src/buffer.c, src/quickfix.c, + src/ui.c + +Patch 8.1.1972 +Problem: No proper test for getchar(). +Solution: Add a test with special characters. +Files: src/testdir/test_functions.vim + +Patch 8.1.1973 +Problem: Cannot build without the quickfix feature. +Solution: Remove #ifdef for qf_info_T. +Files: src/structs.h + +Patch 8.1.1974 +Problem: Coverity warns for using pointer as array. +Solution: Call var2fpos() directly instead of using f_line(). +Files: src/evalfunc.c + +Patch 8.1.1975 +Problem: MS-Windows GUI responds slowly to timer. +Solution: Break out of wait loop when timer was added or input is available. + (closes #4893) +Files: src/gui_w32.c + +Patch 8.1.1976 +Problem: Travis log always shows test output. +Solution: Change script to avoid if/else. (Ozaki Kiichi, closes #4892) +Files: .travis.yml + +Patch 8.1.1977 +Problem: Terminal debugger plugin may hang. +Solution: Wait longer when still reading symbols. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.1978 +Problem: The eval.c file is too big. +Solution: Move filter() and map() to list.c. +Files: src/eval.c, src/proto/eval.pro, src/list.c, src/proto/list.pro, + src/evalfunc.c + +Patch 8.1.1979 +Problem: Code for handling file names is spread out. +Solution: Move code to new filepath.c file. Graduate FEAT_MODIFY_FNAME. +Files: src/filepath.c, Filelist, src/Make_cyg_ming.mak, + src/Make_morph.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile, src/README.md, src/eval.c, src/evalfunc.c, + src/ex_docmd.c, src/feature.h, src/findfile.c, src/if_cscope.c, + src/message.c, src/misc1.c, src/proto.h, src/proto/eval.pro, + src/proto/evalvars.pro src/proto/filepath.pro, + src/proto/findfile.pro, src/proto/message.pro, src/regexp.c, + src/version.c + +Patch 8.1.1980 +Problem: Fix for search stat not tested. +Solution: Add a screenshot test. (Christian Brabandt) +Files: src/testdir/test_search_stat.vim, + src/testdir/dumps/Test_searchstat_1.dump, + src/testdir/dumps/Test_searchstat_2.dump + +Patch 8.1.1981 +Problem: The evalfunc.c file is too big. +Solution: Move undo functions to undo.c. Move cmdline functions to + ex_getln.c. Move some container functions to list.c. +Files: src/evalfunc.c, src/undo.c, src/proto/undo.pro, src/ex_getln.c, + src/proto/ex_getln.pro, src/list.c, src/proto/list.pro + +Patch 8.1.1982 +Problem: More functions can be used as methods. +Solution: Make popup functions usable as a method. +Files: runtime/doc/popup.txt, src/evalfunc.c, + src/testdir/test_popupwin.vim + +Patch 8.1.1983 +Problem: Compiler nags for uninitialized variable and unused function. +Solution: Add unnecessary initialization. Move function inside #ifdef. +Files: src/memline.c, src/channel.c + +Patch 8.1.1984 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim, src/testdir/test_perl.vim, + src/testdir/test_prompt_buffer.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_pyx2.vim + +Patch 8.1.1985 +Problem: Code for dealing with paths is spread out. +Solution: Move path related functions from misc1.c to filepath.c. + Remove NO_EXPANDPATH. +Files: src/misc1.c, src/proto/misc1.pro, src/filepath.c, + src/evalfunc.c, src/globals.h, src/misc2.c, src/os_unix.c, + src/os_unix.h, src/proto/filepath.pro, src/scriptfile.c, + src/proto/misc2.pro, src/proto/scriptfile.pro, src/vim.h + +Patch 8.1.1986 +Problem: More functions can be used as methods. +Solution: Make textprop functions usable as a method. +Files: runtime/doc/textprop.txt, src/evalfunc.c, + src/testdir/test_textprop.vim + +Patch 8.1.1987 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_clientserver.vim, + src/testdir/test_eval_stuff.vim, src/testdir/test_functions.vim, + src/testdir/test_reltime.vim, src/testdir/test_rename.vim + +Patch 8.1.1988 +Problem: :startinsert! does not work the same way as "A". +Solution: Use the same code to move the cursor. (closes #4896) +Files: src/ex_docmd.c, src/normal.c, src/proto/normal.pro, + src/testdir/test_edit.vim + +Patch 8.1.1989 +Problem: The evalfunc.c file is still too big. +Solution: Move f_pathshorten() to filepath.c. Move f_cscope_connection() to + if_cscope.c. Move diff_ functions to diff.c. Move timer_ + functions to ex_cmds2.c. move callback functions to evalvars.c. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/filepath.c, + src/proto/filepath.pro, src/if_cscope.c, src/proto/if_cscope.pro, + src/diff.c, src/proto/diff.pro, src/ex_cmds2.c, + src/proto/ex_cmds2.pro, src/evalvars.c, src/proto/evalvars.pro + +Patch 8.1.1990 +Problem: Cannot build with eval but without cscope. +Solution: Always include if_cscope.pro. +Files: src/proto.h + +Patch 8.1.1991 +Problem: Still cannot build with eval but without cscope. +Solution: Move f_cscope_connection() outside of #ifdef. +Files: src/if_cscope.c + +Patch 8.1.1992 +Problem: The search stat moves when wrapping at the end of the buffer. +Solution: Put the "W" in front instead of at the end. +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.1.1993 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufline.vim, src/testdir/test_charsearch.vim, + src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, + src/testdir/test_cursor_func.vim, src/testdir/test_diffmode.vim, + src/testdir/test_environ.vim, src/testdir/test_functions.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_popupwin.vim, src/testdir/test_search.vim, + src/testdir/test_searchpos.vim, src/testdir/test_utf8.vim + +Patch 8.1.1994 +Problem: MS-Windows: cannot build with eval but without cscope +Solution: Adjust the makefiles to always build if_cscope.obj. +Files: src/Make_mvc.mak, src/Make_cyg_ming.mak + +Patch 8.1.1995 +Problem: More functions can be used as methods. +Solution: Make sign functions usable as a method. +Files: runtime/doc/sign.txt, src/evalfunc.c, src/testdir/test_signs.vim + +Patch 8.1.1996 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim, + src/testdir/test_cursor_func.vim, src/testdir/test_expr.vim, + src/testdir/test_functions.vim, src/testdir/test_put.vim, + src/testdir/test_quickfix.vim, src/testdir/test_sha256.vim, + src/testdir/test_tabpage.vim, src/testdir/test_tagjump.vim, + src/testdir/test_vartabs.vim + +Patch 8.1.1997 +Problem: No redraw after a popup window filter is invoked. +Solution: Redraw if needed. +Files: src/popupwin.c, src/testdir/test_popupwin.vim + src/testdir/dumps/Test_popupwin_menu_filter_5.dump + +Patch 8.1.1998 +Problem: Redraw even when no popup window filter was invoked. +Solution: Only redraw when must_redraw was set to a larger value. +Files: src/popupwin.c + +Patch 8.1.1999 +Problem: Calling both PlaySoundW() and PlaySoundA(). +Solution: Only use PlaySoundW(). (Dan Thompson, closes #4903) +Files: src/sound.c + +Patch 8.1.2000 +Problem: Plugin cannot get the current IME status. +Solution: Add the getimstatus() function. (closes #4904) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/mbyte.c, + src/proto/mbyte.pro, src/testdir/test_iminsert.vim + +Patch 8.1.2001 +Problem: Some source files are too big. +Solution: Move buffer and window related functions to evalbuffer.c and + evalwindow.c. (Yegappan Lakshmanan, closes #4898) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/buffer.c, src/channel.c, src/evalbuffer.c, src/evalfunc.c, + src/evalwindow.c, src/proto.h, src/proto/buffer.pro, + src/proto/evalbuffer.pro, src/proto/evalfunc.pro, + src/proto/evalwindow.pro, src/proto/window.pro, src/window.c + +Patch 8.1.2002 +Problem: Version number 2000 missing. +Solution: Add the number in the list of patches. +Files: src/version.c + +Patch 8.1.2003 +Problem: MS-Windows: code page 65001 is not recognized. +Solution: Use utf-8 for code page 65001. (Dan Thompson, closes #4902) +Files: src/mbyte.c + +Patch 8.1.2004 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_breakindent.vim, src/testdir/test_expr.vim, + src/testdir/test_functions.vim, src/testdir/test_sound.vim, + src/testdir/test_spell.vim, src/testdir/test_substitute.vim, + src/testdir/test_swap.vim, src/testdir/test_utf8.vim + +Patch 8.1.2005 +Problem: The regexp.c file is too big. +Solution: Move the backtracking engine to a separate file. (Yegappan + Lakshmanan, closes #4905) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile, + src/regexp.c, src/regexp_bt.c + +Patch 8.1.2006 +Problem: Build failure with huge features but without channel feature. +Solution: Add #ifdef. (Dominique Pelle, closes #4906) +Files: src/ui.c + +Patch 8.1.2007 +Problem: No test for what 8.1.1926 fixes. +Solution: Add a test case. +Files: src/testdir/test_highlight.vim + +Patch 8.1.2008 +Problem: Error for invalid range when using listener and undo. (Paul Jolly) +Solution: Do not change the cursor before the lines are restored. + (closes #4908) +Files: src/undo.c, src/testdir/test_listener.vim + +Patch 8.1.2009 +Problem: Cursorline highlighting not updated in popup window. (Marko + Mahni膷) +Solution: Check if the cursor position changed. (closes #4912) +Files: src/popupwin.c, src/structs.h, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_cursorline_7.dump + +Patch 8.1.2010 +Problem: New file uses old style comments. +Solution: Change to new style comments. (Yegappan Lakshmanan, closes #4910) +Files: src/regexp_bt.c + +Patch 8.1.2011 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. Make the window + command test faster. +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, src/evalfunc.c, + src/testdir/test_assert.vim, src/testdir/test_gui.vim, + src/testdir/test_messages.vim, src/testdir/test_options.vim, + src/testdir/test_quickfix.vim, src/testdir/test_taglist.vim, + src/testdir/test_termcodes.vim, src/testdir/test_timers.vim, + src/testdir/test_vimscript.vim, src/testdir/test_viminfo.vim, + src/testdir/test_window_cmd.vim + +Patch 8.1.2012 +Problem: More functions can be used as methods. +Solution: Make terminal functions usable as a method. Fix term_getattr(). +Files: runtime/doc/terminal.txt, src/evalfunc.c, src/terminal.c + src/testdir/test_mksession.vim, src/testdir/test_terminal.vim + +Patch 8.1.2013 +Problem: More functions can be used as methods. +Solution: Make various functions usable as a method. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_cursor_func.vim, + src/testdir/test_execute_func.vim, src/testdir/test_functions.vim, + src/testdir/test_listchars.vim, src/testdir/test_timers.vim, + src/testdir/test_undo.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_window_id.vim + +Patch 8.1.2014 +Problem: Terminal altscreen test fails sometimes. +Solution: Use WaitFor(). +Files: src/testdir/test_terminal.vim + +Patch 8.1.2015 +Problem: Terminal altscreen test still fails sometimes. +Solution: Write the escape sequence in a file. +Files: src/testdir/test_terminal.vim + +Patch 8.1.2016 +Problem: Terminal altscreen test now fails on MS-Windows. +Solution: Skip the test on MS-Windows +Files: src/testdir/test_terminal.vim + +Patch 8.1.2017 +Problem: Cannot execute commands after closing the cmdline window. +Solution: Also trigger BufEnter and WinEnter. (closes #4762) +Files: runtime/doc/autocmd.txt, runtime/doc/cmdline.txt, src/ex_getln.c, + src/testdir/test_cmdline.vim + +Patch 8.1.2018 +Problem: Using freed memory when out of memory and displaying message. +Solution: Make a copy of the message first. +Files: src/main.c, src/message.c, src/normal.c + +Patch 8.1.2019 +Problem: 'cursorline' always highlights the whole line. +Solution: Add 'cursorlineopt' to specify what is highlighted. + (Ozaki Kiichi, closes #4693) +Files: runtime/doc/options.txt, runtime/doc/quickref.txt, + runtime/doc/syntax.txt, runtime/optwin.vim, src/option.c, + src/option.h, src/screen.c, src/structs.h, + src/testdir/Make_all.mak, src/testdir/gen_opt_test.vim, + src/testdir/test_alot.vim, src/testdir/test_cursorline.vim + +Patch 8.1.2020 +Problem: It is not easy to change the window layout. +Solution: Add win_splitmove(). (Andy Massimino, closes #4561) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/evalwindow.c, + src/proto/evalwindow.pro, src/testdir/test_window_cmd.vim + +Patch 8.1.2021 +Problem: Some global functions can be local to the file. +Solution: Add "static". (Yegappan Lakshmanan, closes #4917) +Files: src/ex_cmds2.c, src/filepath.c, src/hangulin.c, src/mbyte.c, + src/misc1.c, src/os_unix.c, src/proto/ex_cmds2.pro, + src/proto/filepath.pro, src/proto/hangulin.pro, + src/proto/mbyte.pro, src/proto/misc1.pro, src/proto/os_unix.pro, + src/proto/terminal.pro, src/proto/undo.pro, src/pty.c, + src/terminal.c, src/undo.c + +Patch 8.1.2022 +Problem: The option.c file is too big. +Solution: Move option definitions to a separate file. (Yegappan Lakshmanan, + closes #4918) +Files: Filelist, src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, + src/option.c, src/optiondefs.h + +Patch 8.1.2023 +Problem: No test for synIDattr() returning "strikethrough". +Solution: Extend the synIDattr() test. (Jaskaran Singh, closes #4929) +Files: src/testdir/test_syn_attr.vim + +Patch 8.1.2024 +Problem: Delete call commented out for debugging. +Solution: Restore the delete call. (Christian Brabandt) +Files: src/testdir/test_undo.vim + +Patch 8.1.2025 +Problem: MS-Windows: Including shlguid.h causes problems for msys2. +Solution: Do not include shlguid.h. (closes #4913) +Files: src/GvimExt/gvimext.h + +Patch 8.1.2026 +Problem: Possibly using uninitialized memory. +Solution: Check if "dict" is NULL. (closes #4925) +Files: src/ops.c + +Patch 8.1.2027 +Problem: MS-Windows: problem with ambiwidth characters. +Solution: handle ambiguous width characters in ConPTY on Windows 10 (1903). + (Nobuhiro Takasaki, closes #4411) +Files: src/Make_mvc.mak, src/Make_cyg_ming.mak, src/libvterm/src/parser.c, + src/libvterm/src/state.c, src/libvterm/src/termscreen.c, + src/libvterm/src/unicode.c, src/libvterm/src/vterm_internal.h, + src/misc2.c, src/os_win32.c, src/proto/misc2.pro, + src/proto/os_win32.pro + +Patch 8.1.2028 +Problem: Options test script does not work. +Solution: Use optiondefs.h for input. +Files: src/testdir/Makefile, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak + +Patch 8.1.2029 +Problem: Cannot control 'cursorline' highlighting well. +Solution: Add "screenline". (Christian Brabandt, closes #4933) +Files: runtime/doc/options.txt, src/change.c, src/main.c, src/option.c, + src/option.h, src/optiondefs.h, src/screen.c, src/structs.h, + src/highlight.c, src/testdir/dumps/Test_Xcursorline_1.dump, + src/testdir/dumps/Test_Xcursorline_2.dump, + src/testdir/dumps/Test_Xcursorline_3.dump, + src/testdir/dumps/Test_Xcursorline_4.dump, + src/testdir/dumps/Test_Xcursorline_5.dump, + src/testdir/dumps/Test_Xcursorline_6.dump, + src/testdir/dumps/Test_Xcursorline_7.dump, + src/testdir/dumps/Test_Xcursorline_8.dump, + src/testdir/dumps/Test_Xcursorline_9.dump, + src/testdir/dumps/Test_Xcursorline_10.dump, + src/testdir/dumps/Test_Xcursorline_11.dump, + src/testdir/dumps/Test_Xcursorline_12.dump, + src/testdir/dumps/Test_Xcursorline_13.dump, + src/testdir/dumps/Test_Xcursorline_14.dump, + src/testdir/dumps/Test_Xcursorline_15.dump, + src/testdir/dumps/Test_Xcursorline_16.dump, + src/testdir/dumps/Test_Xcursorline_17.dump, + src/testdir/dumps/Test_Xcursorline_18.dump, + src/testdir/gen_opt_test.vim, src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_cursorline_yank_01.dump, + src/testdir/dumps/Test_wincolor_01.dump, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.2030 +Problem: Tests fail when build with normal features and terminal. + (Dominique Pelle) +Solution: Disable tests that won't work. (closes #4932) +Files: src/testdir/test_popupwin.vim, src/testdir/test_terminal.vim + +Patch 8.1.2031 +Problem: Cursor position wrong when resizing and using conceal. +Solution: Set the flags that the cursor position is valid when setting the + row and column during redrawing. (closes #4931) +Files: src/screen.c, src/testdir/test_conceal.vim, + src/testdir/dumps/Test_conceal_resize_01.dump, + src/testdir/dumps/Test_conceal_resize_02.dump + +Patch 8.1.2032 +Problem: Scrollbar thumb wrong in popup window. +Solution: Adjust thumb size and position when scrolled. +Files: src/popupwin.c, src/testdir/dumps/Test_popupwin_scroll_2.dump + +Patch 8.1.2033 +Problem: Cannot build with tiny features. +Solution: Add #ifdef. +Files: src/screen.c + +Patch 8.1.2034 +Problem: Dark theme of GTK 3 not supported. +Solution: Add the "d" flag in 'guioptions'. (Jonathan Conder, closes #4934) +Files: runtime/doc/options.txt, src/feature.h, src/gui.c, + src/gui_gtk_x11.c, src/option.h, src/proto/gui_gtk_x11.pro, + src/testdir/test_gui.vim + +Patch 8.1.2035 +Problem: Recognizing octal numbers is confusing. +Solution: Introduce scriptversion 4: do not use octal and allow for single + quote inside numbers. +Files: runtime/doc/eval.txt, src/vim.h, src/eval.c, src/scriptfile.c, + src/evalfunc.c, src/testdir/test_eval_stuff.vim, + src/testdir/test_functions.vim + +Patch 8.1.2036 (after 8.1.2035) +Problem: The str2nr() tests fail. +Solution: Add missing part of patch. +Files: src/charset.c + +Patch 8.1.2037 +Problem: Can call win_gotoid() in cmdline window. +Solution: Disallow switching windows. (Yasuhiro Matsumoto, closes #4940) +Files: src/evalwindow.c, src/testdir/test_cmdline.vim + +Patch 8.1.2038 +Problem: has('vimscript-4') is always 0. +Solution: Add "vimscript-4" to the feature table. (Naruhiko Nishino, + closes #4941) +Files: src/evalfunc.c, src/testdir/test_eval_stuff.vim + +Patch 8.1.2039 +Problem: Character from 'showbreak' does not use 'wincolor'. (Nick Jensen) +Solution: Mix with 'wincolor'. (closes #4938) +Files: src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_showbreak.dump + +Patch 8.1.2040 +Problem: No highlighting of current line in quickfix window. +Solution: Combine with line_attr. +Files: src/screen.c, src/testdir/test_quickfix.vim, + src/testdir/dumps/Test_quickfix_cwindow_1.dump, + src/testdir/dumps/Test_quickfix_cwindow_2.dump + +Patch 8.1.2041 (after 8.1.2040) +Problem: No test for diff mode with syntax highlighting. +Solution: Add a test case. +Files: src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_syntax_1.dump + +Patch 8.1.2042 +Problem: The evalfunc.c file is too big. +Solution: Move getchar() and parse_queued_messages() to getchar.c. +Files: src/getchar.c, src/proto/getchar.pro, src/evalfunc.c, src/misc2.c, + src/proto/misc2.pro + +Patch 8.1.2043 +Problem: Not sufficient testing for quoted numbers. +Solution: Add a few more test cases. +Files: src/testdir/test_functions.vim, src/testdir/test_eval_stuff.vim + +Patch 8.1.2044 +Problem: No easy way to process postponed work. (Paul Jolly) +Solution: Add the SafeState autocommand event. +Files: runtime/doc/autocmd.txt, src/main.c, src/proto/main.pro, + src/vim.h, src/autocmd.c, src/channel.c, src/edit.c, + src/ex_getln.c + +Patch 8.1.2045 +Problem: The option.c file is too big. +Solution: Split off the code dealing with strings. (Yegappan Lakshmanan, + closes #4937) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/option.c, src/option.h, src/optiondefs.h, src/optionstr.c, + src/ops.c, src/os_unix.c, src/proto.h, src/proto/option.pro, + src/proto/optionstr.pro + +Patch 8.1.2046 +Problem: SafeState may be triggered at the wrong moment. +Solution: Move it up higher to after where messages are processed. Add a + SafeStateAgain event to trigger there. +Files: runtime/doc/autocmd.txt, src/main.c, src/proto/main.pro, + src/getchar.c, src/channel.c, src/autocmd.c, src/vim.h + +Patch 8.1.2047 +Problem: Cannot check the current state. +Solution: Add the state() function. +Files: runtime/doc/eval.txt, src/misc1.c, src/proto/misc1.pro, + src/evalfunc.c, src/proto/evalfunc.pro, src/main.c, + src/proto/main.pro, src/channel.c, src/proto/channel.pro, + src/userfunc.c, src/proto/userfunc.pro + +Patch 8.1.2048 +Problem: Not clear why SafeState and SafeStateAgain are not triggered. +Solution: Add log statements. +Files: src/getchar.c, src/main.c, src/proto/main.pro + +Patch 8.1.2049 (after 8.1.2048) +Problem: Cannot build tiny version. +Solution: Add #ifdefs. +Files: src/main.c + +Patch 8.1.2050 +Problem: Popup window test fails in some configurations. (James McCoy) +Solution: Clear the command line. +Files: src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_10.dump + +Patch 8.1.2051 +Problem: Double-click test is a bit flaky. +Solution: Correct entry in list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.2052 +Problem: Using "x" before a closed fold may delete that fold. +Solution: Do not translate 'x' do "dl". (Christian Brabandt, closes #4927) +Files: src/normal.c, src/testdir/test_fold.vim + +Patch 8.1.2053 +Problem: SafeStateAgain not triggered if callback uses feedkeys(). +Solution: Check for safe state in the input loop. Make log messages easier + to find. Add 'S' flag to state(). +Files: src/main.c, src/proto/main.pro, src/getchar.c, + runtime/doc/eval.txt + +Patch 8.1.2054 +Problem: Compiler test for Perl may fail. +Solution: Accept any error line number. (James McCoy, closes #4944) +Files: src/testdir/test_compiler.vim + +Patch 8.1.2055 +Problem: Not easy to jump to function line from profile. +Solution: Use "file:99" instead of "file line 99" so that "gf" works. + (Daniel Hahler, closes #4951) +Files: src/profiler.c, src/testdir/test_profile.vim + +Patch 8.1.2056 +Problem: "make test" for indent files doesn't cause make to fail. +Solution: Exit the script with ":cquit". (Daniel Hahler, closes #4949) +Files: runtime/indent/testdir/runtest.vim, .gitignore + +Patch 8.1.2057 +Problem: The screen.c file is much too big. +Solution: Split it in three parts. (Yegappan Lakshmanan, closes #4943) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/drawline.c, src/drawscreen.c, src/globals.h, src/proto.h, + src/proto/drawline.pro, src/proto/drawscreen.pro, + src/proto/screen.pro, src/screen.c, src/vim.h + +Patch 8.1.2058 +Problem: Function for ex command is named inconsistently. +Solution: Rename do_marks() to ex_marks(). +Files: src/mark.c, src/proto/mark.pro, src/ex_cmds.h + +Patch 8.1.2059 +Problem: Fix for "x" deleting a fold has side effects. +Solution: Fix it where the fold is included. +Files: src/normal.c + +Patch 8.1.2060 +Problem: "precedes" in 'listchars' not used properly. +Solution: Correctly handle the "precedes" char in list mode for long lines. + (Zach Wegner, Christian Brabandt, closes #4953) +Files: runtime/doc/options.txt, src/drawline.c, + src/testdir/test_display.vim, src/testdir/view_util.vim + +Patch 8.1.2061 +Problem: MS-Windows GUI: ":sh" crashes when trying to use a terminal. +Solution: Check for a NULL command. (Yasuhiro Matsumoto, closes #4958) +Files: src/os_win32.c + +Patch 8.1.2062 +Problem: The mouse code is spread out. +Solution: Move all the mouse code to mouse.c. (Yegappan Lakshmanan, + closes #4959) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/auto/configure, src/configure.ac, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/ex_getln.c, src/insexpand.c, + src/libvterm/src/termmouse.c, src/libvterm/src/mouse.c, + src/main.c, src/message.c, src/misc1.c, src/misc2.c, src/mouse.c, + src/normal.c, src/proto.h, src/proto/edit.pro, + src/proto/misc1.pro, src/proto/misc2.pro, src/proto/mouse.pro, + src/proto/normal.pro, src/proto/term.pro, src/proto/ui.pro, + src/search.c, src/term.c, src/ui.c, src/vim.h, src/window.c + +Patch 8.1.2063 +Problem: Some tests fail when +balloon_eval_term is missing but + _balloon_eval is present. (Dominique Pelle) +Solution: Check the right feature in the test. (closes #4962) +Files: src/testdir/test_popupwin.vim, src/testdir/test_terminal.vim + +Patch 8.1.2064 +Problem: MS-Windows: compiler warnings for unused arguments. +Solution: Add UNUSED. (Yegappan Lakshmanan, closes #4963) +Files: src/channel.c, src/ex_docmd.c, src/ex_getln.c, src/fileio.c, + src/gui_w32.c, src/main.c, src/memline.c, src/os_mswin.c, + src/os_win32.c, src/terminal.c, src/ui.c, src/undo.c + +Patch 8.1.2065 +Problem: Compiler warning building non-GUI with MinGW. +Solution: Adjust #ifdefs. (Yegappan Lakshmanan, closes #4964) +Files: sre/mouse.c + +Patch 8.1.2066 +Problem: No tests for state(). +Solution: Add tests. Clean up some feature checks. Make "a" flag work. +Files: src/testdir/test_functions.vim, src/testdir/test_terminal.vim, + src/misc1.c + +Patch 8.1.2067 +Problem: No tests for SafeState and SafeStateAgain. +Solution: Add tests. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.2068 (after 8.1.2067) +Problem: Test for SafeState and SafeStateAgain may fail. +Solution: Accept more possible responses +Files: src/testdir/test_autocmd.vim + +Patch 8.1.2069 (after 8.1.2068) +Problem: Test for SafeStateAgain may still fail. +Solution: Send another message to trigger SafeStateAgain. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.2070 +Problem: Mouse code is spread out. +Solution: Move mouse terminal code parsing to mouse.c. (Yegappan Lakshmanan, + closes #4966) +Files: src/mouse.c, src/proto/mouse.pro, src/proto/term.pro, src/term.c + +Patch 8.1.2071 +Problem: When 'wincolor' is set text property changes highlighting. (Andy + Stewart) +Solution: Fix combining colors. (closes #4968) +Files: src/drawline.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_wincolor_01.dump + +Patch 8.1.2072 +Problem: "gk" moves to start of line instead of upwards. +Solution: Fix off-by-one error. (Christian Brabandt, closes #4969) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.1.2073 +Problem: When editing a buffer 'colorcolumn' may not work. +Solution: Set the buffer before copying option values. Call + check_colorcolumn() after copying window options. +Files: src/buffer.c, src/option.c, src/proto/option.pro, + src/proto/indent.pro, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_colorcolumn_1.dump + +Patch 8.1.2074 +Problem: Test for SafeState autocommand is a bit flaky. +Solution: Add to list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.2075 +Problem: Get many log messages when waiting for a typed character. +Solution: Do not repeat the repeated messages when nothing happens. +Files: src/globals.h, src/channel.c, src/main.c + +Patch 8.1.2076 +Problem: Crash when trying to put a terminal buffer in a popup window. +Solution: Check for NULL buffer. Do not allow putting a terminal in a popup + window. +Files: src/libvterm/src/termscreen.c, src/terminal.c, src/popupwin.c, + runtime/doc/popup.txt, src/testdir/test_popupwin.vim + +Patch 8.1.2077 +Problem: The ops.c file is too big. +Solution: Move code for dealing with registers to a new file. (Yegappan + Lakshmanan, closes #4982) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms src/Makefile, src/README.md, + src/ops.c, src/proto.h, src/proto/ops.pro, src/proto/register.pro, + src/register.c, src/structs.h + +Patch 8.1.2078 +Problem: Build error with +textprop but without +terminal. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/popupwin.c + +Patch 8.1.2079 +Problem: Popup window test fails without +terminal. +Solution: Check for the +terminal feature. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.2080 +Problem: The terminal API is limited and can't be disabled. +Solution: Add term_setapi() to set the function prefix. (Ozaki Kiichi, + closes #2907) +Files: runtime/doc/eval.txt, runtime/doc/terminal.txt, src/channel.c, + src/evalfunc.c, src/proto/terminal.pro, src/structs.h, + src/terminal.c, src/testdir/term_util.vim, + src/testdir/test_terminal.vim + +Patch 8.1.2081 +Problem: The spell.c file is too big. +Solution: Move the code for spell suggestions to a separate file. (Yegappan + Lakshmanan, closes #4988) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/proto.h, src/proto/spell.pro, src/proto/spellsuggest.pro, + src/spell.c, src/spell.h, src/spellsuggest.c + +Patch 8.1.2082 +Problem: Some files have a weird name to fit in 8.3 characters. +Solution: Use a nicer names. +Files: Filelist, Makefile, src/popupmnu.c, src/popupmenu.c, + src/proto/popupmnu.pro, src/proto/popupmenu.pro, + src/Make_cyg_ming.mak, src/Make_morph.mak, src/Make_mvc.mak, + src/Make_vms.mms, src/Makefile, src/proto.h, src/README.md, + src/uninstal.c, src/uninstall.c, uninstal.txt, uninstall.txt, + nsis/gvim.nsi, src/INSTALLpc.txt, src/dosinst.c, src/dosinst.h + +Patch 8.1.2083 +Problem: Multi-byte chars do not work properly with "%.*S" in printf(). +Solution: Use mb_ptr2cells(). Daniel Hahler, closes #4989) +Files: src/testdir/test_expr.vim, src/message.c + +Patch 8.1.2084 +Problem: Amiga: cannot get the user name. +Solution: Use getpwuid() if available. (Ola S枚der, closes #4985) +Files: src/os_amiga.c, src/os_amiga.h + +Patch 8.1.2085 +Problem: MS-Windows: draw error moving cursor over double-cell character. +Solution: Move the cursor to the left edge if needed. (Nobuhiro Takasaki, + closes #4986) +Files: src/os_win32.c + +Patch 8.1.2086 (after 8.1.2082) +Problem: Missing a few changes for the renamed files. +Solution: Rename in a few more places. (Ken Takata) +Files: nsis/README.txt, runtime/doc/gui_w32.txt, runtime/doc/usr_90.txt, + src/GvimExt/GvimExt.reg, src/GvimExt/README.txt, + src/proto/popupmenu.pro, src/proto/popupmnu.pro + +Patch 8.1.2087 +Problem: Cannot easily select one test function to execute. +Solution: Support the $TEST_FILTER environment variable. (Ozaki Kiichi, + closes #2695) +Files: src/Makefile, src/testdir/runtest.vim, src/testdir/summarize.vim + +Patch 8.1.2088 +Problem: Renamed libvterm mouse.c file not in distributed file list. +Solution: Rename the file in the file list. +Files: Filelist + +Patch 8.1.2089 (after 8.1.2087) +Problem: Do not get a hint that $TEST_FILTER was active. +Solution: Mention $TEST_FILTER if no functions were executed. +Files: src/testdir/runtest.vim + +Patch 8.1.2090 +Problem: Not clear why channel log file ends. +Solution: Add a "closing" line. +Files: src/channel.c + +Patch 8.1.2091 +Problem: Double free when memory allocation fails. (Zu-Ming Jiang) +Solution: Use VIM_CLEAR() instead of vim_free(). (closes #4991) +Files: src/getchar.c + +Patch 8.1.2092 +Problem: MS-Windows: redirect in system() does not work. +Solution: Handle 'shellxescape' and 'shellxquote' better. (Yasuhiro + Matsumoto, closes #2054) +Files: src/ex_cmds.c, src/misc2.c, src/testdir/test_system.vim + +Patch 8.1.2093 +Problem: MS-Windows: system() test fails. +Solution: Expect CR when using systemlist(). +Files: src/testdir/test_system.vim + +Patch 8.1.2094 +Problem: The fileio.c file is too big. +Solution: Move buf_write() to bufwrite.c. (Yegappan Lakshmanan, + closes #4990) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/bufwrite.c, src/fileio.c, src/option.c, src/proto.h, + src/proto/bufwrite.pro, src/proto/fileio.pro, src/structs.h + +Patch 8.1.2095 +Problem: Leaking memory when getting item from dict. +Solution: Also free the key when not evaluating. +Files: src/dict.c + +Patch 8.1.2096 +Problem: Too many #ifdefs. +Solution: Graduate FEAT_COMMENTS. +Files: src/feature.h, src/buffer.c, src/change.c, src/edit.c, + src/evalfunc.c, src/fold.c, src/insexpand.c, src/misc1.c, + src/normal.c, src/ops.c, src/option.c, src/optionstr.c, + src/search.c, src/version.c, src/globals.h, src/option.h, + src/optiondefs.h, src/structs.h, runtime/doc/change.txt, + runtime/doc/options.txt, runtime/doc/various.txt + +Patch 8.1.2097 +Problem: :mksession is not sufficiently tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #4992) +Files: src/testdir/test_mksession.vim + +Patch 8.1.2098 (after 8.1.2097) +Problem: mksession test fails on MS-Windows. +Solution: Skip testing with backslashes on MS-Windows. +Files: src/testdir/test_mksession.vim + +Patch 8.1.2099 +Problem: state() test fails on some Mac systems. +Solution: Increase the wait time. (closes #4983) +Files: src/testdir/test_functions.vim + +Patch 8.1.2100 +Problem: :mksession is not sufficiently tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #4993) +Files: src/testdir/test_mksession.vim + +Patch 8.1.2101 +Problem: write_session_file() often defined but not used. +Solution: Adjust the #ifdef. (Yegappan Lakshmanan, closes #4998) +Files: src/session.c + +Patch 8.1.2102 +Problem: Can't build with GTK and FEAT_GUI_GNOME. (Tony Mechelynck) +Solution: Adjust the #ifdef. (Yegappan Lakshmanan) +Files: src/session.c + +Patch 8.1.2103 +Problem: wrong error message if "termdebugger" is not executable. +Solution: Check if "termdebugger" is executable and give a clear error + message. (Ozaki Kiichi, closes #5000) Fix indents. +Files: runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.1.2104 +Problem: The normal.c file is too big. +Solution: Move do_pending_operator() to ops.c. (Yegappan Lakshmanan, + closes #4999). +Files: src/normal.c, src/ops.c, src/proto/normal.pro, src/proto/ops.pro, + src/globals.h + +Patch 8.1.2105 +Problem: MS-Windows: system() may crash. +Solution: Do not use "itmp" when it is NULL. (Yasuhiro Matsumoto, + closes #5005) +Files: src/ex_cmds.c + +Patch 8.1.2106 +Problem: No tests for dragging the mouse beyond the window. +Solution: Add a test. (Dominique Pelle, closes #5004) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2107 +Problem: Various memory leaks reported by asan. +Solution: Free the memory. (Ozaki Kiichi, closes #5003) +Files: src/buffer.c, src/change.c, src/eval.c, src/evalfunc.c, + src/option.c, src/popupwin.c, src/proto/change.pro, + src/scriptfile.c, src/terminal.c, src/testdir/test_method.vim + +Patch 8.1.2108 +Problem: Cannot close the cmdline window from CmdWinEnter. (George Brown) +Solution: Reset cmdwin_result earlier. (Christian Brabandt, closes #4980) +Files: src/ex_getln.c, src/testdir/test_autocmd.vim + +Patch 8.1.2109 +Problem: popup_getoptions() hangs with tab-local popup. +Solution: Correct pointer name. (Marko Mahni膷, closes #5006) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.2110 +Problem: CTRL-C closes two popups instead of one. +Solution: Reset got_int when the filter consumed the key. +Files: src/getchar.c, src/testdir/test_popupwin.vim + +Patch 8.1.2111 +Problem: Viminfo file not sufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5009) +Files: src/testdir/test_viminfo.vim + +Patch 8.1.2112 +Problem: Build number for ConPTY is outdated. +Solution: Update to new build number. (Nobuhiro Takasaki, closes #5014) +Files: src/os_win32.c + +Patch 8.1.2113 +Problem: ":help expr-!~?" only works after searching. +Solution: Escape "~" after "expr-". (closes #5015) +Files: src/ex_cmds.c, src/testdir/test_help.vim + +Patch 8.1.2114 +Problem: When a popup is closed with CTRL-C the callback aborts. +Solution: Reset got_int when invoking the callback. (closes #5008) +Files: src/popupwin.c + +Patch 8.1.2115 +Problem: MS-Windows: shell commands fail if &shell contains a space. +Solution: Use quotes instead of escaping. (closes #4920) +Files: src/option.c, src/os_win32.c, src/testdir/test_startup.vim, + src/testdir/test_system.vim, src/vimrun.c, + +Patch 8.1.2116 +Problem: No check for out of memory. +Solution: Check for NULL pointer. +Files: src/option.c + +Patch 8.1.2117 +Problem: CursorLine highlight used while 'cursorline' is off. +Solution: Check 'cursorline' is set. (closes #5017) +Files: src/drawline.c, src/testdir/test_cursorline.vim + +Patch 8.1.2118 +Problem: Termcodes test fails when $TERM is "dumb". +Solution: Skip the test. (James McCoy, closes #5019) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2119 +Problem: memory access error for empty string when 'encoding' is a single + byte encoding. +Solution: Check for empty string when getting the length. (Dominique Pelle, + closes #5021, closes #5007) +Files: src/macros.h + +Patch 8.1.2120 +Problem: Some MB_ macros are more complicated than necessary. (Dominique + Pelle) +Solution: Simplify the macros. Expand inline. +Files: src/macros.h, src/beval.c, src/diff.c src/eval.c src/evalfunc.c + src/ex_getln.c, src/filepath.c, src/findfile.c, src/getchar.c, + src/highlight.c, src/ops.c, src/os_mswin.c, src/popupmenu.c, + src/search.c, src/spell.c, src/spellsuggest.c, src/terminal.c + +Patch 8.1.2121 +Problem: Mode is not updated when switching to terminal in Insert mode. +Solution: Redraw the mode when entering a terminal window. (Jason Franklin) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.1.2122 (after 8.1.2121) +Problem: Cannot build without terminal feature. +Solution: Add #ifdef. +Files: src/window.c + +Patch 8.1.2123 +Problem: Parsing CSI sequence is messy. +Solution: Generalize parsing a CSI sequence. +Files: src/term.c + +Patch 8.1.2124 +Problem: Ruler is not updated if win_execute() moves cursor. +Solution: Update the status line. (closes #5022) +Files: src/evalwindow.c, src/testdir/test_execute_func.vim + +Patch 8.1.2125 +Problem: Fnamemodify() fails when repeating :e. +Solution: Do not go before the tail. (Rob Pilling, closes #5024) +Files: src/filepath.c, src/testdir/test_fnamemodify.vim + +Patch 8.1.2126 +Problem: Viminfo not sufficiently tested. +Solution: Add more test cases. Clean up comments. (Yegappan Lakshmanan, + closes #5032) +Files: src/search.c, src/structs.h, src/testdir/test_viminfo.vim, + src/viminfo.c + +Patch 8.1.2127 +Problem: The indent.c file is a bit big. +Solution: Move C-indent code to a new cindent.c file. Move other + indent-related code to indent.c. (Yegappan Lakshmanan, + closes #5031) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/change.c, src/cindent.c, src/edit.c, src/evalfunc.c, + src/ex_cmds.c, src/globals.h, src/indent.c, src/misc1.c, + src/ops.c, src/proto.h, src/proto/cindent.pro, src/proto/edit.pro, + src/proto/ex_cmds.pro, src/proto/indent.pro, src/proto/misc1.pro, + src/proto/ops.pro, src/userfunc.c + +Patch 8.1.2128 +Problem: Renamed libvterm sources makes merging difficult. +Solution: Rename back to the original name and only rename the .o files. + Also clean the libvterm build artifacts. (James McCoy, + closes #5027) +Files: src/libvterm/src/termmouse.c, src/libvterm/src/mouse.c, + src/libvterm/src/termscreen.c, src/libvterm/src/screen.c, + src/Makefile, src/configure.ac, src/auto/configure, + src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.1.2129 +Problem: Using hard coded executable path in test. +Solution: Use v:progpath. Use $VIMRUNTIME instead of "runtime". (James + McCoy, closes #5025) +Files: src/testdir/test49.vim, src/testdir/test_compiler.vim, + src/testdir/test_spell.vim + +Patch 8.1.2130 (after 8.1.2128) +Problem: MSVC build fails. +Solution: Add the source file name explicitly. +Files: src/Make_mvc.mak + +Patch 8.1.2131 (after 8.1.2129) +Problem: MSVC tests fail. +Solution: Replace backslashes with slashes. +Files: src/testdir/test_compiler.vim, src/testdir/test_spell.vim + +Patch 8.1.2132 +Problem: MS-Windows: screen mess when not recognizing insider build. +Solution: Always move the cursor to the first column first. (Nobuhiro + Takasaki, closes #5036) +Files: src/os_win32.c + +Patch 8.1.2133 +Problem: Some tests fail when run as root. +Solution: Add CheckNotRoot and use it. (James McCoy, closes #5020) +Files: src/testdir/check.vim, src/testdir/shared.vim, + src/testdir/test_rename.vim, src/testdir/test_swap.vim, + src/testdir/test_terminal.vim, src/testdir/test_viminfo.vim + +Patch 8.1.2134 +Problem: Modifier keys are not always recognized. +Solution: Handle key codes generated by xterm with modifyOtherKeys set. + Add this to libvterm so we can debug it. +Files: src/term.c, src/getchar.c, src/libvterm/src/vterm_internal.h, + src/libvterm/src/state.c, src/libvterm/src/keyboard.c, + src/libvterm/include/vterm.h, src/globals.h, src/terminal.c + +Patch 8.1.2135 +Problem: With modifyOtherKeys Alt-a does not work properly. +Solution: Remove the ALT modifier. Get multibyte after applying ALT. +Files: src/getchar.c + +Patch 8.1.2136 +Problem: using freed memory with autocmd from fuzzer. (Dhiraj Mishra, + Dominique Pelle) +Solution: Avoid using "wp" after autocommands. (closes #5041) +Files: src/window.c, src/testdir/test_autocmd.vim + +Patch 8.1.2137 +Problem: Parsing the termresponse is not tested. +Solution: Add a first test. (related to #5042) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2138 +Problem: Including the build number in the Win32 binary is confusing. +Solution: Only use the patchlevel. +Files: src/vim.rc + +Patch 8.1.2139 +Problem: The modifyOtherKeys codes are not tested. +Solution: Add a test case. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2140 +Problem: "gk" and "gj" do not work correctly in number column. +Solution: Allow for a negative "curswant". (Zach Wegner, closes #4969) +Files: src/testdir/test_normal.vim, src/misc2.c, src/normal.c + +Patch 8.1.2141 +Problem: :tselect has an extra hit-enter prompt. +Solution: Do not set need_wait_return when only moving the cursor. + (closes #5040) +Files: src/message.c, src/testdir/test_tagjump.vim, + src/testdir/dumps/Test_tselect_1.dump + +Patch 8.1.2142 +Problem: Some key mappings do not work with modifyOtherKeys. +Solution: Remove the Shift modifier if it is already included in the key. +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.1.2143 +Problem: Cannot see each command even when 'verbose' is set. +Solution: List each command when 'verbose' is at least 16. +Files: src/ex_docmd.c src/testdir/test_tagjump.vim, + src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_verbose_option_1.dump + +Patch 8.1.2144 +Problem: Side effects when using t_ti to enable modifyOtherKeys. +Solution: Add t_TI and t_TE. +Files: runtime/doc/term.txt, src/term.c, src/optiondefs.h, src/term.h, + +Patch 8.1.2145 +Problem: Cannot map <C-H> when modifyOtherKeys is enabled. +Solution: Add the <C-H> mapping twice, both with modifier and as 0x08. Use + only the first one when modifyOtherKeys has been detected. +Files: src/term.c, src/eval.c, src/getchar.c, src/globals.h, + src/gui_mac.c, src/gui_w32.c, src/highlight.c, src/if_ole.cpp, + src/main.c, src/map.c, src/menu.c, src/misc2.c, src/option.c, + src/proto/misc2.pro, src/proto/term.pro, + src/testdir/test_termcodes.vim, src/structs.h, src/terminal.c, + src/usercmd.c, src/vim.h + +Patch 8.1.2146 (after 8.1.2145) +Problem: Build failure. +Solution: Include omitted changed file. +Files: src/optionstr.c + +Patch 8.1.2147 +Problem: Crash when allocating memory fails. (Zu-Ming Jiang) +Solution: Check that 'spellcapcheck' is not NULL. (closes #5048) +Files: src/spell.c + +Patch 8.1.2148 +Problem: No test for right click extending Visual area. +Solution: Add a test. (Dominique Pelle, closes #5018) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2149 +Problem: Crash when running out of memory very early. +Solution: Do not use IObuff when it's NULL. (closes #5052) +Files: src/message.c + +Patch 8.1.2150 +Problem: No test for 'ttymouse' set from xterm version response. +Solution: Test the three possible values. +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2151 +Problem: State test is a bit flaky. +Solution: Add to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.2152 +Problem: Problems navigating tags file on macOS Catalina. +Solution: Use fseek instead of lseek. (John Lamb, fixes #5061) +Files: src/tag.c + +Patch 8.1.2153 +Problem: Combining text property and syntax highlight is wrong. (Nick + Jensen) +Solution: Compute the syntax highlight attribute much earlier. + (closes #5057) +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_syn_1.dump + +Patch 8.1.2154 +Problem: Quickfix window height wrong when there is a tabline. (Daniel + Hahler) +Solution: Take the tabline height into account. (closes #5058) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.2155 +Problem: In a terminal window 'cursorlineopt' does not work properly. +Solution: Check the 'cursorlineopt' value. (closes #5055) +Files: src/drawline.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_normal_1.dump, + src/testdir/dumps/Test_terminal_normal_2.dump, + src/testdir/dumps/Test_terminal_normal_3.dump + +Patch 8.1.2156 +Problem: First character after Tab is not highlighted. +Solution: Remember the syntax attribute for a column. +Files: src/drawline.c, src/testdir/test_syntax.vim, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.2157 +Problem: Libvterm source files missing from distribution. +Solution: Rename source files. (closes #5065) +Files: Filelist + +Patch 8.1.2158 +Problem: Terminal attributes missing in Terminal-normal mode. +Solution: Use "syntax_attr". +Files: src/drawline.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_dumpload.dump + +Patch 8.1.2159 +Problem: Some mappings are listed twice. +Solution: Skip mappings duplicated for modifyOtherKeys. (closes #5064) +Files: src/map.c, src/testdir/test_mapping.vim + +Patch 8.1.2160 +Problem: Cannot build with +syntax but without +terminal. +Solution: Add #ifdef. +Files: src/drawline.c + +Patch 8.1.2161 +Problem: Mapping test fails. +Solution: Run the test separately. +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 8.1.2162 +Problem: Popup resize test is flaky. (Christian Brabandt) +Solution: Add the function to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.2163 +Problem: Cannot build with +spell but without +syntax. +Solution: Add #ifdef. (John Marriott) +Files: src/drawline.c + +Patch 8.1.2164 +Problem: Stuck when using "j" in a popupwin with popup_filter_menu if a + line wraps. +Solution: Check the cursor line is visible. (closes #4577) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_wrap_1.dump, + src/testdir/dumps/Test_popupwin_wrap_2.dump + +Patch 8.1.2165 +Problem: Mapping test fails on Mac. +Solution: Remove the default Mac mapping. +Files: src/testdir/test_mapping.vim + +Patch 8.1.2166 +Problem: Rubyeval() not tested as a method. +Solution: Change a test case. +Files: src/testdir/test_ruby.vim + +Patch 8.1.2167 +Problem: Mapping test fails on MS-Windows. +Solution: Remove all the existing Insert-mode mappings. +Files: src/testdir/test_mapping.vim + +Patch 8.1.2168 +Problem: Heredoc assignment not skipped in if block. +Solution: Check if "skip" is set. (closes #5063) +Files: src/evalvars.c, src/testdir/test_let.vim + +Patch 8.1.2169 +Problem: Terminal flags are never reset. +Solution: Reset the flags when setting 'term'. +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.1.2170 (after 8.1.2169) +Problem: Cannot build without the +termresponse feature. +Solution: Add #ifdef. +Files: src/term.c + +Patch 8.1.2171 +Problem: Mouse support not always available. +Solution: Enable mouse support also in tiny version. Do not define + FEAT_MOUSE_XTERM on MS-Windows (didn't really work). +Files: src/feature.h, src/edit.c, src/evalfunc.c, src/ex_getln.c, + src/getchar.c, src/message.c, src/misc1.c, src/mouse.c, + src/move.c, src/normal.c, src/ops.c, src/option.c, + src/optionstr.c, src/os_unix.c, src/os_win32.c, src/register.c, + src/term.c, src/testing.c, src/window.c, src/globals.h, + src/option.h, src/optiondefs.h, src/os_win32.h, src/vim.h, + src/version.c + +Patch 8.1.2172 +Problem: Spell highlight is wrong at start of the line. +Solution: Fix setting the "v" variable. (closes #5078) +Files: src/drawline.c, src/testdir/test_spell.vim, + src/testdir/dumps/Test_spell_1.dump + +Patch 8.1.2173 +Problem: Searchit() has too many arguments. +Solution: Move optional arguments to a struct. Add the "wrapped" argument. +Files: src/search.c, src/proto/search.pro, src/structs.h, src/evalfunc.c, + src/ex_docmd.c, src/gui.c, src/quickfix.c, src/spell.c, src/tag.c, + src/ex_getln.c, src/insexpand.c, src/normal.c + +Patch 8.1.2174 +Problem: Screen not recognized as supporting "sgr" mouse codes. +Solution: Recognize screen 4.7. (Jordan Christiansen, closes #5042) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.1.2175 +Problem: Meson files are not recognized. +Solution: Add the meson filetype. (Liam Beguin, Nirbheek Chauhan, + closes #5056) Also recognize hollywood. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.2176 +Problem: Syntax attributes not combined with Visual highlighting. (Arseny + Nasokin) +Solution: Combine the attributes. (closes #5083) +Files: src/drawline.c, src/testdir/test_syntax.vim, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.2177 +Problem: Dart files are not recognized. +Solution: Add a filetype rule. (Eugene Ciurana, closes #5087) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.2178 +Problem: Accessing uninitialized memory in test. +Solution: Check if there was a match before using the match position. + (Dominique Pelle, closes #5088) +Files: src/search.c + +Patch 8.1.2179 +Problem: Pressing "q" at the more prompt doesn't stop Python output. (Daniel + Hahler) +Solution: Check for got_int in writer(). (closes #5053) + Also do this for Lua. +Files: src/if_py_both.h, src/if_lua.c + +Patch 8.1.2180 +Problem: Error E303 is not useful when 'directory' is empty. +Solution: Skip the error message. (Daniel Hahler, #5067) +Files: src/memline.c, src/testdir/test_recover.vim, + runtime/doc/options.txt, runtime/doc/message.txt + +Patch 8.1.2181 +Problem: Highlighting wrong when item follows tab. +Solution: Don't use syntax attribute when n_extra is non-zero. + (Christian Brabandt, closes #5076) +Files: src/drawline.c, src/feature.h, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.2182 +Problem: Test42 seen as binary by git diff. +Solution: Add .gitattributes file. Make explicit that 'cpo' does not + contain 'S'. (Daniel Hahler, closes #5072) +Files: .gitattributes, Filelist, src/testdir/test42.in + +Patch 8.1.2183 +Problem: Running a test is a bit verbose. +Solution: Silence some messages. (Daniel Hahler, closes #5070) +Files: src/testdir/Makefile + +Patch 8.1.2184 +Problem: Option context is not copied when splitting a window. (Daniel + Hahler) +Solution: Copy the option context, so that ":verbose set" works. + (closes #5066) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.1.2185 (after 8.1.2181) +Problem: Syntax test fails. +Solution: Add missing file patch. +Files: src/testdir/test_syntax.vim + +Patch 8.1.2186 (after 8.1.2184) +Problem: Cannot build without the +eval feature. +Solution: Move line inside #ifdef. +Files: src/option.c + +Patch 8.1.2187 +Problem: Error for bad regexp even though regexp is not used when writing + a file. (Arseny Nasokin) +Solution: Ignore regexp errors. (closes #5059) +Files: src/cmdexpand.c, src/ex_docmd.c, src/testdir/test_writefile.vim + +Patch 8.1.2188 (after 8.1.2187) +Problem: Build error for missing define. +Solution: Add missing change. +Files: src/vim.h + +Patch 8.1.2189 +Problem: Syntax highlighting wrong for tab. +Solution: Don't clear syntax attribute n_extra is non-zero. +Files: src/drawline.c, src/testdir/test_syntax.vim, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.2190 +Problem: Syntax test fails on Mac. +Solution: Limit the window size to 20 rows. +Files: src/testdir/test_syntax.vim, + src/testdir/dumps/Test_syntax_c_01.dump + +Patch 8.1.2191 +Problem: When using modifyOtherKeys CTRL-X mode may not work. +Solution: Recognize a control character also in the form with a modifier. +Files: src/getchar.c + +Patch 8.1.2192 +Problem: Cannot easily fill the info popup asynchronously. +Solution: Add the "popuphidden" value to 'completeopt'. (closes #4924) +Files: src/popupmenu.c, src/proto/popupmenu.pro, src/popupwin.c, + src/proto/popupwin.pro, src/vim.h, runtime/doc/options.txt, + runtime/doc/insert.txt, src/ex_cmds.c, src/proto/ex_cmds.pro, + src/optionstr.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_hidden_1.dump, + src/testdir/dumps/Test_popupwin_infopopup_hidden_2.dump, + src/testdir/dumps/Test_popupwin_infopopup_hidden_3.dump + +Patch 8.1.2193 +Problem: Popup_setoptions(popup_getoptions()) does not work. +Solution: Also accept a list with three entries for "moved" and + "mousemoved". (closes #5081) +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.2194 +Problem: ModifyOtherKeys is not enabled by default. +Solution: Add t_TI and t_TE to the builtin xterm termcap. +Files: runtime/doc/map.txt, src/term.c + +Patch 8.1.2195 +Problem: Vim does not exit when closing a terminal window and it is the + last window. +Solution: Exit Vim if the closed terminal window is the last one. + (closes #4539) +Files: runtime/doc/terminal.txt, src/terminal.c, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/testdir/test_terminal.vim + +Patch 8.1.2196 +Problem: MS-Windows: running tests with MSVC lacks updates. +Solution: Improve running individual tests on MS-Windows. (closes #4922) +Files: src/Make_mvc.mak, src/testdir/Make_dos.mak + +Patch 8.1.2197 +Problem: ExitPre autocommand may cause accessing freed memory. +Solution: Check the window pointer is still valid. (closes #5093) +Files: src/testdir/test_exit.vim, src/ex_docmd.c + +Patch 8.1.2198 +Problem: Crash when using :center in autocommand. +Solution: Bail out early for an empty line. (Dominique Pelle, closes #5095) +Files: src/ex_cmds.c, src/testdir/test_textformat.vim + +Patch 8.1.2199 +Problem: Build failure when using normal features without GUI and EXITFREE + defined. +Solution: Add #ifdef. (Dominique Pelle, closes #5106) +Files: src/scriptfile.c + +Patch 8.1.2200 +Problem: Crash when memory allocation fails. +Solution: Check for NULL curwin and curbuf. (Christian Brabandt, + closes #4839) +Files: src/getchar.c + +Patch 8.1.2201 +Problem: Cannot build with dynamically linked Python 3.8. +Solution: Implement py3__Py_DECREF() and py3__Py_XDECREF(). (Ken Takata, + closes #4080) +Files: src/if_python3.c + +Patch 8.1.2202 +Problem: MS-Windows: build failure with GUI and small features. +Solution: Add #ifdef. (Michael Soyka, closes #5097) +Files: src/gui_w32.c + +Patch 8.1.2203 +Problem: Running libvterm tests without the +terminal feature. +Solution: Only add the libvterm test target when building libvterm. +Files: src/configure.ac, src/auto/configure, src/config.mk.in, + src/Makefile + +Patch 8.1.2204 +Problem: Crash on exit when closing terminals. (Corey Hickey) +Solution: Actually wait for the job to stop. (closes #5100) +Files: src/terminal.c + +Patch 8.1.2205 +Problem: Sign entry structure has confusing name. +Solution: Rename signlist_T to sign_entry_T and prefix se_ to the fields. +Files: src/structs.h, src/netbeans.c, src/sign.c, src/globals.h, + src/drawline.c + +Patch 8.1.2206 +Problem: No test for fixed issue #3893. +Solution: Add a test. (Christian Brabandt, #3893) +Files: src/testdir/test_display.vim, + src/testdir/dumps/Test_winline_rnu.dump + +Patch 8.1.2207 +Problem: "gn" doesn't work quite right. (Jaehwang Jerry Jung) +Solution: Improve and simplify the search logic. (Christian Brabandt, + closes #5103, closes #5075) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.1.2208 +Problem: Unix: Tabs in output might be expanded to spaces. +Solution: Reset the XTABS flag. (closes #5108) +Files: src/os_unix.c + +Patch 8.1.2209 +Problem: LF in escape codes may be expanded to CR-LF. +Solution: Do not expand LF in escape codes to CR-LF. (closes #5107) +Files: src/term.c + +Patch 8.1.2210 +Problem: Using negative offset for popup_create() does not work. +Solution: Use -1 instead of zero. (closes #5111) +Files: src/popupwin.c, src/popupwin.vim, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_corners.dump + +Patch 8.1.2211 +Problem: Listener callback "added" argument is not the total. (Andy + Massimino) +Solution: Compute the total. (closes #5105) +Files: src/change.c, src/testdir/test_listener.vim + +Patch 8.1.2212 +Problem: Cannot see the selection type in :reg output. (Ayberk Ayd谋n) +Solution: Add c/l/b. (Christian Brabandt, closes #5110, closes #4546) +Files: runtime/doc/change.txt, src/register.c, + src/testdir/test_registers.vim + +Patch 8.1.2213 +Problem: Popup_textprop tests fail. +Solution: Adjust the column and line positioning. +Files: src/popupwin.c + +Patch 8.1.2214 +Problem: Too much is redrawn when 'cursorline' is set. +Solution: Don't do a complete redraw. (closes #5079) +Files: src/main.c, src/change.c, src/drawscreen.c, + src/testdir/dumps/Test_Xcursorline_13.dump, + src/testdir/dumps/Test_Xcursorline_14.dump, + src/testdir/dumps/Test_Xcursorline_15.dump, + src/testdir/dumps/Test_Xcursorline_16.dump, + src/testdir/dumps/Test_Xcursorline_17.dump, + src/testdir/dumps/Test_Xcursorline_18.dump + +Patch 8.1.2215 +Problem: Unreachable code in adjusting text prop columns. +Solution: Remove the code. (Christian Brabandt) +Files: src/textprop.c + +Patch 8.1.2216 +Problem: Text property in wrong place after :substitute. +Solution: Pass the new column instead of the old one. (Christian Brabandt, + closes #4427) +Files: src/ex_cmds.c, src/testdir/test_textprop.vim + +Patch 8.1.2217 +Problem: Compiler warning for unused variable. +Solution: Move variable inside #ifdef. (John Marriott) +Files: src/ex_cmds.c + +Patch 8.1.2218 +Problem: "gN" is off by one in Visual mode. +Solution: Check moving forward. (Christian Brabandt, #5075) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.1.2219 +Problem: No autocommand for open window with terminal. +Solution: Add TerminalWinOpen. (Christian Brabandt) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/terminal.c, + src/testdir/test_terminal.vim, src/vim.h + +Patch 8.1.2220 +Problem: :cfile does not abort like other quickfix commands. +Solution: Abort when desired. Add tests for aborting. (Yegappan Lakshmanan, + closes #5121) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.2221 +Problem: Cannot filter :disp output. +Solution: Support filtering :disp output. (Andy Massimino, closes #5117) +Files: runtime/doc/various.txt, src/register.c, + src/testdir/test_filter_cmd.vim + +Patch 8.1.2222 +Problem: Accessing invalid memory. (Dominique Pelle) +Solution: Reset highlight_match every time. (closes #5125) +Files: src/ex_getln.c + +Patch 8.1.2223 +Problem: Cannot see what buffer an ml_get error is for. +Solution: Add the buffer number and name in the message +Files: src/memline.c + +Patch 8.1.2224 +Problem: Cannot build Amiga version. +Solution: Add dummy mch_setmouse(). (Ola S枚der, closes #5126) +Files: src/os_amiga.c, src/proto/os_amiga.pro + +Patch 8.1.2225 +Problem: The "last used" info of a buffer is under used. +Solution: Add "lastused" to getbufinfo(). List buffers sorted by last-used + field. (Andy Massimino, closes #4722) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/windows.txt, src/buffer.c, src/evalbuffer.c, + src/ex_getln.c, src/misc1.c, src/option.c, src/option.h, + src/proto/misc1.pro, src/proto/viminfo.pro, + src/testdir/test_bufwintabinfo.vim, src/testdir/test_cmdline.vim, + src/testdir/test_excmd.vim, src/undo.c, src/vim.h, src/viminfo.c + +Patch 8.1.2226 +Problem: Cannot use system copy/paste in non-xterm terminals. +Solution: Instead of setting 'mouse' to "a" set it to "nvi" in defaults.vim. +Files: runtime/defaults.vim, runtime/doc/term.txt, + runtime/doc/options.txt + +Patch 8.1.2227 +Problem: Layout wrong if 'lines' changes while cmdline window is open. +Solution: Do not restore the window layout if 'lines' changed. + (closes #5130) +Files: src/window.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_cmdwin_restore_1.dump, + src/testdir/dumps/Test_cmdwin_restore_2.dump, + src/testdir/dumps/Test_cmdwin_restore_3.dump + +Patch 8.1.2228 +Problem: screenpos() returns wrong values when 'number' is set. (Ben + Jackson) +Solution: Compare the column with the window width. (closes #5133) +Files: src/move.c, src/testdir/test_cursor_func.vim + +Patch 8.1.2229 +Problem: Cannot color number column above/below cursor differently. +Solution: Add LineNrAbove and LineNrBelow. (Shaun Brady, closes #624) +Files: runtime/doc/syntax.txt, runtime/doc/options.txt, src/optiondefs.h, + src/drawline.c, src/vim.h, src/testdir/test_number.vim, + src/testdir/dumps/Test_relnr_colors_1.dump, + src/testdir/dumps/Test_relnr_colors_2.dump, + src/testdir/dumps/Test_relnr_colors_3.dump, + src/testdir/dumps/Test_relnr_colors_4.dump + +Patch 8.1.2230 +Problem: MS-Windows: testing external commands can be improved. +Solution: Adjust tests, remove duplicate test. (closes #4928) +Files: src/testdir/test_normal.vim, src/testdir/test_system.vim, + src/testdir/test_terminal.vim, src/testdir/test_undo.vim + +Patch 8.1.2231 +Problem: Not easy to move to the middle of a text line. +Solution: Add the gM command. (Yasuhiro Matsumoto, closes #2070) +Files: runtime/doc/index.txt, runtime/doc/motion.txt, + runtime/doc/quickref.txt, runtime/doc/usr_25.txt, src/normal.c, + src/testdir/test_normal.vim + +Patch 8.1.2232 +Problem: MS-Windows: compiler warning for int size. +Solution: Add type cast. (Mike Williams) +Files: src/normal.c + +Patch 8.1.2233 +Problem: Cannot get the Vim command line arguments. +Solution: Add v:argv. (Dmitri Vereshchagin, closes #1322) +Files: runtime/doc/eval.txt, src/evalvars.c, src/vim.h, + src/proto/evalvars.pro, src/main.c, src/testdir/test_startup.vim + +Patch 8.1.2234 +Problem: get_short_pathname() fails depending on encoding. +Solution: Use the wide version of the library function. (closes #5129) +Files: src/filepath.c, src/testdir/test_shortpathname.vim + +Patch 8.1.2235 +Problem: "C" with 'virtualedit' set does not include multibyte char. +Solution: Include the whole multibyte char. (Nobuhiro Takasaki, + closes #5152) +Files: src/ops.c, src/testdir/test_virtualedit.vim + +Patch 8.1.2236 +Problem: Ml_get error if pattern matches beyond last line. +Solution: Adjust position if needed. (Christian Brabandt, closes #5139) +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.1.2237 +Problem: Mode() result after using "r" depends on whether CURSOR_SHAPE is + defined. (Christian Brabandt) +Solution: Move the #ifdef to only skip ui_cursor_shape(). +Files: src/normal.c + +Patch 8.1.2238 +Problem: Error in docs tags goes unnoticed. +Solution: Adjust tags build command. (Ken Takata, closes #5158) +Files: Filelist, .travis.yml, runtime/doc/Makefile, + runtime/doc/doctags.vim + +Patch 8.1.2239 +Problem: CI fails when running tests without building Vim. +Solution: Skip creating doc tags if the execute does not exist. +Files: runtime/doc/Makefile + +Patch 8.1.2240 +Problem: Popup window width changes when scrolling. +Solution: Also adjust maxwidth when applying minwidth and there is a + scrollbar. Fix off-by-one error. (closes #5162) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_11.dump, + src/testdir/dumps/Test_popupwin_scroll_12.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump, + src/testdir/dumps/Test_popupwin_previewpopup_5.dump, + src/testdir/dumps/Test_popupwin_previewpopup_7.dump, + src/testdir/dumps/Test_popupwin_previewpopup_8.dump, + +Patch 8.1.2241 +Problem: Match highlight does not combine with 'wincolor'. +Solution: Apply 'wincolor' last on top of any other attribute. (closes #5159) +Files: src/drawline.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_matches.dump + src/testdir/dumps/Test_popupwin_menu_01.dump + src/testdir/dumps/Test_popupwin_menu_02.dump + src/testdir/dumps/Test_popupwin_menu_04.dump + +Patch 8.1.2242 +Problem: Creating docs tags uses user preferences. (Tony Mechelynck) +Solution: Add "--clean". +Files: runtime/doc/Makefile + +Patch 8.1.2243 +Problem: Typos in comments. +Solution: Fix the typos. (Dominique Pelle, closes #5160) Also adjust + formatting a bit. +Files: src/autocmd.c, src/buffer.c, src/cindent.c, src/crypt.c, + src/diff.c, src/getchar.c, src/globals.h, src/gui_gtk_x11.c, + src/highlight.c, src/insexpand.c, src/macros.h, src/map.c, + src/memline.c, src/message.c, src/option.c, src/os_unix.c, + src/pty.c, src/quickfix.c, src/regexp_nfa.c, src/register.c, + src/spellsuggest.c, src/structs.h, src/textprop.c, src/ui.c, + src/undo.c, src/vim.h, src/viminfo.c + +Patch 8.1.2244 +Problem: 'wrapscan' is not used for "gn". +Solution: Only reset 'wrapscan' for the first search round. (closes #5164) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.1.2245 +Problem: Third character of 'listchars' tab shows in wrong place when + 'breakindent' is set. +Solution: Set c_final to NUL. (Naruhiko Nishino, closes #5165) +Files: src/drawline.c, src/testdir/test_breakindent.vim + +Patch 8.1.2246 +Problem: Some tests are still in old style. +Solution: Change a few tests to new style. (Yegappan Lakshmanan) +Files: src/testdir/Make_all.mak, src/testdir/test49.ok, + src/testdir/test49.vim, src/testdir/test_trycatch.vim, + src/testdir/test_vimscript.vim + +Patch 8.1.2247 +Problem: "make vimtags" does not work in runtime/doc. +Solution: Test existence with "which" instead of "test -x". (Ken Takata) +Files: runtime/doc/Makefile + +Patch 8.1.2248 +Problem: CTRL-W dot does not work in a terminal when modifyOtherKeys is + enabled. +Solution: Use the modifier when needed. Pass the modifier along with the + key to avoid mistakes. +Files: src/terminal.c, src/proto/terminal.pro, src/mouse.c + +Patch 8.1.2249 +Problem: "make vimtags" does not print any message. +Solution: Add a message that the tags have been updated. +Files: runtime/doc/Makefile + +Patch 8.1.2250 +Problem: CTRL-U and CTRL-D don't work in popup window. +Solution: Initialize 'scroll'. Add "lastline" in popup_getpos(). + (closes #5170) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + runtime/doc/popup.txt + +Patch 8.1.2251 +Problem: ":term command" may not work without a shell. +Solution: Add the ++shell option to :term. (closes #3340) +Files: runtime/doc/terminal.txt, src/terminal.c, + src/os_unix.c, src/proto/os_unix.pro, + src/testdir/test_terminal.vim + +Patch 8.1.2252 +Problem: Compiler warning for int size. +Solution: Add type cast. (Mike Williams) +Files: src/filepath.c + +Patch 8.1.2253 +Problem: Using "which" to check for an executable is not reliable. +Solution: Use "command -v" instead. Also exit with error code when + generating tags has an error. (closes #5174) +Files: runtime/doc/Makefile + +Patch 8.1.2254 +Problem: MS-Windows: mouse scroll wheel doesn't work in popup. +Solution: Handle mouse wheel events separately. (closes #5138) +Files: src/gui_w32.c, src/gui.c, src/proto/gui.pro + +Patch 8.1.2255 +Problem: ":term ++shell" does not work on MS-Windows. +Solution: Add MS-Windows support. +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.1.2256 (after 8.1.2255) +Problem: Test for ":term ++shell" fails on MS-Windows. +Solution: Accept failure of "dir" executable. +Files: src/testdir/test_terminal.vim + +Patch 8.1.2257 +Problem: MS-Windows GUI: scroll wheel always uses current window. +Solution: Add the 'scrollfocus' option for MS-Windows. +Files: runtime/doc/options.txt, src/gui_w32.c, src/optiondefs.h, + src/option.h + +Patch 8.1.2258 +Problem: May get hit-enter prompt after entering a number. (Malcolm Rowe) +Solution: Put back accidentally deleted lines. (closes #5176) +Files: src/misc1.c + +Patch 8.1.2259 +Problem: Running tests may leave XfakeHOME behind. +Solution: Source summarize.vim without using setup.vim. (closes #5177) + Also fix that on MS-Windows the test log isn't echoed. +Files: src/testdir/Makefile, src/testdir/Make_dos.mak + +Patch 8.1.2260 +Problem: Terminal test may fail on MS-Windows. +Solution: Catch the situation that "term dir" fails with a CreateProcess + error. +Files: src/testdir/test_terminal.vim + +Patch 8.1.2261 +Problem: With modifyOtherKeys set 'noesckeys' doesn't work. (James McCoy) +Solution: Disable modifyOtherKeys while in Insert mode when 'noesckeys' is + set. (closes #5180) +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.1.2262 +Problem: Unpack assignment in function not recognized. +Solution: Skip over "[a, b]". (closes #5051) +Files: src/userfunc.c, src/testdir/test_let.vim + +Patch 8.1.2263 +Problem: 'noesckeys' test fails in GUI. +Solution: Skip the test in the GUI. +Files: src/testdir/test_edit.vim + +Patch 8.1.2264 +Problem: There are two test files for :let. +Solution: Merge the two files. +Files: src/testdir/test_assign.vim, src/testdir/test_let.vim, + src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 8.1.2265 +Problem: When popup with "botleft" does not fit it flips incorrectly. +Solution: Only flip when there is more space on the other side. Add the + "posinvert" option to disable flipping and do it in both + directions if enabled. (closes #5151) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, src/vim.h, + src/testdir/dumps/Test_popupwin_nospace.dump + +Patch 8.1.2266 +Problem: Position unknown for a mouse click in a popup window. +Solution: Set v:mouse_col and v:mouse_lnum. (closes #5171) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.2267 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Rearrange the code. +Files: src/buffer.c + +Patch 8.1.2268 +Problem: Spell file flag zero is not recognized. +Solution: Use -1 as an error value, so that zero can be used as a valid flag + number. +Files: src/spellfile.c, src/testdir/test_spell.vim + +Patch 8.1.2269 +Problem: Tags file with very long line stops using binary search. +Solution: Reallocate the buffer if needed. +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.1.2270 +Problem: "gf" is not tested in Visual mode. +Solution: Add Visual mode test and test errors. (Dominique Pelle, + closes #5197) +Files: src/testdir/test_gf.vim + +Patch 8.1.2271 +Problem: Build error if FEAT_TAG_BINS is not defined. (John Marriott) +Solution: Add #ifdef. +Files: src/tag.c + +Patch 8.1.2272 +Problem: Test may hang at more prompt. +Solution: Reset 'more' after resetting 'compatible'. (Michael Soyka) +Files: src/testdir/test_vimscript.vim + +Patch 8.1.2273 +Problem: Wrong default when "pos" is changed with popup_atcursor(). +Solution: Adjust the default line and col when "pos" is not the default + value. (#5151) +Files: runtime/doc/popup.txt, src/structs.h, src/popupwin.c, + src/proto/popupwin.pro, src/ex_cmds.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_atcursor_pos.dump + +Patch 8.1.2274 +Problem: Newlines in 'balloonexpr' result only work in the GUI. +Solution: Also recognize newlines in the terminal. (closes #5193) +Files: src/popupmenu.c, src/testdir/test_balloon.vim, + src/testdir/dumps/Test_balloon_eval_term_01.dump, + src/testdir/dumps/Test_balloon_eval_term_01a.dump, + src/testdir/dumps/Test_balloon_eval_term_02.dump + +Patch 8.1.2275 +Problem: Using "seesion" looks like a mistake. +Solution: Use an underscore to make the function sort first. +Files: src/testdir/test_mksession.vim + +Patch 8.1.2276 +Problem: MS-Windows: session test leaves files behind. +Solution: Wipe out buffers before deleting the directory. (closes #5187) +Files: src/testdir/test_mksession.vim + +Patch 8.1.2277 +Problem: Terminal window is not updated when info popup changes. +Solution: Redraw windows when re-using an info popup. (closes #5192) +Files: src/ex_cmds.c + +Patch 8.1.2278 +Problem: Using "cd" with "exe" may fail. +Solution: Use chdir() instead. +Files: src/testdir/test_autochdir.vim, src/testdir/test_autocmd.vim, + src/testdir/test_cd.vim, src/testdir/test_expand.vim, + src/testdir/test_find_complete.vim, src/testdir/test_findfile.vim, + src/testdir/test_getcwd.vim, src/testdir/test_shortpathname.vim + +Patch 8.1.2279 +Problem: Computation of highlight attributes is too complicated. +Solution: Simplify the attribute computation and make it more consistent. + (closes #5190) Fix that 'combine' set to zero doesn't work. +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.1.2280 +Problem: Crash when passing partial to substitute(). +Solution: Take extra arguments into account. (closes #5186) +Files: src/userfunc.c, src/structs.h, src/regexp.c, src/proto/regexp.pro, + src/testdir/test_substitute.vim + +Patch 8.1.2281 +Problem: 'showbreak' cannot be set for one window. +Solution: Make 'showbreak' global-local. +Files: src/optiondefs.h, src/option.c, src/option.h, + src/proto/option.pro, src/structs.h, src/charset.c, + src/drawline.c, src/edit.c, src/move.c, src/normal.c, src/ops.c, + src/optionstr.c, src/testdir/test_highlight.vim, + src/testdir/test_breakindent.vim, runtime/doc/options.txt + +Patch 8.1.2282 +Problem: Crash when passing many arguments through a partial. (Andy + Massimino) +Solution: Check the number of arguments. (closes #5186) +Files: src/userfunc.c, src/proto/userfunc.pro, src/evalfunc.c, + src/regexp.c, src/testdir/test_expr.vim, + src/testdir/test_substitute.vim + +Patch 8.1.2283 +Problem: Missed one use of p_sbr. +Solution: Add missing p_sbr change. +Files: src/indent.c + +Patch 8.1.2284 +Problem: Compiler warning for unused variable. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/move.c + +Patch 8.1.2285 +Problem: Padding in structures wastes memory. +Solution: Move fields to avoid padding. (Dominique Pelle, closes #5202) +Files: src/structs.h + +Patch 8.1.2286 +Problem: Using border highlight in popup window leaks memory. +Solution: Free memory before overwriting. (Dominique Pelle, closes #5203) +Files: src/popupwin.c + +Patch 8.1.2287 +Problem: Using EndOfBuffer highlight in popup does not look good. +Solution: Do not EndOfBuffer highlight. (closes #5204) +Files: src/drawscreen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_02.dump, + src/testdir/dumps/Test_popupwin_04.dump, + src/testdir/dumps/Test_popupwin_04a.dump, + src/testdir/dumps/Test_popupwin_05.dump, + src/testdir/dumps/Test_popupwin_06.dump, + src/testdir/dumps/Test_popupwin_07.dump, + src/testdir/dumps/Test_popupwin_08.dump + +Patch 8.1.2288 +Problem: Not using all space when popup with "topleft" flips to above. +Solution: Recompute the height when a popup flips from below to above. + (closes #5151) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_nospace.dump + +Patch 8.1.2289 +Problem: After :diffsplit closing the window does not disable diff. +Solution: Add "closeoff" to 'diffopt' and add it to the default. +Files: runtime/doc/options.txt, src/optiondefs.h, src/diff.c, + src/proto/diff.pro, src/window.c, src/testdir/test_diffmode.vim + +Patch 8.1.2290 +Problem: Autocommand test fails. +Solution: Remove 'closeoff' from 'diffopt'. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.2291 +Problem: Memory leak when executing command in a terminal. +Solution: Free "argv". (Dominique Pelle, closes #5208) +Files: src/terminal.c + +Patch 8.1.2292 +Problem: v:mouse_winid not set on click in popup window. +Solution: Set v:mouse_winid. (closes #5171) +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.1.2293 +Problem: Join adds trailing space when second line is empty. (Brennan + Vincent) +Solution: Do not add a trailing space. +Files: src/ops.c, src/testdir/test_join.vim + +Patch 8.1.2294 +Problem: Cursor position wrong when characters are concealed and a search + causes a scroll. +Solution: Fix the cursor column in a concealed line after window scroll. + (closes #5215, closes #5012) +Files: src/drawscreen.c, src/testdir/test_matchadd_conceal.vim + +Patch 8.1.2295 +Problem: If buffer of popup is in another window cursorline sign shows. +Solution: Check the group of the sign. +Files: src/option.c, src/proto/option.pro, src/sign.c, + src/proto/sign.pro, src/screen.c, src/drawline.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_cursorline_8.dump + +Patch 8.1.2296 +Problem: Text properties are not combined with syntax by default. +Solution: Make it work as documented. (closes #5190) +Files: src/testprop.c, src/testdir/test_textprop.vim + +Patch 8.1.2297 +Problem: The ex_vimgrep() function is too long. +Solution: Split it in three parts. (Yegappan Lakshmanan, closes #5211) +Files: src/quickfix.c + +Patch 8.1.2298 (after 8.1.2296) +Problem: Missing part of 8.1.2296. +Solution: s/test/text/ +Files: src/textprop.c + +Patch 8.1.2299 +Problem: ConPTY in MS-Windows 1909 is still wrong. +Solution: Use same solution as for 1903. (Nobuhiro Takasaki, closes #5217) +Files: src/misc2.c, src/os_win32.c + +Patch 8.1.2300 +Problem: Redraw breaks going through list of popup windows. +Solution: Use different flags for popup_reset_handled(). (closes #5216) +Files: src/popupwin.c, src/proto/popupwin.pro, src/structs.h, src/vim.h, + src/mouse.c, src/testdir/test_popupwin.vim + +Patch 8.1.2301 +Problem: MS-Windows GUI: drawing error when background color changes. +Solution: Implement gui_mch_new_colors(). (Simon Sadler) +Files: src/gui_w32.c + +Patch 8.1.2302 +Problem: :lockmarks does not work for '[ and ']. +Solution: save and restore '[ and '] marks. (James McCoy, closes #5222) +Files: runtime/doc/motion.txt, src/bufwrite.c, src/diff.c, src/ex_cmds.c, + src/fileio.c, src/indent.c, src/ops.c, src/register.c, + src/testdir/test_autocmd.vim, src/testdir/test_diffmode.vim + +Patch 8.1.2303 +Problem: Cursor in wrong position after horizontal scroll. +Solution: Set w_valid_leftcol. (closes #5214, closes #5224) +Files: src/move.c, src/testdir/test_matchadd_conceal.vim + +Patch 8.1.2304 +Problem: Cannot get the mouse position when getting a mouse click. +Solution: Add getmousepos(). +Files: runtime/doc/eval.txt, runtime/doc/popup.txt, src/mouse.c + src/proto/mouse.pro, src/evalfunc.c, src/popupwin.c, + src/popupwin.pro, src/testdir/test_popupwin.vim, + src/testdir/test_functions.vim + +Patch 8.1.2305 +Problem: No warning for wrong entry in translations. +Solution: Check semicolons in keywords entry of desktop file. +Files: src/po/check.vim + +Patch 8.1.2306 +Problem: Double and triple clicks are not tested. +Solution: Test mouse clicks to select text. (closes #5226) +Files: src/testdir/test_termcodes.vim + +Patch 8.1.2307 +Problem: Positioning popup doesn't work for buffer-local textprop. +Solution: Make it work. (closes #5225) +Files: src/popupwin.c, src/testdir/test_popupwin_textprop.vim + +Patch 8.1.2308 +Problem: Deleting text before zero-width textprop removes it. +Solution: Keep zero-width textprop when deleting text. +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.1.2309 +Problem: Compiler warning for argument type. +Solution: Use linenr_T and cast to varnumber_T. (John Marriott) +Files: src/mouse.c + +Patch 8.1.2310 +Problem: No proper test for directory changes in quickfix. +Solution: Add a test that uses multiple directories. (Yegappan Lakshmanan, + closes #5230) +Files: src/testdir/test_quickfix.vim + +Patch 8.1.2311 +Problem: Warning for missing function prototype. +Solution: Add the proto. (Dominique Pelle, closes #5233) +Files: src/proto/popupwin.pro + +Patch 8.1.2312 +Problem: "line:" field in tags file not used. +Solution: Recognize the field and use the value. (Andy Massimino, Daniel + Hahler, closes #5232, closes #2546, closes #1057) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.1.2313 +Problem: Debugging where a delay comes from is not easy. +Solution: Use different values when calling ui_delay(). +Files: src/buffer.c, src/change.c, src/fileio.c, src/gui.c, + src/if_xcmdsrv.c, src/insexpand.c, src/main.c, src/normal.c, + src/screen.c, src/search.c, src/tag.c, src/term.c, src/ui.c + +Patch 8.1.2314 +Problem: vi' sometimes does not select anything. +Solution: Recognize an empty selection. (Christian Brabandt, closes #5183) +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.1.2315 +Problem: Not always using the right window when jumping to an error. +Solution: Add the "uselast" flag in 'switchbuf'. (closes #1652) +Files: runtime/doc/options.txt, src/option.h, src/optionstr.c, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.2316 +Problem: FORTIFY_SOURCE can also be present in CPPFLAGS. +Solution: Remove it in configure. (Benedikt Morbach, closes #2786) +Files: src/configure.ac, src/auto/configure + +Patch 8.1.2317 +Problem: No test for spell affix file with flag on suffix. +Solution: Add a test case. +Files: src/testdir/test_spell.vim + +Patch 8.1.2318 (after 8.1.2301) +Problem: MS-Windows GUI: main background shows in toolbar. +Solution: Remove transparency from the toolbar. (Simon Sadler) +Files: src/gui_w32.c + +Patch 8.1.2319 +Problem: Compiler warning for int size. +Solution: Add typecast. (Mike Williams) +Files: src/mouse.c + +Patch 8.1.2320 +Problem: Insufficient test coverage for quickfix. +Solution: Add more tests. Fix uncovered problem. (Yegappan Lakshmanan, + closes #5238) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.2321 +Problem: Cannot select all text with the mouse. (John Marriott) +Solution: Move limiting the mouse column to f_getmousepos(). (closes #5242) +Files: src/mouse.c + +Patch 8.1.2322 (after 8.1.2320) +Problem: Quickfix test fails in very big terminal. +Solution: Adjust the expected result for the width. (Masato Nishihata, + closes #5244) +Files: src/testdir/test_quickfix.vim + +Patch 8.1.2323 +Problem: Old MSVC version no longer tested. +Solution: Drop support for MSVC 2008 and older. (Ken Takata, closes #5248) +Files: src/INSTALLpc.txt, src/Make_mvc.mak, src/gui_w32.c, src/os_win32.c + +Patch 8.1.2324 +Problem: Width of scrollbar in popup menu not taken into account. +Solution: Add the width of the scrollbar. +Files: src/popupmenu.c, src/testdir/dumps/Test_popupwin_infopopup_6.dump, + src/testdir/test_popupwin.vim + +Patch 8.1.2325 +Problem: Crash when using balloon with empty line. +Solution: Handle empty lines. (Markus Braun) +Files: src/popupmenu.c, src/testdir/test_popup.vim + +Patch 8.1.2326 +Problem: Cannot parse a date/time string. +Solution: Add strptime(). (Stephen Wall, closes #5250) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/auto/configure, + src/config.h.in, src/configure.ac, src/evalfunc.c, src/os_unix.h, + src/testdir/test_functions.vim + +Patch 8.1.2327 +Problem: Cannot build with Hangul input. +Solution: Remove Hangul input support. +Files: Filelist, src/Makefile, runtime/doc/hangulin.txt, src/feature.h, + src/gui_gtk_x11.c, src/gui_x11.c, src/gui.c, src/edit.c, + src/mbyte.c, src/screen.c, src/ui.c, src/hangulin.c, + src/globals.h, src/proto/hangulin.pro, src/proto.h, + src/evalfunc.c, src/version.c, src/configure.ac, + src/auto/configure, src/config.h.in, src/config.mk.in + +Patch 8.1.2328 +Problem: A few hangul input pieces remain. +Solution: Update VMS makefile. +Files: src/Make_vms.mms + +Patch 8.1.2329 +Problem: Mouse multiple click test is a bit flaky. +Solution: Add it to the list of flaky tests. +Files: src/testdir/runtest.vim + +Patch 8.1.2330 (after 8.1.2314) +Problem: vi' does not always work when 'selection' is exclusive. +Solution: Adjust start position. +Files: src/search.c, src/testdir/test_textobjects.vim + +Patch 8.1.2331 +Problem: The option.c file is still very big. +Solution: Move a few functions to where they fit better. (Yegappan + Lakshmanan, closes #4895) +Files: src/option.c, src/proto/option.pro, src/change.c, + src/proto/change.pro, src/ex_getln.c, src/proto/ex_getln.pro, + src/globals.h, src/gui.c, src/proto/gui.pro, src/ui.c, + src/proto/ui.pro, src/term.c, src/proto/term.pro, src/indent.c, + src/proto/indent.pro + +Patch 8.1.2332 (after 8.1.2331) +Problem: Missing file in refactoring. +Solution: Update missing file. +Files: src/search.c + +Patch 8.1.2333 +Problem: With modifyOtherKeys CTRL-^ doesn't work. +Solution: Handle the exception. +Files: src/getchar.c, src/testdir/test_termcodes.vim + +Patch 8.1.2334 +Problem: Possible NULL pointer dereference in popup_locate(). (Coverity) +Solution: Check for NULL pointer. +Files: src/popupwin.c + +Patch 8.1.2335 +Problem: Error message for function arguments may use NULL pointer. + (Coverity) +Solution: Use the original function name. +Files: src/evalfunc.c + +Patch 8.1.2336 +Problem: When an expr mapping moves the cursor it is not restored. +Solution: Position the cursor after an expr mapping. (closes #5256) +Files: src/getchar.c, src/testdir/test_mapping.vim, + src/testdir/dumps/Test_map_expr_1.dump + +Patch 8.1.2337 +Problem: Double-click time sometimes miscomputed. +Solution: Correct time computation. (Dominique Pelle, closes #5259) +Files: src/mouse.c, src/testdir/runtest.vim + +Patch 8.1.2338 +Problem: Using Visual mark with :s gives E20 if not set. +Solution: Ignore errors when handling 'incsearch'. (closes #3837) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_substitute_14.dump + +Patch 8.1.2339 +Problem: Insufficient testing for quickfix. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #5261) +Files: src/testdir/test_quickfix.vim + +Patch 8.1.2340 +Problem: Quickfix test fails under valgrind and asan. +Solution: Make sure long line does not overflow IObuff. (Dominique Pelle, + closes #5263) Put back fix for large terminals. (Yegappan + Lakshmanan, closes #5264) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.1.2341 +Problem: Not so easy to interrupt a script programmatically. +Solution: Add the interrupt() function. (Yasuhiro Matsumoto, closes #2834) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/ex_eval.c, + src/testdir/Make_all.mak, src/testdir/test_interrupt.vim + +Patch 8.1.2342 +Problem: Random number generator in Vim script is slow. +Solution: Add rand() and srand(). (Yasuhiro Matsumoto, closes #1277) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/Make_all.mak, + src/testdir/test_random.vim + +Patch 8.1.2343 +Problem: Using time() for srand() is not very random. +Solution: use /dev/urandom if available +Files: src/evalfunc.c, src/testdir/test_random.vim + +Patch 8.1.2344 +Problem: Cygwin: warning for using strptime(). +Solution: Move defining _XOPEN_SOURCE and __USE_XOPEN to vim.h. (Ken Takata, + closes #5265) Use 700 for _XOPEN_SOURCE for mkdtemp(). +Files: src/os_unix.h, src/vim.h + +Patch 8.1.2345 +Problem: .cjs files are not recognized as Javascript. +Solution: Add the *.cjs pattern. (closes #5268) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.1.2346 +Problem: CTRL-R CTRL-R doesn't work with modifyOtherKeys. +Solution: Allow key codes when fetching argument for CTRL-R. (closes #5266) + Also fix CTRL-G in Insert mode. +Files: src/edit.c, src/ex_getln.c, src/testdir/test_termcodes.vim + +Patch 8.1.2347 (after 8.1.2344) +Problem: macOS: build fails. +Solution: Don't define _XOPEN_SOURCE for Mac. +Files: src/vim.h + +Patch 8.1.2348 +Problem: :const cannot be followed by "| endif". +Solution: Check following command for :const. (closes #5269) + Also fix completion after :const. +Files: src/testdir/test_let.vim, src/testdir/test_const.vim, + src/ex_docmd.c, src/cmdexpand.c, src/eval.c, + src/testdir/test_cmdline.vim + +Patch 8.1.2349 +Problem: :lockvar and :unlockvar cannot be followed by "| endif". +Solution: Check for following commands. (closes #5269) +Files: src/testdir/test_const.vim, src/ex_docmd.c + +Patch 8.1.2350 +Problem: Other text for CTRL-V in Insert mode with modifyOtherKeys. +Solution: Convert the Escape sequence back to key as if modifyOtherKeys is + not set, and use CTRL-SHIFT-V to get the Escape sequence itself. + (closes #5254) +Files: runtime/doc/insert.txt, runtime/doc/cmdline.txt, src/edit.c, + src/proto/edit.pro, src/term.c, src/proto/term.pro, src/getchar.c, + src/proto/getchar.pro, src/testdir/test_termcodes.vim, + src/ex_getln.c + +Patch 8.1.2351 +Problem: 'wincolor' not used for > for not fitting double width char. + Also: popup drawn on right half of double width character looks + wrong. +Solution: Adjust color for > character. Clear left half of double width + character if right half is being overwritten. +Files: src/drawline.c, src/screen.c, + src/testdir/dumps/Test_popupwin_doublewidth_1.dump + +Patch 8.1.2352 +Problem: CI doesn't cover FreeBSD. +Solution: Configure Cirrus-CI. (Christian Brabandt, closes #5273) +Files: .cirrus.yml, README.md + +Patch 8.1.2353 +Problem: Build failure on FreeBSD. +Solution: Change #ifdef to only check for Linux-like systems. +Files: src/vim.h + +Patch 8.1.2354 +Problem: Cirrus CI runs on another repository. +Solution: Run Cirrus CI on vim/vim. +Files: .cirrus.yml, README.md + +Patch 8.1.2355 +Problem: Test with "man" fails on FreeBSD. +Solution: Use "-P" instead of "--pager". +Files: src/testdir/test_normal.vim + +Patch 8.1.2356 +Problem: rand() does not use the best algorithm. +Solution: use xoshiro128** instead of xorshift. (Kaito Udagawa, + closes #5279) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_random.vim + +Patch 8.1.2357 +Problem: No test with wrong argument for rand(). +Solution: Add a test case. +Files: src/testdir/test_random.vim + +Patch 8.1.2358 +Problem: Tests fail on Cirrus CI for FreeBSD. +Solution: Fix a test and skip some. (Christian Brabandt, closes #5281) +Files: Filelist, .cirrus.yml, src/testdir/check.vim, + src/testdir/test_normal.vim, src/testdir/test_quickfix.vim, + src/testdir/test_source_utf8.vim, src/testdir/test_terminal.vim, + src/testdir/test_utf8_comparisons.vim + +Patch 8.1.2359 +Problem: Cannot build without FEAT_FLOAT. (John Marriott) +Solution: Fix #ifdefs around f_srand(). +Files: src/evalfunc.c + +Patch 8.1.2360 +Problem: Quickfix test coverage can still be improved. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5276) +Files: src/testdir/test_quickfix.vim + +Patch 8.1.2361 +Problem: MS-Windows: test failures related to VIMDLL. +Solution: Adjust code and tests. (Ken Takata, closes #5283) +Files: src/evalfunc.c, src/ex_cmds.c, src/gui_w32.c, src/mbyte.c, + src/menu.c, src/proto.h, src/testdir/test_highlight.vim + +Patch 8.1.2362 +Problem: Cannot place signs in a popup window. (Maxim Kim) +Solution: Use the group prefix "PopUp" to specify which signs should show up + in a popup window. (closes #5277) +Files: runtime/doc/sign.txt, src/popupwin.c, src/sign.c, + src/testdir/dumps/Test_popupwin_sign_1.dump + +Patch 8.1.2363 +Problem: ml_get error when accessing Visual area in 'statusline'. +Solution: Disable Visual mode when using another window. (closes #5278) +Files: src/testdir/test_statusline.vim, src/buffer.c + +Patch 8.1.2364 +Problem: Termwinscroll test is flaky on FreeBSD. +Solution: Add to list of flaky tests. Rename function. +Files: src/testdir/runtest.vim, src/testdir/test_terminal.vim + +Patch 8.1.2365 +Problem: Missing tests for recent popupwin changes. +Solution: Add test cases. +Files: src/testdir/test_popupwin.vim + +Patch 8.1.2366 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/ascii.h, src/beval.h, src/dosinst.h, src/feature.h, + src/glbl_ime.h, src/globals.h, src/gui_at_sb.h, src/gui_gtk_f.h, + src/gui_gtk_vms.h, src/gui.h, src/gui_x11_pm.h, src/gui_xmebwp.h, + src/if_cscope.h, src/if_mzsch.h, src/if_ole.h, src/if_py_both.h, + src/iscygpty.h, src/keymap.h, src/macros.h, src/nbdebug.h, + src/option.h, src/os_amiga.h, src/os_beos.h, src/os_dos.h, + src/os_mac.h, src/os_qnx.h, src/os_unix.h, src/os_unixx.h, + src/os_vms_conf.h, src/os_win32.h, src/proto.h, src/regexp.h, + src/spell.h, src/structs.h, src/term.h, src/version.h, src/vimio.h + +Patch 8.1.2367 +Problem: Registers are not sufficiently tested. +Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #5288) +Files: src/testdir/test_registers.vim + +Patch 8.1.2368 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/autocmd.c, src/beval.c, src/blob.c, src/blowfish.c, + src/buffer.c, src/change.c, src/channel.c, src/charset.c, + src/cindent.c, src/crypt.c, src/crypt_zip.c + +Patch 8.1.2369 +Problem: Cannot build with quickfix and without text properties. +Solution: Fix typo. (Naruhiko Nishino) +Files: src/popupmenu.c + +Patch 8.1.2370 +Problem: Build problems on VMS. +Solution: Adjust the build file. (Zoltan Arpadffy) +Files: src/Make_vms.mms, src/os_unix.c, src/os_vms.c + +Patch 8.1.2371 +Problem: FEAT_TEXT_PROP is a confusing name. +Solution: Use FEAT_PROP_POPUP. (Naruhiko Nishino, closes #5291) +Files: runtime/doc/popup.txt, src/beval.c, src/buffer.c, src/change.c, + src/drawline.c, src/drawscreen.c, src/edit.c, src/eval.c, + src/evalbuffer.c, src/evalfunc.c, src/evalwindow.c, src/ex_cmds.c, + src/ex_docmd.c, src/feature.h, src/fileio.c, src/getchar.c, + src/globals.h, src/gui.c, src/gui_w32.c, src/indent.c, + src/insexpand.c, src/macros.h, src/main.c, src/memline.c, + src/misc2.c, src/mouse.c, src/move.c, src/ops.c, src/option.h, + src/optiondefs.h, src/optionstr.c, src/popupmenu.c, + src/popupwin.c, src/proto.h, src/screen.c, src/search.c, + src/sign.c, src/structs.h, src/tag.c, src/testdir/runtest.vim, + src/testdir/test_execute_func.vim, src/testdir/test_popupwin.vim, + src/testdir/test_popupwin_textprop.vim, src/textprop.c, src/ui.c, + src/version.c, src/vim.h, src/window.c + +Patch 8.1.2372 +Problem: VMS: failing realloc leaks memory. (Chakshu Gupta) +Solution: Free the memory. (partly fixes #5292) +Files: src/os_vms.c + +Patch 8.1.2373 +Problem: Cannot build with +popupwin but without +quickfix. (John Marriott) +Solution: Adjust #ifdefs. +Files: src/ex_cmds.c, src/popupmenu.c, src/popupwin.c, src/fileio.c, + src/testdir/test_compiler.vim, src/testdir/test_tagjump.vim, + src/testdir/test86.in, src/testdir/test87.in, + src/testdir/test_autocmd.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_channel.vim, src/testdir/test_edit.vim, + src/testdir/test_execute_func.vim, + src/testdir/test_filter_cmd.vim, src/testdir/test_gui.vim, + src/testdir/test_makeencoding.vim, src/testdir/test_mksession.vim, + src/testdir/test_normal.vim, src/testdir/test_popup.vim, + src/testdir/test_popupwin.vim, src/testdir/test_preview.vim, + src/testdir/test_startup.vim, src/testdir/test_statusline.vim, + src/testdir/test_tabpage.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_window_id.vim + +Patch 8.1.2374 +Problem: Unused parts of libvterm are included. +Solution: Delete the unused files. +Files: Filelist, src/libvterm/bin/vterm-ctrl.c, + src/libvterm/bin/unterm.c, src/libvterm/bin/vterm-dump.c + +Patch 8.1.2375 +Problem: No sufficient testing for registers. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5296) + Fix that "p" on last virtual column of tab inserts spaces. +Files: src/register.c, src/testdir/test_registers.vim, + src/testdir/test_virtualedit.vim, src/testdir/test_visual.vim + +Patch 8.1.2376 +Problem: Preprocessor indents are incorrect. +Solution: Fix the indents. (Ken Takata, closes #5298) +Files: src/drawline.c, src/gui_w32.c, src/os_mswin.c, src/os_win32.c, + src/proto.h + +Patch 8.1.2377 +Problem: GUI: when losing focus a pending operator is executed. +Solution: Do not execute an operator when getting K_IGNORE. (closes #5300) +Files: src/normal.c + +Patch 8.1.2378 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/dict.c, src/diff.c, src/digraph.c, src/dosinst.c, src/edit.c, + src/eval.c, src/evalbuffer.c, src/evalfunc.c + +Patch 8.1.2379 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/fileio.c, src/filepath.c, src/findfile.c, + src/fold.c + +Patch 8.1.2380 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/getchar.c, src/gui.c, src/gui_at_fs.c, src/gui_at_sb.c, + src/gui_athena.c, src/gui_beval.c, src/gui_gtk.c, src/gui_gtk_f.c, + src/gui_gtk_x11.c + +Patch 8.1.2381 +Problem: Not all register related code is covered by tests. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5301) +Files: src/testdir/test_marks.vim, src/testdir/test_registers.vim, + src/testdir/test_virtualedit.vim + +Patch 8.1.2382 +Problem: MS-Windows: When using VTP bold+inverse doesn't work. +Solution: Compare with the default colors. (Nobuhiro Takasaki, closes #5303) +Files: src/os_win32.c, src/proto/os_win32.pro, src/screen.c + +Patch 8.1.2383 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w32.c, + src/gui_x11.c, src/gui_xmdlg.c, src/gui_xmebw.c + +Patch 8.1.2384 +Problem: Test 48 is old style. +Solution: Merge test cases into new style test. (Yegappan Lakshmanan, + closes #5307) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test48.in, src/testdir/test48.ok, + src/testdir/test_virtualedit.vim + +Patch 8.1.2385 +Problem: Opening cmdline window with feedkeys() does not work. (Yegappan + Lakshmanan) +Solution: Recognize K_CMDWIN also when ex_normal_busy is set. +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.1.2386 +Problem: 'wincolor' is not used for 'listchars'. +Solution: Combine the colors. (closes #5308) +Files: src/drawline.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_wincolor_lcs.dump + +Patch 8.1.2387 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/hardcopy.c, src/hashtab.c, src/if_cscope.c, src/if_lua.c, + src/if_mzsch.c, src/if_perlsfio.c, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/if_xcmdsrv.c + +Patch 8.1.2388 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/json.c, src/json_test.c, src/kword_test.c, src/list.c, + src/main.c, src/mark.c, src/mbyte.c, src/memfile.c, + src/memfile_test.c, src/memline.c, src/menu.c + +Patch 8.1.2389 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/libvterm/src/screen.c, src/libvterm/src/unicode.c, + src/libvterm/src/vterm.c, src/libvterm/t/harness.c, + src/libvterm/include/vterm.h, src/xdiff/xdiffi.c, + src/xdiff/xemit.c, src/xdiff/xhistogram.c, src/xdiff/xpatience.c, + src/xdiff/xutils.c, src/xdiff/xdiff.h, src/xdiff/xdiffi.h, + src/xdiff/xemit.h, src/xdiff/xinclude.h, src/xdiff/xmacros.h, + src/xdiff/xprepare.h, src/xdiff/xtypes.h, src/xdiff/xutils.h + +Patch 8.1.2390 +Problem: Test94 is old style, fix 7.4.441 not tested. +Solution: Turn test94 into a new style test. Add tests for the fix in patch + 7.4.441. (Yegappan Lakshmanan, closes #5316) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test94.in, src/testdir/test94.ok, + src/testdir/test_cmdline.vim, src/testdir/test_visual.vim + +Patch 8.1.2391 +Problem: Cannot build when __QNXNTO__ is defined. (Ian Wayne Larson) +Solution: Move the check for "qansi". (Ken Takata, closes #5317) +Files: src/highlight.c + +Patch 8.1.2392 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/nbdebug.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c + +Patch 8.1.2393 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/os_amiga.c, src/os_beos.c, src/os_mac_conv.c, src/os_mswin.c, + src/os_qnx.c, src/os_unix.c, src/os_vms.c, src/os_win32.c + +Patch 8.1.2394 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/popupmenu.c, src/pty.c, src/quickfix.c, src/regexp.c, + src/regexp_nfa.c, src/screen.c, src/search.c, src/sha256.c, + src/sign.c + +Patch 8.1.2395 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/spell.c, src/spellfile.c, src/syntax.c, src/tag.c, src/term.c, + src/terminal.c, src/termlib.c, src/testing.c + +Patch 8.1.2396 +Problem: Using old C style comments. +Solution: Use // comments where appropriate. +Files: src/ui.c, src/undo.c, src/uninstall.c, src/usercmd.c, + src/userfunc.c, src/winclip.c, src/window.c, src/xpm_w32.c + +Patch 8.1.2397 +Problem: Should not define __USE_XOPEN. _XOPEN_SOURCE is not needed for + Android. +Solution: Remove __USE_XOPEN and adjust #ifdefs. (Ozaki Kiichi, + closes #5322) +Files: src/vim.h + +Patch 8.1.2398 +Problem: strptime() test fails on Japanese Mac. +Solution: Use %T instead of %X. +Files: src/testdir/test_functions.vim + +Patch 8.1.2399 +Problem: Info popup on top of cursor if it doesn't fit. +Solution: Hide the popup if it doesn't fit. +Files: src/popupmenu.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_wide_1.dump + +Patch 8.1.2400 +Problem: Test39 is old style. +Solution: Convert the test cases into new style. (Yegappan Lakshmanan, + closes #5324) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test39.in, src/testdir/test39.ok, + src/testdir/test_blockedit.vim, src/testdir/test_visual.vim + +Patch 8.1.2401 +Problem: :cexpr does not handle | in expression. +Solution: Remove EX_TRLBAR and set nextcmd pointer. +Files: src/testdir/test_quickfix.vim, src/ex_cmds.h, src/quickfix.c + +Patch 8.1.2402 +Problem: Typos and other small things. +Solution: Small fixes. +Files: .gitignore, src/testdir/shared.vim, src/testdir/test49.vim, + src/message.c, src/Makefile + +Patch 8.1.2403 +Problem: Autocmd test fails under valgrind. +Solution: Wait a bit longer. +Files: src/testdir/test_autocmd.vim + +Patch 8.1.2404 +Problem: Channel test fails under valgrind. +Solution: Sleep a bit longer. +Files: src/testdir/test_channel.vim + +Patch 8.1.2405 +Problem: matchadd_conceal test fails under valgrind. +Solution: Use WaitForAssert() and wait a bit longer. +Files: src/testdir/test_matchadd_conceal.vim + +Patch 8.1.2406 +Problem: Leaking memory in test_paste and test_registers. +Solution: Free the old title. Don't copy expr_line. +Files: src/term.c, src/os_unix.c, src/register.c + +Patch 8.1.2407 +Problem: proto file and dependencies outdated. +Solution: Update proto files and dependencies. +Files: src/Makefile, src/proto/bufwrite.pro, src/proto/cmdhist.pro, + src/proto/optionstr.pro, src/proto/popupwin.pro, + src/proto/viminfo.pro, src/proto/if_cscope.pro + +Patch 8.1.2408 +Problem: Syntax menu and build instructions outdated. +Solution: Update build instructions and syntax menu. +Files: Makefile, runtime/makemenu.vim, runtime/synmenu.vim + +Patch 8.1.2409 +Problem: Creating the distribution doesn't work as documented. +Solution: Adjust name of uninstall binary. Create src/auto directory if + needed. +Files: tools/rename.bat, src/Make_mvc.mak + +Patch 8.1.2410 +Problem: MS-Windows: test_iminsert fails without IME support. +Solution: Skip the test when imgetstatus() doesn't work. +Files: src/testdir/test_iminsert.vim + +Patch 8.1.2411 +Problem: Function argument copied unnecessarily. +Solution: Use the argument directly. +Files: src/ex_docmd.c + +Patch 8.1.2412 +Problem: Crash when evaluating expression with error. (Dhiraj Mishra) +Solution: Check parsing failed. (closes #5329) +Files: src/eval.c, src/testdir/test_lambda.vim + +Patch 8.1.2413 +Problem: Cannot update ex_cmdidxs.h on MS-Windows. +Solution: Add build rules and dependencies. (Ken Takata, closes #5337) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms + +Patch 8.1.2414 +Problem: MS-Windows: properties dialog box shows wrong character. +Solution: Explicitly specify encoding. (Ken Takata, closes #5338) +Files: src/vim.rc + +Patch 8.1.2415 +Problem: Popup menu flickers if an info popup is used. (Nick Jensen) +Solution: Set the pum_skip_redraw flag. +Files: src/popupmenu.c + +Patch 8.1.2416 +Problem: Loading menus sets v:errmsg. +Solution: Avoid setting v:errmsg and add a test for that. (Jason Franklin) +Files: runtime/delmenu.vim, runtime/menu.vim, src/testdir/test_menu.vim + +Patch 8.1.2417 +Problem: MinGW/Cygwin build does not clean up all files. +Solution: Delete *.map files. (Michael Soyka) +Files: src/Make_cyg_ming.mak + +Patch 8.1.2418 +Problem: bufnr('$') is wrong after recycling popup buffer. +Solution: Sort the buffer list by buffer number. (closes #5335) +Files: src/buffer.c, src/testdir/test_popupwin.vim + +Patch 8.1.2419 +Problem: With a long file name the hit-enter prompt appears. (J. Lewis + Muir) +Solution: When checking for text to wrap don't do this when outputting a CR. +Files: src/message.c, src/testdir/test_display.vim, + src/testdir/dumps/Test_long_file_name_1.dump + +Patch 8.1.2420 +Problem: Crash when calling popup_close() in win_execute(). +Solution: Disallow popup_close() in popup window. (Yasuhiro Matsumoto, + closes #5345) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.1.2421 +Problem: Test88 is old style. +Solution: Turn into a new style test. (Yegappan Lakshmanan, closes #5347) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test88.in, src/testdir/test88.ok, + src/testdir/test_conceal.vim, src/testdir/test_python2.vim + src/testdir/test_python3.vim + +Patch 8.1.2422 +Problem: "make depend" does not work correctly for libvterm. +Solution: Fix build dependencies. And a few minor improvements. +Files: src/Makefile, src/filepath.c, src/insexpand.c, src/main.c + +Patch 8.1.2423 +Problem: MS-Windows properties shows version as "8, 1, 0". +Solution: Use "8.1.0". (Ken Takata, closes #5342) +Files: src/vim.rc + +Patch 8.1.2424 +Problem: MS-Windows: console buffer is resized unnecessarily. +Solution: Only call ResizeConBuf() when the size differs. (Nobuhiro + Takasaki, closes #5343) +Files: src/os_win32.c + +============================================================================== + +Patch 8.2.0001 and later can be found at |patches-after-8.2|. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt new file mode 100644 index 0000000..697fd79 --- /dev/null +++ b/runtime/doc/version9.txt @@ -0,0 +1,41538 @@ +*version9.txt* For Vim version 9.1. Last change: 2024 Jan 05 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + + *vim-9.0* *vim-9* *version-9.0* *version9.0* +Welcome to Vim 9! Several years have passed since the previous release. +A large number of bugs have been fixed, many nice features have been added +and the Vim9 script syntax is here! This file mentions all the new things and +changes to existing features since Vim 8.2.0. The patches up to Vim 8.2 can be +found here: |vim-8.2|. + +Use this command to see the full version and features information of the Vim +program you are using: > + :version + +NEW FEATURES |new-9| + Vim script enhancements |new-vim-script-9| + Command line completion in a popup menu |new-popup-compl| + Updated colorschemes |new-colorschemes-9| + Various new items |new-items-9| + +INCOMPATIBLE CHANGES |incompatible-9| + +IMPROVEMENTS |improvements-9| + +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| + + +See |vi_diff.txt| for an overview of differences between Vi and Vim 9.0. +See |version4.txt|, |version5.txt|, |version6.txt|, |version7.txt| and +|version8.txt| for differences between Vim versions. + +You can find an overview of the most important changes (according to Martin +Tournoij) on this site: https://www.arp242.net/vimlog/ + + *Sven-Guckes* +Vim version 9.0 is dedicated to Sven Guckes, who passed away in February 2022 +when the release was being prepared. Sven was a long time supporter of Vim. +He registered the vim.org domain and created the first Vim website. We will +remember him! + + *Bram* *Moolenaar* *Bram-Moolenaar* +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 +children in Uganda. If you enjoy using Vim, please consider donating! We will +miss his guidance, passion and leadership. + +Obituary Articles: https://github.com/vim/vim/discussions/12742 +Say Farewell: https://github.com/vim/vim/discussions/12737 + +============================================================================== +NEW FEATURES *new-9* + +First an overview of the more interesting new features. A comprehensive list +is below. + + +Vim9 script ~ + *new-vim-script-9* +The Vim script language has been changed step by step over many years, +preserving backwards compatibility. Several choices made in the early days +got in the way of making it work better. At the same time, Vim script is +being used much more often, since there are so many plugins being used. + +Vim9 script provides a syntax that is much more similar to other languages. +In other words: "less weird". Compiled functions are introduced which allow +for a large speed improvement. You can expect around ten times faster +execution, or even more. The price to pay is that Vim9 script is not +backwards compatible. But don't worry, you can still use your old scripts, +the new script language is added, it does not replace the legacy script. + +Information about Vim9 script can be found in the |Vim9| help file. + + +Command line completion in a popup menu ~ + *new-popup-compl* +Before there was the 'wildmenu' option, which uses the space of one line above +the statusline to show matches. Only a few matches fit there. + +Now a popup menu can be used by setting 'wildoptions' to "pum". This allows +for showing many more matches. This requires redrawing more of the display, +but since computers are fast enough that is not a problem. + + +Updated colorschemes ~ + *new-colorschemes-9* +Colorschemes from https://github.com/vim/colorschemes have been included. +They were made to work consistently across many types of terminals. Although +generally an improvement, a lot of personal preference is involved. You can +always get the old version if you prefer it, look here: +https://github.com/vim/colorschemes/blob/master/legacy_colors/ + + +Various new items ~ + *new-items-9* +Options: ~ + +'autoshelldir' change directory to the shell's current directory +'cdhome' change directory to the home directory by ":cd" +'cinscopedecls' words that are recognized by 'cino-g' +'guiligatures' GTK GUI: ASCII characters that can form shapes +'mousemoveevent' report mouse moves with <MouseMove> +'quickfixtextfunc' function for the text in the quickfix window +'spelloptions' options for spell checking +'thesaurusfunc' function to be used for thesaurus completion +'xtermcodes' request terminal codes from an xterm + + +Ex commands: ~ + +|:abstract| (reserved for future use) +|:argdedupe| remove duplicates from the argument list +|:balt| like ":badd" but also set the alternate file +|:class| (reserved for future use) +|:def| define a Vim9 user function +|:defcompile| compile Vim9 user functions in current script +|:disassemble| disassemble Vim9 user function +|:echoconsole| like :echomsg but write to stdout +|:endinterface| (reserved for future use) +|:endclass| (reserved for future use) +|:enddef| end of a user function started with :def +|:endenum| (reserved for future use) +|:enum| (reserved for future use) +|:eval| evaluate an expression and discard the result +|:export| Vim9: export an item from a script +|:final| declare an immutable variable in Vim9 +|:import| Vim9: import an item from another script +|:interface| (reserved for future use) +|:static| (reserved for future use) +|:type| (reserved for future use) +|:var| variable declaration in Vim9 +|:vim9script| indicates Vim9 script file + + +Ex command modifiers: ~ + +|:legacy| make following command use legacy script syntax +|:vim9cmd| make following command use Vim9 script syntax + + +New and extended functions: ~ + +|assert_nobeep()| assert that a command does not cause a beep +|autocmd_add()| add a list of autocmds and groups +|autocmd_delete()| delete a list of autocmds and groups +|autocmd_get()| return a list of autocmds +|blob2list()| get a list of numbers from a blob +|charclass()| class of a character +|charcol()| character number of the cursor or a mark +|charidx()| character index of a byte in a string +|digraph_get()| get digraph +|digraph_getlist()| get all digraphs +|digraph_set()| register digraph +|digraph_setlist()| register multiple digraphs +|echoraw()| output characters as-is +|exists_compiled()| like exists() but check at compile time +|extendnew()| make a new Dictionary and append items +|flatten()| flatten a List +|flattennew()| flatten a copy of a List +|fullcommand()| get full command name +|getcharpos()| get character position of cursor, mark, etc. +|getcharstr()| get a character from the user as a string +|getcmdcompltype()| return current cmdline completion type +|getcmdscreenpos()| return the current cursor position in the cmdline +|getcursorcharpos()| get character position of the cursor +|getmarklist()| list of global/local marks +|getreginfo()| get information about a register +|gettext()| lookup message translation +|hlget()| get highlight group attributes +|hlset()| set highlight group attributes +|isabsolutepath()| check if a path is absolute +|list2blob()| get a blob from a list of numbers +|maplist()| list of all mappings, a dict for each +|mapnew()| make a new List with changed items +|mapset()| restore a mapping +|matchfuzzy()| fuzzy matches a string in a list of strings +|matchfuzzypos()| fuzzy matches a string in a list of strings +|menu_info()| get information about a menu item +|popup_list()| get list of all popup window IDs +|prompt_getprompt()| get the effective prompt text for a buffer +|prop_add_list()| attach a property at multiple positions +|prop_find()| search for a property +|readblob()| read a file into a Blob +|readdirex()| get a List of file information in a directory +|reduce()| reduce a List to a value +|searchcount()| get number of matches before/after the cursor +|setcellwidths()| set character cell width overrides +|setcharpos()| set character position of cursor, mark, etc. +|setcursorcharpos()| set character position of the cursor +|slice()| take a slice of a List +|strcharlen()| length of a string in characters +|terminalprops()| properties of the terminal +|test_gui_event()| generate a GUI event for testing +|test_null_function()| return a null Funcref +|test_srand_seed()| set the seed value for srand() +|test_unknown()| return a value with unknown type +|test_void()| return a value with void type +|typename()| type of a variable as text +|virtcol2col()| byte index of a character on screen +|win_gettype()| get type of window +|win_move_separator()| move window vertical separator +|win_move_statusline()| move window status line +|windowsversion()| get MS-Windows version + + +New Vim variables: ~ + +|v:numbermax| maximum value of a number +|v:numbermin| minimum value of a number (negative) +|v:numbersize| number of bits in a Number +|v:collate| current locale setting for collation order +|v:exiting| vim exit code +|v:colornames| dictionary that maps color names to hex color strings +|v:sizeofint| number of bytes in an int +|v:sizeoflong| number of bytes in a long +|v:sizeofpointer| number of bytes in a pointer +|v:maxcol| maximum line length + + +New autocommand events: ~ + +|CompleteDonePre| after Insert mode completion done, before clearing info +|DirChangedPre| before the working directory will change +|InsertLeavePre| just before leaving Insert mode +|ModeChanged| after changing the mode +|SigUSR1| after the SIGUSR1 signal has been detected +|WinClosed| after closing a window +|WinScrolled| after scrolling or resizing a window +|VimSuspend| when suspending Vim +|VimResume| when Vim is resumed after being suspended + + +New operators: ~ + +|>>| bitwise right shift +|<<| bitwise left shift +|??| falsy operator + +New runtime files: ~ + +Too many to list here. + +============================================================================== +INCOMPATIBLE CHANGES *incompatible-9* + +There is only one change that is incompatible with previous releases: + +- Lua arrays are now one-based, they used to be zero-based. + +Note that when using |Vim9| script several things work differently, see +|vim9-differences|. + +============================================================================== +IMPROVEMENTS *improvements-9* + +Various small and useful improvements have been made since Vim 8.2, here is a +summary. + +Many memory leaks, invalid memory accesses and crashes have been fixed. +See the list of patches below: |bug-fixes-9|. + +Support for Vim expression evaluation in a string. |interpolated-string| +Support for evaluating Vim expressions in a heredoc. |:let-heredoc| + +Support for fuzzy matching: +- a string in a List of strings. |fuzzy-matching| +- completion support for command line completion using 'wildoptions'. +- for |:vimgrep|. + +Added support for the |Haiku| OS. + +Support for "lsp" channel mode to simplify LSP server RPC communication +|language-server-protocol|. Support for using a Unix domain socket with a +|channel|. IPv6 support in channels |channel-address|. + +Support for sourcing lines from the current buffer. |:source-range| + +Terminal window improvements: +- Support for opening a terminal in a popup window. |popup-terminal| +- Allow setting underline color in terminal. +- Detect focus events in terminal (|FocusGained| and |FocusLost|). +- Add bell support for the terminal window. ('belloff') +- Support mouse left-right scrolling in a terminal window. + +Support for stopping profiling a Vim script: `:profile stop` and dumping the +report to a file: `:profile dump` . |:profile| + +Completion improvements: +- Argument completion support for the |:breakadd|, |:breakdel|, |:diffget|, + |:diffput|, |:profile|, |:profdel| and |:scriptnames| commands. +- Support using any Vim type for user_data with the completion functions + (|complete-items|). +- Stop insert mode completion without changing text (|i_CTRL-X_CTRL-Z|). +- Add the "cmdline" option to |getcompletion()| to return the command line + arguments. + +Support for setting the 'foldtext', 'completefunc', 'omnifunc', +'operatorfunc', 'thesaurusfunc', 'quickfixtextfunc', 'tagfunc', +'imactivatefunc' and 'imstatusfunc' options to a function reference or a +lambda function or a script-local function. + +Support directly setting the 'balloonexpr', 'charconvert' 'foldexpr', +'formatexpr', 'includeexpr', 'printexpr', 'patchexpr', 'indentexpr', +'modelineexpr', 'diffexpr' and 'printexpr' options to a script-local function. + +Improvements in 'fillchars': +- Support for configuring the character used to mark the beginning of a fold, + show a closed fold and show a fold separator using "foldopen", "foldclose" + and "foldsep" respectively in 'fillchars'. +- Support for configuring the character displayed in non existing lines using + "eob" in 'fillchars'. +- Support for using multibyte items with the "stl", "stlnc", "foldopen", + "foldclose" and "foldsep" items in the 'fillchars' option. + +Support for the XChaCha20 encryption method. 'cryptmethod' + +Spell checking: +- Spell check current word with |z=| even when 'spell' is off. +- Add "timeout" to 'spellsuggest' to limit the searching time for spell + suggestions. +- Add support for spell checking CamelCased words by adding "camel" to + 'spelloptions'. + +Support for executing Ex commands in a map without changing the current mode +|<Cmd>| and |<ScriptCmd>|. + +Add optional error code to |:cquit|. + +Recognize numbers as unsigned when "unsigned" is set in 'nrformats'. + +Expand script ID using expand('<SID>') and script name using +expand('<script>'). |expand()| + +Jump to the last accessed tab page using |g<Tab>| and support using the +last accessed tab page in |:tabnext| et al. + +Locale aware sorting using |:sort| and |sort()|. + +Hide cursor when sleeping using |:sleep!|. + +Add "multispace" to 'listchars' to show two or more spaces no matter where +they appear. Add "leadmultispace" to 'listchars' to show two or more leading +spaces. Add "lead" to 'listchars' to set the character used to show leading +spaces. Support specifying a character using the hexadecimal notation in +'listchars' (\x, \u and \U). + +Make 'listchars', 'virtualedit' and 'thesaurusfunc' global-local options. + +Support for looping over a string using `:for`. + +Don't reset 'wrap' for diff windows when "followwrap" is set in 'diffopt'. + +Support for re-evaluating the 'statusline' expression as a statusline format +string (%{% expr %}) + +Add |zp| and |zP| to paste in block mode without adding trailing white space. +Add |zy| to yank without trailing white space in block mode. + +Add the 'P' command in visual mode to paste text in Visual mode without +yanking the deleted text to the unnamed register. |put-Visual-mode| + +Add \%.l, \%<.l and \%>.l atoms to match the line the cursor is currently on. +See |/\%l| for more information. + +Add "list" to 'breakindentopt' to add additional indent for lines that match +a numbered or bulleted list. Add "column" to 'breakindentopt' to indent +soft-wrapped lines at a specific column. + +Add the |hl-CursorLineSign| and |hl-CursorLineFold| default highlight groups to +adjust sign highlighting for 'cursorline'. + +Add the |hl-CurSearch| default highlight group for the current search match. + +Add support for logging on Vim startup (|--log|). + +Add support for customizing the quickfix buffer contents using +'quickfixtextfunc'. Support for the "note" error type (%t) in |errorformat|. +Add support for parsing the end line number (%e) and end column number (%k) +using 'errorformat'. + +Support truncating the tag stack using |settagstack()|. + +Display every option in a separate line when "!" is used with |:set|. + +Add "nostop" to 'backspace' to allow backspacing over the start of insert for +|CTRL-W| and |CTRL-U| also. + +Sync the undo file if 'fsync' is set. + +Support excluding the 'runtimepath' and 'packpath' options from a session file +using "skiprtp" in 'sessionoptions'. + +Support for getting the number of lines (line count) in a buffer using +|getbufinfo()|. + +Support |filter()| and |map()| for blob and string types. + +Support for using a multi-byte character for the tag kind. |tags-file-format| + +Add support for checking whether a function name is valid using |exists()|. + +Update xdiff to version 2.33. Update libvterm to revision 789. + +Support 'trim' for Python/Lua/Perl/Tcl/Ruby/MzScheme interface heredoc. + +Add the |t_AU| and |t_8u| termcap codes for underline and undercurl. Add the +t_fd and t_fe termcap codes for detecting focus events. + +Support for indenting C pragmas like normal code. (|cino-P|) + +Add support for defining the syntax fold level. (|:syn-foldlevel|) + +Add support for using \<*xxx> in a string to prepend a modifier to a +character. (|expr-quote|) + +Add support trimming characters at the beginning or end of a string using +|trim()|. + +Make ":verbose pwd" show the scope of the directory. |:pwd-verbose| + +Add the "0o" notation for specifying octal numbers. |scriptversion-4| + +Support for changing to the previous tab-local and window-local directories +using the "tcd -" and "lcd -" commands. (|:tcd-| and |:lcd-|) + +Add support for skipping an expression using |search()|. + +Add support for sorting the directory contents returned by the |readdir()| +and |readdirex()| functions by case. + +Add support for executing (|:@|) a register containing line continuation. + +Lua support: +- Call Vim functions from Lua (vim.call() and vim.fn()). +- Convert a Lua function and a closure to a Vim funcref so that it can be + accessed in a Vim script (|lua-funcref|). +- Not backwards compatible: Make Lua arrays one based. +- Add support for using table.insert() and table.remove() functions with Vim + lists. +- Support for running multiple Ex-mode commands using vim.command(). +- Add vim.lua_version to get the Lua version. +- Add support for accessing Vim namespace dictionaries from Lua + (|lua-vim-variables|). + +Support for new UTF-8 characters from Unicode release 13. + +Support for using a command block (|:command-repl|) when defining a |:command| +or an |:autocmd|. + +Support for using |:z!| to use the Vim display height instead of the current +window height. + +Support for deleting a buffer-local command using ":delcommand -buffer {cmd}". + +When formatting a // comment after a statement, find the start of the line +comment, insert the comment leader and indent the comment properly (|fo-/|). + +Add the "numhl" argument to `:sign define` to use a separate highlight group +for the line number on a line where a sign is placed. |:sign-define| + +When $SHELL ends in "nologin" or "false", start Vim in restricted mode. + +TermDebug enhancements: +- Support for showing the disassembled code in a separate window. +- Support for the GDB until command. +- Use a separate group for the signs. + +xxd: Support for showing offset as a decimal number (-d). + +The C omni-complete plugin (|ft-c-omni|), the file type detection script +(ft.vim) and the syntax menu generation script (makemenu.vim) have been +rewritten using the Vim9 script syntax. + +A large number of tests have been added to verify the Vim functionality. Most +of the old style tests have been converted to new style tests using the new +style assert_* functions. + +Many Coverity static analysis warnings have been fixed. + +============================================================================== +COMPILE TIME CHANGES *compile-changes-9* + +The following features are now enabled in all the builds: + |+cindent| + |+jumplist| + |+lispindent| + |+num64| + |+smartindent| + |+tag_binary| + |+title| + +The following features have been removed. They are either obsolete or didn't +work properly: + - Athena and neXTaw GUI support (use Motif instead) + - EBCDIC support + - Atari MiNT and BeOS + - Mac Carbon GUI (use MacVim instead) + +The rgb.txt file is no longer included, use colors/lists/default.vim instead. + +Several large source files were split, mainly to make it easier to inspect +code coverage information. Source files have also been refactored for +maintainability. + +Support for building Vim with Mingw64 clang compiler on MS-Windows. + +Support for building Vim with Python 3.10, Lua 5.4.4, Perl 5.34 and +Ruby 3.1.0. + +============================================================================== +PATCHES *patches-9* *bug-fixes-9* + *patches-after-8.2* + +The list of patches that got included since 8.2.0. This includes all the new +features, but does not include runtime file changes (syntax, indent, help, +etc.) + +Patch 8.2.0001 +Problem: #endif comments do not reflect corresponding #ifdef. +Solution: Update the comments. (Rene Nyffenegger, closes #5351) +Files: src/ui.c + +Patch 8.2.0002 +Problem: "dj" only deletes first line of closed fold. +Solution: Adjust last line of operator for linewise motion. (closes #5354) +Files: src/ops.c, src/testdir/test_fold.vim + +Patch 8.2.0003 +Problem: Build file dependencies are incomplete. +Solution: Fix the dependencies. (Ken Takata, closes #5356) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile + +Patch 8.2.0004 +Problem: Get E685 and E931 if buffer reload is interrupted. +Solution: Do not abort deleting a dummy buffer. (closes #5361) +Files: src/buffer.c, src/proto/buffer.pro, src/testdir/test_trycatch.vim, + src/ex_cmds.c, src/ex_getln.c, src/misc2.c, src/quickfix.c, + src/window.c, src/vim.h + +Patch 8.2.0005 +Problem: Duplication in version info. +Solution: Use preprocessor string concatenation. (Ken Takata, closes #5357) +Files: src/version.h + +Patch 8.2.0006 +Problem: Test using long file name may fail. (Vladimir Lomov) +Solution: Limit the name length. (Christian Brabandt, closes #5358) +Files: src/testdir/test_display.vim + +Patch 8.2.0007 +Problem: Popup menu positioned wrong with folding in two tabs. +Solution: Update the cursor line height. (closes #5353) +Files: src/move.c, src/proto/move.pro, src/popupmenu.c, + src/testdir/test_ins_complete.vim, + src/testdir/dumps/Test_pum_with_folds_two_tabs.dump + +Patch 8.2.0008 +Problem: Test72 is old style. +Solution: Convert to new style test. (Yegappan Lakshmanan, closes #5362) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test72.in, src/testdir/test72.ok, + src/testdir/test_undo.vim + +Patch 8.2.0009 +Problem: VMS: terminal version doesn't build. +Solution: Move MIN definition. Adjust #ifdefs. (Zoltan Arpadffy) +Files: src/bufwrite.c, src/fileio.c, src/ui.c, src/xxd/Make_vms.mms + +Patch 8.2.0010 +Problem: Test64 is old style. +Solution: Convert to new style test. (Yegappan Lakshmanan, closes #5363) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test64.in, src/testdir/test64.ok, + src/testdir/test95.in, src/testdir/test_regexp_latin.vim + +Patch 8.2.0011 +Problem: Screen updating wrong when opening preview window. +Solution: Redraw the window when the preview window opens. +Files: src/popupmenu.c, src/testdir/test_ins_complete.vim, + src/testdir/dumps/Test_pum_with_preview_win.dump + +Patch 8.2.0012 +Problem: Some undo functionality is not tested. +Solution: Add a few more test cases. (Dominique Pell茅, closes #5364) +Files: src/testdir/test_undo.vim + +Patch 8.2.0013 +Problem: Not using a typedef for condstack. +Solution: Add a typedef. +Files: src/structs.h, src/ex_docmd.c, src/ex_eval.c, src/userfunc.c, + src/ex_cmds.h, src/proto/ex_eval.pro + +Patch 8.2.0014 +Problem: Test69 and test95 are old style. +Solution: Convert to new style tests. (Yegappan Lakshmanan, closes #5365) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test69.in, src/testdir/test69.ok, + src/testdir/test95.in, src/testdir/test95.ok, + src/testdir/test_regexp_utf8.vim, src/testdir/test_textformat.vim + +Patch 8.2.0015 +Problem: Not all modeline variants are tested. +Solution: Add modeline tests. (Dominique Pell茅, closes #5369) +Files: src/testdir/test_modeline.vim + +Patch 8.2.0016 +Problem: Test name used twice, option not restored properly. +Solution: Rename function, restore option with "&". +Files: src/testdir/test_textformat.vim + +Patch 8.2.0017 +Problem: OS/2 and MS-DOS are still mentioned, even though support was + removed long ago. +Solution: Update documentation. (Yegappan Lakshmanan, closes #5368) +Files: runtime/doc/autocmd.txt, runtime/doc/change.txt, + runtime/doc/cmdline.txt, runtime/doc/editing.txt, + runtime/doc/eval.txt, runtime/doc/gui.txt, runtime/doc/insert.txt, + runtime/doc/options.txt, runtime/doc/print.txt, + runtime/doc/quickfix.txt, runtime/doc/repeat.txt, + runtime/doc/starting.txt, runtime/doc/usr_01.txt, + runtime/doc/usr_05.txt, runtime/doc/usr_41.txt, + runtime/doc/vi_diff.txt, runtime/gvimrc_example.vim, + runtime/tools/README.txt, runtime/vimrc_example.vim, src/feature.h + +Patch 8.2.0018 +Problem: :join does not add white space where it should. (Zdenek Dohnal) +Solution: Handle joining multiple lines properly. +Files: src/ops.c, src/testdir/test_join.vim + +Patch 8.2.0019 +Problem: Cannot get number of lines of another buffer. +Solution: Add "linecount" to getbufinfo(). (Yasuhiro Matsumoto, + closes #5370) +Files: src/evalbuffer.c, src/testdir/test_bufwintabinfo.vim, + runtime/doc/eval.txt + +Patch 8.2.0020 +Problem: Mouse clicks in the command line not tested. +Solution: Add tests. (Dominique Pell茅, closes #5366) +Files: src/testdir/test_termcodes.vim + +Patch 8.2.0021 +Problem: Timer test fails too often on Travis with macOS. +Solution: Be less strict with the time. +Files: src/testdir/test_timers.vim + +Patch 8.2.0022 +Problem: Click in popup window doesn't close it in the GUI. (Sergey Vlasov) +Solution: When processing the selection also send a button release event. + (closes #5367) +Files: src/gui.c + +Patch 8.2.0023 +Problem: Command line editing not sufficiently tested. +Solution: Add more tests. (Dominique Pell茅, closes #5374) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim + +Patch 8.2.0024 +Problem: Filetype Rego not recognized. +Solution: Add *.rego. (Matt Dunford, closes #5376) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0025 +Problem: Repeated word in comment. +Solution: Remove one. (Rene Nyffenegger, closes #5384) +Files: src/structs.h + +Patch 8.2.0026 +Problem: Still some /* */ comments. +Solution: Convert to // comments. +Files: src/message.c, src/message_test.c, src/misc1.c, src/misc2.c, + src/move.c + +Patch 8.2.0027 +Problem: Still some /* */ comments. +Solution: Convert to // comments. +Files: src/iid_ole.c, src/indent.c, src/insexpand.c, src/iscygpty.c, + src/version.c + +Patch 8.2.0028 +Problem: Searchpairpos() is not tested. +Solution: Add tests. Also improve searchpair() testing. (Dominique Pell茅, + closes #5388) +Files: src/testdir/test_search.vim + +Patch 8.2.0029 +Problem: MS-Windows: crash with empty job command. +Solution: Check for NULL result. (Yasuhiro Matsumoto, closes #5390) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.2.0030 +Problem: "gF" does not work on output of "verbose command". +Solution: Recognize " line " and translations. (closes #5391) +Files: src/globals.h, src/eval.c, src/findfile.c, src/testdir/test_gf.vim + +Patch 8.2.0031 (after 8.2.0029) +Problem: MS-Windows: test for empty job fails +Solution: Check for error message, make it also fail on Unix. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.2.0032 (after 8.2.0031) +Problem: MS-Windows: test for blank job fails +Solution: Check before escaping. +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.2.0033 +Problem: Crash when make_extmatch() runs out of memory. +Solution: Check for NULL. (Dominique Pell茅, closes #5392) +Files: src/regexp_bt.c, src/regexp_nfa.c + +Patch 8.2.0034 +Problem: Missing check for out of memory. +Solution: Check for NULL after vim_strsave(). (Dominique Pell茅, + closes #5393) +Files: src/filepath.c + +Patch 8.2.0035 +Problem: Saving and restoring called_emsg is clumsy. +Solution: Count the number of error messages. +Files: src/message.c, src/buffer.c, src/channel.c, src/drawscreen.c, + src/ex_cmds2.c, src/gui.c, src/highlight.c, src/main.c, + src/regexp.c, src/search.c, src/testing.c, src/globals.h + +Patch 8.2.0036 +Problem: Not enough test coverage for match functions. +Solution: Add a few more test cases. (Dominique Pell茅, closes #5394) + Add error number. +Files: src/testdir/test_match.vim + +Patch 8.2.0037 +Problem: Missing renamed message. +Solution: Now really add the error number. +Files: src/highlight.c + +Patch 8.2.0038 +Problem: Spell suggestions insufficiently tested. +Solution: Add spell suggestion tests. (Dominique Pell茅, closes #5398) +Files: src/testdir/test_spell.vim + +Patch 8.2.0039 +Problem: Memory access error when "z=" has no suggestions. +Solution: Check for negative index. +Files: src/testdir/test_spell.vim, src/spellsuggest.c + +Patch 8.2.0040 +Problem: Timers test is still flaky on Travis for Mac. +Solution: Run separately instead of as part of test_alot. +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 8.2.0041 +Problem: Leaking memory when selecting spell suggestion. +Solution: Free previous value at the right time. +Files: src/spellsuggest.c + +Patch 8.2.0042 +Problem: Clearing funccal values twice. +Solution: Remove clearing individual fields. +Files: src/userfunc.c + +Patch 8.2.0043 +Problem: Timers test is still flaky on Travis for Mac. +Solution: Increase maximum expected time. +Files: src/testdir/test_timers.vim + +Patch 8.2.0044 +Problem: Expression type is used inconsistently. +Solution: Add "ETYPE_IS" and "ETYPE_ISNOT" as separate enum values. Rename + "TYPE_" to "ETYPE_" to avoid confusion. +Files: src/structs.h, src/eval.c, src/proto/eval.pro, src/debugger.c + +Patch 8.2.0045 (after 8.2.0044) +Problem: Script test fails. +Solution: For numbers "is" and "isnot" work like "==" and "!=". +Files: src/eval.c + +Patch 8.2.0046 +Problem: Tests for spell suggestions are slow. +Solution: Use shorter words. Test with latin1 and utf-8 to cover more code. + (Dominique Pell茅, closes #5399) +Files: src/testdir/test_spell.vim + +Patch 8.2.0047 +Problem: Cannot skip tests for specific MS-Windows platform. +Solution: Add windowsversion(). +Files: src/os_win32.c, src/globals.h, src/evalfunc.c, + runtime/doc/eval.txt, src/testdir/gen_opt_test.vim, + src/testdir/test_options.vim + +Patch 8.2.0048 +Problem: Another timers test is flaky on Travis for Mac. +Solution: Increase maximum expected time. +Files: src/testdir/test_timers.vim + +Patch 8.2.0049 +Problem: Command line completion not fully tested. +Solution: Add more test cases. Make help sorting stable. (Dominique Pell茅, + closes #5402) +Files: src/ex_cmds.c, src/testdir/test_cd.vim, + src/testdir/test_cmdline.vim, src/testdir/test_help.vim, + src/testdir/test_menu.vim, src/testdir/test_options.vim, + src/testdir/test_syntax.vim + +Patch 8.2.0050 +Problem: After deleting a file mark it is still in viminfo. +Solution: When a file mark was deleted more recently than the mark in the + merged viminfo file was updated, do not store the mark. (Pavol + Juhas, closes #5401, closes #1339) +Files: src/mark.c, src/testdir/test_marks.vim, + src/testdir/test_viminfo.vim, src/viminfo.c + +Patch 8.2.0051 (after 8.2.0049) +Problem: Command line completion test skipped. (Christian Brabandt) +Solution: Invert condition. +Files: src/testdir/test_cmdline.vim + +Patch 8.2.0052 +Problem: More-prompt not properly tested. +Solution: Add a test case. (Dominique Pell茅, closes #5404) +Files: src/testdir/test_messages.vim + +Patch 8.2.0053 +Problem: windowsversion() does not always return the right value. +Solution: Add a compatibility section in the manifest. (Ken Takata, + closes #5407) +Files: src/gvim.exe.mnf + +Patch 8.2.0054 +Problem: :diffget and :diffput don't have good completion. +Solution: Add proper completion. (Dominique Pell茅, closes #5409) +Files: runtime/doc/eval.txt, src/buffer.c, src/cmdexpand.c, + src/testdir/test_diffmode.vim, src/usercmd.c, src/vim.h + +Patch 8.2.0055 +Problem: Cannot use ":gui" in vimrc with VIMDLL enabled. +Solution: Change the logic, check "gui.starting". (Ken Takata, closes #5408) +Files: src/gui.c + +Patch 8.2.0056 +Problem: Execution stack is incomplete and inefficient. +Solution: Introduce a proper execution stack and use it instead of + sourcing_name/sourcing_lnum. Create a string only when used. +Files: src/structs.h, src/globals.h, src/autocmd.c, src/buffer.c + src/debugger.c, src/ex_docmd.c, src/ex_eval.c, src/highlight.c, + src/main.c, src/map.c, src/message.c, src/proto/scriptfile.pro, + src/scriptfile.c, src/option.c, src/profiler.c, src/spellfile.c, + src/term.c, src/testing.c, src/usercmd.c, src/userfunc.c, + src/kword_test.c, src/testdir/test_debugger.vim + +Patch 8.2.0057 (after 8.2.0056) +Problem: Cannot build with small features. +Solution: Add #ifdefs. +Files: src/scriptfile.c + +Patch 8.2.0058 +Problem: Running tests changes ~/.viminfo. +Solution: Make 'viminfo' empty when summarizing tests results. (closes #5414) +Files: src/testdir/summarize.vim + +Patch 8.2.0059 +Problem: Compiler warnings for unused variables in small build. (Tony + Mechelynck) +Solution: Add #ifdef. +Files: src/scriptfile.c + +Patch 8.2.0060 +Problem: Message test only runs with one encoding. (Dominique Pell茅) +Solution: Run the test with "utf-8" and "latin1". Fix underflow. (related + to #5410) +Files: src/message_test.c, src/message.c + +Patch 8.2.0061 +Problem: The execute stack can grow big and never shrinks. +Solution: Reduce the size in garbage collect. +Files: src/eval.c + +Patch 8.2.0062 +Problem: Memory test is flaky on FreeBSD. +Solution: Add a short sleep before getting the first size. +Files: src/testdir/test_memory_usage.vim + +Patch 8.2.0063 +Problem: Wrong size argument to vim_snprintf(). (Dominique Pell茅) +Solution: Reduce the size by the length. (related to #5410) +Files: src/ops.c + +Patch 8.2.0064 +Problem: Diffmode completion doesn't use per-window setting. +Solution: Check if a window is in diff mode. (Dominique Pell茅, closes #5419) +Files: src/buffer.c, src/testdir/test_diffmode.vim + +Patch 8.2.0065 +Problem: Amiga and alikes: autoopen only used on Amiga OS4. +Solution: Adjust #ifdefs. (Ola S枚der, closes #5413) +Files: src/os_amiga.c + +Patch 8.2.0066 +Problem: Some corners of vim_snprintf() are not tested. +Solution: Add a test in C. (Dominique Pell茅, closes #5422) +Files: src/message_test.c + +Patch 8.2.0067 +Problem: ERROR_UNKNOWN clashes on some systems. +Solution: Rename ERROR_ to FCERR_. (Ola S枚der, closes #5415) +Files: src/evalfunc.c, src/userfunc.c, src/vim.h + +Patch 8.2.0068 +Problem: Crash when using Python 3 with "utf32" encoding. (Dominique Pell茅) +Solution: Use "utf-8" whenever enc_utf8 is set. (closes #5423) +Files: src/testdir/test_python3.vim, src/if_py_both.h + +Patch 8.2.0069 +Problem: ETYPE_ is used for two different enums. +Solution: Rename one to use EXPR_. +Files: src/structs.h, src/eval.c, src/debugger.c + +Patch 8.2.0070 +Problem: Crash when using Python 3 with "debug" encoding. (Dominique Pell茅) +Solution: Use "euc-jp" whenever enc_dbcs is set. +Files: src/testdir/test_python3.vim, src/if_py_both.h + +Patch 8.2.0071 +Problem: Memory test often fails on Cirrus CI. +Solution: Allow for more tolerance in the upper limit. Remove sleep. +Files: src/testdir/test_memory_usage.vim + +Patch 8.2.0072 (after 8.2.0071) +Problem: Memory test still fails on Cirrus CI. +Solution: Allow for a tiny bit more tolerance in the upper limit. +Files: src/testdir/test_memory_usage.vim + +Patch 8.2.0073 +Problem: Initializing globals with COMMA is clumsy. +Solution: Use INIT2(), INIT3(), etc. +Files: src/vim.h, src/globals.h + +Patch 8.2.0074 +Problem: Python 3 unicode test sometimes fails. +Solution: Make 'termencoding' empty. Correct number of error message. +Files: src/change.c, runtime/doc/options.txt, runtime/doc/message.txt, + src/testdir/test_python3.vim + +Patch 8.2.0075 +Problem: Python 3 unicode test still sometimes fails. +Solution: Skip the test when 'termencoding' is not empty. +Files: src/testdir/test_python3.vim + +Patch 8.2.0076 +Problem: Python 3 unicode test fails on MS-Windows. +Solution: Do not set 'encoding' to "debug" on MS-Windows. +Files: src/testdir/test_python3.vim + +Patch 8.2.0077 +Problem: settagstack() cannot truncate at current index. +Solution: Add the "t" action. (Yegappan Lakshmanan, closes #5417) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/tag.c, + src/testdir/test_tagjump.vim + +Patch 8.2.0078 +Problem: Expanding <sfile> works differently the second time. +Solution: Keep the expanded name when redefining a function. (closes #5425) +Files: src/testdir/test_vimscript.vim, src/userfunc.c + +Patch 8.2.0079 +Problem: Python 3 unicode test still fails on MS-Windows. +Solution: Do not set 'encoding' to "euc-tw" on MS-Windows. +Files: src/testdir/test_python3.vim + +Patch 8.2.0080 +Problem: Globals using INIT4() are not in the tags file. +Solution: Adjust the tags command. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.0081 +Problem: MS-Windows also need the change to support INIT4(). +Solution: Add the ctags arguments. (Ken Takata) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.2.0082 +Problem: When reusing a buffer listeners are not cleared. (Axel Forsman) +Solution: Clear listeners when reusing a buffer. (closes #5431) +Files: src/testdir/test_listener.vim, src/buffer.c + +Patch 8.2.0083 +Problem: Text properties wrong when tabs and spaces are exchanged. +Solution: Take text properties into account. (Nobuhiro Takasaki, + closes #5427) +Files: src/edit.c, src/testdir/test_textprop.vim + +Patch 8.2.0084 +Problem: Complete item "user_data" can only be a string. +Solution: Accept any type of variable. (closes #5412) +Files: src/testdir/test_ins_complete.vim, src/insexpand.c, src/dict.c, + src/proto/dict.pro, src/eval.c, runtime/doc/insert.txt + +Patch 8.2.0085 +Problem: Dead code in builtin functions. +Solution: Clean up the code. +Files: src/evalvars.c, src/sound.c, src/textprop.c + +Patch 8.2.0086 (after 8.2.0084) +Problem: Build error for small version. (Tony Mechelynck) +Solution: Only use "user_data" with the +eval feature. Remove unused + variable. +Files: src/insexpand.c, src/dict.c + +Patch 8.2.0087 +Problem: Crash in command line expansion when out of memory. +Solution: Check for NULL pointer. Also make ExpandGeneric() static. + (Dominique Pell茅, closes #5437) +Files: src/cmdexpand.c, src/proto/cmdexpand.pro + +Patch 8.2.0088 +Problem: Insufficient tests for tags; bug in using extra tag field when + using an ex command to position the cursor. +Solution: Fix the bug, add more tests. (Yegappan Lakshmanan, closes #5439) +Files: runtime/doc/tagsrch.txt, src/tag.c, + src/testdir/test_ins_complete.vim, src/testdir/test_tagfunc.vim, + src/testdir/test_tagjump.vim, src/testdir/test_taglist.vim + +Patch 8.2.0089 +Problem: Crash when running out of memory in :setfiletype completion. +Solution: Do not allocate memory. (Dominique Pell茅, closes #5438) +Files: src/cmdexpand.c + +Patch 8.2.0090 +Problem: Generated files show up in git status. +Solution: Ignore a few more files. +Files: .gitignore + +Patch 8.2.0091 +Problem: Compiler warnings for size_t / int types. +Solution: Change type to size_t. (Mike Williams) +Files: src/scriptfile.c + +Patch 8.2.0092 +Problem: Tags functionality insufficiently tested. +Solution: Add more tags tests. (Yegappan Lakshmanan, closes #5446) +Files: src/testdir/test_tagjump.vim + +Patch 8.2.0093 +Problem: win_splitmove() can make Vim hang. +Solution: Check windows exists in the current tab page. (closes #5444) +Files: src/testdir/test_window_cmd.vim, src/evalwindow.c + +Patch 8.2.0094 +Problem: MS-Windows: cannot build with Strawberry Perl 5.30. +Solution: Define __builtin_expect() as a workaround. (Ken Takata, + closes #5267) +Files: src/if_perl.xs + +Patch 8.2.0095 +Problem: Cannot specify exit code for :cquit. +Solution: Add optional argument. (Thinca, Yegappan Lakshmanan, closes #5442) +Files: runtime/doc/quickfix.txt, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test_quickfix.vim + +Patch 8.2.0096 +Problem: Cannot create tiny popup window in last column. (Daniel Steinberg) +Solution: Remove position limit. (closes #5447) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump + +Patch 8.2.0097 +Problem: Crash with autocommand and spellfile. (Tim Pope) +Solution: Do not pop exestack when not pushed. (closes #5450) +Files: src/testdir/test_autocmd.vim, src/spellfile.c + +Patch 8.2.0098 +Problem: Exe stack length can be wrong without being detected. +Solution: Add a check when ABORT_ON_INTERNAL_ERROR is defined. +Files: src/macros.h, src/autocmd.c, src/buffer.c, src/ex_docmd.c, + src/main.c, src/map.c, src/scriptfile.c, src/spellfile.c, + src/userfunc.c + +Patch 8.2.0099 +Problem: Use of NULL pointer when out of memory. +Solution: Check for NULL pointer. (Dominique Pell茅, closes #5449) +Files: src/cmdexpand.c + +Patch 8.2.0100 +Problem: Macros for Ruby are too complicated. +Solution: Do not use DYNAMIC_RUBY_VER, use RUBY_VERSION. (Ken Takata, + closes #5452) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/auto/configure, + src/configure.ac, src/if_ruby.c + +Patch 8.2.0101 +Problem: Crash when passing null object to ":echomsg". +Solution: Check for NULL pointer. (Yasuhiro Matsumoto, closes #5460) +Files: src/eval.c, src/testdir/test_messages.vim + +Patch 8.2.0102 +Problem: Messages test fails in small version. +Solution: Only use test_null_job() when available. +Files: src/testdir/test_messages.vim + +Patch 8.2.0103 +Problem: Using null object with execute() has strange effects. +Solution: Give an error message for Job and Channel. +Files: src/testdir/test_execute_func.vim, src/globals.h, src/eval.c, + src/evalfunc.c + +Patch 8.2.0104 +Problem: Using channel or job with ":execute" has strange effects. +Solution: Give an error message for Job and Channel. +Files: src/testdir/test_eval_stuff.vim, src/eval.c + +Patch 8.2.0105 +Problem: Vim license not easy to find on github. +Solution: Add a separate LICENCE file. (closes #5458) +Files: LICENSE, Filelist + +Patch 8.2.0106 +Problem: Printf formats are not exactly right. +Solution: Adjust signed/unsigned conversions. (Frazer Clews, closes #5456) +Files: runtime/tools/ccfilter.c, src/libvterm/src/parser.c, + src/libvterm/src/pen.c, src/ui.c + +Patch 8.2.0107 +Problem: Hgignore is out of sync from gitignore. +Solution: Add lines to hgignore. (Ken Takata) +Files: .hgignore + +Patch 8.2.0108 +Problem: When sign text is changed a manual redraw is needed. (Pontus + Lietzler) +Solution: Redraw automatically. (closes #5455) +Files: src/testdir/test_signs.vim, src/sign.c, + src/testdir/dumps/Test_sign_cursor_1.dump, + src/testdir/dumps/Test_sign_cursor_2.dump, + src/testdir/dumps/Test_sign_cursor_3.dump, + src/testdir/dumps/Test_sign_cursor_01.dump, + src/testdir/dumps/Test_sign_cursor_02.dump + +Patch 8.2.0109 +Problem: Corrupted text properties when expanding spaces. +Solution: Reallocate the line. (Nobuhiro Takasaki, closes #5457) +Files: src/edit.c, src/testdir/test_textprop.vim + +Patch 8.2.0110 +Problem: prop_find() is not implemented. +Solution: Implement prop_find(). (Ryan Hackett, closes #5421, closes #4970) +Files: src/evalfunc.c, src/proto/textprop.pro, + src/testdir/test_textprop.vim, src/textprop.c, + runtime/doc/textprop.txt + +Patch 8.2.0111 +Problem: VAR_SPECIAL is also used for booleans. +Solution: Add VAR_BOOL for better type checking. +Files: src/structs.h, src/dict.c, src/eval.c, src/evalfunc.c, + src/evalvars.c, src/if_lua.c, src/if_mzsch.c, src/if_py_both.h, + src/if_ruby.c, src/json.c, src/popupmenu.c, src/proto/dict.pro, + src/testing.c, src/vim.h, src/viminfo.c + +Patch 8.2.0112 +Problem: Illegal memory access when using 'cindent'. +Solution: Check for NUL byte. (Dominique Pell茅, closes #5470) +Files: src/cindent.c, src/testdir/test_cindent.vim + +Patch 8.2.0113 (after 8.2.0095) +Problem: "make cmdidxs" fails. +Solution: Allow address for ":cquit". Add --not-a-term to avoid a delay. +Files: src/ex_cmds.h, src/Makefile, src/Make_cyg_ming.mak, + src/Make_mvc.mak + +Patch 8.2.0114 +Problem: Info about sourced scripts is scattered. +Solution: Use scriptitem_T for info about a script, including s: variables. + Drop ga_scripts. +Files: src/structs.h, src/evalvars.c, src/scriptfile.c, src/eval.c + +Patch 8.2.0115 +Problem: Byte2line() does not work correctly with text properties. (Billie + Cleek) +Solution: Take the bytes of the text properties into account. + (closes #5334) +Files: src/testdir/test_textprop.vim, src/memline.c + +Patch 8.2.0116 +Problem: BufEnter autocmd not triggered on ":tab drop". (Andy Stewart) +Solution: Decrement autocmd_no_enter for the last file. (closes #1660, + closes #5473) +Files: src/arglist.c, src/testdir/test_tabpage.vim + +Patch 8.2.0117 +Problem: Crash when using gettabwinvar() with invalid arguments. (Yilin + Yang) +Solution: Use "curtab" if "tp" is NULL. (closes #5475) +Files: src/evalwindow.c, src/testdir/test_getvar.vim + +Patch 8.2.0118 +Problem: Crash when cycling to buffers involving popup window. +Solution: Do not decrement buffer reference count. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_7.dump + +Patch 8.2.0119 +Problem: Message test fails on some platforms. (Elimar Riesebieter) +Solution: Add type cast to vim_snprintf() argument. (Dominique Pell茅) +Files: src/message_test.c + +Patch 8.2.0120 +Problem: virtcol() does not check arguments to be valid, which may lead to + a crash. +Solution: Check the column to be valid. Do not decrement MAXCOL. + (closes #5480) +Files: src/evalfunc.c, src/testdir/test_marks.vim + +Patch 8.2.0121 +Problem: filter() and map() on blob don't work. +Solution: Correct the code. (closes #5483) +Files: src/list.c, src/testdir/test_blob.vim + +Patch 8.2.0122 +Problem: Readme files still mention MS-DOS. +Solution: Update readme files. (Ken Takata, closes #5486) +Files: README.md, README.txt, READMEdir/README_dos.txt, + READMEdir/README_srcdos.txt, READMEdir/README_w32s.txt, + runtime/doc/os_win32.txt + +Patch 8.2.0123 +Problem: complete_info() does not work when CompleteDone is triggered. +Solution: Trigger CompleteDone before clearing the info. +Files: src/insexpand.c, runtime/doc/autocmd.txt, + src/testdir/test_ins_complete.vim + +Patch 8.2.0124 +Problem: Compiler warnings for variable types. +Solution: Change type, add type cast. (Mike Williams) +Files: src/memline.c + +Patch 8.2.0125 +Problem: :mode no longer works for any system. +Solution: Always give an error message. +Files: src/ex_docmd.c, runtime/doc/quickref.txt, src/os_amiga.c, + src/proto/os_amiga.pro, src/os_mswin.c, src/proto/os_mswin.pro, + src/os_unix.c, src/proto/os_unix.pro + +Patch 8.2.0126 (after 8.2.0124) +Problem: Textprop test fails. +Solution: Fix sign in computation. +Files: src/memline.c + +Patch 8.2.0127 +Problem: Some buffer commands work in a popup window. +Solution: Disallow :bnext, :bprev, etc. (Naruhiko Nishino, closes #5494) +Files: src/ex_docmd.c, src/testdir/test_popupwin.vim + +Patch 8.2.0128 +Problem: Cannot list options one per line. +Solution: Use ":set!" to list one option per line. +Files: src/ex_docmd.c, src/option.c, src/proto/option.pro, src/vim.h, + src/ex_cmds.h, src/optiondefs.h, src/testdir/test_options.vim, + runtime/doc/options.txt + +Patch 8.2.0129 +Problem: MS-Windows installer doesn't use Turkish translations. +Solution: Enable the Turkish translations and fix a few. (Emir Sar谋, + closes #5493) +Files: nsis/gvim.nsi, nsis/lang/turkish.nsi + +Patch 8.2.0130 +Problem: Python3 ranges are not tested. +Solution: Add test. (Dominique Pell茅, closes #5498) +Files: src/testdir/test_python3.vim + +Patch 8.2.0131 +Problem: Command line is not cleared when switching tabs and the command + line height differs. +Solution: Set the "clear_cmdline" flag when needed. (Naruhiko Nishino, + closes #5495) +Files: src/testdir/dumps/Test_cmdlineclear_tabenter.dump, + src/testdir/test_cmdline.vim, src/window.c + +Patch 8.2.0132 +Problem: Script may be re-used when deleting and creating a new one. +Solution: When the inode matches, also check the file name. +Files: src/scriptfile.c, src/testdir/test_source.vim + +Patch 8.2.0133 +Problem: Invalid memory access with search command. +Solution: When :normal runs out of characters in bracketed paste mode break + out of the loop.(closes #5511) +Files: src/testdir/test_search.vim, src/edit.c + +Patch 8.2.0134 +Problem: Some map functionality not covered by tests. +Solution: Add tests. (Yegappan Lakshmanan, closes #5504) +Files: src/testdir/test_maparg.vim, src/testdir/test_mapping.vim + +Patch 8.2.0135 (after 8.2.0133) +Problem: Bracketed paste can still cause invalid memory access. (Dominique + Pell茅) +Solution: Check for NULL pointer. +Files: src/edit.c, src/testdir/test_search.vim + +Patch 8.2.0136 +Problem: Stray ch_logfile() call. +Solution: Remove it. (closes #5503) +Files: src/testdir/test_source.vim + +Patch 8.2.0137 +Problem: Crash when using win_execute() from a new tab. +Solution: Set the tp_*win pointers. (Ozaki Kiichi, closes #5512) +Files: src/testdir/test_winbuf_close.vim, src/window.c + +Patch 8.2.0138 +Problem: Memory leak when starting a job fails. +Solution: Free the list of arguments. (Ozaki Kiichi, closes #5510) +Files: src/channel.c, src/testdir/test_channel.vim + +Patch 8.2.0139 +Problem: MS-Windows: default for IME is inconsistent. +Solution: Also make IME default enabled with MVC. (Ken Takata, closes #5508) +Files: src/Make_mvc.mak + +Patch 8.2.0140 +Problem: CI does not test building doc tags. +Solution: Add the vimtags/gcc build. Cleanup showing version. (Ozaki Kiichi, + closes #5513) +Files: .travis.yml, Filelist, ci/if_ver-1.vim, ci/if_ver-2.vim, + ci/if_ver-cmd.vim, runtime/doc/Makefile, runtime/doc/doctags.vim, + src/testdir/if_ver-1.vim, src/testdir/if_ver-2.vim + +Patch 8.2.0141 +Problem: No swift filetype detection. +Solution: Add swift, swiftgyb and sil. (Emir Sar谋, closes #5517) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0142 +Problem: Possible to enter popup window with CTRL-W p. (John Devin) +Solution: Check entered window is not a popup window. (closes #5515) +Files: src/window.c, src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_9.dump, + src/testdir/dumps/Test_popupwin_previewpopup_10.dump + +Patch 8.2.0143 +Problem: Coverity warning for possible use of NULL pointer. +Solution: Check argv is not NULL. +Files: src/channel.c + +Patch 8.2.0144 +Problem: Some mapping code is not fully tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5519) +Files: src/testdir/test_langmap.vim, src/testdir/test_maparg.vim, + src/testdir/test_mapping.vim + +Patch 8.2.0145 +Problem: Using #error for compilation errors should be OK now. +Solution: Use #error. (Ken Takata, closes #5299) +Files: src/blowfish.c, src/vim.h + +Patch 8.2.0146 +Problem: Wrong indent when 'showbreak' and 'breakindent' are set and + 'briopt' includes "sbr". +Solution: Reset "need_showbreak" where needed. (Ken Takata, closes #5523) +Files: src/drawline.c, src/testdir/test_breakindent.vim + +Patch 8.2.0147 +Problem: Block Visual mode operators not correct when 'linebreak' set. +Solution: Set w_p_lbr to lbr_saved more often. (Ken Takata, closes #5524) +Files: src/ops.c, src/testdir/test_listlbr.vim + +Patch 8.2.0148 +Problem: Mapping related function in wrong source file. +Solution: Move the function. Add a few more test cases. (Yegappan + Lakshmanan, closes #5528) +Files: src/map.c, src/proto/term.pro, src/term.c, + src/testdir/test_mapping.vim + +Patch 8.2.0149 +Problem: Maintaining a Vim9 branch separately is more work. +Solution: Merge the Vim9 script changes. +Files: README.md, README_VIM9.md, runtime/doc/Makefile, + runtime/doc/eval.txt, runtime/doc/options.txt, runtime/doc/tags, + runtime/doc/vim9.txt, runtime/ftplugin/vim.vim, + runtime/indent/vim.vim, runtime/syntax/vim.vim, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile, src/blob.c, + src/channel.c, src/dict.c, src/eval.c, src/evalbuffer.c, + src/evalfunc.c, src/evalvars.c, src/ex_cmdidxs.h, src/ex_cmds.h, + src/ex_docmd.c, src/ex_eval.c, src/filepath.c, src/globals.h, + src/gui.c, src/if_lua.c, src/if_py_both.h, src/insexpand.c, + src/json.c, src/list.c, src/macros.h, src/main.c, src/message.c, + src/misc1.c, src/proto.h, src/proto/blob.pro, src/proto/eval.pro, + src/proto/evalfunc.pro, src/proto/evalvars.pro, + src/proto/ex_docmd.pro, src/proto/ex_eval.pro, src/proto/list.pro, + src/proto/message.pro, src/proto/scriptfile.pro, + src/proto/userfunc.pro, src/proto/vim9compile.pro, + src/proto/vim9execute.pro, src/proto/vim9script.pro, + src/scriptfile.c, src/session.c, src/structs.h, src/syntax.c, + src/testdir/Make_all.mak, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim, src/testing.c, src/userfunc.c, + src/vim.h, src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/vim9script.c, src/viminfo.c + +Patch 8.2.0150 +Problem: Cannot define python function when using :execute. (Yasuhiro + Matsumoto) +Solution: Do not recognize "def" inside "function. +Files: src/testdir/test_vim9_script.vim, src/userfunc.c + +Patch 8.2.0151 +Problem: Detecting a script was already sourced is unreliable. +Solution: Do not use the inode number. +Files: src/scriptfile.c, src/structs.h, src/testdir/test_vim9_script.vim + +Patch 8.2.0152 +Problem: Restoring ctrl_x_mode is not needed. +Solution: Remove restoring the old value, it's changed again soon. +Files: src/insexpand.c + +Patch 8.2.0153 +Problem: Warning shows when listing version info. +Solution: Use "-u NONE". (Ozaki Kiichi, closes #5534) +Files: .travis.yml + +Patch 8.2.0154 +Problem: Reallocating the list of scripts is inefficient. +Solution: Instead of using a growarray of scriptitem_T, store pointers and + allocate each scriptitem_T separately. Also avoids that the + growarray pointers change when sourcing a new script. +Files: src/globals.h, src/eval.c, src/evalvars.c, src/ex_docmd.c, + src/profiler.c, src/scriptfile.c, src/vim9compile.c, + src/vim9execute.c, src/vim9script.c + +Patch 8.2.0155 +Problem: Warnings from MinGW compiler. (John Marriott) Json test fails when + building without +float feature. +Solution: Init variables. Fix Json parsing. Skip a few tests that require + the +float feature. +Files: src/vim9script.c, src/vim9compile.c, src/vim9execute.c, + src/if_py_both.h, src/json.c, src/testdir/test_method.vim + +Patch 8.2.0156 +Problem: Various typos in source files and tests. +Solution: Fix the typos. (Emir Sar谋, closes #5532) +Files: Makefile, src/INSTALLvms.txt, src/Make_vms.mms, src/beval.h, + src/buffer.c, src/charset.c, src/evalvars.c, src/ex_cmds.c, + src/ex_docmd.c, src/getchar.c, src/gui.c, src/gui_mac.c, + src/gui_photon.c, src/if_perl.xs, + src/libvterm/t/11state_movecursor.test, + src/libvterm/t/41screen_unicode.test, src/mbyte.c, src/memline.c, + src/normal.c, src/ops.c, src/option.c, src/option.h, + src/os_unix.c, src/os_win32.c, src/quickfix.c, src/register.c, + src/spell.c, src/tag.c, src/term.c, + src/testdir/test_breakindent.vim, src/testdir/test_channel.vim, + src/testdir/test_cindent.vim, src/testdir/test_digraph.vim, + src/testdir/test_edit.vim, src/testdir/test_netbeans.vim, + src/testdir/test_quickfix.vim, src/testdir/test_registers.vim, + src/testdir/test_stat.vim, src/ui.c, src/xxd/xxd.c + +Patch 8.2.0157 +Problem: Vim9 script files not in list of distributed files. +Solution: Add the entries. +Files: Filelist + +Patch 8.2.0158 (after 8.2.0123) +Problem: Triggering CompleteDone earlier is not backwards compatible. + (Daniel Hahler) +Solution: Add CompleteDonePre instead. +Files: src/insexpand.c, runtime/doc/autocmd.txt, src/autocmd.c, + src/vim.h, src/testdir/test_ins_complete.vim + +Patch 8.2.0159 +Problem: Non-materialized range() list causes problems. (Fujiwara Takuya) +Solution: Materialize the list where needed. +Files: src/testdir/test_functions.vim, src/testdir/test_python3.vim, + src/userfunc.c, src/evalfunc.c, src/highlight.c, src/evalvars.c, + src/popupmenu.c, src/insexpand.c, src/json.c, src/channel.c, + src/eval.c + +Patch 8.2.0160 (after 8.2.0159) +Problem: Range test fails. +Solution: Include change in list code. (#5541) +Files: src/list.c + +Patch 8.2.0161 +Problem: Not recognizing .gv file as dot filetype. +Solution: Add *.gv to dot pattern. (closes #5544) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0162 +Problem: Balloon test fails in the GUI. +Solution: Skip test in the GUI. +Files: src/testdir/test_functions.vim + +Patch 8.2.0163 +Problem: Test hangs on MS-Windows console. +Solution: use feedkeys() instead of test_feedinput(). (Ken Takata) +Files: src/testdir/test_functions.vim, src/testing.c + +Patch 8.2.0164 +Problem: Test_alot takes too long. +Solution: Run several tests individually. +Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak + +Patch 8.2.0165 +Problem: Coverity warning for using NULL pointer. +Solution: Add missing "else". +Files: src/vim9compile.c + +Patch 8.2.0166 +Problem: Coverity warning for using uninitialized variable. +Solution: Check for failure. +Files: src/vim9execute.c + +Patch 8.2.0167 +Problem: Coverity warning for ignoring return value. +Solution: Check the return value and jump if failed. +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0168 +Problem: Coverity warning for assigning NULL to an option. +Solution: Use empty string instead of NULL. +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0169 +Problem: Coverity warning for dead code. +Solution: Check if inside try-finally. +Files: src/vim9execute.c + +Patch 8.2.0170 +Problem: Coverity warning for ignoring return value. +Solution: Check the return value and return if failed. +Files: src/vim9compile.c + +Patch 8.2.0171 +Problem: Coverity warning for using uninitialized buffer. +Solution: Check the skip flag. +Files: src/userfunc.c + +Patch 8.2.0172 +Problem: Coverity warning for not restoring character. +Solution: Restore the character also in case of failure. +Files: src/vim9script.c + +Patch 8.2.0173 +Problem: Build fails with old compiler. +Solution: Do not use anonymous unions. (John Marriott) +Files: src/vim9compile.c, src/evalvars.c, src/list.c, src/structs.h, + src/evalfunc.c, src/channel.c, src/if_mzsch.c, src/if_py_both.h + +Patch 8.2.0174 +Problem: Various commands not completely tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5551) +Files: src/testdir/test_excmd.vim, src/testdir/test_fnameescape.vim, + src/testdir/test_ga.vim, src/testdir/test_global.vim, + src/testdir/test_move.vim, src/testdir/test_options.vim, + src/testdir/test_packadd.vim, src/testdir/test_sort.vim, + src/testdir/test_substitute.vim, src/testdir/test_textformat.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0175 +Problem: Crash when removing list element in map(). +Solution: Lock the list. (closes #2652) +Files: src/testdir/test_filter_map.vim, src/list.c + +Patch 8.2.0176 +Problem: Generating os headers does not work for Swedish. +Solution: Set the locale to C. (Christian Brabandt, closes #5258) +Files: src/osdef.sh + +Patch 8.2.0177 +Problem: Memory leak in get_tags(). +Solution: Free matches when finding a pseudo-tag line. (Dominique Pell茅, + closes #5553) +Files: src/tag.c + +Patch 8.2.0178 +Problem: With VTP the screen may not be restored properly. +Solution: Add another set of saved RGB values. (Nobuhiro Takasaki, + closes #5548) +Files: src/os_win32.c + +Patch 8.2.0179 +Problem: Still a few places where range() does not work. +Solution: Fix using range() causing problems. +Files: src/terminal.c, src/testdir/test_functions.vim, + src/testdir/test_popupwin.vim, src/popupwin.c, src/tag.c, + src/testdir/dumps/Test_popupwin_20.dump, + src/testdir/dumps/Test_popupwin_21.dump, + src/testdir/dumps/Test_popup_settext_07.dump, src/globals.h + +Patch 8.2.0180 +Problem: Test for wrapmargin fails if terminal is not 80 columns. +Solution: Vertical split the window. (Ken Takata, closes #5554) +Files: src/testdir/test_textformat.vim + +Patch 8.2.0181 +Problem: Problems parsing :term arguments. +Solution: Improve parsing, fix memory leak, add tests. (Ozaki Kiichi, + closes #5536) +Files: src/channel.c, src/proto/channel.pro, src/structs.h, + src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.0182 +Problem: Min() and max() materialize a range() list. +Solution: Compute the result without materializing the list. (#5541) +Files: src/evalfunc.c + +Patch 8.2.0183 +Problem: Tests fail when the float feature is disabled. +Solution: Skip tests that don't work without float support. +Files: src/testdir/shared.vim, src/testdir/test_blob.vim, + src/testdir/test_channel.vim, src/testdir/test_cscope.vim, + src/testdir/test_execute_func.vim, src/testdir/test_expr.vim, + src/testdir/test_functions.vim, src/testdir/test_lambda.vim, + src/testdir/test_listdict.vim, src/testdir/test_lua.vim, + src/testdir/test_options.vim, src/testdir/test_partial.vim, + src/testdir/test_ruby.vim, src/testdir/test_sort.vim, + src/testdir/test_timers.vim, src/testdir/test_true_false.vim, + src/testdir/test_user_func.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vimscript.vim, src/testdir/test_regexp_latin.vim, + src/testdir/test_glob2regpat.vim + +Patch 8.2.0184 +Problem: Blob test fails. +Solution: Check for different error when float feature is missing. +Files: src/testdir/test_blob.vim + +Patch 8.2.0185 +Problem: Vim9 script: cannot use "if has()" to skip lines. +Solution: Evaluate constant expression at runtime. +Files: src/vim9compile.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0186 +Problem: A couple of tests may fail when features are missing. +Solution: Check for features. (Dominique Pell茅, closes #5561) +Files: src/testdir/test_functions.vim, src/testdir/test_highlight.vim + +Patch 8.2.0187 +Problem: Redundant code. +Solution: Remove unused assignments. (Dominique Pell茅, closes #5557) +Files: src/vim9compile.c + +Patch 8.2.0188 +Problem: Check commands don't work well with Vim9 script. +Solution: Improve constant expression handling. +Files: src/vim9compile.c, src/testdir/check.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0189 +Problem: cd() with NULL argument crashes. +Solution: Check for NULL. (Ken Takata, closes #5558) +Files: src/testdir/test_cd.vim, src/ex_docmd.c + +Patch 8.2.0190 +Problem: Kotlin files are not recognized. +Solution: Detect Kotlin files. (Alkeryn, closes #5560) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0191 +Problem: Cannot put a terminal in a popup window. +Solution: Allow opening a terminal in a popup window. It will always have + keyboard focus until closed. +Files: src/popupwin.c, src/proto/popupwin.pro, src/terminal.c, + src/proto/terminal.pro, src/macros.h, src/mouse.c, + src/highlight.c, src/drawline.c, src/optionstr.c, src/window.c, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_1.dump, + src/testdir/dumps/Test_terminal_popup_2.dump, + src/testdir/dumps/Test_terminal_popup_3.dump + +Patch 8.2.0192 (after 8.2.0191) +Problem: Build failure without +terminal feature. +Solution: Add #ifdefs. +Files: src/popupwin.c + +Patch 8.2.0193 (after 8.2.0191) +Problem: Still build failure without +terminal feature. +Solution: Add more #ifdefs. +Files: src/macros.h + +Patch 8.2.0194 (after 8.2.0193) +Problem: Some commands can cause problems in terminal popup. +Solution: Disallow more commands. +Files: src/macros.h, src/popupwin.c, src/proto/popupwin.pro, + src/arglist.c, src/ex_docmd.c, src/window.c, + src/testdir/test_terminal.vim + +Patch 8.2.0195 +Problem: Some tests fail when run in the GUI. +Solution: Make sure the window width is enough. In the GUI run terminal Vim + in the terminal, if possible. +Files: src/testdir/test_highlight.vim, src/testdir/check.vim, + src/testdir/test_terminal.vim + +Patch 8.2.0196 +Problem: Blocking commands for a finished job in a popup window. +Solution: Do not block commands if the job has finished. Adjust test. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, src/window.c, + src/terminal.c, src/proto/terminal.pro + +Patch 8.2.0197 +Problem: Some Ex commands not sufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5565) +Files: src/testdir/test_global.vim, src/testdir/test_help.vim, + src/testdir/test_help_tagjump.vim, src/testdir/test_options.vim, + src/testdir/test_substitute.vim, src/testdir/test_textformat.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0198 +Problem: No tests for y/n prompt. +Solution: Add tests. (Dominique Pell茅, closes #5564) +Files: src/testdir/test_messages.vim + +Patch 8.2.0199 +Problem: Vim9 script commands not sufficiently tested. +Solution: Add more tests. Fix script-local function use. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim, + src/userfunc.c + +Patch 8.2.0200 +Problem: Vim9 script commands not sufficiently tested. +Solution: Add more tests. Fix storing global variable. Make script + variables work. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/evalvars.c, + src/proto/evalvars.pro, src/testdir/test_vim9_script.vim, + src/misc1.c, src/proto/misc1.pro + +Patch 8.2.0201 +Problem: Cannot assign to an imported variable. +Solution: Make it work. +Files: src/evalvars.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0202 +Problem: When 'lazyredraw' is set the window title may not be updated. +Solution: Set "do_redraw" before entering the main loop. (Jason Franklin) +Files: src/main.c + +Patch 8.2.0203 +Problem: :helptags and some other functionality not tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5567) +Files: src/testdir/test_compiler.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_excmd.vim, src/testdir/test_filechanged.vim, + src/testdir/test_help.vim, src/testdir/test_help_tagjump.vim, + src/testdir/test_timers.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.0204 +Problem: Crash when using winnr('j') in a popup window. +Solution: Do not search for neighbors in a popup window. (closes #5568) +Files: src/window.c, src/testdir/test_popupwin.vim, src/evalwindow.c + +Patch 8.2.0205 +Problem: Error code E899 used twice. +Solution: Use E863 for the terminal in popup error. +Files: src/popupwin.c + +Patch 8.2.0206 +Problem: Calling Vim9 function using default argument fails. +Solution: Give an appropriate error. (closes #5572) +Files: src/testdir/test_vim9_script.vim, src/vim9compile.c, + src/vim9execute.c + +Patch 8.2.0207 +Problem: Crash when missing member type on list argument. +Solution: Check for invalid type. (closes #5572) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0208 +Problem: Fnamemodify() does not apply ":~" when followed by ":.". +Solution: Don't let a failing ":." cause the ":~" to be skipped. (Yasuhiro + Matsumoto, closes #5577) +Files: runtime/doc/cmdline.txt, src/filepath.c, + src/testdir/test_fnamemodify.vim + +Patch 8.2.0209 +Problem: Function a bit far away from where it's used. +Solution: Move function close to where it's used. (Ken Takata, closes #5569) +Files: src/fileio.c, src/filepath.c + +Patch 8.2.0210 +Problem: Coverity complains about uninitialized field. +Solution: Initialize the field. +Files: src/vim9compile.c + +Patch 8.2.0211 +Problem: Test for ANSI colors fails without an "ls" command. +Solution: Use "dir". (Ken Takata, closes #5582) +Files: src/testdir/test_functions.vim + +Patch 8.2.0212 +Problem: Missing search/substitute pattern hardly tested. +Solution: Add test_clear_search_pat() and tests. (Yegappan Lakshmanan, + closes #5579) +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/regexp.pro, + src/proto/search.pro, src/proto/testing.pro, src/regexp.c, + src/search.c, src/testdir/test_quickfix.vim, + src/testdir/test_search.vim, src/testdir/test_sort.vim, + src/testdir/test_substitute.vim, src/testing.c + +Patch 8.2.0213 +Problem: Configure does not recognize gcc 10.0 and later. +Solution: Adjust the pattern matching the version number. (Sergei + Trofimovich, closes #5580) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.0214 +Problem: A popup window with a terminal can be made hidden. +Solution: Disallow hiding a terminal popup. +Files: src/testdir/test_terminal.vim, src/popupwin.c, + src/testdir/dumps/Test_terminal_popup_4.dump + +Patch 8.2.0215 (after 8.2.0208) +Problem: Wrong file name shortening. (Ingo Karkat) +Solution: Better check for path separator. (Yasuhiro Matsumoto, + closes #5583, closes #5584) +Files: src/filepath.c, src/testdir/test_fnamemodify.vim + +Patch 8.2.0216 +Problem: Several Vim9 instructions are not tested. +Solution: Add more tests. Fix :disassemble output. Make catch with pattern + work. +Files: src/testdir/test_vim9_script.vim, src/vim9execute.c, + src/vim9compile.c + +Patch 8.2.0217 (after 8.2.0214) +Problem: Terminal test fails on Mac. +Solution: Add a short wait. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0218 +Problem: Several Vim9 instructions are not tested. +Solution: Add more tests. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0219 (after 8.2.0217) +Problem: Terminal test still fails on Mac. +Solution: Skip part of the test on Mac. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0220 +Problem: Terminal test did pass on Mac. +Solution: Remove the skip again. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0221 +Problem: No test for Vim9 += and ..=. +Solution: Add tests. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0222 +Problem: Vim9: optional function arguments don't work yet. +Solution: Implement optional function arguments. +Files: src/userfunc.c, src/vim9compile.c, src/vim9execute.c, + src/structs.h, src/testdir/test_vim9_script.vim + +Patch 8.2.0223 +Problem: Some instructions not yet tested. +Solution: Disassemble more instructions. Move tests to a new file. Compile + call to s:function(). +Files: src/testdir/test_vim9_script.vim, src/testdir/Make_all.mak, + src/testdir/test_vim9_disassemble.vim, src/vim9compile.c, + src/userfunc.c, src/proto/userfunc.pro, src/vim.h + +Patch 8.2.0224 +Problem: compiling :elseif not tested yet. +Solution: Add test for :elseif. Fix generating jumps. +Files: src/testdir/test_vim9_script.vim, src/vim9compile.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0225 +Problem: compiling lambda not tested yet. +Solution: Add test for lambda and funcref. Drop unused instruction arg. +Files: src/testdir/test_vim9_disassemble.vim, src/vim9.h, + src/vim9execute.c + +Patch 8.2.0226 +Problem: Compiling for loop not tested. +Solution: Add a test. Make variable initialization work for more types. +Files: src/testdir/test_vim9_disassemble.vim, src/vim9compile.c + +Patch 8.2.0227 +Problem: Compiling a few instructions not tested. +Solution: Add more test cases. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0228 +Problem: Configure does not recognize gcc version on BSD. +Solution: Do not use "\+" in the pattern matching the version number. (Ozaki + Kiichi, closes #5590) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.0229 +Problem: Compare instructions not tested. +Solution: Add test cases. Fix disassemble with line continuation. +Files: src/testdir/test_vim9_disassemble.vim, src/vim9execute.c, + src/vim9compile.c + +Patch 8.2.0230 +Problem: Terminal popup test is flaky. +Solution: Increase wait time a bit. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0231 +Problem: Silent system command may clear the screen. +Solution: Do not clear the screen in t_te. +Files: src/term.c + +Patch 8.2.0232 +Problem: The :compiler command causes a crash. (Daniel Steinberg) +Solution: Do not use the script index if it isn't set. +Files: src/ex_docmd.c, src/testdir/test_compiler.vim + +Patch 8.2.0233 +Problem: Crash when using garbagecollect() in between rand(). +Solution: Redesign the rand() and srand() implementation. (Yasuhiro + Matsumoto, closes #5587, closes #5588) +Files: src/evalfunc.c, src/testdir/test_random.vim, + runtime/doc/testing.txt, runtime/doc/eval.txt + +Patch 8.2.0234 +Problem: Message test fails on SunOS. +Solution: Adjust expectation for printf "%p". (Ozaki Kiichi, closes #5595) +Files: src/message_test.c + +Patch 8.2.0235 +Problem: Draw error when an empty group is removed from 'statusline'. +Solution: Do not use highlighting from a removed group. +Files: src/buffer.c, src/testdir/test_statusline.vim, + src/testdir/dumps/Test_statusline_1.dump + +Patch 8.2.0236 +Problem: MS-Windows uninstall doesn't delete vimtutor.bat. +Solution: Change directory before deletion. (Ken Takata, closes #5603) +Files: src/uninstall.c + +Patch 8.2.0237 +Problem: Crash when setting 'wincolor' on finished terminal window. + (Bakudankun) +Solution: Check that the vterm is not NULL. (Yasuhiro Matsumoto, closes + #5607, closes #5610) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.0238 +Problem: MS-Windows: job_stop() results in exit value zero. +Solution: Call TerminateJobObject() with -1 instead of 0. (Yasuhiro + Matsumoto, closes #5150, closes #5614) +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 8.2.0239 +Problem: MS-Windows: 'env' job option does not override existing + environment variables. (Tim Pope) +Solution: Set the environment variables later. (Yasuhiro Matsumoto, + closes #5485, closes #5608) +Files: src/os_win32.c, src/testdir/test_channel.vim + +Patch 8.2.0240 +Problem: Using memory after it was freed. (Dominique Pell茅) +Solution: Do not mix conversion buffer with other buffer. +Files: src/viminfo.c, src/vim.h + +Patch 8.2.0241 +Problem: Crash when setting 'buftype' to "quickfix". +Solution: Check that error list is not NULL. (closes #5613) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.0242 +Problem: Preview popup window test fails with long directory name. (Jakub + K膮dzio艂ka) +Solution: Use "silent cd". (closes #5615) +Files: src/testdir/test_popupwin.vim + +Patch 8.2.0243 +Problem: Insufficient code coverage for ex_docmd.c functions. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5618) +Files: src/testdir/Make_all.mak, src/testdir/test_arglist.vim, + src/testdir/test_buffer.vim, src/testdir/test_cd.vim, + src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_excmd.vim, src/testdir/test_mapping.vim, + src/testdir/test_quickfix.vim, src/testdir/test_search.vim, + src/testdir/test_sort.vim, src/testdir/test_source.vim, + src/testdir/test_substitute.vim, src/testdir/test_undo.vim, + src/testdir/test_vimscript.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0244 +Problem: Compiler warning in Lua interface. +Solution: Add type cast. (Ken Takata, closes #5621) +Files: src/if_lua.c + +Patch 8.2.0245 +Problem: MSVC: error message if the auto directory already exists. +Solution: Add "if not exists". (Ken Takata, closes #5620) +Files: src/Make_mvc.mak + +Patch 8.2.0246 +Problem: MSVC: deprecation warnings with Ruby. +Solution: Move _CRT_SECURE_NO_DEPRECATE to build file. (Ken Takata, + closes #5622) +Files: src/Make_mvc.mak, src/if_ruby.c, src/os_win32.h, src/vim.h, + src/vimio.h + +Patch 8.2.0247 +Problem: Misleading comment in NSIS installer script. +Solution: Negate the meaning of the comment. (Ken Takata, closes #5627) +Files: nsis/gvim.nsi + +Patch 8.2.0248 +Problem: MS-Windows: dealing with deprecation is too complicated. +Solution: Use io.h directly. Move _CRT_SECURE_NO_DEPRECATE to the build + file. Suppress C4091 warning by setting "_WIN32_WINNT". (Ken + Takata, closes #5626) +Files: src/Make_mvc.mak, src/dosinst.h, src/vim.h, src/vimio.h, + src/winclip.c, Filelist + +Patch 8.2.0249 +Problem: MS-Windows: various warnings. +Solution: Set the charset to utf-8. Add _WIN32_WINNT and _USING_V110_SDK71_. + (Ken Takata, closes #5625) +Files: src/GvimExt/Makefile, src/Make_mvc.mak + +Patch 8.2.0250 +Problem: test_clear_search_pat() is unused. +Solution: Remove the function. (Yegappan Lakshmanan, closes #5624) +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/regexp.pro, + src/proto/search.pro, src/proto/testing.pro, src/regexp.c, + src/search.c, src/testdir/test_writefile.vim, src/testing.c + +Patch 8.2.0251 +Problem: A couple of function return types can be more specific. +Solution: Use a better return type. (Ken Takata, closes #5629) +Files: src/evalfunc.c, src/globals.h + +Patch 8.2.0252 +Problem: Windows compiler warns for using size_t. +Solution: Change to int. (Mike Williams) +Files: src/vim9compile.c + +Patch 8.2.0253 +Problem: Crash when using :disassemble without argument. (Dhiraj Mishra) +Solution: Check for missing argument. (Dominique Pell茅, closes #5635, + closes #5637) +Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim, + src/ex_cmds.h + +Patch 8.2.0254 +Problem: Compiler warning for checking size_t to be negative. +Solution: Only check for zero. (Zoltan Arpadffy) +Files: src/vim9compile.c + +Patch 8.2.0255 +Problem: VMS: missing files in build. +Solution: Add the files. (Zoltan Arpadffy) +Files: src/Make_vms.mms + +Patch 8.2.0256 +Problem: Time and timer related code is spread out. +Solution: Move time and timer related code to a new file. (Yegappan + Lakshmanan, closes #5604) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/evalfunc.c, src/ex_cmds.c, src/ex_cmds2.c, src/main.c, + src/memline.c, src/misc1.c, src/misc2.c, src/proto.h, + src/proto/ex_cmds.pro, src/proto/ex_cmds2.pro, src/proto/main.pro, + src/proto/memline.pro, src/proto/misc1.pro, src/proto/misc2.pro, + src/proto/time.pro, src/time.c + +Patch 8.2.0257 +Problem: Cannot recognize a terminal in a popup window. +Solution: Add the win_gettype() function. +Files: runtime/doc/eval.txt, src/evalfunc.c, src/evalwindow.c, + src/proto/evalwindow.pro, src/testdir/test_cmdline.vim, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_1.dump + +Patch 8.2.0258 +Problem: ModifyOtherKeys cannot be temporarily disabled. +Solution: Add echoraw() with an example for modifyOtherKeys. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim, + src/testdir/dumps/Test_functions_echoraw.dump + +Patch 8.2.0259 +Problem: Terminal in popup test sometimes fails. +Solution: Clear the command line. +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_1.dump + +Patch 8.2.0260 +Problem: Several lines of code are duplicated. +Solution: Move duplicated code to a function. (Yegappan Lakshmanan, + closes #5330) +Files: src/option.c, src/os_unix.c, src/os_win32.c, src/proto/term.pro, + src/quickfix.c, src/regexp.c, src/regexp_bt.c, src/regexp_nfa.c, + src/term.c + +Patch 8.2.0261 +Problem: Some code not covered by tests. +Solution: Add test cases. (Yegappan Lakshmanan, closes #5645) +Files: src/testdir/test_buffer.vim, src/testdir/test_cmdline.vim, + src/testdir/test_exists.vim, src/testdir/test_filechanged.vim, + src/testdir/test_fileformat.vim, src/testdir/test_mapping.vim, + src/testdir/test_marks.vim, src/testdir/test_normal.vim, + src/testdir/test_plus_arg_edit.vim, src/testdir/test_quickfix.vim, + src/testdir/test_tabpage.vim, src/testdir/test_visual.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_writefile.vim + +Patch 8.2.0262 (after 8.2.0261) +Problem: Fileformat test fails on MS-Windows. +Solution: Set fileformat of buffer. +Files: src/testdir/test_fileformat.vim + +Patch 8.2.0263 +Problem: A few new Vim9 messages are not localized. +Solution: Add the gettext wrapper. (Dominique Pell茅, closes #5647) +Files: src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0264 (after 8.2.0262) +Problem: Fileformat test still fails on MS-Windows. +Solution: Set fileformat of buffer in the right place. +Files: src/testdir/test_fileformat.vim + +Patch 8.2.0265 +Problem: "eval" after "if 0" doesn't check for following command. +Solution: Add "eval" to list of commands that check for a following command. + (closes #5640) +Files: src/ex_docmd.c, src/testdir/test_expr.vim + +Patch 8.2.0266 +Problem: Terminal in popup test sometimes fails on Mac. +Solution: Add a short delay. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0267 +Problem: No check for a following command when calling a function fails. +Solution: Also check for a following command when inside a try block. + (closes #5642) +Files: src/userfunc.c, src/testdir/test_user_func.vim + +Patch 8.2.0268 (after 8.2.0267) +Problem: Trycatch test fails. +Solution: When calling function fails only check for following command, do + not give another error. +Files: src/userfunc.c + +Patch 8.2.0269 +Problem: Vim9: operator after list index does not work. (Yasuhiro + Matsumoto) +Solution: After indexing a list change the type to the list member type. + (closes #5651) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0270 +Problem: Some code not covered by tests. +Solution: Add test cases. (Yegappan Lakshmanan, closes #5649) +Files: src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim, + src/testdir/test_edit.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_excmd.vim, src/testdir/test_expand.vim, + src/testdir/test_filetype.vim, src/testdir/test_findfile.vim, + src/testdir/test_join.vim, src/testdir/test_move.vim, + src/testdir/test_normal.vim, src/testdir/test_registers.vim, + src/testdir/test_source.vim, src/testdir/test_tabpage.vim, + src/testdir/test_tagjump.vim, src/testdir/test_vimscript.vim, + src/testdir/test_visual.vim, src/testdir/test_window_cmd.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0271 +Problem: The "num64" feature is available everywhere and building without + it causes problems. +Solution: Graduate the "num64" feature. (James McCoy, closes #5650) +Files: src/evalfunc.c, src/feature.h, src/message.c, src/structs.h, + src/testdir/test_expr.vim, src/testdir/test_largefile.vim, + src/testdir/test_sort.vim, src/testdir/test_vimscript.vim, + src/version.c + +Patch 8.2.0272 +Problem: ":helptags ALL" gives error for directories without write + permission. (Mat臎j Cepl) +Solution: Ignore errors for ":helptags ALL". (Ken Takata, closes #5026, + closes #5652) +Files: src/ex_cmds.c, src/testdir/test_help.vim + +Patch 8.2.0273 +Problem: MS-Windows uninstall may delete wrong batch file. +Solution: Add specific marker in the generated batch file. (Ken Takata, + closes #5654) +Files: src/Make_mvc.mak, src/dosinst.c, src/dosinst.h, src/uninstall.c + +Patch 8.2.0274 +Problem: Hang with combination of feedkeys(), Ex mode and :global. + (Yegappan Lakshmanan) +Solution: Add the pending_exmode_active flag. +Files: src/ex_docmd.c, src/globals.h, src/getchar.c, + src/testdir/test_ex_mode.vim + +Patch 8.2.0275 +Problem: Some Ex code not covered by tests. +Solution: Add test cases. (Yegappan Lakshmanan, closes #5659) +Files: src/testdir/test_arglist.vim, src/testdir/test_autocmd.vim, + src/testdir/test_excmd.vim, src/testdir/test_quickfix.vim, + src/testdir/test_search.vim, src/testdir/test_swap.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.0276 +Problem: Vim9: not allowing space before ")" in function call is too + restrictive. (Ben Jackson) +Solution: Skip space before the ")". Adjust other space checks. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0277 +Problem: Vim9: not all instructions covered by tests. +Solution: Add more test cases. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0278 +Problem: Channel test is flaky on Mac. +Solution: Reset variable before sending message. +Files: src/testdir/test_channel.vim + +Patch 8.2.0279 +Problem: Vim9: no test for deleted :def function. +Solution: Add a test. Clear uf_cleared flag when redefining a function. +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0280 +Problem: Vim9: throw in :def function not caught higher up. +Solution: Set "need_rethrow". +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0281 +Problem: Two placed signs in the same line are not combined. E.g. in the + terminal debugger a breakpoint and the PC cannot be both be + displayed. +Solution: Combine the sign column and line highlight attributes. +Files: src/sign.c, src/testdir/test_signs.vim, + src/testdir/dumps/Test_sign_cursor_3.dump, + src/testdir/dumps/Test_sign_cursor_4.dump + +Patch 8.2.0282 +Problem: Vim9: setting number option not tested. +Solution: Add more tests. Fix assigning to global variable. +Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, + src/vim9execute.c + +Patch 8.2.0283 +Problem: Vim9: failing to load script var not tested. +Solution: Add more tests. Fix using s: in old script. +Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0284 +Problem: Vim9: assignment test fails. +Solution: Avoid duplicating "s:". +Files: src/vim9compile.c + +Patch 8.2.0285 +Problem: Unused error message. Cannot create s:var. +Solution: Remove the error message. Make assignment to s:var work. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0286 +Problem: Cannot use popup_close() for a terminal popup. +Solution: Allow using popup_close(). (closes #5666) +Files: src/popupwin.c, runtime/doc/popup.txt, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_5.dump, + src/testdir/dumps/Test_terminal_popup_6.dump + +Patch 8.2.0287 +Problem: Vim9: return in try block not tested; catch with pattern not + tested. +Solution: Add tests. Make it work. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0288 +Problem: Vim9: some float and blob operators not tested. +Solution: Add float and blob tests. Fix addition. +Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c + +Patch 8.2.0289 +Problem: Vim9: :echo did not clear the rest of the line. +Solution: Call msg_clr_eos(). (Ken Takata, closes #5668) +Files: src/vim9execute.c + +Patch 8.2.0290 +Problem: Running individual test differs from all tests. +Solution: Pass on environment variables. (Yee Cheng Chin, closes #5672) +Files: src/testdir/Makefile, src/testdir/README.txt + +Patch 8.2.0291 +Problem: Vim9: assigning [] to list<string> doesn't work. +Solution: Use void for empty list and dict. (Ken Takata, closes #5669) +Files: src/vim9compile.c, src/globals.h, src/testdir/test_vim9_script.vim + +Patch 8.2.0292 +Problem: Vim9: CHECKNR and CHECKTYPE instructions not tested. +Solution: Add tests. +Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0293 +Problem: Various Ex commands not sufficiently tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #5673) +Files: src/testdir/test_arglist.vim, src/testdir/test_cmdline.vim, + src/testdir/test_ex_mode.vim, src/testdir/test_excmd.vim, + src/testdir/test_expand.vim, src/testdir/test_filetype.vim, + src/testdir/test_filter_cmd.vim, src/testdir/test_global.vim, + src/testdir/test_normal.vim, src/testdir/test_plus_arg_edit.vim, + src/testdir/test_quickfix.vim, src/testdir/test_trycatch.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.0294 +Problem: Cannot use Ex command that is also a function name. +Solution: Recognize an Ex command by a colon prefix. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + runtime/doc/vim9.txt + +Patch 8.2.0295 +Problem: Highlighting for :s wrong when using different separator. +Solution: Use separate argument for search direction and separator. (Rob + Pilling, closes #5665) +Files: src/ex_docmd.c, src/ex_getln.c, src/gui.c, src/normal.c, + src/proto/search.pro, src/quickfix.c, src/search.c, src/spell.c, + src/tag.c, src/testdir/dumps/Test_incsearch_substitute_15.dump, + src/testdir/test_search.vim + +Patch 8.2.0296 +Problem: Mixing up "long long" and __int64 may cause problems. (John + Marriott) +Solution: Pass varnumber_T to vim_snprintf(). Add v:numbersize. +Files: src/message.c, src/eval.c, src/fileio.c, src/json.c, src/ops.c, + src/vim.h, src/structs.h, src/evalvars.c, runtime/doc/eval.txt, + runtime/doc/various.txt, src/testdir/test_eval_stuff.vim + +Patch 8.2.0297 +Problem: Compiler warnings for the Ruby interface. +Solution: Undefine a few macros, fix initialization. (Ozaki Kiichi, + closes #5677) +Files: src/if_ruby.c + +Patch 8.2.0298 +Problem: Vim9 script: cannot start command with a string constant. +Solution: Recognize expression starting with '('. +Files: src/ex_docmd.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim, runtime/doc/vim9.txt + +Patch 8.2.0299 +Problem: Vim9: ISN_STORE with argument not tested. Some cases in tv2bool() + not tested. +Solution: Add tests. Add test_unknown() and test_void(). +Files: src/testing.c, src/proto/testing.pro, src/evalfunc.c, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, runtime/doc/eval.txt, + runtime/doc/testing.txt + +Patch 8.2.0300 +Problem: Vim9: expression test fails without channel support. +Solution: Add has('channel') check. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.0301 +Problem: Insufficient testing for exception handling and the "attention" + prompt. +Solution: Add test cases. (Yegappan Lakshmanan, closes #5681) +Files: src/testdir/test_swap.vim, src/testdir/test_trycatch.vim + +Patch 8.2.0302 +Problem: Setting 'term' may cause error in TermChanged autocommand. +Solution: Use aucmd_prepbuf() to switch to the buffer where the autocommand + is to be executed. (closes #5682) +Files: src/term.c, src/testdir/test_autocmd.vim + +Patch 8.2.0303 +Problem: TermChanged test fails in the GUI. +Solution: Skip the test when running the GUI. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.0304 +Problem: Terminal test if failing on some systems. +Solution: Wait for the job to finish. (James McCoy) +Files: src/testdir/test_terminal.vim + +Patch 8.2.0305 +Problem: Relativenumber test fails on some systems. (James McCoy) +Solution: Clear the command line. +Files: src/testdir/test_number.vim, + src/testdir/dumps/Test_relnr_colors_2.dump, + src/testdir/dumps/Test_relnr_colors_3.dump + +Patch 8.2.0306 +Problem: Vim9: :substitute(pat(repl does not work in Vim9 script. +Solution: Remember starting with a colon. (closes #5676) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0307 +Problem: Python 3 vim.eval not well tested. +Solution: Add a test. (Dominique Pell茅, closes #5680) +Files: src/testdir/test_python3.vim + +Patch 8.2.0308 +Problem: 'showbreak' does not work for a very long line. (John Little) +Solution: Check whether 'briopt' contains "sbr". (Ken Takata, closes #5523, + closes #5684) +Files: src/drawline.c, src/testdir/test_breakindent.vim + +Patch 8.2.0309 +Problem: Window-local values have confusing name. +Solution: Rename w_p_bri* to w_briopt_*. +Files: src/structs.h, src/indent.c, src/drawline.c + +Patch 8.2.0310 +Problem: Autocmd test fails on a slow system. +Solution: Adjust the expectations. (James McCoy, closes #5685) +Files: src/testdir/test_autocmd.vim + +Patch 8.2.0311 +Problem: Vim9: insufficient script tests. +Solution: Add tests. Free imports when re-using a script. +Files: src/testdir/test_vim9_script.vim, src/scriptfile.c + +Patch 8.2.0312 +Problem: Vim9: insufficient script tests. +Solution: Add more tests. Make "import * as Name" work. +Files: src/testdir/test_vim9_script.vim, src/vim9script.c, + src/proto/vim9script.pro, src/vim9compile.c + +Patch 8.2.0313 +Problem: Vim9: insufficient script tests. +Solution: Add tests. Make import of alphanumeric name work. +Files: src/testdir/test_vim9_script.vim, src/vim9script.c + +Patch 8.2.0314 +Problem: Short name not set for terminal buffer. +Solution: Set the short name. (closes #5687) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.0315 +Problem: Build failure on HP-UX system. +Solution: Use LONG_LONG_MIN instead of LLONG_MIN. Add type casts for switch + statement. (John Marriott) +Files: src/structs.h, src/json.c + +Patch 8.2.0316 +Problem: ex_getln.c code has insufficient test coverage. +Solution: Add more tests. Fix a problem. (Yegappan Lakshmanan, closes #5693) +Files: src/cmdhist.c, src/testdir/test_cmdline.vim, + src/testdir/test_functions.vim, src/testdir/test_history.vim, + src/testdir/test_menu.vim + +Patch 8.2.0317 +Problem: MSVC: _CRT_SECURE_NO_DEPRECATE not defined on DEBUG build. +Solution: Move where CFLAGS is updated. (Ken Takata, closes #5692) +Files: src/Make_mvc.mak + +Patch 8.2.0318 +Problem: Vim9: types not sufficiently tested. +Solution: Add tests with more types. +Files: src/globals.h, src/vim9compile.c, + src/testdir/test_vim9_script.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.0319 +Problem: File missing in distribution, comments outdated. +Solution: Correct path of README file. Update comments. +Files: Filelist, src/evalvars.c, src/register.c, src/if_python3.c + +Patch 8.2.0320 +Problem: No Haiku support. +Solution: Add support for Haiku. (Emir Sar谋, closes #5605) +Files: Filelist, runtime/doc/Makefile, runtime/doc/eval.txt, + runtime/doc/gui.txt, runtime/doc/help.txt, + runtime/doc/options.txt, runtime/doc/os_haiku.txt, + runtime/doc/starting.txt, runtime/doc/tags, + runtime/gvimrc_example.vim, runtime/vimrc_example.vim, + src/INSTALL, src/Makefile, src/auto/configure, src/configure.ac, + src/evalfunc.c, src/feature.h, src/fileio.c, src/globals.h, + src/gui.c, src/gui.h, src/gui_haiku.cc, src/gui_haiku.h, + src/mbyte.c, src/menu.c, src/misc1.c, src/mouse.c, src/option.h, + src/os_haiku.h, src/os_haiku.rdef, src/os_unix.c, src/os_unix.h, + src/osdef1.h.in, src/proto.h, src/proto/gui_haiku.pro, src/pty.c, + src/screen.c, src/structs.h, src/term.c, src/version.c, src/vim.h + +Patch 8.2.0321 +Problem: Vim9: ":execute" does not work yet. +Solution: Add ISN_EXECUTE. (closes #5699) Also make :echo work with more + than one argument. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0322 +Problem: Vim9: error checks not tested. +Solution: Add more test cases. Avoid error for function loaded later. +Files: src/vim9compile.c, src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0323 +Problem: Vim9: calling a function that is defined later is slow. +Solution: Once the function is found update the instruction so it can be + called directly. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0324 +Problem: Text property not updated correctly when inserting/deleting. +Solution: Use the right column when deleting. Make zero-width text + properties respect start_incl and end_incl. (Axel Forsman, + closes #5696, closes #5679) +Files: src/change.c, src/textprop.c, src/testdir/test_listener.vim, + src/testdir/test_textprop.vim + +Patch 8.2.0325 +Problem: Ex_getln.c code not covered by tests. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #5702) +Files: src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_functions.vim, src/testdir/test_history.vim, + src/testdir/test_options.vim + +Patch 8.2.0326 +Problem: Compiler warning for using uninitialized variable. (Yegappan + Lakshmanan) +Solution: Do not jump to failed but return. +Files: src/vim9execute.c + +Patch 8.2.0327 +Problem: Crash when opening and closing two popup terminal windows. +Solution: Check that prevwin is valid. (closes #5707) +Files: src/popupwin.c, src/testdir/test_terminal.vim + +Patch 8.2.0328 +Problem: No redraw when leaving terminal-normal mode in a terminal popup + window. +Solution: Redraw the popup window. (closes #5708) +Files: src/macros.h, src/vim.h, src/terminal.c, src/drawscreen.c, + src/move.c, src/popupwin.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_7.dump, + src/testdir/dumps/Test_terminal_popup_8.dump + +Patch 8.2.0329 +Problem: Popup filter converts 0x80 bytes. +Solution: Keep 0x80 bytes as-is. (Ozaki Kiichi, closes #5706) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.0330 +Problem: Build error with popup window but without terminal. +Solution: Add #ifdef. +Files: src/popupwin.c + +Patch 8.2.0331 +Problem: Internal error when using test_void() and test_unknown(). + (Dominique Pell茅) +Solution: Give a normal error. +Files: src/evalfunc.c, src/testdir/test_functions.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.0332 +Problem: Some code in ex_getln.c not covered by tests. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #5710) +Files: src/testdir/test_arabic.vim, src/testdir/test_cmdline.vim + +Patch 8.2.0333 +Problem: Terminal in popup test is flaky. +Solution: Make sure redraw is done before opening the popup. +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_1.dump + +Patch 8.2.0334 +Problem: Abort called when using test_void(). (Dominique Pell茅) +Solution: Only give an error, don't abort. +Files: src/message.c, src/proto/message.pro, src/evalfunc.c, + src/eval.c, src/json.c, src/testdir/test_functions.vim + +Patch 8.2.0335 +Problem: No completion for :disassemble. +Solution: Make completion work. Also complete script-local functions if the + name starts with "s:". +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + runtime/doc/vim9.txt + +Patch 8.2.0336 +Problem: Vim9: insufficient test coverage for compiling. +Solution: Add more tests. +Files: src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, + src/vim9.h, src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0337 +Problem: Build fails on a few systems. +Solution: Use vim_snprintf() instead of snprintf(). +Files: src/cmdexpand.c + +Patch 8.2.0338 +Problem: Build failure without the channel feature. +Solution: Add #ifdef +Files: src/vim9compile.c + +Patch 8.2.0339 +Problem: Vim9: function return type may depend on arguments. +Solution: Instead of a fixed return type use a function to figure out the + return type. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9compile.c, + src/evalbuffer.c, src/proto/evalbuffer.pro, + src/testdir/test_vim9_script.vim + +Patch 8.2.0340 +Problem: Vim9: function and partial types not tested. +Solution: Support more for partial, add tests. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0341 +Problem: Using ":for" in Vim9 script gives an error. +Solution: Pass the LET_NO_COMMAND flag. (closes #5715) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0342 +Problem: Some code in ex_getln.c not covered by tests. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5717) +Files: src/testdir/test_cmdline.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_history.vim, src/testdir/test_iminsert.vim + +Patch 8.2.0343 +Problem: Vim9: using wrong instruction, limited test coverage. +Solution: Use ISN_PUSHJOB. Add a few more tests. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0344 +Problem: ":def" not skipped properly. +Solution: Add CMD_def to list of commands the require evaluation even when + not being executed. +Files: src/ex_docmd.c + +Patch 8.2.0345 +Problem: Compiler warning when building without the float feature. +Solution: Add #ifdef. (John Marriott) +Files: src/evalfunc.c + +Patch 8.2.0346 +Problem: Vim9: finding common list type not tested. +Solution: Add more tests. Fix listing function. Fix overwriting type. +Files: src/vim9compile.c, src/userfunc.c, + src/testdir/test_vim9_script.vim, src/testdir/runtest.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0347 +Problem: Various code not covered by tests. +Solution: Add more test coverage. (Yegappan Lakshmanan, closes #5720) +Files: src/testdir/gen_opt_test.vim, src/testdir/test86.in, + src/testdir/test_cmdline.vim, src/testdir/test_digraph.vim, + src/testdir/test_ex_mode.vim, src/testdir/test_history.vim + +Patch 8.2.0348 +Problem: Vim9: not all code tested. +Solution: Add a few more tests. fix using "b:" in literal dictionary. +Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c, + src/proto/vim9compile.pro, src/testdir/test_vim9_script.vim + +Patch 8.2.0349 +Problem: Vim9: constant expression not well tested. +Solution: Add tests for "if" with constant expression. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0350 +Problem: Vim9: expression tests don't use recognized constants. +Solution: Recognize "true" and "false" as constants. Make skipping work for + assignment and expression evaluation. +Files: src/vim9compile.c + +Patch 8.2.0351 +Problem: Terminal in popup test is still a bit flaky. +Solution: Clear and redraw before opening the popup. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0352 +Problem: FreeBSD: test for sourcing utf-8 is skipped. +Solution: Run the matchadd_conceal test separately to avoid that setting + 'term' to "ansi" causes problems for other tests. (Ozaki Kiichi, + closes #5721) +Files: src/testdir/Make_all.mak, src/testdir/test_alot_utf8.vim, + src/testdir/test_source_utf8.vim + +Patch 8.2.0353 +Problem: Vim9: while loop not tested. +Solution: Add test with "while", "break" and "continue" +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0354 +Problem: Python 3.9 does not define _Py_DEC_REFTOTAL. (Zdenek Dohnal) +Solution: Remove it, it was only for debugging. +Files: src/if_python3.c + +Patch 8.2.0355 +Problem: Vim9: str_val is confusing, it's a number +Solution: Rename to stnr_val. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0356 +Problem: MS-Windows: feedkeys() with VIMDLL cannot handle CSI correctly. +Solution: Modify mch_inchar() to encode CSI bytes. (Ozaki Kiichi, Ken + Takata, closes #5726) +Files: src/getchar.c, src/os_win32.c, src/testdir/test_popupwin.vim + +Patch 8.2.0357 +Problem: Cannot delete a text property matching both id and type. (Axel + Forsman) +Solution: Add the "both" argument. +Files: src/textprop.c, runtime/doc/textprop.txt, + src/testdir/test_textprop.vim + +Patch 8.2.0358 +Problem: Insufficient testing for indent.c. +Solution: Add indent tests. (Yegappan Lakshmanan, closes #5736) +Files: src/testdir/Make_all.mak, src/testdir/test_ex_mode.vim, + src/testdir/test_expand_func.vim, src/testdir/test_indent.vim, + src/testdir/test_lispwords.vim, src/testdir/test_smartindent.vim, + src/testdir/test_vartabs.vim + +Patch 8.2.0359 +Problem: popup_atcursor() may hang. (Yasuhiro Matsumoto) +Solution: Take the decoration into account. (closes #5728) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.0360 +Problem: Yaml files are only recognized by the file extension. +Solution: Check for a line starting with "%YAML". (Jason Franklin) +Files: runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.2.0361 +Problem: Internal error when using "0" for a callback. +Solution: Give a normal error. (closes #5743) +Files: src/evalvars.c, src/testdir/test_timers.vim + +Patch 8.2.0362 +Problem: MS-Windows: channel test fails if grep is not available. +Solution: Use another command. (Ken Takata, closes #5739) +Files: src/testdir/test_channel.vim + +Patch 8.2.0363 +Problem: Some Normal mode commands not tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5746) +Files: src/testdir/test_cindent.vim, src/testdir/test_cmdline.vim, + src/testdir/test_edit.vim, src/testdir/test_indent.vim, + src/testdir/test_normal.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_virtualedit.vim, src/testdir/test_visual.vim + +Patch 8.2.0364 +Problem: Printf test failing on Haiku. +Solution: Make a difference between int and short. (Dominique Pell茅, + closes #5749) +Files: src/message.c + +Patch 8.2.0365 +Problem: Tag kind can't be a multibyte character. (Marcin Szamotulski) +Solution: Recognize multibyte character. (closes #5724) +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.2.0366 +Problem: Hardcopy command not tested enough. +Solution: Add tests for printing. (Dominique Pell茅, closes #5748) +Files: src/testdir/test_hardcopy.vim + +Patch 8.2.0367 +Problem: Can use :pedit in a popup window. +Solution: Disallow it. +Files: src/ex_docmd.c, src/testdir/test_popupwin.vim + +Patch 8.2.0368 +Problem: Vim9: import that redefines local variable does not fail. +Solution: Check for already defined symbols. +Files: src/vim9script.c, src/proto/vim9script.pro, src/vim9compile.c, + src/proto/vim9compile.pro, src/testdir/test_vim9_script.vim + +Patch 8.2.0369 +Problem: Various Normal mode commands not fully tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5751) +Files: src/testdir/test_arglist.vim, src/testdir/test_changelist.vim, + src/testdir/test_charsearch.vim, src/testdir/test_cmdline.vim, + src/testdir/test_edit.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_excmd.vim, src/testdir/test_gf.vim, + src/testdir/test_iminsert.vim, src/testdir/test_increment.vim, + src/testdir/test_marks.vim, src/testdir/test_normal.vim, + src/testdir/test_prompt_buffer.vim, src/testdir/test_put.vim, + src/testdir/test_registers.vim, src/testdir/test_tagjump.vim, + src/testdir/test_visual.vim + +Patch 8.2.0370 +Problem: The typebuf_was_filled flag is sometimes not reset, which may + cause a hang. +Solution: Make sure typebuf_was_filled is reset when the typeahead buffer is + empty. +Files: src/edit.c, src/getchar.c, + +Patch 8.2.0371 +Problem: Crash with combination of terminal popup and autocmd. +Solution: Disallow closing a popup that is the current window. Add a check + that the current buffer is valid. (closes #5754) +Files: src/macros.h, src/buffer.c, src/popupwin.c, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.2.0372 +Problem: Prop_find() may not find text property at start of the line. +Solution: Adjust the loop to find properties. (Axel Forsman, closes #5761, + closes #5663) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.0373 +Problem: Type of term_sendkeys() is unknown. +Solution: Just return zero. (closes #5762) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.0374 +Problem: Using wrong printf directive for jump location. +Solution: Change "%lld" to "%d". (James McCoy, closes #5773) +Files: src/vim9execute.c + +Patch 8.2.0375 +Problem: Coverity warning for not using return value. +Solution: Move error message to separate function. +Files: src/popupwin.c + +Patch 8.2.0376 +Problem: Nasty callback test fails on some systems. +Solution: Increase the sleep time. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0377 +Problem: No CI test for a big-endian system. +Solution: Test with s390x. (James McCoy, closes #5772) +Files: .travis.yml + +Patch 8.2.0378 +Problem: prop_find() does not find all props. +Solution: Check being in the start line. (Axel Forsman, closes #5776) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.0379 +Problem: Gcc warns for ambiguous else. +Solution: Add braces. (Dominique Pell茅, closes #5778) +Files: src/textprop.c + +Patch 8.2.0380 +Problem: Tiny popup when creating a terminal popup without minwidth. +Solution: Use a default minimum size of 5 lines of 20 characters. +Files: src/popupwin.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_m1.dump + +Patch 8.2.0381 +Problem: Using freed memory with :lvimgrep and autocommand. (extracted from + POC by Dominique Pell茅) +Solution: Avoid deleting a dummy buffer used in a window. (closes #5777) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.0382 +Problem: Some tests fail when run under valgrind. +Solution: Increase timeouts. +Files: src/testdir/test_autocmd.vim, src/testdir/test_debugger.vim, + src/testdir/test_channel.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_popup_1.dump, + src/testdir/dumps/Test_terminal_popup_2.dump, + src/testdir/dumps/Test_terminal_popup_3.dump, + src/testdir/dumps/Test_terminal_popup_5.dump, + src/testdir/dumps/Test_terminal_popup_6.dump, + src/testdir/dumps/Test_terminal_popup_7.dump, + src/testdir/dumps/Test_terminal_popup_8.dump, + src/testdir/dumps/Test_terminal_popup_m1.dump + +Patch 8.2.0383 +Problem: Wrong feature check causes test not to be run. +Solution: Use CheckFunction instead of CheckFeature. (Ozaki Kiichi, + closes #5781) +Files: src/testdir/test_channel.vim + +Patch 8.2.0384 +Problem: Travis CI has warnings. +Solution: Avoid warnings, clean up the config. (Ozaki Kiichi, closes #5779) +Files: .travis.yml + +Patch 8.2.0385 +Problem: Menu functionality insufficiently tested. +Solution: Add tests. Add menu_info(). (Yegappan Lakshmanan, closes #5760) +Files: runtime/doc/eval.txt, runtime/doc/gui.txt, runtime/doc/usr_41.txt, + src/evalfunc.c, src/menu.c, src/proto/menu.pro, + src/testdir/test_menu.vim, src/testdir/test_popup.vim, + src/testdir/test_termcodes.vim + +Patch 8.2.0386 (after 8.2.0385) +Problem: Part from unfinished patch got included. +Solution: Undo that part. +Files: src/evalfunc.c + +Patch 8.2.0387 +Problem: Error for possible NULL argument to qsort(). +Solution: Don't call qsort() when there is nothing to sort. (Dominique + Pell茅, closes #5780) +Files: src/spellsuggest.c + +Patch 8.2.0388 +Problem: Printmbcharset option not tested. +Solution: Add a test. Enable PostScript for AppVeyor build. (Dominique + Pell茅, closes #5783) +Files: appveyor.yml, src/testdir/test_hardcopy.vim + +Patch 8.2.0389 +Problem: Delayed redraw when shifting text from Insert mode. +Solution: Use msg_attr_keep() instead of msg(). (closes #5782) +Files: src/ops.c + +Patch 8.2.0390 +Problem: Terminal postponed scrollback test is flaky. +Solution: Add delay in between sending keys. Rename dump files. +Files: src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_01.dump, + src/testdir/dumps/Test_terminal_02.dump, + src/testdir/dumps/Test_terminal_03.dump, + src/testdir/dumps/Test_terminal_scrollback_1.dump, + src/testdir/dumps/Test_terminal_scrollback_2.dump, + src/testdir/dumps/Test_terminal_scrollback_3.dump + +Patch 8.2.0391 (after 8.2.0377) +Problem: CI test coverage dropped. +Solution: Set $DISPLAY also for non-GUI builds. (James McCoy, closes #5788) +Files: .travis.yml + +Patch 8.2.0392 +Problem: Coverity warns for using array index out of range. +Solution: Add extra "if" to avoid warning. +Files: src/menu.c + +Patch 8.2.0393 +Problem: Coverity warns for not using return value. +Solution: Add (void). +Files: src/popupmenu.c + +Patch 8.2.0394 +Problem: Coverity complains about using NULL pointer. +Solution: Use empty string when option value is NULL. +Files: src/optionstr.c + +Patch 8.2.0395 +Problem: Build fails with FEAT_EVAL but without FEAT_MENU. +Solution: Add #ifdef. (John Marriott) +Files: src/evalfunc.c + +Patch 8.2.0396 +Problem: Cmdexpand.c insufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5789) +Files: src/testdir/test_cmdline.vim, src/testdir/test_taglist.vim, + src/testdir/test_terminal.vim, src/testdir/test_usercommands.vim + +Patch 8.2.0397 +Problem: Delayed screen update when using undo from Insert mode. +Solution: Update w_topline and cursor shape before sleeping. (closes #5790) +Files: src/normal.c + +Patch 8.2.0398 +Problem: Profile test fails when two functions take same time. +Solution: Add a short sleep in once function. (closes #5797) +Files: src/testdir/test_profile.vim + +Patch 8.2.0399 +Problem: Various memory leaks. +Solution: Avoid the leaks. (Ozaki Kiichi, closes #5803) +Files: src/ex_docmd.c, src/ex_getln.c, src/menu.c, src/message.c, + src/scriptfile.c, src/userfunc.c + +Patch 8.2.0400 +Problem: Not all tests using a terminal are in the list of flaky tests. +Solution: Introduce the test_is_flaky flag. +Files: src/testdir/runtest.vim, src/testdir/term_util.vim, + src/testdir/screendump.vim, src/testdir/test_autocmd.vim + +Patch 8.2.0401 +Problem: Not enough test coverage for evalvars.c. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5804) +Files: src/testdir/test_cmdline.vim, src/testdir/test_const.vim, + src/testdir/test_diffmode.vim, src/testdir/test_excmd.vim, + src/testdir/test_functions.vim, src/testdir/test_let.vim, + src/testdir/test_listdict.vim, src/testdir/test_spell.vim, + src/testdir/test_unlet.vim, src/testdir/test_user_func.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.0402 (after 8.2.0401) +Problem: Setting local instead of global flag. +Solution: Prepend "g:" to "test_is_flaky". +Files: src/testdir/term_util.vim, src/testdir/screendump.vim, + src/testdir/test_autocmd.vim + +Patch 8.2.0403 +Problem: When 'buftype' is "nofile" there is no overwrite check. +Solution: Also check for existing file when 'buftype' is set. + (closes #5807) +Files: src/ex_cmds.c, src/testdir/test_options.vim + +Patch 8.2.0404 +Problem: Writefile() error does not give a hint. +Solution: Add remark about first argument. +Files: src/filepath.c, src/testdir/test_writefile.vim + +Patch 8.2.0405 +Problem: MSVC: build fails with some combination of features. +Solution: Enable CHANNEL if TERMINAL is enabled. (Mike Williams) +Files: src/Make_mvc.mak + +Patch 8.2.0406 +Problem: FileReadCmd event not well tested. +Solution: Add a test. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.0407 +Problem: No early check if :find and :sfind have an argument. +Solution: Add EX_NEEDARG. +Files: src/ex_cmds.h, src/testdir/test_findfile.vim, + src/testdir/test_find_complete.vim + +Patch 8.2.0408 +Problem: Delete() commented out for testing. +Solution: Undo commenting-out. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0409 +Problem: Search test leaves file behind. +Solution: Delete the file. Also use Check commands. +Files: src/testdir/test_search.vim + +Patch 8.2.0410 +Problem: Channel test fails too often on slow Mac. +Solution: Increase waiting time to 10 seconds. +Files: src/testdir/test_channel.vim + +Patch 8.2.0411 +Problem: Mac: breakcheck is using a value from the stone ages. +Solution: Delete BREAKCHECK_SKIP from the Mac header file. (Ben Jackson) +Files: src/os_mac.h + +Patch 8.2.0412 +Problem: MS-Windows: cannot use vimtutor from the start menu. +Solution: Better check for writable directory. Use the right path for the + executable. (Wu Yongwei, closes #5774, closes #5756) +Files: vimtutor.bat + +Patch 8.2.0413 +Problem: Buffer menu does not handle special buffers properly. +Solution: Keep a dictionary with buffer names to reliably keep track of + entries. + Also trigger BufFilePre and BufFilePost for command-line and + terminal buffers when the name changes. +Files: src/testdir/test_alot.vim, src/testdir/Make_all.mak, + runtime/menu.vim, src/ex_getln.c, src/terminal.c, + src/testdir/test_menu.vim + +Patch 8.2.0414 +Problem: Channel connect_waittime() test is flaky. +Solution: Set the test_is_flaky flag. Use test_is_flaky for more tests. +Files: src/testdir/test_channel.vim, src/testdir/test_terminal.vim, + src/testdir/runtest.vim + +Patch 8.2.0415 +Problem: Bsdl filetype is not detected. +Solution: Add an entry in the filetype list. (Daniel Kho, closes #5810) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0416 +Problem: Test leaves file behind. +Solution: Delete the file. +Files: src/testdir/test_indent.vim + +Patch 8.2.0417 +Problem: Travis CI config can be improved. +Solution: Remove COVERAGE variable. Add load-snd-dummy script. add "-i NONE" + to avoid messages about viminfo. (Ozaki Kiichi, closes #5813) +Files: .travis.yml, ci/load-snd-dummy.sh + +Patch 8.2.0418 +Problem: Code in eval.c not sufficiently covered by tests. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5815) +Files: src/testdir/test_blob.vim, src/testdir/test_channel.vim, + src/testdir/test_cmdline.vim, src/testdir/test_eval_stuff.vim, + src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_job_fails.vim, src/testdir/test_lambda.vim, + src/testdir/test_let.vim, src/testdir/test_listdict.vim, + src/testdir/test_marks.vim, src/testdir/test_method.vim, + src/testdir/test_normal.vim, src/testdir/test_unlet.vim, + src/testdir/test_usercommands.vim, src/testdir/test_vimscript.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.0419 +Problem: Various memory leaks in Vim9 script code. +Solution: Fix the leaks. (Ozaki Kiichi, closes #5814) +Files: src/proto/vim9compile.pro, src/scriptfile.c, src/structs.h, + src/testdir/test_vim9_script.vim, src/vim9.h, src/vim9compile.c, + src/vim9execute.c, src/vim9script.c + +Patch 8.2.0420 +Problem: Vim9: cannot interrupt a loop with CTRL-C. +Solution: Check for CTRL-C once in a while. Doesn't fully work yet. +Files: src/misc1.c, src/proto/misc1.pro, + src/testdir/test_vim9_script.vim + +Patch 8.2.0421 +Problem: Interrupting with CTRL-C does not always work. +Solution: Recognize CTRL-C while modifyOtherKeys is set. +Files: src/ui.c, src/testdir/test_vim9_script.vim, src/evalfunc.c + +Patch 8.2.0422 +Problem: Crash when passing popup window to win_splitmove(). (john Devin) +Solution: Disallow moving a popup window. (closes #5816) +Files: src/testdir/test_popupwin.vim, src/evalwindow.c + +Patch 8.2.0423 +Problem: In some environments a few tests are expected to fail. +Solution: Add $TEST_MAY_FAIL to list tests that should not cause make to + fail. +Files: src/testdir/runtest.vim + +Patch 8.2.0424 +Problem: Checking for wrong return value. (Tom) +Solution: Invert the check and fix the test. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0425 +Problem: Code for modeless selection not sufficiently tested. +Solution: Add tests. Move mouse code functionality to a common script file. + (Yegappan Lakshmanan, closes #5821) +Files: src/testdir/Make_all.mak, src/testdir/gen_opt_test.vim, + src/testdir/mouse.vim, src/testdir/test_edit.vim, + src/testdir/test_global.vim, src/testdir/test_modeless.vim, + src/testdir/test_normal.vim, src/testdir/test_selectmode.vim, + src/testdir/test_termcodes.vim, src/testdir/test_visual.vim, + src/ui.c + +Patch 8.2.0426 +Problem: Some errors were not tested for. +Solution: Add tests. (Dominique Pell茅, closes #5824) +Files: src/testdir/test_buffer.vim, src/testdir/test_options.vim, + src/testdir/test_tcl.vim, src/testdir/test_terminal.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.0427 +Problem: It is not possible to check for a typo in a feature name. +Solution: Add an extra argument to has(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/check.vim, + src/testdir/test_functions.vim + +Patch 8.2.0428 +Problem: Buffer name may leak. +Solution: Free the buffer name before overwriting it. +Files: src/terminal.c + +Patch 8.2.0429 +Problem: No warning when test checks for option that never exists. +Solution: In tests check that the option can exist. +Files: src/testdir/check.vim + +Patch 8.2.0430 +Problem: Window creation failure not properly tested. +Solution: Improve the test. (Yegappan Lakshmanan, closes #5826) +Files: src/testdir/test_cmdline.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.0431 +Problem: Some compilers don't support using \e for Esc. (Yegappan + Lakshmanan) +Solution: use \033 instead. +Files: src/ui.c + +Patch 8.2.0432 +Problem: A few tests fail in a huge terminal. +Solution: Make the tests pass. (Dominique Pell茅, closes #5829) +Files: src/testdir/test_autocmd.vim, src/testdir/test_options.vim, + src/testdir/test_termcodes.vim, src/testdir/test_terminal.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.0433 +Problem: INT signal not properly tested. +Solution: Add a test. Also clean up some unnecessary lines. (Dominique + Pell茅, closes #5828) +Files: src/testdir/test_display.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_excmd.vim, src/testdir/test_messages.vim, + src/testdir/test_signals.vim + +Patch 8.2.0434 +Problem: MS-Windows with VTP: Normal color not working. +Solution: After changing the Normal color update the VTP console color. + (Nobuhiro Takasaki, closes #5836) +Files: src/highlight.c + +Patch 8.2.0435 +Problem: Channel contents might be freed twice. +Solution: Call either channel_free_channel() or channel_free(), not both. + (Nobuhiro Takasaki, closes #5835) +Files: src/channel.c + +Patch 8.2.0436 +Problem: No warnings for incorrect printf arguments. +Solution: Fix attribute in declaration. Fix uncovered mistakes. (Dominique + Pell茅, closes #5834) +Files: src/proto.h, src/eval.c, src/ops.c, src/spellfile.c, + src/vim9compile.c, src/vim9execute.c, src/viminfo.c, src/gui.c + +Patch 8.2.0437 +Problem: MS-Windows installer contains old stuff. +Solution: Rely on Windows NT. (Ken Takata, closes #5832) +Files: src/dosinst.c + +Patch 8.2.0438 +Problem: Terminal noblock test is very flaky on BSD. +Solution: Change WaitFor() to WaitForAssert() to be able to see why it + failed. Add a short wait in between sending keys. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0439 +Problem: :disassemble has minor flaws. +Solution: Format the code. Use (int) instead of (char) for %c. + (also by James McCoy, closes #5831) +Files: src/vim9execute.c + +Patch 8.2.0440 +Problem: Terminal noblock test is still very flaky on BSD. +Solution: Increase the waiting time. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0441 +Problem: Terminal noblock test is still failing on BSD. +Solution: Reduce the amount of text. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0442 +Problem: Channel contents might be used after being freed. +Solution: Reset the job channel before freeing the channel. +Files: src/channel.c + +Patch 8.2.0443 +Problem: Clipboard code is spread out. +Solution: Move clipboard code to its own file. (Yegappan Lakshmanan, + closes #5827) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/clipboard.c, src/ops.c, src/proto.h, src/proto/clipboard.pro, + src/proto/ops.pro, src/proto/register.pro, src/proto/ui.pro, + src/register.c, src/ui.c + +Patch 8.2.0444 +Problem: Swap file test fails on some systems. +Solution: Preserve the swap file. Send NL terminated keys. +Files: src/testdir/test_swap.vim + +Patch 8.2.0445 +Problem: Png and xpm files not in MS-Windows zip file. +Solution: Move files to shared between Unix and Windows target. +Files: Filelist + +Patch 8.2.0446 +Problem: Listener with undo of deleting all lines not tested. +Solution: Add a test. +Files: src/testdir/test_listener.vim + +Patch 8.2.0447 +Problem: Terminal scroll tests fails on some systems. +Solution: Remove the fixed 100msec wait for Win32. Add a loop to wait until + scrolling has finished. (James McCoy, closes #5842) +Files: src/testdir/test_terminal.vim + +Patch 8.2.0448 +Problem: Various functions not properly tested. +Solution: Add more tests, especially for failures. (Yegappan Lakshmanan, + closes #5843) +Files: runtime/doc/eval.txt, src/testdir/test_blob.vim, + src/testdir/test_breakindent.vim, src/testdir/test_charsearch.vim, + src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, + src/testdir/test_exists.vim, src/testdir/test_expand_func.vim, + src/testdir/test_expr.vim, src/testdir/test_file_perm.vim, + src/testdir/test_functions.vim, src/testdir/test_gui.vim, + src/testdir/test_listdict.vim, src/testdir/test_marks.vim, + src/testdir/test_partial.vim, src/testdir/test_registers.vim, + src/testdir/test_search.vim, src/testdir/test_spell.vim, + src/testdir/test_substitute.vim, src/testdir/test_syn_attr.vim, + src/testdir/test_syntax.vim, src/testdir/test_taglist.vim, + src/testdir/test_utf8.vim, src/testdir/test_vartabs.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.0449 +Problem: Vim9: crash if return type is invalid. (Yegappan Lakshmanan) +Solution: Always return some type, not NULL. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0450 +Problem: Not enough testing for restricted mode and function calls. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5847) +Files: src/testdir/test_method.vim, src/testdir/test_restricted.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0451 +Problem: Win32: double-width character displayed incorrectly. +Solution: First move the cursor to the first column. (Nobuhiro Takasaki, + closes #5848) +Files: src/os_win32.c + +Patch 8.2.0452 +Problem: channel_parse_messages() fails when called recursively. +Solution: Return for a recursive call. (closes #5835) +Files: src/channel.c + +Patch 8.2.0453 +Problem: Trailing space in job_start() command causes empty argument. +Solution: Ignore trailing space. (closes #5851) +Files: src/misc2.c, src/testdir/test_channel.vim + +Patch 8.2.0454 +Problem: Some tests fail when the system is slow. +Solution: Make the run number global, use in the test to increase the + waiting time. (closes #5841) +Files: src/testdir/runtest.vim, src/testdir/test_functions.vim + +Patch 8.2.0455 +Problem: Cannot set the highlight group for a specific terminal. +Solution: Add the "highlight" option to term_start(). (closes #5818) +Files: src/terminal.c, src/structs.h, src/channel.c, + src/testdir/test_terminal.vim, runtime/doc/terminal.txt, + src/testdir/dumps/Test_terminal_popup_Terminal.dump, + src/testdir/dumps/Test_terminal_popup_MyTermCol.dump + +Patch 8.2.0456 +Problem: Test_confirm_cmd is flaky. +Solution: Add a term_wait() call. (closes #5854) +Files: src/testdir/test_excmd.vim + +Patch 8.2.0457 +Problem: Test_quotestar() often fails when run under valgrind. +Solution: Wait longer for the GUI to start. +Files: src/testdir/test_quotestar.vim + +Patch 8.2.0458 +Problem: Missing feature check in test function. +Solution: Add check commands. +Files: src/testdir/test_excmd.vim + +Patch 8.2.0459 +Problem: Cannot check if a function name is correct. +Solution: Add "?funcname" to exists(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_exists.vim, + src/testdir/check.vim + +Patch 8.2.0460 (after 8.2.0459) +Problem: Build failure because of wrong feature name. +Solution: Correct feature name. +Files: src/evalfunc.c + +Patch 8.2.0461 +Problem: Confirm test fails on amd64 system. (Alimar Riesebieter) +Solution: Add an extra WaitForAssert(). (Dominique Pell茅) +Files: src/testdir/test_excmd.vim + +Patch 8.2.0462 +Problem: Previewwindow test fails on some systems. (James McCoy) +Solution: Wait a bit after sending the "o". (closes #5849) +Files: src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_and_previewwindow_01.dump + +Patch 8.2.0463 +Problem: Build error without float and channel feature. (John Marriott) +Solution: Define return types always. +Files: src/globals.h, src/evalfunc.c + +Patch 8.2.0464 +Problem: Typos and other small problems. +Solution: Fix the typos. Add missing files to the distribution. +Files: Filelist, src/buffer.c, src/drawline.c, src/gui_gtk_x11.c, + src/os_unixx.h, src/proto/popupwin.pro + +Patch 8.2.0465 +Problem: Vim9: dead code and wrong return type. +Solution: Remove dead code. Fix return type. Add more tests. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0466 (after 8.2.0452) +Problem: Not parsing messages recursively breaks the govim plugin. +Solution: When called recursively do handle messages but do not close + channels. +Files: src/channel.c + +Patch 8.2.0467 +Problem: Vim9: some errors are not tested +Solution: Add more tests. Fix that Vim9 script flag is not reset. +Files: src/vim9compile.c, src/scriptfile.c, src/dict.c, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0468 +Problem: GUI: pixel dust with some fonts and characters. +Solution: Always redraw the character before the cursor. (Nir Lichtman, + closes #5549, closes #5856) +Files: src/gui.c, src/proto/gui.pro, src/screen.c + +Patch 8.2.0469 +Problem: Vim9: no error for missing ] after list. +Solution: Add error message. Add more tests. +Files: src/globals.h, src/list.c, src/userfunc.c, + src/testdir/test_vim9_expr.vim, src/testdir/test_lambda.vim + +Patch 8.2.0470 +Problem: Test_confirm_cmd_cancel() can fail on a slow system. +Solution: Use WaitForAssert(). (Ozaki Kiichi, closes #5861) +Files: src/testdir/test_excmd.vim + +Patch 8.2.0471 +Problem: Missing change to compile_list(). +Solution: Add error message. +Files: src/vim9compile.c + +Patch 8.2.0472 +Problem: Terminal highlight name is set twice, leaking memory. +Solution: Delete one. +Files: src/terminal.c + +Patch 8.2.0473 +Problem: Variables declared in an outer scope. +Solution: Declare variables only in the scope where they are used. +Files: src/evalvars.c + +Patch 8.2.0474 (after 8.2.0403) +Problem: Cannot use :write when using a plugin with BufWriteCmd. +Solution: Reset BF_NOTEDITED after BufWriteCmd. (closes #5807) +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 8.2.0475 +Problem: Channel out_cb test still fails sometimes on Mac. +Solution: Use an even longer timeout. +Files: src/testdir/test_channel.vim + +Patch 8.2.0476 +Problem: Terminal nasty callback test fails sometimes. +Solution: use term_wait() instead of a sleep. (Yee Cheng Chin, closes #5865) +Files: src/testdir/test_terminal.vim + +Patch 8.2.0477 +Problem: Vim9: error messages not tested. +Solution: Add more tests. +Files: src/testdir/test_vim9_expr.vim, src/vim9execute.c + +Patch 8.2.0478 +Problem: New buffers are not added to the Buffers menu. +Solution: Turn number into string. (Yee Cheng Chin, closes #5864) +Files: runtime/menu.vim, src/testdir/test_menu.vim + +Patch 8.2.0479 +Problem: Unloading shared libraries on exit has no purpose. +Solution: Do not unload shared libraries on exit. +Files: src/if_lua.c, src/if_perl.xs, src/if_python.c, src/if_python3.c, + src/if_ruby.c, src/if_tcl.c + +Patch 8.2.0480 +Problem: Vim9: some code is not tested. +Solution: Add more tests. +Files: src/testdir/test_vim9_expr.vim, src/vim9compile.c + +Patch 8.2.0481 +Problem: Travis is still using trusty. +Solution: Adjust config to use bionic. (Ozaki Kiichi, closes #5868) +Files: .travis.yml, src/testdir/lsan-suppress.txt + +Patch 8.2.0482 +Problem: Channel and sandbox code not sufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5855) +Files: src/option.h, src/testdir/test_channel.vim, + src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, + src/testdir/test_edit.vim, src/testdir/test_excmd.vim, + src/testdir/test_normal.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_restricted.vim, src/testdir/test_smartindent.vim, + src/testdir/test_substitute.vim, src/testdir/test_terminal.vim, + src/testdir/test_textformat.vim, src/testdir/test_visual.vim + +Patch 8.2.0483 +Problem: Vim9: "let x = x + 1" does not give an error. +Solution: Hide the variable when compiling the expression. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0484 +Problem: Vim9: some error messages not tested. +Solution: Add more tests. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.0485 (after 8.2.0483) +Problem: Vim9 script test fails. +Solution: Stricter condition for adding new local variable. +Files: Stricter condition for adding new local variable. + +Patch 8.2.0486 +Problem: Vim9: some code and error messages not tested. +Solution: Add more tests. +Files: src/vim9compile.c, src/evalvars.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0487 +Problem: Vim9: compiling not sufficiently tested. +Solution: Add more tests. Fix bug with PCALL. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0488 +Problem: Vim9: Compiling can break when using a lambda inside :def. +Solution: Do not keep a pointer to the dfunc_T for longer time. +Files: src/vim9compile.c, src/vim9.h + +Patch 8.2.0489 +Problem: Vim9: memory leaks. +Solution: Free memory in the right place. Add hints for using asan. +Files: src/vim9compile.c, src/testdir/lsan-suppress.txt, src/Makefile + +Patch 8.2.0490 +Problem: Win32: VTP doesn't respect 'restorescreen'. +Solution: Use escape codes to switch to alternate screen. (Nobuhiro + Takasaki, closes #5872) +Files: src/os_win32.c + +Patch 8.2.0491 +Problem: Cannot recognize a <script> mapping using maparg(). +Solution: Add the "script" key. (closes #5873) +Files: src/map.c, runtime/doc/eval.txt, src/testdir/test_maparg.vim + +Patch 8.2.0492 +Problem: Vim9: some error messages not tested. +Solution: Add more tests. Remove dead code. Fix uncovered bugs. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0493 +Problem: Vim9: some error messages not tested. +Solution: Add more tests. Fix uncovered bugs. +Files: src/vim9compile.c, src/vim9execute.c, src/testing.c, src/eval.c, + src/proto/testing.pro, src/evalfunc.c, runtime/doc/eval.txt, + runtime/doc/testing.txt, src/testdir/test_vim9_script.vim + +Patch 8.2.0494 +Problem: Vim9: asan error. +Solution: Only get the type when there is one. +Files: src/vim9compile.c + +Patch 8.2.0495 +Problem: Vim9: some code not tested. +Solution: Add more tests. Support more const expressions. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0496 +Problem: Vim9: disassemble test fails. +Solution: Separate test cases with recognized constant expressions. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0497 +Problem: Too verbose output from the asan build in Travis. +Solution: Filter out suppression messages. (Ozaki Kiichi, closes #5874) +Files: .travis.yml + +Patch 8.2.0498 +Problem: Coverity complains about uninitialized field. +Solution: Initialize the whole typval_T. +Files: src/vim9compile.c + +Patch 8.2.0499 +Problem: Calling a lambda is slower than evaluating a string. +Solution: Make calling a lambda faster. (Ken Takata, closes #5727) +Files: src/userfunc.c + +Patch 8.2.0500 +Problem: Using the same loop in many places. +Solution: Define more FOR_ALL macros. (Yegappan Lakshmanan, closes #5339) +Files: src/arglist.c, src/autocmd.c, src/buffer.c, src/change.c, + src/channel.c, src/cmdexpand.c, src/diff.c, src/eval.c, + src/evalbuffer.c, src/evalfunc.c, src/evalvars.c, + src/evalwindow.c, src/ex_cmds2.c, src/filepath.c, src/globals.h, + src/gui.c, src/if_py_both.h, src/if_ruby.c, src/insexpand.c, + src/list.c, src/misc2.c, src/netbeans.c, src/popupwin.c, + src/quickfix.c, src/screen.c, src/sign.c, src/spell.c, + src/spellfile.c, src/spellsuggest.c, src/tag.c, src/terminal.c, + src/userfunc.c, src/window.c + +Patch 8.2.0501 +Problem: Vim9: script test fails when channel feature is missing. +Solution: Add a has() condition. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0502 +Problem: Vim9: some code is not tested. +Solution: Add more tests. Fix uncovered problems. +Files: src/vim9compile.c, src/regexp.c, src/proto/regexp.pro, + src/cmdexpand.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_eval.c, + src/ex_getln.c, src/highlight.c, src/search.c, src/syntax.c, + src/tag.c, src/userfunc.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0503 +Problem: Vim9: some code is not tested. +Solution: Add tests. Fix uncovered problems. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0504 +Problem: Vim9: leaking scope memory when compilation fails. +Solution: Cleanup the scope list. +Files: src/vim9compile.c + +Patch 8.2.0505 +Problem: term_gettty() not sufficiently tested. +Solution: Add more asserts. (Dominique Pell茅, closes #5877) +Files: src/testdir/test_terminal.vim + +Patch 8.2.0506 +Problem: Coverity complains about ignoring return value. +Solution: Add (void). +Files: src/userfunc.c + +Patch 8.2.0507 (after 8.2.0472) +Problem: Getbufvar() may get the wrong dictionary. (David le Blanc) +Solution: Check for empty name. (closes #5878) +Files: src/evalvars.c, src/testdir/test_functions.vim + +Patch 8.2.0508 +Problem: Vim9: func and partial types not done yet +Solution: Fill in details about func declaration, drop a separate partial + declaration. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/globals.h, + src/structs.h, src/evalfunc.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0509 +Problem: various code is not properly tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5871) +Files: src/main.c, src/testdir/check.vim, src/testdir/shared.vim, + src/testdir/term_util.vim, src/testdir/test_clientserver.vim, + src/testdir/test_ex_mode.vim, src/testdir/test_expand.vim, + src/testdir/test_functions.vim, src/testdir/test_options.vim, + src/testdir/test_startup.vim, src/testdir/test_textformat.vim, + src/testdir/test_trycatch.vim, src/testdir/test_viminfo.vim + +Patch 8.2.0510 +Problem: Coverity complains about using uninitialized variable. +Solution: Assign a value to "scol". Move code inside NULL check. +Files: src/beval.c, src/popupwin.c + +Patch 8.2.0511 +Problem: Cscope code not fully tested. +Solution: Add more test cases. (Dominique Pell茅, closes #5886) +Files: src/testdir/test_cscope.vim + +Patch 8.2.0512 +Problem: Vim9: no optional arguments in func type. +Solution: Check for question mark after type. Find function reference + without function(). +Files: src/vim9compile.c, src/vim9execute.c, src/structs.h, + src/globals.h, src/vim.h, src/vim9.h, src/userfunc.c, + src/testdir/Make_all.mak, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0513 +Problem: Reading past allocated memory when using varargs. +Solution: Fix copying function argument types. +Files: src/vim9compile.c + +Patch 8.2.0514 +Problem: Several global functions are used in only one file. +Solution: Make the functions static. (Yegappan Lakshmanan, closes #5884) +Files: src/drawscreen.c, src/evalvars.c, src/getchar.c, src/list.c, + src/proto/drawscreen.pro, src/proto/evalvars.pro, + src/proto/getchar.pro, src/proto/list.pro, src/proto/version.pro, + src/version.c + +Patch 8.2.0515 +Problem: Some compilers cannot add to "void *". +Solution: Cast to "char *". +Files: src/vim9compile.c + +Patch 8.2.0516 +Problem: Client-server code is spread out. +Solution: Move client-server code to a new file. (Yegappan Lakshmanan, + closes #5885) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/clientserver.c, src/evalfunc.c, src/main.c, src/proto.h, + src/proto/clientserver.pro, src/proto/main.pro + +Patch 8.2.0517 +Problem: Vim9: cannot separate "func" and "func(): void". +Solution: Use VAR_ANY for "any" and VAR_UNKNOWN for "no type". +Files: src/structs.h, src/globals.h, src/eval.c, src/evalfunc.c, + src/evalvars.c, src/testing.c, src/vim9compile.c, + src/vim9execute.c, src/viminfo.c, src/if_py_both.h, src/json.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.0518 +Problem: A terminal falls back to setting $TERM to "xterm". +Solution: Use "xterm-color" if more than 16 colors are supported and + "xterm-256color" if at least 256 colors are supported. + (closes #5887) +Files: src/os_unix.c + +Patch 8.2.0519 +Problem: Vim9: return type not properly checked. +Solution: Check type properly, also at runtime. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0520 +Problem: Tests are not listed in sorted order. +Solution: Move test_ex_mode. (Doug Richardson, closes #5889) +Files: src/testdir/Make_all.mak + +Patch 8.2.0521 +Problem: Crash when reading a blob fails. +Solution: Avoid keeping a pointer to a freed blob object. (Dominique Pell茅, + closes #5890) Adjust error messages. +Files: src/filepath.c, src/testdir/test_blob.vim + +Patch 8.2.0522 +Problem: Several errors are not tested for. +Solution: Add tests. (Yegappan Lakshmanan, closes #5892) +Files: src/testdir/test_autocmd.vim, src/testdir/test_clientserver.vim, + src/testdir/test_digraph.vim, src/testdir/test_expand.vim, + src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_gui.vim, src/testdir/test_highlight.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_lambda.vim, + src/testdir/test_listdict.vim, src/testdir/test_normal.vim, + src/testdir/test_options.vim, src/testdir/test_preview.vim, + src/testdir/test_user_func.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_viminfo.vim, + src/testdir/test_vimscript.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.0523 +Problem: Loops are repeated. +Solution: Use FOR_ALL_ macros. (Yegappan Lakshmanan, closes #5882) +Files: src/buffer.c, src/drawscreen.c, src/evalfunc.c, src/evalwindow.c, + src/globals.h, src/gui_athena.c, src/gui_gtk.c, src/gui_motif.c, + src/gui_w32.c, src/list.c, src/menu.c, src/popupmenu.c, + src/popupwin.c, src/quickfix.c, src/syntax.c, src/time.c, + src/userfunc.c, src/vim9compile.c + +Patch 8.2.0524 +Problem: Win32: searching for file matches is slow. +Solution: Instead of making another round to find any short filename, check + for the short name right away. Avoid using an ordinary file like a + directory. (Nir Lichtman, closes #5883) +Files: src/filepath.c + +Patch 8.2.0525 (after 8.2.0524) +Problem: Win32: typo in assignment and misplaced paren. +Solution: Fix the syntax. +Files: src/filepath.c + +Patch 8.2.0526 +Problem: Gcc 9 complains about empty statement. +Solution: Add {}. (Dominique Pell茅, closes #5894) +Files: src/evalfunc.c + +Patch 8.2.0527 +Problem: Vim9: function types insufficiently tested. +Solution: Add more tests. Fix white space check. Add "test_vim9" target. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, src/Makefile, + src/testdir/Makefile, src/testdir/Make_all.mak + +Patch 8.2.0528 +Problem: Vim9: function arguments insufficiently tested. +Solution: Check types. Add more tests. Fix function with varargs only. +Files: src/vim9compile.c, src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0529 +Problem: Vim9: function argument with default not checked. +Solution: Check type of argument with default value. +Files: src/vim9compile.c, src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0530 +Problem: Test crashes on s390. (James McCoy) +Solution: Explicitly define an 8 big signed type. (closes #5897) +Files: src/structs.h + +Patch 8.2.0531 +Problem: Various errors not tested. +Solution: Add tests. (Yegappan Lakshmanan, closes #5895) +Files: src/testdir/test_search.vim, src/testdir/test_source.vim, + src/testdir/test_syntax.vim, src/testdir/test_user_func.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.0532 +Problem: Cannot use simplify() as a method. +Solution: Add FEARG_1. (closes #5896) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.2.0533 +Problem: Tests using term_wait() can still be flaky. +Solution: Increase the wait time when rerunning a test. (James McCoy, + closes #5899) Halve the initial times to make tests run faster + when there is no rerun. +Files: src/testdir/term_util.vim, src/testdir/test_arglist.vim, + src/testdir/test_autocmd.vim, src/testdir/test_balloon.vim, + src/testdir/test_bufline.vim, src/testdir/test_channel.vim, + src/testdir/test_cmdline.vim, src/testdir/test_conceal.vim, + src/testdir/test_cursorline.vim, src/testdir/test_debugger.vim, + src/testdir/test_diffmode.vim, src/testdir/test_display.vim, + src/testdir/test_functions.vim, src/testdir/test_highlight.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_mapping.vim, + src/testdir/test_match.vim, src/testdir/test_matchadd_conceal.vim, + src/testdir/test_messages.vim, src/testdir/test_number.vim, + src/testdir/test_popup.vim, src/testdir/test_popupwin.vim, + src/testdir/test_profile.vim, src/testdir/test_search.vim, + src/testdir/test_search_stat.vim, src/testdir/test_startup.vim, + src/testdir/test_startup_utf8.vim, + src/testdir/test_statusline.vim, src/testdir/test_suspend.vim, + src/testdir/test_swap.vim, src/testdir/test_tagjump.vim, + src/testdir/test_terminal.vim, src/testdir/test_terminal_fail.vim, + src/testdir/test_timers.vim, src/testdir/test_vimscript.vim + +Patch 8.2.0534 +Problem: Client-server test fails under valgrind. +Solution: Use WaitForAssert(). +Files: src/testdir/test_clientserver.vim + +Patch 8.2.0535 +Problem: Regexp patterns not fully tested. +Solution: Add more regexp tests and others. (Yegappan Lakshmanan, + closes #5901) +Files: src/testdir/test_marks.vim, src/testdir/test_options.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_search.vim + +Patch 8.2.0536 +Problem: Vim9: some compilation code not tested. +Solution: Add more test cases. +Files: src/evalvars.c, src/proto/evalvars.pro, src/vim9compile.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0537 +Problem: Vim9: no check for sandbox when setting v:var. +Solution: Check for sandbox. +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0538 +Problem: Vim9: VAR_PARTIAL is not used during compilation. +Solution: Remove VAR_PARTIAL. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0539 +Problem: Comparing two NULL list fails. +Solution: Change the order of comparing two lists. +Files: src/list.c, src/testdir/test_assert.vim + +Patch 8.2.0540 +Problem: Regexp and other code not tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5904) +Files: src/testdir/test_backspace_opt.vim, src/testdir/test_expr.vim, + src/testdir/test_increment.vim, src/testdir/test_normal.vim, + src/testdir/test_options.vim, src/testdir/test_regexp_latin.vim, + src/testdir/test_search.vim, src/testdir/test_substitute.vim, + src/testdir/test_terminal.vim, src/testdir/test_virtualedit.vim + +Patch 8.2.0541 +Problem: Travis CI does not give compiler warnings. +Solution: Add flags for warnings. Fix uncovered problems. (Ozaki Kiichi, + closes #5898) +Files: .travis.yml, ci/config.mk.clang.sed, ci/config.mk.gcc.sed, + ci/config.mk.sed, src/if_perl.xs, src/if_ruby.c, + src/libvterm/t/harness.c + +Patch 8.2.0542 +Problem: No test for E386. +Solution: Add a test. (Dominique Pell茅, closes #5911) +Files: src/testdir/test_search.vim + +Patch 8.2.0543 +Problem: Vim9: function with varargs does not work properly. +Solution: Improve function type spec and add tests. Fix bugs. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/vim9execute.c, + src/structs.h, src/testdir/test_vim9_func.vim + +Patch 8.2.0544 +Problem: Memory leak in search test. +Solution: Free msgbuf. (Dominique Pell茅, closes #5912) +Files: src/search.c + +Patch 8.2.0545 +Problem: Unused arguments ignored in non-standard way. +Solution: Add UNUSED instead of (void). +Files: src/libvterm/t/harness.c + +Patch 8.2.0546 +Problem: Vim9: varargs implementation is inefficient. +Solution: Create list without moving the arguments. +Files: src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0547 +Problem: Win32: restoring screen not always done right. +Solution: Use a more appropriate method. (Nobuhiro Takasaki, closes #5909) +Files: src/os_win32.c + +Patch 8.2.0548 +Problem: Vim9: not all possible func type errors tested. +Solution: Add more tests. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0549 +Problem: User systemd files not recognized. +Solution: Add filetype patterns. (Kevin Locke, closes #5914) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0550 +Problem: Some changes in the libvterm upstream code. +Solution: Include some changes. +Files: src/libvterm/t/harness.c + +Patch 8.2.0551 +Problem: Not all code for options is tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5913) +Files: src/testdir/test_options.vim, src/testdir/test_python3.vim, + src/testdir/test_undo.vim, src/testdir/test_vimscript.vim + +Patch 8.2.0552 +Problem: Vim9: some errors not covered by tests. +Solution: Add more tests. Check Funcref argument types. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0553 (after 8.2.0550) +Problem: Error for unused argument. +Solution: Add UNUSED. +Files: src/libvterm/t/harness.c + +Patch 8.2.0554 +Problem: The GUI doesn't set t_Co. +Solution: In the GUI set t_Co to 256 * 256 * 256. (closes #5903) +Files: src/term.c, src/proto/term.pro, src/gui.c, + src/testdir/test_gui.vim + +Patch 8.2.0555 +Problem: Vim9: line continuation is not always needed. +Solution: Recognize continuation lines automatically in list and dict. +Files: runtime/doc/vim9.txt, src/vim9compile.c, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0556 +Problem: Vim9: memory leak when finding common type. +Solution: Store allocated memory in type growarray. +Files: src/vim9compile.c + +Patch 8.2.0557 +Problem: No IPv6 support for channels. +Solution: Add IPv6 support. (Ozaki Kiichi, closes #5893) +Files: .travis.yml, runtime/doc/channel.txt, runtime/doc/various.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/auto/configure, + src/channel.c, src/config.h.in, src/configure.ac, src/evalfunc.c, + src/proto/channel.pro, src/testdir/check.vim, + src/testdir/runtest.vim, src/testdir/test_cdo.vim, + src/testdir/test_channel.py, src/testdir/test_channel.vim, + src/testdir/test_channel_6.py, src/testdir/test_escaped_glob.vim, + src/testdir/test_getcwd.vim, src/testdir/test_hide.vim + +Patch 8.2.0558 +Problem: Vim9: dict code not covered by tests. +Solution: Remove dead code, adjust test case. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0559 +Problem: Clearing a struct is verbose. +Solution: Define and use CLEAR_FIELD() and CLEAR_POINTER(). +Files: src/vim.h, src/blowfish.c, src/channel.c, src/charset.c, + src/clipboard.c, src/diff.c, src/eval.c, src/evalfunc.c, + src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, src/findfile.c, + src/gui_gtk_f.c, src/gui_mac.c, src/gui_motif.c, src/gui_w32.c, + src/gui_x11.c, src/hardcopy.c, src/hashtab.c, src/highlight.c, + src/if_mzsch.c, src/insexpand.c, src/kword_test.c, src/list.c, + src/main.c, src/map.c, src/memfile.c, src/message_test.c, + src/misc1.c, src/netbeans.c, src/normal.c, src/ops.c, + src/option.c, src/os_mswin.c, src/os_win32.c, src/popupmenu.c, + src/quickfix.c, src/regexp.c, src/regexp_bt.c, src/regexp_nfa.c, + src/search.c, src/sign.c, src/spell.c, src/spellfile.c, + src/spellsuggest.c, src/syntax.c, src/tag.c, src/terminal.c, + src/time.c, src/undo.c, src/userfunc.c, src/vim9compile.c, + src/vim9execute.c, src/if_py_both.h + +Patch 8.2.0560 +Problem: Compiler warning in tiny build. +Solution: Move declaration inside #ifdef. (Dominique Pell茅, closes #5915) +Files: src/ex_docmd.c + +Patch 8.2.0561 +Problem: Vim9: cannot split function call in multiple lines. +Solution: Find more arguments in following lines. +Files: runtime/doc/vim9.txt, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0562 +Problem: Vim9: cannot split an expression into multiple lines. +Solution: Continue in next line after an operator. +Files: runtime/doc/vim9.txt, src/macros.h, src/vim9compile.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0563 +Problem: Vim9: cannot split a function line. +Solution: Continue in next line so long as the function isn't done. +Files: runtime/doc/vim9.txt, src/userfunc.c, src/proto/userfunc.pro, + src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0564 +Problem: Vim9: calling a def function from non-vim9 may fail. +Solution: Convert varargs to a list. +Files: src/testdir/test_vim9_func.vim, src/vim9execute.c + +Patch 8.2.0565 +Problem: Vim9: tests contain superfluous line continuation. +Solution: Remove line continuation no longer needed. Skip empty lines. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0566 +Problem: Vim9: variable can be used uninitialized. +Solution: Jump to after where variable is used. +Files: src/vim9execute.c + +Patch 8.2.0567 +Problem: Vim9: cannot put comments halfway expressions. +Solution: Support # comments in many places. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/userfunc.c, + src/ex_docmd.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0568 +Problem: The man filetype plugin overwrites the unnamed register. +Solution: Use the black hole register. (Jason Franklin) +Files: runtime/ftplugin/man.vim, src/testdir/test_man.vim + +Patch 8.2.0569 +Problem: Build failure with tiny version. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.0570 +Problem: Vim9: no error when omitting type from argument. +Solution: Enforce specifying argument types. +Files: src/userfunc.c, src/ex_eval.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0571 +Problem: Double free when passing invalid argument to job_start(). +Solution: Clear the argument when freed. (Masato Nishihata, closes #5926) +Files: src/misc2.c, src/testdir/test_channel.vim + +Patch 8.2.0572 (after 8.2.0571) +Problem: Using two lines for free and reset. +Solution: Use VIM_CLEAR() instead. (Yegappan Lakshmanan) +Files: src/misc2.c + +Patch 8.2.0573 +Problem: using :version twice leaks memory +Solution: Only initialize variables once. (Dominique Pell茅, closes #5917) +Files: src/testdir/Make_all.mak, src/testdir/test_alot.vim, + src/testdir/test_version.vim, src/version.c, src/globals.h + +Patch 8.2.0574 +Problem: Ipv6 feature not shown in :version output. +Solution: Add ipv6 in :version output. (Ozaki Kiichi, closes #5924) +Files: runtime/doc/eval.txt, src/version.c + +Patch 8.2.0575 +Problem: :digraph! not tested. +Solution: Add a test. (Dominique Pell茅, closes #5925) +Files: src/testdir/test_digraph.vim + +Patch 8.2.0576 +Problem: Some errors are not covered by tests. +Solution: Add a few more tests. (Dominique Pell茅, closes #5920) +Files: src/testdir/test_buffer.vim, src/testdir/test_digraph.vim, + src/testdir/test_expr.vim, src/testdir/test_messages.vim + +Patch 8.2.0577 +Problem: Not all modifiers supported for :options. +Solution: Use all cmdmod.split flags. (closes #4401) +Files: src/usercmd.c, src/proto/usercmd.pro, src/scriptfile.c, + src/testdir/test_options.vim, src/testdir/test_usercommands.vim + +Patch 8.2.0578 +Problem: Heredoc for interfaces does not support "trim". +Solution: Update the script heredoc support to be same as the :let command. + (Yegappan Lakshmanan, closes #5916) +Files: runtime/doc/if_lua.txt, runtime/doc/if_mzsch.txt, + runtime/doc/if_perl.txt, runtime/doc/if_pyth.txt, + runtime/doc/if_ruby.txt, runtime/doc/if_tcl.txt, src/evalvars.c, + src/ex_getln.c, src/proto/evalvars.pro, src/testdir/test86.in, + src/testdir/test87.in, src/testdir/test_lua.vim, + src/testdir/test_perl.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_pyx2.vim, + src/testdir/test_pyx3.vim, src/testdir/test_ruby.vim, + src/testdir/test_tcl.vim, src/userfunc.c, src/vim9compile.c + +Patch 8.2.0579 +Problem: Coverity warns for unused value. +Solution: Change order and use "else if". +Files: src/os_unix.c + +Patch 8.2.0580 +Problem: Window size wrong if 'ea' is off and 'splitright' is on and + splitting then closing a window. +Solution: Put abandoned window space in the right place. (Mark Waggoner) +Files: src/testdir/test_winbuf_close.vim, src/window.c + +Patch 8.2.0581 (after 8.2.0547) +Problem: Win32 console: the cursor position is always top-left. +Solution: Revert the patch for restoring screen. +Files: src/os_win32.c + +Patch 8.2.0582 +Problem: Color ramp test does not show text colors. +Solution: Add a row of 16 text colors and 16 bold text colors. +Files: src/testdir/color_ramp.vim + +Patch 8.2.0583 +Problem: Vim9: # comment not recognized in :def function. +Solution: Recognize and skip # comment. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0584 +Problem: Viminfo file uses obsolete function file_readable(). +Solution: Use filereadable(). (closes #5934) +Files: src/session.c + +Patch 8.2.0585 +Problem: Vim9: # comment not recognized after :vim9script. +Solution: Check script type. Make comment after ":echo" work. And in + several other places. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/eval.c, + src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0586 +Problem: Vim9: # comment not sufficiently tested +Solution: Check for preceding white space. +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0587 +Problem: Compiler warning for unused variable. +Solution: Add UNUSED. +Files: src/ex_docmd.c + +Patch 8.2.0588 +Problem: Putty does not use "sgr" 'ttymouse' by default. +Solution: Make "sgr" the default for Putty. (Christian Brabandt, + closes #5942) +Files: src/term.c + +Patch 8.2.0589 +Problem: .bsd file type not recognized. +Solution: Recognize .bsd as BSDL. (Daniel Kho, closes #5945) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0590 +Problem: No 'backspace' value allows ignoring the insertion point. +Solution: Add the "nostop" and 3 values. (Christian Brabandt, closes #5940) +Files: runtime/doc/options.txt, src/edit.c, src/option.c, src/option.h, + src/optionstr.c, src/testdir/gen_opt_test.vim, + src/testdir/test_backspace_opt.vim + +Patch 8.2.0591 +Problem: MS-Windows: should always support IPv6 +Solution: Add build flag. (Ozaki Kiichi, closes #5944) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.2.0592 +Problem: MS-Windows with VTP: cursor is not made invisible. +Solution: Output the code to make the cursor visible or invisible. (Nobuhiro + Takasaki, closes #5941) +Files: src/os_win32.c + +Patch 8.2.0593 +Problem: Finding a user command is not optimal. +Solution: Start further down in the list of commands. +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 8.2.0594 +Problem: MS-Windows: cannot build with WINVER set to 0x0501. +Solution: Only use inet_ntop() when available. (Ozaki Kiichi, closes #5946) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/auto/configure, + src/channel.c, src/config.h.in, src/configure.ac + +Patch 8.2.0595 +Problem: Vim9: not all commands using ends_excmd() tested. +Solution: Find # comment after regular commands. Add more tests. Report + error for where it was caused. +Files: src/ex_docmd.c, src/vim9compile.c, src/vim9execute.c, src/usercmd.c, + src/evalfunc.c, src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0596 +Problem: Crash in test49. +Solution: Check the right pointer. +Files: src/userfunc.c, src/testdir/test_eval.ok + +Patch 8.2.0597 +Problem: Test_eval is old style. +Solution: Change some tests to a new style test. +Files: src/testdir/test_eval.in, src/testdir/test_eval.ok, + src/testdir/test_eval_stuff.vim + +Patch 8.2.0598 +Problem: Test_eval_stuff fails in normal terminal. +Solution: Close the new window. +Files: src/testdir/test_eval_stuff.vim + +Patch 8.2.0599 +Problem: Netbeans interface insufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5921) +Files: runtime/doc/netbeans.txt, src/netbeans.c, src/os_win32.c, + src/testdir/runtest.vim, src/testdir/test_netbeans.py, + src/testdir/test_netbeans.vim + +Patch 8.2.0600 +Problem: Vim9: cannot read or write w:, t: and b: variables. +Solution: Implement load and store for w:, t: and b: variables. + (closes #5950) +Files: src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, + src/vim9.h, src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0601 +Problem: Vim9: :unlet is not compiled. +Solution: Implement :unlet instruction and check for errors. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9.h, + src/vim9execute.c, src/evalvars.c, src/proto/evalvars.pro, + src/eval.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0602 +Problem: :unlet $VAR does not work properly. +Solution: Make ":lockvar $VAR" fail. Check the "skip" flag. +Files: src/evalvars.c, src/globals.h, src/testdir/test_vimscript.vim + +Patch 8.2.0603 +Problem: Configure does not detect moonjit. +Solution: Add check for moonjit. (Shlomi Fish, closes #5947) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.0604 +Problem: :startinsert in a terminal window used later. +Solution: Ignore :startinsert in a terminal window. (closes #5952) +Files: src/ex_docmd.c, src/testdir/test_terminal.vim + +Patch 8.2.0605 +Problem: Vim9: cannot unlet an environment variable. +Solution: Implement unlet for $VAR. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0606 +Problem: Several syntax HL errors not checked. +Solution: Add tests. (Yegappan Lakshmanan, closes #5954) +Files: src/testdir/test_syntax.vim + +Patch 8.2.0607 +Problem: Gcc warns for using uninitialized variable. (John Marriott) +Solution: Set name_end also for environment variables. +Files: src/evalvars.c + +Patch 8.2.0608 +Problem: Warning from clang when building message test. +Solution: Use a void pointer. (Dominique Pell茅, closes #5958) +Files: src/message_test.c + +Patch 8.2.0609 +Problem: Configure does not detect moonjit correctly. +Solution: Double the brackets. (Ozaki Kiichi) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.0610 +Problem: Some tests are still old style. +Solution: Convert to new style tests. (Yegappan Lakshmanan, closes #5957) +Files: src/testdir/test_blob.vim, src/testdir/test_cursor_func.vim, + src/testdir/test_eval.in, src/testdir/test_eval.ok, + src/testdir/test_eval_func.vim, src/testdir/test_eval_stuff.vim, + src/testdir/test_expr.vim, src/testdir/test_filter_map.vim, + src/testdir/test_functions.vim, src/testdir/test_listdict.vim, + src/testdir/test_sort.vim, src/testdir/test_syntax.vim, + src/testdir/test_utf8.vim, src/testdir/test_vimscript.vim + +Patch 8.2.0611 +Problem: Vim9: no check for space before #comment. +Solution: Add space checks. +Files: src/eval.c, src/evalvars.c, src/ex_docmd.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0612 +Problem: Vim9: no check for space before #comment. +Solution: Add space checks. +Files: src/ex_eval.c, src/ex_cmds.c, src/regexp.c, src/proto/regexp.pro, + src/gui.c, src/highlight.c, src/testdir/test_vim9_script.vim, + src/testdir/test_sort.vim + +Patch 8.2.0613 +Problem: Vim9: no check for space before #comment. +Solution: Add space checks. +Files: src/highlight.c, src/menu.c, src/syntax.c, + src/testdir/test_vim9_script.vim, + runtime/lang/menu_de_de.latin1.vim + +Patch 8.2.0614 +Problem: Get ml_get error when deleting a line in 'completefunc'. (Yegappan + Lakshmanan) +Solution: Lock the text while evaluating 'completefunc'. +Files: src/insexpand.c, src/globals.h, src/edit.c, src/ex_getln.c, + src/undo.c, src/testdir/test_edit.vim, src/testdir/test_excmd.vim, + src/testdir/test_gf.vim, src/testdir/test_popup.vim, + src/testdir/test_ex_mode.vim, runtime/doc/insert.txt + +Patch 8.2.0615 +Problem: Regexp benchmark test is old style. +Solution: Make it a new style test. Fix using a NULL list. Add more tests. + (Yegappan Lakshmanan, closes #5963) +Files: src/evalbuffer.c, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Makefile, + src/testdir/bench_re_freeze.in, src/testdir/bench_re_freeze.vim, + src/testdir/test_autocmd.vim, src/testdir/test_bench_regexp.vim, + src/testdir/test_blob.vim, src/testdir/test_bufline.vim, + src/testdir/test_channel.vim, src/testdir/test_cmdline.vim, + src/testdir/test_functions.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_popupwin.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_tagjump.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.0616 +Problem: Build error when disabling the diff feature. +Solution: Move parenthesis outside of #ifdef. (Tom Ryder) +Files: src/drawline.c + +Patch 8.2.0617 +Problem: New error check triggers in Swedish menu. +Solution: Insert backslash. (Mats Tegner, closes #5966) +Files: runtime/lang/menu_sv_se.latin1.vim + +Patch 8.2.0618 +Problem: Echoing a null list results in no output. (Yegappan Lakshmanan) +Solution: Return "[]" instead of NULL in echo_string_core(). +Files: src/eval.c, src/testdir/test_messages.vim + +Patch 8.2.0619 +Problem: Null dict is not handled like an empty dict. +Solution: Fix the code and add tests. (Yegappan Lakshmanan, closes #5968) +Files: src/dict.c, src/eval.c, src/testdir/test_blob.vim, + src/testdir/test_expr.vim, src/testdir/test_filter_map.vim, + src/testdir/test_let.vim, src/testdir/test_listdict.vim, + src/testdir/test_search.vim, src/testdir/test_unlet.vim, + src/testdir/test_usercommands.vim, src/testdir/test_vimscript.vim + +Patch 8.2.0620 +Problem: Error in menu translations. +Solution: Insert a backslash before a space. +Files: runtime/lang/menu_it_it.latin1.vim, + runtime/lang/menu_chinese_gb.936.vim + +Patch 8.2.0621 +Problem: After running tests asan files may remain. +Solution: Clean up asan files with "make testclean". +Files: src/testdir/Makefile, src/Makefile + +Patch 8.2.0622 +Problem: Haiku: GUI does not compile. +Solution: Various fixes. (Emir Sar谋, closes #5961) +Files: Filelist, README.md, READMEdir/README_haiku.txt, + runtime/doc/os_haiku.txt, src/Makefile, src/beval.h, + src/gui_haiku.cc, src/proto/gui_haiku.pro + +Patch 8.2.0623 +Problem: Typo in test comment. (Christ van Willegen) +Solution: Avoid mixing up a data structure with a body part. +Files: src/testdir/test_listdict.vim + +Patch 8.2.0624 +Problem: Vim9: no check for space before #comment. +Solution: Add space checks. Fix :throw with double quoted string. +Files: src/usercmd.c, src/userfunc.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0625 +Problem: Vim9: confusing error when calling unknown function. +Solution: Give error while compiling. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.0626 +Problem: Vim9: wrong syntax of function in Vim9 script. +Solution: Give error for missing space. Implement :echomsg and :echoerr. + (closes #5670) +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/userfunc.c, + src/eval.c, src/globals.h, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0627 +Problem: Vim9: error message does not work. (Yegappan Lakshmanan) +Solution: Swap lines. +Files: src/userfunc.c + +Patch 8.2.0628 +Problem: Error in menu translations. +Solution: Insert a backslash before a space in one more file. (Shun Bai, + Emir Sar谋) +Files: runtime/lang/menu_zh_cn.utf-8.vim, + runtime/lang/menu_ca_es.latin1.vim, + runtime/lang/menu_cs_cz.iso_8859-2.vim, + runtime/lang/menu_cs_cz.utf-8.vim, + runtime/lang/menu_czech_czech_republic.1250.vim, + runtime/lang/menu_czech_czech_republic.ascii.vim, + runtime/lang/menu_da.utf-8.vim, + runtime/lang/menu_fi_fi.latin1.vim, + runtime/lang/menu_hu_hu.iso_8859-2.vim, + runtime/lang/menu_hu_hu.utf-8.vim, + runtime/lang/menu_is_is.latin1.vim, + runtime/lang/menu_no_no.latin1.vim, runtime/lang/menu_pt_br.vim, + runtime/lang/menu_pt_pt.vim, + runtime/lang/menu_sk_sk.iso_8859-2.vim, + runtime/lang/menu_sl_si.latin2.vim, + runtime/lang/menu_slovak_slovak_republic.1250.vim, + runtime/lang/menu_tr_tr.cp1254.vim, + runtime/lang/menu_tr_tr.iso_8859-9.vim, + runtime/lang/menu_tr_tr.utf-8.vim, runtime/lang/menu_vi_vn.vim + +Patch 8.2.0629 +Problem: Setting a boolean option to v:false does not work. +Solution: Do not use the string representation of the value. (Christian + Brabandt, closes #5974) +Files: src/evalvars.c, src/testdir/test_options.vim + +Patch 8.2.0630 +Problem: "make tags" does not cover Haiku GUI file. +Solution: Add *.cc files. +Files: src/Make_all.mak + +Patch 8.2.0631 +Problem: Haiku file formatted with wrong tabstop. +Solution: Use normal tabstop. Fix white space. +Files: src/gui_haiku.cc + +Patch 8.2.0632 +Problem: Crash when using Haiku. +Solution: Lock the screen. (closes #5975, closes #5973) +Files: src/screen.c + +Patch 8.2.0633 +Problem: Crash when using null partial in filter(). +Solution: Fix crash. Add more tests. (Yegappan Lakshmanan, closes #5976) +Files: src/eval.c, src/testdir/test_blob.vim, + src/testdir/test_channel.vim, src/testdir/test_eval_stuff.vim, + src/testdir/test_execute_func.vim, src/testdir/test_expr.vim, + src/testdir/test_filter_map.vim, src/testdir/test_fold.vim, + src/testdir/test_functions.vim, src/testdir/test_let.vim, + src/testdir/test_listdict.vim, src/testdir/test_partial.vim, + src/testdir/test_usercommands.vim + +Patch 8.2.0634 +Problem: Crash with null partial and blob. +Solution: Check for NULL pointer. Add more tests. (Yegappan Lakshmanan, + closes #5984) +Files: src/eval.c, src/list.c, src/testdir/test_blob.vim, + src/testdir/test_bufwintabinfo.vim, src/testdir/test_cd.vim, + src/testdir/test_channel.vim, src/testdir/test_cursor_func.vim, + src/testdir/test_eval_stuff.vim, src/testdir/test_expr.vim, + src/testdir/test_filter_map.vim, src/testdir/test_fnamemodify.vim, + src/testdir/test_functions.vim, src/testdir/test_getvar.vim, + src/testdir/test_listdict.vim, src/testdir/test_messages.vim, + src/testdir/test_partial.vim, src/testdir/test_quickfix.vim, + src/testdir/test_tabpage.vim, src/testdir/test_vimscript.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_window_id.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0635 +Problem: When using 256 colors DarkYellow does not show expected color. +Solution: Use color 3 instead of 130. (Romain Lafourcade, closes #5985) +Files: src/highlight.c + +Patch 8.2.0636 +Problem: :messages does not show the maintainer when $LANG is unset. +Solution: Call get_mess_lang() if available. (closes #5978) +Files: src/message.c + +Patch 8.2.0637 +Problem: Incsearch highlighting does not work for ":sort!". +Solution: Skip over the exclamation point. (closes #5983) +Files: src/ex_getln.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_sort_02.dump + +Patch 8.2.0638 +Problem: MS-Windows: messages test fails. +Solution: Clear environment variables. +Files: src/testdir/test_messages.vim + +Patch 8.2.0639 +Problem: MS-Windows: messages test still fails. +Solution: Filter out the maintainer message. +Files: src/testdir/test_messages.vim + +Patch 8.2.0640 +Problem: Vim9: expanding `=expr` does not work. +Solution: Find wildcards in not compiled commands. Reorganize test files. +Files: Filelist, src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/vim9.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim, + src/testdir/Make_all.mak + +Patch 8.2.0641 +Problem: Vim9: `=expr` not expanded in :hardcopy and "syntax include". +Solution: Add the EX_EXPAND flag. Expend "syntax include". +Files: src/ex_cmds.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.0642 +Problem: Vim9: using invalid index. +Solution: Check index for being valid. Fix memory leak. +Files: src/vim9compile.c, src/clientserver.c + +Patch 8.2.0643 (after 8.2.0635) +Problem: Terminal uses brown instead of dark yellow. (Romain Lafourcade) +Solution: Use color index 3 instead of 130. (closes #5993) +Files: src/terminal.c + +Patch 8.2.0644 +Problem: Insufficient testing for invalid function arguments. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5988) +Files: runtime/doc/eval.txt, src/testdir/test_bufline.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_listener.vim, src/testdir/test_match.vim, + src/testdir/test_menu.vim, src/testdir/test_quickfix.vim, + src/testdir/test_registers.vim, src/testdir/test_reltime.vim, + src/testdir/test_terminal.vim, src/testdir/test_textprop.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_window_id.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0645 +Problem: MS-Windows terminal: CTRL-C does not get to child job. +Solution: Remove CREATE_NEW_PROCESS_GROUP from CreateProcessW(). (Nobuhiro + Takasaki, closes #5987) +Files: src/terminal.c + +Patch 8.2.0646 +Problem: t_Co uses the value of $COLORS in the GUI. (Masato Nishihata) +Solution: Ignore $COLORS for the GUI. (closes #5992) +Files: src/os_unix.c, src/term.c + +Patch 8.2.0647 +Problem: MS-Windows: repeat count for events was not used. +Solution: Check the repeat count. (Nobuhiro Takasaki, closes #5989) +Files: src/os_win32.c + +Patch 8.2.0648 +Problem: Semicolon search does not work in first line. +Solution: Allow the cursor to be in line zero. (Christian Brabandt, + closes #5996) +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.0649 +Problem: Undo problem when an InsertLeave autocommand resets undo. (Kutsan + Kaplan) +Solution: Do not create a new undo block when leaving Insert mode. +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.2.0650 +Problem: Vim9: script function can be deleted. +Solution: Disallow deleting script function. Delete functions when sourcing + a script again. +Files: src/userfunc.c, src/proto/userfunc.pro, src/evalfunc.c, + src/vim9compile.c, src/vim9execute.c, src/vim9script.c, + src/scriptfile.c, src/testing.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0651 +Problem: Old style benchmark test still in list of distributed files. +Solution: Remove the files from the list. +Files: Filelist + +Patch 8.2.0652 (after 8.2.0650) +Problem: Compiler warning for char conversion. +Solution: Use unsigned char buffer. +Files: src/userfunc.c + +Patch 8.2.0653 (after 8.2.0650) +Problem: using uninitialized pointer. +Solution: Move assignment up. (John Marriott) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0654 +Problem: Building with Python fails. +Solution: Add missing argument. +Files: src/if_py_both.h + +Patch 8.2.0655 +Problem: Search code not sufficiently tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #5999) +Files: src/testdir/test_charsearch.vim, src/testdir/test_gn.vim, + src/testdir/test_goto.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_normal.vim, src/testdir/test_search.vim, + src/testdir/test_textformat.vim, src/testdir/test_textobjects.vim, + src/testdir/test_visual.vim + +Patch 8.2.0656 +Problem: MS-Windows: redrawing right screen edge may not be needed. +Solution: Check the build version. (Nobuhiro Takasaki, closes #6002) +Files: src/drawscreen.c, src/os_win32.c, src/proto/os_win32.pro + +Patch 8.2.0657 +Problem: Vim9: no check if called variable is a FuncRef. +Solution: Add a type check. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0658 (after 8.2.0646) +Problem: HP-UX build fails when setenv() is not defined. +Solution: Change "colors" to "t_colors". (John Marriott) +Files: src/os_unix.c + +Patch 8.2.0659 +Problem: Vim9: no test for equal func type. +Solution: Add a test. Improve type check. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0660 +Problem: The search.c file is a bit big. +Solution: Split off the text object code to a separate file. (Yegappan + Lakshmanan, closes #6007) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/proto.h, src/proto/search.pro, src/proto/textobject.pro, + src/search.c, src/textobject.c + +Patch 8.2.0661 +Problem: Eval test is still old style. +Solution: Change into new style tests. (Yegappan Lakshmanan, closes #6009) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test_eval.in, src/testdir/test_eval.ok, + src/testdir/test_eval_stuff.vim + +Patch 8.2.0662 +Problem: Cannot use input() in a channel callback. +Solution: Reset vgetc_busy. (closes #6010) +Files: src/globals.h, src/ex_getln.c, src/evalfunc.c, + src/testdir/test_channel.vim + +Patch 8.2.0663 +Problem: Not all systemd temp files are recognized. +Solution: Add two more patterns. (Jamie Macdonald, closes #6003) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0664 +Problem: Included undesired changes in Makefile. +Solution: Revert the changes. +Files: src/Makefile + +Patch 8.2.0665 +Problem: Wrongly assuming Python executable is called "python". +Solution: Use detected python command. (Ken Takata, closes #6016) + Also use CheckFunction if possible. +Files: src/testdir/test_terminal.vim, src/testdir/check.vim + +Patch 8.2.0666 +Problem: Ruby test fails on MS-Windows. +Solution: Remove the "maintainer" line. (Ken Takata, closes #6015) +Files: src/testdir/shared.vim, src/testdir/test_messages.vim, + src/testdir/test_ruby.vim + +Patch 8.2.0667 +Problem: Cannot install Haiku version from source. +Solution: Update Makefile and rdef file. (Emir Sar谋, closes #6013) +Files: Filelist, READMEdir/README_haiku.txt, runtime/doc/os_haiku.txt, + src/Makefile, src/os_haiku.rdef.in, src/os_haiku.rdef + +Patch 8.2.0668 +Problem: Compiler warning for int/size_t usage. +Solution: Change "int" to "size_t". (Mike Williams) +Files: src/vim9execute.c + +Patch 8.2.0669 +Problem: MS-Windows: display in VTP is a bit slow. +Solution: Optimize the code. (Nobuhiro Takasaki, closes #6014) +Files: src/os_win32.c, src/screen.c + +Patch 8.2.0670 +Problem: Cannot change window when evaluating 'completefunc'. +Solution: Make a difference between not changing text or buffers and also + not changing window. +Files: src/ex_getln.c, src/beval.c, src/change.c, src/edit.c, src/eval.c, + src/ex_docmd.c, src/insexpand.c, src/globals.h, src/indent.c, + src/map.c, src/window.c, src/proto/ex_getln.pro, src/register.c, + src/undo.c, src/testdir/test_edit.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_popup.vim + +Patch 8.2.0671 +Problem: Haiku: compiler warnings. +Solution: Avoid the warnings. Drop display_errors() copy. (Emir Sar谋, + closes #6018) +Files: .gitignore, src/gui.c, src/gui_haiku.cc + +Patch 8.2.0672 +Problem: Heredoc in scripts does not accept lower case marker. +Solution: Allow lower case only in non-Vim scripts. (Ken Takata, + closes #6019) +Files: src/evalvars.c, src/testdir/test_lua.vim, + src/testdir/test_perl.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_pyx2.vim, + src/testdir/test_pyx3.vim, src/testdir/test_ruby.vim + +Patch 8.2.0673 +Problem: Cannot build Haiku in shadow directory. +Solution: Add symlink. (Ozaki Kiichi, closes #6023) +Files: src/Makefile + +Patch 8.2.0674 +Problem: Some source files are too big. +Solution: Move text formatting functions to a new file. (Yegappan + Lakshmanan, closes #6021) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/edit.c, src/getchar.c, src/ops.c, src/option.c, src/proto.h, + src/proto/edit.pro, src/proto/getchar.pro, src/proto/ops.pro, + src/proto/option.pro, src/proto/textformat.pro, src/textformat.c + +Patch 8.2.0675 +Problem: Vim9: no support for closures. +Solution: Do not re-use stack entries. +Files: src/vim9compile.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/evalvars.c, src/proto/evalvars.pro + +Patch 8.2.0676 +Problem: Pattern in list of distributed files does not match. +Solution: Drop "testdir/test_[a-z]*.ok". Add CI sed files. +Files: Filelist + +Patch 8.2.0677 +Problem: Vim9: no support for closures. +Solution: Find variables in the outer function scope, so long as the scope + exists. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/vim9execute.c, src/structs.h, src/vim9.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.0678 +Problem: Rare crash for popup menu. +Solution: Check for NULL pointer. (Nobuhiro Takasaki, closes #6027) +Files: src/popupmenu.c + +Patch 8.2.0679 +Problem: Vim9: incomplete support for closures. +Solution: At the end of a function copy arguments and local variables if + they are still used by a referenced closure. +Files: src/structs.h, src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.0680 +Problem: PTYGROUP and PTYMODE are unused. +Solution: Remove from autoconf. (closes #6024) +Files: src/configure.ac, src/auto/configure, src/config.h.in + +Patch 8.2.0681 +Problem: Pattern for 'hlsearch' highlighting may leak. (Dominique Pell茅) +Solution: Call end_search_hl() to make sure the previous pattern is freed. + (closes #6028) +Files: src/screen.c + +Patch 8.2.0682 +Problem: Vim9: parsing function argument type can get stuck. +Solution: Bail out when not making progress. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0683 +Problem: Vim9: parsing type does not always work. +Solution: Handle func type without return value. Test more closures. + Fix type check offset. Fix garbage collection. +Files: src/vim9compile.c, src/vim9execute.c, src/proto/vim9execute.pro, + src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0684 +Problem: Vim9: memory leak when using lambda. +Solution: Move the funccal context to the partial. Free the function when + exiting. +Files: src/vim9.h, src/structs.h, src/vim9execute.c, src/userfunc.c, + src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0685 (after 8.2.0684) +Problem: Build failure. +Solution: Include missing changes. +Files: src/vim9compile.c + +Patch 8.2.0686 +Problem: Formatoptions not sufficiently tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #6031) +Files: src/testdir/test_normal.vim, src/testdir/test_textformat.vim + +Patch 8.2.0687 +Problem: Some tests do not work on FreeBSD. +Solution: Enable modeline. Use WaitFor() in more cases. (Ozaki Kiichi, + closes #6036) +Files: src/testdir/test_quickfix.vim, src/testdir/test_terminal.vim + +Patch 8.2.0688 +Problem: Output clobbered if setting 'verbose' to see shell commands. +Solution: Only output "Searching for" when 'verbose' is 11 or higher. +Files: src/scriptfile.c, runtime/doc/options.txt + +Patch 8.2.0689 +Problem: When using getaddrinfo() the error message is unclear. +Solution: Use gai_strerror() to get the message. (Ozaki Kiichi, + closes #6034) +Files: src/channel.c + +Patch 8.2.0690 +Problem: Line number of option set by modeline is wrong. +Solution: Do not double the line number. (Ozaki Kiichi, closes #6035) +Files: src/option.c, src/testdir/test_modeline.vim + +Patch 8.2.0691 +Problem: Startup test fails. +Solution: Adjust expected output from -V2 argument. +Files: src/testdir/test_startup.vim + +Patch 8.2.0692 +Problem: Startup test fails on MS-Windows. +Solution: Allow for any path. +Files: src/testdir/test_startup.vim + +Patch 8.2.0693 +Problem: Closure using argument not tested. +Solution: Add a test, make it work. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0694 +Problem: Haiku: channel and terminal do not work. +Solution: Close files when the job has finished. (Ozaki Kiichi, + closes #6039) +Files: src/channel.c, src/getchar.c, src/gui_haiku.cc, src/misc1.c + +Patch 8.2.0695 +Problem: Vim9: cannot define a function inside a function. +Solution: Initial support for :def inside :def. +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9compile.c, + src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0696 +Problem: Vim9: nested function does not work properly +Solution: Create a function reference. Check argument count. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.0697 +Problem: Vim9: memory leak when using nested function. +Solution: Unreference function when deleting instructions. Adjust reference + count for local variables. +Files: src/vim9compile.c, src/vim9execute.c + +Patch 8.2.0698 +Problem: Insert mode completion not fully tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #6041) +Files: src/testdir/test_edit.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_textformat.vim + +Patch 8.2.0699 +Problem: Vim9: not all errors tested. +Solution: Add test for deleted function. Bail out on first error. +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_expr.vim, src/testdir/vim9.vim + +Patch 8.2.0700 +Problem: Vim9: converting error message to exception not tested. +Solution: Test exception from error. Do not continue after :echoerr. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0701 +Problem: Vim9 test fails without job feature. +Solution: Add feature check. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0702 +Problem: Running channel tests may leave running process behind. +Solution: Make Python client exit when running into EOF. (Kurtis Rader, + part of #6046) +Files: src/testdir/test_channel_pipe.py + +Patch 8.2.0703 +Problem: Vim9: closure cannot store value in outer context. +Solution: Make storing value in outer context work. Make :disassemble + accept a function reference. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/eval.c, + src/structs.h, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.0704 +Problem: Vim9: memory leak in disassemble test. +Solution: Decrement refcount when creating funccal. +Files: src/vim9execute.c + +Patch 8.2.0705 +Problem: Indent tests don't run on CI for FreeBSD. +Solution: Set modeline. (Ozaki Kiichi, closes #6048) +Files: .cirrus.yml, runtime/indent/testdir/runtest.vim + +Patch 8.2.0706 +Problem: Vim9: using assert_fails() causes function to finish. +Solution: Check did_emsg instead of called_emsg. +Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0707 +Problem: Vim9 function test fails. +Solution: Adjust expected error code. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.0708 +Problem: Vim9: constant expressions are not simplified. +Solution: Simplify string concatenation. +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0709 +Problem: MS-Windows: compiler warning for int vs size_t. +Solution: Add type cast. (Mike Williams) +Files: src/channel.c + +Patch 8.2.0710 +Problem: Netbeans test sometimes fails. +Solution: Mark any test using an external command as flaky. +Files: src/testdir/shared.vim + +Patch 8.2.0711 +Problem: With a long running Vim the temp directory might be cleared on + some systems. +Solution: Lock the temp directory. (closes #6044) +Files: src/config.h.in, src/configure.ac, src/auto/configure, + src/fileio.c, src/globals.h, src/os_unix.h + +Patch 8.2.0712 +Problem: Various code not fully tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #6049) +Files: src/testdir/test_functions.vim, src/testdir/test_options.vim, + src/testdir/test_system.vim, src/testdir/test_termcodes.vim + +Patch 8.2.0713 +Problem: The pam_environment file is not recognized. +Solution: Add a filetype pattern for pamenv. (closes #6051) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0714 +Problem: Vim9: handling constant expression does not scale. +Solution: Use another solution, passing typval_T. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0715 +Problem: Vim9: leaking memory. +Solution: Free strings after concatenating them. +Files: src/vim9compile.c + +Patch 8.2.0716 +Problem: Vim9: another memory leak. +Solution: Clear typval when failing. +Files: src/vim9compile.c + +Patch 8.2.0717 +Problem: Vim9: postponed constant expressions does not scale. +Solution: Add a structure to pass around postponed constants. +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0718 +Problem: Gcc warning for returning pointer to local variable. (John + Marriott) +Solution: Return another pointer. +Files: src/evalvars.c + +Patch 8.2.0719 +Problem: Vim9: more expressions can be evaluated at compile time +Solution: Recognize has('name'). +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.0720 +Problem: Occasional exit when encountering an X error. (Manfred Lotz) +Solution: On an X error do not exit, do preserve files. +Files: src/os_unix.c + +Patch 8.2.0721 +Problem: Vim9: leaking memory when skipping. +Solution: Disable skipping in generate_ppconst(). +Files: src/vim9compile.c + +Patch 8.2.0722 +Problem: Vim9: not handling constant expression for elseif. +Solution: Use postponed constants. Delete the code for evaluating a + constant expression. +Files: src/vim9compile.c + +Patch 8.2.0723 +Problem: Vim9: nested constant expression not evaluated compile time. +Solution: Use compile_expr1() for parenthesis. +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0724 +Problem: Vim9: appending to buffer/window/tab variable not tested +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0725 +Problem: Vim9: cannot call a function declared later in Vim9 script. +Solution: Make two passes through the script file. +Files: src/scriptfile.c, src/proto/scriptfile.pro, src/vim9script.c, + src/vim9compile.c, src/vim9execute.c, src/proto/vim9compile.pro, + src/userfunc.c, src/proto/userfunc.pro, src/evalvars.c, + src/proto/evalvars.pro, src/vim.h, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0726 +Problem: Vim9: leaking memory when calling not compiled :def function. +Solution: Check if function is compiled earlier. +Files: src/vim9execute.c + +Patch 8.2.0727 +Problem: MS-Windows: new gcc compiler does not support scanf format. +Solution: Use "%ll" instead of "%I". (Ken Takata) +Files: src/vim.h + +Patch 8.2.0728 +Problem: Messages about a deadly signal are not left aligned. +Solution: Output a CR before the NL. (Dominique Pell茅, #6055) +Files: src/misc1.c, src/os_unix.c + +Patch 8.2.0729 +Problem: Vim9: When reloading a script variables are not cleared. +Solution: When sourcing a script again clear all script-local variables. +Files: src/dict.c, src/proto/dict.pro, src/scriptfile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0730 +Problem: Vim9: Assignment to dict member does not work. +Solution: Parse dict assignment. Implement getting dict member. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/globals.h, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.0731 +Problem: Vim9: parsing declarations continues after :finish. +Solution: Bail out when encountering :finish. +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0732 +Problem: Vim9: storing value in dict messes up stack. +Solution: Correct item count of stack. +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.0733 +Problem: Vim9: assigning to dict or list argument does not work. +Solution: Recognize an argument as assignment target. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0734 +Problem: Vim9: leaking memory when using :finish. +Solution: Do not check for next line in third pass. +Files: src/scriptfile.c + +Patch 8.2.0735 +Problem: Vim9: using uninitialized memory. +Solution: Clear the arg_lvar field. +Files: src/vim9compile.c + +Patch 8.2.0736 +Problem: Some files not recognized as pamenv. +Solution: Add pam_inv.conf. (closes #6065) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0737 +Problem: When shell doesn't support CTRL-Z Vim still handles it. +Solution: Ignore the STOP signal if it was ignored on startup. + (Kurtis Rader, closes #5990, closes #6058) +Files: src/os_unix.c + +Patch 8.2.0738 +Problem: Mouse handling in a terminal window not well tested. +Solution: Add tests. (Yegappan Lakshmanan, closes #6052) +Files: src/testdir/term_util.vim, src/testdir/test_gui.vim, + src/testdir/test_modeless.vim, src/testdir/test_terminal.vim + +Patch 8.2.0739 +Problem: Incomplete profiling when exiting because of a deadly signal. +Solution: Call __gcov_flush() if available. +Files: src/os_unix.c, src/Makefile, .travis.yml + +Patch 8.2.0740 +Problem: Minor message mistakes. +Solution: Change vim to Vim and other fixes. +Files: src/if_py_both.h, src/if_tcl.c, src/main.c + +Patch 8.2.0741 +Problem: Python tests fail because of changed message. +Solution: Adjust the expected messages (Dominique Pell茅, closes #6066) +Files: src/testdir/test86.ok, src/testdir/test87.ok + +Patch 8.2.0742 +Problem: Handling of a TERM signal not tested. +Solution: Add a test for SIGTERM. (Dominique Pell茅, closes #6055) +Files: src/testdir/test_signals.vim + +Patch 8.2.0743 +Problem: Can move to another buffer from a terminal in popup window. +Solution: Do not allow "gf" or editing a file. (closes #6072) +Files: src/normal.c, src/ex_cmds.c, src/testdir/test_popupwin.vim + +Patch 8.2.0744 +Problem: The name vim is not capitalized in a message. +Solution: Use "Vim" instead of "vim". +Files: src/main.c + +Patch 8.2.0745 +Problem: Crash on exit when not all popups are closed. +Solution: Close popups when freeing all memory. Disable checking for popup + when editing a file for now. +Files: src/misc2.c, src/ex_cmds.c + +Patch 8.2.0746 +Problem: popup_clear() hangs when a popup can't be closed. +Solution: Bail out when a popup can't be closed. +Files: src/popupwin.c, src/proto/popupwin.pro + +Patch 8.2.0747 +Problem: Cannot forcefully close all popups. +Solution: Add the "force" argument to popup_clear(). Use it after running a + test. Put back the check for a popup when editing a file. +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/tag.c, src/window.c, src/misc2.c, + src/ex_cmds.c, src/channel.c, src/testdir/runtest.vim, + src/testdir/test_terminal.vim + +Patch 8.2.0748 +Problem: Cannot get a list of all popups. +Solution: Add popup_list(). Use it in the test runner. +Files: runtime/doc/eval.txt, runtime/doc/popup.txt, src/popupwin.c, + src/proto/popupwin.pro, src/evalfunc.c, + src/testdir/test_popupwin.vim, src/testdir/runtest.vim + +Patch 8.2.0749 +Problem: TERM signal test fails on FreeBSD. +Solution: Do not check the messages, the may appear anywhere. (Dominique + Pell茅, closes #6075) +Files: src/testdir/test_signals.vim + +Patch 8.2.0750 +Problem: Netbeans test is a bit flaky. +Solution: Allow for standard sign to be defined. Use WaitForAssert(). +Files: src/testdir/test_netbeans.vim + +Patch 8.2.0751 +Problem: Vim9: performance can be improved. +Solution: Don't call break. Inline check for list materialize. Make an + inline version of ga_grow(). +Files: src/macros.h, src/evalfunc.c, src/misc2.c, + src/proto/misc2.pro, src/channel.c, src/eval.c, src/evalbuffer.c, + src/evalvars.c, src/filepath.c, src/highlight.c, src/insexpand.c, + src/json.c, src/list.c, src/popupmenu.c, src/popupwin.c, + src/userfunc.c, src/if_py_both.h + +Patch 8.2.0752 +Problem: Terminal in popup window test is a bit flaky. +Solution: Wait for shell job status to be "run". Mark as flaky test. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.0753 +Problem: Vim9: expressions are evaluated in the discovery phase. +Solution: Bail out if an expression is not a constant. Require a type for + declared constants. +Files: src/vim.h, src/evalvars.c, src/eval.c, src/ex_eval.c, + src/evalfunc.c, src/userfunc.c, src/dict.c, src/list.c, + src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0754 +Problem: Vim9: No test for forward declaration. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0755 +Problem: Vim9: No error when variable initializer is not a constant. +Solution: Return FAIL when trying to get a variable value. Do not execute a + script when an error is detected in the first or second phase. +Files: src/eval.c, src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0756 (after 8.2.0249) +Problem: MS-Windows: still a compiler warning. +Solution: Move flag to another place in the Makefile. (Ken Takata, + closes #6083) +Files: src/Make_mvc.mak + +Patch 8.2.0757 +Problem: Vim9: no test for MEMBER instruction. +Solution: Add a test. Make matches stricter. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0758 +Problem: Vim9: no test for STORELIST and STOREDICT. +Solution: Add a test. Make matches stricter. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.0759 (after 8.2.0751) +Problem: Vim9: missing changes for performance improvements +Solution: Use GA_GROW(). Don't call breakcheck so often. +Files: src/vim9execute.c + +Patch 8.2.0760 +Problem: Vim9: dict member errors not tested. +Solution: Delete unreachable error. Add tests. +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.0761 +Problem: Vim9: instructions not tested +Solution: Use a variable instead of a constant. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.0762 +Problem: Buffer is not considered modified after setting crypt key. +Solution: Set the modified flag. (Christian Brabandt, closes #6082) +Files: src/optionstr.c, src/testdir/test_crypt.vim + +Patch 8.2.0763 +Problem: GUI test fails without the terminal feature. +Solution: Check the terminal feature is supported. (Ken Takata, + closes #6084) +Files: src/testdir/test_gui.vim + +Patch 8.2.0764 +Problem: Vim9: assigning to option not fully tested. +Solution: Add more test cases. Allow using any type for assignment. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0765 +Problem: In the GUI can't use all the modifiers. (Andri M枚ll) +Solution: Do not apply Alt/Meta early, do it later like with the terminal. + Avoid the Motif test from crashing. +Files: src/gui_gtk_x11.c, src/gui_x11.c, src/gui_mac.c, src/gui_w32.c, + src/gui_motif.c + +Patch 8.2.0766 +Problem: Display error when using 'number' and 'breakindent'. +Solution: Adjust extra spaces in the first row. (Ken Takata, closes #6089, + closes #5986) +Files: src/drawline.c, src/testdir/test_breakindent.vim + +Patch 8.2.0767 +Problem: ModifyOtherKeys active when using a shell command in autocmd. +Solution: Output T_CTE when going to cooked mode. (closes 5617) +Files: src/term.c + +Patch 8.2.0768 +Problem: Vim9: memory leak in script test. +Solution: Clear typval before giving an error message. +Files: src/vim9execute.c + +Patch 8.2.0769 +Problem: VimLeavePre not triggered when Vim is terminated. +Solution: Unblock autocommands. +Files: src/main.c, src/testdir/test_signals.vim + +Patch 8.2.0770 +Problem: Cannot map CTRL-B when using the GUI. +Solution: Reset the CTRL modifier when used. (closes #6092) +Files: src/gui_gtk_x11.c + +Patch 8.2.0771 +Problem: Vim9: cannot call a compiled closure from not compiled code. +Solution: Pass funcexe to call_user_func(). +Files: src/userfunc.c, src/vim9execute.c, src/proto/vim9execute.pro, + src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.0772 +Problem: Vim9: some variable initializations not tested. +Solution: Add a few more tests +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0773 +Problem: Switching to raw mode every time ":" is used. +Solution: When executing a shell set cur_tmode to TMODE_UNKNOWN, so that the + next time TMODE_RAW is used it is set, but not every time. +Files: src/term.h, src/os_unix.c, src/term.c, src/os_amiga.c, + src/os_win32.c + +Patch 8.2.0774 +Problem: t_TI and t_TE are output when using 'visualbell'. (Dominique + Pell茅) +Solution: Do not change the terminal mode for a short sleep. Do not output + t_TI and t_TE when switching to/from TMODE_SLEEP. Make tmode an + enum. +Files: src/os_unix.c, src/proto/os_unix.pro, src/os_amiga.c, + src/proto/os_amiga.pro, src/os_mswin.c, src/proto/os_mswin.pro, + src/os_vms.c, src/proto/os_vms.pro, src/os_win32.c, + src/proto/os_win32.pro, src/term.c, src/term.h, src/globals.h + +Patch 8.2.0775 +Problem: Not easy to call a Vim function from Lua. +Solution: Add vim.call() and vim.fn(). (Prabir Shrestha, closes #6063) +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.0776 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revision 719. +Files: Filelist, src/libvterm/README, src/libvterm/Makefile, + src/libvterm/find-wide-chars.pl, src/libvterm/src/fullwidth.inc, + src/libvterm/src/unicode.c + +Patch 8.2.0777 (after 8.2.0776) +Problem: Terminal test fails. +Solution: Adjust character position for double-wide characters. +Files: src/testdir/test_terminal.vim + +Patch 8.2.0778 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 720 - 723. +Files: src/libvterm/t/10state_putglyph.test, src/libvterm/Makefile, + src/libvterm/t/run-test.pl, src/libvterm/src/state.c, + src/libvterm/t/92lp1805050.test + +Patch 8.2.0779 +Problem: Tmode_T not used everywhere. +Solution: Also use tmode_T for settmode(). +Files: src/term.c, src/proto/term.pro + +Patch 8.2.0780 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 724 - 726. +Files: Filelist, src/libvterm/t/40screen_ascii.test, + src/libvterm/t/60screen_ascii.test, + src/libvterm/t/41screen_unicode.test, + src/libvterm/t/61screen_unicode.test, + src/libvterm/t/42screen_damage.test, + src/libvterm/t/62screen_damage.test, + src/libvterm/t/43screen_resize.test, + src/libvterm/t/63screen_resize.test, + src/libvterm/t/44screen_pen.test, + src/libvterm/t/64screen_pen.test, + src/libvterm/t/45screen_protect.test, + src/libvterm/t/65screen_protect.test, + src/libvterm/t/46screen_extent.test, + src/libvterm/t/66screen_extent.test, + src/libvterm/t/47screen_dbl_wh.test, + src/libvterm/t/67screen_dbl_wh.test, + src/libvterm/t/48screen_termprops.test, + src/libvterm/t/68screen_termprops.test, src/libvterm/t/30pen.test, + src/libvterm/t/30state_pen.test, src/libvterm/t/92lp1805050.test, + src/libvterm/t/31state_rep.test, src/libvterm/doc/seqs.txt + +Patch 8.2.0781 (after 8.2.0775) +Problem: Compiler warning for not using value in Lua. +Solution: Add "(void)". +Files: src/if_lua.c + +Patch 8.2.0782 +Problem: Cannot build with Lua on MS-Windows. +Solution: Add DLL symbol for luaL_Loadstring. (Ken Takata) +Files: src/if_lua.c + +Patch 8.2.0783 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 728 - 729. +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile, + src/libvterm/src/keyboard.c, src/libvterm/t/25state_input.test, + src/libvterm/t/harness.c, src/libvterm/src/vterm.c, + src/libvterm/src/vterm_internal.h, + src/libvterm/t/26state_query.test + +Patch 8.2.0784 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 730 - 733. +Files: src/libvterm/src/vterm.c, src/libvterm/src/state.c, + src/libvterm/include/vterm.h, src/libvterm/src/vterm_internal.h, + src/libvterm/t/harness.c + +Patch 8.2.0785 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 734 - 740. +Files: src/libvterm/include/vterm.h, src/libvterm/src/pen.c, + src/libvterm/src/vterm.c, src/libvterm/doc/seqs.txt, + src/libvterm/t/30state_pen.test, src/libvterm/t/run-test.pl, + src/libvterm/Makefile, src/libvterm/CONTRIBUTING + +Patch 8.2.0786 +Problem: Channel test is flaky on FreeBSD. +Solution: Set the socket TCP_NODELAY option. Adjust expected line count in + netbeans test. (Ozaki Kiichi, closes #6097) +Files: src/testdir/test_channel.py, src/testdir/test_netbeans.vim + +Patch 8.2.0787 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 741 - 742. +Files: Filelist, src/libvterm/src/screen.c + +Patch 8.2.0788 +Problem: Memory leak in libvterm. +Solution: free tmpbuffer. +Files: src/libvterm/src/vterm.c + +Patch 8.2.0789 +Problem: Vim9: expression testing lost coverage using constants. +Solution: Use a few variables instead of constants. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.0790 +Problem: Vim9: list index not well tested. +Solution: Add a few more tests. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0791 +Problem: A second popup window with terminal causes trouble. +Solution: Disallow opening a second terminal-popup window. (closes #6101, + closes #6103) Avoid defaulting to an invalid line number. +Files: runtime/doc/popup.txt, src/popupwin.c, src/ex_docmd.c, + src/testdir/test_popupwin.vim, src/testdir/test_terminal.vim + +Patch 8.2.0792 +Problem: Build failure with small features. +Solution: Add #ifdef. +Files: src/popupwin.c + +Patch 8.2.0793 +Problem: MS-Windows: cannot build GUI with small features. (Michael Soyka) +Solution: Add #ifdef around use of windowsVersion. (Ken Takata) +Files: src/os_win32.c + +Patch 8.2.0794 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 743 - 747. +Files: src/libvterm/src/state.c, src/libvterm/src/screen.c, + src/libvterm/src/vterm_internal.h, src/libvterm/include/vterm.h, + src/libvterm/t/67screen_dbl_wh.test, src/libvterm/t/run-test.pl + +Patch 8.2.0795 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 748 - 754. +Files: src/libvterm/include/vterm.h, src/libvterm/src/screen.c, + src/libvterm/src/state.c, src/libvterm/t/32state_flow.test, + src/libvterm/t/60screen_ascii.test, + src/libvterm/t/62screen_damage.test, + src/libvterm/t/63screen_resize.test, src/libvterm/t/harness.c, + src/libvterm/t/run-test.pl + +Patch 8.2.0796 +Problem: MS-Windows: compiler can't handle C99 construct in libvterm. +Solution: Change to C90 construct. +Files: src/libvterm/src/state.c + +Patch 8.2.0797 +Problem: MS-Windows: compiler still can't handle C99 construct. +Solution: Change to C90 construct. (Dominique Pell茅, closes #6106) +Files: src/libvterm/src/state.c + +Patch 8.2.0798 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 755 - 758. +Files: src/libvterm/t/run-test.pl, src/libvterm/src/screen.c, + src/libvterm/t/harness.c, src/libvterm/include/vterm.h, + src/libvterm/src/parser.c, src/libvterm/src/state.c, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h, + src/libvterm/t/02parser.test, + src/libvterm/t/18state_termprops.test, + src/libvterm/t/29state_fallback.test, + src/libvterm/t/68screen_termprops.test, src/terminal.c + +Patch 8.2.0799 +Problem: Build fails if snprintf is not available. +Solution: Use vim_snprintf(). +Files: src/libvterm/src/state.c + +Patch 8.2.0800 +Problem: Errors from failing test are unclear. +Solution: Include text where parsing failed. +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.2.0801 +Problem: Terminal test fails on Mac. +Solution: Concatenate OSC pieces. +Files: src/terminal.c + +Patch 8.2.0802 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 759 - 762. +Files: src/terminal.c, src/libvterm/doc/seqs.txt, + src/libvterm/include/vterm.h, src/libvterm/src/pen.c, + src/libvterm/src/screen.c, src/libvterm/src/state.c, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h, + src/libvterm/t/harness.c, src/libvterm/t/12state_scroll.test + +Patch 8.2.0803 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revisions 764 - 767 +Files: src/Makefile, src/libvterm/src/parser.c, + src/libvterm/src/vterm_internal.h, src/libvterm/t/02parser.test, + src/libvterm/t/run-test.pl, src/libvterm/find-wide-chars.pl, + src/libvterm/src/fullwidth.inc + +Patch 8.2.0804 +Problem: Libvterm code lags behind the upstream version. +Solution: Include revision 727, but add the index instead of switching + between RGB and indexed. +Files: src/terminal.c, src/term.c, src/libvterm/include/vterm.h, + src/libvterm/src/pen.c, src/libvterm/src/screen.c, + src/libvterm/src/vterm_internal.h, + src/libvterm/t/30state_pen.test, + src/libvterm/t/harness.c, src/libvterm/src/state.c, + src/libvterm/t/26state_query.test, + src/libvterm/t/64screen_pen.test + +Patch 8.2.0805 +Problem: Terminal key codes test fails on some systems. +Solution: Skip keypad 3 and 9. (Yegappan Lakshmanan, closes #6070) +Files: src/testdir/test_terminal.vim + +Patch 8.2.0806 +Problem: using "func!" after vim9script gives confusing error. +Solution: Give E477. (closes #6107) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0807 +Problem: Cannot easily restore a mapping. +Solution: Add mapset(). +Files: runtime/doc/eval.txt, src/map.c, src/proto/map.pro, src/evalfunc.c + src/testdir/test_maparg.vim + +Patch 8.2.0808 +Problem: Not enough testing for the terminal window. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6069) Fix memory + leak. +Files: src/testdir/test_gui.vim, src/testdir/test_terminal.vim, + src/terminal.c + +Patch 8.2.0809 +Problem: Build failure with small features. (Tony Mechelynck) +Solution: Move "expr" inside #ifdef. +Files: src/map.c + +Patch 8.2.0810 +Problem: Error when appending "tagfile" to 'wildoptions'. +Solution: use flags P_ONECOMMA and P_NODUP. (Dmitri Vereshchagin, + closes #6105) +Files: src/optiondefs.h, src/testdir/test_options.vim + +Patch 8.2.0811 +Problem: Terminal keycode test is flaky. +Solution: Use WaitForAssert() +Files: src/testdir/test_terminal.vim + +Patch 8.2.0812 +Problem: mapset() does not properly handle <> notation. +Solution: Convert <> codes. (closes #6116) +Files: src/map.c, src/testdir/test_maparg.vim + +Patch 8.2.0813 +Problem: libvterm code is slightly different from upstream. +Solution: Use upstream text to avoid future merge problems. Mainly comment + style changes. +Files: src/libvterm/include/vterm.h, src/libvterm/src/rect.h, + src/libvterm/src/utf8.h, src/libvterm/src/vterm_internal.h, + src/libvterm/src/encoding.c, src/libvterm/src/keyboard.c, + src/libvterm/src/mouse.c, src/libvterm/src/parser.c, + src/libvterm/src/pen.c, src/libvterm/src/screen.c, + src/libvterm/src/state.c, src/libvterm/src/unicode.c, + src/libvterm/src/vterm.c + +Patch 8.2.0814 +Problem: Clang warning for implicit conversion. +Solution: Add type cast. (Dominique Pell茅, closes #6124) +Files: src/evalfunc.c + +Patch 8.2.0815 +Problem: maparg() does not provide enough information for mapset(). +Solution: Add "lhsraw" and "lhsrawalt" items. Drop "simplified" +Files: src/map.c, runtime/doc/eval.txt, src/testdir/test_maparg.vim + +Patch 8.2.0816 +Problem: Terminal test fails when compiled with Athena. +Solution: Do give an error when the GUI is not running. (hint by Dominique + Pell茅, closes #5928, closes #6132) +Files: src/globals.h, src/gui.c, src/term.c, src/channel.c, + src/testdir/test_terminal.vim + +Patch 8.2.0817 +Problem: Not enough memory allocated when converting string with special + character. +Solution: Reserve space for modifier code. (closes #6130) +Files: src/eval.c, src/testdir/test_functions.vim + +Patch 8.2.0818 +Problem: Vim9: using a discovery phase doesn't work well. +Solution: Remove the discovery phase, instead compile a function only when + it is used. Add :defcompile to compile def functions earlier. +Files: runtime/doc/vim9.txt, src/vim9script.c, src/structs.h, + src/userfunc.c, src/proto/userfunc.pro, src/eval.c, + src/evalvars.c, src/proto/evalvars.pro, src/vim9compile.c, + src/proto/vim9compile.pro, src/vim9execute.c, src/ex_cmds.h, + src/ex_docmd.c, src/ex_cmdidxs.h, src/vim.h, src/testdir/vim9.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.0819 +Problem: Compiler warning for unused variable. +Solution: Remove the variable. +Files: src/evalvars.c + +Patch 8.2.0820 +Problem: Vim9: function type isn't set until compiled. +Solution: Set function type early. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.0821 +Problem: Vim9: memory leak in expr test. +Solution: Do not decrement the length of the list of functions if the + current function is not at the end. +Files: src/vim9compile.c + +Patch 8.2.0822 +Problem: Vim9: code left over from discovery phase. +Solution: Remove the dead code. +Files: src/scriptfile.c, src/proto/scriptfile.pro, src/ex_cmds.h, + src/evalvars.c, src/proto/evalvars.pro, src/ex_docmd.c + +Patch 8.2.0823 +Problem: Vim9: script reload test is disabled. +Solution: Compile a function in the context of the script where it was + defined. Set execution stack for compiled function. Add a test + that an error is reported for the right file/function. +Files: src/vim9compile.c, src/vim9execute.c, src/scriptfile.c, + src/proto/scriptfile.pro, src/userfunc.c, src/globals.h, + src/structs.h, src/ex_docmd.c, src/ex_eval.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0824 (after 8.2.0817) +Problem: Still not enough memory allocated when converting string with + special character. +Solution: Reserve space for expanding K_SPECIAL. (closes #6130) +Files: src/eval.c, src/testdir/test_functions.vim + +Patch 8.2.0825 +Problem: def_function() may return pointer that was freed. +Solution: Set "fp" to NULL after freeing it. +Files: src/userfunc.c + +Patch 8.2.0826 +Problem: Vim9: crash in :defcompile. +Solution: Restart the loop after a call to compile_def_function() caused the + hash table to resize. +Files: src/userfunc.c + +Patch 8.2.0827 +Problem: Vim9: crash in :defcompile. +Solution: Fix off-by-one error. +Files: src/userfunc.c + +Patch 8.2.0828 +Problem: Travis: regexp pattern doesn't work everywhere. +Solution: Use [:blank:] instead of \b. (Ozaki Kiichi, closes #6146) +Files: .travis.yml, ci/config.mk.clang.sed, ci/config.mk.gcc.sed, + ci/config.mk.sed, src/if_ruby.c + +Patch 8.2.0829 +Problem: filter() may give misleading error message. +Solution: Also mention Blob as an allowed argument. +Files: src/list.c, src/testdir/test_filter_map.vim + +Patch 8.2.0830 +Problem: Motif: can't map "!". (Ben Jackson) +Solution: Remove the shift modifier if it's already included in the key. + (closes #6147) +Files: src/gui_x11.c + +Patch 8.2.0831 +Problem: Compiler warnings for integer sizes. +Solution: Add type casts. (Mike Williams) +Files: src/libvterm/src/pen.c, src/terminal.c + +Patch 8.2.0832 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Add initial value. +Files: src/map.c + +Patch 8.2.0833 +Problem: Mapping <C-bslash> doesn't work in the GUI. +Solution: Reset seenModifyOtherKeys when starting the GUI. (closes #6150) +Files: src/gui.c + +Patch 8.2.0834 +Problem: :drop command in terminal popup causes problems. +Solution: Check for using a popup window. (closes #6151) +Files: src/ex_cmds.c, src/testdir/test_popupwin.vim + +Patch 8.2.0835 +Problem: Motif: mapping <C-bslash> still doesn't work. +Solution: Accept CSI for K_SPECIAL. Do not apply CTRL to the character + early. (closes #6150) +Files: src/getchar.c, src/gui_x11.c + +Patch 8.2.0836 +Problem: Not all :cdo output is visible. +Solution: Reset 'shortmess' temporarily. (Yegappan Lakshmanan, closes #6155) +Files: src/ex_cmds2.c, src/testdir/test_cdo.vim + +Patch 8.2.0837 +Problem: Compiler warning for value set but not used. +Solution: Move variable inside #ifdef. +Files: src/channel.c + +Patch 8.2.0838 +Problem: MS-Windows: compiler warning for uninitialized variables. +Solution: Initialize variables. +Files: src/screen.c + +Patch 8.2.0839 +Problem: Dropping modifier when putting a character back in typeahead. +Solution: Add modifier to ins_char_typebuf(). (closes #6158) +Files: src/getchar.c, src/proto/getchar.pro, src/message.c, src/normal.c, + src/terminal.c, src/globals.h, src/testdir/test_messages.vim + +Patch 8.2.0840 +Problem: Search match count wrong when only match is in fold. +Solution: Update search stats when in a closed fold. (Christian Brabandt, + closes #6160, closes #6152) +Files: src/search.c, src/testdir/dumps/Test_searchstat_3.dump, + src/testdir/test_search_stat.vim + +Patch 8.2.0841 +Problem: 'verbose' value 16 causes duplicate output. +Solution: Combine levels 15 and 16 into one message. (Christian Brabandt, + closes #6153) +Files: runtime/doc/options.txt, src/ex_docmd.c + +Patch 8.2.0842 (after 8.2.0837) +Problem: MS-Windows: channel tests fail. +Solution: Adjust #ifdefs. (closes #6162) +Files: src/channel.c + +Patch 8.2.0843 +Problem: Filetype elm not detected. +Solution: Recognize *.elm files. (closes #6157) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0844 +Problem: Text properties crossing lines not handled correctly. +Solution: When saving for undo include an extra line when needed and do not + adjust properties when undoing. (Axel Forsman, closes #5875) +Files: src/memline.c, src/proto/memline.pro, src/undo.c, src/structs.h + +Patch 8.2.0845 +Problem: Text properties crossing lines not handled correctly. +Solution: When joining lines merge text properties if possible. + (Axel Forsman, closes #5839, closes #5683) +Files: src/testdir/test_textprop.vim, src/memline.c, src/ops.c, + src/proto/textprop.pro, src/textprop.c, + src/testdir/dumps/Test_textprop_01.dump + +Patch 8.2.0846 +Problem: Build failure with small features. +Solution: Add #ifdef. +Files: src/undo.c + +Patch 8.2.0847 +Problem: Typval related code is spread out. +Solution: Move code to new typval.c file. (Yegappan Lakshmanan, closes #6093) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/eval.c, src/evalfunc.c, src/globals.h, src/proto.h, + src/proto/eval.pro, src/proto/evalfunc.pro, src/proto/typval.pro, + src/typval.c + +Patch 8.2.0848 +Problem: MS-Windows: the Windows terminal code has some flaws. +Solution: Do not redraw the right edge of the screen. Remove the background + color trick. Flush the screen output buffer often. (Nobuhiro + Takasaki, #5546) +Files: src/os_win32.c, src/proto/os_win32.pro, src/term.c + +Patch 8.2.0849 +Problem: BeOS code is not maintained and probably unused. +Solution: Remove the BeOS code. (Emir Sar谋, closes #5817) +Files: Filelist, src/Makefile, src/configure.ac, src/auto/configure, + src/evalfunc.c, src/normal.c, src/os_beos.c, src/os_beos.h, + src/os_beos.rsrc, src/os_unix.c, src/proto.h, + src/proto/os_beos.pro, src/pty.c, src/screen.c, src/term.c, + src/testdir/test_functions.vim, src/ui.c, src/vim.h + +Patch 8.2.0850 +Problem: MS-Windows: exepath() works differently from cmd.exe. +Solution: Make exepath() work better on MS-Windows. (closes #6115) +Files: runtime/doc/eval.txt, src/os_win32.c, + src/testdir/test_functions.vim + +Patch 8.2.0851 (after 8.2.0833) +Problem: Can't distinguish <M-a> from accented "a" in the GUI. +Solution: Use another way to make mapping <C-bslash> work. (closes #6163) +Files: src/gui.c, src/gui_gtk_x11.c, src/getchar.c + +Patch 8.2.0852 +Problem: Cannot map CTRL-S on some systems. +Solution: Do not use CTRL-S for flow control. +Files: src/os_unix.c + +Patch 8.2.0853 +Problem: ml_delete() often called with FALSE argument. +Solution: Use ml_delete_flags(x, ML_DEL_MESSAGE) when argument is TRUE. +Files: src/buffer.c, src/change.c, src/diff.c, src/evalbuffer.c, + src/ex_cmds.c, src/ex_docmd.c, src/fileio.c, src/if_lua.c, + src/if_mzsch.c, src/if_ruby.c, src/if_tcl.c, src/normal.c, + src/popupmenu.c, src/popupwin.c, src/quickfix.c, src/spell.c, + src/terminal.c, src/if_perl.xs, src/if_py_both.h, src/memline.c, + src/proto/memline.pro + +Patch 8.2.0854 +Problem: Xxd cannot show offset as a decimal number. +Solution: Add the "-d" flag. (Aapo Rantalainen, closes #5616) +Files: src/testdir/test_xxd.vim, src/xxd/xxd.c + +Patch 8.2.0855 +Problem: GUI tests fail because the test doesn't use a modifier. +Solution: Add "\{xxx}" to be able to encode a modifier. +Files: runtime/doc/eval.txt, src/typval.c, src/misc2.c, src/vim.h, + src/proto/misc2.pro, src/gui_mac.c, src/option.c, src/highlight.c, + src/term.c, src/testdir/test_backspace_opt.vim, + src/testdir/test_mapping.vim, src/testdir/test_messages.vim + +Patch 8.2.0856 (after 8.2.0852) +Problem: CTRL-S stops output. +Solution: Invert the IXON flag. (closes #6166) +Files: src/os_unix.c + +Patch 8.2.0857 +Problem: GTK cell height can be a pixel too much. +Solution: Subtract 3 instead of 1 when rounding. (closes #6168) +Files: src/gui_gtk_x11.c + +Patch 8.2.0858 +Problem: Not easy to require Lua modules. +Solution: Improve use of Lua path. (Prabir Shrestha, closes #6098) +Files: Filelist, src/if_lua.c, src/optionstr.c, src/proto/if_lua.pro, + src/testdir/test_lua.vim, + src/testdir/testluaplugin/lua/testluaplugin/hello.lua, + src/testdir/testluaplugin/lua/testluaplugin/init.lua + +Patch 8.2.0859 +Problem: No Turkish translation of the manual. +Solution: Add Turkish translations. (Emir Sar谋, closes #5641) +Files: Filelist, runtime/doc/Makefile, runtime/doc/evim-tr.1, + runtime/doc/evim-tr.UTF-8.1, runtime/doc/vim-tr.1, + runtime/doc/vim-tr.UTF-8.1, runtime/doc/vimdiff-tr.1, + runtime/doc/vimdiff-tr.UTF-8.1, runtime/doc/vimtutor-tr.1, + runtime/doc/vimtutor-tr.UTF-8.1, src/Makefile + +Patch 8.2.0860 +Problem: Cannot use CTRL-A and CTRL-X on unsigned numbers. +Solution: Add "unsigned" to 'nrformats'. (Naruhiko Nishino, closes #6144) +Files: runtime/doc/options.txt, src/ops.c, src/optionstr.c, + src/testdir/test_increment.vim + +Patch 8.2.0861 +Problem: Cannot easily get all the current marks. +Solution: Add getmarklist(). (Yegappan Lakshmanan, closes #6032) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/mark.c, src/proto/mark.pro, src/testdir/test_marks.vim + +Patch 8.2.0862 +Problem: ":term ++curwin" makes the current buffer hidden. (Harm te + Hennepe) +Solution: Do not hide the current buffer. (closes #6170) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.0863 +Problem: Cannot set a separate color for underline/undercurl. +Solution: Add the t_AU and t_8u termcap codes. (Timur Celik, closes #6011) +Files: runtime/doc/syntax.txt, runtime/doc/term.txt, src/globals.h, + src/highlight.c, src/optiondefs.h, src/proto/term.pro, + src/screen.c, src/structs.h, src/term.c, src/term.h, + src/testdir/test_options.vim + +Patch 8.2.0864 +Problem: Pragmas are indented all the way to the left. +Solution: Add an option to indent pragmas like normal code. (Max Rumpf, + closes #5468) +Files: runtime/doc/indent.txt, src/cindent.c, src/structs.h, + src/testdir/test_cindent.vim + +Patch 8.2.0865 +Problem: Syntax foldlevel is taken from the start of the line. +Solution: Add ":syn foldlevel" to be able to use the minimal foldlevel in + the line. (Brad King, closes #6087) +Files: runtime/doc/syntax.txt, src/structs.h, src/syntax.c, + src/testdir/test_syntax.vim + +Patch 8.2.0866 +Problem: Not enough tests for buffer writing. +Solution: Add more tests. Use CheckRunVimInTerminal in more places. + (Yegappan Lakshmanan, closes #6167) +Files: src/testdir/test_arglist.vim, src/testdir/test_match.vim, + src/testdir/test_messages.vim, src/testdir/test_netbeans.py, + src/testdir/test_netbeans.vim, src/testdir/test_search.vim, + src/testdir/test_signals.vim, src/testdir/test_signs.vim, + src/testdir/test_startup.vim, src/testdir/test_startup_utf8.vim, + src/testdir/test_syntax.vim, src/testdir/test_tabpage.vim, + src/testdir/test_timers.vim, src/testdir/test_vimscript.vim, + src/testdir/test_writefile.vim + +Patch 8.2.0867 +Problem: Using \{xxx} for encoding a modifier is not nice. +Solution: Use \<*xxx> instead, since it's the same as \<xxx> but producing a + different code. +Files: runtime/doc/eval.txt, src/typval.c, src/misc2.c, src/vim.h, + src/testdir/test_backspace_opt.vim, src/testdir/test_mapping.vim, + src/testdir/test_messages.vim + +Patch 8.2.0868 +Problem: trim() always trims both ends. +Solution: Add an argument to only trim the beginning or end. (Yegappan + Lakshmanan, closes #6126) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.2.0869 +Problem: It is not possible to customize the quickfix window contents. +Solution: Add 'quickfixtextfunc'. (Yegappan Lakshmanan, closes #5465) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/quickfix.txt, src/option.h, src/optiondefs.h, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.0870 +Problem: MS-Windows: Control keys don't work in the GUI. +Solution: Don't set seenModifyOtherKeys for now. (Yasuhiro Matsumoto, + closes #6175) +Files: src/gui.c + +Patch 8.2.0871 +Problem: Cannot use getmarklist() as a method. +Solution: Make getmarklist() work as a method. Add one to the column + number to match getpos(). (Yegappan Lakshmanan, closes #6176) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/mark.c, + src/testdir/test_marks.vim + +Patch 8.2.0872 +Problem: XIM code is mixed with multibyte code. +Solution: Move the XIM code to a separate file. (Yegappan Lakshmanan, + closes #6177) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/gui_xim.c, + src/mbyte.c, src/proto.h, src/proto/gui_xim.pro, + src/proto/mbyte.pro + +Patch 8.2.0873 +Problem: A .jl file can be sawfish (lisp) or Julia. +Solution: Do not recognize *.jl as lisp, since it might be Julia. + (closes #6178) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0874 +Problem: Signals test is a bit flaky. +Solution: Flush the XautoOut file. Delete files that may be left behind + from a failure. (Dominique Pell茅, closes #6179) +Files: src/testdir/test_signals.vim + +Patch 8.2.0875 +Problem: Getting attributes for directory entries is slow. +Solution: Add readdirex(). (Ken Takata, closes #5619) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/fileio.c, src/filepath.c, src/proto/fileio.pro, + src/proto/filepath.pro, src/testdir/test_functions.vim + +Patch 8.2.0876 +Problem: :pwd does not give a hint about the scope of the directory +Solution: Make ":verbose pwd" show the scope. (Takuya Fujiwara, closes #5469) +Files: runtime/doc/editing.txt, src/ex_docmd.c, src/testdir/test_cd.vim + +Patch 8.2.0877 +Problem: Cannot get the search statistics. +Solution: Add the searchcount() function. (Fujiwara Takuya, closes #4446) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/macros.h, + src/proto/search.pro, src/search.c, + src/testdir/test_search_stat.vim + +Patch 8.2.0878 +Problem: No reduce() function. +Solution: Add a reduce() function. (closes #5481) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/globals.h, src/list.c, + src/proto/list.pro, src/testdir/test_listdict.vim + +Patch 8.2.0879 +Problem: Compiler warning for unused function argument. +Solution: Add UNUSED. +Files: src/search.c + +Patch 8.2.0880 (after 8.2.0877) +Problem: Leaking memory when using searchcount(). +Solution: Free the last used search pattern. +Files: src/search.c + +Patch 8.2.0881 +Problem: Compiler warning for argument type. +Solution: Add type cast. (Mike Williams) +Files: src/ops.c + +Patch 8.2.0882 +Problem: Leaking memory when using reduce(). +Solution: Free the intermediate value. +Files: src/list.c + +Patch 8.2.0883 +Problem: Memory leak in test 49. +Solution: Free "sfile" from the exception. +Files: src/ex_docmd.c + +Patch 8.2.0884 +Problem: Searchcount() test fails on slower systems. +Solution: Set a longer timeout. +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.2.0885 +Problem: "make shadow" does not link new lua test dir. +Solution: Also link testdir/testluaplugin. (Elimar Riesebieter) +Files: src/Makefile + +Patch 8.2.0886 +Problem: Cannot use octal numbers in scriptversion 4. +Solution: Add the "0o" notation. (Ken Takata, closes #5304) +Files: runtime/doc/eval.txt, src/charset.c, src/evalfunc.c, + src/testdir/test_eval_stuff.vim, src/testdir/test_functions.vim, + src/vim.h + +Patch 8.2.0887 +Problem: Searchcount().exact_match is 1 right after a match. +Solution: Use LT_POS() instead of LTOREQ_POS(). (closes #6189) +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.2.0888 +Problem: Readdirex() returns size -2 for a directory. +Solution: Add missing "else". (Ken Takata, closes #6185) +Files: src/fileio.c, src/testdir/test_functions.vim + +Patch 8.2.0889 +Problem: Using old style comments. +Solution: Use // comments. (Yegappan Lakshmanan, closes #6190) +Files: src/gui_xim.c + +Patch 8.2.0890 +Problem: No color in terminal window when 'termguicolors' is set. +Solution: Clear the underline color. (closes #6186) +Files: src/highlight.c + +Patch 8.2.0891 +Problem: Clang warns for invalid conversion. +Solution: Use zero instead of INVALCOLOR. +Files: src/highlight.c + +Patch 8.2.0892 +Problem: Ubsan warns for undefined behavior. +Solution: Use unsigned instead of signed variable. (Dominique Pell茅, + closes #6193) +Files: src/regexp_nfa.c + +Patch 8.2.0893 +Problem: Assert_equalfile() does not take a third argument. +Solution: Implement the third argument. (Gary Johnson) +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, src/evalfunc.c, + src/testdir/test_assert.vim, src/testing.c + +Patch 8.2.0894 +Problem: :mkspell can take very long if the word count is high. +Solution: Use long to avoid negative numbers. Increase the limits by 20% if + the compression did not have effect. +Files: src/spellfile.c + +Patch 8.2.0895 +Problem: :mkspell output does not mention the tree type. +Solution: Back out increasing the limits, it has no effect. Mention the + tree being compressed. Only give a message once per second. +Files: src/spellfile.c + +Patch 8.2.0896 +Problem: Crash when calling searchcount() with a string. +Solution: Check the argument is a dict. (closes #6192) +Files: src/search.c, src/testdir/test_search_stat.vim + +Patch 8.2.0897 +Problem: List of functions in patched version is outdated. +Solution: Update the function lists only. +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt + +Patch 8.2.0898 +Problem: Missing help for a function goes unnoticed. +Solution: Add a test. (Gary Johnson) +Files: src/testdir/test_function_lists.vim, src/testdir/Make_all.mak + +Patch 8.2.0899 +Problem: Assert_equalfile() does not give a hint about the difference. +Solution: Display the last seen text. +Files: src/testing.c, src/testdir/test_assert.vim + +Patch 8.2.0900 +Problem: Function list test fails on MS-Windows. +Solution: Make sure the fileformat is "unix" +Files: src/testdir/test_function_lists.vim + +Patch 8.2.0901 +Problem: Formatting CJK text isn't optimal. +Solution: Properly break CJK lines. (closes #3875) +Files: runtime/doc/change.txt, src/mbyte.c, src/ops.c, src/option.h, + src/proto/mbyte.pro, src/testdir/Make_all.mak, src/textformat.c, + src/testdir/test_cjk_linebreak.vim + +Patch 8.2.0902 +Problem: Using searchcount() in 'statusline' causes an error. +Solution: Avoid saving/restoring the search pattern recursively. + (closes #6194) +Files: src/search.c, src/testdir/test_search_stat.vim, + src/testdir/dumps/Test_searchstat_4.dump + +Patch 8.2.0903 +Problem: comparing WINVER does not work correctly. +Solution: Use arithmetic expansion. (Ozaki Kiichi, closes #6197) +Files: src/Make_cyg_ming.mak + +Patch 8.2.0904 +Problem: Assuming modifyOtherKeys for rhs of mapping. +Solution: Ignore seenModifyOtherKeys for mapped characters. (closes #6200) +Files: src/getchar.c, src/testdir/test_gui.vim + +Patch 8.2.0905 +Problem: Test coverage could be better. +Solution: Add a couple of tests. (Dominique Pell茅, closes #6202) +Files: src/testdir/test_cmdline.vim, src/testdir/test_ga.vim + +Patch 8.2.0906 +Problem: When setting 'termguicolors' SpellBad is no longer red. +Solution: Only use the RGB guisp color for cterm when using the "underline" + or "undercurl" attributes to avoid the background color to be + cleared. Also make t_8u empty when the termresponse indicates a + real xterm. (closes #6207) +Files: src/highlight.c, src/term.c + +Patch 8.2.0907 +Problem: When using :global clipboard isn't set correctly. +Solution: Set "clip_unnamed_saved" instead of "clip_unnamed". (Christian + Brabandt, closes #6203, closes #6198) +Files: src/clipboard.c, src/testdir/test_global.vim + +Patch 8.2.0908 +Problem: Crash when changing the function table while listing it. +Solution: Bail out when the function table changes. (closes #6209) +Files: src/userfunc.c, src/testdir/test_timers.vim + +Patch 8.2.0909 +Problem: Cannot go back to the previous local directory. +Solution: Add "tcd -" and "lcd -". (Yegappan Lakshmanan, closes #4362) +Files: runtime/doc/editing.txt, src/filepath.c, src/ex_docmd.c, + src/structs.h, src/testdir/test_cd.vim, src/window.c + +Patch 8.2.0910 +Problem: Vim is not reproducibly buildable. +Solution: Use the $SOURCE_DATE_EPOCH environment variable in configure. + (James McCoy, closes #513) Give a warning about using it. +Files: src/config.h.in, src/config.mk.in, src/configure.ac, + src/auto/configure, src/version.c, src/Makefile + +Patch 8.2.0911 +Problem: Crash when opening a buffer for the cmdline window fails. (Chris + Barber) +Solution: Check do_ecmd() succeeds. Reset got_int if "q" was used at the + more prompt. (closes #6211) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_cmdwin_interrupted.dump + +Patch 8.2.0912 +Problem: A few test cases for CJK formatting are disabled. +Solution: Fix the tests and enable them. (closes #6212) +Files: src/testdir/test_cjk_linebreak.vim + +Patch 8.2.0913 +Problem: Code for resetting v:register is duplicated. +Solution: Add reset_reg_var(). +Files: src/evalvars.c, src/proto/evalvars.pro, src/main.c, src/normal.c + +Patch 8.2.0914 +Problem: MS-Windows: cannot specify a "modified by" text. +Solution: Add MODIFIED_BY in the MSVC build file. (Chen Lei, closes #1275) +Files: src/Make_mvc.mak + +Patch 8.2.0915 +Problem: Search() cannot skip over matches like searchpair() can. +Solution: Add an optional "skip" argument. (Christian Brabandt, closes #861) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/testdir/test_syntax.vim, + src/structs.h, src/evalvars.c, src/proto/evalvars.pro + +Patch 8.2.0916 +Problem: Mapping with partly modifyOtherKeys code does not work. +Solution: If there is no mapping with a separate modifier include the + modifier in the key and then try mapping again. (closes #6200) +Files: src/getchar.c, src/proto/getchar.pro, src/edit.c, src/term.c, + src/proto/term.pro, src/testdir/test_termcodes.vim + +Patch 8.2.0917 +Problem: Quickfix entries do not support a "note" type. +Solution: Add support for "note". (partly by Yegappan Lakshmanan, + closes #5527, closes #6216) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.2.0918 +Problem: Duplicate code for evaluating expression argument. +Solution: Merge the code and make the use more flexible. +Files: src/evalfunc.c, src/eval.c, src/proto/eval.pro, src/evalvars.c, + src/proto/evalvars.pro, src/structs.h + +Patch 8.2.0919 +Problem: Merging modifier for modifyOtherKeys is done twice. +Solution: Remove the merging done in vgetc(). +Files: src/getchar.c, src/ex_getln.c + +Patch 8.2.0920 +Problem: Writing viminfo fails with a circular reference. +Solution: Use copyID to detect the cycle. (closes #6217) +Files: src/testdir/test_viminfo.vim, src/viminfo.c + +Patch 8.2.0921 +Problem: CTRL-W T in cmdline window causes trouble. +Solution: Disallow CTRL-W T in the cmdline window. Add more tests. + (Naruhiko Nishino, closes #6219) +Files: src/testdir/test_cmdline.vim, src/window.c + +Patch 8.2.0922 +Problem: Search test fails. +Solution: Remove failure tests for calls that no longer fail. +Files: src/testdir/test_search.vim + +Patch 8.2.0923 +Problem: Cmdline test is slow. +Solution: Use WaitForAssert(). +Files: src/testdir/test_cmdline.vim + +Patch 8.2.0924 +Problem: Cannot save and restore a register properly. +Solution: Add getreginfo() and make setreg() accept a dictionary. (Andy + Massimino, closes #3370) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/proto/register.pro, src/register.c, + src/testdir/test_eval_stuff.vim, src/testdir/test_registers.vim + +Patch 8.2.0925 +Problem: Getcompletion() does not return command line arguments. +Solution: Add the "cmdline" option. (Shougo, closes #1140) +Files: runtime/doc/eval.txt, src/cmdexpand.c, + src/testdir/test_cmdline.vim + +Patch 8.2.0926 +Problem: Cmdline test fails on Appveyor. +Solution: Add CR to the commands. (Naruhiko Nishino, closes #6220) +Files: src/testdir/test_cmdline.vim + +Patch 8.2.0927 +Problem: Some sshconfig and ssdhconfig files are not recognized. +Solution: Add filetype patterns. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0928 +Problem: Many type casts are used for vim_strnsave(). +Solution: Make the length argument size_t instead of int. (Ken Takata, + closes #5633) Remove some type casts. +Files: src/misc2.c, src/proto/misc2.pro, src/autocmd.c, src/channel.c, + src/cmdexpand.c, src/dict.c, src/diff.c, src/digraph.c, + src/eval.c, src/evalfunc.c, src/highlight.c, src/syntax.c + +Patch 8.2.0929 +Problem: v:register is not cleared after an operator was executed. +Solution: Clear v:register after finishing an operator (Andy Massimino, + closes #5305) +Files: src/normal.c, src/testdir/test_registers.vim + +Patch 8.2.0930 +Problem: Script filetype detection trips over env -S argument. +Solution: Remove "-S" and "--ignore-environment". (closes #5013) + Add tests. +Files: runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.2.0931 +Problem: Some remarks about BeOS remain. +Solution: Remove BeOS remarks from the help and other files. (Emir Sar谋, + closes #6221) +Files: READMEdir/README_extra.txt, runtime/doc/options.txt, + runtime/doc/os_beos.txt, runtime/doc/os_vms.txt, + runtime/doc/vi_diff.txt, src/INSTALL + +Patch 8.2.0932 +Problem: Misspelling spelllang. +Solution: Add an "l". (Dominique Pell茅) +Files: src/optionstr.c, src/proto/spell.pro, src/spell.c + +Patch 8.2.0933 +Problem: 'quickfixtextfunc' does not get window ID of location list. +Solution: Add "winid" to the dict argument. (Yegappan Lakshmanan, + closes #6222) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.2.0934 +Problem: Running lhelpgrep twice in a help window doesn't jump to the help + topic. +Solution: Check whether any window with the location list is present. + (Yegappan Lakshmanan, closes #6215) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.0935 +Problem: Flattening a list with existing code is slow. +Solution: Add flatten(). (Mopp, closes #3676) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/list.c, src/proto/list.pro, src/testdir/Make_all.mak, + src/testdir/test_flatten.vim + +Patch 8.2.0936 +Problem: Some terminals misinterpret the code for getting cursor style. +Solution: Send a sequence to the terminal and check the result. (IWAMOTO + Kouichi, closes #2126) Merged with current code. +Files: src/main.c, src/term.c, src/proto/term.pro, + src/testdir/term_util.vim, src/testdir/test_quickfix.vim, + src/testdir/test_terminal.vim, src/testdir/test_startup_utf8.vim, + src/testdir/dumps/Test_balloon_eval_term_01.dump, + src/testdir/dumps/Test_balloon_eval_term_01a.dump, + src/testdir/dumps/Test_balloon_eval_term_02.dump, + src/testdir/dumps/Test_terminal_all_ansi_colors.dump + +Patch 8.2.0937 +Problem: Asan failure in the flatten() test. +Solution: Free the flattened list. +Files: src/list.c + +Patch 8.2.0938 +Problem: NFA regexp uses tolower() to compare ignore-case. (Thayne McCombs) +Solution: Use utf_fold() when possible. (ref. neovim #12456) +Files: src/macros.h, src/diff.c, src/regexp_nfa.c, + src/testdir/test_regexp_utf8.vim + +Patch 8.2.0939 +Problem: checking for term escape sequences is long and confusing +Solution: Refactor code into separate functions. +Files: src/term.c + +Patch 8.2.0940 (after 8.2.0939) +Problem: Build failure with tiny features. +Solution: Add #ifdef. Add UNUSED. A bit more cleaning up. +Files: src/term.c + +Patch 8.2.0941 +Problem: Detecting terminal properties is unstructured. +Solution: Add a table with terminal properties. Set properties when a + terminal is detected. +Files: src/term.c + +Patch 8.2.0942 +Problem: Expanding to local dir after homedir keeps "~/". +Solution: Adjust modify_fname(). (Christian Brabandt, closes #6205, + closes #5979) +Files: src/filepath.c, src/testdir/test_fnamemodify.vim + +Patch 8.2.0943 +Problem: Displaying ^M or ^J depends on current buffer. +Solution: Pass the displayed buffer to transchar(). (closes #6225) +Files: src/drawline.c, src/charset.c, src/proto/charset.pro, + src/ex_cmds.c, src/gui_beval.c, src/message.c, + src/testdir/test_display.vim, + src/testdir/dumps/Test_display_unprintable_01.dump, + src/testdir/dumps/Test_display_unprintable_02.dump + +Patch 8.2.0944 +Problem: Xxd test leaves file behind. +Solution: Delete the file "XXDfile". (Christian Brabandt, closes #6228) +Files: src/testdir/test_xxd.vim + +Patch 8.2.0945 +Problem: Cannot use "z=" when 'spell' is off. +Solution: Make "z=" work even when 'spell' is off. (Christian Brabandt, + Gary Johnson, closes #6227) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/spell.c, + src/spellsuggest.c, src/testdir/test_spell.vim, src/globals.h + +Patch 8.2.0946 +Problem: Cannot use "q" to cancel a number prompt. +Solution: Recognize "q" instead of ignoring it. +Files: src/misc1.c, src/testdir/test_functions.vim + +Patch 8.2.0947 +Problem: Readdirex() doesn't handle broken link properly. +Solution: Small fixes to readdirex(). (Christian Brabandt, closes #6226, + closes #6213) +Files: src/fileio.c, src/testdir/test_functions.vim + +Patch 8.2.0948 +Problem: Spell test fails. +Solution: Adjust expected text of the prompt. +Files: src/testdir/test_spell.vim + +Patch 8.2.0949 +Problem: Strptime() does not use DST. +Solution: Set the tm_isdst field to -1. (Tom谩拧 Janou拧ek, closes #6230) +Files: src/time.c, src/testdir/test_functions.vim + +Patch 8.2.0950 +Problem: Tagjump test fails. +Solution: Adjust expected text of the prompt. +Files: src/testdir/test_tagjump.vim + +Patch 8.2.0951 +Problem: Search stat test has leftover from debugging. +Solution: Remove line that writes a file. (Christian Brabandt, closes #6224) +Files: src/testdir/test_search_stat.vim + +Patch 8.2.0952 +Problem: No simple way to interrupt Vim. +Solution: Add the SigUSR1 autocommand, triggered by SIGUSR1. (Jacob Hayes, + closes #1718) +Files: runtime/doc/autocmd.txt, src/vim.h, src/autocmd.c, src/getchar.c, + src/globals.h, src/os_unix.c, src/testdir/test_autocmd.vim + +Patch 8.2.0953 +Problem: Spell checking doesn't work for CamelCased words. +Solution: Add the "camel" value in the new option 'spelloptions'. + (closes #1235) +Files: runtime/doc/options.txt, runtime/doc/spell.txt, src/optiondefs.h, + src/option.h, src/option.c, src/buffer.c, src/optionstr.c, + src/testdir/gen_opt_test.vim, src/testdir/test_spell.vim + +Patch 8.2.0954 +Problem: Not all desktop files are recognized. +Solution: Add the *.directory pattern. (Eisuke Kawashima, closes #3317) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0955 (after 8.2.0953) +Problem: Build fails. +Solution: Add missing struct change. +Files: src/structs.h + +Patch 8.2.0956 (after 8.2.0953) +Problem: Spell test fails. +Solution: Add missing change the spell checking. +Files: src/spell.c + +Patch 8.2.0957 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize one variable. +Files: src/spell.c + +Patch 8.2.0958 +Problem: Not sufficient testing for buffer writing. +Solution: Add a few tests. (Yegappan Lakshmanan, closes #6238) +Files: src/testdir/test_backup.vim, src/testdir/test_writefile.vim + +Patch 8.2.0959 +Problem: Using 'quickfixtextfunc' is a bit slow. +Solution: Process a list of entries. (Yegappan Lakshmanan, closes #6234) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.2.0960 +Problem: Cannot use :import in legacy Vim script. +Solution: Support :import in any Vim script. +Files: src/vim9script.c, src/evalvars.c, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.0961 +Problem: MS-Windows: no completion for locales. +Solution: Use the directories in $VIMRUNTIME/lang to complete locales. + (Christian Brabandt, closes 36248) +Files: src/cmdexpand.c, src/ex_cmds2.c, src/testdir/test_cmdline.vim + +Patch 8.2.0962 +Problem: Terminal test sometimes hangs on Travis. +Solution: Do show output for this test temporarily. +Files: src/testdir/Makefile + +Patch 8.2.0963 +Problem: Number increment/decrement does not work with 'virtualedit'. +Solution: Handle coladd changing. (Christian Brabandt, closes #6240, + closes #923) +Files: runtime/doc/options.txt, runtime/doc/various.txt, src/ops.c, + src/testdir/test_increment.vim + +Patch 8.2.0964 +Problem: TextYankPost does not provide info about Visual selection. +Solution: Add the 'visual' key in v:event. (closes #6249) +Files: runtime/doc/autocmd.txt, src/register.c, + src/testdir/test_autocmd.vim + +Patch 8.2.0965 +Problem: Has_funcundefined() is not used. +Solution: Delete the function. (Dominique Pell茅, closes #6242) +Files: src/autocmd.c, src/proto/autocmd.pro + +Patch 8.2.0966 +Problem: 'shortmess' flag "n" not used in two places. +Solution: Make use of the "n" flag consistent. (Nick Jensen, closes #6245, + closes #6244) +Files: src/bufwrite.c, src/proto/bufwrite.pro, src/buffer.c, + src/fileio.c, src/testdir/dumps/Test_popup_textprop_corn_5.dump, + src/testdir/dumps/Test_start_with_tabs.dump + +Patch 8.2.0967 +Problem: Unnecessary type casts for vim_strnsave(). +Solution: Remove the type casts. +Files: src/evalvars.c, src/ex_cmds.c, src/ex_eval.c, src/fileio.c, + src/filepath.c, src/findfile.c, src/highlight.c, src/if_ruby.c, + src/insexpand.c, src/json.c, src/mark.c, src/memline.c, + src/menu.c, src/misc1.c, src/ops.c, src/os_win32.c, src/regexp.c, + src/regexp_bt.c, src/regexp_nfa.c, src/register.c, src/search.c, + src/sign.c, src/syntax.c, src/term.c, src/terminal.c, src/undo.c, + src/usercmd.c, src/userfunc.c, src/vim9compile.c, src/if_perl.xs + +Patch 8.2.0968 +Problem: No proper testing of the 'cpoptions' flags. +Solution: Add tests. (Yegappan Lakshmanan, closes #6251) +Files: src/testdir/Make_all.mak, src/testdir/test_cpoptions.vim, + src/testdir/test_edit.vim, src/testdir/test_normal.vim + +Patch 8.2.0969 +Problem: Assert_equal() output for dicts is hard to figure out. +Solution: Only show the different items. +Files: src/testing.c, src/testdir/test_assert.vim + +Patch 8.2.0970 +Problem: Terminal properties are not available in Vim script. +Solution: Add the terminalprops() function. +Files: src/term.c, src/proto/term.pro, src/evalfunc.c, src/main.c, + src/testing.c, src/globals.h, src/testdir/test_termcodes.vim, + runtime/doc/usr_41.txt, runtime/doc/eval.txt, + runtime/doc/testing.txt + +Patch 8.2.0971 +Problem: Build with tiny features fails. +Solution: Add #ifdef. +Files: src/term.c + +Patch 8.2.0972 +Problem: Vim9 script variable declarations need a type. +Solution: Make "let var: type" declare a script-local variable. +Files: src/evalvars.c, src/vim9script.c, src/proto/vim9script.pro, + src/globals.h, src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0973 +Problem: Vim9: type is not checked when assigning to a script variable. +Solution: Check the type. +Files: src/evalvars.c, src/vim9script.c, src/proto/vim9script.pro, + src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_script.vim + +Patch 8.2.0974 +Problem: Vim9: memory leak when script var has wrong type. +Solution: Free the variable name. +Files: src/vim9script.vim + +Patch 8.2.0975 +Problem: Vim9: script variable does not accept optional s: prefix. +Solution: Adjust the accepted syntax. +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0976 +Problem: Some 'cpoptions' not tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6253) +Files: src/testdir/test_cd.vim, src/testdir/test_charsearch.vim, + src/testdir/test_cpoptions.vim, src/testdir/test_normal.vim + +Patch 8.2.0977 +Problem: t_8u is made empty for the wrong terminals. (Dominique Pelle) +Solution: Invert the check for TPR_YES. (closes #6254) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.0978 +Problem: Leaking memory in termcodes test. +Solution: Set t_8u with set_option_value(). +Files: src/term.c + +Patch 8.2.0979 +Problem: A couple of screendump tests fail. +Solution: Do not redraw when clearing t_8u. +Files: src/term.c + +Patch 8.2.0980 +Problem: Raku file extension not recognized. (Steven Penny) +Solution: Recognize .raku and .rakumod. (closes #6255) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0981 +Problem: Vim9: cannot compile "[var, var] = list". +Solution: Implement list assignment. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/evalvars.c, + src/proto/evalvars.pro, src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0982 +Problem: Insufficient testing for reading/writing files. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6257) + Add "ui_delay" to test_override() and use it for the CTRL-O test. +Files: src/testing.c, src/globals.h, src/ui.c, runtime/doc/testing.txt, + src/testdir/test_autocmd.vim, src/testdir/test_edit.vim, + src/testdir/test_filechanged.vim, src/testdir/test_writefile.vim + +Patch 8.2.0983 +Problem: SConstruct file type not recognized. +Solution: Use python for SConstruct files. (Roland Hieber) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.0984 +Problem: Not using previous window when closing a shell popup window. +Solution: Use "prevwin" if it was set. (closes #6267) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.0985 +Problem: Simplify() does not remove slashes from "///path". +Solution: Reduce > 2 slashes to one. (closes #6263) +Files: src/findfile.c, src/testdir/test_functions.vim + +Patch 8.2.0986 (after 8.2.0985) +Problem: MS-Windows: functions test fails. +Solution: Only simplify ///path on Unix. +Files: src/testdir/test_functions.vim + +Patch 8.2.0987 +Problem: Vim9: cannot assign to [var; var]. +Solution: Assign rest of items to a list. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/list.c, + src/proto/list.pro, src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.0988 +Problem: Getting directory contents is always case sorted. +Solution: Add sort options and v:collate. (Christian Brabandt, closes #6229) +Files: runtime/doc/eval.txt, runtime/doc/mlang.txt, src/auto/configure, + src/cmdexpand.c, src/config.h.in, src/configure.ac, + src/evalfunc.c, src/evalvars.c, src/ex_cmds2.c, src/fileio.c, + src/filepath.c, src/globals.h, src/proto/fileio.pro, + src/testdir/test_cmdline.vim, src/testdir/test_functions.vim, + src/vim.h + +Patch 8.2.0989 +Problem: Crash after resizing a terminal window. (August Masquelier) +Solution: Add check for valid row in libvterm. (closes #6273) +Files: src/libvterm/src/state.c, src/libvterm/src/screen.c + +Patch 8.2.0990 (after 8.2.0988) +Problem: Using duplicate error number. +Solution: Use an unused error number. Add a test for it. +Files: src/globals.h, src/testdir/test_functions.vim + +Patch 8.2.0991 +Problem: Cannot get window type for autocmd and preview window. +Solution: Add types to win_gettype(). (Yegappan Lakshmanan, closes #6277) +Files: runtime/doc/eval.txt, src/evalwindow.c, + src/testdir/test_autocmd.vim, src/testdir/test_preview.vim + +Patch 8.2.0992 +Problem: Vim9: crash when using :import in the Vim command. +Solution: Give an error when using :import outside of a script. + (closes #6271) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim, + src/testdir/term_util.vim + +Patch 8.2.0993 +Problem: Vim9 script test fails with normal features. +Solution: Use :func instead of :def for now. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0994 +Problem: Vim9: missing function causes compilation error. +Solution: Call test function indirectly. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.0995 +Problem: Insufficient testing for the readdir() sort option. +Solution: Add a few more tests. (Christian Brabandt, closes #6278) +Files: src/testdir/test_functions.vim + +Patch 8.2.0996 +Problem: Using "aucmdwin" in win_gettype() is not ideal. +Solution: Rename to "autocmd". +Files: runtime/doc/eval.txt, src/evalwindow.c, + src/testdir/test_autocmd.vim + +Patch 8.2.0997 +Problem: Cannot execute a register containing line continuation. +Solution: Concatenate lines where needed. (Yegappan Lakshmanan, + closes #6272) +Files: runtime/doc/repeat.txt, src/register.c, + src/testdir/test_registers.vim + +Patch 8.2.0998 +Problem: Not all tag code is tested. +Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #6284) +Files: src/testdir/test_tagjump.vim + +Patch 8.2.0999 +Problem: Moving to next sentence gets stuck on quote. +Solution: When moving to the next sentence doesn't result in moving, advance + a character and try again. (closes #6291) +Files: src/textobject.c, src/testdir/test_textobjects.vim + +Patch 8.2.1000 +Problem: Get error when leaving Ex mode with :visual and a CmdLineEnter + autocommand was used. +Solution: Reset ex_pressedreturn. (closes #6293) +Files: src/ex_docmd.c, src/testdir/test_ex_mode.vim + +Patch 8.2.1001 +Problem: Vim9: crash with nested "if" and assignment. +Solution: Skip more of the assignment. Do not set ctx_skip when code is + reachable. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1002 +Problem: Test may fail when run directly. +Solution: Check if g:run_nr exists. (Christian Brabandt, closes #6285) +Files: src/testdir/term_util.vim + +Patch 8.2.1003 +Problem: Vim9: return type of sort() is too generic. +Solution: Get type from the first argument. (closes #6292) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1004 +Problem: Line numbers below filler lines not always updated. +Solution: Don't break out of the win_line() loop too early. (Christian + Brabandt, closes #6294, closes #6138) +Files: src/drawline.c, src/testdir/dumps/Test_diff_rnu_01.dump, + src/testdir/dumps/Test_diff_rnu_02.dump, + src/testdir/dumps/Test_diff_rnu_03.dump, + src/testdir/test_diffmode.vim + +Patch 8.2.1005 +Problem: Vim9: using TRUE/FALSE/MAYBE for ctx_skip is confusing. +Solution: Use an enum value. +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1006 +Problem: Vim9: require unnecessary return statement. +Solution: Improve the use of the had_return flag. (closes #6270) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1007 +Problem: Completion doesn't work after ":r ++arg !". +Solution: Skip over "++arg". (Christian Brabandt, closes #6275, + closes #6258) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.1008 +Problem: Vim9: no test for disassembling newly added instructions. +Solution: Add a function and check disassembly. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1009 +Problem: Vim9: some failures not checked for. +Solution: Add test cases. Remove unused code. +Files: src/testdir/test_vim9_script.vim, src/vim9execute.c + +Patch 8.2.1010 +Problem: Build failure in libvterm with debug enabled. (John Little) +Solution: Use "->" instead of ".". +Files: src/libvterm/src/state.c + +Patch 8.2.1011 +Problem: Vim9: some code not tested. +Solution: Add a few more test cases. Reorder checks for clearer error. + Remove unreachable code. +Files: src/evalvars.c, src/vim9script.c, src/vim9execute.c, + src/proto/vim9script.pro, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1012 +Problem: Vim9: cannot declare single character script variables. +Solution: Don't see "b:", "s:", etc. as namespace. Fix item size of + sn_var_vals. +Files: src/vim9script.c, src/scriptfile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1013 +Problem: Channel tests can be a bit flaky. +Solution: Set the g:test_is_flaky flag in SetUp(). +Files: src/testdir/test_channel.vim + +Patch 8.2.1014 +Problem: Using "name" for a string result is confusing. +Solution: Rename to "end". +Files: src/typval.c + +Patch 8.2.1015 +Problem: Popup filter gets key with modifier prepended when using + modifyOtherKeys. +Solution: Remove the shift modifier when it is included in the key, also + when the Alt or Meta modifier is used. +Files: src/term.c, src/misc2.c, src/testdir/test_popupwin.vim + +Patch 8.2.1016 +Problem: Vim9: test fails when channel feature is missing. +Solution: Process an :if command when skipping +Files: src/vim9compile.c + +Patch 8.2.1017 +Problem: Appveyor output doesn't show MinGW console features. +Solution: List the features of the console build. +Files: ci/appveyor.bat + +Patch 8.2.1018 +Problem: Typo in enum value. (James McCoy) +Solution: Fix the typo. +Files: src/vim9compile.c + +Patch 8.2.1019 +Problem: Mapping <M-S-a> does not work in the GUI. +Solution: Move the logic to remove the shift modifier to + may_remove_shift_modifier() and also use it in the GUI. +Files: src/gui_gtk_x11.c, src/misc2.c, src/proto/misc2.pro, src/term.c + +Patch 8.2.1020 +Problem: Popupwin test fails in the GUI. +Solution: Send GUI byte sequence for <C-S-a>. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.1021 +Problem: Ruby interface not tested enough. +Solution: Add a couple more tests. (Dominique Pell茅, closes #6301) +Files: src/testdir/test_ruby.vim + +Patch 8.2.1022 +Problem: Various parts of code not covered by tests. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6300) +Files: src/testdir/test_blob.vim, src/testdir/test_cpoptions.vim, + src/testdir/test_digraph.vim, src/testdir/test_edit.vim, + src/testdir/test_iminsert.vim, src/testdir/test_paste.vim, + src/testdir/test_prompt_buffer.vim, + src/testdir/test_selectmode.vim, src/testdir/test_tabpage.vim, + src/testdir/test_tagjump.vim, src/testdir/test_textformat.vim, + src/testdir/test_viminfo.vim, src/testdir/test_virtualedit.vim, + src/testdir/test_visual.vim + +Patch 8.2.1023 +Problem: Vim9: redefining a function uses a new index every time. +Solution: When redefining a function clear the contents and re-use the + index. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/structs.h, src/eval.c, src/evalvars.c, src/vim9execute.c + +Patch 8.2.1024 +Problem: Vim9: no error for using "let g:var = val". +Solution: Add an error. +Files: src/evalvars.c, src/globals.h, src/structs.h, src/vim9compile.c, + src/scriptfile.c, src/userfunc.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1025 +Problem: Tabpage menu and tabline not sufficiently tested. +Solution: Add tests. (Yegappan Lakshmanan, closes #6307) +Files: src/testdir/test_digraph.vim, src/testdir/test_tabpage.vim + +Patch 8.2.1026 +Problem: Vim9: cannot break the line after "->". +Solution: Check for a continuation line after "->", "[" and ".". Ignore + trailing white space. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1027 +Problem: GUI: multibyte characters do not work in a terminal. +Solution: Do not assume a key is one byte. (closes #6304) +Files: src/gui_gtk_x11.c, src/gui_x11.c + +Patch 8.2.1028 +Problem: Vim9: no error for declaring buffer, window, etc. variable. +Solution: Give an error. Unify the error messages. +Files: src/evalvars.c, src/globals.h, src/vim9compile.c, + src/proto/vim9compile.pro, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1029 +Problem: Vim9: cannot chain function calls with -> at line start. +Solution: Peek ahead for a following line starting with "->". (closes #6306) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1030 +Problem: Reducing size of a terminal window may cause a crash. +Solution: Make sure the row and column don't become negative. (closes #6273) +Files: src/libvterm/src/state.c, src/libvterm/src/screen.c + +Patch 8.2.1031 +Problem: Build failure with Perl5.32. +Solution: Define a few more functions. (Felix Yan, closes #6310) +Files: src/if_perl.xs + +Patch 8.2.1032 +Problem: Error message for declaring a variable cannot be translated. +Solution: Enclose in _(). Make environment variable a separate message. +Files: src/globals.h, src/vim9compile.c + +Patch 8.2.1033 +Problem: Not easy to read the test time in the test output. +Solution: Align the times. Make slow tests bold. +Files: src/testdir/runtest.vim + +Patch 8.2.1034 +Problem: Compiler warning for uninitialized variables. +Solution: Add initializations. (John Marriott) +Files: src/vim9compile.c + +Patch 8.2.1035 +Problem: setreg() does not always clear the register. +Solution: Clear the register if the dict argument is empty. (Andy Massimino, + closes #3370) +Files: src/evalfunc.c, src/testdir/test_registers.vim + +Patch 8.2.1036 +Problem: Popupwin test fails sometimes. +Solution: Use WaitForAssert() instead of a sleep. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.1037 +Problem: Vim9: crash when using line continuation inside :def. +Solution: Check for no more lines available. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1038 +Problem: Popupwin test fails. +Solution: Fix WaitForAssert() argument. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.1039 +Problem: Cannot put NUL byte on clipboard. +Solution: Use the text length. (Christian Brabandt, closes #6312, + closes #6149) +Files: src/winclip.c, src/testdir/test_registers.vim + +Patch 8.2.1040 +Problem: Not enough testing for movement commands. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6313) +Files: src/testdir/test_cursor_func.vim, src/testdir/test_functions.vim, + src/testdir/test_gf.vim, src/testdir/test_normal.vim, + src/testdir/test_options.vim, src/testdir/test_quickfix.vim + +Patch 8.2.1041 +Problem: Test summary is missing executed count. +Solution: Adjust pattern used for counting. +Files: src/testdir/summarize.vim + +Patch 8.2.1042 +Problem: Vim9: cannot put an operator on the next line. +Solution: Require a colon before a range to see if that causes problems. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/ex_docmd.c, + src/globals.h, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1043 +Problem: %a item in 'statusline' not tested. +Solution: Add a test. (Dominique Pell茅, closes #6318) +Files: src/testdir/test_statusline.vim + +Patch 8.2.1044 +Problem: Not all systemd file types are recognized. +Solution: Match several more files. (Guido Cella, closes #6319) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1045 +Problem: Vim9: line break before operator does not work. +Solution: Peek the next line for an operator. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1046 +Problem: Insufficient tests for src/buffer.c. +Solution: Add more tests. Move comments related tests to a separate file. + (Yegappan Lakshmanan, closes #6325) +Files: src/testdir/Make_all.mak, src/testdir/test_buffer.vim, + src/testdir/test_cmdline.vim, src/testdir/test_comments.vim, + src/testdir/test_normal.vim, src/testdir/test_textformat.vim + +Patch 8.2.1047 +Problem: Vim9: script cannot use line continuation like in a :def function. +Solution: Pass the getline function pointer to the eval() functions. Use it + for addition and multiplication operators. +Files: src/vim.h, src/structs.h, src/globals.h, src/ex_eval.c, + src/eval.c, src/proto/eval.pro, src/dict.c, src/evalfunc.c, + src/evalvars.c, src/list.c, src/userfunc.c, src/scriptfile.c, + src/proto/scriptfile.pro, src/testdir/test_vim9_expr.vim + +Patch 8.2.1048 (after 8.2.1047) +Problem: Build failure without the eval feature. +Solution: Add dummy typedef. +Files: src/structs.h + +Patch 8.2.1049 (after 8.2.1047) +Problem: Vim9: leaking memory when using continuation line. +Solution: Keep a pointer to the continuation line in evalarg_T. Centralize + checking for a next command. +Files: src/structs.h, src/eval.c, src/proto/eval.pro, src/beval.c, + src/buffer.c, src/clientserver.c, src/evalvars.c, src/ex_docmd.c, + src/ex_eval.c, src/filepath.c, src/findfile.c, src/fold.c, + src/globals.h, src/if_ole.cpp, src/if_perl.xs, src/if_tcl.c, + src/map.c, src/quickfix.c, src/regexp.c, src/register.c, + src/screen.c, src/userfunc.c + +Patch 8.2.1050 (after 8.2.1049) +Problem: Missing change in struct. +Solution: Add missing change. +Files: src/ex_cmds.h + +Patch 8.2.1051 +Problem: Crash when changing a list while using reduce() on it. +Solution: Lock the list. (closes #6330) +Files: src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.1052 +Problem: Build failure with older compilers. +Solution: Move declaration to start of block. +Files: src/eval.c + +Patch 8.2.1053 +Problem: Insufficient testing for 'statusline' and 'tabline'. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6333) +Files: src/testdir/test_autocmd.vim, src/testdir/test_statusline.vim, + src/testdir/test_tabline.vim + +Patch 8.2.1054 +Problem: Not so easy to pass a lua function to Vim. +Solution: Convert a Lua function and closure to a Vim funcref. (Prabir + Shrestha, closes #6246) +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/proto/userfunc.pro, + src/structs.h, src/testdir/test_lua.vim, src/userfunc.c + +Patch 8.2.1055 +Problem: No filetype set for pacman config files. +Solution: Recognize pacman.conf and *.hook. (Guido Cella, closes #6335) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1056 +Problem: Wrong display when mixing match conceal and syntax conceal. +Solution: Adjust how conceal flags are used. (closes #6327, closes #6303) +Files: src/drawline.c, src/highlight.c, + src/testdir/test_matchadd_conceal.vim + +Patch 8.2.1057 (after 8.2.1054) +Problem: Cannot build with dynamic Lua. +Solution: Add dll variables. +Files: src/if_lua.c + +Patch 8.2.1058 +Problem: Multiline conceal causes display errors. +Solution: Do not allow conceal cross over EOL. (closes #6326, closes #4854, + closes #6302) +Files: src/drawline.c, src/testdir/test_conceal.vim, + src/testdir/test_diffmode.vim + +Patch 8.2.1059 +Problem: Crash when using :tabonly in an autocommand. (Yegappan Lakshmanan) +Solution: Do not allow the autocommand window to be closed. +Files: src/ex_docmd.c, src/window.c, src/globals.h, + src/testdir/test_autocmd.vim + +Patch 8.2.1060 +Problem: Not all elinks files are recognized. +Solution: Just check for "elinks.conf". (Guido Cella, closes #6337) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1061 +Problem: Insufficient testing for src/window.c. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6345) +Files: src/testdir/test_excmd.vim, src/testdir/test_gf.vim, + src/testdir/test_options.vim, src/testdir/test_popupwin.vim, + src/testdir/test_quickfix.vim, src/testdir/test_tabpage.vim, + src/testdir/test_tagjump.vim, src/testdir/test_window_cmd.vim, + src/window.c + +Patch 8.2.1062 +Problem: Vim9: no line break allowed inside "cond ? val1 : val2". +Solution: Check for operator after line break. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1063 +Problem: Vim9: no line break allowed before || or &&. +Solution: Check for operator after line break. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1064 +Problem: Vim9: no line break allowed before comparators. +Solution: Check for comparator after line break. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1065 +Problem: Vim9: no line break allowed inside a list. +Solution: Handle line break inside a list in Vim9 script. +Files: src/eval.c, src/proto/eval.pro, src/list.c, src/proto/list.pro, + src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_arglist.vim + +Patch 8.2.1066 +Problem: Lua arrays are zero based. +Solution: Make Lua arrays one based. (Prabir Shrestha, closes #6347) + Note: this is not backwards compatible. +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.1067 +Problem: Expression "!expr->func()" does not work. +Solution: Apply plus and minus earlier. (closes #6348) +Files: src/eval.c, src/proto/eval.pro, src/evalvars.c, src/userfunc.c, + src/testdir/test_expr.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.1068 +Problem: Vim9: no line break allowed inside a dict. +Solution: Handle line break inside a dict in Vim9 script. +Files: src/eval.c, src/dict.c, src/proto/dict.pro, + src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1069 +Problem: Vim9: fail to check for white space in list. +Solution: Add check for white space. +Files: src/list.c + +Patch 8.2.1070 +Problem: Vim9: leaking memory when lacking white space in dict. +Solution: Clear the typval. +Files: src/dict.c + +Patch 8.2.1071 +Problem: Vim9: no line break allowed inside a lambda. +Solution: Handle line break inside a lambda in Vim9 script. +Files: src/eval.c, src/proto/eval.pro, src/evalvars.c, src/userfunc.c, + src/proto/userfunc.pro, src/popupwin.c, src/vim9compile.c, + src/ex_eval.c, src/globals.h, src/structs.h, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1072 +Problem: Missing libvterm test. +Solution: Sync with libvterm revision 768. +Files: src/libvterm/src/state.c, src/libvterm/t/63screen_resize.test + +Patch 8.2.1073 +Problem: Vim9: no line break allowed in () expression. +Solution: Skip a line break. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1074 +Problem: Vim9: no line break allowed after some operators. +Solution: Skip a line break after the operator. Add + eval_may_get_next_line() to simplify checking for a line break. +Files: src/eval.c, src/proto/eval.pro, src/dict.c, src/list.c, + src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1075 +Problem: Vim9: no line break allowed in :echo expression. +Solution: Skip linebreak. +Files: src/eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1076 +Problem: Vim9: no line break allowed in :if expression. +Solution: Skip linebreak. +Files: src/eval.c, src/proto/eval.pro, src/evalvars.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.1077 +Problem: No enough test coverage for highlighting. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6351) +Files: runtime/doc/syntax.txt, src/testdir/test_cmdline.vim, + src/testdir/test_highlight.vim, src/testdir/test_match.vim + +Patch 8.2.1078 +Problem: Highlight and match functionality together in one file. +Solution: Move match functionality to a separate file. (Yegappan Lakshmanan, + closes #6352) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/highlight.c, src/match.c, src/proto.h, + src/proto/highlight.pro, src/proto/match.pro + +Patch 8.2.1079 +Problem: Vim9: no line break allowed in a while loop. +Solution: Update stored loop lines when finding line breaks. +Files: src/structs.h, src/globals.h, src/eval.c, src/evalvars.c, + src/ex_docmd.c, src/proto/ex_docmd.pro, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.1080 +Problem: Vim9: no line break allowed in a for loop. +Solution: Skip line breaks in for command. +Files: src/eval.c, src/ex_eval.c, src/proto/eval.pro, src/userfunc.c, + src/structs.h, src/globals.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1081 +Problem: Lua: cannot use table.insert() and table.remove(). +Solution: Add the list functions. (Prabir Shrestha, closes #6353) +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.1082 +Problem: Coverity complains about ignoring dict_add() return value. +Solution: Add (void). +Files: src/evalfunc.c + +Patch 8.2.1083 +Problem: Crash when using reduce() on a NULL list. +Solution: Only access the list when not NULL. +Files: src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.1084 +Problem: Lua: registering function has useless code. +Solution: Remove clearing grow arrays. +Files: src/userfunc.c + +Patch 8.2.1085 +Problem: Coverity complains about ignoring dict_add() return value. +Solution: Add (void). +Files: src/register.c + +Patch 8.2.1086 +Problem: Possibly using freed memory when text properties used when + changing indent of a line. +Solution: Compute the offset before calling ml_replace(). +Files: src/indent.c + +Patch 8.2.1087 +Problem: Possible memory leak when file expansion fails. +Solution: Clear the grow array when returning FAIL. Use an error message + instead of an empty string. +Files: src/filepath.c + +Patch 8.2.1088 +Problem: A very long translation might cause a buffer overflow. +Solution: Truncate the message if needed. +Files: src/fileio.c + +Patch 8.2.1089 +Problem: Coverity warns for pointer computation. +Solution: Avoid computing a pointer to invalid memory. +Files: src/spellfile.c + +Patch 8.2.1090 +Problem: May use NULL pointer when skipping over name. +Solution: Always set ll_name_end. +Files: src/eval.c + +Patch 8.2.1091 +Problem: No check if opening a pty works. +Solution: Check for invalid file descriptor. +Files: src/os_unix.c + +Patch 8.2.1092 +Problem: Not checking if saving for undo succeeds. +Solution: Bail out if u_savesub() returns FAIL. +Files: src/textprop.c + +Patch 8.2.1093 +Problem: Python: double free when adding item to dict fails. +Solution: Remove vim_free() call. +Files: src/if_py_both.h + +Patch 8.2.1094 +Problem: Dead code in libvterm. +Solution: Remove condition that is always true. +Files: src/libvterm/src/pen.c + +Patch 8.2.1095 +Problem: May use pointer after freeing it when text properties are used. +Solution: Update redo buffer before calling ml_replace(). +Files: src/spellsuggest.c + +Patch 8.2.1096 +Problem: Vim9: return type of getqflist() is wrong. +Solution: Let the return type depend on the arguments. Also for + getloclist(). (closes #6357) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1097 +Problem: Highlight code not sufficiently tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #6359) +Files: src/testdir/test_filter_cmd.vim, src/testdir/test_highlight.vim + +Patch 8.2.1098 +Problem: Vim9: cannot use line break in :throw argument. +Solution: Check for line break. +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1099 +Problem: Vim9: cannot use line break in :cexpr argument. +Solution: Check for line break. +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1100 +Problem: Vim9: cannot use line break in :execute, :echomsg and :echoerr + argument. +Solution: Check for line break. +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1101 +Problem: No error when using wrong arguments for setqflist() or + setloclist(). +Solution: Check for the error. +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1102 +Problem: Coverity gets confused by an unnecessary NULL check. +Solution: Remove the check for NULL. +Files: src/quickfix.c + +Patch 8.2.1103 +Problem: Coverity reports an unnecessary NULL check. +Solution: Remove the check for NULL. +Files: src/eval.c + +Patch 8.2.1104 +Problem: Coverity warns for possible NULL pointer use. +Solution: Check "pbyts" is not NULL. +Files: src/spellsuggest.c + +Patch 8.2.1105 +Problem: Insufficient test coverage for Lua. +Solution: Add tests. (Yegappan Lakshmanan, closes #6368) Fix uncovered + memory leak. Avoid unnecessary copy/free. +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.1106 +Problem: Crash when trying to use s: variable in typed command. +Solution: Don't use the script index when not set. (Ken Takata, + closes #6366) +Files: src/vim9compile.c, src/testdir/test_vimscript.vim + +Patch 8.2.1107 +Problem: 'imactivatefunc' and 'imstatusfunc' are not used in the GUI. +Solution: Adjust the #ifdefs. (closes #6367) +Files: runtime/doc/options.txt, src/gui_xim.c, + src/testdir/test_iminsert.vim + +Patch 8.2.1108 +Problem: Mouse left-right scroll is not supported in terminal window. +Solution: Implement mouse codes 6 and 7. (Trygve Aaberge, closes #6363) +Files: src/libvterm/src/mouse.c, src/mouse.c, src/terminal.c, + src/testdir/mouse.vim, src/testdir/test_termcodes.vim + +Patch 8.2.1109 (after 8.2.1106) +Problem: Still crashing when using s:variable. +Solution: Remove assignment. (Ken Takata) +Files: src/vim9compile.c + +Patch 8.2.1110 +Problem: Vim9: line continuation does not work in function arguments. +Solution: Pass "evalarg" to get_func_tv(). Fix seeing double quoted string + as comment. +Files: src/userfunc.c, src/proto/userfunc.pro, src/eval.c, src/ex_eval.c, + src/list.c, src/dict.c, src/proto/eval.pro, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.1111 +Problem: Inconsistent naming of get_list_tv() and eval_dict(). +Solution: Rename get_list_tv() to eval_list(). Similarly for eval_number(), + eval_string(), eval_lit_string() and a few others. +Files: src/eval.c, src/list.c, src/proto/list.pro, src/vim9compile.c, + src/typval.c, src/proto/typval.pro, src/vim9script.c, + src/evalfunc.c, src/evalvars.c, src/proto/evalvars.pro, + src/vim9execute.c + +Patch 8.2.1112 +Problem: Vim9: no line continuation allowed in method call. +Solution: Handle line continuation in expression before method call. +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1113 +Problem: No test for verbose output of :call. +Solution: Add a test. +Files: src/testdir/test_user_func.vim + +Patch 8.2.1114 +Problem: Terminal test sometimes times out. +Solution: Split the test in two parts. +Files: src/testdir/Makefile, src/testdir/Make_all.mak, + src/testdir/term_util.vim, src/testdir/test_terminal.vim, + src/testdir/test_terminal2.vim + +Patch 8.2.1115 +Problem: Iminsert test fails when compiled with VIMDLL. +Solution: Change condition. (Ken Takata, closes #6376) +Files: src/testdir/test_iminsert.vim + +Patch 8.2.1116 +Problem: Vim9: parsing command checks for list twice. +Solution: Adjust how a command is parsed. +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1117 +Problem: Coverity warns for using uninitialized field. +Solution: Initialize v_lock. +Files: src/if_lua.c + +Patch 8.2.1118 +Problem: Condition can never be true, dead code. +Solution: Remove the dead code. +Files: src/move.c + +Patch 8.2.1119 +Problem: Configure fails with Xcode 12 beta. +Solution: use "return" instead of "exit()". (Nico Weber, closes #6381) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.1120 +Problem: Python code not tested properly. +Solution: Add more tests and convert old-style test into new-style test. + (Yegappan Lakshmanan, closes #6370) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test86.in, src/testdir/test86.ok, + src/testdir/test_python2.vim + +Patch 8.2.1121 +Problem: Command completion not working after ++arg. +Solution: Move skipping up. (Christian Brabandt, closes #6382) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.1122 +Problem: Vim9: line continuation in dict member not recognized. +Solution: Check for line continuation. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1123 +Problem: Python 3 test is old style. +Solution: Turn into new style test. (Yegappan Lakshmanan, closes #6385) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test87.in, src/testdir/test87.ok, + src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.2.1124 +Problem: Vim9: no line break allowed in :import command. +Solution: Skip over line breaks. +Files: src/vim9script.c, src/proto/vim9script.pro, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1125 +Problem: Vim9: double quote can be a string or a comment. +Solution: Only support comments starting with # to avoid confusion. +Files: src/eval.c, src/proto/eval.pro, src/dict.c, src/list.c, + src/vim9script.c + +Patch 8.2.1126 +Problem: Vim9: using :copen causes an error. +Solution: Add flag LET_NO_COMMAND in set_var(). +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1127 +Problem: Vim9: getting a dict member may not work. +Solution: Clear the dict only after copying the item. (closes #6390) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1128 +Problem: The write message mentions characters, but it's actually bytes. +Solution: Change "C" to "B" and "characters" to "bytes". +Files: runtime/doc/options.txt, src/fileio.c, + src/testdir/test_cscope.vim, src/testdir/test_netbeans.vim, + src/testdir/dumps/Test_diff_syntax_1.dump, + src/testdir/dumps/Test_long_file_name_1.dump, + src/testdir/dumps/Test_display_unprintable_01.dump, + src/testdir/dumps/Test_tselect_1.dump + +Patch 8.2.1129 +Problem: Vim9: bar not recognized after not compiled command. +Solution: Check for bar for commands where this is possible. (closes #6391) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1130 +Problem: Vim9: bar not recognized after function call +Solution: Skip whitespace. (closes #6391) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1131 +Problem: Vim9: error message for returning a value in a function that does + not return anything is not clear. +Solution: Add a specific message. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1132 +Problem: Vim9: return type of repeat() is not specific enough. +Solution: Return the type of the first argument. (closes #6395) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1133 +Problem: Vim9: return type of add() is not specific enough. +Solution: Return the type of the first argument. (closes #6395) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1134 +Problem: Vim9: getting a list member may not work. +Solution: Clear the list only after copying the item. (closes #6393) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1135 +Problem: Vim9: getting a dict member may not work. +Solution: Clear the dict only after copying the item. +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1136 +Problem: Vim9: return type of argv() is always any. +Solution: Use list<string> if there is no argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1137 +Problem: Vim9: modifiers not cleared after compiling function. +Solution: Clear command modifiers. (closes #6396) +Files: src/vim9compile.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/testdir/test_vim9_func.vim, + src/testdir/dumps/Test_vim9_silent_echo.dump + +Patch 8.2.1138 +Problem: Vim9: return type of copy() and deepcopy() is any. +Solution: Use type of the argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1139 (after 8.2.1137) +Problem: Vim9: test for silent echo fails in some environments. +Solution: Use :function instead of :def. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1140 +Problem: Vim9: return type of extend() is any. +Solution: Use type of the argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1141 +Problem: Vim9: return type of filter() is any. +Solution: Use type of the argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1142 +Problem: Vim9: return type of insert() is any. +Solution: Use type of the first argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1143 +Problem: Vim9: return type of remove() is any. +Solution: Use the member type of the first argument, if known. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1144 +Problem: Vim9: return type of reverse() is any. +Solution: Use the type of the first argument. +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1145 +Problem: Vim9: "for" only accepts a list at compile time. +Solution: Also accept a list at runtime. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1146 +Problem: Not enough testing for Python. +Solution: Add more tests. Fix uncovered problems. (Yegappan Lakshmanan, + closes #6392) +Files: src/if_py_both.h, src/if_python3.c, src/testdir/shared.vim, + src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.2.1147 +Problem: :confirm may happen in cooked mode. (Jason Franklin) +Solution: Switch to raw mode before prompting. (Brandon Pfeifer) +Files: src/message.c, src/testdir/test_excmd.vim + +Patch 8.2.1148 +Problem: Warning for using int instead of size_t. +Solution: Change "len" argument to size_t. (Mike Williams) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9script.c + +Patch 8.2.1149 +Problem: Vim9: :eval command not handled properly. +Solution: Compile the :eval command. (closes #6408) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1150 +Problem: ml_get error when using Python. (Yegappan Lakshmanan) +Solution: Check the line number is not out of range. Call "Check" with + "fromObj" instead of "from". +Files: src/if_py_both.h, src/testdir/test_python2.vim, + src/testdir/test_python3.vim + +Patch 8.2.1151 +Problem: Insufficient test coverage for Python. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #6415) +Files: src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.2.1152 +Problem: Vim9: function reference is missing script prefix. +Solution: Use the actual function name instead of the name searched for in + the script context. (closes #6412) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1153 +Problem: Vim9: script test fails on some systems. +Solution: Return proper value from Compare(). +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1154 +Problem: Vim9: crash when using imported function. +Solution: Check for a function type. Set the script context when calling a + function. (closes #6412) +Files: src/evalvars.c, src/scriptfile.c, src/proto/scriptfile.pro, + src/vim9execute.c, src/structs.h, src/testdir/test_vim9_script.vim + +Patch 8.2.1155 +Problem: Vim9: cannot handle line break inside lambda. +Solution: Pass the compilation context through. (closes #6407, closes #6409) +Files: src/structs.h, src/vim9compile.c, src/proto/vim9compile.pro, + src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1156 +Problem: Vim9: No error for invalid command in compiled function. +Solution: Handle CMD_SIZE. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1157 +Problem: Vim9: dict.name is not recognized as an expression. +Solution: Recognize ".name". (closes #6418) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1158 (after 8.2.1155) +Problem: Build error. +Solution: Add missing change to globals. +Files: src/globals.h + +Patch 8.2.1159 +Problem: Vim9: no error for missing space after a comma. +Solution: Check for white space. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1160 +Problem: Vim9: memory leak in allocated types. +Solution: Free the type pointers. +Files: src/vim9script.c, src/userfunc.c, src/vim9compile.c, + src/proto/vim9compile.pro + +Patch 8.2.1161 +Problem: Vim9: using freed memory. +Solution: Put pointer back in evalarg instead of freeing it. +Files: src/userfunc.c, src/vim9compile.c, src/eval.c, src/proto/eval.pro, + src/structs.h + +Patch 8.2.1162 +Problem: Crash when using a lambda. +Solution: Check for evalarg to be NULL. +Files: src/userfunc.c + +Patch 8.2.1163 (after 8.2.1161) +Problem: Build error. +Solution: Add missing change to globals. +Files: src/globals.h + +Patch 8.2.1164 +Problem: Text cleared by checking terminal properties not redrawn. (Alexey + Radkov) +Solution: Mark the screen characters as invalid. (closes #6422) +Files: src/screen.c, src/proto/screen.pro, src/term.c + +Patch 8.2.1165 +Problem: Insufficient testing for the Tcl interface. +Solution: Add more tests. (Yegappan Lakshmanan, closes #6423) +Files: src/testdir/test_tcl.vim + +Patch 8.2.1166 +Problem: Once mouse move events are enabled getchar() returns them. +Solution: Ignore K_MOUSEMOVE in getchar(). (closes #6424) +Files: runtime/doc/eval.txt, src/getchar.c + +Patch 8.2.1167 +Problem: Vim9: builtin function method call only supports first argument. +Solution: Shift arguments when needed. (closes #6305, closes #6419) +Files: src/evalfunc.c, src/vim9compile.c, src/vim9execute.c, + src/vim9.h, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1168 +Problem: Wrong method argument for appendbufline(). +Solution: Use FEARG_3. +Files: src/evalfunc.c + +Patch 8.2.1169 +Problem: Write NUL past allocated space using corrupted spell file. + (Markus Vervier) +Solution: Init "c" every time. +Files: src/spellfile.c + +Patch 8.2.1170 +Problem: Cursor off by one with block paste while 'virtualedit' is "all". +Solution: Adjust condition. (Hugo Gualandi, closes #6430) +Files: src/register.c, src/testdir/test_registers.vim + +Patch 8.2.1171 +Problem: Possible crash when out of memory. +Solution: Check for NULL pointer. (Dominique Pell茅, closes #6432) +Files: src/syntax.c + +Patch 8.2.1172 +Problem: Error messages when doing "make clean" in the runtime/doc or + src/tee directories. +Solution: Use "rm -f". +Files: runtime/doc/Makefile, src/tee/Makefile + +Patch 8.2.1173 +Problem: Tee doesn't build on some systems. +Solution: Include header files. (Dominique Pelle, closes #6431) +Files: src/tee/tee.c + +Patch 8.2.1174 +Problem: No test for the "recording @x" message. +Solution: Add a test. (Dominique Pell茅, closes #6427) +Files: src/testdir/test_registers.vim + +Patch 8.2.1175 +Problem: Vim9: Cannot split a line before ".member". +Solution: Check for ".member" after line break. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1176 +Problem: Vim9: not enough type checking in Vim9 script. +Solution: Use same type checking as in a :def function. +Files: src/vim9compile.c, src/proto/vim9compile.pro, + src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1177 +Problem: Terminal2 test sometimes hangs in the GUI. +Solution: Move some tests to other files to further locate the problem. + Set the GUI to a fixed screen size. +Files: src/testdir/test_terminal.vim, src/testdir/test_terminal2.vim, + src/testdir/test_terminal3.vim, src/testdir/Make_all.mak, + src/testdir/runtest.vim + +Patch 8.2.1178 +Problem: Vim9: filter function recognized as command modifier, leading to a + crash. +Solution: Clear cmdmod after freeing items. Do not recognize a command + modifier followed by non-white space. (closes #6434) +Files: src/ex_docmd.c, src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1179 +Problem: Test_termwinscroll() sometimes hangs in the GUI. +Solution: Skip the test in the GUI. +Files: src/testdir/test_terminal2.vim + +Patch 8.2.1180 +Problem: Build failure in small version. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.1181 +Problem: Json code not fully tested. +Solution: Add more test coverage. (Dominique Pell茅, closes #6433) +Files: src/testdir/test_json.vim + +Patch 8.2.1182 +Problem: Vim9: no check for whitespace after comma in lambda. +Solution: Give error if white space is missing. +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1183 +Problem: assert_fails() checks the last error message. +Solution: Check the first error, it is more relevant. Fix all the tests + that rely on the old behavior. +Files: runtime/doc/testing.txt, src/message.c, src/globals.h, + src/testing.c, src/testdir/test_autocmd.vim, + src/testdir/test_buffer.vim, src/testdir/test_cd.vim, + src/testdir/test_channel.vim, src/testdir/test_clientserver.vim, + src/testdir/test_cmdline.vim, src/testdir/test_cpoptions.vim, + src/testdir/test_cscope.vim, src/if_cscope.c, + src/testdir/test_excmd.vim, src/evalvars.c, + src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_json.vim, src/testdir/test_let.vim, + src/testdir/test_listdict.vim, src/testdir/test_listener.vim, + src/testdir/test_match.vim, src/testdir/test_menu.vim, + src/testdir/test_method.vim, src/testdir/test_normal.vim, + src/testdir/test_popup.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_quickfix.vim, + src/testdir/test_random.vim, src/testdir/test_search.vim, + src/testdir/test_signs.vim, src/testdir/test_spell.vim, + src/testdir/test_substitute.vim, src/testdir/test_syntax.vim, + src/testdir/test_tagjump.vim, src/testdir/test_taglist.vim, + src/testdir/test_terminal.vim, src/testdir/test_textprop.vim, + src/testdir/test_trycatch.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim, src/vim9compile.c, + src/testdir/test_vim9_script.vim, src/testdir/test_viminfo.vim, + src/testdir/test_winbuf_close.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_writefile.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_utf8.vim, + src/testdir/test_global.vim, src/testdir/test_tagfunc.vim + +Patch 8.2.1184 (after 8.2.1183) +Problem: Some tests fail. +Solution: Adjust tests for different assert_fails() behavior. Remove unused + variable. +Files: src/testdir/test_assert.vim, src/testdir/test_eval_stuff.vim, + src/evalvars.c + +Patch 8.2.1185 (after 8.2.1183) +Problem: Some other tests fail. +Solution: Adjust tests for different assert_fails() behavior. +Files: src/testdir/test_lua.vim, src/testdir/test_tcl.vim + +Patch 8.2.1186 +Problem: With SGR mouse codes balloon doesn't show up after click. +Solution: Add the MOUSE_RELEASE bits to mouse_code. +Files: src/mouse.c + +Patch 8.2.1187 +Problem: Terminal2 test sometimes hangs in the GUI on Travis. +Solution: Disable Test_zz2_terminal_guioptions_bang() for now. +Files: src/testdir/test_terminal2.vim + +Patch 8.2.1188 +Problem: Memory leak with invalid json input. +Solution: Free all keys at the end. (Dominique Pell茅, closes #6443, + closes #6442) +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.2.1189 +Problem: Vim9: line continuation in lambda doesn't always work. +Solution: Do not use a local evalarg unless there isn't one. (closes #6439) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1190 +Problem: Vim9: checking for Vim9 syntax is spread out. +Solution: Use in_vim9script(). +Files: src/vim9script.c, src/dict.c, src/eval.c, src/evalvars.c, + src/ex_docmd.c, src/list.c, src/scriptfile.c, src/userfunc.c + +Patch 8.2.1191 +Problem: Vim9: crash when function calls itself. +Solution: Add status UF_COMPILING. (closes #6441) +Files: src/structs.h, src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1192 +Problem: Lua test fails with older Lua version. +Solution: Adjust expected error messages. (closes #6444) +Files: src/testdir/test_lua.vim + +Patch 8.2.1193 +Problem: Terminal window not redrawn when dragging a popup window over it. +Solution: Redraw terminal window. (fixes #6438) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_term_01.dump, + src/testdir/dumps/Test_popupwin_term_02.dump + +Patch 8.2.1194 +Problem: Test failure because shell prompt differs. +Solution: Set the shell prompt. +Files: src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_term_01.dump, + src/testdir/dumps/Test_popupwin_term_02.dump + +Patch 8.2.1195 +Problem: Clientserver test fails on MS-Windows. +Solution: Expect a different error message. +Files: src/testdir/test_clientserver.vim + +Patch 8.2.1196 +Problem: Build failure with normal features. +Solution: Add #ifdef. +Files: src/popupwin.c + +Patch 8.2.1197 +Problem: Clientserver test still fails on MS-Windows. +Solution: Expect a different error message. +Files: src/testdir/test_clientserver.vim + +Patch 8.2.1198 +Problem: Terminal2 test sometimes hangs in the GUI on Travis. +Solution: Move test function to terminal3 to see if the problem moves too. +Files: src/testdir/test_terminal2.vim, src/testdir/test_terminal3.vim + +Patch 8.2.1199 +Problem: Not all assert functions are fully tested. +Solution: Test more assert functions. +Files: src/testing.c, src/testdir/test_assert.vim + +Patch 8.2.1200 +Problem: Vim9: cannot disassemble a lambda function. +Solution: Recognize "<lambda>123" as a function name. +Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1201 +Problem: Vim9: crash when passing number as dict key. +Solution: Check key type to be string. (closes #6449) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1202 +Problem: Vim9: crash when calling a closure from a builtin function. +Solution: Use the current execution context. (closes #6441) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1203 +Problem: Unused assignments in expression evaluation. +Solution: Move declarations and assignments to inner blocks where possible. +Files: src/eval.c + +Patch 8.2.1204 +Problem: Vim9: true and false not recognized in Vim9 script. +Solution: Recognize true and false. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1205 +Problem: Vim9: && and || work differently when not compiled. +Solution: Keep the value. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1206 +Problem: Vim9: crash in expr test when run in the GUI. +Solution: Temporarily comment out two test lines. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1207 +Problem: Vim9: crash in expr test when run in the GUI. +Solution: Break out of loop over hashtab also when function got removed and + added. +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1208 +Problem: Build failure. +Solution: Add missing change. +Files: src/structs.h + +Patch 8.2.1209 +Problem: Vim9: test failure. +Solution: Add missing changes to hashtab. +Files: src/hashtab.c + +Patch 8.2.1210 +Problem: Using ht_used when looping through a hashtab is less reliable. +Solution: Use ht_changed in a few more places. +Files: src/userfunc.c, src/if_py_both.h + +Patch 8.2.1211 (after 8.2.1118) +Problem: Removed more than dead code. +Solution: Put back the decrement. +Files: src/move.c, src/testdir/test_diffmode.vim + +Patch 8.2.1212 +Problem: Cannot build with Lua 5.4. +Solution: Use luaL_typeerror instead defining it. (closes #6454) +Files: src/if_lua.c + +Patch 8.2.1213 +Problem: Mouse codes not tested sufficiently. +Solution: Add more tests for mouse codes. (closes #6436) +Files: src/testdir/test_termcodes.vim + +Patch 8.2.1214 +Problem: MS-Windows: default _vimrc not correct in silent install mode. +Solution: Add the LoadDefaultVimrc macro. (Ken Takata, closes #6451) +Files: nsis/gvim.nsi + +Patch 8.2.1215 +Problem: Atari MiNT support is outdated. +Solution: Nobody responded this code is still useful, so let's delete it. +Files: Filelist, src/os_mint.h, src/vim.h, src/Make_mint.mak, + src/digraph.c, src/fileio.c, src/memfile.c, src/os_unix.c, + src/term.c, READMEdir/README_extra.txt, runtime/doc/os_mint.txt, + src/INSTALL + +Patch 8.2.1216 +Problem: Startup test fails. +Solution: Adjust expected values for deleted lines. +Files: src/testdir/test_startup.vim + +Patch 8.2.1217 +Problem: Startup test depends on random source file. +Solution: Write a test file to find quickfix errors in. +Files: src/testdir/test_startup.vim + +Patch 8.2.1218 +Problem: Vim9: cannot use 'text'->func(). +Solution: Recognize string at start of command. +Files: src/vim9compile.c, src/ex_docmd.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1219 +Problem: Symlink not followed if dirname ends in //. +Solution: Resolve symlink earlier. (Tom谩拧 Janou拧ek, closes #6454) +Files: src/memline.c, src/testdir/test_swap.vim + +Patch 8.2.1220 +Problem: memory access error when dragging a popup window over a buffer + with folding. +Solution: Avoid going over the end of the cache. (closes #6438) +Files: src/mouse.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_term_01.dump, + src/testdir/dumps/Test_popupwin_term_02.dump, + src/testdir/dumps/Test_popupwin_term_03.dump, + src/testdir/dumps/Test_popupwin_term_04.dump + +Patch 8.2.1221 +Problem: Memory leak when updating popup window. +Solution: Clear search highlighting. +Files: src/popupwin.c + +Patch 8.2.1222 +Problem: When using valgrind a Vim command started by a test uses the same + log file name which gets overwritten. +Solution: Fix regexp to rename the log file. +Files: src/testdir/shared.vim + +Patch 8.2.1223 +Problem: Vim9: invalid type error for function default value. +Solution: Use right argument index. (closes #6458) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1224 +Problem: Vim9: arguments from partial are not used. +Solution: Put the partial arguments on the stack. (closes #6460) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1225 +Problem: Linker errors when building with dynamic Python 3.9. +Solution: Add #defined items. (closes #6461) +Files: src/if_python3.c + +Patch 8.2.1226 +Problem: MS-Windows: windows positioning wrong when the taskbar is placed + at the top or left of the screen. +Solution: Use GetWindowRect and MoveWindow APIs. (Yukihiro Nakadaira, + Ken Takata, closes #6455) +Files: src/gui_w32.c + +Patch 8.2.1227 +Problem: Vim9: allowing both quoted and # comments is confusing. +Solution: Only support # comments in Vim9 script. +Files: runtime/doc/vim9.txt, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/vim9compile.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1228 +Problem: Scrollbars not flush against the window edges when maximised. +Solution: Add padding. (Ken Takata, closes #5602, closes #6466) +Files: src/gui.c, src/gui_athena.c, src/gui_gtk.c, src/gui_haiku.cc, + src/gui_mac.c, src/gui_motif.c, src/gui_photon.c, src/gui_w32.c, + src/proto/gui_athena.pro, src/proto/gui_gtk.pro, + src/proto/gui_haiku.pro, src/proto/gui_mac.pro, + src/proto/gui_motif.pro, src/proto/gui_photon.pro, + src/proto/gui_w32.pro + +Patch 8.2.1229 +Problem: Build error without the eval feature. +Solution: Declare starts_with_colon. Make function local. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 8.2.1230 +Problem: Vim9: list index error not caught by try/catch. +Solution: Do not bail out if an error is inside try/catch. (closes #6462) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1231 +Problem: MS-Windows: GUI code can be cleaned up. +Solution: Do a bit of cleaning up. (Ken Takata, closes #6465) +Files: src/gui_w32.c, src/proto/gui_w32.pro + +Patch 8.2.1232 +Problem: MS-Windows GUI: Snap cancelled by split command. +Solution: Do not cancel Snap when splitting a window. (Ken Takata, + closes #6467) +Files: src/gui_w32.c + +Patch 8.2.1233 +Problem: Vim9: various errors not caught by try/catch. +Solution: Do not bail out if an error is inside try/catch. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1234 +Problem: Lua build problem with old compiler. +Solution: Move declarations to start of the block. (Taro Muraoka, + closes #6477) +Files: src/if_lua.c + +Patch 8.2.1235 +Problem: Not all mouse codes covered by tests. +Solution: Add more tests for the mouse. (Yegappan Lakshmanan, closes #6472) +Files: src/testdir/mouse.vim, src/testdir/test_termcodes.vim + +Patch 8.2.1236 +Problem: Vim9: a few errors not caught by try/catch. +Solution: Do not bail out if an error is inside try/catch. Fix that a not + matching catch doesn't jump to :endtry. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1237 +Problem: Changing 'completepopup' after opening a popup has no effect. (Jay + Sitter) +Solution: Close the popup when the options are changed. (closes #6471) +Files: runtime/doc/options.txt, src/popupwin.c, src/proto/popupwin.pro, + src/optionstr.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_infopopup_8.dump + +Patch 8.2.1238 +Problem: Vim9: a few remaining errors not caught by try/catch. +Solution: Do not bail out if an error is inside try/catch. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1239 +Problem: "maxwidth" in 'completepopup' not obeyed. (Jay Sitter) +Solution: Add separate field for value from option. (closes #6470) +Files: src/structs.h, src/popupwin.c, src/popupmenu.c, + src/testdir/dumps/Test_popupwin_infopopup_9.dump + +Patch 8.2.1240 +Problem: GUI tests sometimes fail because of translations. +Solution: Reload the menus without translation. (Taro Muraoka, closes #6486) +Files: src/testdir/runtest.vim + +Patch 8.2.1241 +Problem: Cannot use getbufinfo() as a method. +Solution: Support using getbufinfo() as a method. (closes #6458) +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_bufwintabinfo.vim + +Patch 8.2.1242 +Problem: Vim9: no error if calling a function with wrong argument type. +Solution: Check types of arguments. (closes #6469) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.1243 +Problem: Vim9: cannot have a comment or empty line halfway a list at script + level. +Solution: Skip more than one line if needed. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/eval.c, + src/scriptfile.c + +Patch 8.2.1244 +Problem: Vim9: in lambda index assumes a list. +Solution: Use the value type to decide about list or dict. (closes #6479) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1245 +Problem: Build failure in tiny version. +Solution: Add #ifdef. +Files: src/scriptfile.c + +Patch 8.2.1246 +Problem: Vim9: comment after assignment doesn't work. +Solution: Skip over white space. (closes #6481) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1247 +Problem: Vim9: cannot index a character in a string. +Solution: Add ISN_STRINDEX instruction. (closes #6478) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1248 +Problem: Netbeans test is flaky in the GUI. +Solution: Filter out geometry messages. (Taro Muraoka, closes #6487) +Files: src/testdir/test_netbeans.vim + +Patch 8.2.1249 +Problem: Vim9: disassemble test fails. +Solution: Change INDEX to LISTINDEX. Add test for STRINDEX. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1250 +Problem: Vim9: cannot use the g:, b:, t: and w: namespaces. +Solution: Add instructions to push a dict for the namespaces. (closes #6480) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1251 +Problem: Vim9: warning for pointer usage, test failure undetected. +Solution: Fix pointer indirection. Give error when executing function + failed for any reason. Fix instruction names. +Files: src/vim9execute.c, src/userfunc.c, src/proto/userfunc.pro + +Patch 8.2.1252 +Problem: ":marks" may show '< and '> mixed up. +Solution: Show the mark position as where '< and '> would jump. +Files: src/mark.c, src/testdir/test_marks.vim + +Patch 8.2.1253 +Problem: CTRL-K in Insert mode gets <CursorHold> inserted. (Roland + Puntaier) +Solution: Do not reset did_cursorhold, restore it. (closes #6447) +Files: src/normal.c + +Patch 8.2.1254 +Problem: MS-Windows: regexp test may fail if 'iskeyword' set wrongly. +Solution: Override the 'iskeyword' value. (Taro Muraoka, closes #6502) +Files: src/testdir/test_regexp_utf8.vim + +Patch 8.2.1255 +Problem: Cannot use a lambda with quickfix functions. +Solution: Add support for lambda. (Yegappan Lakshmanan, closes #6499) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/quickfix.txt, src/channel.c, src/evalvars.c, + src/optionstr.c, src/proto/evalvars.pro, src/proto/quickfix.pro, + src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1256 +Problem: Vim9: type wrong after getting dict item in lambda. +Solution: Set the type to "any" after enforcing dict type. (closes #6491) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1257 +Problem: Vim9: list unpack doesn't work at the script level. +Solution: Detect unpack assignment better. (closes #6494) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1258 (after 8.2.1253) +Problem: CursorHold does not work well.a (Shane-XB-Qian) +Solution: Only restore did_cursorhold when using :normal. +Files: src/normal.c + +Patch 8.2.1259 +Problem: Empty group in 'tabline' may cause using an invalid pointer. +Solution: Set the group start position. (closes #6505) +Files: src/buffer.c, src/testdir/test_tabline.vim + +Patch 8.2.1260 +Problem: There is no good test for CursorHold. +Solution: Add a test. Remove duplicated test. (Yegappan Lakshmanan, + closes #6503) +Files: src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim, + src/testdir/test_normal.vim + +Patch 8.2.1261 +Problem: Vim9: common type of function not tested. +Solution: Add a test. Fix uncovered problems. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1262 +Problem: src/ex_cmds.c file is too big. +Solution: Move help related code to src/help.c. (Yegappan Lakshmanan, + closes #6506) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/cmdexpand.c, src/ex_cmds.c, src/help.c, src/proto.h, + src/proto/ex_cmds.pro, src/proto/help.pro + +Patch 8.2.1263 +Problem: Vim9: comparators use 'ignorecase' in Vim9 script. +Solution: Ignore 'ignorecase'. Use true and false instead of 1 and 0. + (closes #6497) +Files: src/eval.c, src/typval.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1264 +Problem: Terminal getwinpos() test is a bit flaky. +Solution: Call getwinpos() a bit later. +Files: src/testdir/test_terminal3.vim + +Patch 8.2.1265 +Problem: Crash with EXITFREE when split() fails. +Solution: Restore 'cpoptions'. +Files: src/evalfunc.c + +Patch 8.2.1266 (after 8.2.1262) +Problem: Makefile preference were accidentally included. +Solution: Revert the Makefile changes. +Files: src/Makefile + +Patch 8.2.1267 +Problem: MS-Windows: tests may fail due to $PROMPT value. +Solution: Set $PROMPT for testing. (Taro Muraoka, closes #6510) +Files: src/testdir/runtest/vim + +Patch 8.2.1268 +Problem: Vim9: no error for using double quote comment after :func or :def. +Solution: Only accept double quote when not in Vim9 script and not after + :def. (closes #6483) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1269 +Problem: Language and locale code spread out. +Solution: Move relevant code to src/locale.c. (Yegappan Lakshmanan, + closes #6509) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_morph.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/ex_cmds2.c, src/locale.c, src/main.c, src/proto.h, + src/proto/ex_cmds2.pro, src/proto/locale.pro + +Patch 8.2.1270 +Problem: Vim9: not skipping over function type declaration with only a + return type. +Solution: Skip over the return type. (issue #6507) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1271 +Problem: Vim9: Error for Funcref function argument type. +Solution: Find the actual function type if possible. (issue #6507) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1272 +Problem: Vim9: type not checked if declaration also assigns value. +Solution: Check the type. (issue #6507) +Files: src/eval.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim9script.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1273 +Problem: MS-Windows: terminal test may leave file behind. +Solution: Wait a moment for process to end before deleting the file. + (Taro Muraoka, closes #6513) +Files: src/testdir/test_terminal.vim + +Patch 8.2.1274 +Problem: Vim9: no error for missing white space in assignment at script + level. +Solution: Check for white space. (closes #6495) +Files: src/eval.c, src/evalvars.c, src/testdir/test_vim9_script.vim, + src/testdir/test_let.vim + +Patch 8.2.1275 +Problem: Vim9: compiler warning for buffer size. +Solution: Change the offset from 10 to 15. (Dominique Pell茅, closes #6518) +Files: src/vim9script.c + +Patch 8.2.1276 +Problem: MS-Windows: system test may fail if more.exe is installed. +Solution: Explicitly use more.com. (Taro Muraoka, Ken Takata, closes #6517) +Files: src/testdir/test_system.vim + +Patch 8.2.1277 +Problem: Tests on Travis do not run with EXITFREE. +Solution: Add EXITFREE to all builds to uncover any mistakes. +Files: .travis.yml + +Patch 8.2.1278 +Problem: Vim9: line break after "->" only allowed in :def function. +Solution: Only allow line break after "->". (closes #6492) +Files: src/vim9compile.c, src/globals.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.1279 +Problem: Some tests on Travis have EXITFREE duplicated. +Solution: Remove EXITFREE from shadowopt. Add "shadow" to job name. +Files: .travis.yml + +Patch 8.2.1280 +Problem: Ex command error cannot contain an argument. +Solution: Add ex_errmsg() and translate earlier. Use e_trailing_arg where + possible. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/buffer.c, + src/ex_eval.c, src/match.c, src/testdir/test_tabpage.vim + +Patch 8.2.1281 +Problem: The "trailing characters" error can be hard to understand. +Solution: Add the trailing characters to the message. +Files: src/cmdhist.c, src/eval.c, src/evalfunc.c, src/evalvars.c, + src/ex_cmds.c, src/ex_docmd.c, src/ex_eval.c, src/json.c, + src/menu.c, src/quickfix.c, src/sign.c, src/userfunc.c + +Patch 8.2.1282 +Problem: Vim9: crash when using CheckScriptFailure() in + Test_vim9script_call_fail_decl(). +Solution: Do not decrement the def_functions len unless the function was + newly added. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1283 +Problem: Vim9: error for misplaced -> lacks argument. +Solution: Use the pointer before it was advanced. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1284 +Problem: Vim9: skipping over type includes following white space, leading + to an error for missing white space. +Solution: Do not skip over white space after the type. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1285 +Problem: Vim9: argument types are not checked on assignment. +Solution: Check function argument types. (issue #6507) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1286 +Problem: Vim9: No error when using a type on a window variable +Solution: Recognize the syntax and give an error. (closes #6521) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1287 +Problem: Vim9: crash when using an imported function. +Solution: Add the function type to the imported entry. (closes #6522) +Files: src/vim9script.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1288 +Problem: Vim9: cannot use mark in range. +Solution: Use the flag that a colon was seen. (closes #6528) +Files: src/ex_docmd.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1289 +Problem: Crash when using a custom completion function. +Solution: Initialize all of the expand_T. (closes #6532) +Files: src/cmdexpand.c + +Patch 8.2.1290 +Problem: Vim9: cannot replace a global function. +Solution: Allow for "!" on a global function. (closes #6524) Also fix that + :delfunc on a :def function only made it empty. +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1291 +Problem: Vim9: type of varargs items is not checked. +Solution: Check the list item types. (closes #6523) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1292 +Problem: AIDL filetype not recognized. +Solution: Add filetype detection. (Dominique Pell茅, closes #6533) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1293 +Problem: Vim9: :execute mixes up () expression and function call. +Solution: Do not skip white space when looking for the "(". (closes #6531) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1294 +Problem: Vim9: error when using vim9script in TextYankPost. +Solution: Use EX_LOCKOK instead of the EX_CMDWIN flag for command that can + be used when text is locked. (closes #6529) +Files: src/ex_cmds.h, src/ex_docmd.c + +Patch 8.2.1295 +Problem: Tests 44 and 99 are old style. +Solution: Convert to new style tests. (Yegappan Lakshmanan, closes #6536) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_vms.mms, + src/testdir/test44.in, src/testdir/test44.ok, + src/testdir/test99.in, src/testdir/test99.ok, + src/testdir/test_regexp_utf8.vim + +Patch 8.2.1296 +Problem: Some part of using 'smartcase' was not tested. +Solution: Add more tests. (Dominique Pell茅, closes #6538) +Files: src/testdir/test_search.vim + +Patch 8.2.1297 +Problem: When a test fails it's often not easy to see what the call stack + is. +Solution: Add more entries from the call stack in the exception message. +Files: runtime/doc/cmdline.txt, src/scriptfile.c, + src/proto/scriptfile.pro, src/debugger.c, src/ex_docmd.c, + src/ex_eval.c, src/message.c, src/testing.c, + src/testdir/test_expand_func.vim + +Patch 8.2.1298 +Problem: Compiler warning for unused argument in small version. +Solution: Add UNUSED. +Files: src/scriptfile.c + +Patch 8.2.1299 +Problem: Compiler warning for using size_t for int and void pointer. +Solution: Add type casts. +Files: src/scriptfile.c + +Patch 8.2.1300 +Problem: Vim9: optional argument type not parsed properly. +Solution: Skip over the "?". (issue #6507) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/evalvars.c, + src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1301 +Problem: Vim9: varargs argument type not parsed properly. +Solution: Skip over the "...". (issue #6507) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1302 +Problem: Vim9: varargs arg after optional arg does not work +Solution: Check for the "..." first. (issue #6507) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1303 +Problem: Calling popup_setoptions() resets 'signcolumn'. +Solution: Only set 'signcolumn' when creating the popup. (closes #6542) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.1304 +Problem: Debug backtrace isn't tested much. +Solution: Add more specific tests. (Ben Jackson, closes #6540) +Files: src/testdir/runtest.vim, src/testdir/test_debugger.vim + +Patch 8.2.1305 +Problem: Some tests are still old style. +Solution: Convert tests 52 and 70 to new style. (Yegappan Lakshmanan, + closes #6544) Fix error in FinishTesting(). +Files: src/testdir/runtest.vim, src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_vms.mms, + src/testdir/test52.in, src/testdir/test52.ok, + src/testdir/test70.in, src/testdir/test70.ok, + src/testdir/test_mzscheme.vim, src/testdir/test_writefile.vim + +Patch 8.2.1306 +Problem: Checking for first character of dict key is inconsistent. +Solution: Add eval_isdictc(). (closes #6546) +Files: src/eval.c, src/proto/eval.pro, src/vim9compile.c, + src/testdir/test_listdict.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_let.vim + +Patch 8.2.1307 +Problem: popup window width does not include number, fold of sign column + width. +Solution: Take number, fold and sign column with into account. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_sign_2.dump + +Patch 8.2.1308 +Problem: Vim9: accidentally using "x" causes Vim to exit. +Solution: Disallow using ":x" or "xit" in Vim9 script. (closes #6399) +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/vim9script.c, + src/proto/vim9script.pro, src/ex_docmd.c, src/ex_cmds.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1309 +Problem: Build failure with tiny version. +Solution: Add #ifdef. +Files: src/ex_cmds.c, src/ex_docmd.c + +Patch 8.2.1310 +Problem: Configure with Xcode 12 fails to check for tgetent. +Solution: Declare tgetent(). (Ozaki Kiichi, closes #6558) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.1311 +Problem: Test failures with legacy Vim script. +Solution: Actually check for Vim9 script. +Files: src/vim9script.c + +Patch 8.2.1312 +Problem: MS-Windows: terminal test may fail if dir.exe exists. +Solution: Use dir.com. (Ken Takata, closes #6557) +Files: src/testdir/test_terminal3.vim + +Patch 8.2.1313 +Problem: Vim9 script: cannot assign to environment variable. +Solution: Recognize environment variable assignment. (closes #6548) + Also options and registers. +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1314 +Problem: Vim9: rule for comment after :function is confusing. +Solution: Allow double quoted comment after :function in vim9script. + (closes #6556) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1315 +Problem: MS-Windows: test log contains escape sequences. +Solution: Do not use t_md and t_me but ANSI escape sequences. (Ken Takata, + closes #6559) +Files: src/testdir/runtest.vim + +Patch 8.2.1316 +Problem: Test 42 is still old style. +Solution: Turn it into a new style test. (Yegappan Lakshmanan, closes #6561) +Files: src/Makefile, src/testdir/Make_all.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + src/testdir/test42.in, src/testdir/test42.ok, + src/testdir/test_writefile.vim + +Patch 8.2.1317 +Problem: MS-Windows tests on AppVeyor are slow. +Solution: Use GitHub Actions. (Ken Takata, closes #6569) +Files: Filelist, .github/workflows/ci-windows.yaml, appveyor.yml, + ci/appveyor.bat + +Patch 8.2.1318 +Problem: No status badge for Github CI. +Solution: Add a badge. +Files: README.md + +Patch 8.2.1319 +Problem: Status badge for Github CI has wrong link. +Solution: Rename and use the right link +Files: README.md, .github/workflows/ci-windows.yaml + +Patch 8.2.1320 +Problem: Vim9: cannot declare some single letter variables. +Solution: Do not recognize a colon for a namespace for single letter + variables. (closes #6547) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1321 +Problem: GitHub CI also runs on tag push. +Solution: Skip CI on push. (Ken Takata, closes #6571) +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1322 +Problem: Vim9: method on double quoted string doesn't work. +Solution: Recognize double quoted string. (closes #6562) +Files: src/ex_docmd.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1323 +Problem: Vim9: invalid operators only rejected in :def function. +Solution: Also reject them at script level. (closes #6564) +Files: src/eval.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1324 +Problem: Vim9: line break after "=" does not work. +Solution: Also allow for NUL after "=". (closes #6549) +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1325 +Problem: Vim9: using Vim9 script for autoload not tested. +Solution: Add a test. Update help. +Files: runtime/doc/vim9.txt, src/testdir/test_autoload.vim, + src/testdir/sautest/autoload/auto9.vim + +Patch 8.2.1326 +Problem: Vim9: skipping over white space after list. +Solution: Do not skip white space, a following [] would be misinterpreted. + (closes #6552) Fix a few side effects. +Files: src/list.c, src/dict.c, src/eval.c, src/userfunc.c, + src/testdir/test_functions.vim, src/testdir/test_gn.vim, + src/testdir/test_popupwin.vim, src/testdir/test_tabpage.vim, + src/testdir/test_textprop.vim, src/testdir/test_textobjects.vim + +Patch 8.2.1327 +Problem: Mac: configure can't find Tcl libraries. +Solution: Adjust configure check. (closes #6575) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.1328 +Problem: No space allowed before comma in list. +Solution: Legacy Vim script allows it. (closes #6577) +Files: src/dict.c, src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.1329 +Problem: Vim9: cannot define global function inside :def function. +Solution: Assign to global variable instead of local. (closes #6584) +Files: src/vim9compile.c, src/userfunc.c, src/proto/userfunc.pro, + src/vim9.h, src/vim9execute.c, src/structs.h, + src/misc2.c, src/proto/misc2.pro, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1330 +Problem: Github workflow takes longer than needed. +Solution: Do two test runs in parallel instead of sequentially. (Ken Takata, + closes #6579) +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1331 +Problem: Vim9: :echo with two lists doesn't work. +Solution: Do not skip white space before []. (closes #6552) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1332 +Problem: Vim9: memory leak when using nested global function. +Solution: Delete the function when deleting the instruction. Disable test + that still causes a leak. +Files: src/vim9compile.c, src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.1333 +Problem: Vim9: memory leak when using nested global function. +Solution: Swap from and to when copying the lines. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1334 +Problem: Github workflow timeout needs tuning +Solution: Use a 10 minute timeout. Fail when timing out. (Ken Takata, + closes #6590) +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1335 +Problem: CTRL-C in the GUI doesn't interrupt. (Sergey Vlasov) +Solution: Recognize "C" with CTRL modifier as CTRL-C. (issue #6565) +Files: src/gui.c, src/proto/gui.pro, src/gui_gtk_x11.c, src/gui_x11.c, + src/gui_photon.c + +Patch 8.2.1336 (after 8.2.1335) +Problem: Build failure on non-Unix systems. +Solution: Add #ifdef. +Files: src/gui.c + +Patch 8.2.1337 +Problem: Vim9: cannot use empty key in dict assignment. +Solution: Allow empty key. (closes #6591) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1338 +Problem: Vim9: assigning to script-local variable doesn't check type. +Solution: Use the type. (issue #6591) +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1339 +Problem: Vim9: assigning to global dict variable doesn't work. +Solution: Guess variable type based in index type. (issue #6591) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1340 +Problem: Some tests fail on Cirrus CI and/or with FreeBSD. +Solution: Make 'backupskip' empty. Do not run tests as root. Check for + directory when using viminfo. (Ozaki Kiichi, closes #6596) +Files: .cirrus.yml, src/testdir/test_backup.vim, + src/testdir/test_edit.vim, src/testdir/test_viminfo.vim, + src/testdir/test_writefile.vim, src/viminfo.c + +Patch 8.2.1341 +Problem: Build failures. +Solution: Add missing error message. +Files: src/globals.h + +Patch 8.2.1342 +Problem: Vim9: accidentally using "x" gives a confusing error. +Solution: Disallow using ":t" in Vim9 script. (issue #6399) +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/vim9script.c, + src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1343 +Problem: Vim9: cannot find global function when using g: when local + function with the same name exists. +Solution: Find global function when using g:. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1344 +Problem: Vim9: No test for trying to redefine global function. +Solution: Add a test. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1345 +Problem: Redraw error when using visual block and scroll. +Solution: Add check for w_topline. (closes #6597) +Files: src/drawscreen.c, src/testdir/test_display.vim, + src/testdir/dumps/Test_display_visual_block_scroll.dump + +Patch 8.2.1346 +Problem: Small build fails. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.1347 +Problem: Cannot easily get the script ID. +Solution: Support expand('<SID>'). +Files: runtime/doc/map.txt, src/ex_docmd.c, + src/testdir/test_expand_func.vim + +Patch 8.2.1348 +Problem: Build failure without the eval feature. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.1349 +Problem: Vim9: can define a function with the name of an import. +Solution: Disallow using an existing name. (closes #6585) +Files: src/userfunc.c, src/vim9compile.c, src/globals.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.1350 +Problem: Vim9: no test for error message when redefining function. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1351 +Problem: Vim9: no proper error if using namespace for nested function. +Solution: Specifically check for a namespace. (closes #6582) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1352 +Problem: Vim9: no error for shadowing a script-local function by a nested + function. +Solution: Check for script-local function. (closes #6586) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1353 +Problem: Crash when drawing double-wide character in terminal window. + (Masato Nishihata) +Solution: Check getcell() returning NULL. (issue #6141) +Files: src/libvterm/src/screen.c, src/testdir/test_terminal.vim + +Patch 8.2.1354 +Problem: Test 59 is old style. +Solution: Convert into a new style test. (Yegappan Lakshmanan, closes #6604) +Files: runtime/doc/eval.txt, src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_vms.mms, src/testdir/test59.in, + src/testdir/test59.ok, src/testdir/test_spell_utf8.vim + +Patch 8.2.1355 +Problem: Vim9: no error using :let for options and registers. +Solution: Give an error. (closes #6568) +Files: src/evalvars.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1356 +Problem: Vim9: cannot get the percent register. +Solution: Check for readable registers instead of writable. (closes #6566) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1357 +Problem: Vim9: cannot assign to / register. +Solution: Adjust check for assignment. (issue #6566) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1358 +Problem: Vim9: test fails with +dnd is not available. +Solution: Add condition. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1359 +Problem: Vim9: cannot assign to / register in Vim9 script. +Solution: Adjust check for assignment in Vim9 script. (closes #6567) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1360 +Problem: Stray error for white space after expression. +Solution: Ignore trailing white space. (closes #6608) +Files: src/eval.c, src/testdir/test_filter_map.vim + +Patch 8.2.1361 +Problem: Error for white space after expression in assignment. +Solution: Skip over white space. (closes #6617) +Files: src/eval.c, src/testdir/test_expr.vim + +Patch 8.2.1362 +Problem: Last entry of ":set term=xxx" overwritten by error message when + 'cmdheight' is two or more. (Tony Mechelynck) +Solution: Output extra line breaks. +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.1363 +Problem: Test trying to run terminal when it is not supported. +Solution: Check if Vim can be run in a terminal. +Files: src/testdir/test_termcodes.vim + +Patch 8.2.1364 +Problem: Invalid memory access when searching for raw string. +Solution: Check for delimiter match before following quote. (closes #6578) +Files: src/search.c + +Patch 8.2.1365 +Problem: Vim9: no error for missing white space around operator. +Solution: Check for white space. (closes #6618) +Files: src/eval.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/evalvars.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1366 +Problem: Test 49 is old style. +Solution: Convert several tests to new style. (Yegappan Lakshmanan, + closes #6629) +Files: src/testdir/script_util.vim, src/testdir/test49.ok, + src/testdir/test49.vim, src/testdir/test_vimscript.vim + +Patch 8.2.1367 +Problem: Vim9: no error for missing white space around operator. +Solution: Check for white space around *, / and %. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1368 +Problem: Vim9: no error for missing white space around operator. +Solution: Check for white space around <, !=, etc. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1369 +Problem: MS-Windows: autocommand test sometimes fails. +Solution: Do not rely on the cat command. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.1370 +Problem: MS-Windows: warning for using fstat() with stat_T. +Solution: use _fstat64() if available. (Naruhiko Nishino, closes #6625) +Files: src/macros.h + +Patch 8.2.1371 +Problem: Vim9: no error for missing white space around operator. +Solution: Check for white space around && and ||. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1372 +Problem: Vim9: no error for missing white space around operator. +Solution: Check for white space around ? and :. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1373 +Problem: Vim9: no error for assigning to non-existing script var. +Solution: Check that in Vim9 script the variable was defined. (closes #6630) +Files: src/vim9compile.c, src/userfunc.c, src/structs.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.1374 +Problem: Vim9: error for assigning empty list to script variable. +Solution: Use t_unknown for empty list member. (closes #6595) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1375 +Problem: Vim9: method name with digit not accepted. +Solution: Use eval_isnamec() instead of eval_isnamec1(). (closes #6613) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1376 +Problem: Vim9: expression mapping causes error for using :import. +Solution: Add EX_LOCK_OK to :import and :export. (closes #6606) +Files: src/ex_cmds.h, src/testdir/test_vim9_script.vim + +Patch 8.2.1377 +Problem: Triggering the ATTENTION prompt causes typeahead to be messed up. +Solution: Increment tb_change_cnt. (closes #6541) +Files: src/getchar.c + +Patch 8.2.1378 +Problem: Cannot put space between function name and paren. +Solution: Allow this for backwards compatibility. +Files: src/eval.c, src/testdir/test_expr.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1379 +Problem: Curly braces expression ending in " }" does not work. +Solution: Skip over white space when checking for "}". (closes #6634) +Files: src/dict.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.1380 +Problem: Vim9: return type of getreg() is always a string. +Solution: Use list of strings when there are three arguments. (closes #6633) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1381 +Problem: MS-Windows: crash with Python 3.5 when stdin is redirected. +Solution: Reconnect stdin. (Yasuhiro Matsumoto, Ken Takata, closes #6641) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/if_python3.c + +Patch 8.2.1382 +Problem: Vim9: using :import in filetype plugin gives an error. +Solution: Allow commands with the EX_LOCK_OK flag. (closes #6636) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1383 +Problem: Test 49 is old style. +Solution: Convert test cases to new style. (Yegappan Lakshmanan, + closes #6638) +Files: src/testdir/test49.ok, src/testdir/test49.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.1384 +Problem: No ATTENTION prompt for :vimgrep first match file. +Solution: When there is an existing swap file do not keep the dummy buffer. + (closes #6649) +Files: src/quickfix.c, src/testdir/runtest.vim, + src/testdir/test_quickfix.vim + +Patch 8.2.1385 +Problem: No testing on ARM. +Solution: Add a test on Travis for ARM. (Ozaki Kiichi, closes #6615) +Files: .travis.yml + +Patch 8.2.1386 +Problem: Backslash not removed after space in option with space in + 'isfname'. +Solution: Do remove backslash before space, also when it is in 'isfname'. + (Yasuhiro Matsumoto, closes #6651) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.2.1387 +Problem: Vim9: cannot assign to single letter variable with type. +Solution: Exclude the colon from the variable name. (closes #6647) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1388 +Problem: Vim9: += only works for numbers. +Solution: Use += as concatenate for a list. (closes #6646) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1389 +Problem: File missing from the distribution. +Solution: Add script_util.vim to the list of distributes files. +Files: Filelist + +Patch 8.2.1390 +Problem: Vim9: type error after storing an option value. +Solution: Drop the type after a STOREOPT instruction. (closes #6632) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1391 +Problem: Vim9: no error for shadowing a script function. +Solution: Check for already defined items. (closes #6652) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1392 +Problem: Vim9: error line number incorrect after skipping over comment + lines. +Solution: Insert empty lines for skipped lines. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1393 +Problem: Insufficient testing for script debugging. +Solution: Add more tests. (Ben Jackson) +Files: src/testdir/test_debugger.vim + +Patch 8.2.1394 +Problem: Vim9: compiling a function interferes with command modifiers. +Solution: Save and restore command modifiers. (closes #6658) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1395 +Problem: Vim9: no error if declaring a funcref with a lower case letter. +Solution: Check the name after the type is inferred. Fix confusing name. +Files: src/vim9compile.c, src/dict.c, src/eval.c, src/evalvars.c, + src/proto/evalvars.pro, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1396 +Problem: Vim9: no error for unexpectedly returning a value. +Solution: Only set the return type for lambda's. Make using function type + in a function reference work. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1397 +Problem: Vim9: return type of maparg() not adjusted for fourth argument. +Solution: Check if fourth argument is present. (closes #6645) +Files: src/evalfunc.c, src/testdir/test_maparg.vim + +Patch 8.2.1398 +Problem: Autoload script sourced twice if sourced directly. +Solution: Do not source an autoload script again. (issue #6644) +Files: src/scriptfile.c, src/testdir/sautest/autoload/sourced.vim + +Patch 8.2.1399 +Problem: Vim9: may find imported item in wrong script. +Solution: When looking up script-local function use the embedded script ID. + (issue #6644) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1400 +Problem: Vim9: test does not delete written files. +Solution: Correct file names. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1401 +Problem: Cannot jump to the last used tabpage. +Solution: Add g<Tab> and tabpagnr('#'). (Yegappan Lakshmanan, closes #6661, + neovim #11626) +Files: runtime/doc/eval.txt, runtime/doc/index.txt, + runtime/doc/tabpage.txt, src/evalwindow.c, src/globals.h, + src/normal.c, src/proto/window.pro, src/testdir/test_tabpage.vim, + src/window.c + +Patch 8.2.1402 +Problem: s390x tests always fail. +Solution: Temporarily disable s390x tests. +Files: .travis.yml + +Patch 8.2.1403 +Problem: Vim9: Vim highlighting fails in cmdline window if it uses Vim9 + commands. +Solution: Allow using :vim9script, :import and :export while in the cmdline + window. (closes #6656) +Files: src/ex_cmds.h, src/testdir/test_vim9_script.vim + +Patch 8.2.1404 +Problem: Vim9: script test fails in the GUI. +Solution: Use another key to map. Improve cleanup. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1405 +Problem: Vim9: vim9compile.c is getting too big. +Solution: Split off type code to vim9type.c. +Files: Filelist, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim9type.c, src/proto/vim9type.pro, src/proto.h, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Makefile + +Patch 8.2.1406 +Problem: Popupwindow lacks scrollbar if no "maxheight" is used. +Solution: Compute the max height depending on the position. (closes #6664) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_toohigh_1.dump, + src/testdir/dumps/Test_popupwin_toohigh_2.dump + +Patch 8.2.1407 +Problem: Vim9: type of list and dict only depends on first item. +Solution: Use all items to decide about the type. +Files: src/vim9compile.c, src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vim9_expr.vim, runtime/doc/vim9.txt + +Patch 8.2.1408 +Problem: Vim9: type casting not supported. +Solution: Introduce type casting. +Files: runtime/doc/vim9.txt, src/vim9compile.c, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1409 +Problem: Npmrc and php.ini filetypes not recognized. +Solution: Add filetype detection. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1410 +Problem: Adding compiler plugin requires test change. +Solution: Include compiler plugin and adjust test. +Files: src/testdir/test_compiler.vim, runtime/compiler/xo.vim + +Patch 8.2.1411 +Problem: when splitting a window localdir is copied but prevdir is not. +Solution: Also copy prevdir. (closes #6667) +Files: src/window.c, src/testdir/test_cd.vim + +Patch 8.2.1412 +Problem: Vim: not operator does not result in boolean. +Solution: Make type depend on operator. (issue 6678) Fix using "false" and + "true" in Vim9 script. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1413 (after 8.2.1401) +Problem: Previous tab page not usable from an Ex command. +Solution: Add the "#" argument for :tabnext et al. (Yegappan Lakshmanan, + closes #6677) +Files: runtime/doc/tabpage.txt, src/ex_docmd.c, src/window.c, + src/testdir/test_tabpage.vim + +Patch 8.2.1414 +Problem: Popupwindow missing last couple of lines when cursor is in the + first line. +Solution: Compute the max height also when top aligned. (closes #6664) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_toohigh_3.dump, + src/testdir/dumps/Test_popupwin_nospace.dump + +Patch 8.2.1415 +Problem: Closing a popup window with CTRL-C interrupts 'statusline' if it + calls a function. +Solution: Reset got_int while redrawing. (closes #6675) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_ctrl_c.dump + +Patch 8.2.1416 +Problem: Vim9: boolean evaluation does not work as intended. +Solution: Use tv2bool() in Vim9 script. (closes #6681) +Files: src/eval.c, src/testdir/test_vim9_expr.vim, src/testdir/vim9.vim + +Patch 8.2.1417 +Problem: Test 49 is old style. +Solution: Convert more parts to new style test. (Yegappan Lakshmanan, + closes #6682) +Files: src/testdir/test49.ok, src/testdir/test49.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.1418 +Problem: Vim9: invalid error for missing white space after function. +Solution: Do not skip over white space. (closes #6679) +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1419 +Problem: Vim9: not operator applied too early. +Solution: Implement the "numeric_only" argument. (closes #6680) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1420 +Problem: Test 49 is old style. +Solution: Convert remaining parts to new style. Remove obsolete items. + (Yegappan Lakshmanan, closes #6683) +Files: Filelist, runtime/doc/testing.txt, src/Make_mvc.mak, src/Makefile, + src/testdir/Make_all.mak, src/testdir/Make_amiga.mak, + src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_vms.mms, src/testdir/Makefile, + src/testdir/README.txt, src/testdir/test49.in, + src/testdir/test49.ok, src/testdir/test49.vim, + src/testdir/test_quickfix.vim, src/testdir/test_vimscript.vim + +Patch 8.2.1421 +Problem: Vim9: handling "+" and "-" before number differs from Vim script. +Solution: Use the same sequence of commands. +Files: src/vim9compile.c + +Patch 8.2.1422 +Problem: The Mac GUI implementation is outdated and probably doesn't even + work. +Solution: Remove the Mac GUI code. The MacVim project provides the + supported Vim GUI version. +Files: Filelist, src/gui_mac.c, src/proto/gui_mac.pro, src/proto.h, + src/Makefile, src/configure.ac, src/auto/configure, + src/evalfunc.c, src/fileio.c, src/gui.c, src/if_mzsch.c, + src/main.c, src/misc2.c, src/mouse.c, src/os_mac_conv.c, + src/os_unix.c, src/feature.h, src/globals.h, src/gui.h, + src/option.h, src/optiondefs.h, src/os_mac.h, src/structs.h, + src/vim.h, src/INSTALLmac.txt + +Patch 8.2.1423 +Problem: Vim9: find global function when looking for script-local. +Solution: Don't strip prefix if name starts with "s:". (closes #6688) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1424 (after 8.2.1422) +Problem: Mac build fails. +Solution: Adjust configure to not fall back to Athena. Adjust some other + files. +Files: src/configure.ac, src/auto/configure, src/os_macosx.m, + src/version.c + +Patch 8.2.1425 +Problem: Vim9: cannot use call() without :call. +Solution: Do not skip over "call(". (closes #6689) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1426 +Problem: Vim9: cannot call autoload function in :def function. +Solution: Load the autoload script. (closes #6690) +Files: src/vim9execute.c, src/vim9compile.c, src/scriptfile.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1427 +Problem: Vim9: cannot use a range with marks in :def function. +Solution: Parse range after colon. (closes #6686) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1428 +Problem: Vim9: :def function does not abort on nested function error. +Solution: Check whether an error message was given. (closes #6691) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1429 +Problem: Vim9: no error for missing white after : in dict. +Solution: Check for white space. (closes #6671) Also check that there is no + white before the :. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1430 +Problem: Vim9: error for missing comma instead of extra white space. +Solution: Check if comma can be found after white space. (closes #6668) + Also check for extra white space in literal dict. (closes #6670) +Files: src/list.c, src/dict.c, src/vim9compile.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1431 +Problem: Vim9: no error for white space before comma in dict. +Solution: Check for extra white space. (closes #6674) +Files: src/vim9compile.c, src/dict.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1432 +Problem: Various inconsistencies in test files. +Solution: Add modelines where they were missing. Use Check commands instead + of silently skipping over tests. Adjust indents and comments. + (Ken Takata, closes #6695) +Files: src/testdir/test_arglist.vim, src/testdir/test_assert.vim, + src/testdir/test_autochdir.vim, src/testdir/test_autocmd.vim, + src/testdir/test_autoload.vim, src/testdir/test_balloon.vim, + src/testdir/test_balloon_gui.vim, src/testdir/test_behave.vim, + src/testdir/test_blockedit.vim, src/testdir/test_breakindent.vim, + src/testdir/test_bufline.vim, src/testdir/test_bufwintabinfo.vim, + src/testdir/test_cd.vim, src/testdir/test_changedtick.vim, + src/testdir/test_changelist.vim, src/testdir/test_channel.vim, + src/testdir/test_checkpath.vim, src/testdir/test_cindent.vim, + src/testdir/test_cjk_linebreak.vim, + src/testdir/test_clientserver.vim, + src/testdir/test_close_count.vim, src/testdir/test_cmdline.vim, + src/testdir/test_command_count.vim, + src/testdir/test_comparators.vim, src/testdir/test_compiler.vim, + src/testdir/test_crypt.vim, src/testdir/test_cursorline.vim, + src/testdir/test_curswant.vim, src/testdir/test_debugger.vim, + src/testdir/test_delete.vim, src/testdir/test_diffmode.vim, + src/testdir/test_digraph.vim, src/testdir/test_display.vim, + src/testdir/test_edit.vim, src/testdir/test_environ.vim, + src/testdir/test_erasebackword.vim, + src/testdir/test_escaped_glob.vim, src/testdir/test_ex_equal.vim, + src/testdir/test_ex_undo.vim, src/testdir/test_ex_z.vim, + src/testdir/test_exec_while_if.vim, src/testdir/test_exists.vim, + src/testdir/test_exists_autocmd.vim, src/testdir/test_exit.vim, + src/testdir/test_expand_dllpath.vim, + src/testdir/test_expr_utf8.vim, src/testdir/test_feedkeys.vim, + src/testdir/test_file_size.vim, src/testdir/test_fileformat.vim, + src/testdir/test_filter_cmd.vim, + src/testdir/test_find_complete.vim, src/testdir/test_findfile.vim, + src/testdir/test_fixeol.vim, src/testdir/test_flatten.vim, + src/testdir/test_fnameescape.vim, src/testdir/test_fold.vim, + src/testdir/test_functions.vim, src/testdir/test_ga.vim, + src/testdir/test_getcwd.vim, src/testdir/test_getvar.vim, + src/testdir/test_glob2regpat.vim, src/testdir/test_global.vim, + src/testdir/test_gui.vim, src/testdir/test_gui_init.vim, + src/testdir/test_highlight.vim, src/testdir/test_hlsearch.vim, + src/testdir/test_iminsert.vim, + src/testdir/test_increment_dbcs.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_interrupt.vim, + src/testdir/test_job_fails.vim, src/testdir/test_join.vim, + src/testdir/test_json.vim, src/testdir/test_jumplist.vim, + src/testdir/test_jumps.vim, src/testdir/test_lambda.vim, + src/testdir/test_langmap.vim, src/testdir/test_largefile.vim, + src/testdir/test_lineending.vim, src/testdir/test_listchars.vim, + src/testdir/test_listener.vim, src/testdir/test_listlbr.vim, + src/testdir/test_listlbr_utf8.vim, + src/testdir/test_makeencoding.vim, src/testdir/test_man.vim, + src/testdir/test_mapping.vim, src/testdir/test_marks.vim, + src/testdir/test_matchadd_conceal.vim, + src/testdir/test_matchadd_conceal_utf8.vim, + src/testdir/test_memory_usage.vim, src/testdir/test_menu.vim, + src/testdir/test_messages.vim, src/testdir/test_mksession.vim, + src/testdir/test_modeline.vim, + src/testdir/test_nested_function.vim, src/testdir/test_number.vim, + src/testdir/test_options.vim, src/testdir/test_packadd.vim, + src/testdir/test_partial.vim, src/testdir/test_paste.vim, + src/testdir/test_plus_arg_edit.vim, src/testdir/test_preview.vim, + src/testdir/test_profile.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_quickfix.vim, src/testdir/test_quotestar.vim, + src/testdir/test_random.vim, src/testdir/test_recover.vim, + src/testdir/test_regex_char_classes.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_registers.vim, + src/testdir/test_rename.vim, src/testdir/test_retab.vim, + src/testdir/test_scriptnames.vim, src/testdir/test_scroll_opt.vim, + src/testdir/test_scrollbind.vim, src/testdir/test_search_stat.vim, + src/testdir/test_searchpos.vim, src/testdir/test_set.vim, + src/testdir/test_sha256.vim, src/testdir/test_shift.vim, + src/testdir/test_shortpathname.vim, src/testdir/test_signs.vim, + src/testdir/test_sort.vim, src/testdir/test_sound.vim, + src/testdir/test_source_utf8.vim, src/testdir/test_spellfile.vim, + src/testdir/test_startup.vim, src/testdir/test_startup_utf8.vim, + src/testdir/test_stat.vim, src/testdir/test_suspend.vim, + src/testdir/test_swap.vim, src/testdir/test_syntax.vim, + src/testdir/test_tab.vim, src/testdir/test_tabline.vim, + src/testdir/test_tagcase.vim, src/testdir/test_tagjump.vim, + src/testdir/test_taglist.vim, src/testdir/test_termcodes.vim, + src/testdir/test_termencoding.vim, src/testdir/test_terminal.vim, + src/testdir/test_terminal2.vim, src/testdir/test_terminal3.vim, + src/testdir/test_terminal_fail.vim, + src/testdir/test_true_false.vim, + src/testdir/test_utf8_comparisons.vim, + src/testdir/test_vartabs.vim, src/testdir/test_version.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_winbar.vim, + src/testdir/test_winbuf_close.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_window_id.vim, + src/testdir/test_windows_home.vim, src/testdir/test_wnext.vim, + src/testdir/test_wordcount.vim, src/testdir/test_writefile.vim, + src/testdir/test_xxd.vim + +Patch 8.2.1433 +Problem: Vim9: cannot mingle comments in multi-line lambda. +Solution: Skip over NULL lines. (closes #6694) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1434 +Problem: Vim9: crash when lambda uses outer function argument. +Solution: Set the flag that the outer context is used. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1435 +Problem: Vim9: always converting to string for ".." leads to mistakes. +Solution: Only automatically convert simple types. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/vim9.h, + src/vim9execute.c, src/proto/vim9execute.pro, src/eval.c, + src/evalfunc.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1436 +Problem: Function implementing :substitute has unexpected name. +Solution: Rename from do_sub() to ex_substitute(). +Files: src/ex_cmds.c, src/proto/ex_cmds.pro, src/ex_docmd.c, + src/ex_cmds.h + +Patch 8.2.1437 +Problem: Vim9: 'statusline' is evaluated using Vim9 script syntax. +Solution: Always use legacy script syntax. +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1438 +Problem: Missing tests for interrupting script execution from debugger. +Solution: Add tests. (Yegappan Lakshmanan, closes #6697) +Files: src/testdir/test_debugger.vim + +Patch 8.2.1439 +Problem: Tiny and small builds have no test coverage. +Solution: Restore tests that do not depend on the +eval feature. + (Ken Takata, closes #6696) +Files: .travis.yml, Filelist, Makefile, runtime/doc/testing.txt, + src/Make_mvc.mak, src/Makefile, src/testdir/Make_all.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Make_vms.mms, + src/testdir/Makefile, src/testdir/runtest.vim, + src/testdir/test1.in, src/testdir/test1.ok, src/testdir/test20.in, + src/testdir/test20.ok, src/testdir/test21.in, + src/testdir/test21.ok, src/testdir/test22.in, + src/testdir/test22.ok, src/testdir/test23.in, + src/testdir/test23.ok, src/testdir/test24.in, + src/testdir/test24.ok, src/testdir/test25.in, + src/testdir/test25.ok, src/testdir/test26.in, + src/testdir/test26.ok, src/testdir/test27.in, + src/testdir/test27.ok, src/testdir/test_options.vim + +Patch 8.2.1440 +Problem: Debugger code insufficiently tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #6700) +Files: src/testdir/test_debugger.vim, src/testdir/test_vimscript.vim + +Patch 8.2.1441 +Problem: Running tests in tiny version gives error for summarize.vim. +Solution: Set 'cpoptions' to allow for line continuation. Restore + redirecting test output to /dev/null. +Files: src/testdir/summarize.vim, src/testdir/Makefile + +Patch 8.2.1442 +Problem: Outdated references to the Mac Carbon GUI. +Solution: Remove or update references. (Yee Cheng Chin, closes #6703) +Files: READMEdir/README_extra.txt, src/Makefile, src/configure.ac, + src/auto/configure, src/gui_haiku.cc, src/os_macosx.m, + src/testdir/test_iminsert.vim, src/vim.h + +Patch 8.2.1443 +Problem: Vim9: crash when interrupting a nested :def function. +Solution: Push a dummy return value onto the stack. (closes #6701) +Files: src/vim9execute.c + +Patch 8.2.1444 +Problem: Error messages are spread out and names can be confusing. +Solution: Start moving error messages to a separate file and use clear + names. +Files: Filelist, src/vim.h, src/globals.h, src/errors.h, src/Makefile, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/dict.c, src/evalvars.c, src/ex_docmd.c, src/list.c, + src/userfunc.c, src/vim9compile.c, src/vim9execute.c, + src/vim9script.c, src/vim9type.c + +Patch 8.2.1445 +Problem: Vim9: function expanded name is cleared when sourcing a script + again. +Solution: Only clear the expanded name when deleting the function. + (closes #6707) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1446 +Problem: Vim9: line number in error message is not correct. +Solution: Set SOURCING_LNUM before calling emsg(). (closes #6708) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1447 +Problem: Vim9: return type of keys() is list<any>. +Solution: Should be list<string>. (closes #6711) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1448 +Problem: Test 77a for VMS depends on small.vim which does not exist. +Solution: Use the 'silent while 0" trick. (issue #6696) +Files: src/testdir/test77a.in + +Patch 8.2.1449 +Problem: Some test makefiles delete files that are not generated. +Solution: Remove the deletion commands. +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Make_amiga.mak, src/testdir/Make_vms.mms + +Patch 8.2.1450 +Problem: Vim9: no check that script-local items don't become global. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1451 +Problem: Vim9: list type at script level only uses first item. +Solution: Use all members, like in a compiled function. (closes #6712) + Also for dictionary. +Files: src/vim9type.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1452 +Problem: Vim9: dead code in to_name_end(). +Solution: Remove check for lambda and dict, it won't be used. +Files: src/vim9compile.c + +Patch 8.2.1453 +Problem: Vim9: failure to compile lambda not tested. +Solution: Add a test case. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1454 +Problem: Vim9: failure invoking lambda with wrong arguments. +Solution: Handle invalid arguments. Add a test. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1455 +Problem: Vim9: crash when using typecast before constant. +Solution: Generate constant before checking type. Add tets. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1456 +Problem: MS-Windows: test files are not deleted. +Solution: use "del" instead of $(DEL). +Files: src/testdir/Make_dos.mak + +Patch 8.2.1457 +Problem: Vim9: the output of :disassemble cannot be interrupted. +Solution: Check got_int. (closes #6715) +Files: src/vim9execute.c + +Patch 8.2.1458 +Problem: .gawk files not recognized. +Solution: Recognize .gawk files. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1459 +Problem: Vim9: declaring a script variable at the script level does not + infer the type. +Solution: Get the type from the value. (closes #6716) +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1460 +Problem: Error messages are spread out. +Solution: Move more messages into errors.h. +Files: src/errors.h, src/globals.h, src/vim9compile.c, src/vim9execute.c, + src/vim9script.c, src/vim9type.c, src/scriptfile.c, src/ex_cmds.c, + src/ex_docmd.c, src/match.c, src/eval.c, src/evalvars.c, + src/userfunc.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1461 +Problem: Vim9: string indexes are counted in bytes. +Solution: Use character indexes. (closes #6574) +Files: runtime/doc/eval.txt, src/eval.c, src/proto/eval.pro, + src/vim9execute.c, src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1462 +Problem: Vim9: string slice not supported yet. +Solution: Add support for string slicing. +Files: src/errors.h, src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/eval.c, src/proto/eval.pro, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1463 +Problem: Vim9: list slice not supported yet. +Solution: Add support for list slicing. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/eval.c, + src/list.c, src/proto/list.pro, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1464 +Problem: Vim9: build warning for unused variable. +Solution: Delete the variable declaration. +Files: src/vim9execute.c + +Patch 8.2.1465 +Problem: Vim9: subscript not handled properly. +Solution: Adjust error message. Remove dead code. Disallow string to + number conversion in scripts. +Files: src/errors.h, src/vim9compile.c, src/vim9execute.c, src/eval.c, + src/typval.c, src/list.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1466 +Problem: Vim9: cannot index or slice a variable with type "any". +Solution: Add runtime index and slice. +Files: src/eval.c, src/proto/eval.pro, src/vim9compile.c, + src/vim9execute.c, src/vim9.h, src/errors.h, src/list.c, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1467 +Problem: Vim9: :echomsg doesn't like a dict argument. +Solution: Convert arguments like in legacy script. (closes #6717) +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1468 +Problem: Vim9: invalid error for missing white space. +Solution: Don't skip over white space after index. (closes #6718) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1469 +Problem: Vim9: cannot assign string to string option. +Solution: Change checks for option value. (closes #6720) +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1470 +Problem: Errors in spell file not tested. +Solution: Add test for spell file errors. (Yegappan Lakshmanan, + closes #6721) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.1471 +Problem: :const only locks the variable, not the value. +Solution: Lock the value as ":lockvar 1 var" would do. (closes #6719) +Files: src/evalvars.c, src/testdir/test_const.vim + +Patch 8.2.1472 +Problem: ":argdel" does not work like ":.argdel" as documented. (Alexey + Demin) +Solution: Make ":argdel" work like ":.argdel". (closes #6727) + Also fix giving the error "0 more files to edit". +Files: src/arglist.c, src/ex_docmd.c, src/testdir/test_arglist.vim + +Patch 8.2.1473 +Problem: Items in a list given to :const can still be modified. +Solution: Work like ":lockvar! name" but don't lock referenced items. + Make locking a blob work. +Files: runtime/doc/eval.txt, src/evalvars.c, src/eval.c, + src/testdir/test_const.vim + +Patch 8.2.1474 +Problem: /usr/lib/udef/rules.d not recognized as udevrules. +Solution: Adjust match pattern. (Haochen Tong, closes 36722) +Files: runtime/autoload/dist/ft.vim, src/testdir/test_filetype.vim + +Patch 8.2.1475 +Problem: Vim9: can't use v:true for option flags. +Solution: Add tv_get_bool_chk(). (closes #6725) +Files: src/typval.c, src/proto/typval.pro, src/channel.c + +Patch 8.2.1476 (after 8.2.1474) +Problem: Filetype test fails on MS-Windows. +Solution: Remove "^" from pattern. +Files: runtime/autoload/dist/ft.vim + +Patch 8.2.1477 +Problem: Vim9: error when using bufnr('%'). +Solution: Don't give an error for using a string argument. (closes #6723) +Files: src/evalbuffer.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1478 +Problem: Vim9: cannot use "true" for some popup options. +Solution: Add dict_get_bool(). (closes #6725) +Files: src/dict.c, src/proto/dict.pro, src/popupwin.c + +Patch 8.2.1479 +Problem: Vim9: error for list index uses wrong line number. +Solution: Set source line number. (closes #6724) Add a way to assert the + line number of the error with assert_fails(). +Files: runtime/doc/testing.txt, src/vim9execute.c, src/testing.c, + src/evalfunc.c, src/message.c, src/globals.h, src/testdir/vim9.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1480 +Problem: Vim9: skip expression in search() gives error. +Solution: use tv_get_bool() eval_expr_to_bool(). (closes #6729) +Files: src/eval.c, src/typval.c, src/proto/typval.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.1481 +Problem: Vim9: line number reported with error may be wrong. +Solution: Check line number in tests. +Files: src/testdir/test_vim9_expr.vim, src/testdir/vim9.vim, + src/vim9execute.c + +Patch 8.2.1482 +Problem: Vim9: crash when using a nested lambda. +Solution: Do not clear the growarray when not evaluating. Correct pointer + when getting the next line. (closes #6731) +Files: src/eval.c, src/scriptfile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1483 +Problem: Vim9: error for using special as number when returning "false" + from a popup filter. +Solution: Use tv_get_bool(). (closes #6733) +Files: src/popupwin.c + +Patch 8.2.1484 +Problem: Flaky failure in assert_fails(). +Solution: Only used fourth argument if there is a third argument. +Files: src/testing.c + +Patch 8.2.1485 +Problem: Vim9: readdirex() expression doesn't accept bool. +Solution: Accept both -1 and bool. (closes #6737) +Files: src/filepath.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1486 +Problem: Vim9: readdir() expression doesn't accept bool. +Solution: Merge with code for readdirex(). (closes #6737) +Files: src/filepath.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1487 +Problem: Travis: installing snd-dummy is not always useful. +Solution: Only install snd-dummy on amd64. (Ozaki Kiichi, closes #6738) +Files: .travis.yml, ci/load-snd-dummy.sh + +Patch 8.2.1488 +Problem: Text does not scroll when inserting above first line. +Solution: Adjust off-by-one error. (Ken Takata, closes #6739) +Files: src/drawscreen.c, src/testdir/test_display.vim, + src/testdir/dumps/Test_display_scroll_at_topline.dump + +Patch 8.2.1489 +Problem: Vim9: error when setting an option with setbufvar(). +Solution: Do not get a number from a string value. (closes #6740) +Files: src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1490 +Problem: Vim9: using /= with float and number doesn't work. +Solution: Better support assignment with operator. (closes #6742) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1491 +Problem: Vim9: crash when compiling heredoc lines start with comment. +Solution: Skip over NULL pointers. Do not remove comment and empty lines + when fetching function lines. (closes #6743) +Files: src/vim9compile.c, src/scriptfile.c, src/proto/scriptfile.pro, + src/structs.h, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/ex_cmds.h, src/autocmd.c, src/proto/autocmd.pro, + src/ex_getln.c, src/proto/ex_getln.pro, src/userfunc.c, + src/proto/userfunc.pro, src/evalfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1492 +Problem: Build failures. +Solution: Move typedef out of #ifdef. Adjust argument types. Discover + America. +Files: src/structs.h, src/ex_docmd.c + +Patch 8.2.1493 +Problem: Not enough test coverage for the spell file handling. +Solution: Add spell file tests. (Yegappan Lakshmanan, closes #6728) +Files: src/spellfile.c, src/testdir/test_spellfile.vim + +Patch 8.2.1494 +Problem: Missing change to calling eval_getline(). +Solution: Change last argument. +Files: src/eval.c + +Patch 8.2.1495 +Problem: "make clean" may delete too many files. +Solution: Do not delete $APPDIR. (closes #6751) +Files: src/Makefile + +Patch 8.2.1496 +Problem: Vim9: cannot use " #" in a mapping. +Solution: Do not remove a comment with the EX_NOTRLCOM flag. (closes #6746) +Files: src/ex_docmd.c, src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1497 +Problem: CursorHold test is flaky. (Jakub K膮dzio艂ka) +Solution: Use WaitForAssert() (closes #6754) +Files: src/testdir/test_autocmd.vim + +Patch 8.2.1498 +Problem: On slow systems tests can be flaky. +Solution: Use TermWait() instead of term-wait(). (Yegappan Lakshmanan, + closes #6756) +Files: src/testdir/test_digraph.vim, src/testdir/test_display.vim, + src/testdir/test_popupwin.vim, src/testdir/test_termcodes.vim, + src/testdir/test_terminal.vim, src/testdir/test_terminal3.vim, + src/testdir/test_writefile.vim + +Patch 8.2.1499 +Problem: Vim9: error when using "$" with col(). +Solution: Reorder getting the column value. (closes #6744) +Files: src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1500 +Problem: Vim9: error when using address without a command. +Solution: Execute the range itself. (closes #6747) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1501 +Problem: Vim9: concatenating to constant reverses order. +Solution: Generate constant before option, register and environment + variable. (closes #6757) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1502 +Problem: Vim9: can use += with a :let command at script level. +Solution: Give an error. +Files: src/evalvars.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1503 +Problem: Vim9: error for an autocmd defined in a :def function in legacy + Vim script. +Solution: Don't check the variable type. (closes #6758) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1504 +Problem: Vim9: white space checks are only done for a :def function. +Solution: Also do checks at the script level. Adjust the name of a few + error messages. +Files: src/userfunc.c, src/errors.h, src/dict.c, src/list.c, + src/vim9compile.c, src/vim9script.c, src/vim9type.c, + src/evalvars.c, src/testdir/test_vim9_expr.vim, + src/testdir/vim9.vim + +Patch 8.2.1505 +Problem: Not all file read and writecode is tested. +Solution: Add a few tests. (Dominique Pell茅, closes #6764) +Files: src/testdir/test_eval_stuff.vim, src/testdir/test_fnamemodify.vim, + src/testdir/test_functions.vim + +Patch 8.2.1506 +Problem: Vim9: no error when using a number other than 0 or 1 as bool. +Solution: Check the number is 0 or 1. +Files: src/errors.h, src/typval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1507 +Problem: Using malloc() directly. +Solution: Use ALLOC_ONE(). Remove superfluous typecast. (Hussam al-Homsi, + closes #6768) +Files: src/eval.c, src/memline.c, src/vimrun.c + +Patch 8.2.1508 +Problem: Not all debugger commands covered by tests. +Solution: Add tests for going up/down in the stack. (Ben Jackson, + closes #6765) +Files: src/testdir/test_debugger.vim + +Patch 8.2.1509 +Problem: Vertical separator is cleared when dragging a popup window using a + multi-byte character for the border. +Solution: Only clear the character before the window if it is using a + multi-byte character. (closes #6766) +Files: src/screen.c + +Patch 8.2.1510 +Problem: Using "var" in a :def function may refer to a legacy Vim script + variable. +Solution: Require using "s:" to refer to a legacy Vim script variable. + (closes #6771) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1511 +Problem: Putting a string in Visual block mode ignores multi-byte + characters. +Solution: Adjust the column for Visual block mode. (closes #6767) +Files: src/register.c, src/testdir/test_visual.vim + +Patch 8.2.1512 +Problem: Failure after ternary expression fails. +Solution: Restore eval_flags. (Yasuhiro Matsumoto, closes #6776) +Files: src/eval.c, src/testdir/test_vimscript.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1513 +Problem: Cannot interrupt shell used for filename expansion. (Dominique + Pell茅) +Solution: Do set tmode in mch_delay(). (closes #6770) +Files: src/vim.h, src/os_unix.c, src/proto/os_unix.pro, src/term.c, + src/channel.c, src/if_cscope.c, src/os_amiga.c, src/ui.c, + src/proto/os_amiga.pro, src/os_win32.c, src/proto/os_win32.pro + +Patch 8.2.1514 +Problem: Multibyte vertical separator is cleared when dragging a popup + window using a multi-byte character for the border. +Solution: Only clear the character before the window if it is double width. + (closes #6766) +Files: src/screen.c + +Patch 8.2.1515 +Problem: Vim9: can create s:var in legacy script but cannot unlet. +Solution: Allow :unlet for legacy script var. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1516 +Problem: Vim9: error for :exe has wrong line number. +Solution: Set line number before calling do_cmdline_cmd(). (closes #6774) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1517 +Problem: Cannot easily get the character under the cursor. +Solution: Add the {chars} argument to strpart(). +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.2.1518 +Problem: Vim9: cannot assign to local option. +Solution: Skip over "&l:" and "&g:". (closes #6749) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/testdir/vim9.vim, + src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1519 +Problem: Vim9: Ex command default range is not set. +Solution: When range is not given use default. (closes #6779) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1520 +Problem: Vim9: CTRL-] used in :def function does not work. +Solution: Omit count or prepend colon. (closes #6769) +Files: src/normal.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1521 +Problem: Reading past end of buffer when reading spellfile. (Yegappan + Lakshmanan) +Solution: Store the byte length and check for it. +Files: src/spellfile.c, src/spell.h + +Patch 8.2.1522 +Problem: Not enough test coverage for the spell file handling. +Solution: Add spell file tests. (Yegappan Lakshmanan, closes #6763) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.1523 +Problem: Still not enough test coverage for the spell file handling. +Solution: Add spell file tests. (Yegappan Lakshmanan, closes #6790) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.1524 +Problem: No longer get an error for string concatenation with float. + (Tsuyoshi Cho) +Solution: Only convert float for Vim9 script. (closes #6787) +Files: src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.1525 +Problem: Messages from tests were not always displayed. +Solution: Always show messages, the timing is always useful. (Ken Takata, + closes #6792) +Files: src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, + src/testdir/Makefile + +Patch 8.2.1526 +Problem: Line in testdir Makefile got commented out. (Christian Brabandt) +Solution: Revert. +Files: src/testdir/Makefile + +Patch 8.2.1527 +Problem: Vim9: cannot use a function name as a function reference at script + level. +Solution: Check if a name is a function name. (closes #6789) +Files: src/evalvars.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1528 +Problem: Vim9: :endif not found after "if false". +Solution: When skipping still check for a following command. (closes #6797) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1529 +Problem: Vim9: :elseif may be compiled when not needed. +Solution: Do evaluate the :elseif expression. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1530 +Problem: Vim9: test fails on MS-Windows. +Solution: Skip Ex command inside "if false". +Files: src/vim9compile.c + +Patch 8.2.1531 +Problem: Vim9: test still fails on MS-Windows. +Solution: When skipping expect function to be NULL. +Files: src/vim9compile.c + +Patch 8.2.1532 +Problem: Compiler warning for conversion of size_t to long. +Solution: Add type cast. +Files: src/eval.c + +Patch 8.2.1533 +Problem: Vim9: error when passing getreginfo() result to setreg(). +Solution: Use dict_get_bool() for "isunnamed". (closes #6784) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1534 +Problem: Vim9: type error for argument type is not at call position. +Solution: Set the context and stack after checking the arguments. + (issue #6785) +Files: src/userfunc.c, src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1535 +Problem: It is not possible to specify cell widths of characters. +Solution: Add setcellwidths(). +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/mbyte.c, + src/proto/mbyte.pro, src/errors.h, src/testdir/test_utf8.vim + +Patch 8.2.1536 +Problem: Cannot get the class of a character; emoji widths are wrong in + some environments. +Solution: Add charclass(). Update some emoji widths. Add script to check + emoji widths. +Files: Filelist, runtime/doc/eval.txt, runtime/doc/usr_41.txt, + src/evalfunc.c, src/mbyte.c, src/proto/mbyte.pro, + src/testdir/emoji_list.vim, src/testdir/test_functions.vim + +Patch 8.2.1537 +Problem: Memory access error when using setcellwidths(). +Solution: Use array and pointers correctly. +Files: src/mbyte.c, src/errors.h, src/testdir/test_utf8.vim + +Patch 8.2.1538 +Problem: Python: iteration over vim objects fails to keep reference. +Solution: Keep a reference for the object. (Paul Ollis, closes #6803, + closes #6806) +Files: src/if_py_both.h, src/testdir/test_python3.vim + +Patch 8.2.1539 +Problem: Using invalid script ID causes a crash. +Solution: Check the script ID to be valid. (closes #6804) +Files: src/globals.h, src/evalvars.c, src/profiler.c, src/scriptfile.c, + src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1540 +Problem: The user cannot try out emoji character widths. +Solution: Move the emoji script to the runtime/tools directory. +Files: Filelist, src/testdir/emoji_list.vim, runtime/tools/emoji_list.vim + +Patch 8.2.1541 +Problem: Vim9: cannot find function reference for s:Func. +Solution: Recognize <SNR> prefix. (closes #6805) +Files: src/userfunc.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1542 +Problem: Vim9: test with invalid SID does not work in the GUI. +Solution: Skip the test in the GUI. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1543 +Problem: Vim9: test with invalid SID is skipped in the GUI. +Solution: Read the CTRL-C that feedkeys() put in typeahead. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1544 +Problem: Cannot translate messages in a Vim script. +Solution: Add gettext(). Try it out for a few messages in the options + window. +Files: Filelist, src/po/Makefile, src/po/README.txt, runtime/optwin.vim, + src/evalfunc.c, src/po/tojavascript.vim, src/po/fixfilenames.vim, + runtime/doc/eval.txt, runtime/doc/usr_41.txt + +Patch 8.2.1545 +Problem: ch_logfile() is unclear about closing when forking. +Solution: Adjust the log messages. +Files: src/channel.c, src/os_unix.c + +Patch 8.2.1546 +Problem: Build rule for Vim.app is unused. +Solution: Delete the related build rules. +Files: src/Makefile + +Patch 8.2.1547 +Problem: Various comment problems. +Solution: Update comments. +Files: src/arglist.c, src/map.c, src/mbyte.c, src/tag.c, src/undo.c, + src/testdir/README.txt, src/testdir/test_put.vim, + src/libvterm/README + +Patch 8.2.1548 +Problem: Cannot move position of "%%" in message translations. (Emir Sar谋) +Solution: Improve the check script. +Files: src/po/check.vim + +Patch 8.2.1549 +Problem: The "r" command fails for keys with modifiers if 'esckeys' is off + and modifyOtherKeys is used. (Lauri Tirkkonen) +Solution: Temporarily disable bracketed paste and modifyOtherKeys if + 'esckeys' is off. (closes #6809) +Files: src/normal.c + +Patch 8.2.1550 +Problem: Vim9: bufname('%') gives an error. +Solution: Only give an error for wrong argument type. (closes #6807) +Files: src/evalbuffer.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1551 +Problem: Vim9: error for argument type does not mention the number. +Solution: Pass the argument number to where the error is given. +Files: src/vim9type.c, src/proto/vim9type.pro, src/vim9compile.c, + src/vim9execute.c, src/vim9script.c, src/eval.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.1552 +Problem: Warnings from asan with clang-11. (James McCoy) +Solution: Avoid using a NULL pointer. (issue #6811) +Files: src/fold.c + +Patch 8.2.1553 (after 8.2.1552) +Problem: Crash in edit test. +Solution: Avoid using invalid pointer. +Files: src/fold.c + +Patch 8.2.1554 +Problem: Crash in normal test. +Solution: Skip adjusting marks if there are no folds. +Files: src/fold.c + +Patch 8.2.1555 +Problem: Not all tests are executed on Github Actions. +Solution: Copy "src" to "src2" earlier. Recognize "src2" in a couple more + places. Add two tests to the list of flaky tests. (Ken Takata, + closes #6798) +Files: .github/workflows/ci-windows.yaml, src/testdir/runtest.vim, + src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.2.1556 +Problem: Cursorline highlighting always overrules sign highlighting. +Solution: Combine the highlighting, use the priority to decide how. + (closes #6812) +Files: runtime/doc/sign.txt, src/structs.h, src/drawline.c, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim, + src/testdir/test_signs.vim, + src/testdir/dumps/Test_sign_cursor_5.dump, + src/testdir/dumps/Test_sign_cursor_6.dump + +Patch 8.2.1557 +Problem: Crash in :vimgrep when started as "vim -n". (Raul Segura) +Solution: Check mfp pointer. (Yegappan Lakshmanan, closes #6827) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1558 +Problem: Signs test fails. +Solution: Add missing change to sign.c. +Files: src/sign.c + +Patch 8.2.1559 +Problem: s390x tests work again. +Solution: re-enable s390x tests. (James McCoy, closes #6829) +Files: .travis.yml + +Patch 8.2.1560 +Problem: Using NULL pointers in some code. (James McCoy) +Solution: Avoid adding to a NULL pointer. Use byte as unsigned. +Files: src/fold.c, src/eval.c, src/spellsuggest.c, src/spellfile.c, + src/vim9compile.c + +Patch 8.2.1561 +Problem: Using NULL pointers in fold code. +Solution: Avoid using a NULL pointer. (Dominique Pell茅, closes #6831, + closes #6831) +Files: src/fold.c + +Patch 8.2.1562 +Problem: Vim9: error when using "%" where a buffer is expected. +Solution: Add tv_get_buf_from_arg(). (closes #6814) +Files: src/typval.c, src/proto/typval.pro, src/evalbuffer.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.1563 +Problem: Vim9: error when using '%" with setbufvar() or getbufvar(). +Solution: Use tv_get_buf_from_arg(). (closes #6816) +Files: src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1564 +Problem: A few remaining errors from ubsan. +Solution: Avoid the warnings. (Dominique Pell茅, closes #6837) +Files: src/spellfile.c, src/spellsuggest.c, src/viminfo.c + +Patch 8.2.1565 +Problem: Spellfile test sometimes fails. +Solution: Check running into the end of the file. +Files: src/spellfile.c + +Patch 8.2.1566 +Problem: Not all Bazel files are recognized. +Solution: Add *.bazel and *.BUILD. (closes #6836) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1567 +Problem: No example to use ubsan with clang. +Solution: Add example commands. (Dominique Pell茅, issue #6811) +Files: src/Makefile + +Patch 8.2.1568 +Problem: prop_find() skips properties in the same line if "skipstart" is + used. +Solution: Use "continue" instead of "break". (closes #6840) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.1569 +Problem: Vim9: fixes for functions not tested; failure in getchangelist(). +Solution: Add tests. (closes #6813, closes #6815, closes #6817) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1570 +Problem: Configure check for dirfd() does not work on HPUX. (Michael Osipov) +Solution: Use AC_TRY_LINK instead of AC_TRY_COMPILE. (closes #6838) +Files: src/configure.ac, src/auto/configure, src/fileio.c, src/globals.h + +Patch 8.2.1571 +Problem: Vim9: count() third argument cannot be "true". +Solution: Use tv_get_bool_chk(). (closes #6818) +Files: src/typval.c, src/list.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1572 +Problem: Vim9: expand() does not take "true" as argument. +Solution: Use tv_get_bool_chk(). (closes #6819) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1573 +Problem: Vim9: getreg() does not take "true" as argument. +Solution: Use tv_get_bool_chk(). (closes #6820) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1574 +Problem: Vim9: glob() does not take "true" as argument. +Solution: Use tv_get_bool_chk(). (closes #6821) +Files: src/filepath.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1575 +Problem: Vim9: globpath() does not take "true" as argument. +Solution: Use tv_get_bool_chk(). (closes #6821) +Files: src/filepath.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1576 +Problem: Vim9: index() does not take "true" as argument. +Solution: Use tv_get_bool_chk(). (closes #6823) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1577 +Problem: Vim9: hasmapto(), mapcheck() and maparg() do not take "true" as + argument. +Solution: Use tv_get_bool(). (closes #6822, closes #6824) +Files: src/evalfunc.c, src/map.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1578 +Problem: Vim9: popup_clear() does not take "true" as argument. +Solution: Use tv_get_bool(). (closes #6826) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.1579 +Problem: Reports from asan are not optimal. +Solution: Use clang with ubsan. (James McCoy, closes #6811) +Files: .travis.yml + +Patch 8.2.1580 +Problem: Wildmenu does not work properly. +Solution: Do not call may_do_incsearch_highlighting() if completion is in + progress. +Files: src/ex_getln.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_1.dump, + src/testdir/dumps/Test_wildmenu_2.dump, + src/testdir/dumps/Test_wildmenu_3.dump, + src/testdir/dumps/Test_wildmenu_4.dump + +Patch 8.2.1581 +Problem: Using line() for global popup window doesn't work. +Solution: Set tabpage to "curtab". (closes #6847) +Files: src/evalwindow.c, src/testdir/test_popupwin.vim + +Patch 8.2.1582 +Problem: The channel log does not show typed text. +Solution: Add raw typed text to the log file. +Files: src/ui.c, src/os_win32.c + +Patch 8.2.1583 +Problem: MS-Windows: cannot easily measure code coverage. +Solution: Add the COVERAGE option. (Ken Takata, closes #6842) +Files: src/Make_cyg_ming.mak + +Patch 8.2.1584 +Problem: Vim9: cannot use "true" for "skipstart" in prop_find(). +Solution: Use dict_get_bool() instead of tv_get_number(). (closes #6852) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.1585 +Problem: Messages in errors.h not translated, xgettext on MS-Windows not + fully supported. +Solution: Add errors.h to list of input files. Update MS-Windows makefiles + to improve message translations. (Ken Takata, closes #6858) +Files: src/po/Make_cyg.mak, src/po/Make_ming.mak, src/po/Make_mvc.mak, + src/po/Makefile, src/po/README.txt, src/po/fixfilenames.vim + +Patch 8.2.1586 +Problem: :resize command not fully tested. +Solution: Add a couple of tests. (Dominique Pell茅, closes #6857) +Files: src/testdir/test_window_cmd.vim + +Patch 8.2.1587 +Problem: Loop for handling keys for the command line is too long. +Solution: Move wild menu handling to separate functions. (Yegappan + Lakshmanan, closes #6856) +Files: src/cmdexpand.c, src/proto/cmdexpand.pro, src/ex_getln.c + +Patch 8.2.1588 +Problem: Cannot read back the prompt of a prompt buffer. +Solution: Add prompt_getprompt(). (Ben Jackson, closes #6851) +Files: runtime/doc/channel.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, src/channel.c, src/edit.c, src/evalfunc.c, + src/proto/channel.pro, src/proto/edit.pro, + src/testdir/test_prompt_buffer.vim + +Patch 8.2.1589 +Problem: Term_start() options for size are overruled by 'termwinsize'. + (Sergey Vlasov) +Solution: Set 'termwinsize' to the specified size. +Files: src/terminal.c, src/testdir/test_terminal2.vim, + src/testdir/term_util.vim + +Patch 8.2.1590 +Problem: Vim9: bufnr() doesn't take "true" argument. +Solution: use tv_get_bool_chk(). (closes #6863) +Files: src/evalbuffer.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1591 +Problem: Using winheight('.') in tests works but is wrong. +Solution: Use winheight(0). (issue #6863) +Files: src/testdir/test_functions.vim, src/testdir/test_quickfix.vim + +Patch 8.2.1592 +Problem: Vim9: passing "true" to char2nr() fails. +Solution: Use tv_get_bool_chk(). (closes #6865) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1593 +Problem: Tests do not check the error number properly. +Solution: Add a colon after the error number. (closes #6869) +Files: src/testdir/test_assert.vim, src/testdir/test_autocmd.vim, + src/testdir/test_backspace_opt.vim, src/testdir/test_channel.vim, + src/testdir/test_clientserver.vim, src/testdir/test_cmdline.vim, + src/testdir/test_const.vim, src/testdir/test_cscope.vim, + src/testdir/test_eval_stuff.vim, src/testdir/test_functions.vim, + src/testdir/test_global.vim, src/testdir/test_gui.vim, + src/testdir/test_hlsearch.vim, src/testdir/test_lambda.vim, + src/testdir/test_let.vim, src/testdir/test_listdict.vim, + src/testdir/test_move.vim, src/testdir/test_normal.vim, + src/testdir/test_popupwin.vim, src/testdir/test_put.vim, + src/testdir/test_quickfix.vim, src/testdir/test_rename.vim, + src/testdir/test_search.vim, src/testdir/test_signs.vim, + src/testdir/test_substitute.vim, src/testdir/test_syntax.vim, + src/testdir/test_tagfunc.vim, src/testdir/test_tagjump.vim, + src/testdir/test_taglist.vim, src/testdir/test_terminal.vim, + src/testdir/test_terminal2.vim, src/testdir/test_textprop.vim, + src/testdir/test_timers.vim, src/testdir/test_true_false.vim, + src/testdir/test_user_func.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_vimscript.vim, + src/testdir/test_winbar.vim, src/testdir/test_winbuf_close.vim, + src/testdir/test_window_cmd.vim, src/testdir/test_writefile.vim + +Patch 8.2.1594 +Problem: Pull requests on github do not notify a maintainer. +Solution: Add a CODEOWNERS file with a few initial entries. +Files: Filelist, .github/CODEOWNERS + +Patch 8.2.1595 +Problem: Cannot easily see what Vim sends to the terminal. +Solution: Write output to the channel log if it contains terminal control + sequences. Avoid warnings for tputs() argument. +Files: src/term.c, src/globals.h, src/edit.c, src/normal.c, + src/optionstr.c + +Patch 8.2.1596 +Problem: Using win_screenpos('.') in tests works but is wrong. +Solution: Use win_screenpos(0). +Files: src/testdir/test_terminal3.vim + +Patch 8.2.1597 +Problem: The channel source file is too big. +Solution: Move job related code to a new source file. +Files: Filelist, src/Makefile, src/Make_mvc.mak, src/Make_cyg_ming.mak, + src/channel.c, src/proto/channel.pro, src/job.c, + src/proto/job.pro, src/proto.h, src/edit.c, src/proto/edit.pro, + src/globals.h, src/configure.ac, src/auto/configure + +Patch 8.2.1598 +Problem: Starting a hidden terminal resizes the current window. +Solution: Do not resize the current window for a hidden terminal. + (closes #6872) +Files: src/terminal.c, src/testdir/test_terminal2.vim + +Patch 8.2.1599 +Problem: Missing line end when skipping a long line with :cgetfile. +Solution: Fix off-by-one error. (closes #6870) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1600 +Problem: Vim9: cannot use "true" with deepcopy(). +Solution: Use tv_get_bool_chk(). (closes #6867) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim, + src/testdir/test_listdict.vim + +Patch 8.2.1601 +Problem: Vim9: cannot use "true" with garbagecollect(). +Solution: Use tv_get_bool(). (closes #6871) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1602 +Problem: Vim9: cannot use "true" with getbufinfo(). +Solution: Use dict_get_bool(). (closes #6873) +Files: src/evalbuffer.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1603 +Problem: Vim9: cannot use "true" with getchar(). +Solution: use tv_get_bool_chk(). (closes #6874) +Files: src/getchar.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1604 +Problem: Vim9: cannot use "true" with getcompletion(). +Solution: use tv_get_bool_chk(). (closes #6875) +Files: src/cmdexpand.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1605 +Problem: Default maintainer on github is wrong. +Solution: Use Bram's account. +Files: .github/CODEOWNERS + +Patch 8.2.1606 +Problem: Vim9: cannot use "true" with has(). +Solution: Use tv_get_bool(). (closes #6876) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1607 +Problem: Vim9: getchar() test fails on MS-Windows. +Solution: First consume any available input. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1608 +Problem: Vim9: getchar() test fails with GUI. +Solution: Avoid that getchar(0) gets stuck on K_IGNORE. +Files: src/getchar.c + +Patch 8.2.1609 +Problem: Vim9: test fails when build without +channel. +Solution: Add check for +channel. (closes #6879) +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1610 +Problem: Vim9: cannot pass "true" to list2str() and str2list(). +Solution: Use tv_get_bool_chk(). (closes #6877) +Files: src/evalfunc.c, src/list.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1611 +Problem: Vim9: cannot pass "true" to nr2char(). +Solution: use tv_get_bool_chk(). (closes #6878) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1612 +Problem: Vim9: cannot pass "true" to prop_remove(). +Solution: Use dict_get_bool(). (closes #6853) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.1613 +Problem: Vim9: cannot pass "true" to prop_type_add(). +Solution: Use tv_get_bool(). (closes #6850) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.1614 +Problem: Vim9: cannot pass "true" to searchcount(). +Solution: Use tv_get_bool_chk(). (closes #6854) +Files: src/search.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1615 +Problem: Vim9: cannot pass "true" to searchdecl(). +Solution: use tv_get_bool_chk(). (closes #6881) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1616 +Problem: Vim9: cannot pass "true" to synID(). +Solution: Use tv_get_bool_chk(). (closes #6860) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1617 +Problem: Vim9: cannot pass "true" to win_splitmove(). +Solution: Use dict_get_bool(). (closes #6862) Alphabetize test functions. +Files: src/evalwindow.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1618 +Problem: Vim9: cannot pass "true" to setloclist(). +Solution: Use dict_get_bool(). (closes #6882) +Files: src/quickfix.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1619 +Problem: Vim9: cannot pass "true" to spellsuggest(). +Solution: Use tv_get_bool_chk(). (closes #6883) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1620 +Problem: searchcount() test fails. +Solution: Restore default flag value. +Files: src/search.c + +Patch 8.2.1621 +Problem: Crash when using submatch(0, 1) in substitute(). +Solution: Increment reference count. (closes #6887) +Files: src/regexp.c, src/testdir/test_substitute.vim + +Patch 8.2.1622 +Problem: Loop to handle keys for the command line is too long. +Solution: Move code to functions. (Yegappan Lakshmanan, closes #6880) +Files: src/ex_getln.c + +Patch 8.2.1623 +Problem: Vim9: using :call where it is not needed. +Solution: Remove :call. (closes #6892) +Files: src/testdir/test_maparg.vim, src/testdir/test_textprop.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1624 +Problem: Vim9: cannot pass "true" to split(), str2nr() and strchars(). +Solution: Use tv_get_bool_chk(). (closes #6884, closes #6885, closes #6886) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1625 +Problem: Compiler warning for use of fptr_T. +Solution: Make the type less strict. +Files: src/regexp.c + +Patch 8.2.1626 +Problem: Test for strchars() fails with different error number. +Solution: Adjust the error number. +Files: src/testdir/test_utf8.vim + +Patch 8.2.1627 +Problem: Vim9: cannot pass "true" to submatch(), term_gettty() and + term_start() +Solution: Use tv_get_bool_chk(). (closes #6888, closes #6890, closes #6889) +Files: src/evalfunc.c, src/terminal.c, src/job.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.1628 +Problem: Vim9: cannot pass "true" to timer_paused(). +Solution: Use tv_get_bool(). (closes #6891) +Files: src/time.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1629 +Problem: Test fails without terminal feature. +Solution: Check for terminal feature. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1630 +Problem: Terminal test fails. +Solution: Correct argument to term_start(). Correct error number. +Files: src/testdir/test_terminal.vim, src/testdir/test_terminal2.vim + +Patch 8.2.1631 +Problem: test_fails() does not check the context of the line number. +Solution: Use another argument to specify the context of the line number. +Files: runtime/doc/testing.txt, runtime/doc/eval.txt, + src/testdir/test_vim9_func.vim, src/testing.c, src/globals.h, + src/evalfunc.c, src/message.c + +Patch 8.2.1632 +Problem: Not checking the context of test_fails(). +Solution: Add the line number and context arguments. Give error if + assert_fails() argument types are wrong. +Files: src/testing.c, src/errors.h, src/testdir/test_assert.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1633 +Problem: Some error messages are internal but do not use iemsg(). +Solution: Use iemsg(). (Dominique Pell茅, closes #6894) +Files: src/regexp.c, src/regexp_bt.c, src/regexp_nfa.c + +Patch 8.2.1634 +Problem: Loop to handle keys for the command line is too long. +Solution: Move a few more parts to separate functions. (Yegappan Lakshmanan, + closes #6895) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.1635 +Problem: No digraph for 0x2022 BULLET. +Solution: Use "oo". (Hans Ginzel, closes #6904) +Files: src/digraph.c, runtime/doc/digraph.txt + +Patch 8.2.1636 +Problem: Get stuck if a popup filter causes an error. +Solution: Check whether the function can be called and does not cause an + error. (closes #6902) +Files: src/structs.h, src/popupwin.c, src/testdir/test_popupwin.vim + src/testdir/dumps/Test_popupwin_wrong_name.dump, + src/testdir/dumps/Test_popupwin_three_errors_1.dump, + src/testdir/dumps/Test_popupwin_three_errors_2.dump + +Patch 8.2.1637 +Problem: Vim9: :put ={expr} does not work inside :def function. +Solution: Add ISN_PUT. (closes #6397) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/register.c, + src/proto/register.pro, src/edit.c, src/ex_docmd.c, src/mouse.c, + src/normal.c, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1638 +Problem: Leaking memory when popup filter function can't be called. +Solution: Don't return too soon. +Files: src/popupwin.c + +Patch 8.2.1639 +Problem: Options window cannot be translated. +Solution: Get the translation for "local to" texts once and use them in many + places. Fix that 'whichwrap' is not a local option. (issue #6800) +Files: runtime/optwin.vim + +Patch 8.2.1640 +Problem: Amiga: missing header for getgrgid(). +Solution: Add the grp.h header. (Ola S枚der, closes #6906) +Files: src/os_amiga.h + +Patch 8.2.1641 +Problem: Vim9: cannot use 0 or 1 where a bool is expected. +Solution: Allow using 0 and 1 for a bool type. (closes #6903) +Files: src/vim9compile.c, src/vim9type.c, src/proto/vim9type.pro, + src/structs.h, src/testdir/test_vim9_script.vim + +Patch 8.2.1642 +Problem: Options test fails. +Solution: Correct call to OptionG(). +Files: runtime/optwin.vim + +Patch 8.2.1643 +Problem: Vim9: :defcompile compiles dead functions. +Solution: Skip over dead functions. +Files: src/userfunc.c + +Patch 8.2.1644 +Problem: Vim9: cannot assign 1 and 0 to bool at script level. +Solution: Add the TTFLAG_BOOL_OK flag to the type. Fix name of test + function. +Files: src/vim9type.c, src/testdir/test_vim9_script.vim, + src/testdir/vim9.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.1645 +Problem: GTK3: icons become broken images when resized. +Solution: Use gtk_image_new_from_icon_name(). (closes #6916) + Fix compiler warnings. +Files: src/gui_gtk_x11.c + +Patch 8.2.1646 +Problem: Amiga: Unnecessary #include. +Solution: Remove the #include. (Ola S枚der, closes #6908) +Files: src/version.c + +Patch 8.2.1647 +Problem: Vim9: result of expression with && and || cannot be assigned to a + bool variable. +Solution: Add the TTFLAG_BOOL_OK flag and convert the value if needed. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1648 +Problem: Amiga: no common build file for Amiga (-like) systems. +Solution: Turn Make_morph.mak into Make_ami.mak. (Ola S枚der, closes #6805) +Files: Filelist, src/Make_ami.mak, src/Make_morph.mak, src/INSTALLami.txt + +Patch 8.2.1649 +Problem: GTK3: using old file chooser. +Solution: Use native file chooser on GTK 3.20 and above. (Yogeshwar + Velingker, closes #6909) +Files: src/gui_gtk.c + +Patch 8.2.1650 +Problem: Vim9: result of && and || expression cannot be assigned to a bool + at the script level. +Solution: Add the VAR_BOOL_OK flag. Convert to bool when needed. +Files: src/structs.h, src/vim9type.c, src/proto/vim9type.pro, + src/vim9script.c, src/evalvars.c, src/eval.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1651 +Problem: Spellfile code not completely tested. +Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #6918) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.1652 +Problem: Cannot translate lines in the options window. +Solution: Use the AddOption() function to split descriptions where indicated + by a line break. (issue #6800) +Files: runtime/optwin.vim + +Patch 8.2.1653 +Problem: Expand('<stack>') does not include the final line number. +Solution: Add the line number. (closes #6927) +Files: src/vim.h, src/scriptfile.c, src/proto/scriptfile.pro, + src/debugger.c, src/ex_docmd.c, src/ex_eval.c, src/message.c, + src/testing.c, src/testdir/test_expand_func.vim + +Patch 8.2.1654 +Problem: When job writes to hidden buffer current window has display + errors. (Johnny McArthur) +Solution: Use aucmd_prepbuf() instead of switch_to_win_for_buf(). + (closes #6925) +Files: src/channel.c + +Patch 8.2.1655 +Problem: Cannot build with Strawberry Perl 5.32.0. +Solution: Use Perl_sv_2pvbyte_flags. (closes #6921) +Files: src/if_perl.xs + +Patch 8.2.1656 +Problem: Vim9: callstack wrong if :def function calls :def function. +Solution: Set the line number before calling. (closes #6914) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1657 +Problem: Vim9: no proper error for nested ":def!". +Solution: Check for "!". (closes #6920) +Files: src/errors.h, src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1658 +Problem: Expand('<stack>') has trailing "..". +Solution: Remove the "..". (closes #6927) +Files: src/scriptfile.c, src/testdir/test_expand_func.vim + +Patch 8.2.1659 +Problem: Spellfile code not completely tested. +Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #6929) +Files: src/testdir/test_spell.vim, src/testdir/test_spellfile.vim + +Patch 8.2.1660 +Problem: Assert functions require passing expected result as the first + argument, which isn't obvious. +Solution: Use a method, as in "runtest()->assert_equal(expected)". +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1661 +Problem: Cannot connect to 127.0.0.1 for host with only IPv6 addresses. +Solution: pass AI_V4MAPPED flag to getaddrinfo. (Filipe Brandenburger, + closes #6931) +Files: src/channel.c + +Patch 8.2.1662 +Problem: :mksession does not restore shared terminal buffer properly. +Solution: Keep a hashtab with terminal buffers. (Rob Pilling, closes #6930) +Files: src/hashtab.c, src/proto/terminal.pro, src/session.c, + src/terminal.c, src/testdir/test_mksession.vim + +Patch 8.2.1663 +Problem: Options window entries cannot be translated. +Solution: Use AddOption() for all explanations. (closes #6800) +Files: runtime/optwin.vim + +Patch 8.2.1664 +Problem: Memory leak when using :mkview with a terminal buffer. +Solution: Don't use a hastab for :mkview. (Rob Pilling, closes #6935) +Files: src/session.c, src/terminal.c, src/testdir/test_mksession.vim + +Patch 8.2.1665 +Problem: Cannot do fuzzy string matching. +Solution: Add matchfuzzy(). (Yegappan Lakshmanan, closes #6932) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/proto/search.pro, src/search.c, src/testdir/test_functions.vim + +Patch 8.2.1666 +Problem: The initial value of 'backupskip' can have duplicate items. +Solution: Remove duplicates, like when it is set later. (Tom Ryder, + closes #6940) +Files: src/option.c, src/testdir/test_options.vim + +Patch 8.2.1667 +Problem: Local function name cannot shadow a global function name. +Solution: Ignore global functions when checking a script-local or scoped + function name. (closes #6926) +Files: src/vim9compile.c, src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.1668 +Problem: Vim9: not accepting 0 or 1 as bool when type is any. +Solution: Convert the type with the CHECKTYPE instruction. (closes #6913) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1669 +Problem: Vim9: memory leak when storing a value fails. +Solution: Free the value when not storing it. +Files: src/evalvars.c + +Patch 8.2.1670 +Problem: A couple of gcc compiler warnings. +Solution: Initialize local variables. (Dominique Pell茅, closes #6944) +Files: src/memline.c, src/option.c + +Patch 8.2.1671 +Problem: Vim9: stray error for missing white space. +Solution: Do not skip over white space after member. (closes #6917) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1672 +Problem: v_lock is used when it is not initialized. (Yegappan Lakshmanan) +Solution: Initialize the typval in eval1(). +Files: src/eval.c + +Patch 8.2.1673 +Problem: complete_info() selected index has an invalid value. (Ben Jackson) +Solution: Set the index when there is only one match. (closes #6945) + Add test for complete_info(). +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.1674 +Problem: Vim9: internal error when using variable that was not set. +Solution: Give a meaningful error. (closes #6937) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1675 +Problem: MinGW: testdir makefile deletes non-existing file. +Solution: Use another way to delete the output file if it already exists. + (Michael Soyka) +Files: src/testdir/Make_ming.mak + +Patch 8.2.1676 +Problem: Compiler warnings for function typecast. +Solution: Add an intermediate cast to "void *". +Files: src/os_unix.c + +Patch 8.2.1677 +Problem: Memory access errors when calling setloclist() in an autocommand. +Solution: Give an error if the list was changed unexpectedly. (closes #6946) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1678 +Problem: Crash when using ":set" after ":ownsyntax". (Dhiraj Mishra) +Solution: Make sure 'spelloptions' is not NULL. (closes #6950) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.2.1679 +Problem: Vim9: ":*" is not recognized as a range. +Solution: Move recognizing "*" into skip_range(). (closes #6938) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/cmdexpand.c, + src/ex_getln.c, src/userfunc.c, src/vim9compile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.1680 +Problem: Vim9: line number for compare error is wrong. +Solution: Set SOURCING_LNUM. (closes #6936) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1681 +Problem: Vim9: unnecessary :call commands in tests. +Solution: Remove the commands. (issue #6936) +Files: src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1682 +Problem: Vim9: const works in an unexpected way. +Solution: ":const" only disallows changing the variable, not the value. + Make "list[0] = 9" work at the script level. +Files: src/vim9compile.c, src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1683 +Problem: Vim9: assignment test fails. +Solution: Include changes to find Ex command. +Files: src/ex_docmd.c + +Patch 8.2.1684 +Problem: "gF" does not use line number after file in Visual mode. +Solution: Look for ":123" after the Visual area. (closes #6952) +Files: src/findfile.c, src/testdir/test_gf.vim + +Patch 8.2.1685 +Problem: Vim9: cannot declare a constant value. +Solution: Introduce ":const!". +Files: runtime/doc/vim9.txt, src/ex_cmds.h, src/vim9compile.c, + src/vim9.h, src/vim9execute.c, src/evalvars.c, + src/proto/evalvars.pro, src/errors.h, src/vim.h, src/eval.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1686 +Problem: Vim9: "const!" not sufficiently tested. +Solution: Add a few more test cases. Fix type checking. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1687 +Problem: Vim9: out of bounds error. +Solution: Check that cmdidx is not negative. +Files: src/vim9compile.c + +Patch 8.2.1688 +Problem: Increment/decrement removes text property. +Solution: Insert the new number before deleting the old one. (closes #6962) +Files: src/ops.c, src/testdir/test_textprop.vim + +Patch 8.2.1689 +Problem: 'colorcolumn' doesn't show in indent. +Solution: Also draw the column when draw_state is WL_BRI or WL_SBR. + (Alexey Demin, closes #6948, closes #6619) +Files: src/drawline.c, src/testdir/dumps/Test_colorcolumn_2.dump, + src/testdir/dumps/Test_colorcolumn_3.dump, + src/testdir/test_highlight.vim + +Patch 8.2.1690 +Problem: Text properties not adjusted for "I" in Visual block mode. +Solution: Call inserted_bytes(). (closes #6961) +Files: src/ops.c, src/change.c, src/proto/change.pro, + src/testdir/test_textprop.vim + +Patch 8.2.1691 +Problem: Vim9: list<any> is not accepted where list<number> is expected. +Solution: Add functions to allocate and free a type_T, use it in + ISN_CHECKTYPE. (closes #6959) +Files: src/vim9.h, src/globals.h, src/vim9compile.c, src/vim9execute.c, + src/vim9type.c, src/proto/vim9type.pro, src/errors.h, + src/evalfunc.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1692 +Problem: Build fails because TTFLAG_STATIC is missing. +Solution: Include missing change. +Files: src/structs.h + +Patch 8.2.1693 +Problem: "hi def" does not work for cleared highlight. +Solution: Check the "sg_cleared" flag. (Maxim Kim, closes #6956, + closes #4405) +Files: src/highlight.c, src/testdir/test_highlight.vim + +Patch 8.2.1694 +Problem: Compiler warning for loss if data. +Solution: Add typecast. +Files: src/ops.c + +Patch 8.2.1695 +Problem: Vim9: crash when using varargs type "any". +Solution: Check if uf_va_type is &t_any. (closes #6957) +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.1696 +Problem: Unused (duplicate) macros. +Solution: Remove the macros. +Files: src/spell.c + +Patch 8.2.1697 +Problem: Inconsistent capitalization of error messages. +Solution: Always start with a capital. +Files: src/errors.h, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim, + src/testdir/test_assert.vim + +Patch 8.2.1698 +Problem: Cannot lock a variable in legacy Vim script like in Vim9. +Solution: Make ":lockvar 0" work. +Files: runtime/doc/eval.txt, src/evalvars.c, src/proto/evalvars.pro, + src/dict.c, src/eval.c, src/list.c, src/typval.c, src/userfunc.c, + src/testdir/test_const.vim, src/testdir/test_listdict.vim + +Patch 8.2.1699 +Problem: Build failure due to missing error message. +Solution: Add error message. +Files: src/errors.h + +Patch 8.2.1700 +Problem: Vim9: try/catch causes wrong value to be returned. +Solution: Reset tcd_return. (closes #6964) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1701 +Problem: Vim9: sort("i") does not work. +Solution: Don't try getting a number for a string argument. (closes #6958) +Files: src/list.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1702 +Problem: Crash when using undo after deleting folded lines. +Solution: Check for NULL pointer. (closes #6968) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.1703 +Problem: ":highlight clear" does not restore default link. +Solution: Remember the default link and restore it. (Antony Scriven, + closes #6970, closes #4405) +Files: runtime/doc/syntax.txt, src/highlight.c, + src/testdir/test_highlight.vim + +Patch 8.2.1704 +Problem: Vim9: crash in for loop when autoload script has an error. +Solution: Reset suppress_errthrow. Check for NULL list. (closes #6967) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1705 +Problem: "verbose hi Name" reports incorrect info after ":hi clear". +Solution: Store the script context. (Antony Scriven, closes #6975) +Files: src/highlight.c, src/testdir/test_highlight.vim + +Patch 8.2.1706 +Problem: Vim9: crash after running into the "Multiple closures" error. +Solution: When a function fails still update any closures. (closes #6973) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1707 +Problem: Small inconsistency in highlight test. +Solution: Use one argument for :execute. (Antony Scriven, #6975) +Files: src/testdir/test_highlight.vim + +Patch 8.2.1708 +Problem: Vim9: error message for function has unprintable characters. +Solution: use printable_func_name(). (closes #6965) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1709 +Problem: Vim9: memory leak when using multiple closures. +Solution: Free the partial. +Files: src/vim9execute.c + +Patch 8.2.1710 +Problem: Vim9: list of list type can be wrong. +Solution: Use VAR_UNKNOWN for empty list. Recognize VAR_UNKNOWN when + looking for a common type. (closes #6979) +Files: src/vim9type.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1711 +Problem: Vim9: leaking memory when using partial. +Solution: Do delete the function even when it was compiled. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/vim9execute.c + +Patch 8.2.1712 +Problem: Vim9: leaking memory when calling a lambda. +Solution: Decrement function reference from ISN_DCALL. +Files: src/vim9compile.c, src/userfunc.c, src/proto/userfunc.pro + +Patch 8.2.1713 +Problem: Motif GUI: crash when setting menu colors. (Andrzej Bylicki) +Solution: Add {} to make "n" incremented correctly. (closes #6989, + closes #5948) +Files: src/gui_motif.c + +Patch 8.2.1714 +Problem: Text properties corrupted with substitute command. (Filipe + Brandenburger) +Solution: Get the changed line again after using u_savesub(). (closes #6984) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.1715 +Problem: Motif GUI: commented out code missed {}. +Solution: Add {} and reenable the code. (similar to #6989) +Files: src/gui_motif.c + +Patch 8.2.1716 +Problem: Options window has duplicate translations. +Solution: Make one entry for "global or local to buffer". Fix wrong text. + (closes #6983) +Files: runtime/optwin.vim + +Patch 8.2.1717 +Problem: MS-Windows installer doesn't have Russian translations. +Solution: Add Russian translations. (closes #6985) +Files: nsis/gvim.nsi, nsis/lang/russian.nsi + +Patch 8.2.1718 +Problem: Vim9: :def function disallows "firstline" and "lastline" argument + names for no good reason. +Solution: Don't check the arguments for a :def function. (closes #6986) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1719 +Problem: Vim9: no error if comma is missing in between arguments. +Solution: Give an error message. +Files: src/errors.h, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1720 +Problem: Vim9: memory leak with heredoc that isn't executed. (Dominique + Pell茅) +Solution: Don't clear the list items. (closes #6991) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1721 +Problem: MS-Windows installer doesn't work. +Solution: Write "Russian" in ASCII. (closes #6995, see #6985). +Files: nsis/lang/russian.nsi + +Patch 8.2.1722 +Problem: Vim9: cannot assign a lambda to a variable of type function. +Solution: Allow for assigning a partial to a variable of type function. + (Naruhiko Nishino, closes #6996) +Files: src/vim9type.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1723 +Problem: Vim9: Variable argument name cannot start with underscore. +Solution: Use eval_isnamec1(). (closes #6988) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1724 +Problem: Vim9: assignment tests spread out. +Solution: Create new test file for assignment tests. +Files: src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_vim9_expr.vim, + src/testdir/Make_all.mak + +Patch 8.2.1725 +Problem: Not all Pascal files are recognized. +Solution: Add filetype patterns. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1726 +Problem: Fuzzy matching only works on strings. +Solution: Support passing a dict. Add matchfuzzypos() to also get the match + positions. (Yegappan Lakshmanan, closes #6947) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/proto/search.pro, src/search.c, src/testdir/Make_all.mak, + src/testdir/test_functions.vim, src/testdir/test_matchfuzzy.vim + +Patch 8.2.1727 +Problem: A popup created with "cursorline" will ignore "firstline". +Solution: When both "cursorline" and "firstline" are present put the cursor + on "firstline". (closes #7000) Add the "winid" argument to + getcurpos(). +Files: runtime/doc/eval.txt, src/evalfunc.c, src/popupwin.c, + src/evalwindow.c, src/testdir/test_popupwin.vim, + src/testdir/test_functions.vim + +Patch 8.2.1728 +Problem: Compiler warning for using uninitialized variable. (John Marriott) +Solution: Initialize "neighbor". +Files: src/search.c + +Patch 8.2.1729 +Problem: Endless loop when ":normal" feeds popup window filter. +Solution: Add the ex_normal_busy_done flag. +Files: src/globals.h, src/getchar.c, src/evalfunc.c, src/ex_docmd.c, + src/menu.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_normal_cmd.dump + +Patch 8.2.1730 +Problem: Vim9: cannot use member of unknown type. +Solution: When type is unknown use "any". (closes #6997) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1731 +Problem: Vim9: cannot use += to append to empty NULL list. +Solution: Copy the list instead of extending it. (closes #6998) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1732 +Problem: Stuck when win_execute() for a popup causes an error. +Solution: Disable the filter callback on error. (issue #6999) +Files: src/popupwin.c, src/testdir/term_util.vim, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_win_execute.dump + +Patch 8.2.1733 +Problem: Vim9: memory leaks when using nested function. +Solution: Free function when compilation fails. +Files: src/vim9compile.c + +Patch 8.2.1734 +Problem: Vim9: cannot use a funcref for a closure twice. +Solution: Instead of putting the funcref on the stack use a growarray on the + execution context. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1735 +Problem: Github actions appear to timeout too soon. +Solution: use "timeout" instead of "ping". +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1736 +Problem: Failure to compile a pattern not tested much. +Solution: Add tests where a pattern fails to compile. (Yegappan Lakshmanan, + closes #7004) +Files: src/testdir/gen_opt_test.vim, src/testdir/test_arglist.vim, + src/testdir/test_autocmd.vim, src/testdir/test_buffer.vim, + src/testdir/test_checkpath.vim, src/testdir/test_cmdline.vim, + src/testdir/test_debugger.vim, src/testdir/test_functions.vim, + src/testdir/test_history.vim, src/testdir/test_listdict.vim, + src/testdir/test_options.vim, src/testdir/test_search_stat.vim, + src/testdir/test_sort.vim, src/testdir/test_substitute.vim, + src/testdir/test_syntax.vim, src/testdir/test_tagjump.vim, + src/testdir/test_user_func.vim + +Patch 8.2.1737 +Problem: Cursor line highlight in popup window is not always updated. +Solution: Check if the cursor has moved. (closes #7010) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump + +Patch 8.2.1738 +Problem: Mac: str2float() recognizes comma instead of decimal point. +Solution: Set LC_NUMERIC to "C". (closes #7003) +Files: src/os_mac_conv.c + +Patch 8.2.1739 +Problem: Vim9: crash when compiling a manually defined function. (Antony + Scriven) +Solution: Check that the script ID is positive. (closes #7012) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1740 +Problem: Test fails without the terminal feature. +Solution: Skip test if the terminal feature is not available. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1741 +Problem: pathshorten() only supports using one character. +Solution: Add an argument to control the length. (closes #7006) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/filepath.c, + src/proto/filepath.pro, src/testdir/test_functions.vim + +Patch 8.2.1742 +Problem: Test still fails without the terminal feature. +Solution: Put check for terminal feature in separate function. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.1743 +Problem: Cannot build without the eval feature. +Solution: Move shorten_dir outside of #ifdef. +Files: src/filepath.c + +Patch 8.2.1744 +Problem: Vim9: using ":const!" is weird. +Solution: Use "var" - "final" - "const" like Dart. "let" still works for + now. +Files: runtime/doc/vim9.txt, src/ex_cmds.h, src/errors.h, src/evalvars.c, + src/proto/evalvars.pro, src/cmdexpand.c, src/eval.c, + src/ex_docmd.c, src/vim9compile.c, src/vim9execute.c, + src/vim9script.c, src/vim.h, src/ex_cmdidxs.h, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1745 +Problem: Tiny version doesn't build. +Solution: Add dummy ex_var() function. +Files: src/ex_docmd.c + +Patch 8.2.1746 +Problem: Vim9: Cannot use "fina" for "finally". (Naruhiko Nishino) +Solution: Specifically check for "fina". (closes #7020) +Files: src/ex_docmd.c, src/testdir/test_trycatch.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1747 +Problem: Result of expand() unexpectedly depends on 'completeslash'. +Solution: Temporarily reset 'completeslash'. (Yasuhiro Matsumoto, + closes #7021) +Files: src/evalfunc.c, src/testdir/test_ins_complete.vim + +Patch 8.2.1748 +Problem: Closing split window in other tab may cause a crash. +Solution: Set tp_curwin properly. (Rob Pilling, closes #7018) +Files: src/window.c, src/testdir/test_winbuf_close.vim + +Patch 8.2.1749 +Problem: Vim9: crash when closure fails in nested function. +Solution: Handle function returns before dereferencing remaining closures. + (closes #7008) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1750 +Problem: Setting firstline with popup_setoptions() fails if cursorline is + set. +Solution: Use apply_options(). Update the popup before applying "zz". + (closes #7010) +Files: src/popupwin.c, src/proto/popupwin.pro, src/move.c, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_win_execute_cursorline.dump, + src/testdir/dumps/Test_popupwin_set_firstline_1.dump, + src/testdir/dumps/Test_popupwin_set_firstline_2.dump + +Patch 8.2.1751 +Problem: Using 2 where bool is expected may throw an error. +Solution: Make this backwards compatible. +Files: src/typval.c, src/evalfunc.c, src/testdir/test_search.vim, + src/testdir/test_terminal2.vim + +Patch 8.2.1752 +Problem: GTK GUI: cannot map alt-? with <A-?>. (Ingo Karkat) +Solution: Adjust the characters for which the shift modifier is removed. + (closes #7016) Make Motif and Win32 use the same function as GTK. +Files: src/misc2.c, src/gui_x11.c, src/gui_w32.c, + src/testdir/test_termcodes.vim + +Patch 8.2.1753 +Problem: Vim9: crash when using import at script level. +Solution: Give a "not implemented yet" error. (closes #7026) +Files: src/evalvars.c + +Patch 8.2.1754 +Problem: Completion with spell checking not tested. +Solution: Add a test case. (Dominique Pell茅, closes #7024) +Files: src/testdir/test_spell.vim + +Patch 8.2.1755 +Problem: Vim9: crash when using invalid heredoc marker. (Dhiraj Mishra) +Solution: Check for NULL list. (closes #7027) Fix comment character. +Files: src/vim9compile.c, src/evalvars.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.1756 +Problem: Vim9: :let will soon be disallowed. +Solution: Add v:disallow_let temporarily. Fix tests. +Files: src/vim.h, src/errors.h, src/evalvars.c, src/vim9compile.c, + src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1757 +Problem: Mac: default locale is lacking the encoding. +Solution: Add ".UTF-8 to the locale. (Yee Cheng Chin, closes #7022) +Files: src/os_mac_conv.c, src/testdir/test_environ.vim + +Patch 8.2.1758 +Problem: Vim9: type of unmaterialized list is wrong. +Solution: Use list<number>. +Files: src/vim9type.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1759 +Problem: Vim9: Some tests are still using :let. +Solution: Change more declarations to use :var. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1760 +Problem: Vim9: crash when end marker is missing. (Dhiraj Mishra) +Solution: Check for end of function lines. (closes #7031) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1761 +Problem: Vim9: Some tests are still using :let. +Solution: Change more declarations to use :var. +Files: src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1762 +Problem: When a timer uses :stopinsert Insert mode completion isn't + stopped. (Stanley Chan) +Solution: Call ins_compl_prep(ESC). +Files: src/edit.c, src/testdir/test_ins_complete.vim, + src/testdir/dumps/Test_pum_stopped_by_timer.dump + +Patch 8.2.1763 +Problem: Vim9: cannot use "true" for popup window scrollbar option. +Solution: use dict_get_bool(). (closes #7029) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.1764 +Problem: Vim9: no error when assigning to script var with wrong type. +Solution: Fix off-by-one error. (closes #7028) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1765 +Problem: Vim9: some tests use "var var". +Solution: Use "var name". (closes #7032) +Files: src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.1766 +Problem: Vim9: Some tests are still using :let. +Solution: Change the last few declarations to use :var. +Files: src/testdir/runtest.vim, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_maparg.vim, + src/testdir/test_popupwin.vim, src/testdir/test_textprop.vim + +Patch 8.2.1767 +Problem: Vim9: test fails with python support. +Solution: Use "let" in legacy function. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1768 +Problem: Cannot use the help menu from a terminal window. +Solution: Add ":tlnoremenu" commands. (Yee Cheng Chin, closes #7023) +Files: runtime/menu.vim, src/testdir/test_gui.vim + +Patch 8.2.1769 +Problem: A popup filter interferes with using :normal to move the cursor in + a popup. +Solution: Do not invoke the filter when ex_normal_busy is set. +Files: runtime/doc/popup.txt, src/getchar.c, src/evalfunc.c, + src/ex_docmd.c, src/menu.c, src/globals.h, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_normal_cmd.dump + +Patch 8.2.1770 +Problem: Invalid memory use when using SpellFileMissing autocmd. +Solution: Add test case. (Dominique Pell茅, closes #7036) Fix using a window + that was closed. +Files: src/spell.c, src/testdir/test_spell.vim + +Patch 8.2.1771 +Problem: synIDattr() cannot get the value of ctermul. +Solution: Add the "ul" value for "what". (closes #7037) +Files: runtime/doc/eval.txt, src/highlight.c, src/evalfunc.c, + src/testdir/test_highlight.vim + +Patch 8.2.1772 +Problem: Cannot use CTRL-W <Down> to move out of a terminal window. +Solution: Use special_to_buf() instead of mb_char2bytes(). (closes #7045) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.1773 +Problem: Crash when calling mapset() with a list as first argument. +Solution: Check for NULL. (closes #7040) +Files: src/map.c, src/testdir/test_maparg.vim + +Patch 8.2.1774 +Problem: GTK: hang when forced to exit. +Solution: Do not clean up "mainwin" when really_exiting is set. + (Zdenek Dohnal, closes #7042) +Files: src/gui_gtk_x11.c + +Patch 8.2.1775 +Problem: MS-Windows: adding a long quickfix list is slow. +Solution: Shorten the buffer name only for the first entry. (Yegappan + Lakshmanan, closes #7039, closes #7033) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1776 +Problem: Filetype.vim may be loaded twice. +Solution: Do "syntax on" after "filetype on". (Adam Stankiewicz, + closes #7049) +Files: runtime/defaults.vim + +Patch 8.2.1777 +Problem: Vim9: some assignment tests in the wrong file. +Solution: Move assignment tests to test_vim9_assign. +Files: src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1778 +Problem: Vim9: returning from a partial call clears outer context, causing + a crash. +Solution: Put the outer context in the stack frame. (closes #7044) +Files: src/vim9execute.c, src/vim9.h, src/testdir/test_vim9_func.vim + +Patch 8.2.1779 +Problem: Some debian changelog files are not recognized. +Solution: Add */debian/changelog. (Jason Franklin) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1780 +Problem: Statusline not updated when splitting windows. +Solution: Call status_redraw_all(). (Jason Franklin, closes #5496) +Files: src/window.c, src/testdir/test_statusline.vim + +Patch 8.2.1781 +Problem: Writing to prompt buffer interferes with insert mode. +Solution: Use win_enter() instead of just setting "curwin". (Ben Jackson, + closes #7035) +Files: src/autocmd.c, src/testdir/test_prompt_buffer.vim + +Patch 8.2.1782 +Problem: Vim9: cannot pass boolean to mapset(). +Solution: Use get_tv_bool(). (closes #7041) +Files: src/map.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1783 (after 8.2.1781) +Problem: Try-catch test fails. +Solution: Don't call win_enter(), only call entering_window(). +Files: src/autocmd.c, src/window.c, src/proto/window.pro, + src/testdir/runtest.vim + +Patch 8.2.1784 +Problem: commits are not scanned for security problems +Solution: Enable Github code scanning. (Christian Brabandt, closes #7057) +Files: .github/workflows/codeql-analysis.yml + +Patch 8.2.1785 +Problem: Compiler warning for strcpy() out of bounds. (Christian Brabandt) +Solution: use memmove() instead. +Files: src/dict.c + +Patch 8.2.1786 +Problem: Various Normal mode commands not fully tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #7059) +Files: src/testdir/test_normal.vim, src/testdir/test_regexp_utf8.vim, + src/testdir/test_registers.vim, src/testdir/test_spellfile.vim, + src/testdir/test_tagjump.vim, src/testdir/test_visual.vim + +Patch 8.2.1787 +Problem: Crash with 'incsearch' and very long line. +Solution: Check whether regprog becomes NULL. (closes #7063) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.2.1788 +Problem: Vim9: still allows :let for declarations. +Solution: Make the default for v:disallow_let one. It can still be set to + zero to allow for using :let. +Files: src/evalvars.c, src/testdir/runtest.vim + +Patch 8.2.1789 +Problem: Vim9: crash with invalid list constant. (Dhiraj Mishra) +Solution: Return FAIL when compiling the list fails. (closes #7066) +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.1790 +Problem: MS-Windows with Python: crash when executed from Vifm. +Solution: Use NUL instead of CONIN. (Ken Takata, closes #7061, closes #7053) +Files: src/if_python3.c + +Patch 8.2.1791 +Problem: Vim9: debugger test fails. +Solution: Use "var" instead of "let". +Files: src/testdir/test_debugger.vim + +Patch 8.2.1792 +Problem: Configure does not recognize Racket 6.1+. +Solution: Add a check for "rktio". (closes #7062) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.1793 +Problem: Not consistently giving the "is a directory" warning. +Solution: Adjust check for illegal file name and directory. (Yasuhiro + Matsumoto, closes #7067) +Files: src/fileio.c, src/testdir/test_edit.vim + +Patch 8.2.1794 +Problem: No falsy Coalescing operator. +Solution: Add the "??" operator. Fix mistake with function argument count. +Files: runtime/doc/eval.txt, src/eval.c, src/vim9compile.c, + src/vim9type.c, src/testdir/test_expr.vim, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1795 +Problem: Vim9: operators && and || have a confusing result. +Solution: Make the result a boolean. +Files: runtime/doc/vim9.txt, src/eval.c, src/vim9compile.c, + src/vim9execute.c, src/vim9type.c, src/structs.h, src/vim9.h, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1796 +Problem: Vim9: invalid memory access with weird function name. (Dhiraj + Mishra) +Solution: Check the name is valid. Add a test. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1797 +Problem: Vim9: some parts of the code not tested. +Solution: Add a few tests. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1798 +Problem: Vim9: ternary operator condition is too permissive. +Solution: Use tv_get_bool_chk(). +Files: runtime/doc/vim9.txt, src/eval.c, src/vim9compile.c, + src/vim9execute.c, src/testdir/vim9.vim, + src/testdir/test_expr.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_cmd.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.1799 +Problem: Some Normal mode commands not fully tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #7073) +Files: src/testdir/test_gf.vim, src/testdir/test_goto.vim, + src/testdir/test_normal.vim, src/testdir/test_registers.vim, + src/testdir/test_startup.vim, src/testdir/test_tabpage.vim, + src/testdir/test_visual.vim + +Patch 8.2.1800 +Problem: Vim9: memory leak if "if" condition is invalid. +Solution: Free ppconst earlier. +Files: src/vim9compile.c + +Patch 8.2.1801 +Problem: Undo file not found when using ":args" or ":next". +Solution: Handle like editing another file. (closes #7072) +Files: src/ex_cmds.c, src/testdir/test_undo.vim + +Patch 8.2.1802 +Problem: Vim9: crash with unterminated dict. (Dhiraj Mishra) +Solution: Return empty string instead of NULL. (closes #7084) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1803 +Problem: A few failures are not tested. +Solution: Test a few failures. (Dominique Pell茅, closes #7075) +Files: src/testdir/test_arglist.vim, src/testdir/test_cmdline.vim, + src/testdir/test_json.vim, src/testdir/test_listdict.vim + +Patch 8.2.1804 +Problem: resolve('/') returns an empty string. +Solution: Don't remove single slash. (closes #7074) +Files: src/filepath.c, src/testdir/test_functions.vim + +Patch 8.2.1805 +Problem: Unix: terminal mode changed when using ":shell". +Solution: Avoid calling settmode() when not needed. (issue #7079) +Files: src/os_unix.c + +Patch 8.2.1806 +Problem: MS-Windows with Python: Vim freezes after import command. +Solution: Use either "NUL" or "CONIN$" when reopening stdin. (Yasuhiro + Matsumoto, closes #7083) +Files: src/if_python3.c + +Patch 8.2.1807 +Problem: Can use :help in a terminal popup window. +Solution: Give an error. (closes #7088) +Files: src/help.c, src/testdir/test_popupwin.vim + +Patch 8.2.1808 +Problem: No test coverage for ":spelldump!". +Solution: Add a test. (Dominique Pell茅, closes #7089) +Files: src/testdir/test_spell.vim + +Patch 8.2.1809 +Problem: Mapping some keys with Ctrl does not work properly. +Solution: For terminal, GTK and Motif handle "@", "^" and "_" codes. +Files: src/misc2.c, src/proto/misc2.pro, src/term.c, src/gui_gtk_x11.c, + src/gui_x11.c, src/testdir/test_termcodes.vim + +Patch 8.2.1810 +Problem: Some code in normal.c not covered by tests. +Solution: Add normal mode tests. (Yegappan Lakshmanan, closes #7086) +Files: src/testdir/test_charsearch.vim, src/testdir/test_normal.vim + +Patch 8.2.1811 +Problem: Mapping Ctrl-key does not work for '{', '}' and '|'. +Solution: Remove the shift modifier. (closes #6457) +Files: runtime/doc/map.txt, src/misc2.c, src/testdir/test_termcodes.vim + +Patch 8.2.1812 +Problem: Vim9: nested closure throws an internal error. +Solution: Do not skip a local variable with a partial. (closes #7065) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1813 +Problem: Vim9: can assign wrong type to script dict. (Christian J. Robinson) +Solution: Check the type if known. +Files: src/structs.h, src/eval.c, src/vim9script.c, + src/proto/vim9script.pro, src/proto/evalvars.pro, + src/testdir/test_vim9_script.vim + +Patch 8.2.1814 (after 8.2.1813) +Problem: Missing change to remove "static". +Solution: Add the change. +Files: src/evalvars.c + +Patch 8.2.1815 +Problem: Vim9: memory leak when using function reference. +Solution: Temporarily disable the test. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1816 +Problem: Vim9: another memory leak when using function reference. +Solution: Temporarily disable the tests. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1817 +Problem: Vim9: wrong instruction when reusing a local variable spot. +Solution: Clear a newly allocated local variable. (closes #7080) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1818 +Problem: SE Linux: deprecation warning for security_context_t. +Solution: Use "char *" instead. (James McCoy, closes #7093) +Files: src/os_unix.c + +Patch 8.2.1819 +Problem: Vim9: Memory leak when using a closure. +Solution: Compute the minimal refcount in the funcstack. Reenable disabled + tests. +Files: src/vim9execute.c, src/proto/vim9execute.pro, src/structs.h, + src/eval.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1820 +Problem: Vim9: crash when error happens in timer callback. +Solution: Check that current_exception is not NULL. (closes #7100) +Files: src/ex_docmd.c + +Patch 8.2.1821 +Problem: Vim9: concatenating to a NULL list doesn't work. +Solution: Handle a NULL list like an empty list. (closes #7064) +Files: src/list.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1822 (after 8.2.1821) +Problem: List test doesn't fail. +Solution: Adjust the test for NULL list handling. +Files: src/testdir/test_listdict.vim + +Patch 8.2.1823 +Problem: "gN" does not select the matched string. +Solution: Move the cursor to the start of the match. +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.2.1824 +Problem: Vim9: variables at the script level escape their scope. +Solution: When leaving a scope remove variables declared in it. +Files: src/structs.h, src/ex_eval.c, src/evalvars.c, + src/proto/evalvars.pro, src/testdir/test_vim9_script.vim + +Patch 8.2.1825 +Problem: Vim9: accessing freed memory. +Solution: Clear sv_name when the variable is deleted. +Files: src/ex_eval.c + +Patch 8.2.1826 +Problem: Vim9: cannot use a {} block at script level. +Solution: Recognize a {} block. +Files: src/ex_docmd.c, src/ex_cmds.h, src/ex_cmdidxs.h, src/ex_eval.c, + src/structs.h, src/proto/ex_eval.pro, src/errors.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.1827 +Problem: Filetype detection does not test enough file names. +Solution: Test more file names. (Adam Stankiewicz, closes #7099) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1828 +Problem: Build failure without the +eval feature. +Solution: Add dummies for ex_block and ex_endblock. +Files: src/ex_docmd.c + +Patch 8.2.1829 +Problem: Warnings when executing Github actions. +Solution: Use another method to set environment variables. (Ken Takata, + closes #7107) +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1830 +Problem: MS-Windows: Python3 issue with stdin. +Solution: Check if stdin is readable. (Ken Takata, closes #7106) +Files: src/if_python3.c + +Patch 8.2.1831 +Problem: File missing from distribution. +Solution: Add the github code analyses file. +Files: Filelist + +Patch 8.2.1832 +Problem: readdirex() error is displayed as a message. (Yegappan Lakshmanan) +Solution: Use semsg() instead of smsg(). +Files: src/fileio.c, src/testdir/test_functions.vim + +Patch 8.2.1833 +Problem: When reading from stdin dup() is called twice. +Solution: Remove the dup() in main.c. (Ken Takata, closes #7110) +Files: src/main.c + +Patch 8.2.1834 +Problem: PyEval_InitThreads() is deprecated in Python 3.9. +Solution: Do not call PyEval_InitThreads in Python 3.9 and later. (Ken + Takata, closes #7113) Avoid warnings for functions. +Files: src/if_python3.c, src/if_py_both.h + +Patch 8.2.1835 +Problem: ":help ??" finds the "!!" tag. +Solution: Do not translate "?" into ".". (Naruhiko Nishino, closes #7114, + closes #7115) +Files: src/help.c, src/testdir/test_help_tagjump.vim + +Patch 8.2.1836 +Problem: Autocmd test fails on pacifist systems. +Solution: Check that /bin/kill exists. (James McCoy, closes #7117) + Tune the timing, make the autocmd test run faster. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.1837 +Problem: Using "gn" after "gN" does not work. +Solution: Extend the other end of the Visual area. (closes #7109) +Files: src/search.c, src/testdir/test_gn.vim + +Patch 8.2.1838 +Problem: Vim9: cannot insert a comment line in an expression. +Solution: Skip comment lines at the script level. (closes #7111) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1839 +Problem: Vim9: memory leaks reported in assign test. +Solution: Move the failing job_start() call to separate test files, it + causes false leak reports. +Files: src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_fails.vim, + src/testdir/Make_all.mak + +Patch 8.2.1840 +Problem: Vim9: error message is not clear about compilation error. +Solution: Say "compiling" instead of "processing". +Files: src/vim9compile.c, src/message.c, src/globals.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.1841 +Problem: Vim9: test for compilation error fails in normal build. +Solution: Invoke CheckRunVimInTerminal in a separate function. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.1842 +Problem: Crash when USE_FNAME_CASE is defined and using :browse. +Solution: Don't use read-only memory for ".". (Yegappan Lakshmanan, + closes #7123) +Files: src/ex_cmds.c, src/ex_docmd.c, src/testdir/test_edit.vim + +Patch 8.2.1843 +Problem: Netbeans: with huge buffer number memory allocation may fail. +Solution: Check for size overflow. +Files: src/netbeans.c + +Patch 8.2.1844 +Problem: Using "q" at the more prompt doesn't stop a long message. +Solution: Check for "got_int". (closes #7122) +Files: src/message.c, src/testdir/test_messages.vim, + src/testdir/dumps/Test_quit_long_message.dump + +Patch 8.2.1845 +Problem: Vim9: function defined in a block can't use variables defined in + that block. +Solution: First step: Make a second hashtab that holds all script variables, + also block-local ones, with more information. +Files: src/structs.h, src/evalvars.c, src/ex_eval.c, src/vim9script.c, + src/proto/vim9script.pro, src/scriptfile.c + +Patch 8.2.1846 +Problem: Vim9: variables declared in a local block are not found in + when a function is compiled. +Solution: Look for script variables in sn_all_vars. +Files: src/structs.h, src/vim9compile.c, src/proto/vim9compile.pro, + src/userfunc.c, src/proto/userfunc.pro, src/ex_eval.c, + src/vim9script.c, src/proto/vim9script.pro, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1847 +Problem: Vim9: using negative value for unsigned type. +Solution: Use zero instead of -1. +Files: src/vim9compile.c + +Patch 8.2.1848 +Problem: Crash when passing a NULL string or list to popup_settext(). +Solution: Check for NULL pointers. (closes #7132) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.1849 +Problem: Vim9: garbage collection frees block-local variables. +Solution: Mark all script variables as used. +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1850 +Problem: "vat" does not select tags correctly over line break. +Solution: Adjust the search pattern. (Aufar Gilbran, closes #7136) +Files: src/textobject.c, src/testdir/test_textobjects.vim + +Patch 8.2.1851 +Problem: Vim9: "!" followed by space incorrectly used. +Solution: Skip over trailing spaces. (closes #7131) +Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1852 +Problem: map() returning zero for NULL list is unexpected. +Solution: Return the empty list. (closes #7133) +Files: src/list.c, src/testdir/test_filter_map.vim, + src/testdir/test_blob.vim + +Patch 8.2.1853 +Problem: "to_f" is recognized at "topleft" modifier. +Solution: Do not recognize modifier when "_" follows. (closes #7019) +Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1854 +Problem: Vim9: crash when throwing exception for NULL string. (Dhiraj + Mishra) +Solution: Handle NULL string like empty string. (closes #7139) +Files: src/vim9execute.c, src/errors.h, src/testdir/test_vim9_script.vim + +Patch 8.2.1855 +Problem: Vim9: get error message when nothing is wrong. +Solution: Check called_emsg instead of did_emsg. (closes #7143) +Files: src/vim9compile.c, src/vim9execute.c, src/errors.h + +Patch 8.2.1856 +Problem: "2resize" uses size of current window. (Daniel Steinberg) +Solution: Use size of resized window. (Yasuhiro Matsumoto, closes #7152) +Files: src/ex_docmd.c, src/testdir/test_window_cmd.vim + +Patch 8.2.1857 +Problem: Vim9: using job_status() on an unused var gives an error. +Solution: Return "fail". (closes #7158) +Files: src/job.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1858 +Problem: Vim9: filter functions return number instead of bool. +Solution: Return v:true instead of one. (closes #7144) +Files: src/popupwin.c, src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1859 +Problem: Vim9: crash in unpack assignment. +Solution: Make sure an error message is turned into an exception. + (closes #7159) +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.1860 +Problem: Vim9: memory leak when throwing empty string. +Solution: Free the empty string. +Files: src/vim9execute.c + +Patch 8.2.1861 +Problem: Vim9: no specific error when parsing lambda fails. +Solution: Also give syntax errors when not evaluating. (closes #7154) +Files: src/dict.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1862 +Problem: vim9: memory leak when compiling lambda fails. +Solution: Call clear_evalarg(). +Files: src/vim9compile.c + +Patch 8.2.1863 +Problem: Json code not sufficiently tested. +Solution: Add more test cases. (Dominique Pell茅, closes #7166) +Files: src/testdir/test_json.vim + +Patch 8.2.1864 +Problem: Vim9: no error for wrong list type. +Solution: Add flag to indicate a constant. (closes #7160) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.1865 +Problem: Vim9: add() does not check type of argument. +Solution: Inline the add() call. (closes #7160) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/errors.h, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1866 +Problem: Vim9: appending to pushed blob gives wrong result. +Solution: Set ga_maxlen when copying a blob. +Files: src/blob.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1867 +Problem: Vim9: argument to add() not checked for blob. +Solution: Add the BLOBAPPEND instruction. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/errors.h, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1868 +Problem: Vim9: no error for missing space after comma in dict. +Solution: Check for white space. (closes #6672) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1869 +Problem: Vim9: memory leak when using add(). +Solution: Free the added item. +Files: src/vim9execute.c + +Patch 8.2.1870 +Problem: Vim9: no need to keep all script variables. +Solution: Only keep script variables when a function was defined that could + use them. Fix freeing static string on exit. +Files: src/vim9script.c, src/proto/vim9script.pro, src/structs.h, + src/ex_eval.c, src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.1871 +Problem: Using %v in 'errorformat' may fail before %Z. +Solution: Set qf_viscol only when qf_col is set. (closes #7169) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1872 +Problem: Matchfuzzy() does not prefer sequential matches. +Solution: Give sequential matches a higher bonus. (Christian Brabandt, + closes #7140) +Files: src/search.c, src/testdir/test_matchfuzzy.vim + +Patch 8.2.1873 +Problem: Vim9: missing white space when using <f-args>. +Solution: Add spaces. (Christian J. Robinson) +Files: src/usercmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1874 +Problem: Can't do something just before leaving Insert mode. +Solution: Add the InsertLeavePre autocommand event. (closes #7177) +Files: runtime/doc/autocmd.txt, src/edit.c, src/vim.h, + src/autocmd.c, src/testdir/test_edit.vim + +Patch 8.2.1875 +Problem: Warning when building GTK gui. +Solution: Add missing function parameter. +Files: src/gui_gtk_f.c + +Patch 8.2.1876 +Problem: Vim9: argument types for builtin functions are not checked at + compile time. +Solution: Add an argument type checking mechanism. Implement type checks for + one function. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9compile.c, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/Make_all.mak + +Patch 8.2.1877 (after 8.2.1876) +Problem: Test for function list fails. +Solution: Move "obsolete" comments one line up. +Files: src/evalfunc.c + +Patch 8.2.1878 +Problem: GTK: error for redefining function. (Tony Mechelynck) +Solution: Remove "gtk_" prefix from local functions and prepend "gui_" to + global functions. +Files: src/gui_gtk_f.c, src/gui_gtk_f.h, src/gui_gtk.c, src/gui_gtk_x11.c + +Patch 8.2.1879 +Problem: Vim9: argument types of insert() not checked when compiling. +Solution: Add argument type checks for insert(). +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9compile.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.1880 +Problem: Vim9: Asan complains about adding zero to NULL. +Solution: Check for argument count first. +Files: src/vim9compile.c + +Patch 8.2.1881 +Problem: Cannot build with GTK3. +Solution: Adjust form functions. +Files: src/gui_gtk_f.c + +Patch 8.2.1882 +Problem: Vim9: v:disallow_let is no longer needed. +Solution: Remove v:disallow_let. +Files: src/evalvars.c, src/vim.h, src/vim9compile.c + +Patch 8.2.1883 +Problem: Compiler warnings when using Python. +Solution: Adjust PyCFunction to also have the second argument. Use "int" + return type for some functions. Insert "(void *)" to get rid of + the remaining warnings. +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c + +Patch 8.2.1884 +Problem: Compiler warning for uninitialized variable. (John Marriott) +Solution: Initialize with NULL. +Files: src/vim9compile.c, src/evalfunc.c + +Patch 8.2.1885 +Problem: Filetype tests unnecessarily creates swap files. +Solution: Disable 'swapfile'. (Ken Takata, closes #7183) +Files: src/testdir/test_filetype.vim + +Patch 8.2.1886 +Problem: Using ":silent!" in a popup filter has unexpected effect. +Solution: Use did_emsg instead of called_emsg. (closes #7178) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.1887 +Problem: Github actions not optimally configured. +Solution: Run CI on any pushed branches. Set fail-fast. (Ozaki Kiichi, + closes #7184) +Files: .github/workflows/ci-windows.yaml + +Patch 8.2.1888 +Problem: Vim9: Getbufline(-1, 1, '$') gives an error. +Solution: Return an empty list. (closes #7180) +Files: src/evalbuffer.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.1889 +Problem: Vim9: erroneous error for missing white space after {}. +Solution: Don't skip over white space after {}. (issue #7167) +Files: src/dict.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1890 +Problem: Vim9: strange error for subtracting from a list. +Solution: Check getting a number, not a string. (closes #7167) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1891 +Problem: Vim9: skipping over expression doesn't handle line breaks. +Solution: Pass evalarg to skip_expr(). (closes #7157) +Files: src/vim9compile.c, src/eval.c, src/proto/eval.pro, src/ex_docmd.c, + src/misc1.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1892 +Problem: Valgrind warns for using uninitialized access in tests. +Solution: Fix condition for breaking out of loop. (Dominique Pell茅, + closes #7187) +Files: src/terminal.c + +Patch 8.2.1893 +Problem: Fuzzy matching does not support multiple words. +Solution: Add support for matching white space separated words. (Yegappan + Lakshmanan, closes #7163) +Files: runtime/doc/eval.txt, src/search.c, + src/testdir/test_matchfuzzy.vim + +Patch 8.2.1894 +Problem: Vim9: command modifiers are not supported. +Solution: Support "silent" and "silent!". +Files: src/structs.h, src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/evalvars.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.1895 (after 8.2.1894) +Problem: Vim9: silent command modifier test fails. +Solution: Add missing changes. +Files: src/ex_docmd.c + +Patch 8.2.1896 +Problem: Valgrind warns for using uninitialized memory. +Solution: NUL terminate the SmcOpenConnection() error message. (Dominique + Pell茅, closes #7194) +Files: src/os_unix.c + +Patch 8.2.1897 +Problem: Command modifiers are saved and set inconsistently. +Solution: Separate parsing and applying command modifiers. Save values in + cmdmod_T. +Files: src/structs.h, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/ex_cmds.h, src/vim9compile.c + +Patch 8.2.1898 +Problem: Command modifier parsing always uses global cmdmod. +Solution: Pass in cmdmod_T to use. Rename struct fields consistently. +Files: src/structs.h, src/arglist.c, src/buffer.c, src/bufwrite.c, + src/diff.c, src/change.c, src/cmdhist.c, src/edit.c, + src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_getln.c, + src/fileio.c, src/filepath.c, src/gui.c, src/gui_gtk_x11.c, + src/help.c, src/if_cscope.c, src/indent.c, src/mark.c, + src/memline.c, src/message.c, src/option.c, src/ops.c, + src/os_unix.c, src/quickfix.c, src/register.c, src/scriptfile.c, + src/search.c, src/session.c, src/tag.c, src/terminal.c, + src/textformat.c, src/usercmd.c, src/vim9compile.c, src/window.c, + src/proto/ex_docmd.pro + +Patch 8.2.1899 +Problem: Crash in out-of-memory situation. +Solution: Bail out if shell_name is NULL. (Dominique Pell茅, closes #7196) +Files: src/ex_cmds.c + +Patch 8.2.1900 +Problem: Vim9: command modifiers do not work. +Solution: Make most command modifiers work. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/usercmd.c, src/proto/usercmd.pro, src/scriptfile.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1901 +Problem: Variable completion does not work in command line window. +Solution: Use the "prevwin". (closes #7198) +Files: src/evalvars.c, src/testdir/test_ins_complete.vim + +Patch 8.2.1902 +Problem: Default option values are changed when using :badd for an existing + buffer. +Solution: When calling buflist_new() pass a zero line number. (closes #7195) +Files: src/ex_cmds.c, src/testdir/test_buffer.vim + +Patch 8.2.1903 (after 8.2.1902) +Problem: Buffer test fails with normal features. +Solution: Use 'numberwidth' instead of 'conceallevel' in the test. +Files: src/testdir/test_buffer.vim + +Patch 8.2.1904 +Problem: Still using default option values after using ":badd +1". +Solution: Find a window where options were set. Don't set the window when + using ":badd". +Files: src/buffer.c, src/ex_cmds.c, src/vim.h, + src/testdir/test_buffer.vim + +Patch 8.2.1905 +Problem: The wininfo list may contain stale entries. +Solution: When closing a window remove any other entry where the window + pointer is NULL. +Files: src/buffer.c, src/proto/buffer.pro, src/window.c + +Patch 8.2.1906 +Problem: Warning for signed/unsigned. +Solution: Use size_t instead of int. (Mike Williams) +Files: src/proto/usercmd.pro, src/usercmd.c, src/vim9execute.c + +Patch 8.2.1907 +Problem: Complete_info().selected may be wrong. +Solution: Update cp_number if it was never set. (issue #6945) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.1908 +Problem: Lua is initialized even when not used. +Solution: Put lua_init() after check for "eap->skip". (Christian Brabandt, + closes #7191). Avoid compiler warnings. +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.1909 +Problem: Number of status line items is limited to 80. +Solution: Dynamically allocate the arrays. (Rom Grk, closes #7181) +Files: runtime/doc/options.txt, src/buffer.c, src/optionstr.c, + src/proto/buffer.pro, src/screen.c, src/structs.h, + src/testdir/test_options.vim, src/testdir/test_statusline.vim, + src/vim.h + +Patch 8.2.1910 +Problem: Reading past the end of the command line. +Solution: Check for NUL. (closes #7204) +Files: src/ex_docmd.c, src/testdir/test_edit.vim + +Patch 8.2.1911 +Problem: Tiny build fails. +Solution: Add #ifdef. +Files: src/insexpand.c + +Patch 8.2.1912 +Problem: With Python 3.9 some tests fail. +Solution: Take into account the different error message. (James McCoy, + closes #7210) +Files: src/testdir/test_python3.vim + +Patch 8.2.1913 +Problem: GTK GUI: rounding for the cell height is too strict. +Solution: Round up above 15/16 of a pixel. (closes #7203) +Files: src/gui_gtk_x11.c + +Patch 8.2.1914 +Problem: Vim9: cannot put line break in expression for '=' register. +Solution: Pass fgetline to set_expr_line(). (closes #7209) +Files: src/register.c, src/proto/register.pro, src/ex_docmd.c, + src/eval.c, src/proto/eval.pro, src/misc2.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.1915 +Problem: Vim9: error for wrong number of arguments is not useful. +Solution: Mention whatever we have for the name. (closes #7208) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1916 +Problem: Vim9: function call is aborted even when "silent!" is used. +Solution: Use did_emsg instead of called_emsg. (closes #7213) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1917 +Problem: No test for improved Man command. +Solution: Test that shell arguments are properly escaped. +Files: src/testdir/test_man.vim + +Patch 8.2.1918 +Problem: Vim9: E1100 mentions :let. +Solution: Mention "var". (closes #7207) +Files: src/vim9script.c, src/errors.h + +Patch 8.2.1919 +Problem: Assert_fails() setting emsg_silent changes normal execution. +Solution: Use a separate flag in_assert_fails. +Files: src/testing.c, src/globals.h, src/buffer.c, src/change.c, + src/fileio.c, src/insexpand.c, src/message.c, src/misc1.c, + src/normal.c, src/screen.c, src/term.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim, src/testdir/gen_opt_test.vim, + src/testdir/test_autocmd.vim, src/testdir/test_mapping.vim, + src/testdir/test_popup.vim, src/testdir/test_terminal.vim + +Patch 8.2.1920 +Problem: Listlbr test fails when run after another test. +Solution: Add test separately to list of test targets. +Files: src/testdir/Make_all.mak, src/testdir/test_alot_utf8.vim + +Patch 8.2.1921 +Problem: Fuzzy matching does not recognize path separators. +Solution: Add a bonus for slash and backslash. (Yegappan Lakshmanan, + closes #7225) +Files: src/search.c, src/testdir/test_matchfuzzy.vim + +Patch 8.2.1922 +Problem: Win32: scrolling doesn't work properly when part of window is + off-screen. +Solution: Fall back to GDI scrolling if part of the window is off-screen. + Handle multi-monitor setup better. (Ken Takata, closes #7219) +Files: src/gui_w32.c + +Patch 8.2.1923 +Problem: Vim9: "filter" command modifier doesn't work. +Solution: Check for space on char before argument. (closes #7216, + closes #7222) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1924 +Problem: Vim9: crash when indexing dict with NULL key. +Solution: Use empty string instead of NULL. (closes #7229) Make error + message more useful for empty string. +Files: src/vim9execute.c, src/globals.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.1925 (after 8.2.1924) +Problem: List/dict test fails. +Solution: Correct expected exception. +File: src/testdir/test_listdict.vim + +Patch 8.2.1926 +Problem: Cannot use a space in 'spellfile'. (Filipe Brandenburger) +Solution: Permit using a space. (closes #7230) +Files: src/spell.c, src/testdir/gen_opt_test.vim + +Patch 8.2.1927 +Problem: Vim9: get unknown error with an error in a timer function. +Solution: Use did_emsg instead of called_emsg. (closes #7231) +Files: src/vim9compile.c, src/vim9execute.c + +Patch 8.2.1928 +Problem: Vim9: "silent!" not effective when list index is wrong. +Solution: Ignore list index failure when emsg_silent is set. (closes #7232) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.1929 +Problem: MS-Windows: problem loading Perl 5.32. +Solution: Define NO_THREAD_SAFE_LOCALE. (Ken Takata, closes #7234) +Files: src/if_perl.xs + +Patch 8.2.1930 +Problem: Wrong input if removing shift results in special key code. +Solution: Handle special key codes. (closes #7189) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.1931 +Problem: Vim9: arguments of extend() not checked at compile time. +Solution: Add argument type checking for extend(). +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.1932 +Problem: Compiler warnings when building with Athena GUI. +Solution: Fix function signatures. +Files: src/gui_at_fs.c + +Patch 8.2.1933 +Problem: Cannot sort using locale ordering. +Solution: Add a flag for :sort and sort() to use the locale. (Dominique + Pell茅, closes #7237) +Files: runtime/doc/change.txt, runtime/doc/eval.txt, src/ex_cmds.c, + src/list.c, src/testdir/test_sort.vim + +Patch 8.2.1934 +Problem: Vim9: command modifiers in :def function not tested. +Solution: Add tests. Fix using modifier before filter command. +Files: src/ex_docmd.c, src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1935 (after 8.2.1933) +Problem: Sort test fails on Mac. +Solution: Disable the sort test with locale on Mac. +Files: src/testdir/test_sort.vim + +Patch 8.2.1936 +Problem: Session sets the local 'scrolloff' value to the global value. +Solution: Do not let restoring the global option value change the local + value. +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.1937 +Problem: Vim9: test for confirm modifier fails in some situations. +Solution: Add a short wait. Handle failure better. +Files: src/testdir/term_util.vim, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1938 +Problem: Wiping out a terminal buffer makes some tests fail. +Solution: Do not wipe out the terminal buffer unless wanted. +Files: src/testdir/term_util.vim, src/testdir/test_terminal.vim, + src/testdir/test_terminal3.vim + +Patch 8.2.1939 +Problem: Invalid memory access in Ex mode with global command. +Solution: Make sure the cursor is on a valid line. (closes #7238) +Files: src/move.c, src/testdir/test_ex_mode.vim + +Patch 8.2.1940 +Problem: Vim9: browse modifier test fails on Mac. +Solution: Only test when the +browse feature is available. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.1941 +Problem: Ex mode test fails on MS-Windows with GUI. +Solution: Skip the test when using gvim. +Files: src/testdir/test_ex_mode.vim + +Patch 8.2.1942 +Problem: Insufficient test coverage for the Netbeans interface. +Solution: Add more tests. Fix an uncovered bug. (Yegappan Lakshmanan, + closes #7240) +Files: runtime/doc/netbeans.txt, src/mouse.c, + src/testdir/test_netbeans.py, src/testdir/test_netbeans.vim, + src/testdir/test_quickfix.vim + +Patch 8.2.1943 +Problem: Vim9: wrong error message when colon is missing. +Solution: Check for a missing colon. (issue #7239) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1944 +Problem: Netbeans test is flaky. +Solution: Add a short delay. (Yegappan Lakshmanan, closes #7246) +Files: src/testdir/test_netbeans.vim + +Patch 8.2.1945 +Problem: Crash when passing NULL function to reduce(). +Solution: Check for NULL pointer and give an error. (Dominique Pell茅, + closes #7243) +Files: src/list.c, src/errors.h, src/testdir/test_listdict.vim + +Patch 8.2.1946 +Problem: sort() with NULL string not tested. +Solution: Add a test. use v:collate. (Dominique Pell茅, closes #7247) +Files: src/testdir/test_sort.vim + +Patch 8.2.1947 +Problem: Crash when using "zj" without folds. (Sean Dewar) +Solution: Check for at least one fold. (closes #7245) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.1948 +Problem: GUI: crash when handling message while closing a window. (Srinath + Avadhanula) +Solution: Don't handle message while closing a window. (closes #7250) +Files: src/window.c, src/globals.h, src/getchar.c + +Patch 8.2.1949 +Problem: Vim9: using extend() on null dict is silently ignored. +Solution: Give an error message. Initialize a dict variable with an empty + dictionary. (closes #7251) +Files: src/errors.h, src/list.c, src/evalvars.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.1950 +Problem: Vim9: crash when compiling function fails when getting type. +Solution: Handle NULL type. (closes #7253) +Files: src/vim9type.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1951 (after 8.2.1949) +Problem: Test for list and dict fails. +Solution: Adjust for using an empty list/dict for a null one. +Files: src/testdir/test_listdict.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim + +Patch 8.2.1952 +Problem: Vim9: crash when using a NULL dict key. +Solution: Use a NULL dict key like an empty string. (closes #7249) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.1953 +Problem: Vim9: extra "unknown" error after other error. +Solution: Restore did_emsg count after EXEC instruction. (closes #7254) + Improve error message from assert_fails() +Files: src/vim9execute.c, src/testing.c, + src/testdir/test_vim9_script.vim, src/testdir/test_assert.vim + +Patch 8.2.1954 +Problem: Vim9: not all command modifiers are tested. +Solution: Add tests for "keep" modifiers. Fix that marks are lost even + though ":lockmarks" is used. +Files: src/ex_cmds.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.1955 +Problem: Vim9: not all command modifiers are tested. +Solution: Add tests for remaining modifiers. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.1956 +Problem: Vim9: cannot specify argument types for lambda. +Solution: Allow adding argument types. Check arguments when calling a + function reference. +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9compile.c, + src/eval.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.1957 +Problem: Diff and cursorcolumn highlighting don't mix. +Solution: Fix condition for what attribute to use. (Christian Brabandt, + closes #7258, closes #7260) +Files: src/drawline.c, src/testdir/dumps/Test_diff_cuc_01.dump, + src/testdir/dumps/Test_diff_cuc_02.dump, + src/testdir/dumps/Test_diff_cuc_03.dump, + src/testdir/dumps/Test_diff_cuc_04.dump, + src/testdir/test_diffmode.vim + +Patch 8.2.1958 (after 8.2.1956) +Problem: Build failure with timers. +Solution: Add missing change. +Files: src/popupwin.c + +Patch 8.2.1959 +Problem: Crash when terminal buffer name is made empty. (Dhiraj Mishra) +Solution: Fall back to "[No Name]". (closes #7262) +Files: src/buffer.c, src/proto/buffer.pro, src/terminal.c, + src/testdir/test_terminal.vim + +Patch 8.2.1960 +Problem: Warning for uninitialized variable. +Solution: Initialize the variable. +Files: src/evalfunc.c + +Patch 8.2.1961 +Problem: Various comments can be improved. +Solution: Various comment adjustments. +Files: src/dict.c, src/structs.h, src/time.c, src/testdir/shared.vim, + src/testdir/test_netbeans.vim, src/gui_motif.c + +Patch 8.2.1962 +Problem: Netbeans may access freed memory. +Solution: Check the buffer pointer is still valid. Add a test. (Yegappan + Lakshmanan, closes #7248) +Files: src/netbeans.c, src/testdir/test_netbeans.vim + +Patch 8.2.1963 +Problem: Crash when using a popup window with "latin1" encoding. +Solution: Don't use ScreenLinesUC when enc_utf8 is false. (closes #7241) +Files: src/screen.c, src/terminal.c, src/testdir/test_popupwin.vim + +Patch 8.2.1964 +Problem: Not all ConTeXt files are recognized. +Solution: Add two patterns. (closes #7263) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.1965 +Problem: Vim9: tests fail without the channel feature. +Solution: Check if the channel feature is present. (Dominique Pell茅, + closes #7270) +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1966 +Problem: Popup becomes current window after closing a terminal window. +Solution: When restoring the window after executing autocommands, check that + the window ID is still the same. (Naruhiko Nishino, + closes #7272) +Files: src/autocmd.c, src/window.c, src/proto/window.pro, src/structs.h, + src/testdir/test_popupwin.vim + +Patch 8.2.1967 +Problem: The session file does not restore the alternate file. +Solution: Add ":balt". Works like ":badd" and also sets the buffer as the + alternate file. Use it in the session file. (closes #7269, + closes #6714) +Files: runtime/doc/windows.txt, src/ex_cmds.h, src/ex_cmdidxs.h, + src/ex_docmd.c, src/vim.h, src/ex_cmds.c, src/session.c, + src/testdir/test_buffer.vim + +Patch 8.2.1968 +Problem: Vim9: has() assumes a feature does not change dynamically. +Solution: Check whether a feature may change dynamically. (closes #7265) +Files: src/vim9compile.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.1969 +Problem: Vim9: map() may change the list or dict item type. +Solution: Add mapnew(). +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/list.c, src/proto/list.pro, src/testdir/test_filter_map.vim + +Patch 8.2.1970 +Problem: It is easy to make mistakes when cleaning up swap files after the + system crashed. +Solution: Warn for the process still running after recovery. Do not + automatically delete a swap file created on another system. + (David Fries, closes #7273) +Files: src/memline.c, src/testdir/test_swap.vim + +Patch 8.2.1971 +Problem: Memory leak when map() fails. +Solution: Clear the typval. +Files: src/list.c + +Patch 8.2.1972 +Problem: Crash when recreating nested fold. +Solution: Check for empty growarray. (closes #7278) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.1973 +Problem: Finding a patch number can be a bit slow. +Solution: Use binary search. (closes #7279) +Files: src/version.c + +Patch 8.2.1974 +Problem: Vim9: test for has('gui_running') fails with VIMDLL. +Solution: Adjust the #ifdef. (Ken Takata, closes #7276) +Files: src/evalfunc.c + +Patch 8.2.1975 +Problem: Win32: memory leak when encoding conversion fails. +Solution: Free the allocated memory. (Ken Takata, closes #7277) +Files: src/os_win32.c + +Patch 8.2.1976 +Problem: Cannot backspace in prompt buffer after using cursor-left. (Maxim + Kim) +Solution: Ignore "arrow_used" in a prompt buffer. (closes #7281) +Files: src/edit.c, src/testdir/test_prompt_buffer.vim + +Patch 8.2.1977 +Problem: Vim9: error for using a string in a condition is confusing. +Solution: Give a more specific error. Also adjust the compile time type + checking for || and &&. +Files: src/vim9compile.c, src/vim9execute.c, src/proto/vim9execute.pro, + src/typval.c, src/errors.h, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1978 +Problem: Making a mapping work in all modes is complicated. +Solution: Add the <Cmd> special key. (Yegappan Lakshmanan, closes #7282, + closes 4784, based on patch by Bjorn Linse) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, + runtime/doc/map.txt, src/edit.c, src/errors.h, src/ex_docmd.c, + src/ex_getln.c, src/getchar.c, src/insexpand.c, src/keymap.h, + src/map.c, src/misc2.c, src/normal.c, src/ops.c, + src/proto/getchar.pro, src/screen.c, src/terminal.c, + src/testdir/test_mapping.vim + +Patch 8.2.1979 +Problem: "term_opencmd" option of term_start() is truncated. (Sergey + Vlasov) +Solution: Allocate the buffer to hold the command. (closes #7284) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.1980 +Problem: Vim9: some tests are not done at the script level. +Solution: Use CheckDefAndScriptSuccess() in more places. Fix uncovered + problems. +Files: src/eval.c, src/list.c, src/scriptfile.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.1981 +Problem: MinGW: parallel compilation might fail. +Solution: Add dependencies on $(OUTDIR). (Masamichi Abe, closes #7287) +Files: src/Make_cyg_ming.mak + +Patch 8.2.1982 +Problem: Quickfix window not updated when adding invalid entries. +Solution: Update the quickfix buffer properly. (Yegappan Lakshmanan, closes + #7291, closes #7271) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.1983 +Problem: ml_get error when using <Cmd> to open a terminal. +Solution: If the window changed reset the incsearch state. (closes #7289) +Files: src/ex_getln.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_from_cmd.dump + +Patch 8.2.1984 +Problem: Cannot use :vimgrep in omni completion, causing C completion to + fail. +Solution: Add the EX_LOCK_OK flag to :vimgrep. (closes #7292) +Files: src/ex_cmds.h, src/testdir/test_quickfix.vim + +Patch 8.2.1985 +Problem: Crash when closing terminal popup with <Cmd> mapping. +Solution: Check b_term is not NULL. (closes #7294) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.1986 +Problem: Expression test is flaky on Appveyor. +Solution: Temporarily disable the test in MS-Windows. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.1987 +Problem: MS-Windows: Win32.mak is no longer needed. +Solution: Do not include Win32.mak. (Jason McHugh, closes #7290) +Files: src/Make_mvc.mak, src/INSTALLpc.txt + +Patch 8.2.1988 +Problem: Still in Insert mode when opening terminal popup with a <Cmd> + mapping in Insert mode. +Solution: Exit Insert mode. (closes #7295) +Files: src/edit.c, src/testdir/test_terminal.vim + +Patch 8.2.1989 +Problem: Info popup triggers WinEnter and WinLeave autocommands. +Solution: Suppress autocommands for the info popup. (closes #7296) +Files: src/popupmenu.c, src/testdir/test_popupwin.vim + +Patch 8.2.1990 +Problem: Cursor position wrong in terminal popup with finished job. +Solution: Only add the top and left offset when not done already. + (closes #7298) +Files: src/popupwin.c, src/structs.h, src/drawline.c, src/move.c, + src/terminal.c, src/testdir/dumps/Test_terminal_popup_m1.dump + +Patch 8.2.1991 +Problem: Coverity warns for not using the ga_grow() return value. +Solution: Bail out if ga_grow() fails. (Yegappan Lakshmanan, closes #7303) +Files: src/getchar.c + +Patch 8.2.1992 +Problem: Build fails with small features. +Solution: Add #ifdef. +Files: src/move.c + +Patch 8.2.1993 +Problem: Occasional failure of the netbeans test. +Solution: Add "silent!". (Yegappan Lakshmanan, closes #7304) +Files: src/testdir/test_netbeans.vim + +Patch 8.2.1994 (after 8.2.1981) +Problem: MS-Windows: MinGW always does a full build. +Solution: Only check if $OUTDIR exists. (Masamichi Abe, closes #7311) +Files: src/Make_cyg_ming.mak + +Patch 8.2.1995 +Problem: The popup menu can cause too much redrawing. +Solution: Reduce the length of the displayed text. (Yasuhiro Matsumoto, + closes #7306) +Files: src/popupmenu.c + +Patch 8.2.1996 +Problem: Vim9: invalid error for argument of extend(). +Solution: Check if the type could match. (closes #7299) +Files: src/evalfunc.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.1997 +Problem: Window changes when using bufload() while in a terminal popup. +Solution: When searching for a window by ID also find a popup window. + (closes #7307) +Files: src/window.c, src/testdir/test_terminal.vim + +Patch 8.2.1998 +Problem: Terminal Cmd test sometimes fails to close popup. +Solution: Add "term_finish" option. +Files: src/testdir/test_terminal.vim + +Patch 8.2.1999 +Problem: Terminal popup test sometimes fails. +Solution: Wait for the popup to close. +Files: src/testdir/test_terminal.vim + +Patch 8.2.2000 +Problem: Vim9: dict.key assignment not implemented yet. +Solution: Implement dict.key assignment. (closes #7312) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2001 +Problem: Vim9: :def function does not apply 'maxfuncdepth'. +Solution: Use 'maxfuncdepth'. (issue #7313) +Files: src/vim9execute.c, src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.2002 +Problem: Vim9: lambda argument shadowed by function name. +Solution: Let function name be shadowed by lambda argument. (closes #7313) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2003 +Problem: Build error with +conceal but without +popupwin. +Solution: Add #ifdef. (Tom Ryder, closes #7316) +Files: src/drawline.c + +Patch 8.2.2004 (after 8.2.2002) +Problem: Compiler warning for uninitialized variable. +Solution: Initialize "ufunc". (John Marriott) +Files: src/vim9compile.c + +Patch 8.2.2005 +Problem: Redoing a mapping with <Cmd> doesn't work properly. +Solution: Fill the redo buffer. Use "<SNR>" instead of a key code. + (closes #7282) +Files: src/ops.c, src/getchar.c, src/testdir/test_mapping.vim + +Patch 8.2.2006 +Problem: .pbtxt files are not recognized. +Solution: Recognize .pbtxt as protobuf text buffers. (closes #7326) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2007 +Problem: Test for insert mode in popup is not reliable. +Solution: Wait for the popup to disappear. (Ozaki Kiichi, closes #7321) +Files: src/testdir/test_terminal.vim + +Patch 8.2.2008 +Problem: MS-Windows GUI: handling channel messages lags. +Solution: Reduce the wait time from 100 to 10 msec. (closes #7097) +Files: src/gui_w32.c + +Patch 8.2.2009 +Problem: MS-Windows: setting $LANG in gvimext only causes problems. +Solution: Do not set $LANG. (Ken Takata, closes #7325) +Files: src/GvimExt/gvimext.cpp + +Patch 8.2.2010 +Problem: Vim9: compiling fails for unreachable return statement. +Solution: Fix it. (closes #7319) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2011 +Problem: "syn sync" reports a very large number. +Solution: Use "at the first line". +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.2.2012 +Problem: Vim9: confusing error message when using bool wrongly. +Solution: Mention "Bool" instead of "Special". (closes #7323) +Files: src/typval.c, src/errors.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.2013 +Problem: Vim9: not skipping white space after unary minus. +Solution: Skip whitespace. (closes #7324) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2014 +Problem: Using CTRL-O in a prompt buffer moves cursor to start of the line. +Solution: Do not move the cursor when restarting edit. (closes #7330) +Files: src/job.c, src/testdir/test_prompt_buffer.vim + +Patch 8.2.2015 +Problem: Vim9: literal dict #{} is not like any other language. +Solution: Support the JavaScript syntax. +Files: runtime/doc/vim9.txt, src/vim9compile.c, + src/proto/vim9compile.pro, src/errors.h, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.2016 +Problem: Swap file test is a little flaky. +Solution: Don't set a byte to a fixed value, increment it. +Files: src/testdir/test_swap.vim + +Patch 8.2.2017 (after 8.2.2015) +Problem: Missing part of the dict change. +Solution: Also change the script level dict. +Files: src/dict.c + +Patch 8.2.2018 +Problem: Vim9: script variable not found from lambda. +Solution: In a lambda also check the script hashtab for a variable without a + scope. (closes #7329) +Files: src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2019 (after 8.2.2016) +Problem: Swap file test fails on MS-Windows. +Solution: Add four to the process ID. (Ken Takata, closes #7333) +Files: src/testdir/test_swap.vim + +Patch 8.2.2020 +Problem: Some compilers do not like the "namespace" argument. +Solution: Rename to "use_namespace". (closes #7332) +Files: src/vim9compile.c, src/proto/vim9compile.pro + +Patch 8.2.2021 +Problem: Vim9: get E1099 when autocommand resets did_emsg. +Solution: Add did_emsg_cumul. (closes #7336) +Files: src/globals.h, src/ex_docmd.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2022 +Problem: Vim9: star command recognized erroneously. +Solution: Give an error for missing colon. (issue #7335) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2023 +Problem: Vim: memory leak when :execute fails. +Solution: Clear the growarray. +Files: src/vim9execute.c + +Patch 8.2.2024 +Problem: Flicker when redrawing a popup with a title and border. +Solution: Do not redraw the border where the title is displayed. (Naruhiko + Nishino, closes #7334) +Files: src/popupwin.c + +Patch 8.2.2025 +Problem: Amiga: Not all colors are used on OS4. +Solution: Adjust the #ifdef to include __amigaos4__. (Ola S枚der, + closes #7328) +Files: src/term.c + +Patch 8.2.2026 +Problem: Coverity warns for possibly using not NUL terminated string. +Solution: Put a NUL in b0_hname just in case. +Files: src/memline.c + +Patch 8.2.2027 +Problem: Coverity warns for uninitialized field. +Solution: Set "v_lock". +Files: src/list.c + +Patch 8.2.2028 +Problem: Coverity warns for using an uninitialized variable. +Solution: Initialize to NULL. +Files: src/eval.c + +Patch 8.2.2029 +Problem: Coverity warns for not checking return value. +Solution: Check that u_save_cursor() returns OK. +Files: src/ops.c + +Patch 8.2.2030 +Problem: Some tests fail on Mac. +Solution: Avoid Mac test failures. Add additional test for wildmenu. + (Yegappan Lakshmanan, closes #7341) +Files: src/testdir/runtest.vim, src/testdir/test_cmdline.vim, + src/testdir/test_options.vim, src/testdir/test_popupwin.vim + +Patch 8.2.2031 +Problem: Some tests fail when run under valgrind. +Solution: Avoid timing problems. +Files: src/testdir/test_vim9_func.vim, src/testdir/test_channel.vim, + src/testdir/test_clientserver.vim, src/testdir/test_debugger.vim, + src/testdir/test_quotestar.vim + +Patch 8.2.2032 +Problem: Cabalconfig and cabalproject filetypes not recognized. +Solution: Detect more cabal files. (Marcin Szamotulski, closes #7339) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2033 +Problem: Vim9: :def without argument gives compilation error. +Solution: Add the DEF instruction. (closes #7344) +Files: src/ex_docmd.c, src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2034 +Problem: Vim9: list unpack in for statement not compiled yet. +Solution: Compile list unpack. (closes #7345) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/errors.h, + src/eval.c, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2035 +Problem: MS-Windows: some tests may fail. +Solution: Avoid test failures. (Yegappan Lakshmanan, closes #7346) +Files: src/testdir/test_channel.vim, src/testdir/test_ex_mode.vim, + src/testdir/test_functions.vim + +Patch 8.2.2036 +Problem: Current buffer is messed up if creating a new buffer for the + quickfix window fails. +Solution: Check that creating the buffer succeeds. (closes #7352) +Files: src/quickfix.c, src/testdir/test_quickfix.vim, + src/testdir/dumps/Test_quickfix_window_fails.dump + +Patch 8.2.2037 +Problem: Compiler test depends on list of compiler plugins. +Solution: Compare with the actual list of compiler plugins. +Files: src/testdir/test_compiler.vim + +Patch 8.2.2038 +Problem: Compiler test fails on MS-Windows. +Solution: Sort the found compiler plugin names. +Files: src/testdir/test_compiler.vim + +Patch 8.2.2039 +Problem: Viminfo is not written when creating a new file. +Solution: Set "b_marks_read" in the new buffer. (Christian Brabandt, + closes #7350) +Files: src/bufwrite.c, src/testdir/test_viminfo.vim + +Patch 8.2.2040 +Problem: Terminal buffer disappears even when 'bufhidden' is "hide". + (Sergey Vlasov) +Solution: Check 'bufhidden' when a terminal buffer becomes hidden. + (closes #7358) +Files: src/buffer.c, src/testdir/test_terminal.vim + +Patch 8.2.2041 +Problem: Haskell filetype not optimally recognized. +Solution: Recognize all *.hsc files as Haskell. (Marcin Szamotulski, + closes #7354) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2042 +Problem: Build failure with +profile but without +reltime. +Solution: Adjust #ifdef. (Christian Brabandt, closes #7361) +Files: src/syntax.c + +Patch 8.2.2043 +Problem: GTK3: white border around text stands out. +Solution: Use current theme color. (closes #7357, issue #349) +Files: src/gui_gtk_x11.c + +Patch 8.2.2044 +Problem: MS-Windows: swap file test sometimes fails. +Solution: Use a more reliable way to change the process ID. When "timeout" + fails use "ping" to wait up to ten minutes. (Ken Takata, + closes #7365) +Files: .github/workflows/ci-windows.yaml, src/testdir/test_swap.vim + +Patch 8.2.2045 +Problem: Highlighting a character too much with incsearch. +Solution: Check "search_match_endcol". (Christian Brabandt, closes #7360) +Files: src/drawline.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_incsearch_newline1.dump, + src/testdir/dumps/Test_incsearch_newline2.dump, + src/testdir/dumps/Test_incsearch_newline3.dump, + src/testdir/dumps/Test_incsearch_newline4.dump, + src/testdir/dumps/Test_incsearch_newline5.dump + +Patch 8.2.2046 +Problem: Some test failures don't give a clear error. +Solution: Use assert_match() and assert_fails() instead of assert_true(). + (Ken Takata, closes #7368) +Files: src/testdir/test_autocmd.vim, src/testdir/test_backspace_opt.vim + +Patch 8.2.2047 +Problem: Amiga: FEAT_ARP defined when it should not. +Solution: Adjust #ifdef. (Ola S枚der, closes #7370) +Files: src/feature.h + +Patch 8.2.2048 +Problem: Amiga: obsolete code. +Solution: Remove the unused lines. (Ola S枚der, closes #7373) +Files: src/gui.c + +Patch 8.2.2049 +Problem: Amiga: obsolete function. +Solution: Remove the function. (Ola S枚der, closes #7374) +Files: src/memfile.c + +Patch 8.2.2050 +Problem: Search test contains unneeded sleeps. +Solution: Rename the function, remove sleeps. (Christian Brabandt, + closes #7369) +Files: src/testdir/test_search.vim + +Patch 8.2.2051 +Problem: Vim9: crash when aborting a user function call. +Solution: Do not use the return value when aborting. (closes #7372) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2052 +Problem: Vim9: "edit +4 fname" gives an error. (Naruhiko Nishino) +Solution: Allow using a range in the +cmd argument. (closes #7364) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/vim.h, src/ex_cmds.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2053 +Problem: Vim9: lambda doesn't accept argument types. +Solution: Optionally accept argument types at the script level. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2054 +Problem: Amiga: FEAT_ARP defined when it should not. +Solution: Adjust "||" to "&&" in #ifdef. (Ola S枚der, closes #7375) +Files: src/feature.h + +Patch 8.2.2055 +Problem: MS-Windows: two Vim instances may use the same temp file. +Solution: Use the process ID for the temp name. (Ken Takata, closes #7378) +Files: src/fileio.c + +Patch 8.2.2056 +Problem: Configure fails when building with the + "implicit-function-declaration" error enabled, specifically on Mac. +Solution: Declare the functions like in the source code. (suggestion by + Clemens Lang, closes #7380) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2057 +Problem: Getting the selection may trigger TextYankPost autocmd. +Solution: Only trigger the autocommand when yanking in Vim, not for getting + the selection. (closes #7367) +Files: src/clipboard.c, src/normal.c, src/register.c, + src/testdir/test_autocmd.vim + +Patch 8.2.2058 +Problem: Using mkview/loadview changes the jumplist. +Solution: Use ":keepjumps". Don't let ":badd" or ":balt" change the + jumplist. (closes #7371) +Files: src/session.c, src/ex_docmd.c, src/testdir/test_mksession.vim + +Patch 8.2.2059 +Problem: Amiga: can't find plugins. +Solution: Do not use "**" in the pattern. (Ola S枚der, closes #7384) +Files: src/main.c + +Patch 8.2.2060 +Problem: Check for features implemented with "if". +Solution: Use the Check commands. (Ken Takata, closes #7383) +Files: src/testdir/test_autocmd.vim, src/testdir/test_compiler.vim, + src/testdir/test_delete.vim, src/testdir/test_diffmode.vim, + src/testdir/test_expr.vim, src/testdir/test_fold.vim + +Patch 8.2.2061 +Problem: Vim9: E1030 error when using empty string for term_sendkeys(). +Solution: Don't check for an invalid type unless the terminal can't be + found. (closes #7382) +Files: src/terminal.c, src/testdir/test_termcodes.vim + +Patch 8.2.2062 +Problem: <Cmd> does not handle CTRL-V. +Solution: Call get_literal() after encountering CTRL-V. (closes #7387) +Files: src/getchar.c, src/testdir/test_mapping.vim + +Patch 8.2.2063 +Problem: Vim9: only one level of indexing supported. +Solution: Handle more than one index in an assignment. +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_assign.vim + +Patch 8.2.2064 +Problem: terminal: cursor is on while redrawing, causing flicker. +Solution: Switch the cursor off while redrawing. Always add the top and + left offset to the cursor position when not done already. + (closes #5943) +Files: src/terminal.c, src/popupwin.c + +Patch 8.2.2065 +Problem: Using map() and filter() on a range() is inefficient. +Solution: Do not materialize the range. (closes #7388) +Files: src/list.c, src/testdir/test_functions.vim + +Patch 8.2.2066 +Problem: Vim9: assignment with += doesn't work. +Solution: Do not see the "+" as an addition operator. +Files: src/eval.c, src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2067 (after 8.2.2064) +Problem: Cursor position in popup terminal is wrong. +Solution: Don't check the flags. +Files: src/terminal.c, src/testdir/test_popupwin.vim + +Patch 8.2.2068 +Problem: Transparent syntax item uses start/end of containing region. +Solution: Do not change the startpos and endpos of a transparent region to + that of its containing region. (Adrian Ghizaru, closes #7349, + closes #7391) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.2.2069 +Problem: The quickfix window is not updated after setqflist(). +Solution: Update the quickfix buffer. (Yegappan Lakshmanan, closes #7390, + closes #7385) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.2070 +Problem: Can't get the exit value in VimLeave or VimLeavePre autocommands. +Solution: Add v:exiting like in Neovim. (Yegappan Lakshmanan, closes #7395) +Files: runtime/doc/autocmd.txt, runtime/doc/eval.txt, src/evalvars.c, + src/main.c, src/testdir/test_exit.vim, src/vim.h + +Patch 8.2.2071 +Problem: Vim9: list assign doesn't accept an empty remainder list. +Solution: Recognize list assignment with ";". +Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2072 +Problem: Vim9: list assign not well tested. +Solution: Test with different destinations. Fix white space error. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2073 +Problem: Vim9: for with unpack only works for local variables. +Solution: Recognize different destinations. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2074 +Problem: Vim9: using :normal from Vim9 script can't handle range. +Solution: Execute a :normal command in legacy script context. (closes #7401) +Files: src/structs.h, src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2075 +Problem: Error for const argument to mapnew(). +Solution: Don't give an error. (closes #7400) +Files: src/list.c, src/testdir/test_filter_map.vim + +Patch 8.2.2076 +Problem: MS-Windows console: sometimes drops typed characters. +Solution: Do not wait longer than 10 msec for input. (issue #7164) +Files: src/os_win32.c + +Patch 8.2.2077 +Problem: Build failure with small features. +Solution: Add #ifdef. +Files: src/structs.h, src/ex_docmd.c + +Patch 8.2.2078 +Problem: Illegal memory access when using :print on invalid text. (Dhiraj + Mishra) +Solution: Check for more composing characters than supported. (closes #7399) +Files: src/message.c, src/testdir/test_utf8.vim + +Patch 8.2.2079 +Problem: Vim9: cannot put a linebreak before or after "in" of ":for". +Solution: Skip over linebreak. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2080 +Problem: Vim9: no proper error message for using s:var in for loop. +Solution: Give a specific error. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2081 +Problem: Vim9: cannot handle a linebreak after "=" in assignment. +Solution: Skip over linebreak. (closes #7407) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2082 +Problem: Vim9: can still use the deprecated #{} dict syntax. +Solution: Remove support for #{} in Vim9 script. (closes #7406, closes #7405) +Files: src/dict.c, src/proto/dict.pro, src/eval.c, src/vim9compile.c, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_popupwin.vim, + src/testdir/test_textprop.vim + +Patch 8.2.2083 +Problem: Vim9: crash when using ":silent!" and getting member fails. +Solution: Jump to on_fatal_error. (closes #7412) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2084 +Problem: CTRL-V U doesn't work to enter a Unicode character when + modifyOtherKeys is effective. (Ken Takata) +Solution: Add a flag to get_literal() for the shift key. (closes #7413) +Files: src/edit.c, src/proto/edit.pro, src/ex_getln.c, src/getchar.c, + src/normal.c, src/testdir/test_termcodes.vim + +Patch 8.2.2085 +Problem: Qt translation file is recognized as typescript. +Solution: Check the first line for "<?xml". (closes #7418) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2086 +Problem: Libvterm tests are only run on Linux. +Solution: Use static libraries. (Ozaki Kiichi, closes #7419) +Files: .travis.yml, src/Makefile, src/libvterm/Makefile, + src/libvterm/t/run-test.pl + +Patch 8.2.2087 +Problem: Vim9: memory leak when statement is truncated. +Solution: Increment the number of local variables. +Files: src/vim9compile.c + +Patch 8.2.2088 +Problem: Vim9: script test sometimes fails. +Solution: Unlet variables. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2089 +Problem: Libvterm test fails to build on Mac. +Solution: Adjust configure to remove a space between -L and the path that + follows. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2090 +Problem: Vim9: dict does not accept a key in quotes. +Solution: Recognize a key in single or double quotes. +Files: runtime/doc/vim9.txt, src/dict.c, src/proto/dict.pro, + src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2091 +Problem: MS-Windows: build warnings. +Solution: Add a #pragma to suppress the deprecation warning. (Ken Takata) + Avoid using a non-ASCII character. (closes #7421) +Files: src/message.c, src/os_win32.c + +Patch 8.2.2092 +Problem: Vim9: unpredictable errors for script tests. +Solution: Use a different script file name for each run. +Files: src/testdir/vim9.vim, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_quickfix.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2093 +Problem: Vim9: script test sometimes fails. +Solution: Do not find a script variable by its typval if the name was + cleared. +Files: src/vim9script.c + +Patch 8.2.2094 +Problem: When an expression fails getting the next command may be wrong. +Solution: Do not check for a next command after :eval fails. (closes #7415) +Files: src/eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2095 +Problem: Vim9: crash when failed dict member is followed by concatenation. +Solution: Remove the dict from the stack. (closes #7416) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2096 +Problem: Vim9: command modifiers not restored after assignment. +Solution: Jump to nextline instead of using continue. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2097 +Problem: Vim9: using :silent! when calling a function prevents aborting + that function. +Solution: Add emsg_silent_def and did_emsg_def. +Files: src/globals.h, src/message.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2098 +Problem: Vim9: function argument of sort() and map() not tested. +Solution: Add a couple of tests. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.2099 +Problem: Vim9: some checks are not tested. +Solution: Add a few more tests. Give better error messages. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2100 +Problem: Insufficient testing for function range and dict. +Solution: Add a few tests. (Dominique Pell茅, closes #7428) +Files: src/testdir/test_functions.vim, src/testdir/test_lambda.vim, + src/testdir/test_signals.vim, src/testdir/test_user_func.vim + +Patch 8.2.2101 +Problem: Vim9: memory leak when literal dict has an error and when an + expression is not complete. +Solution: Clear the typval and the growarray. +Files: src/dict.c, src/vim9compile.c + +Patch 8.2.2102 +Problem: Vim9: not all error messages tested. +Solution: Add a few test cases. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.2103 +Problem: Vim9: unreachable code. +Solution: Remove the code to prepend s: to the variable name +Files: src/vim9compile.c + +Patch 8.2.2104 +Problem: Build problem with Ruby 2.7. +Solution: Adjust function declarations. (Ozaki Kiichi, closes #7430) +Files: src/configure.ac, src/auto/configure, src/if_ruby.c + +Patch 8.2.2105 +Problem: Sound test is a bit flaky. +Solution: Use WaitForAssert(). (Dominique Pell茅, closes #7429) +Files: src/testdir/test_sound.vim + +Patch 8.2.2106 +Problem: TOML files are not recognized. +Solution: Match *.toml. (issue #7432) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2107 +Problem: Vim9: some errors not tested. +Solution: Add tests. Fix getting the right error. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2108 +Problem: Vim9: no test to check for :let error. +Solution: Add a test. Rename tests from _let_ to _var_. +Files: src/testdir/test_vim9_assign.vim + +Patch 8.2.2109 +Problem: "vim -" does not work well when modifyOtherKeys is enabled and a + shell command is executed on startup. +Solution: Only change modifyOtherKeys when executing a shell command in raw + mode. +Files: src/os_unix.c + +Patch 8.2.2110 +Problem: Cannot use ":shell" when reading from stdin. (Gary Johnson) +Solution: Revert patch 8.2.1833. +Files: src/main.c + +Patch 8.2.2111 +Problem: GTK: Menu background is the same color as the main window. +Solution: Fix white space around the text in another way. (closes #7437, + closes #7427) +Files: src/gui_gtk_x11.c + +Patch 8.2.2112 +Problem: Running tests may leave some files behind. +Solution: Delete the right files. Fix a few typos. (Dominique Pell茅, + closes #7436) +Files: src/testdir/test_filetype.vim, src/testdir/test_messages.vim, + src/testdir/test_mksession.vim + +Patch 8.2.2113 +Problem: MS-Windows GUI: crash after using ":set guifont=" four times. +Solution: Check for NULL pointer. (Ken Takata, closes #7434) +Files: src/gui_dwrite.cpp, src/testdir/test_gui.vim + +Patch 8.2.2114 +Problem: Vim9: unreachable code in assignment. +Solution: Remove impossible condition and code. +Files: src/vim9compile.c + +Patch 8.2.2115 +Problem: Vim9: some errors not tested for; dead code. +Solution: Add a test. Remove dead code. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2116 +Problem: MS-Windows GUI: test for 'guifont' is incomplete. +Solution: Set 'renderoptions'. (Christian Brabandt) +Files: src/testdir/test_gui.vim + +Patch 8.2.2117 +Problem: Some functions use any value as a string. +Solution: Check that the value is a non-empty string. +Files: src/typval.c, src/proto/typval.pro, src/mbyte.c, src/filepath.c, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.2118 +Problem: Dead code in the job support. (Dominique Pell茅) +Solution: Define USE_ARGV before checking for it. +Files: src/job.c + +Patch 8.2.2119 +Problem: GTK3: status line background color is wrong. +Solution: Don't change the code for earlier GTK3 versions. (closes #7444) +Files: src/gui_gtk_x11.c + +Patch 8.2.2120 +Problem: Not all Perl functionality is tested. +Solution: Add a few more test cases. (Dominique Pell茅, closes #7440) +Files: src/testdir/test_perl.vim + +Patch 8.2.2121 +Problem: Internal error when using \ze before \zs in a pattern. +Solution: Check the end is never before the start. (closes #7442) +Files: src/regexp_bt.c, src/regexp_nfa.c, + src/testdir/test_regexp_latin.vim + +Patch 8.2.2122 +Problem: Vim9: crash when sourcing vim9script early. +Solution: Use set_option_value() instead of setting p_cpo directly. + (closes #7441) +Files: src/scriptfile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2123 +Problem: After using a complete popup the buffer is listed. (Boris + Staletic) +Solution: Make the buffer unlisted. +Files: src/popupmenu.c, src/testdir/test_popupwin.vim + +Patch 8.2.2124 +Problem: Vim9: a range cannot be computed at runtime. +Solution: Add the ISN_RANGE instruction. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2125 (after 8.2.2122) +Problem: Vim9: leaking memory. +Solution: Free the saved 'cpo' value. +Files: src/scriptfile.c + +Patch 8.2.2126 +Problem: Ruby: missing function prototype. +Solution: Add the prototype. +Files: src/if_ruby.c + +Patch 8.2.2127 +Problem: Vim9: executing user command defined in Vim9 script not tested. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2128 +Problem: There is no way to do something on CTRL-Z. +Solution: Add VimSuspend and VimResume autocommand events. (closes #7450) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/ex_docmd.c, + src/normal.c, src/testdir/test_suspend.vim, src/vim.h + +Patch 8.2.2129 +Problem: MS-Windows: Checking if a file name is absolute is slow. +Solution: Do not use mch_FullName(). (closes #7033) +Files: src/os_mswin.c + +Patch 8.2.2130 +Problem: Insert mode completion messages end up in message history. +Solution: Set msg_hist_off. (closes #7452) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.2131 +Problem: Vim9: crash when lambda uses same var as assignment. +Solution: Do not let lookup_local change lv_from_outer, make a copy. + (closes #7461) +Files: src/vim9compile.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.2132 +Problem: Padding not drawn properly for popup window with title. +Solution: Draw the padding below the title. (closes #7460) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_longtitle_3.dump, + src/testdir/dumps/Test_popupwin_longtitle_4.dump + +Patch 8.2.2133 +Problem: Vim9: checking for a non-empty string is too strict. +Solution: Check for any string. (closes #7447) +Files: src/typval.c, src/proto/typval.pro, src/errors.h, src/filepath.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2134 +Problem: Vim9: get E1099 when autocmd triggered in builtin function. +Solution: Check that did_emsg increased instead of checking that it changed. + (closes #7448) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2135 +Problem: Vim9: #{ still seen as start of dict in some places. +Solution: Remove check for { after #. (closes #7456) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2136 +Problem: Vim9: Using uninitialized variable. +Solution: Initialize "len" to zero. Clean up fnamemodify(). +Files: src/filepath.c + +Patch 8.2.2137 +Problem: Vim9: :echo and :execute give error for empty argument. +Solution: Ignore an empty argument. (closes #7468) +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2138 +Problem: Vim9: "exit_cb" causes Vim to exit. +Solution: Require white space after a command in Vim9 script. (closes #7467) + Also fix that Vim9 style heredoc was not always recognized. +Files: src/ex_cmds.h, src/ex_docmd.c, src/errors.h, src/userfunc.c, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_let.vim + +Patch 8.2.2139 +Problem: Vim9: unreachable code in assignment. +Solution: Don't check "new_local" when "has_index" is set. Add test for + wrong type of list index. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2140 +Problem: Build failure with tiny features. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.2141 +Problem: A user command with try/catch may not catch an expression error. +Solution: When an expression fails check for following "|". (closes #7469) +Files: src/eval.c, src/testdir/test_trycatch.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.2142 +Problem: Memory leak when heredoc is not terminated. +Solution: Free heredoc_trimmed. +Files: src/userfunc.c + +Patch 8.2.2143 +Problem: Vim9: dead code in compiling :unlet. +Solution: Don't check for "!" a second time. +Files: src/vim9compile.c + +Patch 8.2.2144 +Problem: Vim9: some corner cases not tested. +Solution: Add a few tests. +Files: src/testdir/test_vim9_script.vim, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2145 +Problem: Vim9: concatenating lists does not adjust type of result. +Solution: When list member types differ use "any" member type. + (closes #7473) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2146 +Problem: Vim9: automatic conversion of number to string for dict key. +Solution: Do not convert number to string. (closes #7474) +Files: src/dict.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2147 +Problem: Quickfix window title not updated in all tab pages. +Solution: Update the quickfix window title in all tab pages. (Yegappan + Lakshmanan, closes #7481, closes #7466) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.2148 +Problem: Vim9: crash when user command doesn't match. +Solution: Adjust command index. (closes #7479) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2149 +Problem: Popupwin test for latin1 sometimes fails. +Solution: Wait for the script to finish. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.2150 +Problem: Github actions CI isn't used for all available platforms. +Solution: Update the github workflows. (Ozaki Kiichi, closes #7433) +Files: .coveralls.yml, .github/workflows/ci-windows.yaml, + .github/workflows/ci.yml, .travis.yml, README.md, + ci/build-snd-dummy.sh, ci/setup-xvfb.sh + +Patch 8.2.2151 +Problem: $dir not expanded when configure checks for moonjit. +Solution: Use double quotes instead of single quotes. (closes #7478) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2152 +Problem: screenpos() does not include the WinBar offset. +Solution: Use W_WINROW() instead of directly using w_window. (closes #7487) +Files: src/move.c, src/testdir/test_cursor_func.vim + +Patch 8.2.2153 +Problem: Popupwin test for latin1 still fails sometimes. +Solution: Wait for the "cat" command to finish. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.2154 +Problem: Popupwin test for terminal buffer fails sometimes. +Solution: Wait for the prompt to appear. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.2155 +Problem: Warning from Github actions for code analysis. +Solution: Remove the "git checkout HEAD^2" block. +Files: .github/workflows/codeql-analysis.yml + +Patch 8.2.2156 +Problem: Github actions run on pushing a tag. +Solution: Don't run CI on tag push. Omit coveralls on pull-request. + (Ozaki Kiichi, closes #7489) +Files: .github/workflows/ci.yml, .github/workflows/codeql-analysis.yml + +Patch 8.2.2157 +Problem: Vim9: can delete a Vim9 script variable from a function. +Solution: Check the variable is defined in Vim9 script. (closes #7483) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2158 +Problem: CI on cirrus times out, coveralls doesn't always run. +Solution: Set timeout to 20 minutes. Adjust condition. (closes #7493) +Files: .cirrus.yml, .github/workflows/ci.yml + +Patch 8.2.2159 +Problem: Vim9: when declaring a list it is not allocated yet, causing a + following extend() to fail. +Solution: When fetching a variable value for a list or dict that is null + allocate the list or dict, so it can be used. (closes #7491) +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2160 +Problem: Various typos. +Solution: Fix spelling mistakes. (closes #7494) +Files: src/bufwrite.c, src/cindent.c, src/cmdexpand.c, src/eval.c, + src/ex_cmds.c, src/feature.h, src/getchar.c, src/gui_haiku.cc, + src/gui_xmdlg.c, src/help.c, src/if_ole.cpp, src/insexpand.c, + src/list.c, src/map.c, src/memline.c, src/normal.c, + src/os_win32.c, src/search.c, src/term.c, + src/testdir/test_arglist.vim, src/testdir/test_autocmd.vim, + src/testdir/test_debugger.vim, src/testdir/test_increment.vim, + src/testdir/test_menu.vim, src/testdir/test_netbeans.vim, + src/testdir/test_popupwin.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_sort.vim, + src/testdir/test_terminal2.vim, src/testdir/test_terminal3.vim, + src/testdir/test_vartabs.vim, src/testdir/test_vimscript.vim, + src/textprop.c, src/userfunc.c, src/vim9.h, src/vim9compile.c, + src/vim9execute.c + +Patch 8.2.2161 +Problem: Arguments -T and -x not tested yet. +Solution: Add a test. (Dominique Pell茅, closes #7490) +Files: src/testdir/test_startup.vim + +Patch 8.2.2162 +Problem: Vim9: Cannot load or store autoload variables. +Solution: Add ISN_LOADAUTO and ISN_STOREAUTO. (closes #7485) +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/dict.c, + src/eval.c, src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2163 +Problem: Crash when discarded exception is the current exception. +Solution: Compare the exception with current_exception. (closes #7499) +Files: src/ex_eval.c + +Patch 8.2.2164 +Problem: Vim9: autoload function doesn't work in script that starts with + an upper case letter. +Solution: Check for the autoload character. (closes #7502) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2165 +Problem: Vim9: assignment to dict member does not work. +Solution: Fix recognizing dict member. (closes #7484) +Files: src/ex_docmd.c, src/eval.c, src/evalvars.c, src/vim.h + +Patch 8.2.2166 +Problem: Auto format doesn't work when deleting text. +Solution: Make "x" trigger auto format. (closes #7504) +Files: src/ops.c, src/testdir/test_textformat.vim + +Patch 8.2.2167 +Problem: Vim9: assign test fails. (Elimar Riesebieter) +Solution: Adjust the test for dict assignment. +Files: src/testdir/test_vim9_assign.vim + +Patch 8.2.2168 +Problem: Vim9: error for assigning to dict of dict. +Solution: Remember the destination type. (closes #7506) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2169 +Problem: Vim9: test leaves file behind. +Solution: Rename script files. (Dominique Pell茅, closes #7511) + Use try/finally. +Files: src/testdir/test_vim9_script.vim, src/testdir/vim9.vim + +Patch 8.2.2170 +Problem: Vim9: a global function defined in a :def function fails if it + uses the context. +Solution: Create a partial to store the closure context. (see #7410) +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9execute.c, + src/structs.h, src/testdir/test_vim9_func.vim + +Patch 8.2.2171 +Problem: Valgrind warning for using uninitialized value. +Solution: Do not use "startp" or "endp" unless there is a match. +Files: src/regexp_nfa.c + +Patch 8.2.2172 +Problem: Vim9: number of arguments is not always checked. (Yegappan + Lakshmanan) +Solution: Check number of arguments when calling function by name. +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9execute.c, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.2173 +Problem: Vim9: get internal error when assigning to undefined variable. +Solution: Add error message. (closes #7475) +Files: src/vim9compile.c, src/vim9execute.c, src/errors.h, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2174 +Problem: Mac version doesn't specify the CPU architecture. +Solution: Add "arm64" or "x86_64". (Yee Cheng Chin, closes #7519) +Files: src/version.c + +Patch 8.2.2175 +Problem: Github actions: clang-11 handling suboptimal. +Solution: Separate step of installing clang-11. Get ubuntu release name + dynamically. (Ozaki Kiichi, closes #7514) +Files: .github/workflows/ci.yml + +Patch 8.2.2176 +Problem: Crash with a sequence of fold commands. +Solution: Bail out when there are no folds at all. Add a test (Dominique + Pell茅) (closes #7515) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.2177 +Problem: Pattern "^" does not match if the first character in the line is + combining. (Rene Kita) +Solution: Do accept a match at the start of the line. (closes #6963) +Files: src/regexp_nfa.c, src/testdir/test_regexp_utf8.vim + +Patch 8.2.2178 +Problem: Python 3: non-utf8 character cannot be handled. +Solution: Change the string decode. (Bj枚rn Linse, closes #1053) +Files: src/if_py_both.h, src/if_python.c, src/if_python3.c, + src/testdir/test_python3.vim, src/testdir/test_python2.vim + +Patch 8.2.2179 +Problem: Vim9: crash when indexing a dict with a number. +Solution: Add ISN_STOREINDEX. (closes #7513) +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/errors.h, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2180 +Problem: Vim9: test for error after error is flaky. +Solution: Wait for job to finish instead of a fixed delay. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2181 +Problem: Valgrind warnings for using uninitialized value. +Solution: Do not use "start" or "end" unless there is a match. +Files: src/regexp_nfa.c, src/regexp_bt.c + +Patch 8.2.2182 +Problem: Vim9: value of 'magic' is still relevant. +Solution: Always behave like 'magic' is on in Vim9 script (closes #7509) +Files: src/option.c, src/proto/option.pro, src/arglist.c, src/buffer.c, + src/cmdexpand.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/insexpand.c, src/normal.c, src/search.c, src/tag.c, + src/structs.h, src/globals.h, src/ex_cmds.h, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2183 +Problem: Vim9: value of 'edcompatible' and 'gdefault' are used. +Solution: Ignore these deprecated options in Vim9 script. (closes #7508) +Files: src/ex_cmds.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2184 +Problem: Vim9: no error when using "2" for a line number. +Solution: Give an error message if the line number is invalid. (closes #7492) +Files: src/typval.c, src/evalfunc.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_cursor_func.vim + +Patch 8.2.2185 +Problem: BufUnload is not triggered for the quickfix dummy buffer. +Solution: Do trigger BufUnload. (Pontus Leitzler, closes #7518, closes #7517) + Fix white space around "=". +Files: src/quickfix.c, src/testdir/test_autocmd.vim + +Patch 8.2.2186 +Problem: Vim9: error when using 'opfunc'. +Solution: Do not expect a return value from 'opfunc'. (closes #7510) +Files: src/eval.c, src/proto/eval.pro, src/ops.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2187 +Problem: Python 3 test fails sometimes. (Christian Brabandt) +Solution: Accept two SystemError messages. +Files: src/testdir/test_python3.vim + +Patch 8.2.2188 +Problem: Vim9: crash when calling global function from :def function. +Solution: Set the outer context. Define the partial for the context on the + original function. Use a refcount to keep track of which ufunc is + using a dfunc. (closes #7525) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9execute.c, + src/proto/vim9execute.pro, src/userfunc.c, src/proto/userfunc.pro, + src/structs.h, src/vim9.h, src/testdir/test_vim9_func.vim + +Patch 8.2.2189 +Problem: Cannot repeat a command that uses the small delete register. +Solution: Store the register name instead of the contents. (Christian + Brabandt, closes #7527) +Files: src/ops.c, src/register.c, src/testdir/test_registers.vim + +Patch 8.2.2190 +Problem: Vim9: crash when compiled with EXITFREE. +Solution: Check that df_ufunc is not NULL. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2191 +Problem: Vim9: using wrong name with lambda in nested function. +Solution: Copy the lambda name earlier. (closes #7525) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2192 +Problem: Codecov on github actions fails. +Solution: Revert to codecov script. (Ozaki Kiichi, closes #7529) +Files: Filelist, .github/workflows/ci.yml + +Patch 8.2.2193 +Problem: Vim9: can change constant in :def function. +Solution: Check if a variable is locked. (issue #7526) +Files: src/evalvars.c, src/proto/evalvars.pro, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2194 +Problem: Vim9: cannot use :const or :final at the script level. +Solution: Support using :const and :final. (closes #7526) +Files: src/vim.h, src/evalvars.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2195 +Problem: Failing tests for :const. +Solution: Add missing check for ASSIGN_FINAL. +Files: src/eval.c, src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2196 +Problem: :version output has extra spaces in compile and link command. +Solution: Adjust QUOTESED. (closes #7505) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2197 +Problem: Assert arguments order reversed. +Solution: Swap the arguments. (Christian Brabandt, closes #7531) +Files: src/testdir/test_registers.vim + +Patch 8.2.2198 +Problem: ml_get error when resizing window and using text property. +Solution: Validate botline of the right window. (closes #7528) +Files: src/move.c, src/proto/move.pro, src/textprop.c, + src/testdir/test_textprop.vim + +Patch 8.2.2199 +Problem: First write after setting 'eol' does not have NL added. (Tom谩拧 + Janou拧ek) +Solution: Only use b_no_eol_lnum when doing a binary write. (closes #7535) +Files: src/bufwrite.c, src/testdir/test_writefile.vim + +Patch 8.2.2200 +Problem: Vim9: lambda without white space around -> is confusing. +Solution: Require white space in a :def function. (issue #7503) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2201 +Problem: Write file test fails on MS-Windows. +Solution: Force edit after setting 'fileformat'. +Files: src/testdir/test_writefile.vim + +Patch 8.2.2202 +Problem: Write file test still fails on MS-Windows. +Solution: Set fileformat with the :edit command +Files: src/testdir/test_writefile.vim + +Patch 8.2.2203 +Problem: Moodle gift files are not recognized. +Solution: Add a filetype pattern. (Delim Temizer) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2204 +Problem: Vim9: using -> both for method and lambda is confusing. +Solution: Use => for lambda in :def function. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/userfunc.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2205 +Problem: Vim9: memory leak when parsing lambda fails. +Solution: Clear growarrays. +Files: src/userfunc.c + +Patch 8.2.2206 +Problem: :exe command line completion only works for first argument. +Solution: Skip over text if more is following. (closes #7546) +Files: src/eval.c, src/testdir/test_cmdline.vim + +Patch 8.2.2207 +Problem: Illegal memory access if popup menu items are changed while the + menu is visible. (Tom谩拧 Janou拧ek) +Solution: Make a copy of the text. (closes #7537) +Files: src/popupmenu.c, src/testdir/test_popup.vim, + src/testdir/dumps/Test_popup_command_04.dump, + src/testdir/dumps/Test_popup_command_05.dump + +Patch 8.2.2208 +Problem: Vim9: after reloading a script variable index may be invalid. +Solution: When the sequence number doesn't match give an error for using a + script-local variable from a compiled function. (closes #7547) +Files: src/vim9.h, src/structs.h, src/errors.h, src/vim9compile.c, + src/vim9execute.c, src/scriptfile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2209 +Problem: Vim9: return type of => lambda not parsed. +Solution: Parse and use the return type. +Files: src/vim9compile.c, src/userfunc.c, src/vim9type.c, + src/proto/vim9type.pro, src/vim9script.c, src/eval.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2210 +Problem: Vim9: allocating a type to set TTFLAG_BOOL_OK. +Solution: Add t_number_bool. +Files: src/globals.h, src/vim9type.c, src/vim9compile.c + +Patch 8.2.2211 +Problem: MS-Windows: can't load Python dll if not in the path. +Solution: Use the InstallPath registry entry. (Kelvin Lee, closes #7540) +Files: src/if_python3.c + +Patch 8.2.2212 +Problem: Vim9: lambda with => does not work at the script level. +Solution: Make it work. +Files: src/eval.c, src/vim9type.c, src/userfunc.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.2213 +Problem: Checking white space around -> is not backwards compatible. +Solution: Only check white space around =>. +Files: src/userfunc.c + +Patch 8.2.2214 +Problem: ":e#" does not give a warning for missing white space. +Solution: Adjust the check for white space. (closes #7545) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2215 +Problem: Vim9: `=expr` not recognized in global command. +Solution: Skip over pattern. (issue #7541) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2216 +Problem: Vim9: range with missing colon can be hard to spot. +Solution: Include the start of the range in the error. (closes #7543) +Files: src/errors.h, src/ex_docmd.c, src/vim9compile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2217 +Problem: Vim9: command modifiers not restored in catch block. +Solution: Restore command modifiers. (closes #7542) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2218 +Problem: Vim9: failure if passing more arguments to a lambda than expected. +Solution: Only put expected arguments on the stack. (closes #7548) +Files: src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2219 +Problem: Vim9: method call with expression not supported. +Solution: Implement expr->(expr)(). +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2220 +Problem: Vim9: memory leak when parsing nested parenthesis. +Solution: Clear newargs. +Files: src/userfunc.c + +Patch 8.2.2221 +Problem: If <Down> is mapped on the command line 'wildchar' is inserted. +Solution: Set KeyTyped when using 'wildchar'. (closes #7552) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.2222 +Problem: Vim9: cannot keep script variables when reloading. +Solution: Add the "noclear" argument to :vim9script. +Files: runtime/doc/vim9.txt, src/structs.h, src/scriptfile.c, + src/vim9script.c, src/ex_cmds.h, src/ex_docmd.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2223 +Problem: Vim9: Reloading marks a :def function as deleted. +Solution: Clear the function contents but keep the index. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2224 +Problem: Vim9: crash if script reloaded with different variable type. +Solution: Check the type when accessing the variable. +Files: src/vim9execute.c, src/vim9compile.c, src/vim9.h, src/vim9type.c, + src/proto/vim9type.pro, src/errors.h, src/evalvars.c, + src/vim9script.c, src/proto/vim9script.pro, + src/testdir/test_vim9_script.vim + +Patch 8.2.2225 +Problem: Vim9: error when using :import in legacy script twice. +Solution: Make it possible to redefine an import when reloading. +Files: src/vim9script.c, src/proto/vim9script.pro, src/structs.h, + src/evalvars.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2226 +Problem: Vim9: script test fails. +Solution: Add missing change. +Files: src/scriptfile.c + +Patch 8.2.2227 +Problem: Vim9: recognizing lambda is too complicated. +Solution: Call compile_lambda() and check for NOTDONE. +Files: src/vim9compile.c, src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2228 +Problem: Vim9: cannot use ":e #" because # starts a comment. +Solution: Support using %% instead of #. +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2229 +Problem: build failure without the +eval feature. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.2230 +Problem: Vim9: insert completion runs into error. +Solution: Insert colon before range. (closes #7556) +Files: src/insexpand.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2231 +Problem: When "--remote file" is used "file" is not reloaded. +Solution: When a :drop command is used for a file that is already displayed + in a window and it has not been changed, check if it needs to be + reloaded. (closes #7560) +Files: src/ex_cmds.c, src/testdir/test_clientserver.vim + +Patch 8.2.2232 +Problem: Compiler error for falling through into next case. +Solution: Move FALLTHROUGH below the #endif +Files: src/ex_docmd.c + +Patch 8.2.2233 +Problem: Cannot convert a byte index into a character index. +Solution: Add charidx(). (Yegappan Lakshmanan, closes #7561) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_functions.vim + +Patch 8.2.2234 +Problem: Command line wildmenu test often fails with Unix GUI. +Solution: Skip the test where it is expected to fail. +Files: src/testdir/test_cmdline.vim + +Patch 8.2.2235 +Problem: Build failure with some Ruby versions. +Solution: Adjust the code for Ruby 3.0. (Ozaki Kiichi, closes #7564) +Files: ci/config.mk.clang.sed, src/if_ruby.c + +Patch 8.2.2236 +Problem: 'scroll' option can change when setting the statusline or tabline + but the option context is not updated. +Solution: Update the script context when the scroll option is changed as a + side effect. (Christian Brabandt, closes #7533) +Files: runtime/doc/options.txt, src/scriptfile.c, + src/testdir/test_options.vim, src/vim.h, src/window.c + +Patch 8.2.2237 +Problem: CI on Mac fails in sed command. +Solution: Set LC_ALL to "C". (Ozaki Kiichi, closes #7565) +Files: .github/workflows/ci.yml + +Patch 8.2.2238 +Problem: Vim9: cannot load a Vim9 script without the +eval feature. +Solution: Support Vim9 script syntax without the +eval feature. +Files: src/ex_docmd.c, src/vim9script.c, src/globals.h, src/main.c, + src/autocmd.c, src/buffer.c, src/structs.h, src/menu.c, + src/scriptfile.c, src/usercmd.c, src/proto.h, src/errors.h + +Patch 8.2.2239 +Problem: Vim9: concatenating lines with backslash is inconvenient. +Solution: Support concatenating lines starting with '|', useful for + :autocmd, :command, etc. (closes #6702) +Files: runtime/doc/vim9.txt, src/scriptfile.c, src/vim9script.c, + src/proto/vim9script.pro, src/vim9compile.c, + src/proto/vim9compile.pro, src/userfunc.c, src/structs.h, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2240 +Problem: Clientserver test fails if full path is used. +Solution: Ignore the path preceding the file name. +Files: src/testdir/test_clientserver.vim + +Patch 8.2.2241 +Problem: Build with Ruby and clang may fail. +Solution: Adjust configure and sed script. (Ozaki Kiichi, closes #7566) +Files: ci/config.mk.clang.sed, src/auto/configure, src/configure.ac + +Patch 8.2.2242 +Problem: Vim9: line continuation with bar does not work at script level. +Solution: Check for Vim9 script. +Files: src/structs.h, src/ex_docmd.c, src/userfunc.c, src/scriptfile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2243 +Problem: Crash when popup mask contains zeroes. +Solution: Check boundaries properly. (closes #7569) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.2244 +Problem: Crash when making the window width of the not-current window + negative. +Solution: Make sure the window width is not negative. (closes #7568) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.2.2245 +Problem: Vim9: return value of winrestcmd() cannot be executed. +Solution: Put colons before each range. (closes #7571) +Files: src/evalwindow.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2246 +Problem: Cursor keys not recognized at the hit-Enter prompt after executing + an external command. +Solution: Change the codes for the extra cursor keys. (closes #7562) + Tune the delays to avoid test flakiness. +Files: runtime/doc/term.txt, src/term.c, src/testdir/test_terminal3.vim + +Patch 8.2.2247 +Problem: VMS: various smaller problems. +Solution: Fix VMS building and other problems. (Zoltan Arpadffy) +Files: src/term.c, src/gui_gtk_vms.h, src/os_vms_conf.h, src/gui_x11.c, + src/Make_vms.mms, src/macros.h, src/gui.h, src/os_unix.h + +Patch 8.2.2248 +Problem: ASAN error on exit with GUI. +Solution: Check the window still has lines. (Christian Brabandt, + closes #7573) +Files: src/term.c + +Patch 8.2.2249 +Problem: Termcodes test is flaky when used over ssh with X forwarding. +Solution: Set 'mousetime' to a larger value. (Dominique Pell茅, closes #7576, + closes #7563) +Files: src/testdir/test_termcodes.vim + +Patch 8.2.2250 +Problem: Vim9: sublist is ambiguous. +Solution: Require white space around the colon. (closes #7409) +Files: src/vim9compile.c, src/eval.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2251 +Problem: Test failures in legacy script. +Solution: Check for Vim9 script. +Files: src/eval.c + +Patch 8.2.2252 +Problem: Vim9: crash when using lambda without return type in dict. +Solution: Without a return type use t_unknown. (closes #7587) +Files: src/vim9type.c, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2253 +Problem: Vim9: expr test fails. +Solution: Add missing assignment. +Files: src/userfunc.c + +Patch 8.2.2254 +Problem: Vim9: bool option type is number. +Solution: Have get_option_value() return a different value for bool and + number options. (closes #7583) +Files: src/option.h, src/option.c, src/proto/option.pro, src/evalvars.c, + src/if_mzsch.c, src/if_ruby.c, src/spell.c, src/typval.c, + src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2255 (after 8.2.2254) +Problem: Tcl test fails. +Solution: Change option handling. +Files: src/if_tcl.c + +Patch 8.2.2256 +Problem: Vim9: cannot use function( after line break in :def function. +Solution: Check for "(" after "function". (closes #7581) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2257 +Problem: Vim9: using -> for lambda is ambiguous. +Solution: Stop supporting ->, must use =>. +Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2258 +Problem: Not all OCaml related files are detected. +Solution: Update OCaml file type detection. (Markus Mottl, closes #7590) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2259 +Problem: Test_Executable() fails when using chroot. +Solution: Ignore the difference between "sbin" and "bin". +Files: src/testdir/test_functions.vim + +Patch 8.2.2260 +Problem: Window resize test fails in very wide terminal. +Solution: Resize using the 'columns' option. (Vladimir Lomov, closes #7592) +Files: src/testdir/test_window_cmd.vim + +Patch 8.2.2261 +Problem: Vim9: boolean option gets string type. +Solution: Check for VAR_BOOL. (closes #7588) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2262 +Problem: Vim9: converting bool to string prefixes v:. +Solution: Do not use the v: prefix. +Files: src/evalvars.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2263 +Problem: Vim9: compilation error with try-catch in skipped block. +Solution: Do not bail out when generate_instr() returns NULL. (closes #7584) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2264 +Problem: Vim9: no error for mismatched :endfunc or :enddef. +Solution: Check for the mismatch. (issue #7582) +Files: src/errors.h, src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2265 +Problem: Error message for missing endfunc/enddef is last line. +Solution: Report the line where the function starts. (closes #7582) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2266 +Problem: Vim9: it can be hard to see where white space is missing. +Solution: Mention the text where the error was seen. (closes #7580) +Files: src/errors.h, src/eval.c, src/evalvars.c, src/userfunc.c, + src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2267 +Problem: Vim9: cannot use unlet for a dict member. +Solution: Pass GLV_NO_DECL to get_lval(). (closes #7585) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2268 +Problem: Vim9: list unpack seen as declaration. +Solution: Check for "var". (closes #7594) +Files: src/vim9compile.c, src/evalvars.c, src/eval.c, src/vim.h, + src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2269 +Problem: Not all :hardcopy code covered by tests. +Solution: Test more combinations. (Dominique Pell茅, closes #7595) +Files: src/testdir/test_hardcopy.vim + +Patch 8.2.2270 +Problem: Warning for size_t to int conversion. (Randall W. Morris) +Solution: Add a type cast. +Files: src/vim9execute.c + +Patch 8.2.2271 +Problem: ml_get error when changing hidden buffer in Python. +Solution: Block updating folds. (closes #7598) +Files: src/evalbuffer.c, src/testdir/test_python3.vim + +Patch 8.2.2272 +Problem: Vim9: extend() can violate the type of a variable. +Solution: Add the type to the dictionary or list and check items against it. + (closes #7593) +Files: src/structs.h, src/evalvars.c, src/dict.c, src/list.c, + src/vim9script.c, src/proto/vim9script.pro, src/vim9compile.c, + src/vim9execute.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2273 +Problem: Build failure. +Solution: Add missing changes to header file. +Files: src/vim9.h + +Patch 8.2.2274 +Problem: badge for Travis is outdated. +Solution: Update badge for move from travis-ci.org to travis-ci.com. +Files: README.md + +Patch 8.2.2275 +Problem: CTRL-C not recognized in Mintty. +Solution: Recognize the modifyOtherKeys code ending in "u". (Christian + Brabandt, closes #7575) +Files: src/ui.c + +Patch 8.2.2276 +Problem: List of distributed files is outdated. +Solution: Update the file list. Minor comment updates. +Files: Filelist, src/clipboard.c, src/fileio.c, src/option.c, + src/screen.c, src/testdir/test_signals.vim, + src/testdir/Make_vms.mms + +Patch 8.2.2277 +Problem: Missing backslash. +Solution: Add backslash. +Files: Filelist + +Patch 8.2.2278 +Problem: Falling back to old regexp engine can some patterns. +Solution: Do not fall back once [[:lower:]] or [[:upper:]] is used. + (Christian Brabandt, closes #7572) +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test_regexp_utf8.vim + +Patch 8.2.2279 +Problem: Vim9: memory leak with catch in skipped block. +Solution: Free the pattern if not used. +Files: src/vim9compile.c + +Patch 8.2.2280 +Problem: Fuzzy matching doesn't give access to the scores. +Solution: Return the scores with a third list. (Yegappan Lakshmanan, + closes #7596) +Files: runtime/doc/eval.txt, src/search.c, + src/testdir/test_matchfuzzy.vim + +Patch 8.2.2281 +Problem: Vim9: compiled "wincmd" cannot be followed by bar. +Solution: Check for bar after "wincmd". (closes #7599) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2282 +Problem: Length check mismatch with argument of strncmp(). (Christian + Brabandt) +Solution: Adjust length check. +Files: src/ui.c + +Patch 8.2.2283 +Problem: Vim9: crash when lambda has fewer arguments than expected. +Solution: Don't check arguments when already failed. (closes #7606) +Files: src/vim9type.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2284 +Problem: Vim9: cannot set an option to a boolean value. +Solution: Check for VAR_BOOL. (closes #7603) +Files: src/evalvars.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2285 +Problem: Vim9: cannot set an option to a false. +Solution: For VAR_BOOL use string "0". (closes #7603) +Files: src/evalvars.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2286 +Problem: Sort test fails when locale is Canadian English. (Neil H Watson) +Solution: Expect a different sort order. (closes #7609) +Files: src/testdir/test_sort.vim + +Patch 8.2.2287 +Problem: Sort test fails when locale is French Canadian. +Solution: Expect a different sort order. (Dominique Pell茅, closes #7609) +Files: src/testdir/test_sort.vim + +Patch 8.2.2288 +Problem: Vim9: line break and comment not always skipped. +Solution: Skip over white space and then line break more consistently. + (closes #7610) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2289 +Problem: Vim9: 'cpo' can become empty. +Solution: Use empty_option instead of an empty string. Update quickfix + buffer after restoring 'cpo'. (closes #7608) +Files: src/evalfunc.c, src/syntax.c, src/eval.c, src/quickfix.c, + src/evalbuffer.c, src/ex_eval.c, src/gui_motif.c, src/map.c, + src/testdir/test_quickfix.vim + +Patch 8.2.2290 +Problem: Vim9: unlet of global variable cannot be compiled. +Solution: Skip over variables that might be defined later. Give an error if + a subscript is found. (closes #7585) +Files: src/eval.c, src/vim9compile.c, src/vim.h, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2291 +Problem: Vim9: cannot use "null" for v:null. +Solution: Support "null" like "true" and "false". (closes #7495) +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/evalvars.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2292 +Problem: Vim: expr test fails. +Solution: Add missing part of "null" support. +Files: src/eval.c + +Patch 8.2.2293 +Problem: Build failure with Motif. (Tony Mechelynck) +Solution: Use empty_option instead of empty_options. +Files: src/gui_motif.c + +Patch 8.2.2294 +Problem: VMS: a few remaining problems. +Solution: Add VMS specific changes. Add Lua support. (Zoltan Arpadffy) +Files: src/fileio.c, src/os_vms_conf.h, src/Make_vms.mms, src/macros.h, + src/os_vms.c, src/vim9execute.c, src/gui_xmebw.c, src/os_unix.h + +Patch 8.2.2295 +Problem: Incsearch does not detect empty pattern properly. +Solution: Return magic state when skipping over a pattern. (Christian + Brabandt, closes #7612, closes #6420) +Files: src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/globals.h, + src/option.c, src/tag.c, src/proto/regexp.pro, src/regexp.c, + src/search.c, src/structs.h, src/vim9compile.c, + src/testdir/dumps/Test_incsearch_sub_01.dump, + src/testdir/dumps/Test_incsearch_sub_02.dump, + src/testdir/test_search.vim + +Patch 8.2.2296 +Problem: Cannot use CTRL-N and CTRL-P in a popup menu. +Solution: Use CTRL-N like <Down> and CTRL-P like <Up>. (closes #7614) +Files: runtime/doc/popup.txt, src/popupwin.c, + src/testdir/test_popupwin.vim + +Patch 8.2.2297 +Problem: Vim9: cannot set 'number' to a boolean value. +Solution: Use tv_get_bool(). (closes #7615) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2298 +Problem: Vim9: comment right after "(" of function not recognized. +Solution: Do not skip over white space before calling get_function_args(). + (closes #7613) +Files: src/userfunc.c, src/proto/userfunc.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.2299 +Problem: Vim9: invalid memory access making error message flaky. +Solution: Do not check cmd_argt for CMD_USER. (issue #7467) +Files: src/ex_docmd.c, src/vim9execute.c, src/errors.h, + src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2300 +Problem: Vim9: wrong order on type stack when using dict. +Solution: Generate constants before a dict. (closes #7619) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2301 +Problem: Vim9: cannot unlet a dict or list item. +Solution: Add ISN_UNLETINDEX. Refactor assignment code to use for unlet. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2302 +Problem: Vim9: using an option value may use uninitialized memory. +Solution: Clear v_lock. (closes #7620) +Files: src/typval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2303 +Problem: Vim9: backtick expansion doesn't work for :foldopen. +Solution: Do recognize backtick expansion. (closes #7621) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2304 +Problem: Vim9: no test for unletting an imported variable. +Solution: Add a test. Fix line number in error. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2305 +Problem: Vim9: "++var" and "--var" are silently accepted. +Solution: Give an error message. +Files: src/vim9compile.c, src/eval.c, src/proto/eval.pro, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2306 +Problem: Vim9: when using function reference type is not checked. +Solution: When using a function reference lookup the type and check the + argument types. (issue #7629) +Files: src/userfunc.c, src/proto/userfunc.pro, src/eval.c, src/structs.h, + src/vim9type.c, src/proto/vim9type.pro, src/vim9compile.c, + src/vim9execute.c, src/evalvars.c, src/evalfunc.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2307 +Problem: A shell command in the vimrc causes terminal output. +Solution: Do not call starttermcap() after a shell command if the termcap + wasn't active before. +Files: src/ex_cmds.c + +Patch 8.2.2308 +Problem: Vim9: no error when assigning lambda to funcref without return + value. +Solution: Default return value to "any". (closes #7629) +Files: src/userfunc.c, src/vim9compile.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.2309 +Problem: 0o777 not recognized as octal. +Solution: Use vim_isodigit(). (Ken Takata, closes #7633, closes #7631) +Files: src/charset.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.2310 +Problem: Vim9: winsaveview() return type is too generic. +Solution: use dict<number> instead of dict<any>. (closes #7626) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2311 +Problem: Vim9: cannot assign to a variable that shadows a command modifier. +Solution: Check for assignment after possible command modifier. + (closes #7632) +Files: src/vim9compile.c, src/ex_docmd.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2312 +Problem: Build failure with Ruby 3.0 and 32 bits. +Solution: Add #ifdef. (closes #7638) +Files: src/if_ruby.c + +Patch 8.2.2313 +Problem: Vim9: using uninitialized field when parsing range. ":silent!" not + respected when parsing range fails. +Solution: Initialize ea.skip. On pattern failure handle it like an error. + (closes #7636) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2314 +Problem: Vim9: returning zero takes two instructions. +Solution: Add ISN_RETURN_ZERO. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2315 +Problem: Vim9: "enddef" as dict key misinterpreted as function end. +Solution: Check for following colon. (closes #7640) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2316 +Problem: Vim9: cannot list a lambda function. +Solution: Support the <lambda>9 notation, like :disassemble. (closes #7634) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2317 +Problem: Vim9: command modifier before list unpack doesn't work. +Solution: Only recognize "[" directly after the name. (closes #7641) +Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2318 +Problem: Vim9: string and list index work differently. +Solution: Make string index work like list index. (closes #7643) +Files: src/eval.c, src/proto/eval.pro, src/vim9execute.c, src/list.c, + src/proto/vim9execute.pro, src/testdir/test_vim9_expr.vim + +Patch 8.2.2319 +Problem: "exptype_T" can be read as "expected type". +Solution: Rename to "exprtype_T", expression type. +Files: src/eval.c, src/typval.c, src/proto/typval.pro, src/vim9compile.c, + src/proto/vim9compile.pro, src/vim9execute.c, src/structs.h, + src/vim9.h + +Patch 8.2.2320 +Problem: Vim9: no error for comparing bool with string. +Solution: Check for wrong types when comparing. (closes #7639) +Files: src/typval.c, src/errors.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.2321 +Problem: Vim9: cannot nest closures. +Solution: Add the nesting level to ISN_LOADOUTER and ISN_STOREOUTER. + (closes #7150, closes #7635) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/structs.h, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2322 +Problem: Vim9: closure nested limiting to one level. +Solution: Add outer_T. Also make STOREOUTER work. +Files: src/vim9execute.c, src/vim9.h, src/structs.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.2323 +Problem: Vim9: error when inferring type from empty dict/list. +Solution: When the member is t_unknown use t_any. (closes #7009) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2324 +Problem: Not easy to get mark en cursor position by character count. +Solution: Add functions that use character index. (Yegappan Lakshmanan, + closes #7648) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/eval.c, + src/evalfunc.c, src/proto/eval.pro, src/tag.c, + src/testdir/test_cursor_func.vim, src/typval.c + +Patch 8.2.2325 +Problem: Vim9: crash if map() changes the item type. +Solution: Check that the item type is still OK. (closes #7652) + Fix problem with mapnew() on range list. +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9compile.c, + src/list.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.2326 +Problem: Build error with +eval feature but without +spell. +Solution: Adjust #ifdef. (John Marriott) +Files: src/mbyte.c + +Patch 8.2.2327 +Problem: Debugging code included. +Solution: Remove the debugging code. +Files: src/vim9execute.c + +Patch 8.2.2328 +Problem: Some test files may not be deleted. +Solution: Add a delete() call, correct name. (Dominique Pell茅, closes #7654) +Files: src/testdir/test_clientserver.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2329 +Problem: Not all ways Vim can be started are tested. +Solution: Add a test for different program names. (Dominique Pell茅, + closes #7651) +Files: src/testdir/test_startup.vim + +Patch 8.2.2330 +Problem: Vim9: crash when using :trow in a not executed block. +Solution: Don't generate the instruction when skipping. (closes #7659) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2331 +Problem: Vim9: wrong error when modifying dict declared with :final. +Solution: Do not check for writable variable when an index follows. + (closes #7657) +Files: src/vim9compile.c, src/structs.h, src/vim9script.c, + src/proto/vim9script.pro, src/evalvars.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2332 +Problem: Vim9: missing :endif not reported when using :windo. +Solution: Pass a getline function to do_cmdline(). (closes #7650) +Files: src/vim9execute.c, src/structs.h, src/scriptfile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2333 +Problem: Vim9: warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize "res". +Files: src/vim9execute.c + +Patch 8.2.2334 +Problem: Pascal-like filetypes not always detected. +Solution: Improved Puppet, InstantFPC and Pascal detection. (Doug Kearns, + closes #7662) +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.2.2335 +Problem: Vim9: "silent return" does not restore command modifiers. +Solution: Restore command modifiers before returning. (closes #7649) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2336 +Problem: Vim9: it is not possible to extend a dictionary with different + item types. +Solution: Add extendnew(). (closes #7666) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/list.c, src/proto/list.pro, src/testdir/test_listdict.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2337 +Problem: Configure test for GTK only says "no". (Harm te Hennepe) +Solution: Hint that a -def package is needed. (closes #5229) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2338 +Problem: Vim9: no error if using job_info() result wrongly. +Solution: Adjust return type on number of arguments. (closes #7667) +Files: src/evalfunc.c, src/globals.h, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2339 +Problem: Cannot get the type of a value as a string. +Solution: Add typename(). +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vimscript.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2340 +Problem: win_execute() unexpectedly returns number zero when failing. +Solution: Return an empty string. (closes #7665) +Files: src/evalwindow.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_execute_func.vim + +Patch 8.2.2341 +Problem: Expression command line completion shows variables but not + functions after "g:". (Gary Johnson) +Solution: Prefix "g:" when needed to a global function. +Files: src/evalfunc.c, src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_cmdline.vim + +Patch 8.2.2342 +Problem: "char" functions return the wrong column in Insert mode when the + cursor is beyond the end of the line. +Solution: Compute the column correctly. (Yegappan Lakshmanan, closes #7669) +Files: src/eval.c, src/evalfunc.c, src/testdir/test_cursor_func.vim + +Patch 8.2.2343 +Problem: Vim9: return type of readfile() is any. +Solution: Add readblob() so that readfile() can be expected to always + return a list of strings. (closes #7671) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/filepath.c, src/proto/filepath.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2344 +Problem: Using inclusive index for slice is not always desired. +Solution: Add the slice() method, which has an exclusive index. (closes + #7408) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/eval.c, src/proto/eval.pro, src/vim9execute.c, + src/proto/vim9execute.pro, src/list.c, src/proto/list.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2345 +Problem: No focus events in a terminal. +Solution: Add the t_fd and t_fe termcap entries and implement detecting + focus events. (Hayaki Saito, Magnus Gro脽, closes #7673, + closes #609, closes #5526) +Files: runtime/doc/term.txt, src/optiondefs.h, src/term.c, src/term.h + +Patch 8.2.2346 +Problem: Codecov reports every little coverage drop. +Solution: Tolerate a 0.05% drop. Hide the appveyor config file. (Ozaki + Kiichi, closes #7678) +Files: .appveyor.yml, appveyor.yml, .codecov.yml + +Patch 8.2.2347 +Problem: Build failure without GUI. +Solution: Add #ifdef. +Files: src/term.c + +Patch 8.2.2348 (after 8.2.2345) +Problem: No check for modified files after focus gained. (Mathias Stearn) +Solution: Call ui_focus_change(). +Files: src/term.c, src/ui.c + +Patch 8.2.2349 +Problem: Vim9: cannot handle line break after parenthesis at line end. +Solution: Skip over line break. (closes #7677) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2350 +Problem: Using "void" for no reason. +Solution: Use "char *". +Files: src/ex_docmd.c + +Patch 8.2.2351 +Problem: Vim9: error message for "throw" in function that was called with + "silent!". +Solution: Do not throw the exception when not caught or displayed. + (closes #7672) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2352 +Problem: If the focus lost/gained escape sequence is received twice it is + not ignored. (Christ van Willegen) +Solution: Adjust the logic to ignore the escape code. +Files: src/term.c + +Patch 8.2.2353 +Problem: Sparql files are not detected. +Solution: Add the sparql filetype. (closes #7679) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2354 +Problem: Crash with a weird combination of autocommands. +Solution: Increment b_nwindows when needed. (closes #7674) +Files: src/ex_cmds.c, src/buffer.c, src/proto/buffer.pro, + src/testdir/test_autocmd.vim + +Patch 8.2.2355 +Problem: Stray test failure on Appveyor. +Solution: Finish insert command. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.2356 +Problem: Vim9: ":put =expr" does not handle a list properly. +Solution: Use the same logic as eval_to_string_eap(). (closes #7684) +Files: src/vim9execute.c, src/eval.c, src/proto/eval.pro, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2357 +Problem: Vim9: crash when parsing function return type fails. +Solution: Bail out and set return type to "unknown". (closes #7685) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2358 +Problem: Wrong #ifdef for use_xterm_like_mouse(). +Solution: Use FEAT_MOUSE_XTERM. +Files: src/term.c + +Patch 8.2.2359 +Problem: Strange test failure with MS-Windows. +Solution: Skip the system() call for now. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.2360 +Problem: Test leaves file behind. +Solution: Delete the right file. (Dominique Pell茅, closes #7689) +Files: src/testdir/test_filetype.vim + +Patch 8.2.2361 +Problem: Vim9: no highlight for "s///gc" when using 'opfunc'. +Solution: Reset 'lazyredraw' temporarily. (closes #7687) +Files: src/ex_cmds.c + +Patch 8.2.2362 +Problem: Vim9: check of builtin function argument type is incomplete. +Solution: Use need_type() instead of check_arg_type(). +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/evalfunc.c, + src/proto/evalfunc.pro, src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2363 +Problem: curpos() does not accept a string argument as before. +solution: Make a string argument work again. (Yegappan Lakshmanan, + closes #7690) +Files: src/evalfunc.c, src/testdir/test_cursor_func.vim + +Patch 8.2.2364 +Problem: Vim9: line break in lambda accesses freed memory. +Solution: Make a copy of the return type. (closes #7664) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2365 +Problem: Vim9: no check for map() changing item type at script level. +Solution: Check the new value type. +Files: src/list.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2366 +Problem: When using ":sleep" the cursor is always displayed. +Solution: Do not display the cursor when using ":sleep!". (Jeremy Lerner, + closes #7688) +Files: runtime/doc/index.txt, runtime/doc/various.txt, src/ex_cmds.h, + src/ex_docmd.c, src/normal.c, src/proto/ex_docmd.pro, src/term.c, + src/testdir/Make_all.mak, src/testdir/test_sleep.vim + +Patch 8.2.2367 +Problem: Test failures on some less often used systems. +Solution: Adjust printf formats and types. (James McCoy, closes #7691) +Files: src/errors.h, src/evalfunc.c, src/list.c, src/vim9execute.c + +Patch 8.2.2368 +Problem: Insufficient tests for setting options. +Solution: Add a few tests. (Dominique Pell茅, closes #7695) +Files: src/testdir/test_options.vim + +Patch 8.2.2369 +Problem: Vim9: functions return true/false but can't be used as bool. +Solution: Add ret_number_bool(). (closes #7693) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2370 +Problem: Vim9: command fails in catch block. +Solution: Reset force_abort and need_rethrow. (closes #7692) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2371 +Problem: Vim9: crash when using types in :for with unpack. +Solution: Check for skip_var_list() failing. Pass include_type to + skip_var_one(). Skip type when compiling. (closes #7694) +Files: src/vim9compile.c, src/evalvars.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2372 (after 8.2.2371) +Problem: Confusing error message for wrong :let command. +Solution: Only check for type in Vim9 script. +Files: src/evalvars.c + +Patch 8.2.2373 +Problem: Vim9: list assignment only accepts a number index. +Solution: Accept "any" and do a runtime type check. (closes #7694) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2374 +Problem: Accessing uninitialized memory in test_undo. +Solution: Do not look in typebuf.tb_buf if it is empty. (Dominique Pell茅, + closes #7697) +Files: src/edit.c + +Patch 8.2.2375 +Problem: Test for RGB color skipped in the terminal. +Solution: Run the GUI if possible. +Files: src/testdir/test_highlight.vim + +Patch 8.2.2376 +Problem: Vim9: crash when dividing by zero in compiled code using + constants. +Solution: Call num_divide() and num_modulus(). (closes #7704) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2377 +Problem: Vim9: crash when using a range after another expression. +Solution: Set the variable type to number. Fix using :put with a range and + the "=" register. (closes #7706) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2378 +Problem: Vim9: no error message for dividing by zero. +Solution: Give an error message. (issue #7704) +Files: src/errors.h, src/eval.c, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2379 +Problem: Finding spell suggestions twice if 'spellsuggest' contains number. +Solution: Only do internal suggestions once. (closes #7713) +Files: src/spellsuggest.c + +Patch 8.2.2380 +Problem: Vim9: occasional crash when using try/catch and a timer. +Solution: Save and restore "need_rethrow" when invoking a timer callback. + (closes #7708) +Files: src/time.c + +Patch 8.2.2381 +Problem: Vim9: divide by zero does not abort expression execution. +Solution: Use a "failed" flag. (issue #7704) +Files: src/eval.c, src/proto/eval.pro, src/evalvars.c, src/vim9compile.c, + src/testdir/vim9.vim, src/testdir/test_vim9_assign.vim + +Patch 8.2.2382 (after 8.2.2381) +Problem: Build failure. +Solution: Add missing changes. +Files: src/vim9execute.c + +Patch 8.2.2383 +Problem: Focus escape sequences are not named in ":set termcap" output. +Solution: Add the names to the list. (closes #7718) +Files: src/misc2.c + +Patch 8.2.2384 +Problem: Turtle filetype not recognized. +Solution: Add a rule to detect turtle files. (closes #7722) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2385 +Problem: "gj" and "gk" do not work correctly when inside a fold. +Solution: Move check for folding. (closes #7724, closes #4095) +Files: src/normal.c, src/testdir/test_fold.vim + +Patch 8.2.2386 +Problem: Vim9: crash when using ":silent! put". +Solution: When ignoring an error for ":silent!" rewind the stack and skip + ahead to restoring the cmdmod. (closes #7717) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2387 +Problem: Runtime type check does not mention argument index. +Solution: Add ct_arg_idx. (closes #7720) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2388 +Problem: No easy way to get the maximum or minimum number value. +Solution: Add v:numbermax and v:numbermin. +Files: src/evalvars.c, src/vim.h, src/testdir/test_eval_stuff.vim, + runtime/doc/eval.txt + +Patch 8.2.2389 +Problem: Test failure on a few systems. +Solution: Avoid that "char" value is negative. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h + +Patch 8.2.2390 +Problem: Vim9: using positive offset is unexpected. +Solution: Use int8_T instead of char. (James McCoy) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c + +Patch 8.2.2391 +Problem: Memory leak when creating a global function with closure. +Solution: Create a separate partial for every instantiated function. +Files: src/userfunc.c, src/vim9execute.c + +Patch 8.2.2392 +Problem: Fennel filetype not recognized. +Solution: Detect with pattern and hashbang. (Chinmay Dalal, closes #7729) +Files: runtime/filetype.vim, runtime/scripts.vim, + src/testdir/test_filetype.vim + +Patch 8.2.2393 +Problem: Vim9: error message when script line starts with "[{". +Solution: Do not give an error for checking for end of list. +Files: src/dict.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2394 +Problem: Vim9: min() and max() return type is "any". +Solution: Use return type "number". (closes #7728) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2395 +Problem: Vim9: error for wrong type may report wrong line number. +Solution: Save and restore the line number when evaluating the expression. + (closes #7727) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2396 +Problem: Vim9: no white space allowed before "->". +Solution: Allow for white space. (closes #7725) +Files: src/ex_docmd.c, src/eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2397 +Problem: Vim9: "%%" not seen as alternate file name for commands with a + buffer name argument. +Solution: Recognize "%%" like "#". (closes #7732) +Files: src/buffer.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2398 (after 8.2.2396) +Problem: Method test fails. +Solution: Adjust test for allowed white space. +Files: src/testdir/test_method.vim + +Patch 8.2.2399 (after 8.2.2385) +Problem: Fold test fails in wide terminal. +Solution: Adjust the test. (Dominique Pelle, closes #7731, closes #7739) +Files: src/testdir/test_fold.vim + +Patch 8.2.2400 +Problem: Vim9: compiled functions are not profiled. +Solution: Add initial changes to profile compiled functions. Fix that a + script-local function was hard to debug. +Files: runtime/doc/repeat.txt, src/vim9.h, src/vim9compile.c, + src/vim9execute.c, src/userfunc.c, src/proto/vim9compile.pro, + src/structs.h, src/vim9type.c, src/debugger.c, src/ex_cmds.h, + src/ex_docmd.c, src/profiler.c, src/proto/profiler.pro, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_profile.vim + +Patch 8.2.2401 +Problem: Build fails without +profiling feature. +Solution: Add #ifdefs. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/structs.h, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2402 +Problem: Some filetypes not detected. +Solution: Detect Ruby Signature and Puppet related files. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2403 +Problem: Vim9: profiling if/elseif/endif not correct. +Solution: Add profile instructions. Fix that "elseif" was wrong. +Files: src/vim9compile.c, src/testdir/test_profile.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2404 +Problem: Vim9: profiling try/catch not correct. +Solution: Add profile instructions. Fix that "entry" did not rethrow an + exception. +Files: src/vim9compile.c, src/vim9execute.c, src/testdir/test_profile.vim + +Patch 8.2.2405 +Problem: Vim9: no need to allow white space before "(" for :def. +Solution: Give an error for stray white space. (issue #7734) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2406 +Problem: Vim9: profiled :def function leaks memory. +Solution: Delete the profiled instructions. +Files: src/vim9compile.c + +Patch 8.2.2407 +Problem: Old jumplist code is never used. +Solution: Delete the dead code. (Yegappan Lakshmanan, closes #7740) +Files: src/mark.c + +Patch 8.2.2408 +Problem: MinGW: "--preprocessor" flag no longer supported. +Solution: Remove the flag, use the defaults. (Christopher Wellons, + closes #7741) +Files: src/GvimExt/Make_ming.mak, src/Make_cyg_ming.mak + +Patch 8.2.2409 +Problem: Vim9: profiling only works for one function. +Solution: Select the right instructions when calling and returning. + (closes #7743) +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/testdir/test_profile.vim + +Patch 8.2.2410 +Problem: Build failure without the +profiling feature. +Solution: Add dummy argument to macro. +Files: src/vim9.h + +Patch 8.2.2411 +Problem: Profile test fails on MS-Windows. +Solution: Do the profiling in a separate Vim command. +Files: src/testdir/test_profile.vim + +Patch 8.2.2412 +Problem: Not all fields in "cstack" are initialized which might cause a + crash. +Solution: Use CLEAR_FIELD(). +Files: src/ex_docmd.c + +Patch 8.2.2413 +Problem: Crash when using :all while using a cmdline window. (Zdenek Dohnal) +Solution: Disallow :all from the cmdline window. +Files: src/arglist.c, src/ex_getln.c, src/testdir/test_arglist.vim + +Patch 8.2.2414 +Problem: Using freed memory when closing the cmdline window. +Solution: Check the window is still valid. +Files: src/ex_getln.c + +Patch 8.2.2415 +Problem: No way to check for the cmdwin feature, cmdline_hist is now always + enabled. +Solution: Add has('cmdwin') support. Skip arglist test on Windows + temporarily. +Files: runtime/doc/cmdline.txt, src/evalfunc.c, + src/testdir/test_autocmd.vim, src/testdir/test_arglist.vim, + src/testdir/test_cmdline.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_normal.vim, src/testdir/test_tabpage.vim, + src/testdir/test_termcodes.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.2416 +Problem: May get stuck in command line window state. +Solution: Reset "cmdwin_type" when editing buffer fails. Make arglist test + pass on MS-Windows. +Files: src/ex_getln.c, src/testdir/test_arglist.vim + +Patch 8.2.2417 +Problem: Condition stack values may be used when not set. +Solution: Clear cs_script_var_len and cs_block_id just in case they get used + later. (issue #7733) +Files: src/ex_eval.c + +Patch 8.2.2418 +Problem: Color not changed if ModeMsg highlight is set in InsertEnter + autocmd event. (Paul Swanson) +Solution: Call highlight_changed() after triggering InsertEnter. + (closes #7751) +Files: src/edit.c + +Patch 8.2.2419 +Problem: Autocmd test was failing on MS-Windows with GUI. +Solution: Remove stray feedkeys(). +Files: src/testdir/test_autocmd.vim + +Patch 8.2.2420 +Problem: Too many problems with using all autocommand events. +Solution: Disallow defining an autocommand for all events. +Files: src/autocmd.c, src/errors.h, src/testdir/test_autocmd.vim, + src/testdir/test_quickfix.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.2421 +Problem: Double free when using autocommand with "argdel". (Houyunsong) +Solution: Add the arglist_locked flag. +Files: src/arglist.c, src/testdir/test_autocmd.vim + +Patch 8.2.2422 +Problem: Crash when deleting with line number out of range. (Houyunsong) +Solution: Avoid using a negative line number. +Files: src/normal.c, src/testdir/test_ex_mode.vim + +Patch 8.2.2423 (after 8.2.2422) +Problem: Missing error message. +Solution: Add the error message. +Files: src/errors.h + +Patch 8.2.2424 +Problem: Some tests are known to cause an error with ASAN. +Solution: Add CheckNotAsan. +Files: src/testdir/check.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_memory_usage.vim, src/testdir/test_ex_mode.vim + +Patch 8.2.2425 +Problem: Cursor on invalid line with range and :substitute. +Solution: Do not move the cursor when skipping commands. (closes #3434) +Files: src/ex_cmds.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.2426 +Problem: Allowing 'completefunc' to switch windows causes trouble. +Solution: use "textwinlock" instead of "textlock". +Files: src/insexpand.c, src/testdir/test_ins_complete.vim, + src/testdir/test_popup.vim + +Patch 8.2.2427 +Problem: Can still switch windows for 'completefunc'. +Solution: Also disallow switching windows for other completions. +Files: src/insexpand.c, src/testdir/test_ins_complete.vim, + src/testdir/test_popup.vim + +Patch 8.2.2428 +Problem: FocusGained does not work when 'ttymouse' is empty. +Solution: Don't use the short mouse code if there is a longer matching code. + (closes #7755) Add a test. +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.2429 +Problem: :goto does not work correctly with text properties. (Sam McCall) +Solution: Add a test. (Andrew Radev) Also use the text property size when + computing the remaining offset. (closes #5930) +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.2.2430 +Problem: :vimgrep expands wildcards twice. +Solution: Do not expand wildcards a second time. +Files: src/quickfix.c, src/arglist.c, src/testdir/test_quickfix.vim + +Patch 8.2.2431 +Problem: Warning for -fno-strength-reduce with Clang 11. +Solution: Adjust check for clang version number. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2432 +Problem: Libvterm tests are executed even when libtool doesn't work. +Solution: Only run libvterm tests if /usr/bin/gcc exists. +Files: src/Makefile + +Patch 8.2.2433 +Problem: Opening cmdline window gives error in BufLeave autocommand. +Solution: Reset cmdwin_type when triggering the autocommand. +Files: src/ex_cmds.c, src/testdir/test_cmdline.vim + +Patch 8.2.2434 +Problem: Vim9: no error when compiling str2nr() with a number. +Solution: Add argument type checks. (closes #7759) +Files: src/evalfunc.c, src/typval.c, src/proto/typval.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2435 +Problem: setline() gives an error for some types. +Solution: Allow any type, convert each item to a string. +Files: runtime/doc/eval.txt, src/evalbuffer.c, src/typval.c, + src/proto/typval.pro, src/debugger.c, src/vim9execute.c, + src/testdir/test_bufline.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2436 +Problem: Vim9 script test is a bit flaky. +Solution: Wait longer for exit callback. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2437 +Problem: Deprecation warnings with default configuration. +Solution: Add -Wno-deprecated-declarations. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2438 +Problem: Out of bounds compiler warning. +Solution: Increase the size of uf_name. +Files: src/structs.h + +Patch 8.2.2439 +Problem: Not easy to figure out what packages to get when installing Vim on + a new Ubuntu system. +Solution: Mention explicit commands that are easy to follow. +Files: src/INSTALL + +Patch 8.2.2440 +Problem: Documentation based on patches is outdated. +Solution: Add changes to documentation in a patch. +Files: runtime/doc/arabic.txt, runtime/doc/autocmd.txt, + runtime/doc/change.txt, runtime/doc/channel.txt, + runtime/doc/cmdline.txt, runtime/doc/debugger.txt, + runtime/doc/develop.txt, runtime/doc/digraph.txt, + runtime/doc/editing.txt, runtime/doc/eval.txt, + runtime/doc/filetype.txt, runtime/doc/ft_sql.txt, + runtime/doc/gui.txt, runtime/doc/gui_w32.txt, + runtime/doc/gui_x11.txt, runtime/doc/hangulin.txt, + runtime/doc/helphelp.txt, runtime/doc/help.txt, + runtime/doc/if_lua.txt, runtime/doc/if_mzsch.txt, + runtime/doc/if_tcl.txt, runtime/doc/indent.txt, + runtime/doc/index.txt, runtime/doc/insert.txt, + runtime/doc/intro.txt, runtime/doc/map.txt, runtime/doc/mbyte.txt, + runtime/doc/message.txt, runtime/doc/mlang.txt, + runtime/doc/motion.txt, runtime/doc/netbeans.txt, + runtime/doc/options.txt, runtime/doc/os_dos.txt, + runtime/doc/os_haiku.txt, runtime/doc/os_unix.txt, + runtime/doc/os_vms.txt, runtime/doc/os_win32.txt, + runtime/doc/pattern.txt, runtime/doc/pi_getscript.txt, + runtime/doc/pi_logipat.txt, runtime/doc/pi_netrw.txt, + runtime/doc/pi_tar.txt, runtime/doc/pi_vimball.txt, + runtime/doc/pi_zip.txt, runtime/doc/popup.txt, + runtime/doc/print.txt, runtime/doc/quickfix.txt, + runtime/doc/quickref.txt, runtime/doc/recover.txt, + runtime/doc/remote.txt, runtime/doc/repeat.txt, + runtime/doc/rileft.txt, runtime/doc/sign.txt, + runtime/doc/spell.txt, runtime/doc/starting.txt, + runtime/doc/syntax.txt, runtime/doc/tabpage.txt, + runtime/doc/tagsrch.txt, runtime/doc/terminal.txt, + runtime/doc/term.txt, runtime/doc/testing.txt, + runtime/doc/textprop.txt, runtime/doc/tips.txt, + runtime/doc/todo.txt, runtime/doc/uganda.txt, + runtime/doc/undo.txt, runtime/doc/usr_02.txt, + runtime/doc/usr_03.txt, runtime/doc/usr_04.txt, + runtime/doc/usr_05.txt, runtime/doc/usr_07.txt, + runtime/doc/usr_08.txt, runtime/doc/usr_10.txt, + runtime/doc/usr_11.txt, runtime/doc/usr_20.txt, + runtime/doc/usr_22.txt, runtime/doc/usr_23.txt, + runtime/doc/usr_24.txt, runtime/doc/usr_27.txt, + runtime/doc/usr_30.txt, runtime/doc/usr_31.txt, + runtime/doc/usr_40.txt, runtime/doc/usr_41.txt, + runtime/doc/usr_42.txt, runtime/doc/usr_44.txt, + runtime/doc/usr_45.txt, runtime/doc/usr_46.txt, + runtime/doc/usr_90.txt, runtime/doc/usr_toc.txt, + runtime/doc/various.txt, runtime/doc/version5.txt, + runtime/doc/version6.txt, runtime/doc/version7.txt, + runtime/doc/version8.txt, runtime/doc/vi_diff.txt, + runtime/doc/vim9.txt, runtime/doc/visual.txt, + runtime/doc/windows.txt + +Patch 8.2.2441 +Problem: Vim9: extend() does not give an error for a type mismatch. +Solution: Check the type of the second argument. (closes #7760) +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2442 +Problem: Automatic GUI selection does not check for GTK 3. +Solution: Make SKIP_GTK3 empty for automatic GUI support. Set SKIP_GTK3 to + YES when checking for GTK2. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2443 +Problem: Vim9: no compile time error for wrong str2float argument. +Solution: Check argument type. (closes #7759) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2444 +Problem: Vim9: compile error with combination of operator and list. +Solution: Generate constants before parsing a list or dict. (closes #7757) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2445 +Problem: Vim9: no proper error for lambda missing return type. +Solution: Check for this error. (closes #7758) +Files: src/errors.h, src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2446 +Problem: Setting 'term' empty has different error if compiled with GUI. +Solution: Insert "else". (closes #7766) +Files: src/optionstr.c, src/testdir/test_options.vim + +Patch 8.2.2447 +Problem: 'foldlevel' not applied to folds restored from session. +Solution: Set 'foldlevel' after creating the folds. (closes #7767) +Files: src/fold.c, src/testdir/test_mksession.vim + +Patch 8.2.2448 +Problem: Compilation error with Ruby 3.0. +Solution: Adjust #ifdefs and declaration. (Ken Takata, closes #7761) +Files: src/if_ruby.c + +Patch 8.2.2449 +Problem: Vim9: flatten() always changes the list type. +Solution: Disallow using flatten() and add flattennew(). +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/list.c, src/proto/list.pro, src/errors.h, src/vim9compile.c, + src/testdir/test_flatten.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2450 +Problem: MS-Windows: ADS was not preserved if 'backupcopy' is "yes". +Solution: Copy ADS before truncating the file. (Ken Takata, closes #7762) +Files: src/bufwrite.c + +Patch 8.2.2451 +Problem: MS-Windows: Extended Attributes not preserved. +Solution: Preserve Extended Attributes when writing a file. (Ken Takata, + closes #7765) +Files: src/os_win32.c + +Patch 8.2.2452 +Problem: No completion for the 'filetype' option. +Solution: Add filetype completion. (Martin Tournoij, closes #7747) +Files: src/option.c, src/optiondefs.h, src/testdir/test_options.vim + +Patch 8.2.2453 +Problem: Vim9: a variable name with "->" in the next line doesn't work. +Solution: Recognize a variable name by itself. (closes #7770) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2454 +Problem: Leading space can not be made visible. +Solution: Add "lead:" to 'listchars'. (closes #7772) +Files: runtime/doc/options.txt, src/drawline.c, src/globals.h, + src/message.c, src/screen.c, src/testdir/test_listchars.vim + +Patch 8.2.2455 +Problem: Vim9: key type that can be used for literal dict and indexing is + inconsistent. +Solution: Allow using number and bool as key for a literal dict. (#7771) +Files: runtime/doc/vim9.txt, src/dict.c, src/eval.c, src/vim9compile.c, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2456 +Problem: Coverity warning for strcpy() into fixed size array. +Solution: Add a type cast to hopefully silence the bogus warning. +Files: src/userfunc.c + +Patch 8.2.2457 +Problem: Coverity warns for memory leak. +Solution: Free memory when out of memory. +Files: src/if_cscope.c + +Patch 8.2.2458 +Problem: Coverity warns for :retab using freed memory. +Solution: Use the updated line pointer when moving text properties. +Files: src/indent.c + +Patch 8.2.2459 +Problem: Coverity reports dead code. +Solution: Remove the dead code. +Files: src/eval.c + +Patch 8.2.2460 +Problem: Coverity warns for unused value. +Solution: Do not reset the return value to OK. +Files: src/vim9compile.c + +Patch 8.2.2461 +Problem: Coverity warns for unchecked return value. +Solution: Add "(void)" to avoid the warning. +Files: src/vim9execute.c + +Patch 8.2.2462 +Problem: Coverity warns for not checking for fseek() error. +Solution: Give an error message if fseek() fails. +Files: src/spellfile.c + +Patch 8.2.2463 +Problem: Using :arglocal in an autocommand may use freed memory. + (houyunsong) +Solution: Check if the arglist is locked. +Files: src/arglist.c, src/testdir/test_autocmd.vim + +Patch 8.2.2464 +Problem: Using freed memory if window closed in autocommand. (houyunsong) +Solution: Check the window still exists. +Files: src/ex_cmds.c, src/testdir/test_autocmd.vim + +Patch 8.2.2465 +Problem: Using freed memory in :psearch. (houyunsong) +Solution: Check the current window is still valid. Fix flaky test. +Files: src/search.c, src/testdir/test_autocmd.vim + +Patch 8.2.2466 +Problem: Max() and min() can give many error messages. +Solution: Bail out at the first error. (closes #1039, closes #7778) +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.2.2467 +Problem: Script generated by :mkview changes alternate file. +Solution: Only write :balt in the session file. (Harish Rajagopal, + closes #7779) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.2468 +Problem: Not easy to get the full command name from a shortened one. +Solution: Add fullcommand(). (Martin Tournoij, closes #7777) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/ex_docmd.c, src/proto/evalfunc.pro, + src/testdir/test_cmdline.vim + +Patch 8.2.2469 +Problem: Confusing error if :winsize has a wrong argument. +Solution: Quote the argument in the error. (closes #2523) +Files: src/ex_docmd.c, src/testdir/test_excmd.vim + +Patch 8.2.2470 +Problem: Popup_getoptions() does not get textprop from other tab. +Solution: use win_valid_any_tab(). (closes #7786) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.2471 +Problem: Popup_setoptions() does not set textprop in other tab. +Solution: use win_valid_any_tab(). (closes #7788) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.2472 +Problem: Crash when using command line window in an autocommand. + (houyunsong) +Solution: Save and restore au_new_curbuf. +Files: src/ex_cmds.c, src/testdir/test_autocmd.vim + +Patch 8.2.2473 +Problem: Crash when leaving command line window triggers autocommand. + (houyunsong) +Solution: Make sure not to close the current window or buffer. +Files: src/ex_getln.c, src/testdir/test_autocmd.vim + +Patch 8.2.2474 +Problem: Using freed memory when window is closed by autocommand. + (houyunsong) +Solution: Check the window pointer is still valid. +Files: src/quickfix.c, src/testdir/test_autocmd.vim + +Patch 8.2.2475 +Problem: Autocommand tests hangs on MS-Windows. +Solution: Skip one test. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.2476 +Problem: Using freed memory when using an autocommand to split a window + while a buffer is being closed. +Solution: Disallow splitting when the buffer has b_locked_split set. +Files: src/buffer.c, src/window.c, src/errors.h, src/structs.h, + src/popupwin.c, src/testdir/test_autocmd.vim + +Patch 8.2.2477 +Problem: Autocommand tests hang on MS-Windows. +Solution: Skip a couple of tests. Fix file name. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.2478 +Problem: MS-Windows: backup files for plugins are loaded. +Solution: Do not use the alternate file name for files ending in "~". +Files: src/filepath.c + +Patch 8.2.2479 +Problem: set/getbufline test fails without the job feature. +Solution: Check whether the job feature is supported. (Dominique Pell茅, + closes #7790) +Files: src/testdir/test_bufline.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2480 +Problem: Vim9: some errors for white space do not show context. +Solution: Include the text at the error. +Files: src/errors.h, src/dict.c, src/list.c, src/userfunc.c, + src/vim9compile.c, src/vim9script.c, src/vim9type.c + +Patch 8.2.2481 +Problem: Vim9: confusing error when variable arguments have a default + value. +Solution: Give a specific error message. (closes #7793) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2482 +Problem: Build error. +Solution: Add new error message. +Files: src/errors.h + +Patch 8.2.2483 +Problem: Vim9: type error for malformed expression. +Solution: Check for end of command before checking type. (closes #7795) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2484 +Problem: Vim9: Cannot use a comment starting with #{ after an expression. +Solution: Remove the check for "{" since #{ dictionaries are not supported. +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2485 +Problem: When sourcing a script again the script version isn't reset. +Solution: Set sn_version to one when sourcing a script again. Clear + sn_save_cpo properly. (closes #7608) +Files: src/scriptfile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2486 +Problem: Vim9: some errors for white space do not show context. +Solution: Include the text at the error. +Files: src/errors.h, src/dict.c, src/list.c, src/userfunc.c, + src/vim9compile.c, src/vim9type.c + +Patch 8.2.2487 +Problem: Terminal shows garbage after double-wide character with a + combining character. (Kyoichiro Yamada) +Solution: Libvterm: do not add the width of the combining character to the + glyph width. (closes #7801) +Files: src/libvterm/src/state.c, src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_combining.dump + +Patch 8.2.2488 +Problem: json_encode() gives generic argument error. +Solution: Mention the type that can't be encoded. (issue #7802) +Files: src/json.c, src/errors.h, src/testdir/test_json.vim + +Patch 8.2.2489 +Problem: current buffer is wrong after deletebufline() fails to delete a + line in another buffer. +Solution: Restore the current buffer. +Files: src/evalbuffer.c, src/testdir/test_bufline.vim + +Patch 8.2.2490 +Problem: 'wrap' option is always reset when starting diff mode. +Solution: Add the "followwrap" item in 'diffopt'. (Rick Howe, closes #7797) +Files: runtime/doc/diff.txt, runtime/doc/options.txt, src/diff.c, + src/testdir/test_diffmode.vim + +Patch 8.2.2491 +Problem: Popup window for text property may show in first screen line. +Solution: If the text position is invisible do not show the popup window. + (closes #7807) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popup_prop_not_visible_01.dump, + src/testdir/dumps/Test_popup_prop_not_visible_02.dump, + src/testdir/dumps/Test_popup_prop_not_visible_03.dump + +Patch 8.2.2492 +Problem: Command line buffer name cannot be translated. +Solution: Add _(). (Gabriel Dupras, closes #7812) +Files: src/ex_getln.c + +Patch 8.2.2493 +Problem: Text property for text left of window shows up. +Solution: Check if the text property ends before the current column. + (closes #7806) +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_textprop_nowrap_01.dump, + src/testdir/dumps/Test_textprop_nowrap_02.dump + +Patch 8.2.2494 +Problem: ":rviminfo!" clears most of oldfiles. +Solution: Add VIF_ONLY_CURBUF to read_viminfo(). (closes #1781) +Files: src/viminfo.c, src/vim.h + +Patch 8.2.2495 +Problem: Text jumps up and down when moving the cursor in a small window + with wrapping text and 'scrolloff' set. +Solution: Adjust the computation of w_skipcol. (partly by Ghjuvan Lacambre, + closes #7813) +Files: src/move.c, src/testdir/test_breakindent.vim + +Patch 8.2.2496 (after 8.2.2495) +Problem: Insufficient testing for text jumping fix. +Solution: Add another test case. +Files: src/testdir/test_breakindent.vim + +Patch 8.2.2497 +Problem: No error when using more than one character for a register name. +Solution: In Vim9 script check for a single character string. (closes #7814) + Fix that VAR_BOOL and VAR_SPECIAL are not considered equal. +Files: src/errors.h, src/evalfunc.c, src/typval.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2498 +Problem: No test for what 8.2.2494 fixes. +Solution: Add a simple change to test the fix. (closes #7818) +Files: src/testdir/test_viminfo.vim + +Patch 8.2.2499 +Problem: "vim -g --version" does not redirect output. +Solution: Reset gui.starting when showing version info. (closes #7815) +Files: src/main.c, src/testdir/test_version.vim + +Patch 8.2.2500 (after 8.2.2499) +Problem: Build fails without the GUI feature. +Solution: Add #ifdef. +Files: src/main.c + +Patch 8.2.2501 +Problem: Not always clear where an error is reported. +Solution: Add the where_T structure and pass it around. (closes #7796) +Files: src/structs.h, src/vim9type.c, src/proto/vim9type.pro, + src/errors.h, src/evalvars.c, src/proto/evalvars.pro, src/eval.c, + src/proto/eval.pro, src/vim9execute.c, src/vim9script.c, + src/proto/vim9script.pro, src/dict.c, src/list.c, + src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2502 +Problem: A few github actions are failing. +Solution: Install setuptools-rust. (closes #7823) +Files: .github/workflows/ci.yml + +Patch 8.2.2503 +Problem: Vim9: a caught error may leave something on the stack. +Solution: Drop items from the stack if needed. (closes #7826) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2504 +Problem: Vim9: crash when using an argument from a closure. +Solution: Check if gen_load_outer is NULL. (closes #7821) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2505 +Problem: Vim9: crash after defining function with invalid return type. +Solution: Clear function growarrays. Fix memory leak. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2506 +Problem: Vim9: :continue does not work correctly in a :try block +Solution: Add the TRYCLEANUP instruction. (closes #7827) +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2507 +Problem: Github build may fail if Ubuntu 20.04 is used. Installing rust is + not needed. +Solution: Specify ubuntu-18.04 instead of latest. Update "pip" instead of + installing rust. (Ozaki Kiichi, closes #7820) +Files: .github/workflows/ci.yml + +Patch 8.2.2508 +Problem: Cannot change the character displayed in non existing lines. +Solution: Add the "eob" item to 'fillchars'. (closes #7832, closes #3820) +Files: runtime/doc/options.txt, runtime/doc/todo.txt, + runtime/doc/windows.txt, src/drawscreen.c, src/globals.h, + src/optiondefs.h, src/screen.c, src/testdir/test_display.vim + +Patch 8.2.2509 +Problem: Tests fail on s390 build. +Solution: Initialize trycmd_T. +Files: src/vim9execute.c + +Patch 8.2.2510 +Problem: Internal error when popup with mask is zero height or width. +Solution: Bail out if width or height is zero. (closes #7831) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.2511 +Problem: Vim9: cannot use Vim9 script syntax in some places. +Solution: Add the :vim9cmd command modifier. Incompatible: Makes ":vim9" + mean ":vim9cmd" instead of ":vim9script". +Files: runtime/doc/vim9.txt, runtime/doc/repeat.txt, src/ex_docmd.c, + src/ex_cmds.h, src/structs.h, src/ex_cmdidxs.h, src/errors.h, + src/testdir/test_vim9_cmd.vim, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_1.dump, + src/testdir/dumps/Test_wildmenu_2.dump, + src/testdir/dumps/Test_wildmenu_3.dump, + src/testdir/dumps/Test_wildmenu_4.dump, + src/testdir/test_quickfix.vim + +Patch 8.2.2512 +Problem: Vim9: compiling error test sometimes fails. +Solution: use WaitForAssert() instead of sleeping for a bit. (Dominique + Pell茅, closes #7837) +Files: src/testdir/term_util.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2513 (after 8.2.2511) +Problem: Vim9: missing part of :vim9cmd change. +Solution: Use command modifier in in_vim9script(). +Files: src/vim9script.c + +Patch 8.2.2514 (after 8.2.2511) +Problem: Vim9: build error in tiny version. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.2515 +Problem: Memory access error when truncating an empty message. +Solution: Check for an empty string. (Dominique Pell茅, closes #7841) +Files: src/message.c, src/message_test.c + +Patch 8.2.2516 +Problem: Test failure on s390. (analyses by James McCoy) +Solution: Only set the try_finally label when not skipping. +Files: src/vim9compile.c + +Patch 8.2.2517 +Problem: Vim9: fix for s390 not tested on other systems. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2518 +Problem: 'listchars' should be window-local. +Solution: Make 'listchars' global-local. (Yegappan Lakshmanan, Marco Hinz, + closes #5206, closes #7850) +Files: runtime/doc/options.txt, src/buffer.c, src/charset.c, + src/drawline.c, src/drawscreen.c, src/evalfunc.c, src/globals.h, + src/indent.c, src/message.c, src/misc1.c, src/option.c, + src/option.h, src/optiondefs.h, src/optionstr.c, + src/proto/screen.pro, src/screen.c, src/structs.h, + src/testdir/test_listchars.vim, src/testdir/test_listlbr.vim + +Patch 8.2.2519 +Problem: Vim9: no reason to keep strange Vi behavior. +Solution: ":3" and ":3|" both go to line 3. ":|" does not print the line. + (closes #7840) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2520 +Problem: Missing tests for 'listchars'. +Solution: Add a few more checks. (Yegappan Lakshmanan, closes #7854) +Files: src/testdir/test_listchars.vim + +Patch 8.2.2521 +Problem: Some compilers can't handle pointer initialization. (John + Marriott) +Solution: Use a local struct and assign it afterwards. +Files: src/screen.c + +Patch 8.2.2522 +Problem: Beancount filetype not recognized. +Solution: Add a detection rule. (Brian Ryall, closes #7859) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2523 +Problem: Svelte filetype not recognized. +Solution: Add a detection rule. (Brian Ryall, closes #7858) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2524 +Problem: Cannot change the characters displayed in the foldcolumn. +Solution: Add fields to 'fillchars'. (Yegappan Lakshmanan, Matthieu Coudron, + closes #7860) +Files: runtime/doc/options.txt, src/globals.h, src/mouse.c, src/screen.c, + src/testdir/test_display.vim + +Patch 8.2.2525 +Problem: Vim9: only local variables checked for a name. +Solution: Also check arguments and script variables. (closes #7838) +Files: src/vim9compile.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2526 (after 8.2.2525) +Problem: Build failure. +Solution: Change lookup_scriptvar() arguments. +Files: src/evalvars.c, src/proto/evalvars.pro + +Patch 8.2.2527 +Problem: Vim9: lambda return type is not determined at script level. +Solution: Compile the lambda to get the return type. (closes #7843) +Files: src/eval.c, src/vim.h, src/vim9.h, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2528 +Problem: Vim9: crash when compiling lambda fails. +Solution: Bail out after compilation fails. (closes #7862) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2529 +Problem: Vim9: Not possible to use legacy and Vim9 script in one file. +Solution: Vim9: allow for "if false" before :vim9script. (closes #7851) +Files: runtime/doc/vim9.txt, src/ex_docmd.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2530 +Problem: Vim9: not enough testing for profiling. +Solution: Add a test with nested functions and a lambda. Fix profiling + for calling a compiled function. +Files: src/profiler.c, src/proto/profiler.pro, src/userfunc.c, + src/vim9execute.c, src/testdir/test_profile.vim + +Patch 8.2.2531 +Problem: Vim9: the :k command is obscure. +Solution: Disallow using :k, can use :mark instead. (closes #7874) +Files: runtime/doc/vim9.txt, src/ex_docmd.c, src/vim9script.c, + src/vim9compile.c, src/ex_cmds.h, src/testdir/test_vim9_script.vim + +Patch 8.2.2532 +Problem: Vim9: confusing error if :k is used with a range. +Solution: Give an error about the range. (issue #7874) +Files: src/vim9script.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2533 +Problem: Vim9: cannot use a range with :unlet. +Solution: Implement ISN_UNLETRANGE. +Files: src/errors.h, src/eval.c, src/evalvars.c, src/list.c, + src/proto/evalvars.pro, src/proto/list.pro, src/vim9.h, + src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2534 +Problem: Missing test coverage. +Solution: Improve test coverage for completion with different encodings, + mapset(), and term function failures. (Dominique Pell茅, + closes #7877) +Files: src/testdir/test_edit.vim, src/testdir/test_maparg.vim, + src/testdir/test_terminal3.vim + +Patch 8.2.2535 +Problem: MS-Windows: cannot run all vim9 tests. +Solution: Make test_vim9 target work. +Files: src/Make_mvc.mak + +Patch 8.2.2536 +Problem: Coverity complains about unchecked return value. +Solution: Add (void). +Files: src/userfunc.c + +Patch 8.2.2537 +Problem: Vim9: crash when map() fails. +Solution: Clear typval before using it. (closes #7884) +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2538 +Problem: Crash when using Python list iterator. +Solution: Increment the list reference count. (closes #7886) +Files: src/if_py_both.h, src/testdir/test_python3.vim + +Patch 8.2.2539 +Problem: Vim9: return from finally block causes a hang. +Solution: Store both the finally and endtry indexes. (closes #7885) +Files: src/vim9execute.c, src/vim9compile.c, src/vim9.h, + src/testdir/test_vim9_script.vim, + +Patch 8.2.2540 +Problem: Vim9: no error for using script var name for argument. +Solution: Check for this error. (closes #7868) +Files: src/userfunc.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.2541 +Problem: Popup_create() does not allow boolean for "cursorline". +Solution: Use dict_get_bool(). (issue #7869) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.2542 +Problem: Highlight of char beyond line end is not correct. (Chuan Wei Foo) +Solution: Fix counting NUL as one cell. Draw one more character if the EOL + is part of the match. (closes #7883) +Files: src/match.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_1.dump, + src/testdir/dumps/Test_hlsearch_2.dump + +Patch 8.2.2543 +Problem: Vim9: a return inside try/catch does not restore exception state + properly. +Solution: When there is no ":finally" jump to ":endtry". (closes #7882) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2544 +Problem: Vim9: error for argument when checking for lambda. +Solution: Respect the skip flag. (closes #7887) +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2545 +Problem: Errors and crash when terminal window is zero height. (Leonid V. + Fedorenchik) +Solution: Do not resize when width or height is zero. (closes #7890) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.2546 +Problem: Typo in mouse key name. +Solution: Fix the typo. (issue #4725) +Files: src/misc2.c + +Patch 8.2.2547 +Problem: "%" command not accurate for big files. +Solution: Make it more accurate for files up to 21M lines. (Dominique Pell茅, + closes #7889) +Files: src/normal.c + +Patch 8.2.2548 +Problem: May get stuck in the cmdline window using :normal. +Solution: Have nv_esc() return K_IGNORE. +Files: src/normal.c + +Patch 8.2.2549 +Problem: Crash after using "g:" in a for loop. +Solution: Increment the reference count. (closes #7892) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2550 +Problem: Signal stack size is wrong with latest glibc 2.34. +Solution: Use sysconf(_SC_SIGSTKSZ) if available. (Zdenek Dohnal, closes + #7895) +Files: src/config.h.in, src/configure.ac, src/os_unix.c, + src/auto/configure + +Patch 8.2.2551 +Problem: MS-Windows: colors test file is not installed. +Solution: Also copy runtime/colors/tools. (Ken Takata, closes #7902) +Files: nsis/gvim.nsi + +Patch 8.2.2552 +Problem: Vim9: no reason to consider "{{{{{{{{" a command. +Solution: Just use "{". (issue #7904) +Files: src/ex_cmds.h + +Patch 8.2.2553 +Problem: Vim9: Cannot put "|" after "{". +Solution: Add the EX_TRLBAR flag. (issue #7904) +Files: src/ex_cmds.h, src/ex_eval.c + +Patch 8.2.2554 +Problem: Vim9: exporting a final is not tested. +Solution: Add a test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2555 +Problem: Vim9: missing test for 8.2.2553. +Solution: Add a simple test. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2556 +Problem: Vim9: :import with "as" not fully supported. +Solution: Implement "as" for more cases. +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2557 +Problem: Compiler warning for shadowed variable. +Solution: Declare "p" only once. +Files: src/vim9script.c + +Patch 8.2.2558 +Problem: No error if a lambda argument shadows a variable. +Solution: Check that the argument name shadows a local, argument or script + variable. (closes #7898) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/userfunc.c, + src/vim9script.c, src/errors.h, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.2559 +Problem: MS-Windows: guifont test fails on Windows XP. +Solution: Check windowsversion(). +Files: src/testdir/test_gui.vim + +Patch 8.2.2560 +Problem: Setting 'winminheigt' does not take tabline into account. +Solution: Subtract the tabline from the available height. (closes #7899) +Files: src/window.c, src/testdir/test_options.vim + +Patch 8.2.2561 +Problem: Not all textprop code is covered by tests. +Solution: Add a few more test cases. (Dominique Pell茅, closes #7908) +Files: src/testdir/test_textprop.vim + +Patch 8.2.2562 +Problem: GUI: star register changed when 'clipboard' is "unnamedplus". (Ingo + Karkat) +Solution: Do not change the star register when 'clipboard' contains + "unnamedplus" and not "unnamed". (closes #1516) +Files: src/register.c + +Patch 8.2.2563 +Problem: Cannot use multibyte characters for folding in 'fillchars'. +Solution: Port pull request 11568 to Vim. (Yegappan Lakshmanan, + closes #7924) +Files: src/drawline.c, src/drawscreen.c, src/macros.h, + src/proto/screen.pro, src/screen.c, src/testdir/test_fold.vim, + src/testdir/test_profile.vim + +Patch 8.2.2564 +Problem: Focus events end Insert mode if 'esckeys' is not set. +Solution: Do not enable focus events when 'esckeys' is off. (closes #7926) +Files: src/term.c + +Patch 8.2.2565 +Problem: Vim9: "..=" not always recognized. +Solution: Do not consider "..=" to be string concatenation. (closes #7905) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2566 +Problem: Vim9: Function name is not recognized. +Solution: Change lookup_scriptvar() to also find function names. + (closes #7770) +Files: src/vim9script.c, src/evalvars.c, src/proto/evalvars.pro, + src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2567 +Problem: Vim9: no error if variable is defined for existing function. +Solution: Check if name isn't already in use. (closes #7897) +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2568 +Problem: Second time a preview popup is opened highlight is not set. + (Gabriel Dupras) +Solution: Apply 'previewpopup' after getting the file. (closes #7928) +Files: src/tag.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_2.dump, + src/testdir/dumps/Test_popupwin_previewpopup_3.dump, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump, + src/testdir/dumps/Test_popupwin_previewpopup_5.dump + +Patch 8.2.2569 +Problem: 'fillchars' "stl" and "stlnc" items must be single byte. +Solution: Accept multi-byte characters. (Christian Wellenbrock, Yegappan + Lakshmanan, closes #7927) +Files: runtime/doc/options.txt, src/buffer.c, src/macros.h, src/screen.c, + src/testdir/test_fold.vim, src/testdir/test_statusline.vim + +Patch 8.2.2570 +Problem: Tests fail when run as root. +Solution: Add a comment mentioning the expected failure. (issue #7919) +Files: src/testdir/test_edit.vim, src/testdir/test_excmd.vim, + src/testdir/test_help.vim, src/testdir/test_writefile.vim + +Patch 8.2.2571 +Problem: Test may leave file behind. +Solution: Delete the temporary file. Don't profile in the running Vim + instance. +Files: src/testdir/test_quickfix.vim, src/testdir/test_profile.vim + +Patch 8.2.2572 +Problem: Vim9: crash when getting the types for a legacy function. +Solution: Initialize the type list growarray. (closes #7929) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2573 +Problem: Vim9: using invalid pointer for error message. +Solution: Use the right pointer. (closes #7921) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2574 +Problem: Vim9: crash when calling partial with wrong function. +Solution: Check argument types of called function. (closes #7912) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2575 +Problem: Vim9: a function name with "->" in the next line doesn't work. +Solution: Recognize a function name by itself. (closes #7770) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2576 +Problem: Vim9: defining a :func function checks for white space after a + comma in the arguments. +Solution: Only check for white space in a :def function. (closes #7930) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2577 +Problem: Compiler warning for type conversion. +Solution: Add a typecast. (Mike Williams) +Files: src/drawline.c + +Patch 8.2.2578 +Problem: Lua cannot handle a passed in lambda. +Solution: Handle VAR_PARTIAL. (Prabir Shrestha, closes #7937, closes #7936) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.2579 +Problem: Vim9: crash in garbagecollect after for loop. +Solution: Do not set a reference in script item when the name was cleared. + (closes #7935) +Files: src/evalvars.c + +Patch 8.2.2580 +Problem: Vim9: checking vararg type is wrong when function is auto-loaded. +Solution: Use the member type. (closes #7933) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2581 +Problem: Vim9: sourcing Vim9 script triggers a redraw. +Solution: Do not let setting/restoring 'cpoptions' cause a redraw. + (closes #7920) +Files: src/vim.h, src/option.c, src/optionstr.c, src/scriptfile.c, + src/vim9script.c, src/testdir/test_vim9_script.vim, + src/testdir/dumps/Test_vim9_no_redraw.dump + +Patch 8.2.2582 (after 8.2.2581) +Problem: Vim9: screendump test fails on MS-Windows. +Solution: Use :function instead of :def. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2583 +Problem: Vim9: cannot compare result of getenv() with null. +Solution: Make the return type of getenv() "any". (closes #7943) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2584 +Problem: Vim9: type error for assigning the result of list concatenation to + a list. +Solution: Do not consider concatenation result in a constant. (closes #7942) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2585 +Problem: Vim9: illegal memory access. +Solution: Check byte right after "null", not one more. +Files: src/vim9compile.c + +Patch 8.2.2586 +Problem: Process id may be invalid. +Solution: Use sysinfo.uptime to check for recent reboot. (suggested by Hugo + van der Sanden, closes #7947) +Files: src/configure.ac, src/auto/configure, src/config.h.in, + src/memline.c, src/testing.c, src/globals.h, + src/testdir/test_recover.vim + +Patch 8.2.2587 (after 8.2.2586) +Problem: Recover test fails on FreeBSD. +Solution: Check for Linux. +Files: src/testdir/check.vim, src/testdir/test_recover.vim + +Patch 8.2.2588 (after 8.2.2586) +Problem: Build failure with tiny features. +Solution: Add #ifdef. Run recover test separately. +Files: src/memline.c, src/testdir/Make_all.mak, src/testdir/test_alot.vim + +Patch 8.2.2589 (after 8.2.2586) +Problem: Recover test hangs in the GUI. +Solution: Add g:skipped_reason to skip a _nocatch_ test. +Files: src/testdir/runtest.vim, src/testdir/test_recover.vim + +Patch 8.2.2590 +Problem: Vim9: default argument value may cause internal error. +Solution: Hide later function arguments when compiling the expression. + (closes #7948) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2591 +Problem: Poke files are not recognized. +Solution: Add a filetype entry. (Matt Ihlenfield) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2592 +Problem: Code coverage could be improved. +Solution: Add a few more tests. (Dominique Pell茅, closes #7957) +Files: src/testdir/test_fileformat.vim, src/testdir/test_normal.vim, + src/testdir/test_sleep.vim, src/testdir/test_textformat.vim, + src/testdir/test_viminfo.vim + +Patch 8.2.2593 +Problem: List of distributed files is incomplete. +Solution: Add a file and rename another. +Files: Filelist + +Patch 8.2.2594 +Problem: Alternate buffer added to session file even when it's hidden. +Solution: Check the 'buflisted' option. (closes #7951) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.2595 +Problem: Setting 'winminheight' may cause 'lines' to change. +Solution: Also take minimal height of other tabpages into account. (#7899) +Files: src/window.c, src/testdir/test_options.vim + +Patch 8.2.2596 +Problem: :doautocmd may confuse scripts listening to WinEnter. +Solution: Do the current buffer last. (closes #7958) +Files: src/autocmd.c, src/testdir/test_autocmd.vim + +Patch 8.2.2597 +Problem: Vim9: "import * as" does not work at script level. +Solution: Implement using an imported namespace. +Files: src/vim.h, src/eval.c, src/evalvars.c, src/proto/evalvars.pro, + src/vim9execute.c, src/errors.h, src/vim9script.c, + src/proto/vim9script.pro, src/testdir/test_vim9_script.vim + +Patch 8.2.2598 +Problem: Vim9: :open does not need to be supported. +Solution: Do not support :open in Vim9 script. +Files: src/ex_docmd.c, src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2599 (after 8.2.2597) +Problem: Build failure. +Solution: Add missing change. +Files: src/vim9compile.c + +Patch 8.2.2600 +Problem: Vim9: crash when putting an unknown type in a dictionary. + (Yegappan Lakshmanan) +Solution: Handle a NULL type pointer. +Files: src/vim9type.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2601 +Problem: Memory usage test often fails on FreeBSD. +Solution: Increase multiplier for upper limit. +Files: src/testdir/test_memory_usage.vim + +Patch 8.2.2602 +Problem: Vim9: continue doesn't work if :while is very first command. + (Yegappan Lakshmanan) +Solution: Add one to the continue instruction index. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2603 +Problem: Vim9: no effect if user command is also a function. +Solution: Check for paren following. (closes #7960) +Files: src/evalvars.c, src/proto/evalvars.pro, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/vim9compile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2604 +Problem: GUI-specific command line arguments not tested. +Solution: Add tests for several arguments. (Dominique Pell茅, closes #7962) +Files: src/testdir/test_startup.vim + +Patch 8.2.2605 +Problem: Vim9: string index and slice does not include composing chars. +Solution: Include composing characters. (issue #6563) +Files: runtime/doc/vim9.txt, src/vim9execute.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2606 +Problem: strchars() defaults to counting composing characters. +Solution: Add strcharlen() which ignores composing characters. +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/testdir/test_utf8.vim + +Patch 8.2.2607 +Problem: strcharpart() cannot include composing characters. +Solution: Add the {skipcc} argument. +Files: runtime/doc/eval.txt, src/evalfunc.c, + src/testdir/test_expr_utf8.vim + +Patch 8.2.2608 +Problem: Character input not fully tested. +Solution: Add more tests. (Yegappan Lakshmanan, closes #7963) +Files: src/testdir/test_functions.vim, src/testdir/test_messages.vim, + src/testdir/test_paste.vim, src/testdir/test_registers.vim, + src/testdir/test_undo.vim + +Patch 8.2.2609 +Problem: Test disabled on MS-Windows even though it should work. +Solution: Restore the condition for skipping the test. (Ken Takata, + closes #7970) +Files: src/testdir/test_startup.vim + +Patch 8.2.2610 +Problem: Mouse click test fails when using remote connection. +Solution: Use a larger 'mousetime'. (Dominique Pell茅, closes #7968) +Files: src/testdir/test_selectmode.vim + +Patch 8.2.2611 +Problem: Conditions for startup tests are not exactly right. +Solution: Check for type of GUI instead of MS-Windows. (Ozaki Kiichi, + closes #7976) +Files: src/main.c, src/testdir/check.vim, src/testdir/test_startup.vim + +Patch 8.2.2612 +Problem: col('.') may get outdated column value. +Solution: Add a note to the help how to make this work and add a test for + it. (closes #7971) +Files: runtime/doc/map.txt, src/testdir/test_mapping.vim + +Patch 8.2.2613 (after 8.2.2612) +Problem: New test throws exception. +Solution: Adjust the function cleanup. +Files: src/testdir/test_mapping.vim + +Patch 8.2.2614 +Problem: Vim9: function is deleted while executing. +Solution: increment the call count, when more than zero do not delete the + function but mark it as dead. (closes #7977) +Files: src/vim9execute.c, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2615 (after 8.2.2614) +Problem: Test is sourcing the wrong file. +Solution: Correct the file name. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2616 +Problem: Vim9: if 'cpo' is changed in Vim9 script it may be restored. +Solution: Apply the changes to 'cpo' to the restored value. +Files: runtime/doc/vim9.txt, src/scriptfile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2617 +Problem: Vim9: script variable in a block scope not found by a nested + function. +Solution: Copy the block scope IDs before compiling the function. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2618 +Problem: Vim9: cannot use a normal list name to store function refs. +Solution: Allow a lower case name if it is indexed. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2619 +Problem: Vim9: no test for return type of lambda. +Solution: Add a test. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.2620 +Problem: Vim9: Using #{ for a dictionary gives strange errors. +Solution: Give an error when using #{ for a comment after a command. +Files: src/vim9compile.c, src/vim9script.c, src/proto/vim9script.pro, + src/errors.h, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2621 +Problem: typval2type() cannot handle recursive structures. +Solution: Use copyID. (closes #7979) +Files: src/list.c, src/vim9script.c, src/vim9type.c, + src/proto/vim9type.pro, src/testdir/test_vimscript.vim + +Patch 8.2.2622 +Problem: GTK: error when starting up and -geometry is given. (Dominique + Pell茅) +Solution: Use another function to get the monitor if the window has not been + created yet. (closes #7978) +Files: src/gui_gtk_x11.c, src/proto/gui_gtk_x11.pro, src/gui_beval.c, + src/gui_xim.c + +Patch 8.2.2623 +Problem: Some tests fail when run as root. +Solution: Use CheckNotRoot. +Files: src/testdir/test_edit.vim, src/testdir/test_excmd.vim, + src/testdir/test_help.vim, src/testdir/test_writefile.vim + +Patch 8.2.2624 +Problem: Atom files not recognized. +Solution: Recognize .atom as XML. (Kivin Locke, closes #7986) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2625 +Problem: Rss files not recognized. +Solution: Recognize .rss as XML. (Kivin Locke, closes #7987) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2626 +Problem: GTK3: error when starting up and -geometry is given. (Dominique + Pell茅) +Solution: Use another function to get the monitor if the window has not been + created yet. (closes #7978) +Files: src/gui_gtk_x11.c + +Patch 8.2.2627 +Problem: No need to check for BSD after checking for not root. +Solution: Remove CheckNotBSD. (Ozaki Kiichi, closes #7989) +Files: src/testdir/test_excmd.vim, src/testdir/test_help.vim, + src/testdir/check.vim + +Patch 8.2.2628 +Problem: Vim9: #{ can still be used at the script level. +Solution: Give an error for #{ like in a :def function. +Files: src/eval.c, src/ex_docmd.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2629 +Problem: Vim9: error for #{{ is not desired. +Solution: Adjust the checks. (closes #7990) +Files: src/errors.h, src/vim9script.c, src/ex_docmd.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2630 +Problem: Hard to see where a test gets stuck. +Solution: Print the executed test function. (Dominique Pell茅, closes #7975) +Files: src/testdir/Makefile + +Patch 8.2.2631 +Problem: Commands from winrestcmd() do not always work properly. (Leonid V. + Fedorenchik) +Solution: Repeat the size commands twice. (closes #7988) +Files: src/evalwindow.c, src/testdir/test_window_cmd.vim + +Patch 8.2.2632 +Problem: Not all command line arguments are tested. +Solution: Add tests for -D and -serverlist. (Dominique Pell茅, closes #7992) +Files: src/testdir/test_clientserver.vim, src/testdir/test_startup.vim + +Patch 8.2.2633 +Problem: Multi-byte 'fillchars' for folding do not show properly. +Solution: Handle multi-byte characters correctly. (Yegappan Lakshmanan, + closes #7983, closes #7955) +Files: src/screen.c, src/testdir/test_fold.vim + +Patch 8.2.2634 +Problem: 'tagfunc' does not indicate using a pattern. +Solution: Add the "r" flag. (Andy Massimino, closes #7982) +Files: runtime/doc/tagsrch.txt, src/tag.c, src/testdir/test_tagfunc.vim + +Patch 8.2.2635 +Problem: Vim9: cannot define an inline function. +Solution: Make an inline function mostly work. +Files: src/userfunc.c, src/errors.h, src/vim9compile.c, src/misc2.c, + src/proto/vim9compile.pro, src/testdir/test_vim9_expr.vim + +Patch 8.2.2636 (after 8.2.2635) +Problem: Memory leak when compiling inline function. +Solution: Free the prefetched line. +Files: src/userfunc.c, src/vim9compile.c, src/structs.h, src/globals.h, + src/eval.c + +Patch 8.2.2637 +Problem: prop_remove() causes a redraw even when nothing changed. +Solution: Only redraw if a property was removed. (Dominique Pell茅) +Files: src/textprop.c + +Patch 8.2.2638 +Problem: Cannot write a message to the terminal from the GUI. +Solution: Add :echoconsole and use it in the test runner. (issue #7975) +Files: runtime/doc/eval.txt, runtime/doc/index.txt, src/ex_cmds.h, + src/ex_cmdidxs.h, src/eval.c, src/ui.c, src/proto/ui.pro, + src/term.c, src/testdir/runtest.vim + +Patch 8.2.2639 (after 8.2.2638) +Problem: Build failure when fsync() is not available. +Solution: Add #ifdef. +Files: src/ui.c + +Patch 8.2.2640 +Problem: screenstring() returns non-existing composing characters. +Solution: Only use composing characters if there is a base character. +Files: src/evalfunc.c, src/testdir/test_listchars.vim + +Patch 8.2.2641 +Problem: Display test fails because of lacking redraw. +Solution: Add a redraw command. +Files: src/testdir/test_display.vim + +Patch 8.2.2642 +Problem: Vim9: no clear error for wrong inline function. +Solution: Check for something following the "{". +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2643 +Problem: Various code not covered by tests. +Solution: Add a few more test. (Yegappan Lakshmanan, closes #7995) +Files: src/testdir/test_edit.vim, src/testdir/test_functions.vim, + src/testdir/test_mapping.vim, src/testdir/test_termcodes.vim, + src/testdir/test_undo.vim + +Patch 8.2.2644 +Problem: prop_clear() causes a screen update even when nothing changed. +Solution: Only redraw when a property was cleared. (Dominique Pell茅) +Files: src/textprop.c + +Patch 8.2.2645 +Problem: Using inline function is not properly tested. +Solution: Add test cases, esp. for errors. Minor code improvements. +Files: src/userfunc.c, src/errors.h, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2646 +Problem: Vim9: error for not using string doesn't mention argument. +Solution: Add argument number. +Files: src/filepath.c, src/typval.c, src/proto/typval.pro, src/errors.h, + src/mbyte.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2647 +Problem: Terminal test sometimes hangs. +Solution: Wait for the shell to display a prompt. +Files: src/testdir/test_terminal.vim + +Patch 8.2.2648 +Problem: Terminal resize test sometimes hangs. +Solution: Wait for the shell to display a prompt and other output. +Files: src/testdir/test_terminal2.vim + +Patch 8.2.2649 +Problem: Vim9: some wincmd arguments cause a white space error. +Solution: Insert a space before the count. (closes #8001) +Files: src/window.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2650 +Problem: Vim9: command modifiers not handled in nested function. +Solution: Keep function-local info in a structure and save it on the stack. +Files: src/vim9execute.c, src/vim9.h, src/testdir/test_vim9_func.vim + +Patch 8.2.2651 +Problem: Vim9: restoring command modifiers happens after jump. +Solution: Move the restore instruction to before the jump. (closes #8006) + Also handle for and while. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2652 +Problem: Vim9: can use command modifier without an effect. +Solution: Give an error for a misplaced command modifier. Fix error message + number. +Files: src/vim9compile.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/ex_eval.c, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2653 +Problem: Build failure. +Solution: Add missing changes. +Files: src/errors.h + +Patch 8.2.2654 +Problem: Vim9: getting a character from a string can be slow. +Solution: Avoid a function call to get the character byte size. (#8000) +Files: src/vim9execute.vim + +Patch 8.2.2655 +Problem: The -w command line argument doesn't work. +Solution: Don't set 'window' when set with the -w argument. (closes #8011) +Files: src/term.c, src/testdir/test_startup.vim + +Patch 8.2.2656 +Problem: Some command line arguments and regexp errors not tested. +Solution: Add a few test cases. (Dominique Pell茅, closes #8013) +Files: src/testdir/test_regexp_latin.vim, src/testdir/test_startup.vim + +Patch 8.2.2657 +Problem: Vim9: error message for declaring variable in for loop. +Solution: Clear variables when entering block again. (closes #8012) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2658 +Problem: :for cannot loop over a string. +Solution: Accept a string argument and iterate over its characters. +Files: runtime/doc/eval.txt, src/eval.c, src/vim9compile.c, + src/vim9execute.c, src/errors.h, src/testdir/test_vimscript.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2659 (after 8.2.2658) +Problem: Eval test fails because for loop on string works. +Solution: Check looping over function reference fails. +Files: src/testdir/test_eval_stuff.vim + +Patch 8.2.2660 +Problem: Vim9: no error for declaration with trailing text. +Solution: Give an error. (closes #8014) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2661 +Problem: Leaking memory when looping over a string. +Solution: Free the memory. +Files: src/eval.c + +Patch 8.2.2662 +Problem: There is no way to avoid some escape sequences. +Solution: Suppress escape sequences when the --not-a-term argument is used. + (Gary Johnson) +Files: src/main.c, src/os_unix.c, src/testdir/test_startup.vim + +Patch 8.2.2663 +Problem: Vim9: leaking memory when inline function has an error. +Solution: Free the partially allocated function. +Files: src/userfunc.c + +Patch 8.2.2664 +Problem: Vim9: not enough function arguments checked for string. +Solution: Check in balloon functions. Refactor function arguments. +Files: src/typval.c, src/proto/typval.pro, src/filepath.c, + src/evalfunc.c, src/mbyte.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2665 (after 8.2.2664) +Problem: Test failures. +Solution: Check more specific feature. Add missing change. +Files: src/testdir/test_vim9_builtin.vim, src/evalbuffer.c + +Patch 8.2.2666 +Problem: Vim9: not enough function arguments checked for string. +Solution: Check in ch_logfile(), char2nr() and others. +Files: src/channel.c, src/evalfunc.c, src/filepath.c, src/eval.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2667 +Problem: prop_find() cannot find item matching both id and type. +Solution: Add the "both" argument. (Naohiro Ono, closes #8019) +Files: runtime/doc/textprop.txt, src/testdir/test_textprop.vim, + src/textprop.c + +Patch 8.2.2668 +Problem: Vim9: omitting "call" for "confirm()" does not give an error. +Solution: Do not recognize a modifier followed by "(". +Files: src/ex_docmd.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2669 +Problem: Command line completion does not work after "vim9". +Solution: Include the "9". (Naohiro Ono, closes #8025) +Files: src/cmdexpand.c, src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.2670 +Problem: Vim9: error for append(0, text). +Solution: Check for negative number. (closes #8022) +Files: src/typval.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2671 (after 8.2.2670) +Problem: Error for line number in legacy script. +Solution: Check for number type. +Files: src/typval.c + +Patch 8.2.2672 +Problem: Vim9: cannot use :lockvar and :unlockvar in compiled script. +Solution: Implement locking support. +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2673 +Problem: Vim9: script-local funcref can have lower case name. +Solution: Require an upper case name. +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2674 +Problem: Motif: cancelling the font dialog resets the font. +Solution: When no font is selected to not change the font. (closes #7825, + closes #8035) Fix compiler warnings. +Files: src/gui_x11.c, src/gui_motif.c + +Patch 8.2.2675 +Problem: Directory change in a terminal window shell is not followed. +Solution: Add the 'autoshelldir' option. (closes #6290) +Files: runtime/doc/options.txt, runtime/doc/quickref.txt, + runtime/optwin.vim, src/charset.c, src/feature.h, src/option.h, + src/optiondefs.h, src/terminal.c, src/testdir/check.vim, + src/testdir/test_terminal3.vim + +Patch 8.2.2676 +Problem: Missing error message. +Solution: Add new error message. +Files: src/errors.h + +Patch 8.2.2677 +Problem: Vim9: cannot use only some of the default arguments. +Solution: Use v:none to use default argument value. Remove + uf_def_arg_idx[], use JUMP_IF_ARG_SET. (closes #6504) +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/vim9execute.c, + src/userfunc.c, src/structs.h, src/vim9.h, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2678 +Problem: Test for 'autoshelldir' does not reset the option. +Solution: Reset the option after testing. +Files: src/testdir/test_terminal3.vim + +Patch 8.2.2679 +Problem: Winbar drawn over status line for non-current window with winbar + if frame is zero height. (Leonid V. Fedorenchik) +Solution: Do not draw the window if the frame height is zero. (closes #8037) +Files: src/drawscreen.c, src/testdir/test_winbar.vim, + src/testdir/dumps/Test_winbar_not_visible.dump + +Patch 8.2.2680 +Problem: Vim9: problem defining a script variable from legacy function. +Solution: Check if the script is Vim9, not the current syntax. + (closes #8032) +Files: src/vim9script.c, src/proto/vim9script.pro, src/evalvars.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2681 +Problem: Vim9: test fails for redeclaring script variable. +Solution: It's OK to assign to an existing script variable in legacy. +Files: src/evalvars.c + +Patch 8.2.2682 +Problem: Vim9: cannot find Name.Func from "import * as Name". (Alexander + Goussas) +Solution: When no variable found try finding a function. (closes #8045) + Check that the function was exported. +Files: src/vim9compile.c, src/vim9script.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.2683 +Problem: Build failure without the +eval feature. +Solution: Add #ifdef. +Files: src/vim9script.c + +Patch 8.2.2684 +Problem: Not enough folding code is tested. +Solution: Add more test cases. (Yegappan Lakshmanan, closes #8046) +Files: src/testdir/test_fold.vim, src/testdir/test_mksession.vim, + src/testdir/test_source.vim + +Patch 8.2.2685 (after 8.2.2152) +Problem: Custom statusline not drawn correctly with WinBar. +Solution: Also adjust the column for the custom status line. (Yee Cheng + Chin, closes #8047) +Files: src/drawscreen.c, src/proto/drawscreen.pro, src/screen.c, + src/testdir/dumps/Test_winbar_not_visible_custom_statusline.dump, + src/testdir/test_winbar.vim + +Patch 8.2.2686 +Problem: Status line is not updated when going to cmdline mode. +Solution: Redraw status lines if 'statusline' is set and going to status + line mode. (based on patch from Justin M. Keyes et al., + closes #8044) +Files: src/ex_getln.c, src/testdir/test_statusline.vim, + src/testdir/dumps/Test_statusline_mode_1.dump, + src/testdir/dumps/Test_statusline_mode_2.dump + +Patch 8.2.2687 +Problem: Vim9: cannot use "const" for global variable in :def function. +Solution: Do allow using :const for a global variable. (closes #8030) +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2688 +Problem: Vim9: crash when using s: for script variable. +Solution: Pass the end pointer. (closes #8045) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2689 +Problem: Tiny build fails. +Solution: Add #ifdef around use of p_stl. +Files: src/ex_getln.c + +Patch 8.2.2690 +Problem: PowerShell files are not recognized. +Solution: Recognize several PowerShell extension. (Heath Stewart, + closes #8051) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2691 +Problem: Autoconf may mess up compiler flags. +Solution: Handle removing FORTIFY_SOURCE a bit better. (Vladimir Lomov, + closes #8049) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2692 +Problem: Vim9: locked script variable can be changed. +Solution: Check for locked value. (closes #8031) +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2693 +Problem: Vim9: locked script variable can be changed. +Solution: Check legacy script variable for being locked. (issue #8031) +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2694 +Problem: When 'matchpairs' is empty every character beeps. (Marco Hinz) +Solution: Bail out when no character in 'matchpairs' was found. + (closes #8053) Add assert_nobeep(). +Files: runtime/doc/testing.txt, runtime/doc/eval.txt, src/search.c, + src/testing.c, src/proto/testing.pro, src/evalfunc.c, + src/testdir/test_textformat.vim + +Patch 8.2.2695 +Problem: Cursor position reset with nested autocommands. +Solution: Only check and reset line numbers for not nested autocommands. + (closes #5820) +Files: src/autocmd.c, src/testdir/test_terminal.vim + +Patch 8.2.2696 +Problem: Lua test fails with Lua 5.4.3 and later. +Solution: Check for different error messages. (Yegappan Lakshmanan, + closes #8050) +Files: src/testdir/test_lua.vim + +Patch 8.2.2697 +Problem: Function list test fails. +Solution: Add missing function. (Yegappan Lakshmanan) +Files: runtime/doc/usr_41.txt + +Patch 8.2.2698 (after 8.2.2696) +Problem: Lua test fails on MS-Windows. +Solution: Fall back to old method if "lua -v" doesn't work. +Files: src/testdir/test_lua.vim + +Patch 8.2.2699 +Problem: Lua test fails. +Solution: Fix condition. (Yegappan Lakshmanan, closes #8060) +Files: src/testdir/test_lua.vim + +Patch 8.2.2700 +Problem: Nested autocmd test fails sometimes. +Solution: Wait for the job to finish. +Files: src/testdir/test_terminal.vim + +Patch 8.2.2701 +Problem: Order of removing FORTIFY_SOURCE is wrong. +Solution: Use the more specific pattern first. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2702 +Problem: Compiler completion test fails when more scripts are added. +Solution: Add a more generic pattern. +Files: src/testdir/test_compiler.vim + +Patch 8.2.2703 +Problem: Vim9: memory leak when failing on locked variable. +Solution: Free the memory. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2704 +Problem: Adding a lot of completions can be a bit slow. +Solution: Use fast_breakcheck() instead of ui_breakcheck() when adding a + list of completions. (Ben Jackson, closes #8061) +Files: src/insexpand.c + +Patch 8.2.2705 +Problem: Vim9: misleading reported line number for wrong type. +Solution: Remember and use the line number at the start. (closes #8059) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2706 +Problem: Vim9: wrong line number reported for boolean operator. +Solution: Use the line number before skipping over line break. + (closes #8058) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2707 (after 8.2.2704) +Problem: Adding a lot of completions can still be a bit slow. +Solution: Add the check for CP_FAST. (Ben Jackson) +Files: src/insexpand.c + +Patch 8.2.2708 +Problem: Test sometimes fails waiting for shell in terminal. +Solution: Use WaitForAssert() so we can see the actual job status. Use + Run_shell_in_terminal(). +Files: src/testdir/term_util.vim, src/testdir/test_mksession.vim + +Patch 8.2.2709 +Problem: The GTK GUI has a gap next to the scrollbar. +Solution: Calculate the scrollbar padding for GTK. (closes #8027) +Files: src/gui_gtk.c + +Patch 8.2.2710 +Problem: Vim9: not all tests cover script and :def function. +Solution: Run tests in both if possible. Fix differences. +Files: src/eval.c, src/vim9compile.c, src/vim9execute.c, + src/testdir/vim9.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.2711 +Problem: "gj" in a closed fold does not move out of the fold. (Marco Hinz) +Solution: Add a check for being in a closed fold. (closes #8062) +Files: src/normal.c, src/testdir/test_fold.vim + +Patch 8.2.2712 +Problem: Memory leak when adding to a blob fails. +Solution: Clear the second typval before returning. +Files: src/eval.c + +Patch 8.2.2713 +Problem: Folding code not sufficiently tested. +Solution: Add a few more test cases. (Yegappan Lakshmanan, closes #8064) +Files: src/testdir/test_fold.vim + +Patch 8.2.2714 +Problem: Filetype pattern ending in star is too far up. +Solution: Move down to where patterns ending in star belong. (closes #8065) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2715 +Problem: Vim9: tests fail without the channel feature. (Dominique Pell茅) +Solution: Check for the channel feature. (closes #8063) +Files: src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.2716 +Problem: The equivalent class regexp is missing some characters. +Solution: Update the list of equivalent characters. (Dominique Pell茅, + closes #8029) +Files: src/regexp_bt.c, src/regexp_nfa.c, + src/testdir/test_regexp_utf8.vim + +Patch 8.2.2717 +Problem: GTK menu items don't show a tooltip. +Solution: Add a callback to show the tooltip. (Leonid V. Fedorenchik, + closes #8067, closes #7810) +Files: src/gui_gtk.c + +Patch 8.2.2718 +Problem: Vim9: no explicit test for using a global function without the g: + prefix. +Solution: Add a test case. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.2719 +Problem: Vim9: appending to dict item doesn't work in a :def function. +Solution: Implement assignment with operator on indexed item. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2720 +Problem: GTK menu tooltip moves the cursor. +Solution: Position the cursor after displaying the tooltip. Do not show the + tooltip when editing the command line. +Files: src/gui_gtk.c + +Patch 8.2.2721 +Problem: Vim9: cannot have a linebreak inside a lambda. +Solution: Compile the expression before the arguments. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2722 +Problem: Vim9: crash when using LHS with double index. +Solution: Handle lhs_dest which is "dest_expr". (closes #8068) + Fix confusing error message for missing dict item. +Files: src/vim9compile.c, src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2723 (after 8.2.2722) +Problem: Assignment test fails. +Solution: Adjust error number. +Files: src/testdir/test_let.vim + +Patch 8.2.2724 (after 8.2.2722) +Problem: Vim9: concatenating to list in dict not tested. +Solution: Add a test. (issue #8068) +Files: src/testdir/test_vim9_assign.vim + +Patch 8.2.2725 +Problem: Vim9: message about compiling is wrong when using try/catch. +Solution: Store the compiling flag with the message. (closes #8071) +Files: src/ex_docmd.c, src/ex_eval.c, src/structs.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.2726 +Problem: Confusing error message with white space before comma in the + arguments of a function declaration. +Solution: Give a specific error message. (closes #2235) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2727 (after 8.2.2726) +Problem: Function test fails. +Solution: Adjust expected error number. +Files: src/testdir/test_user_func.vim + +Patch 8.2.2728 +Problem: Special key names don't work if 'isident' is cleared. +Solution: Add vim_isNormalIDc() and use it for special key names. + (closes #2389) +Files: src/charset.c, src/proto/charset.pro, src/misc2.c, + src/testdir/test_mapping.vim + +Patch 8.2.2729 +Problem: Vim9: wrong error message for referring to legacy script variable. +Solution: Do allow referring to a variable in legacy script without "s:" if + it exists at compile time. (closes #8076) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2730 +Problem: Coverity complains about not restoring character. +Solution: Also restore the character in case of an error. +Files: src/vim9compile.c + +Patch 8.2.2731 +Problem: Mac: SF symbols are not displayed properly. +Solution: Add custom range to list of double-width characters. (Yee Cheng + Chin, closes #8077) +Files: src/mbyte.c + +Patch 8.2.2732 +Problem: Prompt for s///c in Ex mode can be wrong. +Solution: Position the cursor before showing the prompt. (closes #8073) +Files: src/ex_cmds.c, src/testdir/test_ex_mode.vim + +Patch 8.2.2733 +Problem: Detecting Lua version is not reliable. +Solution: Add "vim.lua_version". (Ozaki Kiichi, closes #8080) +Files: runtime/doc/if_lua.txt, ci/if_ver-1.vim, src/if_lua.c, + src/testdir/test_lua.vim + +Patch 8.2.2734 +Problem: Vim9: cannot use legacy script-local var from :def function. +Solution: Do not insist on using "s:" prefix. (closes #8076) +Files: src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2735 +Problem: Vim9: function reference found with prefix, not without. +Solution: Also find function reference without prefix. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2736 +Problem: Vim9: for loop over string is a bit slow. +Solution: Avoid using strlen(). +Files: src/vim9execute.c + +Patch 8.2.2737 +Problem: Status line not updated when local 'statusline' option set. +Solution: Check the 'statusline' option of each window. +Files: src/ex_getln.c, src/testdir/test_statusline.vim, + src/testdir/dumps/Test_statusline_mode_1.dump, + src/testdir/dumps/Test_statusline_mode_2.dump + +Patch 8.2.2738 +Problem: Extending a list with itself can give wrong result. +Solution: Remember the item before where the insertion happens and skip to + after the already inserted items. (closes #1112) +Files: src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.2739 +Problem: Vim9: a lambda accepts too many arguments at the script level. +Solution: Do not set uf_varargs in Vim9 script. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2740 +Problem: Vim9: lambda with varargs doesn't work. +Solution: Make "...name" work. Require type to be a list. +Files: src/userfunc.c, src/vim9compile.c, src/vim9execute.c, + src/errors.h, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2741 +Problem: Vim9: Partial call does not check right arguments. +Solution: Adjust the offset for whether the partial is before or after the + arguments. (closes #8091) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2742 +Problem: Vim9: when compiling a function fails it is cleared. +Solution: Keep the function lines, prevent execution with a different + status. (closes #8093) +Files: src/vim9compile.c, src/structs.h, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2743 +Problem: Vim9: function state stuck when compiling with ":silent!". +Solution: Check for uf_def_status to be UF_COMPILING. +Files: src/vim9compile.c, src/message.c, src/globals.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.2744 +Problem: Vim9: no way to explicitly ignore an argument. +Solution: Use the underscore as the name for an ignored argument. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/eval.c, + src/evalvars.c, src/errors.h, src/testdir/test_vim9_func.vim + +Patch 8.2.2745 (after 8.2.2744) +Problem: Vim9: missing part of the argument change. +Solution: Add missing changes. +Files: src/userfunc.c + +Patch 8.2.2746 (after 8.2.2745) +Problem: Check for duplicate arguments does not work. +Solution: Correct condition. +Files: src/userfunc.c + +Patch 8.2.2747 +Problem: Vim9: not always an error for too many function arguments. +Solution: Check for getting too many arguments. +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2748 +Problem: Vim9: memory leak when calling :def function fails. +Solution: Jump to failed_early instead of returning. +Files: src/vim9execute.c + +Patch 8.2.2749 +Problem: Vim9: test for error can be a bit flaky. +Solution: Increase the wait time a bit. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.2750 +Problem: Vim9: error for using underscore in nested function. +Solution: Do not consider "_" already defined. (closes #8096) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2751 +Problem: Coverity warns for using NULL pointer. +Solution: Check for NULL in calling function. +Files: src/userfunc.c + +Patch 8.2.2752 +problem: coverity reports unreachable code. +Solution: Remove check for positive index. +Files: src/typval.c + +Patch 8.2.2753 +Problem: Vim9: cannot ignore an item in assignment unpack. +Solution: Allow using an underscore. +Files: runtime/doc/vim9.txt, src/vim.h, src/evalvars.c, src/eval.c, + src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2754 +Problem: :sleep! does not always hide the cursor. +Solution: Add the cursor_is_asleep flag. (Jeremy Lerner, closes #8097, + closes #7998) +Files: src/drawscreen.c, src/ex_docmd.c, src/gui.c, src/proto/term.pro, + src/term.c + +Patch 8.2.2755 +Problem: Vim9: no error for using a number in a condition. +Solution: Also use ISN_COND2BOOL if the type is t_number_bool. + (closes #7644) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2756 +Problem: Vim9: blob index and slice not implemented yet. +Solution: Implement blob index and slice. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/eval.c, + src/blob.c, src/proto/blob.pro, src/testdir/test_vim9_expr.vim + +Patch 8.2.2757 +Problem: Vim9: blob tests for legacy and Vim9 script are separate. +Solution: Add CheckLegacyAndVim9Success(). Make blob index assign work. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/errors.h, + src/blob.c, src/proto/blob.pro, src/eval.c, src/ex_docmd.c, + src/testdir/vim9.vim, src/testdir/test_blob.vim + +Patch 8.2.2758 +Problem: Vim9: wrong line number for autoload function with wrong name. +Solution: Set and restore SOURCING_LNUM. (closes #8100) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2759 +Problem: Vim9: for loop infers type of loop variable. +Solution: Do not get the member type. (closes #8102) +Files: src/vim9type.c, src/proto/vim9type.pro, src/list.c, + src/vim9script.c, src/proto/vim9script.pro, src/vim.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.2760 +Problem: Vim9: no error for changing a for loop variable. +Solution: Make the loop variable read-only. (issue #8102) +Files: src/eval.c, src/evalvars.c, src/vim9compile.c, src/vim.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.2761 +Problem: Using "syn include" does not work properly. +Solution: Don't add current_syn_inc_tag to topgrp. (Jaehwang Jerry Jung, + closes #8104) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.2.2762 +Problem: Vim9: function line truncated when compiling. +Solution: Copy the line before processing it. (closes #8101) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2763 +Problem: Vim9: cannot use type in for loop unpack at script level. +Solution: Advance over the type name. +Files: src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2764 +Problem: Memory leak when default function argument is allocated. +Solution: Free the expression result. +Files: src/userfunc.c, src/testdir/test_functions.vim + +Patch 8.2.2765 +Problem: Vim9: not all blob operations work. +Solution: Run more tests also with Vim9 script and :def functions. Fix what + doesn't work. +Files: src/eval.c, src/blob.c, src/proto/blob.pro, src/vim9execute.c, + src/errors.h, src/testdir/vim9.vim, src/testdir/test_blob.vim + +Patch 8.2.2766 (after 8.2.2765) +Problem: Test failure. +Solution: Add change to Vim9 compilation error message. +Files: src/vim9compile.c + +Patch 8.2.2767 (after 8.2.2765) +Problem: Compiler warning for unused argument. +Solution: Remove the argument. +Files: src/blob.c, src/proto/blob.pro, src/vim9execute.c, src/eval.c + +Patch 8.2.2768 +Problem: Vim9: memory leak with blob range error. +Solution: Jump to end instead of returning. +Files: src/vim9compile.c + +Patch 8.2.2769 +Problem: Modula-3 config files are not recognized. +Solution: Add filetype patterns. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2770 +Problem: Vim9: type of loop variable is not used. +Solution: Parse and check the variable type. (closes #8107) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2771 +Problem: Vim9: assignment not recognized if declaration was skipped. +Solution: Also recognized an assignment if the variable does not exist. + (closes #8108) +Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2772 +Problem: Problems when restoring 'runtimepath' from a session file. +Solution: Add the "skiprtp" item in 'sessionoptions'. +Files: runtime/doc/options.txt, src/session.c, src/optionstr.c, + src/option.h, src/vim.h, src/option.c, + src/testdir/test_mksession.vim + +Patch 8.2.2773 +Problem: PSL filetype not recognized. +Solution: Add a filetype pattern. (Daniel Kho, closes #8117) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2774 +Problem: Vim9: cannot import an existing name even when using "as". +Solution: Do not check for an existing name when using "as". (closes #8113) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2775 +Problem: Vim9: wrong line number used for some commands. +Solution: For :exe, :echo and the like use the line number of the start of + the command. When calling a function set the line number in the + script context. +Files: src/vim9compile.c, src/vim9execute.c, src/structs.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.2776 +Problem: :mksession uses current value of 'splitbelow' and 'splitright' + even though "options" is not in 'sessionoptions'. (Maxim Kim) +Solution: Save and restore the values, instead of setting to the current + value. (closes #8119) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.2777 +Problem: Vim9: blob operations not tested in all ways. +Solution: Run tests with CheckLegacyAndVim9Success(). Make blob assign with + index work. +Files: src/vim9compile.c, src/vim9execute.c, src/errors.h, src/blob.c, + src/proto/blob.pro, src/testdir/test_blob.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2778 +Problem: Problem restoring 'packpath' in session. +Solution: Let "skiprtp" also apply to 'packpath'. +Files: runtime/doc/options.txt, src/option.c, + src/testdir/test_mksession.vim + +Patch 8.2.2779 +Problem: Memory access error in remove() for blob. +Solution: Adjust length for memmove(). +Files: src/blob.c + +Patch 8.2.2780 +Problem: Vim9: for loop over blob doesn't work. +Solution: Make it work. +Files: src/vim9compile.c, src/vim9execute.c, src/testdir/test_blob.vim + +Patch 8.2.2781 +Problem: Add() silently skips when adding to null list or blob. +Solution: Give an error in Vim9 script. Allocate blob when it is NULL like + with list and dict. +Files: src/list.c, src/evalvars.c, src/vim9execute.c, + src/testdir/test_blob.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2782 +Problem: Vim9: blob operations not fully tested. +Solution: Make more blob tests run in Vim9 script. Fix filter(). Make + insert() give an error for a null blob, like add(). +Files: src/list.c, src/testdir/test_blob.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2783 +Problem: Duplicate code for setting byte in blob, blob test may fail. +Solution: Call blob_set_append(). Test sort failure with "N". +Files: src/eval.c, src/testdir/test_blob.vim + +Patch 8.2.2784 +Problem: Vim9: cannot use \=expr in :substitute. +Solution: Compile the expression into instructions and execute them when + invoked. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/proto/vim9execute.pro, src/regexp.c, src/ex_cmds.c, + src/proto/ex_cmds.pro, src/globals.h, + src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2785 +Problem: Vim9: cannot redirect to local variable. +Solution: Compile :redir when redirecting to a variable. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/errors.h, + src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2786 +Problem: Vim9: memory leak when using :s with expression. +Solution: Clean up the instruction list. +Files: src/vim9compile.c + +Patch 8.2.2787 +Problem: MS-Windows: crash when using :echoconsole. +Solution: Do not write a NUL when it's already there. +Files: src/os_win32.c + +Patch 8.2.2788 +Problem: Raku is now the only name what once was called perl6. +Solution: Adjust the filetype detection. (closes #8120) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2789 +Problem: Vim9: using \=expr in :substitute does not handle jumps. +Solution: Start with instruction count zero. (closes #8128) +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2790 (after 8.2.2788) +Problem: filetype test fails +Solution: Also update the scripts detection +Files: runtime/scripts.vim + +Patch 8.2.2791 +Problem: Vim9: memory leak when using \=expr in :substitute. +Solution: Do not allocate a new instruction list. +Files: src/vim9compile.c + +Patch 8.2.2792 +Problem: Vim9: :disas shows instructions for default args but no text. +Solution: Show the expression test above the default argument instructions. + (closes #8129) +Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2793 +Problem: MS-Windows: string literals are writable with MSVC. +Solution: Add the /GF compiler flag. Make mch_write() safer. (Ken Takata, + closes #8133) +Files: src/Make_mvc.mak, src/os_win32.c + +Patch 8.2.2794 +Problem: Linux users don't know how to get ncurses. +Solution: Add the name of the package. (closes #8132) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2795 +Problem: Coverity warns for not using return value. +Solution: Check the return value of compiling the substitute expression. +Files: src/vim9compile.c + +Patch 8.2.2796 +Problem: Vim9: redir to variable does not accept an index. +Solution: Make the index work. +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2797 +Problem: Search highlight disappears in the Visual area. +Solution: Combine the search attributes. (closes #8134) +Files: src/drawline.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_visual_1.dump + +Patch 8.2.2798 +Problem: Vim9: redir to variable with append does not accept an index. +Solution: Make the appending work. +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2799 +Problem: Vim9: type casts don't fully work at the script level. +Solution: Implement the missing piece. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2800 +Problem: After a timer displays text a hit-enter prompt is given. +Solution: Reset msg_didany and need_wait_return. (closes #8136) +Files: src/drawscreen.c, src/testdir/test_timers.vim + +Patch 8.2.2801 +Problem: Free Pascal makefile not recognized. +Solution: Add the fpcmake filetype. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2802 +Problem: Vim9: illegal memory access. +Solution: Check for comment before checking for white space. (closes #8142) +Files: src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2803 +Problem: Flicker when the popup menu has an info popup. +Solution: Avoid drawing over the popup when it's going to be redrawn in the + same position. (closes #8131) Also avoid redrawing the scrollbar. +Files: src/popupmenu.c, src/proto/popupmenu.pro, src/drawscreen.c, + src/globals.h + +Patch 8.2.2804 +Problem: Setting buffer local mapping with mapset() changes global mapping. +Solution: Only set the local mapping. (closes #8143) +Files: src/map.c, src/testdir/test_maparg.vim + +Patch 8.2.2805 +Problem: Vim9: cannot use legacy syntax in Vim9 script. +Solution: Add the :legacy command. +Files: src/ex_cmds.h, runtime/doc/vim9.txt, runtime/doc/index.txt + src/ex_cmdidxs.h, src/ex_docmd.c, src/structs.h, src/vim9script.c, + src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.2806 +Problem: Vim9: using "++nr" as a command might not work. +Solution: Do not recognize "++" and "--" in a following line as addition or + subtraction. +Files: src/vim9compile.c, src/ex_docmd.c, src/ex_cmds.h, src/ex_cmdidxs.h, + src/vim9script.c, src/proto/vim9script.pro, src/eval.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.2807 +Problem: Build fails with tiny features. +Solution: Use a dummy function for ex_incdec(). +Files: src/ex_docmd.c + +Patch 8.2.2808 +Problem: Vim9: increment and decrement not sufficiently tested. +Solution: Add assertions. +Files: src/testdir/test_vim9_assign.vim + +Patch 8.2.2809 +Problem: Vim9: :def function compilation fails when using :legacy. +Solution: Reset CMOD_LEGACY when compiling a function. (closes #8137) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2810 +Problem: Vim9: crash when calling a function in a substitute expression. +Solution: Set the instructions back to the substitute expression + instructions. (closes #8148) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2811 +Problem: Vim9: error for missing white space doesn't say where it is + missing +Solution: Mention the command. (closes #8149) +Files: src/ex_docmd.c, src/errors.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2812 +Problem: Vim9: still crash when using substitute expression. +Solution: Put the instruction list in the stack frame. (closes #8154) +Files: src/vim9execute.c, src/vim9.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2813 +Problem: Cannot grep using fuzzy matching. +Solution: Add the "f" flag to :vimgrep. (Yegappan Lakshmanan, closes #8152) +Files: runtime/doc/quickfix.txt, src/ex_cmds.c, src/proto/search.pro, + src/quickfix.c, src/search.c, src/vim.h, + src/testdir/test_quickfix.vim + +Patch 8.2.2814 (after 8.2.2812) +Problem: Vim9: unused variable. (John Marriott) +Solution: Adjust #ifdef. +Files: src/vim9execute.c + +Patch 8.2.2815 +Problem: Status line flickers when redrawing popup menu info. +Solution: Do not redraw the status line when the focus is in the popup + window. (issue #8144) +Files: src/popupmenu.c + +Patch 8.2.2816 +Problem: Vim9: comment below expression in lambda causes problems. +Solution: Use a single space for empty and comment lines. (closes #8156) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2817 +Problem: Vim9: script sourcing continues after an error. +Solution: Make an error in any command in "vim9script" abort sourcing. +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2818 +Problem: No jump added to jumplist when opening terminal in current window. +Solution: Call setpcmark(). (closes #8158) +Files: src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.2819 +Problem: Finishing an abbreviation with a multi-byte char may not work. +Solution: Escape K_SPECIAL in the typed character. (closes #8160) +Files: src/map.c, src/testdir/test_mapping.vim + +Patch 8.2.2820 +Problem: Session file may divide by zero. +Solution: Avoid writing divide by zero. (closes #8162) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.2821 +Problem: MS-Windows: unnecessarily loading libraries when registering OLE. +Solution: Skip loading libraries when invoked with "-register". +Files: src/main.c, src/globals.h, src/os_win32.c + +Patch 8.2.2822 (after 8.2.2821) +Problem: MS-Windows: unnecessarily loading libraries when unregistering OLE. +Solution: Also skip loading libraries when invoked with "-unregister". Run + Vim for README.txt with user privileges. +Files: src/main.c, nsis/gvim.nsi, nsis/README.txt + +Patch 8.2.2823 +Problem: MS-Windows: launching Vim from installer doesn't open README. +Solution: Adjust the quotes. +Files: nsis/gvim.nsi + +Patch 8.2.2824 +Problem: MS-Windows: build failure with MSVC. +Solution: Adjust the list of distributed files. Add hint about python. + Adjust path for reading runtime files. +Files: Filelist, src/testdir/shared.vim, + src/testdir/test_function_lists.vim + +Patch 8.2.2825 +Problem: Code in checkreadonly() not fully tested. +Solution: Add more tests. (Dominique Pell茅, closes #8169) +Files: src/testdir/test_excmd.vim + +Patch 8.2.2826 +Problem: Compiler warnings for int to size_t conversion. (Randall W. + Morris) +Solution: Add type casts. +Files: src/map.c, src/quickfix.c + +Patch 8.2.2827 +Problem: Test file was not deleted. +Solution: Uncomment the delete() call. (Dominique Pell茅, closes #8172) +Files: src/testdir/test_mksession.vim + +Patch 8.2.2828 +Problem: Coverity complains about not checking the rename() return value. +Solution: Add "(void)", can't do anything in case of a failure. +Files: src/fileio.c + +Patch 8.2.2829 +Problem: Some comments are not correct or clear. +Solution: Adjust the comments. Add test for cursor position. +Files: src/regexp_bt.c, src/regexp_nfa.c, + src/testdir/test_exec_while_if.vim, + src/testdir/test_substitute.vim + +Patch 8.2.2830 +Problem: Terminal colors are not updated when 'background' is set. +Solution: Call term_update_colors() for all terminals. (Marcin Szamotulski, + closes #8171, closes #8150) +Files: src/terminal.c, src/proto/terminal.pro, src/optionstr.c + +Patch 8.2.2831 +Problem: Vim9: expandcmd() not tested. +Solution: Add a test. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.2832 +Problem: Operator cancelled by moving mouse when using popup. (Sergey + Vlasov) +Solution: Do not trigger an operator for a mouse move events. (closes #8176) +Files: src/normal.c + +Patch 8.2.2833 +Problem: Two key command cancelled by moving mouse when using popup. + (Sergey Vlasov) +Solution: Ignore K_MOUSEMOVE in plain_vgetc(). +Files: src/getchar.c + +Patch 8.2.2834 +Problem: Vim9: :cexpr does not work with local variables. +Solution: Compile :cexpr. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/quickfix.c, + src/proto/quickfix.pro, src/testdir/test_quickfix.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2835 (after 8.2.2834) +Problem: Vim9: leaking memory in :cexpr. +Solution: Also free the command line copy. +Files: src/vim9compile.c + +Patch 8.2.2836 (after 8.2.2834) +Problem: Build failure without the +quickfix feature. (John Marriott) +Solution: Add #ifdef. +Files: src/vim9compile.c, src/vim9execute.c, src/tag.c + +Patch 8.2.2837 +Problem: Various code lines not covered by tests. +Solution: Add test cases. (Dominique Pell茅, closes #8178) +Files: src/testdir/test_excmd.vim, src/testdir/test_functions.vim, + src/testdir/test_options.vim, src/testdir/test_startup.vim, + src/testdir/test_syntax.vim, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2838 +Problem: File extension .wrap not recognized. +Solution: Use dosini filetype for .wrap files. (Liam Beguin, closes #8177) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2839 +Problem: Default redirection missing "ash" and "dash". +Solution: Recognize "ash" and "dash". (Natanael Copa, closes #8180) +Files: runtime/doc/options.txt, src/option.c + +Patch 8.2.2840 +Problem: Vim9: member operation not fully tested. +Solution: Add a few tests. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2841 +Problem: MS-Windows: cursor in wrong position when 'lazyredraw' and + 'statusline' are set. +Solution: Call compute_cmdrow(). (closes #8170, closes #8184) +Files: src/os_win32.c + +Patch 8.2.2842 +Problem: Vim9: skip argument to searchpair() is not compiled. +Solution: Add VAR_INSTR. +Files: src/structs.h, src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/proto/vim9execute.pro, src/eval.c, src/evalfunc.c, src/vim.h, + src/evalvars.c, src/typval.c, src/vim9type.c, src/testing.c, + src/viminfo.c, src/if_py_both.h, src/json.c, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2843 (after 8.2.2842) +Problem: Vim9: skip argument to searchpairpos() is not compiled. +Solution: Handle like searchpair(). Also for search() and searchpos(). +Files: src/vim9compile.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2844 +Problem: Vim9: memory leak when using searchpair(). +Solution: Free the v_instr field. +Files: src/typval.c + +Patch 8.2.2845 +Problem: MS-Windows: warning for signed/unsigned comparison. +Solution: Add type cast. +Files: src/terminal.c + +Patch 8.2.2846 +Problem: Vim9: "echo Func()" does not give an error for a function without + a return value. +Solution: Give an error. Be more specific about why a value is invalid. +Files: src/globals.h, src/errors.h, src/eval.c, src/evalfunc.c, + src/typval.c, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.2847 +Problem: Perl not tested sufficiently. +Solution: Add test. Also test W17. (Dominique Pell茅, closes #8193) +Files: src/testdir/test_arabic.vim, src/testdir/test_perl.vim + +Patch 8.2.2848 +Problem: Crash when calling partial. +Solution: Check for NULL pointer. (Dominique Pell茅, closes #8202) +Files: src/eval.c, src/evalfunc.c, src/testdir/test_functions.vim, + src/testdir/test_listdict.vim + +Patch 8.2.2849 +Problem: Bufwrite not sufficiently tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8192) +Files: src/testdir/test_startup.vim, src/testdir/test_writefile.vim + +Patch 8.2.2850 +Problem: Recalling commands from history is not tested. +Solution: Add tests. (closes #8194) +Files: src/testdir/test_cmdline.vim + +Patch 8.2.2851 +Problem: Using <Cmd> mapping on the command line triggers CmdlineChanged. + (Naohiro Ono) +Solution: Jump to cmdline_not_changed if the command line didn't change. + (closes #8208) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.2852 +Problem: Configure can add --as-needed a second time. +Solution: Only add --as-needed if not already there. (Natanael Copa, + closes #8189, closes #8181) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2853 (after 8.2.2851) +Problem: Window is not updated after using <Cmd> mapping. +Solution: So jump to cmdline_changed but skip autocommand. +Files: src/ex_getln.c + +Patch 8.2.2854 +Problem: Custom statusline cannot contain % items. +Solution: Add "%{% expr %}". (closes #8190) +Files: runtime/doc/options.txt, src/buffer.c, src/optionstr.c, + src/testdir/test_statusline.vim + +Patch 8.2.2855 +Problem: White space after "->" does not give E274. +Solution: Do not skip white space in legacy script. (closes #8212) +Files: src/eval.c, src/testdir/test_method.vim + +Patch 8.2.2856 +Problem: Get readonly error for device that can't be written to. +Solution: Check for being able to write first. (closes #8205) +Files: src/ex_cmds.c, src/testdir/test_writefile.vim + +Patch 8.2.2857 +Problem: Vim9: exception in ISN_INSTR caught at wrong level. +Solution: Set the starting trylevel in exec_instructions(). (closes #8214) +Files: src/vim9compile.c, src/vim9execute.c, src/globals.h, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2858 (after 8.2.2857) +Problem: Test fails because of changed error message. +Solution: Adjust the expected error message. +Files: src/testdir/test_ex_mode.vim + +Patch 8.2.2859 (after 8.2.2857) +Problem: Tcl test fails because of changed error message. +Solution: Adjust the expected error message. +Files: src/testdir/test_tcl.vim + +Patch 8.2.2860 +Problem: Adding a text property causes the whole window to be redrawn. +Solution: Use changed_lines_buf() to only redraw the affected lines. +Files: src/change.c, src/proto/change.pro, src/textprop.c + +Patch 8.2.2861 +Problem: Vim9: "legacy return" is not recognized as a return statement. +Solution: Specifically check for a return command. (closes #8213) +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_expr.vim + +Patch 8.2.2862 +Problem: Removing a text property causes the whole window to be redrawn. +Solution: Use changed_lines_buf() to only redraw the affected lines. +Files: src/textprop.c + +Patch 8.2.2863 (after 8.2.2862) +Problem: Removing a text property does not redraw optimally. +Solution: Only redraw the lines that mithg actually have been changed. +Files: src/textprop.c + +Patch 8.2.2864 +Problem: Vim9: crash when using inline function. +Solution: Check for NULL pointer. Make using inline function work inside + lambda. (closes #8217) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2865 (after 8.2.2864) +Problem: Skipping over function body fails. +Solution: Do not define the function when skipping. +Files: src/userfunc.c + +Patch 8.2.2866 +Problem: Vim9: memory leak when using inline function. +Solution: Remember what strings to free. +Files: src/userfunc.c, src/structs.h, src/eval.c + +Patch 8.2.2867 (after 8.2.2866) +Problem: Build failure. +Solution: Add missing part of the change. +Files: src/globals.h + +Patch 8.2.2868 +Problem: Vim9: When executing a compiled expression the trylevel at start + is changed but not restored. (closes #8214) +Solution: Restore the trylevel at start. +Files: src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2869 +Problem: Using unified diff is not tested. +Solution: Test all cases also with unified diff. (issue #8197) +Files: src/testdir/test_diffmode.vim + +Patch 8.2.2870 +Problem: CmdlineChange event triggered twice for CTRL-R. +Solution: Return CMDLINE_NOT_CHANGED from cmdline_insert_reg(). + (closes #8219) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.2871 +Problem: Unnecessary VIM_ISDIGIT() calls, badly indented code. +Solution: Call skipdigits() on the next character. Improve indenting. + (Dominique Pell茅, closes #8227) +Files: src/charset.c, src/evalfunc.c, src/ex_docmd.c, src/json.c, + src/ops.c, src/tag.c, src/vim9compile.c + +Patch 8.2.2872 +Problem: Python tests fail without the channel feature. +Solution: Add a feature check. (Dominique Pell茅, closes #8226) +Files: src/testdir/test_python2.vim, src/testdir/test_python3.vim + +Patch 8.2.2873 +Problem: Not enough tests for writing buffers. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8229) +Files: src/testdir/test_buffer.vim, src/testdir/test_cmdline.vim, + src/testdir/test_functions.vim, src/testdir/test_writefile.vim + +Patch 8.2.2874 +Problem: MS-Windows: screen redraws too often. +Solution: Do not redraw when peeking for a character. (closes #8230, + closes #8211) +Files: src/os_win32.c + +Patch 8.2.2875 +Problem: Cancelling inputlist() after a digit does not return zero. +Solution: Always return zero when cancelling. (closes #8231) +Files: src/misc1.c, src/testdir/test_functions.vim + +Patch 8.2.2876 +Problem: Configure cannot detect Python 3.10. +Solution: Use sys.version_info. (closes #8233) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2877 +Problem: Insufficient tests for popup menu rightleft. +Solution: Add tests. (Yegappan Lakshmanan, closes #8235) +Files: src/testdir/test_popup.vim, + src/testdir/dumps/Test_pum_rightleft_01.dump, + src/testdir/dumps/Test_pum_rightleft_02.dump, + src/testdir/dumps/Test_pum_scrollbar_01.dump, + src/testdir/dumps/Test_pum_scrollbar_02.dump + +Patch 8.2.2878 +Problem: Vim9: for loop list unpack only allows for one "_". +Solution: Drop the value when the variable is "_". (closes #8232) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2879 +Problem: File extension .hsig not recognized. +Solution: Use Haskell filetype for .hsig files. (Marcin Szamotulski, + closes #8236) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2880 +Problem: Unified diff fails if actually used. +Solution: Invoke :diffupdate in the test. Fix the check for working external + diff. (Ghjuvan Lacambre, Christian Brabandt, closes #8197) +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.2.2881 +Problem: Various pieces of code not covered by tests. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8245) +Files: src/testdir/test_const.vim, src/testdir/test_functions.vim, + src/testdir/test_python2.vim, src/testdir/test_python3.vim, + src/testdir/test_user_func.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.2882 +Problem: Vim9: memory leak when lambda has an error. +Solution: Free the list of argument types on failure. +Files: src/userfunc.c + +Patch 8.2.2883 +Problem: MS-Windows manifest file name is misleading. +Solution: Rename the file. (closes #8241) +Files: .gitignore, .hgignore, Filelist, Makefile, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/gvim.exe.mnf, src/vim.manifest, src/vim.rc + +Patch 8.2.2884 +Problem: Not enough cscope code is covered by tests. +Solution: Add a few test cases. (Dominique Pell茅, closes #8246) +Files: src/testdir/test_cscope.vim + +Patch 8.2.2885 +Problem: searching for \%'> does not match linewise end of line. (Tim Chase) +Solution: Match end of line if column is MAXCOL. (closes #8238) +Files: src/regexp_nfa.c, src/regexp_bt.c, src/testdir/test_search.vim + +Patch 8.2.2886 +Problem: Various pieces of code not covered by tests. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8255) +Files: src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_listdict.vim, src/testdir/test_registers.vim, + src/testdir/test_user_func.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.2887 +Problem: Crash when passing null string to fullcommand(). +Solution: Check for NULL pointer. (closes #8256) +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.2888 +Problem: Vim9: "k" command recognized in Vim9 script. +Solution: Do not recognize "k" or "s" and "d" with flags. +Files: src/ex_docmd.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.2889 +Problem: Typo and verbose comment in Makefiles. +Solution: Fix typo. Use @#. (Ken Takata, closes #8252) +Files: Makefile, src/testdir/Makefile + +Patch 8.2.2890 +Problem: Text property duplicated when data block splits. +Solution: Do not continue text prop from previous line. (closes #8261) +Files: src/memline.c, src/structs.h, src/testdir/test_textprop.vim + +Patch 8.2.2891 +Problem: Cannot build with Perl 5.34. +Solution: Add Perl_SvTRUE_common(). (Ozaki Kiichi, closes #8266, + closes #8250) +Files: src/if_perl.xs + +Patch 8.2.2892 +Problem: Error message contains random characters. +Solution: Pass the right pointer to error_white_both(). (closes #8272, + closes #8263) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2893 +Problem: Multi-byte text in popup title shows up wrong. +Solution: Use the character width instead of the byte length. (Ralf Schandl, + closes #8267, closes #8264) +Files: src/popupwin.c, src/message_test.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_multibytetitle.dump + +Patch 8.2.2894 +Problem: MS-Windows: using enc_locale() for strftime() might not work. +Solution: Use wcsftime(). (Ken Takata, closes #8271) +Files: src/time.c + +Patch 8.2.2895 +Problem: Vim9: random characters appear in some error messages. +Solution: Pass the correct pointer. (closes #8277) +Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2896 +Problem: Spellfile functionality not fully tested. +Solution: Add tests for CHECKCOMPOUNDPATTERN and COMMON. (Dominique Pell茅, + closes #8270) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.2897 +Problem: Vim9: can use reserved words at the script level. +Solution: Check variable names for reserved words. (closes #8253) +Files: src/vim9compile.c, src/vim9script.c, src/proto/vim9script.pro, + src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2898 +Problem: QuitPre and ExitPre not triggered when GUI window is closed. +Solution: Call before_quit_autocmds(). (closes #8242) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/gui.c + +Patch 8.2.2899 +Problem: Appveyor script does not detect nmake failure. +Solution: Explicitly check for executable. (Ken Takata, closes #8281) +Files: ci/appveyor.bat + +Patch 8.2.2900 +Problem: QuitPre is triggered before :wq writes the file, which is + different from other commands. +Solution: Trigger QuitPre after writing the file. (closes #8279) +Files: src/ex_docmd.c, src/testdir/test_writefile.vim + +Patch 8.2.2901 +Problem: Some operators not fully tested. +Solution: Add a few test cases. (Yegappan Lakshmanan, closes #8282) +Files: src/testdir/test_cpoptions.vim, src/testdir/test_increment.vim, + src/testdir/test_normal.vim, src/testdir/test_virtualedit.vim, + src/testdir/test_visual.vim + +Patch 8.2.2902 +Problem: Spellfile functionality not fully tested. +Solution: Add tests for CIRCUMFIX, NOBREAK and others. (Dominique Pell茅, + closes #8283) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.2903 +Problem: Cursor position wrong on wrapped line with 'signcolumn'. +Solution: Don't add space for showbreak twice. (Christian Brabandt, + closes #8262) +Files: src/drawline.c, src/testdir/test_display.vim + +Patch 8.2.2904 +Problem: "g$" causes scroll if half a double width char is visible. +Solution: Advance to the last fully visible character. (closes #8254) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.2.2905 +Problem: No error when defaults.vim cannot be loaded. +Solution: Add an error message. (Christian Brabandt, closes #8248) +Files: runtime/doc/starting.txt, src/errors.h, src/main.c, + src/testdir/test_startup.vim + +Patch 8.2.2906 (after 8.2.2905) +Problem: ASAN reports errors for test_startup for unknown reasons. +Solution: Temporarily disable the new test. +Files: src/testdir/test_startup.vim + +Patch 8.2.2907 +Problem: Memory leak when running out of memory. +Solution: Free the allocated memory. (Dominique Pell茅, closes #8284) +Files: src/term.c + +Patch 8.2.2908 +Problem: Crash when using a terminal popup window from the cmdline window. +Solution: Instead of checking cmdwin_type call cmdwin_is_active(). + (closes #8286) +Files: src/terminal.c, src/errors.h, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_cmdwin_no_terminal.dump + +Patch 8.2.2909 +Problem: Build error with non-Unix system. +Solution: Always include limits.h. +Files: src/vim.h + +Patch 8.2.2910 +Problem: Test for cmdline window and terminal fails on MS-Windows. +Solution: Skip the test on MS-Windows. +Files: src/testdir/test_cmdline.vim + +Patch 8.2.2911 +Problem: Pattern "\%V" does not match all of block selection. (Rick Howe) +Solution: Use the value of vi_curswant. (closes #8285) +Files: src/regexp.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_block_visual_match.dump + +Patch 8.2.2912 +Problem: MS-Windows: most users expect using Unicode. +Solution: Default 'encoding' to utf-8 on MS-Windows. (Ken Takata, + closes #3907) +Files: runtime/doc/options.txt, src/mbyte.c, src/option.c, src/option.h, + src/testdir/test_writefile.vim + +Patch 8.2.2913 +Problem: MS-Windows conpty supports using mouse events. +Solution: When enabling the mouse enable mouse input and disable quick edit + mode. (Wez Furlong, closes #8280) +Files: src/os_win32.c + +Patch 8.2.2914 +Problem: Cannot paste a block without adding padding. +Solution: Add "zp" and "zP" which paste without adding padding. (Christian + Brabandt, closes #8289) +Files: runtime/doc/change.txt, runtime/doc/index.txt, src/normal.c, + src/register.c, src/vim.h, src/testdir/test_normal.vim, + src/testdir/test_visual.vim + +Patch 8.2.2915 +Problem: MS-Windows: when using "default" for encoding utf-8 is used. +Solution: Use the system encoding. (Ken Takata, closes #8300) +Files: src/mbyte.c, runtime/doc/options.txt + +Patch 8.2.2916 +Problem: Operators are not fully tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8290) +Files: src/ops.c, src/testdir/test_netbeans.vim, + src/testdir/test_normal.vim, src/testdir/test_visual.vim + +Patch 8.2.2917 +Problem: Spellfile functionality not fully tested. +Solution: Add tests for SFX with removal of characters, spelling + suggestions with NOBREAK and others. (Dominique Pell茅, + closes #8293) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.2918 +Problem: Builtin function can be shadowed by global variable. +Solution: Check for builtin function before variable. (Yasuhiro Matsumoto, + closes #8302) +Files: src/eval.c, src/testdir/test_functions.vim + +Patch 8.2.2919 +Problem: Using ":!command" does not work if the command uses posix_spawn(). +Solution: Do not call ioctl() with TIOCSCTTY. (Felipe Contreras) +Files: src/os_unix.c + +Patch 8.2.2920 +Problem: Still a way to shadow a builtin function. (Yasuhiro Matsumoto) +Solution: Check the key when using extend(). (issue #8302) +Files: src/eval.c, src/dict.c, src/proto/dict.pro, + src/testdir/test_functions.vim + +Patch 8.2.2921 +Problem: E704 for script local variable is not backwards compatible. + (Yasuhiro Matsumoto) +Solution: Only give the error in Vim9 script. Also check for function-local + variable. +Files: src/dict.c, src/testdir/test_functions.vim + +Patch 8.2.2922 +Problem: Computing array length is done in various ways. +Solution: Use ARRAY_LENGTH everywhere. (Ken Takata, closes #8305) +Files: src/arabic.c, src/blowfish.c, src/cindent.c, src/cmdexpand.c, + src/cmdhist.c, src/dosinst.c, src/eval.c, src/evalfunc.c, + src/ex_docmd.c, src/fileio.c, src/gui_athena.c, src/gui_gtk_x11.c, + src/gui_haiku.cc, src/gui_photon.c, src/gui_w32.c, + src/gui_xmebw.c, src/hardcopy.c, src/help.c, src/highlight.c, + src/if_mzsch.c, src/macros.h, src/main.c, src/map.c, src/mbyte.c, + src/memline.c, src/menu.c, src/misc2.c, src/normal.c, src/ops.c, + src/option.c, src/optiondefs.h, src/os_win32.c, src/popupwin.c, + src/quickfix.c, src/regexp.c, src/screen.c, src/search.c, + src/syntax.c, src/term.c, src/terminal.c, src/time.c, + src/usercmd.c, src/version.c + +Patch 8.2.2923 +Problem: EBCDIC build is broken. +Solution: Move sortFunctions() to evalfunc.c. (Ken Takata, closes #8306) +Files: src/eval.c, src/evalfunc.c, src/proto/evalfunc.pro + +Patch 8.2.2924 +Problem: Superfluous extern declaration. +Solution: Delete the declaration. (Ken Takata, closes #8307) +Files: src/main.c + +Patch 8.2.2925 +Problem: Vim9: line continuation comment uses legacy syntax. +Solution: Check for #\ instead of "\. (closes #8295) +Files: src/scriptfile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2926 +Problem: Vim9: no good error for using :legacy in a :def function. +Solution: Give an explicit error where :legacy is not working. + (closes #8309) +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_func.vim + +Patch 8.2.2927 +Problem: Test commented out because it fails with ASAN. +Solution: Only skip the test when running with ASAN. +Files: src/testdir/test_startup.vim + +Patch 8.2.2928 +Problem: The evalfunc.c file is too big. +Solution: Move float related functionality to a separate file. (Yegappan + Lakshmanan, closes #8287) +Files: Filelist, src/Make_ami.mak, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/eval.c, src/evalfunc.c, src/float.c, src/proto.h, + src/proto/eval.pro, src/proto/float.pro + +Patch 8.2.2929 +Problem: Accidentally enable tcl by default. +Solution: Revert change to Makefile +Files: src/Makefile + +Patch 8.2.2930 +Problem: When a popup is visible a mouse move my restart Visual mode. +Solution: Reset held_button when ending Visual mode. (closes #8318) +Files: src/mouse.c, src/proto/mouse.pro, src/normal.c + +Patch 8.2.2931 +Problem: Vim9: line continuation comment still uses legacy syntax in one + place. +Solution: Check for #\ instead of "\ earlier. (closes #8316) +Files: src/scriptfile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.2932 (after 8.2.2930) +Problem: Select mode test fails. +Solution: Do not always reset the held mouse button. +Files: src/mouse.c, src/normal.c, src/proto/normal.pro + +Patch 8.2.2933 +Problem: When 'clipboard' is "unnamed" zp and zP do not work correctly. +Solution: Pass -1 to str_to_reg() and fix computing the character width + instead of using the byte length. (Christian Brabandt, + closes #8301, closes #8317) +Files: src/clipboard.c, src/mbyte.c, src/register.c + +Patch 8.2.2934 (after 8.2.2933) +Problem: ASAN error when using text from the clipboard. +Solution: Get width of each character. +Files: src/register.c + +Patch 8.2.2935 (after 8.2.2934) +Problem: Calculating register width is not always needed. (Christian + Brabandt) +Solution: Only calculate the width when the type is MBLOCK. +Files: src/register.c + +Patch 8.2.2936 +Problem: Vim9: converting number to bool uses wrong stack offset. (Salman + Halim) +Solution: Include the offset in the 2BOOL command. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2937 +Problem: Popup test fails if rightleft feature not enabled. +Solution: Check that the rightleft feature is available. (Dominique Pell茅, + closes #8321) +Files: src/testdir/test_popup.vim + +Patch 8.2.2938 +Problem: After using motion force from feedkeys() it may not be reset. +Solution: Clear motion_force in clearop(). (closes #8323) +Files: src/normal.c, src/testdir/test_visual.vim + +Patch 8.2.2939 +Problem: GTK: righthand scrollbar does not show with split window. +Solution: Adjust padding when two scrollbars are used. (Matt Wozniski, + closes #8324) +Files: src/gui_gtk.c + +Patch 8.2.2940 +Problem: MS-Windows: cannot see the size of the text area when resizing the + gvim window. +Solution: Show a tooltip with the text size. (Ken Takata, closes #8326) +Files: src/gui_w32.c + +Patch 8.2.2941 +Problem: Vim9: using `=expr` does not handle a list of strings. +Solution: Convert a list to a string and escape each item. (closes #8310) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2942 +Problem: Vim9: internal error when calling function with too few arguments +Solution: Check for argument count to be too few. (closes #8325) +Files: src/errors.h, src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.2943 +Problem: Vim9: check for argument count ignores default values. +Solution: Take default argument values into account. +Files: src/vim9execute.c + +Patch 8.2.2944 +Problem: Vim9: no error when using job or channel as a string. +Solution: Be more strict about conversion to string. (closes #8312) +Files: src/typval.c, src/job.c, src/proto/job.pro, src/channel.c, + src/proto/channel.pro, src/eval.c, src/vim9execute.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.2945 +Problem: Some buffer related code is not tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8320) +Files: src/termlib.c, src/testdir/test_excmd.vim, + src/testdir/test_recover.vim, src/testdir/test_swap.vim, + src/testdir/test_visual.vim + +Patch 8.2.2946 +Problem: Vim9: substitute expression cannot be a List in a :def function. +Solution: Use typval2string(). (closes #8330) +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2947 +Problem: Build failure without the channel feature. +Solution: Add back #ifdef. (John Marriott) +Files: src/eval.c + +Patch 8.2.2948 +Problem: Substitute() accepts a number but not a float expression. +Solution: Also accept a float. (closes #8331) +Files: src/typval.c, src/testdir/test_substitute.vim + +Patch 8.2.2949 (after 8.2.2948) +Problem: Tests failing because there is no error for float to string + conversion. +Solution: Change the check for failure to check for correct result. Make + some conversions strict in Vim9 script. +Files: src/evalfunc.c, src/float.c, src/findfile.c, src/json.c, + src/filepath.c, src/testdir/test_eval_stuff.vim, + src/testdir/test_execute_func.vim, + src/testdir/test_float_func.vim, src/testdir/test_functions.vim, + src/testdir/test_listdict.vim, src/testdir/test_glob2regpat.vim + +Patch 8.2.2950 +Problem: Sound code not fully tested. +Solution: Add more sound tests. (Dominique Pell茅, closes #8332) +Files: src/testdir/test_sound.vim + +Patch 8.2.2951 +Problem: Vim9: cannot use heredoc in :def function for :python, :lua, etc. +Solution: Concatenate the heredoc lines and pass them in the ISN_EXEC_SPLIT + instruction. +Files: src/userfunc.c, src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2952 +Problem: Recover test fails on big endian systems. +Solution: Disable the failing test on big endian systems. (Yegappan + Lakshmanan, closes #8335) +Files: src/testdir/test_recover.vim, src/testdir/test_swap.vim + +Patch 8.2.2953 (after 8.2.2951) +Problem: Vim9: leaking memory when using heredoc script. +Solution: Free the first line. +Files: src/vim9execute.c + +Patch 8.2.2954 +Problem: Short file name extension for Scala not recognized. +Solution: Recognize *.sc. (closes #8337) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2955 +Problem: Vim9: using filter in compiled command does not work. +Solution: Generate EXEC including the command modifier. +Files: src/vim9compile.c, src/ex_docmd.c, src/ex_cmds.c, + src/proto/ex_cmds.pro, src/testdir/test_vim9_cmd.vim + +Patch 8.2.2956 +Problem: Vim9: need to plan for future additions. +Solution: Reserve commands for future use: :type, :class, :enum. +Files: src/ex_cmds.h, src/ex_cmdidxs.h + +Patch 8.2.2957 +Problem: Using getchar() in Vim9 script is problematic. +Solution: Add getcharstr(). (closes #8343) +Files: runtime/doc/eval.txt, src/evalfunc.c, src/getchar.c, + src/proto/getchar.pro, src/testdir/test_functions.vim + +Patch 8.2.2958 (after 8.2.2957) +Problem: Function list test fails. +Solution: Add newly added function to the list. Fix typo. +Files: runtime/doc/usr_41.txt, src/testdir/test_function_lists.vim + +Patch 8.2.2959 +Problem: sound_playfile() is not tested on MS-Windows. +Solution: Make it work and enable the test. (Dominique Pell茅, closes #8338) +Files: src/sound.c, src/testdir/test_sound.vim + +Patch 8.2.2960 +Problem: Swap file recovery not sufficiently tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8339) +Files: src/testdir/test_recover.vim + +Patch 8.2.2961 +Problem: Keys typed during a :normal command are discarded. +Solution: Concatenate saved typeahead and typed keys. (closes #8340) +Files: src/getchar.c, src/proto/getchar.pro, src/ex_docmd.c, + src/evalfunc.c, src/debugger.c, src/ui.c, src/proto/ui.pro + +Patch 8.2.2962 +Problem: MS-Windows command line arguments have wrong encoding. +Solution: Always use utf-8 in get_cmd_argsW(). (Ken Takata, closes #8347) +Files: src/os_win32.c + +Patch 8.2.2963 +Problem: GUI: mouse move may start Visual mode with a popup visible. +Solution: Add special code for mouse move. (closes #8318) +Files: src/vim.h, src/gui.c, src/keymap.h, src/term.c + +Patch 8.2.2964 +Problem: Vim9: hang when using space after ->. (Naohiro Ono) +Solution: Skip over white space to find the function name. (closes #8341) +Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.2965 +Problem: Vim9: crash when calling function that failed to compile. +Solution: Fail when trying to call the function. (closes #8344) +Files: src/errors.h, src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2966 +Problem: ml_get errors after recovering a file. (Yegappan Lakshmanan) +Solution: Fix the cursor position after deleting lines. +Files: src/memline.c + +Patch 8.2.2967 +Problem: Vim9: crash when using two levels of partials. +Solution: Add outer_ref_T and use it in the execution context. +Files: src/structs.h, src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.2968 (after 8.2.2967) +Problem: Vim9: memory leak +Solution: Unreference pt_outer of partial. +Files: src/eval.c + +Patch 8.2.2969 +Problem: Subtracting from number option fails when result is zero. (Ingo + Karkat) +Solution: Reset the string value when using the numeric value. + (closes #8351) +Files: src/evalvars.c, src/testdir/test_vimscript.vim + +Patch 8.2.2970 +Problem: Python configure check uses deprecated command. +Solution: Use sysconfig instead of distutils if possible. (Zdenek Dohnal, + closes #8354) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.2971 +Problem: Cannot yank a block without trailing spaces. +Solution: Add the "zy" command. (Christian Brabandt, closes #8292) +Files: runtime/doc/change.txt, runtime/doc/index.txt, src/normal.c, + src/ops.c, src/register.c, src/structs.h, + src/testdir/test_visual.vim + +Patch 8.2.2972 +Problem: "%bd" tries to delete popup window buffers, which fails. (Ralf + Schandl) +Solution: Do not try to delete a popup window buffer. (closes #8349) +Files: src/buffer.c, src/vim.h, src/testdir/test_popupwin.vim + +Patch 8.2.2973 +Problem: Fix for recovery and diff mode not tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8352) +Files: src/testdir/test_diffmode.vim, src/testdir/test_prompt_buffer.vim, + src/testdir/test_recover.vim + +Patch 8.2.2974 +Problem: Greek spell checking uses wrong case folding. +Solution: Fold capital sigma depending on whether it is at the end of a + word or not. (closes #299) +Files: src/spell.c, src/proto/spell.pro, src/spellfile.c, + src/spellsuggest.c + +Patch 8.2.2975 +Problem: Vim9: can only use an autoload function name as a string. +Solution: Load the autoload script when encountered. (closes #8124) +Files: src/vim9compile.c, src/evalvars.c, src/scriptfile.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2976 (after 8.2.2975) +Problem: Build failure without the +eval feature. +Solution: Add #ifdefs. +Files: src/scriptfile.c + +Patch 8.2.2977 +Problem: Crash when using a null function reference. (Naohiro Ono) +Solution: Check for an invalid function name. (closes #8367) +Files: src/eval.c, src/errors.h, src/testdir/test_functions.vim + +Patch 8.2.2978 (after 8.2.2977) +Problem: Warning for uninitialized variable. +Solution: Set return value to FAIL. +Files: src/eval.c + +Patch 8.2.2979 +Problem: Not all options code is covered by tests. +Solution: Add more tests for options. (Yegappan Lakshmanan, closes #8369) +Files: src/testdir/test_edit.vim, src/testdir/test_excmd.vim, + src/testdir/test_help.vim, src/testdir/test_mksession.vim, + src/testdir/test_options.vim, src/testdir/test_vartabs.vim, + src/testdir/test_window_cmd.vim + +Patch 8.2.2980 +Problem: Popup window test is a bit flaky. +Solution: Add a redraw command. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.2981 +Problem: Recovery test is not run on big-endian systems. +Solution: Make it work on big-endian systems. (James McCoy, closes #8368) +Files: src/testdir/test_recover.vim + +Patch 8.2.2982 +Problem: Vim9: future commands are not reserved yet. +Solution: Add commands to be implemented later. Make "this" a reserved + name. +Files: runtime/doc/vim9.txt, src/ex_cmds.h, src/ex_cmdidxs.h, + src/vim9script.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.2983 +Problem: Vim9: an inline function requires specifying the return type. +Solution: Make the return type optional. +Files: src/eval.c, src/vim9compile.c, src/userfunc.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.2984 (after 8.2.2983) +Problem: Vim9: Test fails because of missing return statement. +Solution: When type is unknown set type to void. +Files: src/vim9compile.c + +Patch 8.2.2985 +Problem: Vim9: a compiled function cannot be debugged. +Solution: Add initial debugging support. +Files: src/vim9.h, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim.h, src/eval.c, src/vim9execute.c, src/userfunc.c, + src/vim9type.c, src/testdir/test_debugger.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2986 +Problem: Build failure without the profile feature. +Solution: Add #ifdef. +Files: src/vim9compile.c + +Patch 8.2.2987 +Problem: Build failure with normal features. +Solution: Remove #define. +Files: src/vim9execute.c + +Patch 8.2.2988 +Problem: Vim9: debugger test fails. +Solution: Get the debugger instructions when needed. +Files: src/vim.h, src/vim9.h + +Patch 8.2.2989 +Problem: Vim9: memory leak when debugging a :def function. +Solution: Free the debug instructions. +Files: src/vim9compile.c + +Patch 8.2.2990 +Problem: Jupyter Notebook files are not recognized. +Solution: Recognize *.ipynb. (closes #8375) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.2991 +Problem: Vim9: no completion for :vim9 and :legacy. +Solution: Expand argument as a command. (closes #8377) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.2992 +Problem: Vim9: completion for :disassemble is incomplete. +Solution: Recognize the "debug" and "profile" arguments. +Files: src/cmdexpand.c, src/vim9execute.c, src/proto/vim9execute.pro, + src/vim.h, src/testdir/test_cmdline.vim + +Patch 8.2.2993 +Problem: 'fileencodings' default value should depend on 'encoding'. (Gary + Johnson) +Solution: When 'encoding' is "utf-8" use a different default value for + 'fileencodings'. +Files: src/mbyte.c, src/option.c, src/proto/option.pro, + src/testdir/test_options.vim + +Patch 8.2.2994 +Problem: Various code is not fully tested. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8378) +Files: src/testdir/test_excmd.vim, src/testdir/test_mapping.vim, + src/testdir/test_modeline.vim, src/testdir/test_options.vim, + src/testdir/test_paste.vim, src/vim9compile.c + +Patch 8.2.2995 +Problem: Linker errors with dynamic Python 3.10. +Solution: Add a couple of library entries. (Zdenek Dohnal, closes #8381, + closes #8356) +Files: src/if_python3.c + +Patch 8.2.2996 +Problem: Vim9: when debugging cannot inspect local variables. +Solution: Make local variables available when debugging. +Files: src/vim9execute.c, src/proto/vim9execute.pro, src/vim9compile.c, + src/vim9.h, src/debugger.c, src/testdir/test_debugger.vim + +Patch 8.2.2997 (after 8.2 2996) +Problem: Vim9: disassemble test fails. +Solution: Adjust expected output. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.2998 (after 8.2 2996) +Problem: Vim9: disassemble test fails. +Solution: Add missing call to lookup_debug_var(). +Files: src/evalvars.c + +Patch 8.2.2999 +Problem: Balloon sometimes does not hide with GTK 3. +Solution: Also listen to GDK_LEAVE_NOTIFY. (Johannes Stezenbach) +Files: src/gui_beval.c + +Patch 8.2.3000 +Problem: Vim9: warning for uninitialized variable. +Solution: Add initialization. (John Marriott) +Files: src/vim9compile.c + +Patch 8.2.3001 +Problem: Vim9: memory leak when compilation fails. +Solution: Free the list of variable names. +Files: src/vim9compile.c + +Patch 8.2.3002 +Problem: Vim doesn't abort on a fatal Tcl error. +Solution: Change emsg() to iemsg(). (Dominique Pell茅, closes #8383) +Files: src/if_tcl.c + +Patch 8.2.3003 +Problem: Vim9: closure compiled with wrong compile type. +Solution: Use COMPILE_TYPE() when calling a function. (closes #8384) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3004 +Problem: Vim9: error for missing colon given while skipping. +Solution: Do not give the error when skipping. (closes #8385) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3005 +Problem: Vim9: using a void value does not give a proper error message. +Solution: Give a clear error message. (closes #8387) +Files: src/typval.c, src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3006 +Problem: Crash when echoing a value very early. (Naruhiko Nishino) +Solution: Do not use a NUL to truncate the message, make a copy. + (closes #8388) +Files: src/message.c, src/testdir/test_startup.vim + +Patch 8.2.3007 (after 8.2.3005) +Problem: Vim9: test for void value fails. +Solution: Adjust expected error. Do not make a copy of void. +Files: src/typval.c, src/testdir/test_functions.vim + +Patch 8.2.3008 (after 8.2.3006) +Problem: Startup test may hang. +Solution: Add quit command in the script. +Files: src/testdir/test_startup.vim + +Patch 8.2.3009 (after 8.2.3006) +Problem: Startup test may hang. +Solution: Do not run the test in the GUI. +Files: src/testdir/test_startup.vim + +Patch 8.2.3010 +Problem: Not enough testing for viminfo code. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #8390) +Files: src/register.c, src/testdir/test_fileformat.vim, + src/testdir/test_smartindent.vim, src/testdir/test_viminfo.vim + +Patch 8.2.3011 +Problem: Vim9: cannot get argument values during debugging. +Solution: Lookup names in the list of arguments. Put debug instruction + halfway for command. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_debugger.vim + +Patch 8.2.3012 +Problem: When 'rightleft' is set the line number is sometimes drawn + reversed. +Solution: Adjust how space is handled. (Christian Brabandt, closes #8389, + closes #8391) +Files: src/drawline.c, src/testdir/test_number.vim + +Patch 8.2.3013 +Problem: Vim: when debugging only the first line of a command using line + continuation is displayed. +Solution: Find the next command and concatenate lines until that one. + (closes #8392) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3014 +Problem: Coverity warns for freeing static string. +Solution: Do not assign static string to pointer. (Dominique Pell茅, + closes #8397) +Files: src/vim9execute.c + +Patch 8.2.3015 +Problem: Vim9: Assigning to @# requires a string. (Naohiro Ono) +Solution: Accent a number or a string. (closes #8396) +Files: src/vim9compile.c, src/vim9execute.c, src/globals.h, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3016 +Problem: Confusing error when expression is followed by comma. +Solution: Give a different error for trailing text. (closes #8395) +Files: src/eval.c, src/testdir/test_let.vim, + src/testdir/test_eval_stuff.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_viminfo.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.3017 +Problem: Vim9: debugger shows too many lines. +Solution: Truncate at a comment, "enddef", etc. (closes #8392) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3018 +Problem: Formatting using quickfixtextfunc is lost when updating location + lists for different buffers. (Yorick Peterse) +Solution: Use the right window for the location list. (Yegappan Lakshmanan, + closes #8400, closes #8403) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.3019 +Problem: Location list only has the start position. +Solution: Make it possible to add an end position. (thinca, closes #8393) +Files: runtime/doc/eval.txt, src/quickfix.c, + src/testdir/dumps/Test_quickfix_cwindow_1.dump, + src/testdir/dumps/Test_quickfix_cwindow_2.dump, + src/testdir/test_quickfix.vim, src/testdir/test_tagjump.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.3020 +Problem: Unreachable code. +Solution: Remove the code. (closes #8406) +Files: src/ex_docmd.c + +Patch 8.2.3021 +Problem: Spaces allowed between option name and "!", "?", etc. +Solution: Disallow spaces in Vim9 script, it was not documented. + (closes #8408) +Files: src/option.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3022 +Problem: Available encryption methods are not strong enough. +Solution: Add initial support for xchacha20. (Christian Brabandt, + closes #8394) +Files: .github/workflows/ci.yml, runtime/doc/eval.txt, + runtime/doc/options.txt, runtime/doc/various.txt, + src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/auto/configure, src/blowfish.c, src/bufwrite.c, + src/config.h.in, src/configure.ac, src/crypt.c, src/crypt_zip.c, + src/errors.h, src/evalfunc.c, src/feature.h, src/fileio.c, + src/memline.c, src/option.c, src/optionstr.c, + src/proto/blowfish.pro, src/proto/crypt.pro, + src/proto/crypt_zip.pro, src/structs.h, + src/testdir/samples/crypt_sodium_invalid.txt, + src/testdir/test_crypt.vim, src/undo.c, src/version.c + +Patch 8.2.3023 +Problem: Vim9: arguments for execute() not checked at compile time. +Solution: Add a function to check the argument types. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3024 (after 8.2.3023) +Problem: execute() function test fails. +Solution: Adjust test for different error. +Files: src/testdir/test_execute_func.vim + +Patch 8.2.3025 +Problem: Not enough tests for quickfix end_col and end_lnum. +Solution: Add a few more test cases. (Shane-XB-Qian, closes #8409) +Files: src/testdir/test_quickfix.vim + +Patch 8.2.3026 +Problem: Vim9: cannot set breakpoint in compiled function. +Solution: Check for breakpoint when calling a function. +Files: src/vim9execute.c, src/structs.h, src/vim.h, src/vim9.h, + src/debugger.c, src/testdir/test_debugger.vim + +Patch 8.2.3027 +Problem: Vim9: breakpoint in compiled function not always checked. +Solution: Check for breakpoint when calling compiled function from compiled + function. +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3028 +Problem: GUI mouse events not tested. +Solution: Add test_gui_mouse_event(). Add mouse tests. Also add a few + viminfo tests. (Yegappan Lakshmanan, closes #8407) +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/testing.pro, + src/testdir/test_gui.vim, src/testdir/test_viminfo.vim, + src/testing.c + +Patch 8.2.3029 +Problem: Vim9: crash when using operator and list unpack assignment. + (Naohiro Ono) +Solution: Get variable value before operation. (closes #8416) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, src/ex_docmd.c, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3030 +Problem: Coverity reports a memory leak. +Solution: Fix the leak and a few typos. (Dominique Pell茅, closes #8418) +Files: src/crypt.c, src/errors.h + +Patch 8.2.3031 +Problem: No error if a function name starts with an underscore. (Naohiro + Ono) +Solution: In Vim9 script disallow a function name starting with an + underscore, as is mentioned in the help. (closes #8414) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3032 +Problem: Build problems with MSVC, other crypt issues with libsodium. +Solution: Adjust MSVC makefile. Disable swap file only when 'key' is set. + Adjust error message used when key is wrong. Fix Coverity issues. + (Christian Brabandt, closes #8420, closes #8411) +Files: src/Make_mvc.mak, src/crypt.c, src/errors.h, src/fileio.c, + src/memline.c, src/proto/crypt.pro + +Patch 8.2.3033 +Problem: No error when using alpha delimiter with :global. +Solution: Check the delimiter like with :substitute. (closes #8415) +Files: src/ex_cmds.c, src/testdir/test_global.vim + +Patch 8.2.3034 +Problem: Installing packages on github CI sometimes fails. +Solution: Update package information first. (Christian Brabandt, + closes #8432) +Files: .github/workflows/ci.yml + +Patch 8.2.3035 +Problem: Vim9: crash when calling :def function with partial and return + type is not set. +Solution: When the return type is not set handle like the return type is + unknown. (closes #8422) +Files: src/vim9type.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3036 +Problem: Vim9: builtin function arguments not checked at compile time. +Solution: Add more argument type specs. Check arguments to test_setmouse() + and test_gui_mouse_event(). (Yegappan Lakshmanan, closes #8425) +Files: src/evalfunc.c, src/testdir/test_assert.vim, + src/testdir/test_gui.vim, src/testdir/test_popupwin.vim, + src/testdir/test_vim9_builtin.vim, src/testing.c + +Patch 8.2.3037 +Problem: Configure reports libcanberra when checking for libsodium. +Solution: Adjust the message. (Ozaki Kiichi, closes #8435) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.3038 +Problem: Amiga built-in version string doesn't include build date. +Solution: Add the build date if available. (Ola S枚der, closes #8437) +Files: src/os_amiga.c + +Patch 8.2.3039 +Problem: Vim9: breakpoint at a comment line does not work. +Solution: Add the comment line number to the debug instruction. + (closes #8429) +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_debugger.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3040 +Problem: GUI: dropping files not tested. +Solution: Add test_gui_drop_files() and tests. (Yegappan Lakshmanan, + closes #8434) +Files: runtime/doc/eval.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/gui.c, + src/proto/testing.pro, src/testdir/test_gui.vim, src/testing.c + +Patch 8.2.3041 +Problem: Detecting if the process of a swap file is running fails if the + process is owned by another user. +Solution: Check for the ESRCH error. (closes #8436) +Files: src/os_unix.c + +Patch 8.2.3042 (after 8.2.3041) +Problem: Swap file test fails. +Solution: Check for a very high process ID instead of one, which should be + running. +Files: src/testdir/test_swap.vim + +Patch 8.2.3043 +Problem: Amiga: cannot get the shell size on MorphOS and AROS. +Solution: Use control sequences. (Ola S枚der, closes #8438) +Files: src/os_amiga.c + +Patch 8.2.3044 +Problem: Amiga MorphOS and AROS: process ID is not valid. +Solution: Use FindTask to return something which is unique to all processes. + (Ola S枚der, closes #8444) +Files: src/os_amiga.c + +Patch 8.2.3045 +Problem: Minor typos. +Solution: Fix the typos. (Christian Brabandt, closes #8441) +Files: src/VisVim/README_VisVim.txt, src/evalfunc.c, src/testdir/vim9.vim + +Patch 8.2.3046 +Problem: Amiga MorphOS: Term mode is set using DOS packets. +Solution: Use the same way of setting term mode on all next gen Amiga-like + systems. (Ola S枚der, closes #8445) +Files: src/os_amiga.c + +Patch 8.2.3047 +Problem: Increment and decrement don't allow for next command. +Solution: Allow for comment and next command. (closes #8442) +Files: src/ex_cmds.h, src/vim9script.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3048 +Problem: Strange error for white space after ++ command. +Solution: Check for white space explicitly. (closes #8440) +Files: src/vim9script.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3049 +Problem: JSON patch file not recognized. +Solution: Recognize json-patch as json. (Kevin Locke, closes #8450) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3050 +Problem: Cannot recognize elixir files. +Solution: Recognize Elixir-specific files. Check if an .ex file is Euphoria + or Elixir. (Austin Gatlin, closes #8401, closes #8446) +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.3051 +Problem: Vim9: for loop with one list variable does not work. +Solution: Use a separate flag for unpacking a list. (closes #8452) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3052 +Problem: Vim9: "legacy call" does not work. +Solution: Do not skip "call" after "legacy". (closes #8454) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3053 +Problem: Vim9: cannot assign to @@ in :def function +Solution: Handle '@' like '"'. (closes #8456) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3054 +Problem: Vim9: unpack assignment using "_" after semicolon fails. +Solution: Drop the expression result. (closes #8453) +Files: src/vim9compile.c, src/errors.h, src/testdir/test_vim9_assign.vim + +Patch 8.2.3055 +Problem: Strange error for assigning to "x.key" on non-dictionary. +Solution: Add a specific error message. (closes #8451) +Files: src/eval.c, src/errors.h, src/testdir/test_vim9_assign.vim, + src/testdir/test_listdict.vim, src/testdir/test_let.vim + +Patch 8.2.3056 +Problem: Vim9: using default value in lambda gives confusing error. +Solution: Pass "default_args" on the first pass to get the arguments. + (closes #8455) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3057 +Problem: Vim9: debugger test fails with normal features and +terminal. + (Dominique Pell茅) +Solution: Adjust the INSTRUCTIONS macro. (closes #8460) +Files: src/vim9.h + +Patch 8.2.3058 (after 8.2.3056) +Problem: Vim9: cannot use ternary operator in parentheses. +Solution: Do not use "==" for a default argument value. (closes #8462) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3059 (after 8.2.3056) +Problem: Vim9: memory leak when using lambda. +Solution: Do not store the default value strings when skipping. +Files: src/userfunc.c + +Patch 8.2.3060 (after 8.2.3056) +Problem: Vim9: cannot use ternary operator in parentheses. +Solution: Do not use "=~" for a default argument value. (closes #8462) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3061 +Problem: Testing the shell option is incomplete and spread out. +Solution: Move shell tests to one file and increase coverage. (Yegappan + Lakshmanan, closes #8464) +Files: src/testdir/Make_all.mak, src/testdir/test_functions.vim, + src/testdir/test_options.vim, src/testdir/test_shell.vim, + src/testdir/test_system.vim + +Patch 8.2.3062 +Problem: Internal error when adding several text properties. +Solution: Do not handle text properties when deleting a line for splitting a + data block. (closes #8466) +Files: src/structs.h, src/memline.c, src/testdir/test_textprop.vim + +Patch 8.2.3063 +Problem: Crash when switching 'cryptmethod' to xchacha20 with an existing + undo file. (Martin Tournoij) +Solution: Disable reading undo file when decoding can't be done inplace. + (issue #8467) +Files: src/fileio.c, src/bufwrite.c + +Patch 8.2.3064 +Problem: Vim9: in script cannot set item in uninitialized list. +Solution: When a list is NULL allocate an empty one. (closes #8461) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3065 +Problem: Vim9: error when sourcing script twice and reusing a function + name. +Solution: Check if the function is dead. (closes #8463) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3066 +Problem: Vim9: debugging lambda does not work. +Solution: Use the compile type of the function when compiling a lambda. + (closes #8412) +Files: src/vim9compile.c, src/testdir/test_debugger.vim + +Patch 8.2.3067 +Problem: Building fails with Athena. (Elimar Riesebieter) +Solution: Adjust #ifdefs and add the 'drop_file' feature. +Files: src/evalfunc.c, src/testing.c, src/testdir/test_gui.vim + +Patch 8.2.3068 +Problem: Unicode tables are slightly outdated. +Solution: Update the tables for Unicode release 13. (Christian Brabandt + closes #8430) +Files: runtime/tools/unicode.vim, src/mbyte.c + +Patch 8.2.3069 +Problem: Error messages are spread out. +Solution: Move some error messages to errors.h. Use clearer names. +Files: src/errors.h, src/globals.h, src/arglist.c, src/buffer.c, + src/channel.c, src/eval.c, src/evalfunc.c, src/evalvars.c, + src/evalwindow.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/filepath.c, src/fold.c, src/getchar.c, src/indent.c, + src/list.c, src/map.c, src/mark.c, src/normal.c, src/ops.c, + src/optionstr.c, src/popupwin.c, src/quickfix.c, src/spellfile.c, + src/textprop.c, src/typval.c, src/undo.c, src/userfunc.c, + src/vim9compile.c, src/window.c + +Patch 8.2.3070 +Problem: Not enough testing for shell use. +Solution: Add a bit more testing. (Yegappan Lakshmanan, closes #8469) +Files: src/testdir/test_shell.vim, src/testdir/test_startup.vim + +Patch 8.2.3071 +Problem: Shell options are not set properly for PowerShell. +Solution: Use better option defaults. (Mike Williams, closes #8459) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/os_dos.txt, src/fileio.c, src/misc2.c, src/option.c, + src/os_win32.c, src/testdir/test_shell.vim + +Patch 8.2.3072 +Problem: The "zy" command does not work well when 'virtualedit' is set to + "block". (Johann H枚chtl) +Solution: Make endspaces zero. (Christian Brabandt, closes #8468, + closes #8448) +Files: src/register.c, src/testdir/test_visual.vim + +Patch 8.2.3073 +Problem: When cursor is moved for block append wrong text is inserted. +Solution: Calculate an offset. (Christian Brabandt, closes #8433, + closes #8288) +Files: src/ops.c, src/testdir/test_blockedit.vim, + src/testdir/test_visual.vim + +Patch 8.2.3074 +Problem: popup_atcursor() uses wrong position with concealing. +Solution: Keep w_wcol in conceal_check_cursor_line(). (closes #8476) +Files: src/screen.c, src/proto/screen.pro, src/normal.c, src/edit.c, + src/ui.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_atcursor_pos.dump + +Patch 8.2.3075 +Problem: Xxd always reports an old version string. (脜smund Ervik) +Solution: Update the version string with the last known change date. + (J眉rgen Weigert, closes #8475) +Files: src/xxd/xxd.c, src/testdir/test_xxd.vim + +Patch 8.2.3076 +Problem: Vim9: using try in catch block causes a hang. +Solution: Save and restore the ec_in_catch flag. (closes #8478) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3077 +Problem: Vim9: an error in a catch block is not reported. +Solution: Put the "in catch" flag in the try stack. (closes #8478) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3078 +Problem: Vim9: profile test fails. +Solution: Make throw in :catch jump to :finally. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3079 +Problem: Powershell core not supported by default. +Solution: Set option defaults for "pwsh". (Mike Williams, closes #8481) +Files: runtime/doc/eval.txt, runtime/doc/options.txt, + runtime/doc/os_dos.txt, runtime/doc/os_win32.txt, src/fileio.c, + src/misc2.c, src/option.c, src/os_win32.c, + src/testdir/test_shell.vim + +Patch 8.2.3080 +Problem: Recover test fails on 32bit systems. (Ond艡ej S煤kup) +Solution: Detect 32/64 bit systems. (Yegappan Lakshmanan, closes #8485, + closes #8479) +Files: src/testdir/test_recover.vim + +Patch 8.2.3081 +Problem: Cannot catch errors in a channel command. +Solution: Instead of skipping the error make it silent. (closes #8477) +Files: src/channel.c + +Patch 8.2.3082 +Problem: A channel command "echoerr" does not show anything. +Solution: Do not use silent errors when using an "echoerr" command. + (closes #8494) +Files: src/channel.c, src/testdir/test_channel.py, + src/testdir/test_channel.vim + +Patch 8.2.3083 +Problem: Crash when passing null string to charclass(). +Solution: Bail out when string pointer is NULL. (Christian Brabandt, + closes #8498, closes #8260) +Files: src/mbyte.c, src/testdir/test_functions.vim + +Patch 8.2.3084 +Problem: Vim9: builtin function argument types are not checked at compile + time. +Solution: Add argument types. (Yegappan Lakshmanan, closes #8503) +Files: src/evalfunc.c, src/testdir/test_functions.vim, + src/testdir/test_glob2regpat.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.3085 +Problem: JSONC files are not recognized. +Solution: Recognize .jsonc files. (Izhak Jakov, closes #8500) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3086 +Problem: Vim9: breakpoint on "for" does not work. +Solution: Use the right line number in ISN_DEBUG. (closes #8486) +Files: src/vim9compile.c, src/testdir/test_debugger.vim + +Patch 8.2.3087 +Problem: Gemtext files are not recognized. +Solution: Recognize .gmi and .gemini files. (closes #8427) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3088 +Problem: With 'virtualedit' set to "block" Visual highlight is wrong after + using "$". (Marco Trosi) +Solution: Do not set w_old_cursor_lcol to MAXCOL. (closes #8495) +Files: src/drawscreen.c, src/testdir/test_visual.vim, + src/testdir/dumps/Test_visual_block_with_virtualedit.dump + +Patch 8.2.3089 +Problem: Garbage collection has useless code. +Solution: Bail out when aborting. (closes #8504) +Files: src/userfunc.c + +Patch 8.2.3090 +Problem: With concealing enabled and indirectly closing a fold the cursor + may be somewhere in a folded line. +Solution: Recompute the cursor position when the cursor line can be + concealed. (closes #8480) +Files: src/drawscreen.c + +Patch 8.2.3091 +Problem: Vim9: default argument expression cannot use previous argument +Solution: Correct argument index. (closes #8496) +Files: src/vim9compile.c, src/structs.h, src/testdir/test_vim9_func.vim + +Patch 8.2.3092 +Problem: Vim9: builtin function test fails without the +channel feature. +Solution: Check the +channel feature is supported. (Dominique Pell茅, + closes #8507) +Files: runtime/doc/eval.txt, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3093 +Problem: tablabel_tooltip test fails with Athena. (Dominique Pell茅) +Solution: Skip the test when using Athena. (closes #8508) +Files: src/testdir/test_gui.vim, src/testdir/check.vim + +Patch 8.2.3094 +Problem: Test_popup_atcursor_pos() fails without the conceal feature. +Solution: Add a check for the conceal feature. (Dominique Pell茅, + closes #8505) +Files: src/testdir/test_popupwin.vim + +Patch 8.2.3095 (after 8.2.3088) +Problem: With 'virtualedit' set to "block" block selection is wrong after + using "$". (Marco Trosi) +Solution: Compute the longest selected line. (closes #8495) +Files: src/drawscreen.c, src/testdir/test_visual.vim, + src/testdir/dumps/Test_visual_block_with_virtualedit2.dump + +Patch 8.2.3096 +Problem: Temp files remain after running tests. +Solution: Delete the right files. (Dominique Pell茅, closes #8509) +Files: src/testdir/test_debugger.vim, src/testdir/test_lambda.vim, + src/testdir/test_visual.vim + + +Patch 8.2.3097 +Problem: Crash when using "quit" at recovery prompt and autocommands are + triggered. +Solution: Block autocommands when creating an empty buffer to use as the + current buffer. (closes #8506) +Files: src/buffer.c, src/testdir/test_swap.vim + +Patch 8.2.3098 +Problem: Popup window test is flaky on MS-Windows with GUI. +Solution: Skip the check in this situation. +Files: src/testdir/test_popupwin.vim + +Patch 8.2.3099 +Problem: Vim9: missing catch/finally not reported at script level. +Solution: Give an error. (closes #8487) +Files: src/structs.h, src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3100 +Problem: Vim9: no error when using type with unknown number of arguments. +Solution: Do not ignore argument count of -1. (closes #8492) +Files: src/vim9type.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.3101 +Problem: Missing function prototype for vim_round(). +Solution: Add the prototype. +Files: src/proto/float.pro + +Patch 8.2.3102 (after 8.2.3097) +Problem: Test for crash fix does not fail without the fix. +Solution: Adjust the test sequence. (closes #8506) +Files: src/testdir/test_swap.vim + +Patch 8.2.3103 (after 8.2.3102) +Problem: Swap test may fail on some systems when jobs take longer to exit. +Solution: Use different file names. +Files: src/testdir/test_swap.vim + +Patch 8.2.3104 +Problem: Vim9: unspecified function type causes type error. +Solution: Don't check type when min_argcount is negative. (issue #8492) +Files: src/globals.h, src/vim9type.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3105 +Problem: Vim9: type of partial is wrong when it has arguments. +Solution: Subtract arguments from the count. (issue #8492) +Files: src/vim9type.c, src/userfunc.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3106 +Problem: Vim9: confusing line number reported for error. +Solution: Use the start line number for the store instruction. + (closes #8488) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3107 +Problem: Vim9: error for arguments while type didn't specify arguments. +Solution: Do not update that type to check when no argument count is + specified. (closes #8492) +Files: src/userfunc.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3108 +Problem: Test for remote_foreground() fails. (Elimar Riesebieter) +Solution: Check that $DISPLAY is set. (Christian Brabandt) +Files: src/testdir/check.vim, src/testdir/test_clientserver.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3109 +Problem: Check for $DISPLAY never fails. +Solution: Use eval(). +Files: src/testdir/check.vim + +Patch 8.2.3110 +Problem: A pattern that matches the cursor position is a bit complicated. +Solution: Use a dot to indicate the cursor line and column. (Christian + Brabandt, closes #8497, closes #8179) +Files: runtime/doc/pattern.txt, src/errors.h, src/regexp_bt.c, + src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.3111 +Problem: Vim9: confusing error with extra whitespace before colon. +Solution: Check for colon after white space. (closes #8513) +Files: src/eval.c, src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3112 (after 8.2.3090) +Problem: With concealing enabled and indirectly closing a fold the cursor + may be somewhere in a folded line when it is not on the first line + of the fold. +Solution: Check if the cursor is somewhere in the folded text. +Files: src/drawscreen.c + +Patch 8.2.3113 +Problem: No error when for loop variable shadows script variable. +Solution: Check for the error. (closes #8512) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3114 +Problem: Amiga-like systems: build error checking for running process +Solution: Only build swapfile_process_running() on systems where it is + actually used. (Ola S枚der, closes #8519) +Files: src/memline.c + +Patch 8.2.3115 +Problem: Coverity complains about free_wininfo() use. +Solution: Add a condition that "wip2" is not equal to "wip". (Neovim #14996) +Files: src/window.c + +Patch 8.2.3116 +Problem: Vim9: crash when debugging a function with line continuation. +Solution: Check for a NULL pointer. (closes #8521) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3117 +Problem: Vim9: type not properly checked in for loop. +Solution: Have items() return a list of lists. Add runtime type checks. + (closes #8515) +Files: src/evalfunc.c, src/globals.h, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3118 +Problem: Vim9: "any" type not handled correctly in for loop. +Solution: Change compile time check into runtime check. (closes #8516) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3119 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. +Files: src/evalfunc.c + +Patch 8.2.3120 +Problem: Crypt with sodium test fails on MS-Windows. +Solution: Make the tests pass. (closes #8428) +Files: src/testdir/test_crypt.vim + +Patch 8.2.3121 +Problem: 'listchars' "exceeds" character appears in foldcolumn. Window + separator is missing. (Leonid V. Fedorenchik) +Solution: Only draw the "exceeds" character in the text area. Break the + loop when not drawing the text. (closes #8524) +Files: src/drawline.c, src/testdir/test_listchars.vim, + src/testdir/dumps/Test_listchars_01.dump, + src/testdir/dumps/Test_listchars_02.dump, + src/testdir/dumps/Test_listchars_03.dump, + src/testdir/dumps/Test_listchars_04.dump, + src/testdir/dumps/Test_listchars_05.dump + +Patch 8.2.3122 +Problem: With 'nowrap' cursor position is unexpected in narrow window. + (Leonid V. Fedorenchik) +Solution: Put cursor on the last non-empty line. (closes #8525) +Files: src/move.c, src/testdir/test_listchars.vim, + src/testdir/dumps/Test_listchars_06.dump, + src/testdir/dumps/Test_listchars_07.dump + +Patch 8.2.3123 +Problem: Vim9: confusing error when using white space after option, before + one of "!&<". +Solution: Give a specific error. (issue #8408) +Files: src/errors.h, src/option.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3124 +Problem: Vim9: no error for white space between option and "=9". +Solution: Check for extraneous white space. (issue #8408) +Files: src/option.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3125 +Problem: Variables are set but not used. +Solution: Move the declarations to the block where they are used. + (closes #8527) +Files: src/regexp_nfa.c + +Patch 8.2.3126 +Problem: Vim9: for loop error reports wrong line number. +Solution: Save and restore the line number when evaluating the expression. + (closes #8514) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3127 +Problem: Vim9: no error when adding number to list of string. +Solution: Check the value type. (closes #8529) +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3128 +Problem: Vim9: uninitialized list does not get type checked. +Solution: Set the type when initializing the variable. (closes #8529) +Files: src/eval.c, src/evalvars.c, src/vim9script.c, + src/userfunc.c, src/proto/vim9script.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3129 +Problem: Vim9: imported uninitialized list does not get type checked. +Solution: Get type from imported variable. +Files: src/eval.c, src/evalvars.c, src/vim9script.c, + src/proto/vim9script.pro, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3130 +Problem: Vim9: import test fails. +Solution: Rename directory back to "import", use "p" to avoid an error when + the directory already exists. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3131 +Problem: MS-Windows: ipv6 channel test is very flaky in the GUI. +Solution: Skip the test. +Files: src/testdir/test_channel.vim + +Patch 8.2.3132 +Problem: Compiler warns for size_t to colnr_T conversion. (Randall W. + Morris) +Solution: Add a type cast. +Files: src/drawscreen.c + +Patch 8.2.3133 +Problem: Vim9: memory leak when add() fails. +Solution: Allocate listitem_T after type check. +Files: src/list.c + +Patch 8.2.3134 +Problem: Crash when using typename() on a function reference. (Naohiro Ono) +Solution: Initialize pointer to NULL. (closes #8531) +Files: src/vim9type.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3135 +Problem: Vim9: builtin function arguments not checked at compile time. +Solution: Add more type checks. (Yegappan Lakshmanan, closes #8539) +Files: src/channel.c, src/errors.h, src/evalfunc.c, src/proto/typval.pro, + src/terminal.c, src/testdir/test_search.vim, + src/testdir/test_textprop.vim, src/testdir/test_vim9_builtin.vim, + src/testing.c, src/textprop.c, src/typval.c + +Patch 8.2.3136 +Problem: No test for E187 and "No swap file". +Solution: Add a test. (Dominique Pell茅, closes #8540) +Files: src/testdir/test_cd.vim, src/testdir/test_swap.vim + +Patch 8.2.3137 +Problem: Vim9: no error when a line only has a variable name. +Solution: Give an error when an expression is evaluated without an effect. + (closes #8538) +Files: src/ex_eval.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_script.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.3138 (after 8.2.3137) +Problem: Debugger test fails. +Solution: Adjust eval command. +Files: src/testdir/test_debugger.vim + +Patch 8.2.3139 +Problem: Functions for string manipulation are spread out. +Solution: Move string related functions to a new source file. (Yegappan + Lakshmanan, closes #8470) +Files: Filelist, src/Make_ami.mak, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/eval.c, src/evalfunc.c, src/mbyte.c, src/misc1.c, src/misc2.c, + src/proto.h, src/proto/eval.pro, src/proto/evalfunc.pro, + src/proto/mbyte.pro, src/proto/misc1.pro, src/proto/misc2.pro, + src/proto/strings.pro, src/strings.c + +Patch 8.2.3140 (after 8.2.3131) +Problem: MS-Windows: ipv6 channel test is very flaky also without the GUI. +Solution: Skip the test also without the GUI. +Files: src/testdir/test_channel.vim + +Patch 8.2.3141 +Problem: No error when using :complete for :command without -nargs. +Solution: Give an error. (Martin Tournoij, closes #8544, closes #8541) +Files: src/usercmd.c, src/errors.h, src/testdir/test_usercommands.vim + +Patch 8.2.3142 +Problem: Vim9: type check for has_key() argument is too strict. +Solution: Also allow for a number key argument. (closes #8542) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3143 +Problem: Vim9: A lambda may be compiled with the wrong context if it is + called from a profiled function. +Solution: Compile the lambda with and without profiling. (closes #8543) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3144 +Problem: Vim9: no error when using an invalid value for a line number. +Solution: Give an error if the string value is not recognized. + (closes #8536) +Files: src/errors.h, src/eval.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3145 +Problem: Vim9: profile test fails without profile feature. +Solution: Check the profile feature is present. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3146 +Problem: Vim9: line number wrong for :execute argument. +Solution: Use the line number of the :execute command itself. (closes #8537) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3147 +Problem: Vim9: profiling does not work with a nested function. +Solution: Also compile a nested function without profiling. (closes #8543) + Handle that compiling may cause the table of compiled functions to + change. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3148 +Problem: Vim9: function arg type check does not handle base offset. +Solution: Take the base offset into account when checking builtin function + argument types. +Files: src/evalfunc.c, src/vim9compile.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3149 (after 8.2.3141) +Problem: Some plugins have a problem with the error check for using + :command with -complete but without -nargs. +Solution: In legacy script only give a warning message. +Files: src/usercmd.c, src/message.c, src/proto/message.pro, + src/testdir/test_usercommands.vim + +Patch 8.2.3150 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add more type checks. (Yegappan Lakshmanan, closes #8545) +Files: src/evalfunc.c, src/testing.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3151 +Problem: Vim9: profiling fails if nested function is also profiled. +Solution: Use the compile type from the outer function. (closes #8543) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3152 +Problem: Vim9: accessing "s:" results in an error. +Solution: Do not try to lookup a script variable for "s:". (closes #8549) +Files: src/evalvars.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3153 +Problem: URLs with a dash in the scheme are not recognized. +Solution: Allow for a scheme with a dash, but not at the start or end. + (Tsuyoshi CHO, closes #8299) +Files: src/misc1.c, src/testdir/test_buffer.vim + +Patch 8.2.3154 +Problem: Vim9: some type checks for builtin functions fail. +Solution: Correct the type checks. (Yegappan Lakshmanan, closes #8551, + closes #8550) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3155 +Problem: Some option related code not covered by tests. +Solution: Add a few test cases. (Dominique Pell茅, closes #8552) +Files: src/testdir/test_options.vim, src/testdir/test_set.vim + +Patch 8.2.3156 +Problem: Vim9: term_getansicolors() test fails without +termguicolors. +Solution: Add a check for the feature. (Dominique Pell茅, closes #8555) +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3157 +Problem: Crypt test may fail on MS-Windows. +Solution: Ignore "[unix]" in the file message. (Christian Brabandt, + closes #8561) +Files: src/testdir/test_crypt.vim + +Patch 8.2.3158 +Problem: Strange error message when using islocked() with a number. + (Yegappan Lakshmanan) +Solution: Check that the name is empty. +Files: src/evalfunc.c, src/testdir/test_functions.vim + +Patch 8.2.3159 +Problem: Cursor displayed in wrong position after deleting line. +Solution: When deleting lines do not approximate botline. (fixes #8559) +Files: src/change.c + +Patch 8.2.3160 +Problem: 'breakindent' does not work well for bulleted and numbered lists. +Solution: Add the "list" entry to 'breakindentopt'. (Christian Brabandt, + closes #8564, closes #1661) +Files: runtime/doc/options.txt, src/indent.c, src/structs.h, + src/testdir/test_breakindent.vim + +Patch 8.2.3161 +Problem: Vim9: no error when reltime() has invalid arguments. +Solution: Add an error. (closes #8562) +Files: src/time.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3162 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add more type checks. (Yegappan Lakshmanan, closes #8560) +Files: runtime/doc/channel.txt, src/clientserver.c, src/cmdhist.c, + src/errors.h, src/evalfunc.c, src/evalwindow.c, src/filepath.c, + src/globals.h, src/popupwin.c, src/proto/typval.pro, src/sign.c, + src/strings.c, src/terminal.c, src/testdir/test_normal.vim, + src/testdir/test_reltime.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_expr.vim, src/testing.c, src/textprop.c, + src/time.c, src/typval.c + +Patch 8.2.3163 +Problem: Location list window may open a wrong file. +Solution: Also update the qf_ptr field. (Wei-Chung Wen, closes #8565, + closes #8566) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.3164 +Problem: MS-Windows: reported version lacks patchlevel, causing some update + tools to update too often. (Klaus Frank) +Solution: Add the patchlevel to the version. (Christian Brabandt) +Files: src/dosinst.c + +Patch 8.2.3165 +Problem: Vim9: in a || expression the error line number may be wrong. +Solution: Save and restore the line number when checking the type. + (closes #8569) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3166 +Problem: Vim9: nested autoload call error overruled by "Unknown error". +Solution: Check need_rethrow before giving an "Unknown error". + (closes #8568) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3167 +Problem: Get E12 in a job callback when searching for tags. (Andy Stewart) +Solution: Use the sandbox only for executing a command, not for searching. + (closes #8511) +Files: src/tag.c + +Patch 8.2.3168 +Problem: Vim9: type error for constant of type any. +Solution: Do add a runtime type check if a constant has type any. + (closes #8570) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3169 +Problem: Vim9: cannot handle nested inline function. +Solution: Check for nested inline function. (closes #8575) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.3170 +Problem: Illegal memory access in test. +Solution: Check pointer is not before the start of the line. +Files: src/userfunc.c + +Patch 8.2.3171 +Problem: Another illegal memory access in test. +Solution: Check pointer is after the start of the line. +Files: src/userfunc.c + +Patch 8.2.3172 +Problem: MzScheme test fails. (Christian Brabandt) +Solution: Correct function name. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3173 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add more type checks. (Yegappan Lakshmanan, closes #8581) +Files: src/diff.c, src/errors.h, src/evalfunc.c, src/globals.h, + src/job.c, src/proto/typval.pro, src/strings.c, src/terminal.c, + src/testdir/test_vim9_builtin.vim, src/typval.c + +Patch 8.2.3174 +Problem: Vim9: "legacy undo" finds "undo" variable. +Solution: Do not pass lookup function to find_ex_command(). (closes #8563) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3175 +Problem: Vim9: using illegal pointer with inline function inside a lambda. +Solution: Clear eval_tofree_cmdline when advancing to the next line. + (closes #8578) +Files: src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3176 +Problem: Vim9: no type error for comparing number with string. +Solution: Add a runtime type check. (closes #8571) +Files: src/typval.c, src/errors.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.3177 +Problem: Vim9: can not use "for _ in expr" at script level. +Solution: Skip assignment if the loop variable is "_". +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3178 +Problem: Vim9: the file name of an :import cannot be an expression. +Solution: Accept an expression that results in a string. Do not support + :import in a function. +Files: runtime/doc/vim9.txt, src/vim9script.c, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3179 +Problem: Vim9: cannot assign to an imported variable at script level. +Solution: Lookup imported items when assigning. +Files: src/evalvars.c, src/errors.h, src/eval.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3180 +Problem: Vim9: memory leak when concatenating to an imported string. +Solution: Clear the destination. +Files: src/evalvars.c + +Patch 8.2.3181 +Problem: Vim9: builtin function test fails without channel feature. +Solution: Add feature checks. (Dominique Pell茅, closes #8586) Make feature + checks more consistent. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3182 +Problem: Vim9: crash when using removing items from a constant list. + (Yegappan Lakshmanan) +Solution: When a list was allocated with items copy them. +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3183 +Problem: Duplicate error numbers. +Solution: Adjust the error numbers. +Files: src/errors.h, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3184 +Problem: Cannot add a digraph with a leading space. It is not easy to list + existing digraphs. +Solution: Add setdigraph(), setdigraphlist(), getdigraph() and + getdigraphlist(). (closes #8580) +Files: runtime/doc/digraph.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, src/digraph.c, src/evalfunc.c, + src/ex_docmd.c, src/globals.h, src/errors.h, + src/proto/digraph.pro, src/testdir/test_digraph.vim + +Patch 8.2.3185 +Problem: Vim9: start of inline function found in comment line. +Solution: Do not check for inline function in comment line. (closes #8589) +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3186 +Problem: Vim9: not all failures for import tested +Solution: Test more import failures +Files: src/errors.h, src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3187 +Problem: Vim9: popup timer callback is not compiled. +Solution: Compile the callback when creating the timer. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/popupwin.c + +Patch 8.2.3188 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks, also at runtime. (Yegappan + Lakshmanan, closes #8587) +Files: src/blob.c, src/channel.c, src/clientserver.c, src/cmdexpand.c, + src/cmdhist.c, src/dict.c, src/diff.c, src/errors.h, src/eval.c, + src/evalbuffer.c, src/evalfunc.c, src/evalvars.c, + src/evalwindow.c, src/filepath.c, src/globals.h, src/insexpand.c, + src/job.c, src/list.c, src/map.c, src/match.c, + src/proto/typval.pro, src/quickfix.c, src/search.c, src/sign.c, + src/strings.c, src/terminal.c, src/testdir/test_blob.vim, + src/testdir/test_gui.vim, src/testdir/test_vim9_builtin.vim, + src/testing.c, src/textprop.c, src/time.c, src/typval.c + +Patch 8.2.3189 +Problem: Vim9: error when using "try|". +Solution: Allow for "|" right after a command. +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3190 +Problem: Error messages are spread out. +Solution: Move error messages to errors.h and give them a clear name. +Files: src/globals.h, src/errors.h, src/buffer.c, src/debugger.c, + src/digraph.c, src/edit.c, src/ex_cmds.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_eval.c, src/gui.c, src/list.c, src/main.c, + src/map.c, src/match.c, src/quickfix.c, src/regexp.c, + src/regexp_bt.c, src/regexp_nfa.c, src/register.c, src/search.c, + src/session.c, src/spell.c, src/syntax.c, src/time.c, + src/userfunc.c, src/vim9execute.c, src/window.c + +Patch 8.2.3191 +Problem: Vim9: not enough code is tested. +Solution: Use CheckLegacyAndVim9Success() in more places. Fix uncovered + problems. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_listdict.vim + +Patch 8.2.3192 (after 8.2.3190) +Problem: Build failure with small version (Tony Mechelynck). +Solution: Remove stray #ifdef. +Files: src/errors.h + +Patch 8.2.3193 +Problem: screenpos() is wrong when the last line is partially visible and + 'display' is "lastline". +Solution: Also compute the position for a partially visible line. + (closes #8599) +Files: src/move.c, src/testdir/test_cursor_func.vim + +Patch 8.2.3194 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks, simplify some. (Yegappan + Lakshmanan, closes #8598) +Files: src/diff.c, src/evalbuffer.c, src/evalfunc.c, src/job.c, + src/proto/typval.pro, src/sign.c, src/terminal.c, + src/testdir/test_vim9_builtin.vim, src/typval.c + +Patch 8.2.3195 +Problem: Vim9: unclear error when passing too many arguments to lambda. +Solution: Pass the expression itself instead of "[expression]". + (closes #8604) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3196 +Problem: Vim9: bool expression with numbers only fails at runtime. +Solution: Check constant to be bool at compile time. (closes #8603) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3197 +Problem: Error messages are spread out. +Solution: Move a few more error messages to errors.h. +Files: src/globals.h, src/errors.h, src/edit.c, src/ex_cmds.c, + src/ex_docmd.c, src/evalvars.c, src/option.c, src/quickfix.c, + src/regexp_bt.c, src/regexp_nfa.c, src/regexp.c, src/undo.c, + src/vim9compile.c, src/vim9script.c + +Patch 8.2.3198 +Problem: Cannot use 'formatlistpat' for breakindent. +Solution: Use a negative list indent. (Maxim Kim, closes #8594) +Files: runtime/doc/options.txt, src/indent.c, + src/testdir/test_breakindent.vim + +Patch 8.2.3199 +Problem: Vim9: execution speed can be improved. +Solution: Make the break counter static. +Files: src/vim9execute.c + +Patch 8.2.3200 +Problem: Vim9: hard to guess where a type error is given. +Solution: Add the function name where possible. (closes #8608) +Files: src/dict.c, src/proto/dict.pro, src/eval.c, src/list.c, + src/vim9compile.c, src/vim9execute.c, src/structs.h, + src/vim9type.c, src/proto/vim9type.pro, src/if_py_both.h, + src/errors.h, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3201 (after 8.2.3200) +Problem: Crash in test. +Solution: Initialize "where". +Files: src/eval.c, src/evalvars.c + +Patch 8.2.3202 +Problem: Vim9: tests are only executed for legacy script. +Solution: Run more tests also for Vim9 script. Fix uncovered problems. +Files: src/vim9execute.c, src/ex_docmd.c, src/testdir/test_listdict.vim + +Patch 8.2.3203 +Problem: Vim9: compiled string expression causes type error. (Yegappan + Lakshmanan) +Solution: Remove the string type from the stack. +Files: src/vim9compile.c, src/evalfunc.c + +Patch 8.2.3204 +Problem: Display garbled when 'cursorline' is set and lines wrap. (Gabriel + Dupras) +Solution: Avoid inserting lines twice. (closes #7255) +Files: src/drawscreen.c, src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_cursorline_redraw_1.dump, + src/testdir/dumps/Test_cursorline_redraw_2.dump + +Patch 8.2.3205 +Problem: Coverity reports a null pointer dereference. +Solution: Change the logic to avoid Coverity gets confused. +Files: src/vim9compile.c + +Patch 8.2.3206 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks. (Yegappan Lakshmanan, closes #8611) +Files: runtime/doc/eval.txt, src/blob.c, src/cmdhist.c, src/dict.c, + src/errors.h, src/evalfunc.c, src/filepath.c, src/globals.h, + src/job.c, src/list.c, src/match.c, src/misc1.c, src/popupwin.c, + src/proto/typval.pro, src/sign.c, src/terminal.c, + src/testdir/test_blob.vim, src/testdir/test_vim9_builtin.vim, + src/typval.c + +Patch 8.2.3207 +Problem: Vim9: crash when compiling string fails. (Yegappan Lakshmanan) +Solution: Adjust the type stack length. +Files: src/vim9compile.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3208 +Problem: Dynamic library load error does not mention why it failed. +Solution: Add the error message. (Martin Tournoij, closes #8621) +Files: src/globals.h, src/if_cscope.c, src/if_lua.c, src/if_mzsch.c, + src/if_perl.xs, src/if_python.c, src/if_python3.c, src/if_ruby.c, + src/if_tcl.c, src/mbyte.c, src/os_win32.c, src/proto/os_win32.pro, + src/terminal.c + +Patch 8.2.3209 +Problem: Vim9: lambda doesn't find block-local variable. +Solution: Adjust how a script-local variable is found. (closes #8614) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3210 +Problem: Vim9: searchpair() sixth argument is compiled. (Yegappan + Lakshmanan) +Solution: Only compile the fifth argument. +Files: src/vim9compile.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3211 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks. Fix type check for matchaddpos(). + (Yegappan Lakshmanan, closes #8619) +Files: src/channel.c, src/evalfunc.c, src/evalvars.c, src/if_cscope.c, + src/job.c, src/proto/typval.pro, + src/testdir/test_vim9_builtin.vim, src/time.c, src/typval.c + +Patch 8.2.3212 +Problem: Vim9: execution speed can be improved. +Solution: Use __builtin_expect() to have the compiler produce better code. + (Dominique Pell茅, closes #8613) +Files: src/vim9execute.c + +Patch 8.2.3213 +Problem: NOCOMPOUNDSUGS entry in spell file not tested. +Solution: Add a test. (Dominique Pell茅, closes #8624) +Files: src/testdir/test_spellfile.vim + +Patch 8.2.3214 +Problem: MS-Windows: passing /D does not set the install location. +Solution: Adjust how the installer uses $VIM. Update the documentation. + (Christian Brabandt, Ken Takata, closes #8605) +Files: nsis/gvim.nsi, runtime/doc/os_win32.txt + +Patch 8.2.3215 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks. Sort the argument lists. + (Yegappan Lakshmanan, closes #8626) +Files: src/change.c, src/evalfunc.c, src/filepath.c, src/sound.c, + src/testdir/test_gui.vim, src/testdir/test_vim9_builtin.vim, + src/testing.c + +Patch 8.2.3216 +Problem: Vim9: crash when using variable in a loop at script level. +Solution: Do not clear the variable if a function was defined. + Do not create a new entry in sn_var_vals every time. + (closes #8628) +Files: src/eval.c, src/ex_eval.c, src/vim9script.c, src/userfunc.c, + src/evalvars.c, src/structs.h + +Patch 8.2.3217 (after 8.2.3216) +Problem: Build failure. +Solution: Add missing changes. +Files: src/globals.h + +Patch 8.2.3218 +Problem: When using xchacha20 crypt undo file is not removed. +Solution: Reset 'undofile' and delete the file. (Christian Brabandt, + closes #8630, closes #8467) +Files: src/bufwrite.c, src/crypt.c, src/proto/undo.pro, + src/testdir/test_crypt.vim, src/undo.c + +Patch 8.2.3219 +Problem: :find searches non-existing directories. +Solution: Check the path is not "..". Update help. (Christian Brabandt, + closes #8612, closes #8533) +Files: runtime/doc/editing.txt, src/findfile.c, + src/testdir/test_findfile.vim + +Patch 8.2.3220 +Problem: Test_term_setansicolors() fails in some configurations. +Solution: Check available features. (Dominique Pell茅, closes #8636) +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3221 +Problem: Vim9: argument types are not checked at compile time. +Solution: Add several more type checks. (Yegappan Lakshmanan, closes #8632) +Files: src/evalfunc.c, src/popupwin.c, src/proto/typval.pro, + src/testdir/test_assert.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_script.vim, src/testing.c, src/typval.c + +Patch 8.2.3222 +Problem: Vim9: cannot use loop variable later as lambda argument. +Solution: When not in function context check the current block ID. + (closes #8637) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3223 +Problem: Vim: using {} block in autoloaded omnifunc fails. +Solution: Allow using {} block when text is locked. (closes #8631) +Files: src/ex_cmds.h, src/testdir/test_ins_complete.vim + +Patch 8.2.3224 +Problem: Cannot call script-local function after :vim9cmd. (Christian J. + Robinson) +Solution: Skip over "<SNR>123". +Files: src/vim9compile.c, src/eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3225 +Problem: Incsearch highlighting is attempted halfway a mapping. +Solution: Only do incsearch highlighting if keys were typed or there is no + more typeahead. +Files: src/ex_getln.c + +Patch 8.2.3226 +Problem: New digraph functions use old naming scheme. +Solution: Use the digraph_ prefix. (Hirohito Higashi, closes #8642) +Files: runtime/doc/digraph.txt, runtime/doc/eval.txt, + runtime/doc/usr_41.txt, src/digraph.c, src/edit.c, src/errors.h, + src/evalfunc.c, src/proto/digraph.pro, + src/testdir/test_digraph.vim + +Patch 8.2.3227 +Problem: 'virtualedit' can only be set globally. +Solution: Make 'virtualedit' global-local. (Gary Johnson, closes #8638) +Files: runtime/doc/options.txt, src/buffer.c, src/change.c, + src/drawscreen.c, src/edit.c, src/misc2.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/optiondefs.h, + src/optionstr.c, src/proto/option.pro, src/register.c, + src/structs.h, src/testdir/test_virtualedit.vim + +Patch 8.2.3228 +Problem: Cannot use a simple block for the :command argument. (Maarten + Tournoij) +Solution: Recognize a simple {} block. (issue #8623) +Files: runtime/doc/map.txt, src/misc2.c, src/proto/misc2.pro, + src/usercmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.3229 +Problem: Vim9: runtime and compile time type checks are not the same. +Solution: Add more runtime type checks for builtin functions. (Yegappan + Lakshmanan, closes #8646) +Files: src/arglist.c, src/change.c, src/channel.c, src/cindent.c, + src/clientserver.c, src/cmdhist.c, src/dict.c, src/diff.c, + src/digraph.c, src/errors.h, src/eval.c, src/evalbuffer.c, + src/evalfunc.c, src/evalwindow.c, src/ex_docmd.c, src/ex_getln.c, + src/filepath.c, src/findfile.c, src/float.c, src/fold.c, + src/getchar.c, src/indent.c, src/insexpand.c, src/job.c, + src/json.c, src/list.c, src/mark.c, src/match.c, src/mbyte.c, + src/menu.c, src/misc1.c, src/move.c, src/popupwin.c, + src/proto/typval.pro, src/quickfix.c, src/search.c, src/sign.c, + src/sound.c, src/strings.c, src/terminal.c, + src/testdir/test_assert.vim, src/testdir/test_blob.vim, + src/testdir/test_execute_func.vim, + src/testdir/test_float_func.vim, src/testdir/test_functions.vim, + src/testdir/test_glob2regpat.vim, src/testdir/test_listdict.vim, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_script.vim, src/testing.c, src/textprop.c, + src/time.c, src/typval.c, src/undo.c + +Patch 8.2.3230 +Problem: Vim9: type error when function return type is not known yet. +Solution: When return type is unknown, use "any". (closes #8644) +Files: src/vim9compile.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3231 +Problem: Build failure with small features. +Solution: Adjust #ifdef. +Files: src/errors.h + +Patch 8.2.3232 (after 8.2.3229) +Problem: system() does not work without a second argument. +Solution: Do not require a second argument. (Yegappan Lakshmanan, + closes #8651, closes #8650) +Files: src/misc1.c, src/proto/typval.pro, + src/testdir/test_vim9_builtin.vim, src/typval.c + +Patch 8.2.3233 +Problem: prop_list() and prop_find() do not indicate the buffer for the + used type. +Solution: Add "type_bufnr" to the results. (closes #8647) +Files: runtime/doc/textprop.txt, src/testdir/test_textprop.vim, + src/textprop.c + +Patch 8.2.3234 +Problem: Crash when printing long string with Lua. +Solution: Remove lua_pop(). (Martin Tournoij, closes #8648) +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.3235 +Problem: Cannot use lambda in {} block in user command. (Martin Tournoij) +Solution: Do not go over the end of the lambda. +Files: src/userfunc.c, src/testdir/test_usercommands.vim + +Patch 8.2.3236 +Problem: mode() does not indicate using CTRL-O in Select mode. +Solution: Use "vs" and similar. (closes #8640) +Files: runtime/doc/eval.txt, src/globals.h, src/misc1.c, src/normal.c, + src/testdir/test_functions.vim + +Patch 8.2.3237 +Problem: When a builtin function gives an error processing continues. +Solution: In Vim9 script return FAIL in get_func_tv(). +Files: src/userfunc.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3238 +Problem: Vim9: error message does not indicate the location. +Solution: Add the relevant text. (issue #8634) +Files: src/errors.h, src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3239 +Problem: Vim9: no error using heredoc for a number variable. +Solution: Add a type check. (closes #8627) +Files: src/vim9compile.c, src/evalvars.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3240 +Problem: Lua print() does not work properly. +Solution: Put back lua_pop(). +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.3241 +Problem: Vim9: memory leak when function reports an error. +Solution: Clear the return value. +Files: src/userfunc.c + +Patch 8.2.3242 +Problem: Vim9: valgrind reports leaks in builtin function test. +Solution: Do not start a job. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3243 +Problem: MS-Windows: the "edit with multiple Vim" choice is not that + useful. +Solution: Change it to "Edit with multiple tabs". (Michael Soyka, + closes #8645) +Files: src/GvimExt/gvimext.cpp, src/GvimExt/gvimext.h + +Patch 8.2.3244 +Problem: Lua 5.3 print() with a long string crashes. +Solution: Use a growarray instead of a Lua buffer. (Yegappan Lakshmanan, + closes #8655) +Files: src/if_lua.c, src/misc2.c, src/proto/misc2.pro + +Patch 8.2.3245 +Problem: The crypt key may appear in a swap partition. +Solution: When using xchacha20 use sodium_mlock(). (Christian Brabandt, + closes #8657) +Files: src/buffer.c, src/crypt.c, src/errors.h, src/fileio.c, + src/memline.c, src/vim.h + +Patch 8.2.3246 +Problem: Memory use after free. +Solution: When clearing a string option set the pointer to "empty_option". +Files: src/option.c + +Patch 8.2.3247 +Problem: Using uninitialized memory when checking for crypt method. +Solution: Check the header length before using the salt and seed. +Files: src/fileio.c + +Patch 8.2.3248 +Problem: Vim9: error message for wrong input uses wrong line number. +Solution: Use the line number of the start of the command. (issue #8653) +Files: src/vim9script.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3249 +Problem: Vim9: error for re-imported function with default argument. +Solution: Do not check argument type if it is still unknown. (closes #8653) +Files: src/vim9type.c, src/proto/vim9type.pro, src/vim9script.c, + src/vim.h, src/eval.c, src/vim9execute.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3250 +Problem: MS-Windows: cannot build with libsodium. +Solution: Change FEAT_SODIUM into HAVE_SODIUM. (Christian Brabandt, + closes #8668, closes #8663) +Files: src/Make_mvc.mak + +Patch 8.2.3251 +Problem: Listing builtin_gui as an available terminal is confusing. +Solution: Do not list builtin_gui. (Christian Brabandt, closes #8669, + closes #8661) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.3252 +Problem: Duplicated code for adding buffer lines. +Solution: Move code to a common function. Also move map functions to map.c. + (Yegappan Lakshmanan, closes #8665) +Files: src/evalbuffer.c, src/evalfunc.c, src/map.c, src/proto/map.pro + +Patch 8.2.3253 +Problem: Channel test fails randomly. +Solution: Add a sleep after sending the "echoerr" command. (Michael Soyka) +Files: src/testdir/test_channel.vim, src/testdir/test_channel.py + +Patch 8.2.3254 +Problem: win_gettype() does not recognize a quickfix window. +Solution: Add "quickfix" and "loclist". (Yegappan Lakshmanan, closes #8676) +Files: runtime/doc/eval.txt, src/evalwindow.c, src/misc2.c, + src/testdir/test_quickfix.vim + +Patch 8.2.3255 +Problem: ci" finds following string but ci< and others don't. +Solution: When not inside an object find the start. (Connor Lane Smit, + closes #8670) +Files: src/search.c, src/testdir/test_textobjects.vim, src/textobject.c + +Patch 8.2.3256 +Problem: Executable test may fail on new Ubuntu system. +Solution: Consider /usr/bin/cat and /bin/cat the same. +Files: src/testdir/test_functions.vim + +Patch 8.2.3257 +Problem: Calling prop_find() with -1 for ID gives erroneous error. (Naohiro + Ono) +Solution: When passing -1 use -2. (closes #8674) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.3258 +Problem: Error messages have the wrong text. +Solution: Adjust the error message. +Files: src/errors.h, src/typval.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3259 +Problem: When 'indentexpr' causes an error the did_throw flag may remain + set. +Solution: Reset did_throw and show the error. (closes #8677) +Files: src/indent.c, src/ex_docmd.c, src/proto/ex_docmd.pro + +Patch 8.2.3260 +Problem: Build failure with small features. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.3261 +Problem: Vim9: when compiling repeat(123, N) return type is number. +Solution: Make return type a string. (closes #8664) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3262 +Problem: Build failure when ABORT_ON_INTERNAL_ERROR is defined. +Solution: Adjust how estack_len_before is used. +Files: src/ex_docmd.c + +Patch 8.2.3263 +Problem: Vim9: "..=" does not accept same types as the ".." operator. +Solution: Convert value to string like ".." does. (issue #8664) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3264 (after 8.2.3263) +Problem: Vim9: assign test fails. +Solution: Add missing change. +Files: src/eval.c + +Patch 8.2.3265 +Problem: Smartcase does not work correctly in very magic pattern. +Solution: Take the magicness into account when skipping over regexp items. + (Christian Brabandt, closes #8682, closes #7845) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.2.3266 +Problem: Vim9: assignment with two indexes may check next line. +Solution: Limit the number of lines to avoid checking the next line when + assigning to a LHS subscript. (closes #8660) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3267 +Problem: Vim9: crash when disassembling a function that uses a deleted + script variable. +Solution: Check the variable still exists. (closes #8683) +Files: src/vim9execute.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3268 +Problem: Cannot use a block with :autocmd like with :command. +Solution: Add support for a {} block after :autocmd. (closes #8620) +Files: runtime/doc/autocmd.txt, runtime/doc/map.txt, src/autocmd.c, + src/proto/autocmd.pro, src/usercmd.c, src/proto/usercmd.pro, + src/ex_docmd.c, src/vim.h, src/testdir/test_autocmd.vim + +Patch 8.2.3269 +Problem: Vim9: wrong argument check for partial. (Naohiro Ono) +Solution: Handle getting return type without arguments. Correct the minimal + number of arguments for what is included in the partial. + (closes #8667) +Files: src/evalfunc.c, src/vim9type.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3270 +Problem: prop_find() finds property with ID -2. +Solution: Use a separate flag to indicate an ID was specified. (issue #8674) +Files: src/textprop.c + +Patch 8.2.3271 +Problem: Vim9: cannot use :command or :au with a block in a :def function. +Solution: Recognize the start of the block. +Files: src/userfunc.c, src/usercmd.c, src/ex_docmd.c, + src/proto/ex_docmd.pro, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3272 +Problem: Cannot use id zero with prop_find(). (Naohiro Ono) +Solution: Also accept id zero. +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.3273 +Problem: Autocmd test fails. +Solution: Require white space before the "{" that starts a block. +Files: src/userfunc.c + +Patch 8.2.3274 +Problem: Macro for printf format check can be simplified. +Solution: Add ATTRIBUTE_FORMAT_PRINTF(). (Dominique Pell茅, issue #8635) +Files: src/channel.c, src/gui_xim.c, src/if_mzsch.c, src/nbdebug.c, + src/nbdebug.h, src/netbeans.c, src/proto.h, src/term.c, src/vim.h, + src/vim9execute.c + +Patch 8.2.3275 +Problem: Optimizer can use hints about ga_grow() normally succeeding. +Solution: Use GA_GROW_FAILS() and GA_GROW_OK() in several places. (Dominique + Pell茅, issue #8635) +Files: src/arglist.c, src/macros.h, src/vim9execute.c, src/vim9compile.c + +Patch 8.2.3276 +Problem: Vim9: exists() can only be evaluated at runtime. +Solution: Evaluate at compile time for option name literals. (closes #8437) +Files: src/vim9compile.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3277 (after 8.2.3276) +Problem: Vim9: compiled has() does not work properly. +Solution: Fix check for has() vs exists(). +Files: src/vim9compile.c + +Patch 8.2.3278 +Problem: Vim9: error when adding 1 to float. +Solution: Accept t_number_bool. (closes #8687) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3279 +Problem: Vim9: cannot use block in cmdline window. +Solution: Add EX_CMDWIN to the CMD_block flags. (closes #8689) +Files: src/ex_cmds.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3280 +Problem: 'virtualedit' local to buffer is not the best solution. +Solution: Make it window-local. (Gary Johnson, closes #8685) +Files: runtime/doc/options.txt, src/buffer.c, src/drawscreen.c, + src/ops.c, src/option.c, src/option.h, src/optionstr.c, + src/structs.h, src/testdir/test_virtualedit.vim + +Patch 8.2.3281 +Problem: Vim9: TODO items in tests can be taken care of. +Solution: Update test for now working functionality. (closes #8694) +Files: src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.3282 +Problem: Vim9: error about using -complete without -nargs is confusing. +Solution: Change the wording. +Files: src/usercmd.c, src/errors.h + +Patch 8.2.3283 +Problem: Julia filetype is not recognized +Solution: Add filetype detection. (Christian Clason, closes #8700) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3284 +Problem: No error for insert() or remove() changing a locked blob. +Solution: Check a blob is not locked before changing it. (Sean Dewar, + closes #8696) +Files: src/blob.c, src/errors.h, src/eval.c, src/list.c, + src/proto/blob.pro, src/testdir/test_blob.vim, + src/testdir/test_eval_stuff.vim + +Patch 8.2.3285 +Problem: Scdoc filetype is not recognized. +Solution: Add filetype detection. (Gregory Anders, closes #8701) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3286 +Problem: win_enter_ext() has too many boolean arguments. +Solution: use one flags argument with defined values. +Files: src/window.c + +Patch 8.2.3287 +Problem: Channel events not handled in BufEnter autocommand. +Solution: Decrement dont_parse_messages earlier. (Tim Pope, closes #8697) +Files: src/window.c, src/testdir/test_channel.vim + +Patch 8.2.3288 +Problem: Cannot easily access namespace dictionaries from Lua. +Solution: Add vim.g, vim.b, etc. (Yegappan Lakshmanan, closes #8693, + from NeoVim) +Files: runtime/doc/if_lua.txt, src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.3289 (after 8.2.3287) +Problem: Compiler warning for unused variable with small features. +Solution: Rearrange #ifdefs. +Files: src/window.c + +Patch 8.2.3290 +Problem: Vim9: compiling dict may use pointer after free and leak memory on + failure. +Solution: Pass a pointer to generate_PUSHS(). (Zdenek Dohnal, closes #8699) +Files: src/vim9compile.c + +Patch 8.2.3291 +Problem: Coverity warns for not checking return value. +Solution: If dict_add() fails give an error message. +Files: src/if_lua.c, src/testdir/test_lua.vim + +Patch 8.2.3292 +Problem: Underscore in very magic pattern causes a hang. Pattern with \V + are case sensitive. (Yutao Yuan) +Solution: Adjust condition for magicness and advance pointer. (Christian + Brabandt, closes #8707, closes #8704, closes #8705) +Files: src/search.c, src/testdir/test_search.vim + +Patch 8.2.3293 +Problem: Finding completions may cause an endless loop. +Solution: Use a better way to check coming back where the search started. + (Andy Gozas, closes #8672, closes #8671) +Files: src/insexpand.c, src/testdir/Make_all.mak, + src/testdir/test_ins_complete_no_halt.vim + +Patch 8.2.3294 +Problem: Lua: memory leak when adding dict item fails. +Solution: Free the typval and the dict item. +Files: src/if_lua.c + +Patch 8.2.3295 +Problem: 'cursorline' should not apply to 'breakindent'. +Solution: Make 'cursorline' apply to 'breakindent' and 'showbreak' + consistently. (closes #8684) +Files: src/drawline.c, src/testdir/dumps/Test_Xcursorline_19.dump, + src/testdir/dumps/Test_Xcursorline_20.dump, + src/testdir/dumps/Test_Xcursorline_21.dump, + src/testdir/dumps/Test_Xcursorline_22.dump, + src/testdir/dumps/Test_Xcursorline_23.dump, + src/testdir/dumps/Test_Xcursorline_24.dump, + src/testdir/dumps/Test_diff_with_cul_bri_01.dump, + src/testdir/dumps/Test_diff_with_cul_bri_02.dump, + src/testdir/dumps/Test_diff_with_cul_bri_03.dump, + src/testdir/dumps/Test_diff_with_cul_bri_04.dump, + src/testdir/test_cursorline.vim, src/testdir/test_diffmode.vim + +Patch 8.2.3296 +Problem: Vim9: cannot add a number to a float. +Solution: Accept a number if the destination is a float. (closes #8703) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3297 +Problem: Cannot use all commands inside a {} block after :command and + :autocmd. +Solution: Do consider \n to separate commands. (closes #8620) +Files: runtime/doc/map.txt, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/ex_eval.c, src/proto/ex_eval.pro, src/eval.c, src/evalvars.c, + src/ex_cmds.c, src/syntax.c, src/userfunc.c, src/vim9compile.c, + src/vim9script.c, src/errors.h, src/testdir/test_autocmd.vim, + src/testdir/test_usercommands.vim + +Patch 8.2.3298 +Problem: Build failure with small features. +Solution: Add #ifdef. +Files: src/ex_docmd.c + +Patch 8.2.3299 +Problem: Vim9: exists() does not handle much at compile time. +Solution: Handle variable names. (closes #8688) +Files: src/vim9compile.c, src/evalfunc.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3300 +Problem: Lua: can only execute one Vim command at a time. Not easy to get + the Vim version. +Solution: Make vim.command() accept multiple lines. Add vim.version(). + (Yegappan Lakshmanan, closes #8716) +Files: runtime/doc/if_lua.txt, src/evalfunc.c, src/if_lua.c, + src/proto/evalfunc.pro, src/testdir/test_lua.vim, + src/testdir/test_shell.vim + +Patch 8.2.3301 +Problem: Memory allocation functions don't have their own place. +Solution: Move memory allocation functions to alloc.c. (Yegappan + Lakshmanan, closes #8717) +Files: Filelist, src/Make_ami.mak, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/Make_vms.mms, src/Makefile, src/README.md, + src/alloc.c, src/misc2.c, src/proto.h, src/proto/alloc.pro, + src/proto/misc2.pro + +Patch 8.2.3302 +Problem: Coverity is not run from github. +Solution: Add a coverity script. (James McCoy, closes #8714) +Files: .github/workflows/coverity.yml, Filelist + +Patch 8.2.3303 +Problem: Some structures could be smaller. +Solution: Rearrange members to reduce size. (Dominique Pell茅, closes #8725) +Files: src/structs.h, src/vim9.h, src/vim9execute.c + +Patch 8.2.3304 +Problem: Popup window title with wide characters is truncated. +Solution: Use vim_strsize() instead of MB_CHARLEN(). (Naruhiko Nishino, + closes #8721) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_multibytetitle.dump + +Patch 8.2.3305 +Problem: Vim9: :finally in skipped block not handled correctly. +Solution: Check whether :finally is in a skipped block. (Naruhiko Nishino, + closes #8724) +Files: src/ex_eval.c, src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3306 +Problem: Unexpected "No matching autocommands". +Solution: Do not give the message when aborting. Mention the arguments in + the message. (closes #8690) +Files: src/autocmd.c, + +Patch 8.2.3307 +Problem: Vim9: :echoconsole cannot access local variables. +Solution: Handle like other :echo commands. (closes #8708) +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3308 +Problem: Vim9: no runtime check for argument type if a function only has + varargs. +Solution: Also check argument types if uf_va_type is set. (closes #8715) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3309 +Problem: Vim9: divide by zero causes a crash. +Solution: Give an error message. (closes #8727) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3310 +Problem: Vim9: unpack assignment does not mention source of type error. +Solution: Mention the argument number. (closes #8719) +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3311 +Problem: Vim9: check for DO_NOT_FREE_CNT is very slow. +Solution: Move to a separate function so it can be skipped by setting + $TEST_SKIP_PAT. +Files: src/testdir/test_vim9_expr.vim, src/testdir/runtest.vim + +Patch 8.2.3312 +Problem: Vim9: after "if false" line breaks in expression not skipped. +Solution: Do parse the expression. (closes #8723) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3313 +Problem: Unused code in win_exchange() and frame_remove(). +Solution: Remove the code. (closes #8728) +Files: src/window.c + +Patch 8.2.3314 +Problem: Behavior of exists() in a :def function is unpredictable. +Solution: Add exists_compiled(). +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/errors.h, src/vim9compile.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3315 +Problem: Cannot use single quote in a float number for readability. +Solution: Support single quotes like in numbers. (closes #8713) +Files: src/typval.c, src/float.c, src/proto/float.pro, src/json.c, + src/viminfo.c, src/testdir/test_float_func.vim + +Patch 8.2.3316 (after 8.2.3315) +Problem: Float test fails. +Solution: Add missing change. +Files: src/evalfunc.c + +Patch 8.2.3317 +Problem: Vim9: No error for missing white space before return type. +Solution: Check for white space. (closes #8733) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3318 +Problem: Vim9: cannot ignore quotes in number at the command line. +Solution: Use in_vim9script() so that after ":vim9" quotes are ignored. +Files: src/typval.c, src/testdir/test_float_func.vim + +Patch 8.2.3319 +Problem: Coverity action on github does not work. +Solution: Remove undefined $SRCDIR. (James McCoy, closes #8739) +Files: .github/workflows/coverity.yml + +Patch 8.2.3320 +Problem: Some local functions are not static. +Solution: Add "static". Move snprintf() related code to strings.c. + (Yegappan Lakshmanan, closes #8734) +Files: src/alloc.c, src/channel.c, src/dict.c, src/digraph.c, src/edit.c, + src/ex_docmd.c, src/getchar.c, src/job.c, src/list.c, + src/message.c, src/profiler.c, src/proto/channel.pro, + src/proto/dict.pro, src/proto/digraph.pro, src/proto/edit.pro, + src/proto/ex_docmd.pro, src/proto/getchar.pro, src/proto/job.pro, + src/proto/list.pro, src/proto/profiler.pro, src/proto/spell.pro, + src/proto/vim9compile.pro, src/proto/vim9script.pro, + src/proto/vim9type.pro, src/spell.c, src/strings.c, + src/vim9compile.c, src/vim9script.c, src/vim9type.c, src/window.c + +Patch 8.2.3321 +Problem: Some code is not tested. +Solution: Add some more tests. (Dominique Pell茅, closes #8735) +Files: src/testdir/test_excmd.vim, src/testdir/test_writefile.vim + +Patch 8.2.3322 +Problem: Vim9: checking type of dict does not check member type. +Solution: When getting the type of a typval use dv_type and lv_type. + (closes #8732) +Files: src/vim9type.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3323 +Problem: Help tag for exists_compiled() is wrong. (Maxim Kim) +Solution: Adjust the help tag. +Files: runtime/doc/eval.txt + +Patch 8.2.3324 +Problem: Vim9: Cannot use :silent with :endwhile. +Solution: Allow for using the :silent modifier. (closes #8737) +Files: src/ex_eval.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3325 +Problem: Digraph test fails when LC_ALL is set to "C". +Solution: When restoring 'encoding' set it to "utf-8". (closes #8742) +Files: src/testdir/test_digraph.vim + +Patch 8.2.3326 +Problem: Vim9: no error passing an empty list of the wrong type. +Solution: Use ISN_SETTYPE also for "list<any>". (closes #8732) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3327 +Problem: No check for sysconf() failing. +Solution: If sysconf() fails use SIGSTKSZ for the signal stack size. + (Zdenek Dohnal, closes #8743) +Files: src/os_unix.c + +Patch 8.2.3328 +Problem: Coverity error for not checking return value. +Solution: Check value is not negative. +Files: src/spellfile.c + +Patch 8.2.3329 +Problem: v_lock not set when getting value of environment variable. +Solution: Set v_lock to zero. +Files: src/typval.c + +Patch 8.2.3330 +Problem: Coverity reports using uninitialized field. +Solution: Initialize the field early. +Files: src/tag.c + +Patch 8.2.3331 +Problem: Coverity warns for using value without boundary check. +Solution: Add a boundary check. +Files: src/viminfo.c + +Patch 8.2.3332 +Problem: Vim9: cannot assign to range in list. +Solution: Implement overwriting a list range. +Files: src/vim9compile.c, src/vim9execute.c, src/list.c, + src/proto/list.pro, src/eval.c, src/proto/eval.pro, + src/testdir/test_listdict.vim, src/testdir/test_vim9_assign.vim + +Patch 8.2.3333 +Problem: Vim9: not enough tests run with Vim9. +Solution: Run a few more tests in Vim9 script and :def function. +Files: src/testdir/test_listdict.vim, src/testdir/vim9.vim + +Patch 8.2.3334 +Problem: Vim9: not enough tests run with Vim9. +Solution: Run a few more tests in Vim9 script and :def function. Fix + islocked(). Fix error for locking local variable. +Files: src/evalfunc.c, src/vim9compile.c, src/testdir/test_listdict.vim + +Patch 8.2.3335 +Problem: Vim9: not enough tests run with Vim9. +Solution: Run a few more tests in Vim9 script and :def function. Fix that + items(), keys() and values() return zero for a NULL dict. + Make join() return an empty string for a NULL list. Make sort() + return an empty list for a NULL list. +Files: src/dict.c, src/list.c, src/testdir/test_listdict.vim, + src/testdir/vim9.vim + +Patch 8.2.3336 +Problem: Behavior of negative index in list change changed. (Naruhiko + Nishino) +Solution: Only change it for Vim9 script. (closes #8749) +Files: src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.3337 +Problem: Completing "call g:" returns entries with just "g:". (Naohiro Ono) +Solution: Skip empty strings returned by get_user_func_name(). (closes #8753) +Files: src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 8.2.3338 +Problem: Vim9: no type check when assigning a list range. (Naohiro Ono) +Solution: Check the member type. (closes #8750) +Files: src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.3339 +Problem: Vim9: cannot lock a member in a local dict. +Solution: Get the local dict from the stack and pass it to get_lval(). +Files: src/eval.c, src/vim9execute.c, src/vim9compile.c, src/vim9.h, + src/globals.h, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3340 (after 8.2.3339) +Problem: Accessing uninitialized pointer. +Solution: Set pointer to NULL. +Files: src/eval.c + +Patch 8.2.3341 +Problem: Vim9: function call aborted despite try/catch. (Naohiro Ono) +Solution: Ignore error caught by try/catch. (closes #8755) +Files: src/evalvars.c, src/vim9execute.c, src/message.c, src/time.c, + src/globals.h, src/testdir/vim9.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.3342 (after 8.2.3341) +Problem: Test for :let errors fails. +Solution: Adjust the test and how to avoid a second error message. +Files: src/evalvars.c, src/testdir/test_let.vim + +Patch 8.2.3343 (after 8.2.3342) +Problem: Vim9: autoload test fails. +Solution: Adjust the way the second message is avoided +Files: src/evalvars.c + +Patch 8.2.3344 (after 8.2.3343) +Problem: Vimscript test fails. +Solution: Have test verify first error instead of second +Files: src/testdir/test_vimscript.vim + +Patch 8.2.3345 +Problem: Some code not covered by tests. +Solution: Add a few more tests. (Dominique Pell茅, closes #8757) +Files: src/testdir/test_arglist.vim, src/testdir/test_cmdline.vim, + src/testdir/test_spellfile.vim, src/testdir/test_substitute.vim + +Patch 8.2.3346 +Problem: Vim9: no error for using "." for concatenation after ":vim9cmd". + (Naohiro Ono) +Solution: Check for Vim9 script syntax. (closes #8756) +Files: src/eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3347 +Problem: Check for legacy script is incomplete. (Naohiro Ono) +Solution: Also check the :legacy modifier. Use for string concatenation + with "." and others (issue #8756) +Files: src/vim9script.c, src/proto/vim9script.pro, src/eval.c, + src/typval.c, src/evalvars.c, src/errors.h, src/ex_docmd.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3348 +Problem: line2byte() returns wrong value after adding textprop. (Yuto + Kimura) +Solution: Reduce the length by the size of the text property. (closes #8759) +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.2.3349 (after 8.2.3347) +Problem: Eval test for scriptversion fails. +Solution: Fix off-by-one error. +Files: src/vim9script.c + +Patch 8.2.3350 (after 8.2.3348) +Problem: Text properties test fails on MS-Windows. +Solution: Set fileformat to unix. +Files: src/testdir/test_textprop.vim + +Patch 8.2.3351 +Problem: Vim9: using a function by name may delete it. (Naohiro Ono) +Solution: Increment the reference count when using a function by name. + (closes #8760) +Files: src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3352 +Problem: Vim9: error for nested :enddef has wrong line number. +Solution: Compute the line number. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3353 +Problem: Vim9: type of argument for negate not checked at compile time. +Solution: Add a compile time check. +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3354 +Problem: Build failure with +byte_offset but without +textprop. (John + Marriott) +Solution: Adjust the #ifdef. +Files: src/memline.c + +Patch 8.2.3355 +Problem: MS-Windows: compiler warning for 64-32 bit conversion. +Solution: Add type casts. +Files: src/memline.c + +Patch 8.2.3356 +Problem: Adding many text properties requires a lot of function calls. +Solution: Add the prop_add_list() function. (Yegappan Lakshmanan, + closes #8751) +Files: runtime/doc/eval.txt, runtime/doc/textprop.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/textprop.pro, + src/testdir/test_textprop.vim, src/testdir/test_vim9_builtin.vim, + src/textprop.c + +Patch 8.2.3357 +Problem: Crash when 'virtualedit' is set and window is narrow. +Solution: Check that width is not zero. (closes #8767) +Files: src/misc2.c, src/testdir/test_number.vim + +Patch 8.2.3358 +Problem: Structurizr files are not recognized. +Solution: Recognize the file by contents. (Bastian Venthur, closes #8764) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3359 +Problem: Vim9: error for type when variable is not set. +Solution: Give a specific error for a NULL function. (closes #8773) +Files: src/vim9type.c, src/errors.h, src/testdir/test_vim9_func.vim + +Patch 8.2.3360 +Problem: User function completion fails with dict function. +Solution: Do not stop sequencing through the list if user functions when + encountering an empty name. (Naohiro Ono, closes #8765, + closes #8774) +Files: src/evalfunc.c, src/testdir/test_cmdline.vim + +Patch 8.2.3361 +Problem: Vim9: crash with nested :while. +Solution: Handle skipping better. (Naruhiko Nishino, closes #8778) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3362 +Problem: Buffer overflow when completing long tag name. +Solution: Allocate the buffer dynamically. (Gregory Anders, closes #8769) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.2.3363 +Problem: When :edit reuses the current buffer the alternate file is set to + the same buffer. +Solution: Only set the alternate file when not reusing the buffer. + (closes #8783) +Files: src/ex_cmds.c, src/testdir/test_undo.vim, + src/testdir/test_cmdline.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.3364 +Problem: Vim9: crash when :for is skipped. +Solution: Skip more code generation. (Naruhiko Nishino, closes #8777) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3365 +Problem: Vim9: cannot use option for all operations. +Solution: Recognize more operations. (closes #8779) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/ex_docmd.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3366 +Problem: Vim9: debugging elseif does not stop before condition. +Solution: Move debug statement to after the jump. (closes #8781) +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3367 +Problem: Vim9: :@r executing a register is inconsistent. +Solution: Use "@r" as the start of an expression. (issue #8779) +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3368 +Problem: Not all Racket files are recognized. +Solution: Also recognize .rktl and .rktd files. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3369 +Problem: Auto formatting after "cw" leaves cursor in wrong spot. +Solution: Do not auto-format after the delete. (closes #8789) +Files: src/ops.c, src/testdir/test_textformat.vim + +Patch 8.2.3370 +Problem: Vim9: no check for white space before type in declaration. + (Naohiro Ono) +Solution: Check for white space like in a compiled function. (closes #8785) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3371 +Problem: Vim9: :$ENV cannot be followed by ->func() in next line. +Solution: Use "$ENV" as the start of an expression. (closes #8790) +Files: src/ex_docmd.c, src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3372 +Problem: line2byte() value wrong when adding a text property. (Yuto Kimura) +Solution: Adjust length for text property. (closes #8772) Also fix it for + deleting a line. +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.2.3373 (after 8.2.3372) +Problem: text property test fails on MS-Windows. +Solution: Set fileformat to "unix" +Files: src/testdir/test_textprop.vim + +Patch 8.2.3374 +Problem: Pyret files are not recognized. +Solution: Recognize .arr files as Pyret. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3375 +Problem: Using uninitialized memory. +Solution: Initialize textprop_save_len. +Files: src/memline.c + +Patch 8.2.3376 +Problem: Vim9: no warning that "@r" does not do anything. +Solution: Give a "no effect" error. (closes #8779) +Files: src/ex_eval.c, src/proto/ex_eval.pro, src/vim9compile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3377 +Problem: Vim9: :disass completion does not understand "s:". +Solution: Expand "s:" to a pattern. (closes #8780) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3378 +Problem: MS-Windows: completing environment variables with % is wrong. +Solution: Only complete environment variables with $. (Albert Liu, + closes #8791) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3379 +Problem: Crash when using NULL job. +Solution: Copy static string into buffer. (issue #8260) +Files: src/job.c, src/testdir/test_channel.vim + +Patch 8.2.3380 +Problem: Crash when using NULL string for funcref(). +Solution: Check for NULL argument. (issue #8260) +Files: src/evalfunc.c, src/testdir/test_expr.vim + +Patch 8.2.3381 +Problem: Crash when using NULL list with sign functions. +Solution: Handle a NULL list like an empty list. (issue #8260) +Files: src/globals.h, src/testdir/test_signs.vim + +Patch 8.2.3382 +Problem: Crash when getting the type of a NULL partial. +Solution: Check for NULL. (closes #8260) +Files: src/vim9type.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3383 +Problem: Vim9: completion for :disassemble adds parenthesis. +Solution: Don't add parenthesis. (Naohiro Ono, closes #8802) +Files: src/userfunc.c, src/testdir/test_cmdline.vim + +Patch 8.2.3384 +Problem: Cannot disable modeline for an individual file. +Solution: Recognize "nomodeline" in a modeline. (Hu Jialun, closes #8798) +Files: runtime/doc/options.txt, src/buffer.c, + src/testdir/test_modeline.vim + +Patch 8.2.3385 +Problem: Escaping for fish shell does not work properly. +Solution: Insert a backslash before a backslash. (Jason Cox, closes #8810) +Files: runtime/doc/eval.txt, src/strings.c, src/testdir/test_shell.vim + +Patch 8.2.3386 +Problem: Using uninitialized memory. +Solution: Initialize the rm_ic field. (Dominique Pell茅, closes #8800) +Files: src/indent.c + +Patch 8.2.3387 +Problem: Compiler warning for non-static function. +Solution: Make the function static. (Dominique Pell茅, closes #8816) +Files: src/strings.c + +Patch 8.2.3388 +Problem: fnamemodify('path/..', ':p') differs from using 'path/../'. (David + Briscoe) +Solution: Include the "/.." in the directory name. (closes #8808) +Files: src/os_unix.c, src/testdir/test_fnamemodify.vim + +Patch 8.2.3389 +Problem: Cannot stop insert mode completion without side effects. +Solution: Add CTRL-X CTRL-Z. (closes #8821) +Files: runtime/doc/index.txt, runtime/doc/insert.txt, src/insexpand.c, + src/testdir/test_ins_complete.vim + +Patch 8.2.3390 +Problem: Included xdiff code is outdated. +Solution: Sync with xdiff in git 2.33. (Christian Brabandt, closes #8431) +Files: src/diff.c, src/xdiff/README.txt, src/xdiff/xdiff.h, + src/xdiff/xdiffi.c, src/xdiff/xdiffi.h, src/xdiff/xemit.c, + src/xdiff/xemit.h, src/xdiff/xhistogram.c, src/xdiff/xinclude.h, + src/xdiff/xmacros.h, src/xdiff/xpatience.c, src/xdiff/xprepare.h, + src/xdiff/xtypes.h, src/xdiff/xutils.c, src/xdiff/xutils.h + +Patch 8.2.3391 +Problem: Crash with combination of 'linebreak' and other options. +Solution: Avoid n_extra to become negative. (Christian Brabandt, + closes #8817) +Files: src/drawline.c + +Patch 8.2.3392 +Problem: augroup completion escapes regexp pattern characters. +Solution: Do not escape the augroup name. (closes #8826) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3393 +Problem: Escaping for fish shell is skipping some characters. +Solution: Escape character after backslash if needed. (Jason Cox, + closes #8827) +Files: src/strings.c, src/testdir/test_shell.vim + +Patch 8.2.3394 +Problem: Filler lines are wrong when changing text in diff mode. +Solution: Don't change the filler lines on every change. Check + scrollbinding when updating the filler lines. (closes #8809) +Files: src/move.c, src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_scroll_change_01.dump, + src/testdir/dumps/Test_diff_scroll_change_02.dump + +Patch 8.2.3395 +Problem: Vim9: expression breakpoint not checked in :def function. +Solution: Always compile a function for debugging if there is an expression + breakpoint. (closes #8803) +Files: src/vim9execute.c, src/proto/vim9execute.pro, src/debugger.c, + src/proto/debugger.pro, src/vim.h, src/vim9.h, + src/testdir/test_debugger.vim + +Patch 8.2.3396 +Problem: When libcall() fails invalid pointer may be used. +Solution: Initialize the string to NULL. (Yasuhiro Matsumoto, closes #8829) +Files: src/evalfunc.c + +Patch 8.2.3397 +Problem: No test for what 8.2.3391 fixes. +Solution: Add a test. (Yegappan Lakshmanan, closes #8828) +Files: src/testdir/test_breakindent.vim + +Patch 8.2.3398 +Problem: Html text objects are not fully tested. +Solution: Add tests for dbcs encoding and different number of backslashes. + (Dominique Pell茅, closes #8831) +Files: src/testdir/test_textobjects.vim + +Patch 8.2.3399 +Problem: Octave files are not recognized. +Solution: Detect Octave files. (Doug Kearns) +Files: runtime/autoload/dist/ft.vim, runtime/doc/filetype.txt, + runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3400 +Problem: ":z!" is not supported. +Solution: Make ":z!" work and add tests. (Dominique Pell茅, closes #8836) + Use display height instead of current window height. +Files: runtime/doc/various.txt, src/ex_cmds.h, src/ex_cmds.c, + src/testdir/test_ex_z.vim + +Patch 8.2.3401 +Problem: Vim9: cannot use a negative count with finddir() and findfile(). +Solution: Adjust the return type. (closes #8776) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3402 +Problem: Invalid memory access when using :retab with large value. +Solution: Check the number is positive. +Files: src/indent.c, src/option.c, src/optionstr.c, + src/testdir/test_retab.vim + +Patch 8.2.3403 (after 8.2.3402) +Problem: Memory leak for :retab with invalid argument. +Solution: Free the memory. Make error messages consistent. +Files: src/indent.c + +Patch 8.2.3404 +Problem: Vim9: no error for white space before "(". +Solution: Give an error, like in a compiled function. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3405 +Problem: Cannot have a comment line in a {} block of a user command. +Solution: Continue after the line break. (closes #8837) +Files: src/ex_docmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.3406 +Problem: On some systems tests fail without _REENTRANT. (Elimar + Riesebieter) +Solution: Add -D_REENTRANT in configure. (closes #7402) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.3407 +Problem: Using uninitialized memory with "let g:['bar'] = 2". +Solution: Initialize v_type of a new dict item. +Files: src/dict.c + +Patch 8.2.3408 +Problem: Can delete a numbered function. (Naohiro Ono) +Solution: Disallow deleting a numbered function. (closes #8760) +Files: src/userfunc.c, src/testdir/test_user_func.vim + +Patch 8.2.3409 +Problem: Reading beyond end of line with invalid utf-8 character. +Solution: Check for NUL when advancing. +Files: src/regexp_nfa.c, src/testdir/test_regexp_utf8.vim + +Patch 8.2.3410 +Problem: Crash with linebreak, listchars and large tabstop. +Solution: Account for different size listchars for a tab. (closes #8841) +Files: src/drawline.c, src/testdir/test_listlbr_utf8.vim + +Patch 8.2.3411 +Problem: Vim9: crash when using base name of import. (Naohiro Ono) +Solution: Check the import flags. (closes #8843) +Files: src/evalvars.c, src/errors.h, src/testdir/test_vim9_script.vim + +Patch 8.2.3412 (after 8.2.3411) +Problem: Vim9: importing the wrong file. +Solution: Correct the file name. Delete the file afterwards. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3413 +Problem: Vim9: too many characters are allowed in import name. +Solution: Disallow ':' and '#', check for white space. (closes #8845) +Files: src/vim9script.c, src/errors.h, src/testdir/test_vim9_script.vim + +Patch 8.2.3414 +Problem: fullcommand() gives the wrong name if there is a buffer-local user + command. (Naohiro Ono) +Solution: Use a separate function to get the user command name. + (closes #8840) +Files: src/usercmd.c, src/proto/usercmd.pro, src/ex_docmd.c, + src/testdir/test_cmdline.vim + +Patch 8.2.3415 +Problem: Vim9: Not all function argument types are properly checked. +Solution: Add and improve argument type checks. (Yegappan Lakshmanan, + closes #8839) +Files: src/channel.c, src/digraph.c, src/evalfunc.c, src/terminal.c, + src/testdir/test_digraph.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3416 +Problem: Second error is reported while exception is being thrown. +Solution: Do not check for trailing characters when already aborting. + (closes #8842) +Files: src/userfunc.c, src/testdir/test_trycatch.vim + +Patch 8.2.3417 +Problem: Vim9: a failing debug expression aborts script sourcing. +Solution: Do not let expression failure abort script sourcing. (closes #8848) +Files: src/debugger.c, src/testdir/test_debugger.vim + +Patch 8.2.3418 +Problem: Garbage collection while evaluating may cause trouble. +Solution: Disable garbage collection while evaluating an expression. + (Christian Brabandt, issue #8848) +Files: src/eval.c + +Patch 8.2.3419 +Problem: A failing debug expression may make Vim unusable. +Solution: Suppress error messages. (closes #8848) +Files: src/debugger.c, src/testdir/test_debugger.vim + +Patch 8.2.3420 +Problem: _REENTRANT defined more than once. +Solution: Fix configure script. (Christian Brabandt, closes #8852) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.3421 +Problem: A bit of code is not covered by tests. +Solution: Add a few more test cases. (Dominique Pell茅, closes #8857) +Files: src/testdir/test_functions.vim, src/testdir/test_history.vim, + src/testdir/test_startup.vim + +Patch 8.2.3422 +Problem: Vim9: no failure if return type differs from returned variable. +Solution: Copy type when copying a list. (closes #8847) +Files: src/list.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3423 +Problem: Vim9: list += list creates a new list in :def function. +Solution: Append to the existing list. +Files: src/structs.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3424 +Problem: A sequence of spaces is hard to see in list mode. +Solution: Add the "multispace" option to 'listchars'. (closes #8834) +Files: runtime/doc/options.txt, src/drawline.c, src/message.c, + src/screen.c, src/structs.h, src/testdir/test_listchars.vim + +Patch 8.2.3425 +Problem: Warning for using uninitialized variable. +Solution: Initialize it. (John Marriott) +Files: src/screen.c + +Patch 8.2.3426 +Problem: Crash when deleting a listener in a listener callback. (Naohiro + Ono) +Solution: Mark the listener and delete it later. (closes #8863) +Files: src/change.c, src/testdir/test_listener.vim + +Patch 8.2.3427 +Problem: Double free when list is copied. +Solution: Allocate the type when making a copy. (closes #8862) + Clear the type for flattennew(). Avoid a memory leak when + flattennew() fails. +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3428 +Problem: Using freed memory when replacing. (Dhiraj Mishra) +Solution: Get the line pointer after calling ins_copychar(). +Files: src/normal.c, src/testdir/test_edit.vim + +Patch 8.2.3429 +Problem: Leaking memory when assigning to list or dict. +Solution: Free the list or dict type before overwriting it. +Files: src/vim9type.c, src/evalvars.c + +Patch 8.2.3430 +Problem: No generic way to trigger an autocommand on mode change. +Solution: Add the ModeChanged autocommand event. (Magnus Gross, closes #8856) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/edit.c, + src/ex_docmd.c, src/ex_getln.c, src/globals.h, src/misc1.c, + src/normal.c, src/proto/autocmd.pro, src/proto/misc1.pro, + src/testdir/test_edit.vim, src/vim.h + +Patch 8.2.3431 +Problem: Completion for :disas sorts local functions first. +Solution: Sort local functions last, like with :delfunc. (Naohiro Ono, + closes #8860) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3432 +Problem: Octave/Matlab filetype detection does not work properly. +Solution: Update the patterns used for matching. (Doug Kearns) +Files: runtime/autoload/dist/ft.vim, src/testdir/test_filetype.vim + +Patch 8.2.3433 +Problem: :delcommand does not take a -buffer option. +Solution: Add the -buffer option. +Files: runtime/doc/map.txt, src/usercmd.c, src/errors.h, + src/testdir/test_usercommands.vim + +Patch 8.2.3434 (after 8.2.3430) +Problem: Function prototype for trigger_modechanged() is incomplete. +Solution: Add "void". +Files: src/proto/misc1.pro + +Patch 8.2.3435 +Problem: Vim9: dict is not passed to dict function. +Solution: Keep the dict used until a function call. +Files: src/vim9compile.c, src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3436 +Problem: Check for optional bool type has confusing return type. +Solution: Explicitly return OK. +Files: src/typval.c + +Patch 8.2.3437 +Problem: Compiler warnings for 32/64 bit usage. +Solution: Add type casts. (Mike Williams, closes #8870) +Files: src/screen.c, src/xdiff/xemit.c, src/xdiff/xutils.c + +Patch 8.2.3438 +Problem: Cannot manipulate blobs. +Solution: Add blob2list() and list2blob(). (Yegappan Lakshmanan, + closes #8868) +Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt, src/blob.c, + src/errors.h, src/evalfunc.c, src/proto/blob.pro, + src/proto/typval.pro, src/testdir/test_blob.vim, + src/testdir/test_vim9_builtin.vim, src/typval.c + +Patch 8.2.3439 +Problem: Deleted lines go to wrong yank register. +Solution: Reset y_append when not calling get_yank_register(). (Christian + Brabandt, closes #8872) +Files: src/ops.c, src/proto/register.pro, src/register.c, + src/testdir/test_registers.vim + +Patch 8.2.3440 +Problem: Recover test fails if there is an old swap file. +Solution: Delete old swap files. +Files: src/testdir/test_recover.vim + +Patch 8.2.3441 +Problem: MS-Windows: vimtutor can't handle path with spaces. +Solution: Add double quotes. (Christian Brabandt, closes #8871) +Files: vimtutor.bat + +Patch 8.2.3442 +Problem: Vim9: || and && are not handled at compile time when possible. +Solution: When using constants generate fewer instructions. +Files: src/vim9.h, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3443 +Problem: Vim9: memory leak when and/or fails. +Solution: Also clear the growarray when the length is zero. +Files: src/vim9compile.c + +Patch 8.2.3444 +Problem: concealed text not revealed when leaving insert mode. (Michael + Soyka) +Solution: Check if concealing changed when leaving insert mode. + (closes #8880) +Files: src/edit.c, src/testdir/test_conceal.vim, + src/testdir/dumps/Test_conceal_two_windows_07in.dump + +Patch 8.2.3445 +Problem: On Solaris longVersion may be declared twice. (Vladimir Marek) +Solution: Always declare longVersion in version.c +Files: src/globals.h, src/version.c + +Patch 8.2.3446 +Problem: Not enough tests for empty string arguments. +Solution: Add tests, fix type check. (Yegappan Lakshmanan, closes #8881) +Files: runtime/doc/sign.txt, runtime/doc/textprop.txt, src/sign.c, + src/testdir/test_blob.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3447 +Problem: A couple of declarations are not ANSI C. +Solution: Put argument type inside (). (Yegappan Lakshmanan, closes #8890) +Files: src/os_unix.h + +Patch 8.2.3448 +Problem: :endtry after function call that throws not found. +Solution: Do check for following :endtry if an exception is being thrown. + (closes #8889) +Files: src/userfunc.c, src/testdir/test_trycatch.vim + +Patch 8.2.3449 +Problem: Sort fails if the sort compare function returns 999. +Solution: Adjust value to -1 / 0 / 1. (Yasuhiro Matsumoto, closes #8884) +Files: src/list.c, src/testdir/test_sort.vim + +Patch 8.2.3450 +Problem: Coveralls action fails. +Solution: Disable it for now. +Files: .github/workflows/ci.yml + +Patch 8.2.3451 +Problem: Not all apache files are recognized. +Solution: Adjust the filetype pattern. (Zdenek Dohnal, closes #8882) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3452 +Problem: MPD files are not recognized. +Solution: Recognize MPD files as XML. (Steven Penny, closes #8893) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3453 +Problem: Autocmd not executed when editing a directory ending in a path + separator inside try block. +Solution: Return NOTDONE instead of FAIL. (closes #8885) +Files: src/fileio.c, src/testdir/test_autocmd.vim + +Patch 8.2.3454 +Problem: Using a count with "gp" leaves cursor in wrong position. (Naohiro + Ono) +Solution: Count the inserted lines. (closes #8899) +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.3455 (after 8.2.3454) +Problem: Using a count with "gp" leaves '] in wrong position. (Naohiro Ono) +Solution: Correct the mark position. (closes #8899) +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.3456 +Problem: Vim9: Not all functions are tested with an empty string argument. +Solution: Add tests with empty strings. (Yegappan Lakshmanan, closes #8915) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3457 +Problem: MS-Windows Vim9: test executed and fails. +Solution: Add extra check for not being on MS-Windows. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3458 +Problem: Not all dictdconf files are recognized. +Solution: Adjust the pattern. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3459 +Problem: Vim9: need more tests for empty string arguments. +Solution: Add more tests. Also use empty argument with menu_info() to get + the top-level menu names. (Yegappan Lakshmanan, closes #8925) +Files: runtime/doc/eval.txt, src/menu.c, src/testdir/test_menu.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3460 +Problem: Some type casts are not needed. +Solution: Remove unnecessary type casts. (closes #8934) +Files: src/autocmd.c, src/buffer.c, src/debugger.c, src/getchar.c, + src/hardcopy.c, src/if_cscope.c, src/move.c, src/tag.c, + src/version.c + +Patch 8.2.3461 +Problem: Cannot distinguish Normal and Terminal-Normal mode. +Solution: Make mode() return "nt" for Terminal-Normal mode. (issue #8856) +Files: runtime/doc/eval.txt, src/misc1.c, src/testdir/test_functions.vim + +Patch 8.2.3462 +Problem: The ModeChanged event only uses one character for the new_mode and + old_mode values. +Solution: Pass one as first argument to mode(). (issue #8856) +Files: src/misc1.c, src/testdir/test_edit.vim + +Patch 8.2.3463 +Problem: Pattern matching with ModeChanged not tested. +Solution: Add a few more test lines. (issue #8856) +Files: src/testdir/test_edit.vim + +Patch 8.2.3464 +Problem: nginx files are not recognized. +Solution: Add several file patterns. (Chris Aumann, closes #8922) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3465 +Problem: Cannot detect insert scroll mode. +Solution: Add "scroll" to complete_info(). (closes #8943) +Files: runtime/doc/eval.txt, src/insexpand.c, src/testdir/test_popup.vim + +Patch 8.2.3466 +Problem: Completion submode not indicated for virtual replace. +Solution: Add submode to "Rv". (closes #8945) +Files: runtime/doc/eval.txt, src/misc1.c, src/testdir/test_functions.vim + +Patch 8.2.3467 +Problem: CursorHoldI event interferes with "CTRL-G U". (Naohiro Ono) +Solution: Restore the flag for "CTRL-G U" after triggering CursorHoldI. + (closes #8937) +Files: src/edit.c, src/testdir/test_autocmd.vim + +Patch 8.2.3468 +Problem: Problem with :cd when editing file in non-existent directory. (Yee + Cheng Chin) +Solution: Prepend the current directory to get the full path. (closes #8903) +Files: src/os_unix.c, src/testdir/test_cd.vim + +Patch 8.2.3469 +Problem: Some files with json syntax are not recognized. +Solution: Add a few file patterns. (Emiliano Ruiz Carletti, closes #8947) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3470 +Problem: Crash with error in :catch and also in :finally. +Solution: Only discard an exception if there is one. (closes #8954) +Files: src/ex_eval.c, src/testdir/test_trycatch.vim + +Patch 8.2.3471 +Problem: Crash when using CTRL-T after an empty search pattern. +Solution: Bail out when there is no previous search pattern. (closes #8953) +Files: src/ex_getln.c, src/testdir/test_search.vim + +Patch 8.2.3472 +Problem: Other crashes with empty search pattern not tested. +Solution: Add a few more test lines. (Dominique Pell茅) +Files: src/testdir/test_search.vim + +Patch 8.2.3473 +Problem: Some files with tcl syntax are not recognized. +Solution: Add a few file patterns. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3474 +Problem: Some places use "Vimscript" instead of "Vim script". +Solution: Consistently use "Vim script". (Hirohito Higashi, closes #8910) +Files: runtime/doc/if_lua.txt, src/getchar.c, src/if_lua.c + +Patch 8.2.3475 +Problem: Expression register set by not executed put command. +Solution: Do not set the register if the command is skipped. (closes #8909) +Files: src/ex_docmd.c, src/testdir/test_excmd.vim + +Patch 8.2.3476 +Problem: Renaming a buffer on startup may cause using freed memory. +Solution: Check if the buffer is used in a window. (closes #8955) +Files: src/buffer.c, src/testdir/test_startup.vim + +Patch 8.2.3477 (after 8.2.3476) +Problem: Startup test fails on MS-Windows. +Solution: Skip the test if not on Unix. +Files: src/testdir/test_startup.vim + +Patch 8.2.3478 (after 8.2.3470) +Problem: Still crash with error in :catch and also in :finally. +Solution: Only call finish_exception() once. (closes #8954) +Files: src/ex_eval.c, src/structs.h + +Patch 8.2.3479 +Problem: Crash when calling job_start with an invalid argument. (Virginia + Senioria) +Solution: Clear the first item in argv. (closes #8957) +Files: src/misc2.c, src/testdir/test_channel.vim + +Patch 8.2.3480 (after 8.2.3478) +Problem: Test does not fail without the fix for a crash. +Solution: Write the bad code in a file and source it. (Dominique Pell茅, + closes #8961) +Files: src/testdir/test_trycatch.vim + +Patch 8.2.3481 +Problem: Failures when char is unsigned. +Solution: Use int8_T. Make a CI run with unsigned char. (James McCoy, + closes #8936) +Files: src/structs.h, .github/workflows/ci.yml + +Patch 8.2.3482 +Problem: Reading beyond end of line ending in quote and backslash. +Solution: Check for non-NUL after backslash. (closes #8964) +Files: src/cindent.c, src/testdir/test_cindent.vim + +Patch 8.2.3483 +Problem: #ifdef for using sysinfo() is incomplete. +Solution: Also check for HAVE_SYSINFO. Make autoconf check use TRY_LINK. + (closes #8952) +Files: src/memline.c, src/configure.ac, src/auto/configure + +Patch 8.2.3484 +Problem: Crash when going through spell suggestions. +Solution: Limit the text length for finding suggestions to the original + length. Do not update buffers when exiting. (closes #8965) +Files: src/spellsuggest.c, src/clipboard.c, + src/testdir/test_spell_utf8.vim + +Patch 8.2.3485 +Problem: Python 3 test fails with Python 3.10. +Solution: Adjust expected error message. (zdohnal Dohnal, closes #8969) +Files: src/testdir/test_python3.vim + +Patch 8.2.3486 +Problem: Illegal memory access with invalid sequence of commands. +Solution: Do not call leave_block() when not in a try block. (closes #8966) + Reset did_emsg so that exception is shown as an error. +Files: src/ex_eval.c, src/testdir/test_trycatch.vim + +Patch 8.2.3487 +Problem: Illegal memory access if buffer name is very long. +Solution: Make sure not to go over the end of the buffer. +Files: src/drawscreen.c, src/testdir/test_statusline.vim + +Patch 8.2.3488 +Problem: Issue template is not easy to use. +Solution: Use a yaml template. (closes #8928) +Files: .github/ISSUE_TEMPLATE/bug_report.md, + .github/ISSUE_TEMPLATE/bug_report.yml + +Patch 8.2.3489 +Problem: ml_get error after search with range. +Solution: Limit the line number to the buffer line count. +Files: src/ex_docmd.c, src/testdir/test_search.vim + +Patch 8.2.3490 +Problem: Superfluous return statements. +Solution: Remove superfluous return statements from void functions. + (closes #8977) +Files: src/buffer.c, src/getchar.c, src/memline.c, src/move.c, + src/option.c + +Patch 8.2.3491 +Problem: xpm2 filetype detection is not so good. +Solution: Adjust the check for xpm2. (closes #8914) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3492 +Problem: Crash when pasting too many times. +Solution: Limit the size to what fits in an int. (closes #8962) +Files: src/register.c, src/errors.h, src/testdir/test_put.vim + +Patch 8.2.3493 (after 8.2.3492) +Problem: Large count test fails on MS-Windows. +Solution: Skip the test on MS-Windows. +Files: src/testdir/test_put.vim + +Patch 8.2.3494 +Problem: Illegal memory access in utf_head_off. +Solution: Check cursor position when reselecting the Visual area. + (closes #8963) +Files: src/normal.c, src/testdir/test_visual.vim + +Patch 8.2.3495 +Problem: GUI geometry startup test fails on some systems. (Drew Vogel) +Solution: Add tolerance to the size check. (closes #8815) +Files: src/testdir/test_startup.vim + +Patch 8.2.3496 +Problem: Crypt test fails on MS-Windows if xxd was not installed yet. +Solution: Use the just built xxd executable if it exists. (James McCoy, + closes #8929) +Files: src/testdir/test_crypt.vim + +Patch 8.2.3497 +Problem: Put test fails when run by itself. +Solution: Source check.vim. (Dominique Pell茅, closes #8990) +Files: src/testdir/test_put.vim + +Patch 8.2.3498 +Problem: Recover test may fail on some systems. +Solution: Adjust the little endian and 64 bit detection. (James McCoy, + closes #8941) +Files: src/testdir/test_recover.vim + +Patch 8.2.3499 +Problem: GUI geometry startup test fails. +Solution: Check string values instead of numbers +Files: src/testdir/test_startup.vim + +Patch 8.2.3500 +Problem: Github CI fails to install clang. +Solution: Install llvm-11 explicitly. (Christian Brabandt, closes #8993) +Files: .github/workflows/ci.yml + +Patch 8.2.3501 +Problem: tmux filetype detection is incomplete +Solution: Also use tmux for files having text after .conf. (Eric Pruitt, + closes #8971) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3502 (after 8.2.2919) +Problem: Cannot enter password in shell command. +Solution: Revert patch 8.2.2919. +Files: src/os_unix.c + +Patch 8.2.3503 +Problem: Vim9: using g:pat:cmd is confusing. +Solution: Do not recognize g: as the :global command. Also for s:pat:repl. + (closes #8982) +Files: runtime/doc/vim9.txt, src/ex_docmd.c, src/ex_cmds.c, src/errors.h, + src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3504 (after 8.2.3503) +Problem: Vim9: warning for signed vs unsigned. +Solution: Add type cast. +Files: src/vim9compile.c + +Patch 8.2.3505 (after 8.2.3503) +Problem: Vim9: build failure without the +eval feature. +Solution: Add #ifdef. +Files: src/ex_cmds.c + +Patch 8.2.3506 (after 8.2.3503) +Problem: Vim9: special cases for "g" and "s" insufficiently tested. +Solution: Add a few more test cases. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.3507 +Problem: Generating proto files may fail. +Solution: Define __attribute(). +Files: src/Makefile + +Patch 8.2.3508 (after 8.2.3503) +Problem: Vim9: bad separators for "g" and "s" insufficiently tested. +Solution: Add a few more test cases. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.3509 +Problem: Undo file is not synced. (Sami Farin) +Solution: Sync the undo file if 'fsync' is set. (Christian Brabandt, + closes #8879, closes #8920) +Files: runtime/doc/options.txt, src/undo.c + +Patch 8.2.3510 +Problem: Changes are only detected with one second accuracy. +Solution: Use the nanosecond time if possible. (Leah Neukirchen, + closes #8873, closes #8875) +Files: runtime/doc/eval.txt, src/auto/configure, src/bufwrite.c, + src/config.h.in, src/configure.ac, src/fileio.c, + src/proto/fileio.pro, src/memline.c, src/netbeans.c, + src/structs.h, src/evalfunc.c, src/testdir/test_stat.vim + +Patch 8.2.3511 +Problem: Vim9: entry for loop variable is created every round. +Solution: Only create the entry once. (closes #8996) +Files: src/evalvars.c, src/vim9script.c + +Patch 8.2.3512 +Problem: Timestamp test fails on some systems. +Solution: Sleep for a short while. +Files: src/testdir/test_stat.vim + +Patch 8.2.3513 +Problem: Using freed memory when using a timer and searching. (Dominique + Pell茅) +Solution: Allocated mr_pattern. +Files: src/search.c + +Patch 8.2.3514 +Problem: Autoread test with nanosecond time sometimes fails. +Solution: Mark the test as being flaky. +Files: src/testdir/test_stat.vim + +Patch 8.2.3515 +Problem: Nano time test fails on Mac and FreeBSD. +Solution: Also check nano time when not on Linux. (Ozaki Kiichi, + closes #9000) +Files: src/fileio.c + +Patch 8.2.3516 +Problem: Terminal window does not have transparent background when + 'termguicolors' is used. +Solution: Fix the background color. (closes #2361, closes #9002) +Files: runtime/doc/terminal.txt, src/highlight.c, src/proto/terminal.pro, + src/terminal.c + +Patch 8.2.3517 +Problem: TextChanged does not trigger after TextChangedI. +Solution: Store the tick separately for TextChangedI. (Christian Brabandt, + closes #8968, closes #8932) +Files: src/buffer.c, src/bufwrite.c, src/edit.c, src/structs.h, + src/testdir/test_autocmd.vim + +Patch 8.2.3518 +Problem: Test_xrestore sometimes fails. +Solution: Mark the test as flaky. Move marking test as flaky to the test + instead of listing them in runtest. +Files: src/testdir/test_paste.vim, src/testdir/runtest.vim, + src/testdir/test_autocmd.vim, src/testdir/test_channel.vim, + src/testdir/test_clientserver.vim, src/testdir/test_diffmode.vim, + src/testdir/test_functions.vim, src/testdir/test_gui.vim, + src/testdir/test_mapping.vim, src/testdir/test_popup.vim, + src/testdir/test_quotestar.vim, src/testdir/test_reltime.vim, + src/testdir/test_terminal.vim, src/testdir/test_terminal2.vim, + src/testdir/test_timers.vim + +Patch 8.2.3519 +Problem: TOML files are not recognized. +Solution: Add filetype patterns for TOML. (Aman Verma, closes #8984) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3520 +Problem: Cannot define a function for thesaurus completion. +Solution: Add 'thesaurusfunc'. (Yegappan Lakshmanan, closes #8987, + closes 8950) +Files: runtime/doc/insert.txt, runtime/doc/options.txt, + runtime/doc/quickref.txt, src/buffer.c, src/insexpand.c, + src/option.c, src/option.h, src/optiondefs.h, src/optionstr.c, + src/structs.h, src/testdir/test_edit.vim + +Patch 8.2.3521 (after 8.2.3520) +Problem: Options completion test fails. +Solution: Add 'thesaurusfunc' to the results. +Files: src/testdir/test_options.vim + +Patch 8.2.3522 +Problem: Cannot use \x and \u when setting 'listchars'. +Solution: Support hex and unicode in hex form. (closes #9006) +Files: runtime/doc/options.txt, src/screen.c, src/charset.c, + src/testdir/test_listchars.vim + +Patch 8.2.3523 +Problem: Duplicated code in xxd. +Solution: Remove duplicated lines. (closes #8972) +Files: src/xxd/xxd.c + +Patch 8.2.3524 +Problem: GUI: ligatures are not used. +Solution: Add the 'guiligatures' option. (Dusan Popovic, closes #8933) +Files: runtime/doc/options.txt, src/gui.c, src/gui.h, src/gui_gtk_x11.c, + src/option.h, src/optiondefs.h, src/optionstr.c, src/errors.h, + src/proto/gui.pro, src/proto/gui_gtk_x11.pro, + src/testdir/test_gui.vim + +Patch 8.2.3525 +Problem: Option variable name does not match option name. (Christ van + Willegen) +Solution: Rename the variable. +Files: src/buffer.c, src/insexpand.c, src/option.c, src/optionstr.c, + src/structs.h + +Patch 8.2.3526 +Problem: Tests have clumsy check for X11 based GUI. +Solution: Add CheckX11BasedGui. +Files: src/testdir/check.vim, src/testdir/test_gui.vim, + src/testdir/test_gui_init.vim, src/testdir/setup_gui.vim + +Patch 8.2.3527 +Problem: Gcc complains about uninitialized variable. (Tony Mechelynck) +Solution: Initialize it. +Files: src/gui_gtk_x11.c + +Patch 8.2.3528 +Problem: 'thesaurus' and 'thesaurusfunc' do not have the same scope. +Solution: Make 'thesaurusfunc' global-local. +Files: runtime/doc/options.txt, runtime/doc/insert.txt, + src/optiondefs.h, src/option.h, src/option.c, src/structs.h, + src/insexpand.c, src/testdir/test_edit.vim + +Patch 8.2.3529 +Problem: Xxd usage output is incomplete. +Solution: Add "bytes" to "-g" flag. (Atsushi Sugawara, closes #8944) +Files: src/xxd/xxd.c + +Patch 8.2.3530 +Problem: ":buf \{a}" fails while ":edit \{a}" works. +Solution: Unescape "\{". (closes #8917) +Files: src/vim.h, src/cmdexpand.c, src/evalfunc.c, src/ex_getln.c, + src/proto/ex_getln.pro, src/normal.c, src/session.c, + src/terminal.c, src/vim9execute.c, src/testdir/test_cmdline.vim + +Patch 8.2.3531 (after 8.2.3530) +Problem: Command line completion test fails on MS-Windows. +Solution: Do not test with "\{" on MS-Windows. +Files: src/testdir/test_cmdline.vim + +Patch 8.2.3532 +Problem: The previous '' mark is restored after moving the cursor to the + original jump position. (Tony Chen) +Solution: Forget the previous position after checking. (closes #8985) +Files: src/mark.c, src/testdir/test_marks.vim + +Patch 8.2.3533 +Problem: Inefficient code in xxd. +Solution: Don't use "p" when "hextype" is non-zero. (closes #9013) +Files: src/xxd/xxd.c + +Patch 8.2.3534 +Problem: Autoread test is a bit flaky. +Solution: Wait a brief moment before overwriting the file. +Files: src/testdir/test_stat.vim + +Patch 8.2.3535 +Problem: If-else indenting is confusing. +Solution: Add curly brackets and indent. (Dominique Pell茅, closes #9010) +Files: src/drawscreen.c + +Patch 8.2.3536 +Problem: The do_highlight() function is way too long. +Solution: Split it into several functions. (Yegappan Lakshmanan, + closes #9011) +Files: src/highlight.c + +Patch 8.2.3537 +Problem: mode() does not return the right value in 'operatorfunc'. +Solution: Reset finish_op while calling 'operatorfunc'. +Files: src/ops.c, src/testdir/test_functions.vim + +Patch 8.2.3538 +Problem: Else-if indenting is confusing. +Solution: Add curly brackets. (Yegappan Lakshmanan, closes #9017) +Files: src/highlight.c + +Patch 8.2.3539 +Problem: GTK3: with 'rightleft' set scrollbar may move unintentionally. +Solution: Ignore events while moving the scrollbar thumb. (closes #8958) +Files: src/gui_gtk.c + +Patch 8.2.3540 +Problem: The mark '] is wrong after put with a count. (Naohiro Ono) +Solution: Use the right line number. (closes #8956) +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.3541 +Problem: Compiler warning for unused variable in tiny version. +Solution: Add #ifdef. (John Marriott) +Files: src/highlight.c + +Patch 8.2.3542 +Problem: Too many comments are old style. +Solution: Change comments to // style. (closes #9021) +Files: src/buffer.c + +Patch 8.2.3543 +Problem: Swapname has double slash when 'directory' ends in double slash. + (Shane Smith) +Solution: Remove the superfluous slash. (closes #8876) +Files: src/memline.c, src/testdir/test_swap.vim + +Patch 8.2.3544 +Problem: Unix: may leak file descriptor when using a non-existing + directory. +Solution: Always close the file. (closes #9023) +Files: src/os_unix.c + +Patch 8.2.3545 +Problem: setcellwidths() may make 'listchars' or 'fillchars' invalid. +Solution: Check the value and give an error. (closes #9024) +Files: runtime/doc/eval.txt, src/optionstr.c, src/errors.h, src/mbyte.c, + src/testdir/test_utf8.vim + +Patch 8.2.3546 (after 8.2.3545) +Problem: Build failure without the +eval feature. +Solution: Add #ifdef. (closes #9025) +Files: src/errors.h + +Patch 8.2.3547 +Problem: Opening the quickfix window triggers BufWinEnter twice. (Yorick + Peterse) +Solution: Only trigger BufWinEnter with "quickfix". (closes #9022) +Files: src/ex_cmds.c, src/vim.h, src/quickfix.c, src/buffer.c, + src/testdir/test_quickfix.vim + +Patch 8.2.3548 +Problem: GTK GUI crashes when reading from stdin. +Solution: Do not overwrite the NUL after the string. (closes #9028) +Files: src/gui_gtk_x11.c, src/testdir/test_gui.vim + +Patch 8.2.3549 +Problem: Mistakes in test comments. +Solution: Fix the comments. (closes #9029) +Files: src/testdir/test_autocmd.vim + +Patch 8.2.3550 +Problem: completion() does not work properly. +Solution: Set xp_line and add WILD_HOME_REPLACE. (Shougo Matsushita, + closes #9016) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3551 +Problem: Checking first character of url twice. +Solution: Only check once. (closes #9026) +Files: src/misc1.c + +Patch 8.2.3552 +Problem: Xxd revert does not handle end of line correctly. +Solution: Check for newline first. (closes #9034) +Files: src/xxd/xxd.c, src/testdir/test_xxd.vim + +Patch 8.2.3553 (after 8.2.3552) +Problem: Xxd test fails on MS-Windows. +Solution: Split shell command in two. +Files: src/testdir/test_xxd.vim + +Patch 8.2.3554 +Problem: Xxd has various way to exit. +Solution: Add function to print error and exit. (closes #9035) +Files: src/xxd/xxd.c + +Patch 8.2.3555 +Problem: ModeChanged is not triggered on every mode change. +Solution: Also trigger on minor mode changes. (Maguns Gross, closes #8999) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/insexpand.c, + src/misc1.c, src/normal.c, src/terminal.c, + src/testdir/test_edit.vim + +Patch 8.2.3556 +Problem: Filler lines are incorrect for other window in diff mode after + making a change. +Solution: Copy filler lines from the current window. (closes #8809) +Files: src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_scroll_change_03.dump + +Patch 8.2.3557 +Problem: Vim9: cannot call imported funcref at script level. +Solution: Check for an imported function. (closes #9007) +Files: src/userfunc.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3558 (after 8.2.3557) +Problem: Vim9: asserting the wrong variable. +Solution: Don't use Foo, use Goo. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3559 +Problem: Loop variable recreated every time. +Solution: Keep the loop variable when looping. +Files: src/ex_eval.c + +Patch 8.2.3560 +Problem: Using freed memory with lambda. +Solution: Do not free lines early, keep them until the expression is + finished. (closes #9020) +Files: src/eval.c, src/proto/eval.pro, src/userfunc.c, src/vim9compile.c, + src/structs.h, src/globals.h, src/testdir/test_vim9_func.vim + +Patch 8.2.3561 +Problem: Cscope has a complicated way of giving an error message. +Solution: Use semsg(). (James McCoy, closes #9038) +Files: src/if_cscope.c + +Patch 8.2.3562 +Problem: Cannot add color names. +Solution: Add the v:colornames dictionary. (Drew Vogel, closes #8761) +Files: Filelist, READMEdir/README_extra.txt, nsis/gvim.nsi, + runtime/colors/README.txt, runtime/colors/lists/csscolors.vim, + runtime/colors/lists/default.vim, runtime/doc/eval.txt, + runtime/doc/gui_w32.txt, runtime/doc/message.txt, + runtime/doc/os_haiku.txt, runtime/doc/syntax.txt, + runtime/doc/usr_06.txt, src/Makefile, src/evalvars.c, + src/gui_haiku.cc, src/highlight.c, src/gui.c, src/job.c, + src/proto/highlight.pro, src/proto/term.pro, src/term.c, + src/vim.h, src/globals.h, src/errors.h, + src/testdir/test_highlight.vim + +Patch 8.2.3563 (after 8.2.3562) +Problem: Build failure with +eval but without GUI or +termguicolors +Solution: Adjust #ifdef. (John Marriott) +Files: src/highlight.c + +Patch 8.2.3564 +Problem: Invalid memory access when scrolling without a valid screen. +Solution: Do not set VALID_BOTLINE in w_valid. +Files: src/move.c, src/testdir/test_normal.vim + +Patch 8.2.3565 +Problem: Makefile dependencies are outdated. (Gary Johnson) +Solution: Run "make depend" and add missing dependencies. +Files: src/Makefile + +Patch 8.2.3566 +Problem: Build failure on old systems when using nano timestamp. +Solution: Define _BSD_SOURCE, _SVID_SOURCE and _DEFAULT_SOURCE. (Gary + Johnson, closes #9054) +Files: src/vim.h + +Patch 8.2.3567 +Problem: CTRL-I in Insert mode is not tested +Solution: Add a test case. (Dominique Pell茅, closes #8866) +Files: src/testdir/test_edit.vim + +Patch 8.2.3568 +Problem: Ctrl-hat test fails with Athena and Motif. (Elimar Riesebieter) +Solution: Run the test only with GTK. (Dominique Pell茅, closes #9069) +Files: src/testdir/test_edit.vim + +Patch 8.2.3569 +Problem: Error for :let when vimrc is Vim 9 script. +Solution: Prepend :legacy in the code for converting arguments. (Christian + Brabandt, closes #9068, closes #9077) +Files: src/os_win32.c + +Patch 8.2.3570 +Problem: Test_very_large_count fails on 32bit systems. +Solution: Bail out when using 32 bit numbers. (closes #9072) +Files: src/testdir/test_put.vim + +Patch 8.2.3571 +Problem: Some unicode control characters are considered printable. +Solution: Make 0x2060 - 0x2069 not printable. +Files: src/mbyte.c + +Patch 8.2.3572 +Problem: Memory leak when closing window and using "multispace" in + 'listchars'. +Solution: Free the memory. (closes #9071) +Files: src/window.c, src/testdir/test_listchars.vim + +Patch 8.2.3573 +Problem: Cannot decide whether to skip test that fails with 64 bit ints. + (closes #9072) +Solution: Add v:sizeofint, v:sizeoflong and v:sizeofpointer. Improve the + check for multiply overflow. +Files: runtime/doc/eval.txt, src/vim.h, src/evalvars.c, src/register.c, + src/testdir/test_put.vim + +Patch 8.2.3574 (after 8.2.3573) +Problem: Divide by zero. +Solution: Don't check for overflow if multiplicand is zero. +Files: src/register.c + +Patch 8.2.3575 (after 8.2.3574) +Problem: Overflow check still fails when sizeof(int) == sizeof(long). +Solution: Use a float to check the result. +Files: src/register.c + +Patch 8.2.3576 +Problem: Some functions are not documented for use with a method. +Solution: Add examples. Fix that sign_unplacelist() only takes one + argument. (Sean Dewar, closes #9081) +Files: src/evalfunc.c, runtime/doc/eval.txt + +Patch 8.2.3577 (after 8.2.3574) +Problem: Overflow check fails with 32 bit ints. +Solution: Only test with 64 bit ints. +Files: src/testdir/test_put.vim + +Patch 8.2.3578 +Problem: Manipulating highlighting is complicated. +Solution: Add the hlget() and hlset() functions. (Yegappan Lakshmanan, + closes #9039) +Files: runtime/doc/eval.txt, runtime/doc/syntax.txt, + runtime/doc/usr_41.txt, runtime/doc/windows.txt, src/evalfunc.c, + src/highlight.c, src/proto/highlight.pro, + src/testdir/test_highlight.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3579 +Problem: CI sometimes fails for MinGW. +Solution: Use backslashes in HandleSwapExists(). (Christian Brabandt, + closes #9078) +Files: src/testdir/runtest.vim + +Patch 8.2.3580 +Problem: gj does not move properly with a wide character. +Solution: Move one to the right. (Christian Brabandt, closes #8702) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.2.3581 +Problem: Reading character past end of line. +Solution: Correct the cursor column. +Files: src/ex_docmd.c, src/testdir/test_put.vim + +Patch 8.2.3582 +Problem: Reading uninitialized memory when giving spell suggestions. +Solution: Check that preword is not empty. +Files: src/spellsuggest.c, src/testdir/test_spell.vim + +Patch 8.2.3583 +Problem: The "gd" and "gD" commands do not update search stats. (Gary + Johnson) +Solution: Clear search stats. +Files: src/normal.c, src/testdir/test_search_stat.vim, + src/testdir/dumps/Test_searchstatgd_1.dump, + src/testdir/dumps/Test_searchstatgd_2.dump + +Patch 8.2.3584 +Problem: "verbose set efm" reports the location of the :compiler command. + (Gary Johnson) +Solution: Add the "-keepscript" argument to :command and use it when + defining CompilerSet. +Files: runtime/doc/map.txt, src/ex_cmds2.c, src/usercmd.c, src/ex_cmds.h, + src/testdir/test_compiler.vim + +Patch 8.2.3585 +Problem: Crash when passing float to "term_rows" in the options argument of + term_start(). (Virginia Senioria) +Solution: Bail out if the argument is not a number. (closes #9116) +Files: src/job.c, src/terminal.c, src/testdir/test_terminal.vim + +Patch 8.2.3586 (after 8.2.3584) +Problem: Command completion test fails. +Solution: Add new argument to expected output +Files: src/testdir/test_usercommands.vim + +Patch 8.2.3587 (after 8.2.3584) +Problem: Compiler test fails with backslash file separator. +Solution: Accept slash and backslash. +Files: src/testdir/test_compiler.vim + +Patch 8.2.3588 +Problem: Break statement is never reached. +Solution: Rely on return value of set_chars_option() not changing. + (closes #9103) +Files: src/optionstr.c + +Patch 8.2.3589 +Problem: Failure when the "term_rows" argument of term_start() is an + unusual value. +Solution: Limit to range of zero to 1000. (closes #9116) +Files: runtime/doc/terminal.txt, src/job.c, src/testdir/test_terminal.vim + +Patch 8.2.3590 +Problem: Test for v:colornames sometimes fails. (Dominique Pell茅) +Solution: Check features. Clear v:colornames between tests. (Drew Vogel, + closes #9105, closes #9073) +Files: runtime/doc/eval.txt, src/highlight.c, src/proto/highlight.pro, + src/testdir/test_highlight.vim + +Patch 8.2.3591 +Problem: No event is triggered when closing a window. +Solution: Add the WinClosed event. (Naohiro Ono, closes #9110) +Files: runtime/doc/autocmd.txt, src/autocmd.c, + src/testdir/test_autocmd.vim, src/vim.h, src/window.c + +Patch 8.2.3592 +Problem: Test_hlset fails when terminal has many columns. +Solution: Set the number of columns to 80. (Dominique Pell茅, closes #9101, + closes #9100) +Files: src/testdir/test_highlight.vim + +Patch 8.2.3593 +Problem: Directory is wrong after executing "lcd" with win_execute(). +Solution: Correct the directory when going back to the original window. + (closes #9132) +Files: src/evalwindow.c, src/window.c, src/proto/window.pro, + src/testdir/test_execute_func.vim + +Patch 8.2.3594 +Problem: Xxd code is a bit difficult to understand. +Solution: Move some lines to a separate function. (closes #9037) +Files: src/xxd/xxd.c + +Patch 8.2.3595 +Problem: Check for signed overflow might not work everywhere. +Solution: Limit to 32 bit int. (closes #9043, closes #9067) +Files: src/getchar.c + +Patch 8.2.3596 +Problem: Crash when using :pedit in Vim9 script. +Solution: Move check for arguments to after checking there are arguments. + (Yegappan Lakshmanan, closes #9134, closes #9135) +Files: src/popupwin.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3597 +Problem: Vim seems to hang when writing a very long text to a terminal + window. +Solution: Limit the amount of text based on 'termwinscroll'. (issue #9080) +Files: runtime/doc/options.txt, src/terminal.c + +Patch 8.2.3598 +Problem: RouterOS filetype is not recognized. +Solution: Add file and script patterns. (closes #9097) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3599 +Problem: Not all gdbinit files are recognized. +Solution: Add "gdbinit". (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3600 (after 8.2.3598) +Problem: Filetype test fails. +Solution: Add missing change. +Files: runtime/scripts.vim + +Patch 8.2.3601 +Problem: Check for overflow in put count does not work well. +Solution: Improve the overflow check. (Ozaki Kiichi, closes #9102) +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.3602 +Problem: Python3 test fails with Python 3.10 on MS-Windows. +Solution: Adjust the expected error. (Ken Takata, closes #9118) +Files: src/testdir/test_python3.vim + +Patch 8.2.3603 +Problem: Fish filetype not recognized. +Solution: Add a file pattern and match script line. (Doug Kearns) +Files: runtime/filetype.vim, runtime/scripts.vim, + src/testdir/test_filetype.vim + +Patch 8.2.3604 +Problem: Not all sudoers files are recognized. +Solution: Add a file pattern. (Doug Kearns, closes #1192) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3605 +Problem: Cannot clear and unlink a highlight group with hlset() in a + single call. +Solution: Add the "force" option. (Yegappan Lakshmanan, closes #9117) +Files: runtime/doc/eval.txt, src/highlight.c, + src/testdir/test_highlight.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3606 +Problem: File missing from list of distributed files. +Solution: Add the file. +Files: Filelist + +Patch 8.2.3607 +Problem: GTK3 screen updating is slow. +Solution: Remove some of the GTK3-specific code. (closes #9052) +Files: src/gui.h, src/gui_gtk_x11.c + +Patch 8.2.3608 +Problem: Users who type "q:" instead of ":q" are confused. +Solution: Add an autocmd to give a message that explains this is the + command-line window. (Egor Zvorykin, closes #9146) +Files: runtime/defaults.vim, src/testdir/test_autocmd.vim, + src/testdir/test_cmdline.vim + +Patch 8.2.3609 +Problem: Internal error when ModeChanged is triggered when v:event is + already in use. +Solution: Save and restore v:event if needed. +Files: src/misc1.c, src/proto/misc1.pro, src/testdir/test_edit.vim, + src/insexpand.c, src/structs.h, src/register.c + +Patch 8.2.3610 +Problem: Crash when ModeChanged triggered too early. +Solution: Trigger ModeChanged after setting VIsual. +Files: src/normal.c, src/testdir/test_edit.vim + +Patch 8.2.3611 +Problem: Crash when using CTRL-W f without finding a file name. +Solution: Bail out when the file name length is zero. +Files: src/findfile.c, src/normal.c, src/testdir/test_visual.vim + +Patch 8.2.3612 +Problem: Using freed memory with regexp using a mark. +Solution: Get the line again after getting the mark position. +Files: src/regexp.c, src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.3613 +Problem: :find test fails. +Solution: Put length check inside if block. +Files: src/findfile.c + +Patch 8.2.3614 +Problem: zindex of popup windows not used when redrawing popup menu. +Solution: Check the zindex when redrawing the popup menu. (closes #9129, + closes #9089) +Files: src/popupmenu.c, src/popupwin.c, src/proto/popupmenu.pro, + src/screen.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_popupmenu_masking_1.dump, + src/testdir/dumps/Test_popupwin_popupmenu_masking_2.dump + +Patch 8.2.3615 +Problem: When re-formatting with an indent expression the first line of a + paragraph may get the wrong indent. (Martin F. Krafft) +Solution: Apply the correct indenting function for the first line. + (Christian Brabandt, closes #9150, closes #9056) +Files: src/textformat.c, src/testdir/test_indent.vim + +Patch 8.2.3616 +Problem: Arglist test does not clear the argument list consistently. +Solution: Call Reset_arglist(). (Shougo Matsushita, closes #9154) +Files: src/testdir/test_arglist.vim + +Patch 8.2.3617 +Problem: ":verbose pwd" does not mention 'autochdir' was applied. +Solution: Remember the last chdir was done by 'autochdir'. (issue #9142) +Files: src/globals.h, src/buffer.c, src/ex_docmd.c, src/window.c, + src/main.c, src/netbeans.c, src/os_win32.c, + src/testdir/test_autochdir.vim + +Patch 8.2.3618 +Problem: getcwd() is unclear about how 'autochdir' is used. +Solution: Update the help for getcwd(). Without any arguments always return + the actual current directory. (closes #9142) +Files: runtime/doc/eval.txt, src/filepath.c, src/testdir/test_cd.vim + +Patch 8.2.3619 +Problem: Cannot use a lambda for 'operatorfunc'. +Solution: Support using a lambda or partial. (Yegappan Lakshmanan, + closes #8775) +Files: runtime/doc/map.txt, runtime/doc/options.txt, src/ops.c, + src/option.c, src/optionstr.c, src/proto/ops.pro, + src/proto/option.pro, src/quickfix.c, src/testdir/test_normal.vim + +Patch 8.2.3620 +Problem: Memory leak reported in libtlib. +Solution: Call del_curterm() when cleaning up memory. Rename term.h to + termdefs.h to avoid a name clash. +Files: src/term.c, src/proto/term.pro, src/alloc.c, src/configure.ac, + src/auto/configure, src/config.h.in, src/Makefile, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/term.h, src/termdefs.h + +Patch 8.2.3621 (after 8.2.3620) +Problem: Build failure. +Solution: Add missing change. +Files: src/vim.h + +Patch 8.2.3622 +Problem: "verbose pwd" shows confusing info when :lcd does not change + directory. +Solution: Clear last_chdir_reason also when the directory does not change. + (closes #9160) +Files: src/ex_docmd.c, src/testdir/test_autochdir.vim + +Patch 8.2.3623 +Problem: "$*" is expanded to "nonomatch". +Solution: Only add "set nonomatch" when using a csh-like shell. (Christian + Brabandt, closes #9159, closes #9153) +Files: src/os_unix.c, src/testdir/test_expand.vim + +Patch 8.2.3624 +Problem: When renaming a terminal buffer the status text is not updated. +Solution: Clear the cached status text when renaming a terminal buffer. + (closes #9162) +Files: src/buffer.c, src/terminal.c, src/proto/terminal.pro, + src/testdir/test_terminal.vim + +Patch 8.2.3625 +Problem: Illegal memory access when C-indenting. +Solution: Also set the cursor column. +Files: src/cindent.c, src/testdir/test_cindent.vim + +Patch 8.2.3626 +Problem: "au!" and "au! event" cannot be followed by another command as + documented. +Solution: When a bar is found set nextcmd. +Files: src/autocmd.c, src/testdir/test_autocmd.vim + +Patch 8.2.3627 +Problem: difficult to know where the text starts in a window. (Sergey + Vlasov) +Solution: Add the "textoff" entry in the result of getwininfo(). + (closes #9163) +Files: runtime/doc/eval.txt, src/evalwindow.c, + src/testdir/test_bufwintabinfo.vim + +Patch 8.2.3628 +Problem: Looking up terminal colors is a bit slow. +Solution: Cache the terminal colors. (closes #9130, closes #9058) +Files: src/highlight.c, src/libvterm/include/vterm.h, src/option.c, + src/optionstr.c, src/popupwin.c, src/proto/terminal.pro, + src/structs.h, src/terminal.c, src/window.c, + src/testdir/test_terminal3.vim, + src/testdir/dumps/Test_terminal_color_MyTermCol.dump, + src/testdir/dumps/Test_terminal_color_MyTermCol_over_Terminal.dump, + src/testdir/dumps/Test_terminal_color_MyWinCol.dump, + src/testdir/dumps/Test_terminal_color_MyWinCol_over_group.dump, + src/testdir/dumps/Test_terminal_color_Terminal.dump, + src/testdir/dumps/Test_terminal_color_gui_MyTermCol.dump, + src/testdir/dumps/Test_terminal_color_gui_MyWinCol.dump, + src/testdir/dumps/Test_terminal_color_gui_Terminal.dump, + src/testdir/dumps/Test_terminal_color_gui_transp_MyTermCol.dump, + src/testdir/dumps/Test_terminal_color_gui_transp_MyWinCol.dump, + src/testdir/dumps/Test_terminal_color_gui_transp_Terminal.dump, + src/testdir/dumps/Test_terminal_color_transp_MyTermCol.dump, + src/testdir/dumps/Test_terminal_color_transp_MyWinCol.dump, + src/testdir/dumps/Test_terminal_color_transp_Terminal.dump, + src/testdir/dumps/Test_terminal_popup_MyPopupHlCol.dump, + src/testdir/dumps/Test_terminal_popup_MyTermCol_over_Terminal.dump, + src/testdir/dumps/Test_terminal_popup_MyWinCol.dump, + src/testdir/dumps/Test_terminal_popup_MyWinCol_over_group.dump, + src/testdir/dumps/Test_terminal_popup_gui_MyPopupHlCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_MyTermCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_MyWinCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_Terminal.dump, + src/testdir/dumps/Test_terminal_popup_gui_transp_MyPopupHlCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_transp_MyTermCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_transp_MyWinCol.dump, + src/testdir/dumps/Test_terminal_popup_gui_transp_Terminal.dump, + src/testdir/dumps/Test_terminal_popup_transp_MyPopupHlCol.dump, + src/testdir/dumps/Test_terminal_popup_transp_MyTermCol.dump, + src/testdir/dumps/Test_terminal_popup_transp_MyWinCol.dump, + src/testdir/dumps/Test_terminal_popup_transp_Terminal.dump, + src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol.dump, + src/testdir/dumps/Test_terminal_wincolor_split_MyWinCol2.dump + +Patch 8.2.3629 +Problem: Command completion in cmdline window uses global user commands, + not local commands for the window where it was opened from. +Solution: Use local commands. (closes #9168) +Files: src/ex_getln.c, src/proto/ex_getln.pro, src/evalvars.c, + src/usercmd.c, src/testdir/test_ins_complete.vim + +Patch 8.2.3630 +Problem: Printf() with %S does not handle multi-byte correctly. +Solution: Count cells instead of bytes. (closes #9169, closes #7486) +Files: src/strings.c, src/testdir/test_expr.vim + +Patch 8.2.3631 +Problem: "syntax enable" does not work properly in Vim9 context. +Solution: Also handle Vim9 context. (closes #9161) +Files: src/syntax.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3632 +Problem: GTK3: undercurl does not get removed properly. +Solution: Set the cairo cursor first. (closes #9170) +Files: src/gui_gtk_x11.c + +Patch 8.2.3633 +Problem: Vim9: line number of lambda is off by one. +Solution: Add one to the line number. (closes #9083) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3634 +Problem: Error for already defined function uses wrong line number. +Solution: Set SOURCING_LNUM before giving the error message. (closes #9085) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3635 +Problem: GTK: composing underline does not show. +Solution: Include composing character in pango call. A few more + optimizations for ligatures. (Dusan Popovic, closes #9171, + closes #9147) +Files: src/gui_gtk_x11.c + +Patch 8.2.3636 +Problem: Coverity warns for unreachable code. +Solution: Remove unreachable else block. +Files: src/gui_gtk_x11.c + +Patch 8.2.3637 +Problem: Typos in test files. +Solution: Correct the typos. (Dominique Pell茅, closes #9175) +Files: src/testdir/runtest.vim, src/testdir/test_debugger.vim, + src/testdir/test_diffmode.vim, src/testdir/test_edit.vim, + src/testdir/test_excmd.vim, src/testdir/test_flatten.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_normal.vim, + src/testdir/test_options.vim, src/testdir/test_python2.vim, + src/testdir/test_python3.vim, src/testdir/test_quickfix.vim, + src/testdir/test_recover.vim, src/testdir/test_spellfile.vim, + src/testdir/test_syntax.vim, src/testdir/test_termcodes.vim, + src/testdir/test_textobjects.vim, src/testdir/test_trycatch.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_viminfo.vim + +Patch 8.2.3638 +Problem: getcompletion() always passes zero as position to custom + completion function. +Solution: Pass the pattern length. (closes #9173) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.3639 (after 8.2.2922) +Problem: Line commented out accidentally. +Solution: Uncomment. (Volodymyr Kot, closes #9172) +Files: src/main.c + +Patch 8.2.3640 +Problem: Freeze when calling term_wait() in a close callback. +Solution: Set a "closing" flag to tell term_wait() to return. (closes #9152) +Files: src/channel.c, src/terminal.c, src/proto/terminal.pro, + src/testdir/test_terminal.vim + +Patch 8.2.3641 +Problem: Xxd code has duplicate expressions. +Solution: Refactor to avoid duplication. (closes #9185) +Files: src/xxd/xxd.c + +Patch 8.2.3642 +Problem: List of distributed files is outdated. +Solution: Rename term.h to termdefs.h. +Files: Filelist + +Patch 8.2.3643 +Problem: Header for source file is outdated. +Solution: Make the header more accurate. (closes #9186) +Files: src/map.c, src/getchar.c + +Patch 8.2.3644 +Problem: Count for 'operatorfunc' in Visual mode is not redone. +Solution: Add the count to the redo buffer. (closes #9174) +Files: src/normal.c, src/proto/normal.pro, src/ops.c, + src/testdir/test_normal.vim + +Patch 8.2.3645 +Problem: Vim9: The "no effect" error is not given for all registers. +Solution: Include any character following '@'. (closes #8779) +Files: src/ex_eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3646 +Problem: Using <sfile> in a function gives an unexpected result. +Solution: Give an error in a Vim9 function. (issue #9189) +Files: src/scriptfile.c, src/errors.h, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3647 +Problem: GTK: when using ligatures the cursor is drawn wrong. +Solution: Clear more characters when ligatures are used. (Dusan Popovic, + closes #9190) +Files: src/gui.c + +Patch 8.2.3648 +Problem: "verbose pwd" is incorrect after dropping files on Vim. +Solution: Set the chdir reason to "drop". +Files: src/gui.c + +Patch 8.2.3649 +Problem: Vim9: error for variable declared in while loop. +Solution: Do not keep the first variable. (closes #9191) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3650 +Problem: Vim9: for loop variable can be a list member. +Solution: Check for valid variable name. (closes #9179) +Files: src/vim9compile.c, src/dict.c, src/eval.c, src/evalvars.c, + src/proto/evalvars.pro, src/testdir/test_vim9_script.vim + +Patch 8.2.3651 +Problem: Vim9: no error for :lock or :unlock with unknown variable. +Solution: Give an error. (closes #9188) +Files: src/evalvars.c, src/errors.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3652 +Problem: Can only get text properties one line at a time. +Solution: Add options to prop_list() to use a range of lines and filter by + types. (Yegappan Lakshmanan, closes #9138) +Files: runtime/doc/textprop.txt, src/textprop.c, + src/testdir/test_textprop.vim + +Patch 8.2.3653 +Problem: Terminal ANSI colors may be wrong. +Solution: Initialize the color type. (closes #9198, closes #9197) +Files: src/terminal.c + +Patch 8.2.3654 +Problem: GTK: a touch-drag does not update the selection. +Solution: Add GDK_BUTTON1_MASK to the state. (Chris Dalton, close #9196, + closes #9194) +Files: src/gui_gtk_x11.c + +Patch 8.2.3655 +Problem: Compiler warning for using size_t for int. +Solution: Add a type cast. (Mike Williams, closes #9199) +Files: src/vim9compile.c + +Patch 8.2.3656 +Problem: Vim9: no error for an environment variable by itself. +Solution: Give a "without effect" error. (closes #9166) +Files: src/ex_eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3657 +Problem: Vim9: debug text misses one line of return statement. +Solution: Add a line when not at a debug instruction. (closes #9137) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.3658 +Problem: Duplicate code in xxd. +Solution: Merge duplicated code. Add more tests. (closes #9192) +Files: src/xxd/xxd.c, src/testdir/test_xxd.vim + +Patch 8.2.3659 +Problem: Integer overflow with large line number. +Solution: Check for overflow. (closes #9202) +Files: src/errors.h, src/ex_docmd.c, src/testdir/test_excmd.vim + src/normal.c, src/testdir/test_normal.vim + +Patch 8.2.3660 (after 8.2.3659) +Problem: Overflow check uses wrong number. +Solution: Divide by ten. +Files: src/normal.c + +Patch 8.2.3661 (after 8.2.3659) +Problem: Test for put with large count fails. +Solution: Adjust the counts in the test. +Files: src/testdir/test_put.vim + +Patch 8.2.3662 +Problem: Illegal memory access if malloc() fails. +Solution: Check 'foldmethod' is not empty. (closes #9207) +Files: src/fold.c + +Patch 8.2.3663 +Problem: Using %S in printf() does not work correctly. +Solution: Fix the problem and add more tests. (closes #9208) +Files: src/strings.c, src/testdir/test_expr.vim + +Patch 8.2.3664 +Problem: Cannot adjust sign highlighting for 'cursorline'. +Solution: Add CursorLineSign and CursorLineFold highlight groups. + (Gregory Anders, closes #9201) +Files: runtime/doc/sign.txt, runtime/doc/syntax.txt, src/drawline.c, + src/highlight.c, src/optiondefs.h, src/popupwin.c, + src/proto/sign.pro, src/sign.c, src/structs.h, src/vim.h, + src/testdir/test_signs.vim + +Patch 8.2.3665 +Problem: Cannot use a lambda for 'tagfunc'. +Solution: Use 'tagfunc' like 'opfunc'. (Yegappan Lakshmanan, closes #9204) +Files: runtime/doc/options.txt, src/buffer.c, src/option.c, + src/optionstr.c, src/proto/tag.pro, src/structs.h, src/tag.c, + src/testdir/test_tagfunc.vim + +Patch 8.2.3666 +Problem: Libvterm is outdated. +Solution: Include patches from revision 769 to revision 789. +Files: Filelist, src/libvterm/Makefile, src/libvterm/doc/seqs.txt, + src/libvterm/include/vterm.h, src/libvterm/src/mouse.c, + src/libvterm/src/parser.c, src/libvterm/src/state.c, + src/libvterm/src/vterm.c, src/libvterm/src/vterm_internal.h, + src/libvterm/t/02parser.test, src/libvterm/t/17state_mouse.test, + src/libvterm/t/29state_fallback.test, + src/libvterm/t/40state_selection.test, src/libvterm/t/harness.c, + src/libvterm/t/run-test.pl, src/libvterm/vterm.pc.in, + src/terminal.c + +Patch 8.2.3667 +Problem: Building libvterm fails with MSVC. +Solution: Don't use C99 construct. +Files: src/libvterm/src/state.c + +Patch 8.2.3668 +Problem: Messages may be corrupted. +Solution: Use another buffer instead of IObuff. (Yegappan Lakshmanan, + closes #9195) +Files: src/highlight.c, src/testdir/test_highlight.vim + +Patch 8.2.3669 +Problem: Buffer overflow with long help argument. +Solution: Use snprintf(). +Files: src/help.c, src/testdir/test_help.vim + +Patch 8.2.3670 +Problem: Error checks repeated several times. +Solution: Move the checks to functions. (closes #9213) +Files: src/xxd/xxd.c + +Patch 8.2.3671 +Problem: Restarting Insert mode in prompt buffer too often when a callback + switches windows and comes back. (Sean Dewar) +Solution: Do not set "restart_edit" when already in Insert mode. + (closes #9212) +Files: src/window.c, src/testdir/test_prompt_buffer.vim + +Patch 8.2.3672 (after 8.2.3670) +Problem: Build failure with unsigned char. +Solution: Use int instead of char. +Files: src/xxd/xxd.c + +Patch 8.2.3673 +Problem: Crash when allocating signal stack fails. +Solution: Only using sourcing info when available. (closes #9215) +Files: src/globals.h, src/message.c + +Patch 8.2.3674 +Problem: When ml_get_buf() fails it messes up IObuff. +Solution: Return a local pointer. (closes #9214) +Files: src/memline.c + +Patch 8.2.3675 +Problem: Using freed memory when vim_strsave() fails. +Solution: Clear "last_sourcing_name". Check for msg_source() called + recursively. (closes #8217) +Files: src/message.c + +Patch 8.2.3676 +Problem: Unused runtime file. +Solution: Remove rgb.txt. +Files: runtime/rgb.txt + +Patch 8.2.3677 +Problem: After a put the '] mark is on the last byte of a multi-byte + character. +Solution: Move it to the first byte. (closes #9047) +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.3678 (after 8.2.3677) +Problem: Illegal memory access. +Solution: Ignore changed indent when computing byte offset. +Files: src/register.c + +Patch 8.2.3679 +Problem: objc file detected as Octave. (Antony Lee) +Solution: Detect objc by preprocessor lines. (Doug Kearns, closes #9223, + closes #9220) +Files: runtime/autoload/dist/ft.vim, src/testdir/test_filetype.vim + +Patch 8.2.3680 +Problem: Repeated code in xxd. +Solution: Change exit_on_ferror() to getc_or_die(). (closes #9226) +Files: src/xxd/xxd.c + +Patch 8.2.3681 +Problem: Cannot drag popup window after click on a status line. (Sergey + Vlasov) +Solution: Reset on_status_line. (closes #9221) +Files: src/mouse.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_drag_04.dump + +Patch 8.2.3682 +Problem: Vim9: assigning to a script variable drops the required type. +Solution: Lookup the type of the variable and use it. (closes #9219) +Files: src/evalvars.c, src/vim9script.c, src/proto/vim9script.pro, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3683 +Problem: Vim9: cannot use `=expr` in :...do commands. +Solution: Add EX_EXPAND to the commands. (closes #9232) +Files: src/ex_cmds.h, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3684 +Problem: Blockwise insert does not handle autoindent properly. +Solution: Adjust text column for indent. (closes #9229) +Files: src/ops.c, src/testdir/test_blockedit.vim + +Patch 8.2.3685 +Problem: Visual Studio project files are not recognized. +Solution: Use the xml file type. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3686 +Problem: Filetype detection often mixes up Forth and F#. +Solution: Add a function to inspect the file contents. (Doug Kearns) +Files: runtime/autoload/dist/ft.vim, runtime/doc/filetype.txt, + runtime/doc/syntax.txt, runtime/filetype.vim, runtime/scripts.vim, + src/testdir/test_filetype.vim + +Patch 8.2.3687 +Problem: Blockwise insert does not handle autoindent properly when tab is + inserted. +Solution: Adjust text column for indent before computing column. + (closes #9229) +Files: src/ops.c, src/testdir/test_blockedit.vim + +Patch 8.2.3688 +Problem: The window title is not updated when dragging the scrollbar. +Solution: Call maketitle(). (Christian Brabandt, closes #9238, closes #5383) +Files: src/gui.c + +Patch 8.2.3689 +Problem: ex_let_one() is too long. +Solution: Split into multiple functions. +Files: src/evalvars.c + +Patch 8.2.3690 +Problem: Vim9: "filter #pat# cmd" does not work. +Solution: Do not see #pat# as a comment. +Files: src/ex_docmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3691 +Problem: Build failure with small features. +Solution: Add #ifdef. (Dominique Pell茅) +Files: src/gui.c + +Patch 8.2.3692 +Problem: Vim9: cannot use :func inside a :def function. +Solution: Make it work. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, src/errors.h, + src/structs.h, src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3693 +Problem: Coverity warns for possibly using a NULL pointer. +Solution: Check for NULL and give an error. +Files: src/vim9execute.c, src/errors.h + +Patch 8.2.3694 +Problem: Cannot use quotes in the count of an Ex command. +Solution: Add getdigits_quoted(). Give an error when misplacing a quote in + a range. (closes #9240) +Files: src/ex_docmd.c, src/charset.c, src/proto/charset.pro, + src/testdir/test_usercommands.vim + +Patch 8.2.3695 +Problem: Confusing error for missing key. +Solution: Use the actual key for the error. (closes #9241) +Files: src/eval.c, src/testdir/test_listdict.vim + +Patch 8.2.3696 +Problem: Vim9: error for invalid assignment when skipping. +Solution: Do not check white space when skipping. (closes #9243) +Files: src/evalvars.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3697 +Problem: Cannot drag a popup without a border. +Solution: Add the "dragall" option. (closes #9218) +Files: runtime/doc/popup.txt, src/mouse.c, src/popupwin.c, src/vim.h, + src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_drag_05.dump, + src/testdir/dumps/Test_popupwin_drag_06.dump + +Patch 8.2.3698 +Problem: Match highlighting continues over breakindent. +Solution: Stop before the end column. (closes #9242) +Files: src/match.c, src/proto/match.pro, src/drawline.c, + src/testdir/test_match.vim, + src/testdir/dumps/Test_match_linebreak.dump + +Patch 8.2.3699 +Problem: The +title feature adds a lot of #ifdef but little code. +Solution: Graduate the +title feature. +Files: src/feature.h, src/alloc.c, src/arglist.c, src/autocmd.c, + src/buffer.c, src/bufwrite.c, src/change.c, src/drawscreen.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/gui.c, + src/gui_gtk_x11.c, src/if_xcmdsrv.c, src/locale.c, src/main.c, + src/misc2.c, src/netbeans.c, src/option.c, src/optionstr.c, + src/os_amiga.c, src/os_mswin.c, src/os_unix.c, src/os_win32.c, + src/regexp.c, src/term.c, src/ui.c, src/version.c, src/window.c, + src/globals.h, src/option.h, src/optiondefs.h, + runtime/doc/options.txt, runtime/doc/various.txt + +Patch 8.2.3700 +Problem: Text property highlighting continues over breakindent. +Solution: Stop before the end column. (closes #9242) +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_prop_linebreak.dump + +Patch 8.2.3701 +Problem: Vim9: invalid LHS is not possible. +Solution: Remove unreachable error message. +Files: src/vim9compile.c + +Patch 8.2.3702 +Problem: First key in dict is seen as curly expression and fails. +Solution: Ignore failure of curly expression. (closes #9247) +Files: src/typval.c, src/dict.c, src/testdir/test_listdict.vim + +Patch 8.2.3703 (after 8.2.3686) +Problem: Most people call F# "fsharp" and not "fs". +Solution: Rename filetype "fs" to "fsharp". +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.3704 +Problem: Vim9: cannot use a list declaration in a :def function. +Solution: Make it work. +Files: runtime/doc/vim9.txt, src/vim9compile.c, src/errors.h, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3705 +Problem: Cannot pass a lambda name to function() or funcref(). (Yegappan + Lakshmanan) +Solution: Handle a lambda name differently. +Files: src/userfunc.c, src/proto/userfunc.pro, src/evalfunc.c, + src/testdir/test_expr.vim + +Patch 8.2.3706 (after 8.2.3700) +Problem: Text property highlighting is used on Tab. +Solution: Only set in_linebreak when not on a Tab. (closes #9242) +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_prop_after_tab.dump + +Patch 8.2.3707 +Problem: Vim9: constant expression of elseif not recognized. +Solution: Set instruction count before generating the expression. +Files: src/vim9compile.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3708 (after 8.2.3707) +Problem: Vim9: test fails with different error. +Solution: Correct the error number. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.3709 +Problem: Vim9: backtick expression expanded when not desired. +Solution: Only expand a backtick expression for commands that expand their + argument. Remove a few outdated TODO comments. +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3710 +Problem: Vim9: backtick expression expanded for :global. +Solution: Check the following command. +Files: runtime/doc/vim9.txt, src/vim9compile.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3711 +Problem: Vim9: memory leak when compiling :elseif fails. +Solution: Cleanup ppconst. +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3712 +Problem: Cannot use Vim9 lambda for 'tagfunc'. +Solution: Make it work, add more tests. (Yegappan Lakshmanan, closes #9250) +Files: runtime/doc/options.txt, src/insexpand.c, src/option.c, + src/testdir/test_tagfunc.vim + +Patch 8.2.3713 +Problem: MS-Windows: No error message if vimgrep pattern is not matching. +Solution: Give an error message. (Christian Brabandt, closes #9245, + closes #8762) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.3714 +Problem: Some unused assignments and ugly code in xxd. +Solution: Leave out assignments. Use marcro for fprintf(). (closes #9246) +Files: src/xxd/xxd.c + +Patch 8.2.3715 +Problem: Vim9: valgrind reports spurious problems for a test. +Solution: Move the test to the set that is known to fail. +Files: src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_fails.vim + +Patch 8.2.3716 +Problem: Vim9: range without a command is not compiled. +Solution: Add the ISN_EXECRANGE byte code. +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/vim9compile.c, + src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3717 +Problem: Vim9: error for constant list size is only given at runtime. +Solution: Give the error at compile time if possible. +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3718 +Problem: Compiler warns for unused variable without the +textprop feature. + (John Marriott) +Solution: Adjust #ifdefs. +Files: src/drawline.c + +Patch 8.2.3719 +Problem: MS-Windows: test sometimes runs into existing swap file. +Solution: Use a different file name. +Files: src/testdir/test_buffer.vim + +Patch 8.2.3720 +Problem: Vim9: Internal error when invoking closure in legacy context. +Solution: Give a more appropriate error message. (closes #9251) +Files: src/errors.h, src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3721 +Problem: Using memory freed by losing the clipboard selection. (Dominique + Pell茅) +Solution: Check y_array is still valid after calling changed_lines(). + (closes #9253) +Files: src/errors.h, src/register.c + +Patch 8.2.3722 +Problem: Amiga: superfluous messages for freeing lots of yanked text. +Solution: Assume that the machine isn't that slow these days. +Files: src/register.c + +Patch 8.2.3723 +Problem: When using 'linebreak' a text property starts too early. +Solution: Decrement "bcol" when looking for property start. (closes #9242) +Files: src/drawline.c, src/testdir/test_textprop.vim, + src/testdir/dumps/Test_prop_after_linebreak.dump + +Patch 8.2.3724 +Problem: Build error for missing error message in small build. +Solution: Correct #ifdef. +Files: src/errors.h + +Patch 8.2.3725 +Problem: Cannot use a lambda for 'completefunc' and 'omnifunc'. +Solution: Implement lambda support. (Yegappan Lakshmanan, closes #9257) +Files: runtime/doc/options.txt, src/buffer.c, src/insexpand.c, + src/option.c, src/optionstr.c, src/proto/insexpand.pro, + src/proto/tag.pro, src/proto/userfunc.pro, src/structs.h, + src/tag.c, src/userfunc.c, src/testdir/test_ins_complete.vim, + src/testdir/test_tagfunc.vim + +Patch 8.2.3726 +Problem: README file in a config directory gets wrong filetype. +Solution: Match README before patterns that match everything in a directory. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3727 +Problem: In a gnome terminal keys are recognized as mouse events. +Solution: Only recognize DEC mouse events when four numbers are following. + (closes #9256) +Files: src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.3728 +Problem: Internal error when passing range() to list2blob(). +Solution: Materialize the list first. (closes #9262) +Files: src/blob.c, src/testdir/test_blob.vim + +Patch 8.2.3729 +Problem: No support for squirrels. +Solution: Recognize nuts. (closes #9259) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3730 +Problem: "/etc/Muttrc.d/README" gets filetype muttrc. +Solution: Move the Muttrc.d pattern down, add exception for *.rc files. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3731 +Problem: "set! termcap" shows codes in one column, but not keys. +Solution: Also use one column for keys. (closes #9258) +Files: src/option.c, src/term.c, src/proto/term.pro, + src/testdir/test_set.vim + +Patch 8.2.3732 (after 8.2.3731) +Problem: "set! termcap" test fails. +Solution: Account for keys without a t_xx entry. +Files: src/testdir/test_set.vim + +Patch 8.2.3733 +Problem: Vim9: using "legacy" before range does not work. +Solution: Skip over range before parsing command. (closes #9270) +Files: src/vim9compile.c, src/usercmd.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.3734 +Problem: Vim9: crash when no pattern match found. +Solution: Check for error. +Files: src/vim9execute.c + +Patch 8.2.3735 +Problem: Cannot use a lambda for 'imactivatefunc'. +Solution: Add lambda support for 'imactivatefunc' and 'imstatusfunc'. + (Yegappan Lakshmanan, closes #9275) +Files: runtime/doc/options.txt, src/alloc.c, src/gui_xim.c, + src/optionstr.c, src/proto/gui_xim.pro, + src/testdir/test_iminsert.vim, src/testdir/test_ins_complete.vim + +Patch 8.2.3736 +Problem: Test fails without the channel feature. (Dominique Pell茅) +Solution: Source the check.vim script. (closes #9277) +Files: src/testdir/test_vim9_fails.vim + +Patch 8.2.3737 +Problem: Test fails without the 'autochdir' option. +Solution: Check that the option is available. (Dominique Pell茅, closes #9272) +Files: src/testdir/test_cd.vim + +Patch 8.2.3738 +Problem: Screen is cleared when a FocusLost autocommand triggers. +Solution: Do not redraw when at the hit-enter or more prompt. (closes #9274) +Files: src/misc1.c + +Patch 8.2.3739 +Problem: In wrong directory when using win_execute() with 'acd' set. +Solution: Restore the directory when returning to the window. (closes #9276) +Files: src/window.c, src/testdir/test_autochdir.vim + +Patch 8.2.3740 +Problem: Memory left allocated on exit when using Tcl. +Solution: Call Tcl_Finalize(). +Files: src/if_tcl.c, src/proto/if_tcl.pro, src/alloc.c + +Patch 8.2.3741 +Problem: Using freed memory in open command. +Solution: Make a copy of the current line. +Files: src/ex_docmd.c, src/testdir/test_ex_mode.vim + +Patch 8.2.3742 +Problem: Dec mouse test fails without gnome terminfo entry. +Solution: Check if there is a gnome entry. Also fix 'acd' test on + MS-Windows. (Ozaki Kiichi, closes #9282) +Files: src/testdir/test_termcodes.vim, src/testdir/test_autochdir.vim + +Patch 8.2.3743 +Problem: ":sign" can add a highlight group without a name. +Solution: Give an error if the group name is missing. (closes #9280) +Files: src/sign.c, src/errors.h, src/testdir/test_signs.vim + +Patch 8.2.3744 +Problem: E854 is not tested; some spelling suggestions are not tested. +Solution: Add a couple of tests. (Dominique Pell茅, closes #9279) +Files: src/testdir/test_options.vim, src/testdir/test_spell.vim + +Patch 8.2.3745 +Problem: Autochdir test fails without the +channel feature. +Solution: Remove the ch_logfile() call. (Dominique Pell茅, closes #9281) +Files: src/testdir/test_autochdir.vim + +Patch 8.2.3746 +Problem: Cannot disassemble function starting with "debug" or "profile". +Solution: Check for white space following. (closes #9273) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3747 (after 8.2.3743) +Problem: Cannot remove highlight from an existing sign. (James McCoy) +Solution: Only reject empty argument for a new sign. +Files: src/sign.c, src/testdir/test_signs.vim + +Patch 8.2.3748 (after 8.2.3747) +Problem: Giving an error for an empty sign argument breaks a plugin. +Solution: Do not give an error. +Files: src/sign.c, src/errors.h, src/testdir/test_signs.vim + +Patch 8.2.3749 +Problem: Error messages are everywhere. +Solution: Move more error messages to errors.h and adjust the names. +Files: src/errors.h, src/regexp_bt.c, src/regexp.c, src/regexp_nfa.c, + src/globals.h, src/memfile.c, src/tag.c, src/getchar.c, + src/bufwrite.c, src/cmdexpand.c + +Patch 8.2.3750 +Problem: Error messages are everywhere. +Solution: Move more error messages to errors.h and adjust the names. +Files: src/globals.h, src/errors.h, src/blob.c, src/buffer.c, + src/channel.c, src/ex_docmd.c, src/job.c, src/list.c, src/mark.c, + src/misc1.c, src/os_unix.c, src/popupwin.c, src/register.c, + src/session.c, src/spellfile.c, src/term.c, src/userfunc.c + +Patch 8.2.3751 +Problem: Cannot assign a lambda to an option that takes a function. +Solution: Automatically convert the lambda to a string. (Yegappan + Lakshmanan, closes #9286) +Files: runtime/doc/options.txt, src/eval.c, src/proto/eval.pro, + src/evalvars.c, src/if_mzsch.c, src/if_ruby.c, src/if_tcl.c, + src/option.c, src/option.h, src/optiondefs.h, + src/proto/option.pro, src/spell.c, src/typval.c, + src/vim9compile.c, src/testdir/test_iminsert.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_tagfunc.vim + +Patch 8.2.3752 +Problem: Build error when using Photon GUI. +Solution: Adjust #ifdef. (closes #9288) +Files: src/beval.c + +Patch 8.2.3753 +Problem: Vim9: function unreferenced while called is never deleted. +Solution: Delete a function when no longer referenced. +Files: src/vim9execute.c, src/userfunc.c, src/proto/userfunc.pro + +Patch 8.2.3754 (after 8.2.3615) +Problem: Undesired changing of the indent of the first formatted line. +Solution: Do not indent the first formatted line. +Files: src/textformat.c, src/testdir/test_indent.vim + +Patch 8.2.3755 +Problem: Coverity warns for using a buffer in another scope. +Solution: Declare the buffer in a common scope. +Files: src/evalvars.c + +Patch 8.2.3756 +Problem: might crash when callback is not valid. +Solution: Check for valid callback. (Yegappan Lakshmanan, closes #9293) +Files: src/insexpand.c, src/option.c, src/tag.c, src/job.c, + src/userfunc.c, src/testdir/test_iminsert.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_tagfunc.vim + +Patch 8.2.3757 +Problem: An overlong highlight group name is silently truncated. +Solution: Give an error if the name is too long. (closes #9289) +Files: src/errors.h, src/highlight.c, src/testdir/test_highlight.vim + +Patch 8.2.3758 +Problem: Options that take a function insufficiently tested. +Solution: Add additional tests and enhance existing tests. (Yegappan + Lakshmanan, closes #9298) +Files: src/testdir/test_ins_complete.vim, src/testdir/test_normal.vim, + src/testdir/test_tagfunc.vim + +Patch 8.2.3759 +Problem: Quickfix buffer becomes hidden while still in a window. +Solution: Check if the closed window is the last window showing the quickfix + buffer. (Yegappan Lakshmanan, closes #9303, closes #9300) +Files: src/quickfix.c, src/testdir/test_quickfix.vim, src/window.c + +Patch 8.2.3760 +Problem: Not automatically handling gnome terminal mouse like xterm. +Solution: Default 'ttymouse' to "xterm" and recognize Focus events. + (issue #9296) +Files: src/os_unix.c + +Patch 8.2.3761 +Problem: Focus change is not passed on to a terminal window. +Solution: If the current window is a terminal and focus events are enabled + send a focus event escape sequence to the terminal. +Files: src/ui.c, src/terminal.c, src/proto/terminal.pro, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_focus_1.dump, + src/testdir/dumps/Test_terminal_focus_2.dump + +Patch 8.2.3762 +Problem: If the quickfix buffer is wiped out getqflist() still returns its + number. +Solution: Use zero if the buffer is no longer present. (Yegappan Lakshmanan, + closes #9306) +Files: src/quickfix.c, src/testdir/test_quickfix.vim + +Patch 8.2.3763 +Problem: When editing the command line a FocusLost callback may cause the + screen to scroll up. +Solution: Do not redraw at the last line but at the same place where the + command line was before. (closes #9295) +Files: src/ex_getln.c, src/ui.c, src/beval.c, src/channel.c, + src/drawscreen.c, src/proto/drawscreen.pro, src/job.c, + src/popupwin.c, src/sound.c, src/terminal.c, src/time.c, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_terminal_focus_1.dump, + src/testdir/dumps/Test_terminal_focus_2.dump, + src/testdir/dumps/Test_terminal_focus_3.dump + +Patch 8.2.3764 +Problem: Cannot see any text when window was made zero lines or zero + columns. +Solution: Ensure there is at least one line and column. (fixes #9307) +Files: src/window.c, src/proto/window.pro, src/normal.c, src/edit.c, + src/testdir/test_window_cmd.vim + +Patch 8.2.3765 +Problem: Vim9: cannot use a lambda for 'opfunc' and others. +Solution: Convert the lambda to a string. +Files: src/vim9compile.c, src/vim9.h, src/vim9execute.c, + src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3766 +Problem: Converting a funcref to a string leaves out "g:", causing the + meaning of the name depending on the context. +Solution: Prepend "g:" for a global function. +Files: src/eval.c, src/testdir/test_functions.vim + +Patch 8.2.3767 (after 8.2.3766) +Problem: Crash when using NULL partial. +Solution: Check for NULL. +Files: src/eval.c + +Patch 8.2.3768 +Problem: timer_info() has the wrong repeat value in a timer callback. + (Sergey Vlasov) +Solution: Do not add one to the repeat value when in the callback. + (closes #9294) +Files: src/time.c, src/testdir/test_timers.vim + +Patch 8.2.3769 +Problem: Zig files are not recognized. +Solution: Add *.zig. (Gregory Anders, closes #9313) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3770 +Problem: New compiler warnings from clang-12 and clang-13. +Solution: Adjust CI and suppress some warnings. (Ozaki Kiichi, closes #9314) +Files: .github/workflows/ci.yml, ci/config.mk.clang-12.sed, + src/os_unix.c, src/spellfile.c + +Patch 8.2.3771 +Problem: Vim9: accessing freed memory when checking type. +Solution: Make a copy of a function type. +Files: src/structs.h, src/evalvars.c, src/vim9script.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.3772 +Problem: Timer info test fails on slow machine. +Solution: Use WaitForAssert(). +Files: src/testdir/test_timers.vim + +Patch 8.2.3773 +Problem: Wrong window size when a modeline changes 'columns' and there is + more than one tabpage. (Michael Soyka) +Solution: Adjust the frames of all tabpages. (closes #9315) +Files: src/window.c + +Patch 8.2.3774 (after 8.2.3773) +Problem: Test for command line height fails. +Solution: Use another way to handle window size change. +Files: src/structs.h, src/window.c + +Patch 8.2.3775 +Problem: Vim9: lambda compiled without outer context when debugging. +Solution: When compiling a lambda for debugging also compile it without. + (closes #9302) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3776 +Problem: When a tags file line is long a tag may not be found. +Solution: When increasing the buffer size read the same line again. +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.2.3777 +Problem: Spell file write error not checked. +Solution: Check writing the prefix conditions. (Bjorn Linse, closes #9323) +Files: src/spellfile.c + +Patch 8.2.3778 +Problem: Lambda debug test fails in some configurations. +Solution: Check feature in a legacy function. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.3779 +Problem: Using freed memory when defining a user command from a user + command. +Solution: Do not use the command pointer after executing the command. + (closes #9318) +Files: src/usercmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.3780 +Problem: ":cd" works differently on MS-Windows. +Solution: Add the 'cdhome' option. (closes #9324) +Files: runtime/doc/editing.txt, runtime/doc/options.txt, + runtime/doc/quickref.txt, runtime/optwin.vim, src/ex_docmd.c, + src/option.h, src/optiondefs.h, src/testdir/runtest.vim, + src/testdir/test_options.vim + +Patch 8.2.3781 +Problem: The option window script is outdated. +Solution: Add several changes. +Files: runtime/optwin.vim + +Patch 8.2.3782 +Problem: Vim9: no error if a function shadows a script variable. +Solution: Check the function doesn't shadow a variable. (closes #9310) +Files: src/userfunc.c, src/evalvars.c, src/vim.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.3783 +Problem: Confusing error for using a variable as a function. +Solution: If a function is not found but there is a variable, give a more + useful error. (issue #9310) +Files: src/eval.c, src/userfunc.c, src/proto/userfunc.pro, + src/structs.h, src/vim9execute.c, src/testdir/test_functions.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.3784 +Problem: The help for options is outdated. +Solution: Include all the recent changes. +Files: runtime/doc/options.txt + +Patch 8.2.3785 +Problem: Running CI on macOS with gcc is not useful. +Solution: Only use clang. (Ozaki Kiichi, closes #9326) Also build with + normal features. +Files: .github/workflows/ci.yml + +Patch 8.2.3786 +Problem: Test fails because of using Vim9 syntax in legacy function. +Solution: Add "call". +Files: src/testdir/test_functions.vim + +Patch 8.2.3787 +Problem: No proper formatting of a C line comment after a statement. +Solution: Find the start of the line comment, insert the comment leader and + indent the comment properly. +Files: src/change.c, src/proto/change.pro, src/search.c, + src/proto/search.pro, src/cindent.c, src/edit.c, src/normal.c, + src/textformat.c, src/testdir/test_textformat.vim, + src/testdir/test_cindent.vim + +Patch 8.2.3788 +Problem: Lambda for option that is a function may be garbage collected. +Solution: Set a reference in the funcref. (Yegappan Lakshmanan, + closes #9330) +Files: src/eval.c, src/evalbuffer.c, src/evalvars.c, src/gui_xim.c, + src/insexpand.c, src/ops.c, src/proto/eval.pro, + src/proto/gui_xim.pro, src/proto/insexpand.pro, src/proto/ops.pro, + src/proto/tag.pro, src/quickfix.c, src/tag.c, + src/testdir/test_iminsert.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_normal.vim, src/testdir/test_quickfix.vim, + src/testdir/test_tagfunc.vim + +Patch 8.2.3789 +Problem: Test_window_minimal_size can fail on a slow machine. +Solution: Do not rely on timers firing at the expected time. (Ozaki Kiichi, + closes #9335) +Files: src/testdir/test_window_cmd.vim + +Patch 8.2.3790 +Problem: Test for term_gettitle() fails in some environments. +Solution: Make the digits after "VIM" optional. (Kenta Sato, closes #9334) +Files: src/testdir/test_terminal2.vim + +Patch 8.2.3791 +Problem: Build error with +cindent but without +smartindent. +Solution: Move declaration of "do_cindent". (John Marriott) +Files: src/change.c + +Patch 8.2.3792 +Problem: Setting *func options insufficiently tested. +Solution: Improve tests. (Yegappan Lakshmanan, closes #9337) +Files: src/testdir/test_iminsert.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_normal.vim, src/testdir/test_quickfix.vim, + src/testdir/test_tagfunc.vim + +Patch 8.2.3793 +Problem: Using "g:Func" as a funcref does not work in script context + because "g:" is dropped. +Solution: Keep "g:" in the name. Also add parenthesis to avoid confusing + operator precedence. (closes #9336) +Files: src/evalvars.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3794 +Problem: Vim9: cannot find script-local func using "s:". (Yegappan + Lakshmanan) +Solution: Skip the "s:". +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3795 +Problem: Too many #ifdefs. +Solution: Graduate the jumplist feature. +Files: runtime/doc/various.txt, runtime/doc/motion.txt, src/feature.h, + src/buffer.c, src/change.c, src/evalfunc.c, src/ex_docmd.c, + src/mark.c, src/normal.c, src/undo.c, src/version.c, + src/viminfo.c, src/window.c, src/structs.h, + src/testdir/test_changelist.vim, src/testdir/test_jumplist.vim, + src/testdir/test_normal.vim + +Patch 8.2.3796 +Problem: The funcexe_T struct members are not named consistently. +Solution: Prefix "fe_" to all the members. +Files: src/structs.h, src/eval.c, src/list.c, src/regexp.c, + src/terminal.c, src/userfunc.c, src/vim9execute.c + +Patch 8.2.3797 +Problem: No good reason to limit the message history in the tiny version. +Solution: Always use 200. +Files: runtime/doc/message.txt, src/feature.h + +Patch 8.2.3798 +Problem: A :def callback function postpones an error message. +Solution: Display the error after calling the function. (closes #9340) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim, + src/testdir/dumps/Test_opfunc_error.dump + +Patch 8.2.3799 (after 8.2.3798) +Problem: Edit test hangs or fails. +Solution: Do not rethrow an exception when inside try/catch. +Files: src/userfunc.c + +Patch 8.2.3800 +Problem: When cross compiling the output of "uname" cannot be set. (Ben + Reeves) +Solution: Use cache variables. (closes #9338) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.3801 +Problem: If a terminal shows in two windows, only one is redrawn. +Solution: Reset the dirty row range only after redrawing all windows. + (closes #9341) +Files: src/terminal.c, src/proto/terminal.pro, src/drawscreen.c, + src/testdir/test_terminal.vim + +Patch 8.2.3802 +Problem: Terminal in two windows test fails on some systems. +Solution: Wait a bit between commands. +Files: src/testdir/test_terminal.vim + +Patch 8.2.3803 +Problem: Crash when 'writedelay' is set and using a terminal window to + execute a shell command. +Solution: Check that "tl_vterm" isn't NULL. (closes #9346) +Files: src/terminal.c + +Patch 8.2.3804 +Problem: Script context not set when copying 'swf' and 'ts'. +Solution: Use COPY_OPT_SCTX with the right argument. (closes #9347) +Files: src/option.c + +Patch 8.2.3805 +Problem: i3config files are not recognized. +Solution: Add patterns to match i3config files. (Quentin Hibon, + closes #7969) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3806 +Problem: Terminal focus test fails sometimes. +Solution: Run the test function before others. +Files: src/testdir/test_terminal.vim + +Patch 8.2.3807 +Problem: Vim9: can call import with star directly. +Solution: Check that the import used star. +Files: src/userfunc.c, src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3808 +Problem: Vim9: obsolete TODO items +Solution: Remove the comments. +Files: src/vim9execute.c + +Patch 8.2.3809 +Problem: Vim9: crash when garbage collecting a nested partial. (Virginia + Senioria) +Solution: Set references in all the funcstacks. (closes #9348) +Files: src/vim9execute.c, src/proto/vim9execute.pro, src/structs.h, + src/eval.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3810 +Problem: Vim9: expr4 test fails on MS-Windows. +Solution: Do not give an error for a missing function name when skipping. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3811 +Problem: The opfunc error test fails on a slow machine. +Solution: Use WaitForAssert(). +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.3812 +Problem: Vim9: leaking memory in numbered function test. +Solution: Skip "g:" when checking for numbered function. Clean up after + errors properly. +Files: src/userfunc.c + +Patch 8.2.3813 +Problem: confusing error when using :cc without error list. (Gary Johnson) +Solution: Give the "no errors" error. +Files: src/ex_docmd.c, src/testdir/test_quickfix.vim + +Patch 8.2.3814 +Problem: .csx files and .sln files are not recognized. +Solution: Add filetype patterns. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3815 +Problem: Vim9: cannot have a multi-line dict inside a block. +Solution: Do not split the command at a line break, handle NL characters + as white space. +Files: src/ex_docmd.c, src/charset.c, src/proto/charset.pro, + src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3816 +Problem: Compiler warning for possible loss of data on MS-Windows. +Solution: Add type cast. (Mike Williams, closes #9349) +Files: src/userfunc.c + +Patch 8.2.3817 (after 8.2.3815) +Problem: Vim9: Not using NL as command end does not work for :autocmd. +Solution: Only ignore NL for commands with an expression argument. +Files: src/ex_cmds.h, src/ex_docmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.3818 +Problem: Cannot filter or map characters in a string. +Solution: Make filter() and map() work on a string. (Naruhiko Nishino, + closes #9327) +Files: runtime/doc/eval.txt, src/errors.h, src/list.c, + src/testdir/test_filter_map.vim + +Patch 8.2.3819 (after 8.2.3818) +Problem: Test fails because error message changed. +Solution: Update screendumps. +Files: src/testdir/dumps/Test_popupwin_three_errors_1.dump, + src/testdir/dumps/Test_popupwin_three_errors_2.dump + +Patch 8.2.3820 +Problem: "vrc" does not replace composing characters, while "rc" does. +Solution: Check the byte length including composing characters. + (closes #9351) +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.2.3821 +Problem: ASAN test run fails. +Solution: Use asan_symbolize-13 instead of asan_symbolize-11. +Files: .github/workflows/ci.yml + +Patch 8.2.3822 +Problem: Leaking memory in map() and filter(), cannot use a string argument + in Vim9 script. +Solution: Fix the leak, adjust the argument check, also run the tests as + Vim9 script. (Yegappan Lakshmanan, closes #9354) +Files: src/errors.h, src/evalfunc.c, src/list.c, src/proto/typval.pro, + src/testdir/test_filter_map.vim, + src/testdir/test_vim9_builtin.vim, src/typval.c + +Patch 8.2.3823 +Problem: Test for visual replace is in wrong function. +Solution: Move it to another function. +Files: src/testdir/test_visual.vim + +Patch 8.2.3824 +Problem: No ASAN support for MSVC. +Solution: Add ASAN support and fix a couple of uncovered problems. (Yegappan + Lakshmanan, closes #9357) +Files: src/Make_mvc.mak, src/findfile.c, src/os_mswin.c, + src/testdir/test_fnamemodify.vim + +Patch 8.2.3825 +Problem: Various comments could be improved. +Solution: Improve the comments. +Files: src/getchar.c, src/mbyte.c, src/regexp_nfa.c, + src/testdir/test_edit.vim, src/gui_motif.c + +Patch 8.2.3826 +Problem: Vim9: using "g:Func" as a funcref does not work in a :def + function. +Solution: Include "g:" in the function name. (closes #9336) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3827 +Problem: Huntr badge does not really fit in the list. +Solution: Move the link to Huntr to the issue template. +Files: Filelist, .github/ISSUE_TEMPLATE/bug_report.yml, README.md + +Patch 8.2.3828 +Problem: when opening a terminal from a timer the first typed character + is lost. (Virginia Senioria) +Solution: When opening a terminal while waiting for a character put K_IGNORE + in the input buffer. +Files: src/terminal.c, src/edit.c, src/testdir/test_terminal.vim + +Patch 8.2.3829 +Problem: No error when setting a func option to a script-local function. +Solution: Give an error if the name starts with "s:". (closes #9358) +Files: src/option.c, src/testdir/test_tagfunc.vim, + src/testdir/dumps/Test_set_tagfunc_on_cmdline.dump + +Patch 8.2.3830 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/globals.h, src/errors.h, src/buffer.c, src/dict.c, src/diff.c, + src/digraph.c, src/eval.c, src/evalfunc.c, src/evalvars.c, + src/misc2.c, src/quickfix.c, src/typval.c, src/ui.c, + src/userfunc.c, src/vim9compile.c, src/vim9execute.c, + src/vim9type.c, src/window.c + +Patch 8.2.3831 +Problem: Opfunc test fails when missing feature changes function name. + (Dominique Pell茅) +Solution: Check the relevant screen line instead of using a screendump. + (closes #9360) +Files: src/testdir/test_vim9_func.vim, + src/testdir/dumps/Test_opfunc_error.dump + +Patch 8.2.3832 (after 8.2.3830) +Problem: Test fails because of changed error message. +Solution: Adjust the expected error message. +Files: src/testdir/test_vimscript.vim + +Patch 8.2.3833 +Problem: Error from term_start() not caught by try/catch. +Solution: save and restore did_emsg when applying autocommands. (Ozaki + Kiichi, closes #9361) +Files: src/autocmd.c, src/testdir/test_terminal3.vim + +Patch 8.2.3834 +Problem: Test_out_cb often fails on Mac. +Solution: Increase the timeout with every retry. +Files: src/testdir/test_channel.vim + +Patch 8.2.3835 +Problem: The inline-function example does not work. +Solution: Drop ":let". Add EX_EXPR_ARG to CMD_var. (issue #9352) +Files: runtime/doc/vim9.txt, src/ex_cmds.h, + src/testdir/test_vim9_expr.vim + +Patch 8.2.3836 +Problem: Vim9: comment after expression not skipped to find NL. +Solution: After evaluating an expression look for a newline after a # + comment. +Files: src/eval.c + +Patch 8.2.3837 +Problem: QNX: crash when compiled with GUI but using terminal. +Solution: Check gui.in_use is set. (Hirohito Higashi, closes #9363) +Files: src/autocmd.c + +Patch 8.2.3838 +Problem: Cannot use script-local function for setting *func options. +Solution: Use the script context. (Yegappan Lakshmanan, closes #9362) +Files: src/option.c, src/testdir/dumps/Test_set_tagfunc_on_cmdline.dump, + src/testdir/test_ins_complete.vim, src/testdir/test_normal.vim, + src/testdir/test_quickfix.vim, src/testdir/test_tagfunc.vim + +Patch 8.2.3839 +Problem: Using \z() with \z1 not tested for syntax highlighting. +Solution: Add a test. (Dominique Pell茅, closes #9365) +Files: src/testdir/test_syntax.vim + +Patch 8.2.3840 +Problem: Useless test for negative index in check functions. +Solution: Remove the test for negative index. (Naruhiko Nishino, + closes #9364) +Files: src/typval.c + +Patch 8.2.3841 +Problem: Vim9: outdated TODO items, disabled tests that work. +Solution: Remove TODO items, run tests that work now. Check that a dict + item isn't locked. +Files: src/vim9execute.c, src/evalvars.c, src/errors.h, src/globals.h, + src/testdir/test_listdict.vim, src/testdir/test_vim9_assign.vim + +Patch 8.2.3842 +Problem: Vim9: can change locked list and list items. +Solution: Check that a list and list item isn't locked. +Files: src/vim9execute.c, src/testdir/test_listdict.vim + +Patch 8.2.3843 +Problem: Dep3patch files are not recognized. +Solution: Recognize dep3patch files by their location and content. (James + McCoy, closes #9367) +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.3844 +Problem: Vim9: no type error if assigning a value with type func(number) to + a variable of type func(string). +Solution: Use check_type_maybe(): return MAYBE if a runtime type check is + useful. (issue #8492) +Files: src/vim9type.c, src/proto/vim9type.pro, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3845 +Problem: Vim9: test fails when the channel feature is missing. +Solution: Check for the channel feature. (Dominique Pell茅, closes #9368) +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.3846 +Problem: No error when using control character for 'lcs' or 'fcs'. +Solution: Use char2cells() to check the width. (closes #9369) +Files: src/screen.c, src/testdir/test_display.vim, + src/testdir/test_listchars.vim + +Patch 8.2.3847 +Problem: Illegal memory access when using a lambda with an error. +Solution: Avoid skipping over the NUL after a string. +Files: src/eval.c, src/testdir/test_lambda.vim + +Patch 8.2.3848 +Problem: Cannot use reduce() for a string. +Solution: Make reduce() work with a string. (Naruhiko Nishino, closes #9366) +Files: runtime/doc/eval.txt, src/errors.h, src/evalfunc.c, src/list.c, + src/typval.c, src/proto/typval.pro, src/testdir/test_listdict.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3849 +Problem: Functions implementing reduce and map are too long. +Solution: Use a function for each type of value. Add a few more test cases + and add to the help. (Yegappan Lakshmanan, closes #9370) +Files: runtime/doc/eval.txt, src/list.c, src/testdir/test_listdict.vim + +Patch 8.2.3850 +Problem: Illegal memory access when displaying a partial. +Solution: Terminate the string with a NUL. (closes #9371) +Files: src/eval.c, src/testdir/test_messages.vim + +Patch 8.2.3851 +Problem: Vim9: overhead when comparing string, dict or function. +Solution: Call the intended compare function directly. Refactor to avoid + duplicated code. +Files: src/vim9execute.c, src/typval.c, src/proto/typval.pro + +Patch 8.2.3852 +Problem: Vim9: not enough tests. +Solution: Also run existing tests for Vim9 script. Make errors more + consistent. +Files: src/testdir/test_listdict.vim, src/eval.c, src/vim9compile.c, + src/errors.h + +Patch 8.2.3853 +Problem: Vim9: not enough tests. +Solution: Run more existing tests for Vim9 script. +Files: src/testdir/test_listdict.vim + +Patch 8.2.3854 +Problem: Vim9: inconsistent arguments for test functions. +Solution: When :def function and script have different arguments use a list + with two items instead of a separate function. +Files: src/testdir/vim9.vim, src/testdir/test_execute_func.vim, + src/testdir/test_float_func.vim, src/testdir/test_functions.vim, + src/testdir/test_glob2regpat.vim, src/testdir/test_listdict.vim, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.3855 +Problem: Illegal memory access when displaying a blob. +Solution: Append a NUL at the end. (Yegappan Lakshmanan, closes #9372) +Files: src/blob.c, src/regexp_nfa.c, src/testdir/test_blob.vim, + src/testdir/test_messages.vim + +Patch 8.2.3856 +Problem: Vim9: not enough tests. +Solution: Run more expression tests also with Vim9. Fix an uncovered + problem. +Files: src/vim9compile.c, src/testdir/test_expr.vim, src/testdir/vim9.vim + +Patch 8.2.3857 +Problem: Vim9: inconsistent error for using function(). +Solution: Use a runtime type check for the result of function(). + (closes #8492) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3858 +Problem: Vim9: not enough tests. +Solution: Add tests for :try/:catch and :redir. Add missing type check. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.3859 +Problem: Vim9: some code lines not tested. +Solution: Add a few specific tests. +Files: src/vim9compile.c, src/testdir/test_vim9_cmd.vim, src/errors.h, + src/testdir/test_vim9_script.vim + +Patch 8.2.3860 +Problem: Vim9: codecov struggles with the file size. +Solution: Split vim9compile.c into four files. +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9instr.c, + src/proto/vim9instr.pro, src/vim9expr.c, src/proto/vim9expr.pro, + src/vim9cmds.c, src/proto/vim9cmds.pro, src/vim9.h, + src/vim9execute.c, src/vim9script.c, src/proto.h, + src/Makefile, src/Make_ami.mak, src/Make_cyg_ming.mak, + src/Make_mvc.mak, src/Make_vms.mms + +Patch 8.2.3861 +Problem: List of distributed files is outdated. +Solution: Add new files. +Files: Filelist + +Patch 8.2.3862 +Problem: Crash on exit with EXITFREE and using win_execute(). +Solution: Also save and restore tp_topframe. (issue #9374) +Files: src/evalwindow.c, src/testdir/test_execute_func.vim + +Patch 8.2.3863 (after 8.2.3860) +Problem: Various build flags accidentally enabled. +Solution: Revert several lines in Makefile. +Files: src/Makefile + +Patch 8.2.3864 +Problem: Cannot disable requesting key codes from xterm. +Solution: Add the 'xtermcodes' option, default on. +Files: runtime/doc/options.txt, runtime/doc/term.txt, src/option.h, + src/optiondefs.h, src/term.c, runtime/optwin.vim + +Patch 8.2.3865 +Problem: Vim9: compiler complains about using "try" as a struct member. +Solution: Rename "try" to "tryref". +Files: src/vim9.h, src/vim9cmds.c, src/vim9execute.c, src/vim9instr.c + +Patch 8.2.3866 +Problem: Vim9: type checking global variables is inconsistent. +Solution: Use the "unknown" type in more places. +Files: src/globals.h, src/vim9expr.c, src/vim9instr.c, src/vim9cmds.c, + src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3867 +Problem: Implementation of some list functions too complicated. +Solution: Refactor do_sort_uniq(), f_count() and extend() (Yegappan + Lakshmanan, closes #9378) +Files: src/list.c + +Patch 8.2.3868 (after 8.2.3866) +Problem: Vim9: function test fails. +Solution: Add missing changes. Add test for earlier patch. +Files: src/vim9type.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3869 +Problem: Vim9: type checking for "any" is inconsistent. +Solution: Always use a runtime type check for using "any" for a more + specific type. +Files: src/vim9type.c, src/vim9compile.c, src/vim9expr.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.3870 +Problem: MS-Windows: wrong working directory when opening two files with + right-click context menu. (Gabriel Dupras) +Solution: Use the working directory and pass it on to the process creation. + (Nir Lichtman, closes #9382, closes #8874) +Files: src/GvimExt/gvimext.cpp, src/GvimExt/gvimext.h + +Patch 8.2.3871 +Problem: List.c contains code for dict and blob. +Solution: Refactor to put code where it belongs. (Yegappan Lakshmanan, + closes #9386) +Files: src/blob.c, src/dict.c, src/list.c, src/proto/blob.pro, + src/proto/dict.pro, src/proto/list.pro, src/proto/strings.pro, + src/strings.c, src/structs.h, src/testdir/test_filter_map.vim, + src/testdir/test_listdict.vim, src/testdir/test_sort.vim + +Patch 8.2.3872 +Problem: Vim9: finddir() and uniq() return types can be more specific. +Solution: Adjust the return type. +Files: src/evalfunc.c, src/testdir/vim9.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3873 +Problem: go.mod files are not recognized. +Solution: Check for the file name. (closes #9380) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3874 +Problem: Cannot highlight the number column for a sign. +Solution: Add the "numhl" argument. (James McCoy, closes #9381) +Files: runtime/doc/options.txt, runtime/doc/sign.txt, src/drawline.c, + src/popupwin.c, src/proto/sign.pro, src/sign.c, src/structs.h, + src/testdir/test_signs.vim + +Patch 8.2.3875 +Problem: gcc complains about buffer overrun. +Solution: Use mch_memmove() instead of STRCPY(). (John Marriott) +Files: src/dict.c + +Patch 8.2.3876 +Problem: 'cindent' does not recognize inline namespace. +Solution: Skip over "inline" to find "namespace". (closes #9383) +Files: src/cindent.c, src/testdir/test_cindent.vim + +Patch 8.2.3877 +Problem: Function does not abort after a type error in compare +Solution: Check getting number fails. (closes #9384) +Files: src/typval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.3878 +Problem: Vim9: debugger tries to read more lines than there are. +Solution: Check the number of lines. (closes #9394) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.3879 +Problem: getreg() and getregtype() contain dead code. +Solution: Remove the needless check. (closes #9392) Also refactor to put + common code in a shared function. +Files: src/evalfunc.c + +Patch 8.2.3880 +Problem: Solution filter files are not recognized. +Solution: Add pattern *.slnf and use json. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3881 +Problem: QNX: crash when compiled with GUI but using terminal. +Solution: Check the gui.in_use flag. (Hirohito Higashi, closes #9391) +Files: src/main.c + +Patch 8.2.3882 (after 8.2.3879) +Problem: More duplicated code in f_getreginfo(). +Solution: Also use getreg_get_regname(). (closes #9398) +Files: src/evalfunc.c + +Patch 8.2.3883 +Problem: Crash when switching to other regexp engine fails. +Solution: Check for regprog being NULL. +Files: src/ex_cmds.c + +Patch 8.2.3884 +Problem: Crash when clearing the argument list while using it. +Solution: Lock the argument list for ":all". +Files: src/arglist.c, src/testdir/test_arglist.vim + +Patch 8.2.3885 +Problem: Arglist test fails. +Solution: Adjust for locking the arglist for ":all". +Files: src/testdir/test_arglist.vim + +Patch 8.2.3886 +Problem: Can define autocmd for every event by using "au!". +Solution: Check if a command is present also for "au!". +Files: src/autocmd.c, src/testdir/test_autocmd.vim, + src/testdir/test_arglist.vim + +Patch 8.2.3887 +Problem: E1135 is used for two different errors. +Solution: Renumber one error. +Files: src/errors.h, src/testdir/test_mapping.vim + +Patch 8.2.3888 +Problem: The argument list may contain duplicates. +Solution: Add the :argdedeupe command. (Nir Lichtman, closes #6235) +Files: runtime/doc/editing.txt, runtime/doc/index.txt, src/arglist.c, + src/ex_cmdidxs.h, src/ex_cmds.h, src/proto/arglist.pro, + src/testdir/test_arglist.vim + +Patch 8.2.3889 +Problem: Duplicate code for translating script-local function name. +Solution: Move the code to get_scriptlocal_funcname(). (Yegappan Lakshmanan, + closes #9393) +Files: src/evalfunc.c, src/evalvars.c, src/option.c, src/userfunc.c, + src/proto/userfunc.pro, src/testdir/test_expr.vim, + src/testdir/test_normal.vim + +Patch 8.2.3890 +Problem: Vim9: type check for using v: variables is basic. +Solution: Specify a more precise type. +Files: src/evalvars.c, src/proto/evalvars.pro, src/vim9instr.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.3891 +Problem: Github CI: workflows may overlap. +Solution: Cancel previous workflows when starting a new one. (Yegappan + Lakshmanan, closes #9400) +Files: .github/workflows/ci.yml, .github/workflows/codeql-analysis.yml + +Patch 8.2.3892 +Problem: When modifyOtherKeys is used CTRL-C is not recognized. +Solution: Check for uppercase C as well, fix minimum length. +Files: src/ui.c + +Patch 8.2.3893 +Problem: Vim9: many local variables are initialized with an instruction. +Solution: Initialize local variables to zero to avoid the instructions. +Files: src/vim9execute.c, src/vim9compile.c, src/vim9instr.c, + src/proto/vim9instr.pro, src/vim9cmds.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3894 +Problem: Vim9: no proper type check for first argument of call(). +Solution: Add specific type check. +Files: src/evalfunc.c, src/typval.c, src/proto/typval.pro, + src/errors.h, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3895 +Problem: Vim9: confusing error when using function() with a number. +Solution: Check for a function or string argument. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3896 +Problem: Vim9: no test for nested function not available later. +Solution: Add a test. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.3897 +Problem: Vim9: the second argument of map() and filter() is not checked at + compile time. +Solution: Add more specific type check for the second argument. +Files: src/evalfunc.c, src/globals.h, src/list.c, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.3898 +Problem: Vim9: not sufficient testing for variable initialization. +Solution: Add another test case. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3899 (after 8.2.3897) +Problem: Vim9: test for map() on string fails. +Solution: Expect string return type. +Files: src/evalfunc.c + +Patch 8.2.3900 +Problem: It is not easy to use a script-local function for an option. +Solution: recognize s: and <SID> at the start of the expression. (Yegappan + Lakshmanan, closes #9401) +Files: runtime/doc/diff.txt, runtime/doc/fold.txt, + runtime/doc/options.txt, runtime/doc/print.txt, src/optionstr.c, + src/testdir/test_diffmode.vim, src/testdir/test_edit.vim, + src/testdir/test_fold.vim, src/testdir/test_gf.vim, + src/testdir/test_gui.vim, src/testdir/test_hardcopy.vim, + src/testdir/test_normal.vim + +Patch 8.2.3901 +Problem: Vim9: Cannot set 'cpo' in main .vimrc if using Vim9 script. +Solution: Do not restore 'cpo' at the end of the main .vimrc. +Files: runtime/doc/vim9.txt, runtime/doc/options.txt, src/scriptfile.c, + src/structs.h, src/testdir/test_vim9_script.vim + +Patch 8.2.3902 +Problem: Vim9: double free with nested :def function. +Solution: Pass "line_to_free" from compile_def_function() and make sure + cmdlinep is valid. +Files: src/vim9compile.c, src/userfunc.c, src/proto/userfunc.pro, + src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3903 +Problem: "gM" does not count tabs as expected. +Solution: Use linetabsize() instead of mb_string2cells(). (closes #9409) +Files: src/normal.c, src/testdir/test_normal.vim + +Patch 8.2.3904 +Problem: Vim9: skip expression type is not checked at compile time. +Solution: Add argument type checks. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3905 +Problem: Dockerfile using prefix name not recognized. +Solution: Recognize Dockerfile.*. (closes #9410) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3906 +Problem: Vim9 help still contains "under development" warnings. +Solution: Remove the explicit warning. +Files: runtime/doc/vim9.txt + +Patch 8.2.3907 +Problem: Error messages are spread out. +Solution: Move error messages to errors.h. Avoid duplicates. +Files: src/userfunc.c, src/ex_cmds.c, src/viminfo.c, src/errors.h, + src/testdir/test_user_func.vim + +Patch 8.2.3908 +Problem: Cannot use a script-local function for 'foldtext'. +Solution: Expand "s:" and "<SID>". (Yegappan Lakshmanan, closes #9411) +Files: runtime/doc/fold.txt, src/optionstr.c, src/strings.c, + src/testdir/test_blob.vim, src/testdir/test_expr.vim, + src/testdir/test_filter_map.vim, src/testdir/test_fold.vim, + src/testdir/test_listdict.vim + +Patch 8.2.3909 +Problem: Containerfile using prefix name not recognized. +Solution: Recognize Containerfile.*. +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3910 +Problem: When the compare function of sort() produces and error then sort() + does not abort. +Solution: Check if did_emsg was incremented. +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3911 +Problem: Vim9: type check for filter() does not accept unknown. +Solution: Also accept unknown for the return type. (closes #9413) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3912 +Problem: The ins_complete() function is much too long. +Solution: Split it up into multiple functions. (Yegappan Lakshmanan, + closes #9414) +Files: src/insexpand.c + +Patch 8.2.3913 +Problem: Help for expressions does not mention Vim9 syntax. +Solution: Add the rules for Vim9 to the expression help. Rename functions + to match the help. +Files: runtime/doc/vim9.txt, runtime/doc/eval.txt, src/vim9expr.c + +Patch 8.2.3914 +Problem: Various spelling mistakes in comments. +Solution: Fix the mistakes. (Dominique Pell茅, closes #9416) +Files: src/alloc.c, src/blowfish.c, src/buffer.c, src/cindent.c, + src/clipboard.c, src/diff.c, src/drawline.c, src/edit.c, + src/ex_cmds.c, src/ex_docmd.c, src/findfile.c, src/fold.c, + src/getchar.c, src/gui.c, src/gui_athena.c, src/gui_gtk.c, + src/gui_motif.c, src/gui_photon.c, src/gui_w32.c, src/gui_xmebw.c, + src/if_python.c, src/if_python3.c, src/if_xcmdsrv.c, src/main.c, + src/memline.c, src/menu.c, src/message.c, src/misc1.c, src/move.c, + src/option.c, src/os_amiga.c, src/os_mac.h, src/os_mac_conv.c, + src/os_mswin.c, src/os_unix.c, src/os_win32.c, src/os_win32.h, + src/quickfix.c, src/regexp_nfa.c, src/screen.c, src/scriptfile.c, + src/spell.c, src/spellfile.c, src/spellsuggest.c, src/strings.c, + src/term.c, src/terminal.c, src/testdir/test_debugger.vim, + src/testdir/test_source.vim, src/textformat.c, src/userfunc.c, + src/vim.h, src/vim9.h, src/vim9cmds.c, src/vim9execute.c, + src/winclip.c, src/window.c + +Patch 8.2.3915 +Problem: illegal memory access when completing with invalid bytes. +Solution: Avoid going over the end of the completion text. +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.3916 +Problem: No error for passing an invalid line number to append(). +Solution: In Vim9 script check for a non-negative number. (closes #9417) +Files: src/evalbuffer.c, src/textprop.c, src/errors.h, src/indent.c, + src/eval.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3917 +Problem: The eval.txt help file is way too big. +Solution: Move the builtin function details to a separate file. +Files: runtime/doc/eval.txt, runtime/doc/builtin.txt, + runtime/doc/Makefile, runtime/doc/help.txt, runtime/doc/remote.txt + +Patch 8.2.3918 (after 8.2.3916) +Problem: Function list test fails. +Solution: Adjust the test for the new location of the function list. +Files: src/testdir/test_function_lists.vim + +Patch 8.2.3919 +Problem: Vim9: wrong argument for append() results in two errors. +Solution: Check did_emsg. Also for setline(). Adjust the help for + appendbufline(). +Files: runtime/doc/builtin.txt, src/evalbuffer.c, src/typval.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3920 +Problem: Restoring directory after using another window is inefficient. +Solution: Only restore the directory for win_execute(). Apply 'autochdir' + only when needed. +Files: src/evalwindow.c, src/testdir/test_autochdir.vim + +Patch 8.2.3921 +Problem: The way xdiff is used is inefficient. +Solution: Use hunk_func instead of the out_line callback. (Lewis Russell, + closes #9344) +Files: src/diff.c + +Patch 8.2.3922 +Problem: Cannot build with dynamic Ruby 3.1. +Solution: Add "_EXTRA" variables for CI. Add missing functions. (Ozaki + Kiichi, closes #9420) +Files: ci/config.mk.clang-12.sed, ci/config.mk.clang.sed, + ci/config.mk.sed, src/Makefile, src/auto/configure, + src/config.mk.in, src/configure.ac, src/if_ruby.c, src/vim.h + +Patch 8.2.3923 +Problem: Vim9: double free if a nested function has a line break in the + argument list. +Solution: Set cmdlinep when freeing the previous line. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3924 +Problem: Vim9: no error if something follows :enddef in a nested function. +Solution: Give an error. Move common code to a function. +Files: src/userfunc.c, src/vim9compile.c, src/errors.h, + src/testdir/test_vim9_func.vim + +Patch 8.2.3925 +Problem: Diff mode confused by NUL bytes. +Solution: Handle NUL bytes differently. (Christian Brabandt, closes #9421, + closes #9418) +Files: src/diff.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_bin_01.dump, + src/testdir/dumps/Test_diff_bin_02.dump, + src/testdir/dumps/Test_diff_bin_03.dump, + src/testdir/dumps/Test_diff_bin_04.dump + +Patch 8.2.3926 (after 8.2.3920) +Problem: Build failure without the 'autochdir' option. (John Marriott) +Solution: Add #ifdefs. +Files: src/evalwindow.c + +Patch 8.2.3927 +Problem: Vim9: double free when using lambda. +Solution: Don't free both cmdline and line_to_free. +Files: src/userfunc.c + +Patch 8.2.3928 +Problem: Heredoc test fails. +Solution: Correct order of function arguments. +Files: src/userfunc.c + +Patch 8.2.3929 +Problem: Using uninitialized variable. +Solution: Set the option flags to zero for a terminal option. +Files: src/option.c + +Patch 8.2.3930 +Problem: getcmdline() argument has a misleading type. +Solution: Use the correct type, even though the value is not used. +Files: src/ex_getln.c, src/proto/ex_getln.pro, src/ex_docmd.c, + src/normal.c, src/register.c, src/userfunc.c + +Patch 8.2.3931 +Problem: Coverity reports a memory leak. +Solution: Free memory in case of failure. +Files: src/diff.c + +Patch 8.2.3932 +Problem: C line comment not formatted properly. +Solution: If a line comment follows after "#if" the next line is not the end + of a paragraph. +Files: src/textformat.c, src/testdir/test_textformat.vim + +Patch 8.2.3933 +Problem: After ":cd" fails ":cd -" is incorrect. +Solution: Set the previous directory only after successfully changing + directory. (Richard Doty, closes #9419, closes #8983) +Files: src/ex_docmd.c, src/testdir/test_cd.vim + +Patch 8.2.3934 +Problem: Repeating line comment is undesired for "O" command. +Solution: Do not copy line comment leader for "O". (closes #9426) +Files: src/change.c, src/testdir/test_textformat.vim + +Patch 8.2.3935 +Problem: CTRL-U in Insert mode does not fix the indent. +Solution: Fix the indent when 'cindent' is set. +Files: src/edit.c, src/testdir/test_textformat.vim + +Patch 8.2.3936 +Problem: No proper test for maintaining change mark in diff mode. +Solution: Run the test with internal and external diff. (Sean Dewar, + closes #9424) +Files: src/testdir/test_diffmode.vim + +Patch 8.2.3937 +Problem: Insert mode completion function is too long. +Solution: Refactor into multiple functions. (Yegappan Lakshmanan, + closes #9423) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.3938 +Problem: Line comment start is also found in a string. +Solution: Skip line comments in a string. +Files: src/cindent.c, src/proto/cindent.pro, src/search.c, + src/testdir/test_textformat.vim + +Patch 8.2.3939 +Problem: MS-Windows: fnamemodify('', ':p') does not work. +Solution: Do not consider an empty string a full path. (Yegappan Lakshmanan, + closes #9428, closes #9427) +Files: src/os_mswin.c, src/testdir/test_fnamemodify.vim + +Patch 8.2.3940 +Problem: Match highlight disappears when doing incsearch for ":s/pat". +Solution: Only use line limit for incsearch highlighting. (closes #9425) +Files: src/match.c, src/testdir/test_match.vim, + src/testdir/dumps/Test_match_with_incsearch_1.dump, + src/testdir/dumps/Test_match_with_incsearch_2.dump + +Patch 8.2.3941 +Problem: SIGTSTP is not handled. +Solution: Handle SIGTSTP like pressing CTRL-Z. (closes #9422) +Files: runtime/doc/autocmd.txt, src/ex_docmd.c, src/os_unix.c, + src/proto/ex_docmd.pro, src/testdir/test_signals.vim + +Patch 8.2.3942 +Problem: Coverity reports a possible memory leak. +Solution: Free the array if allocation fails. +Files: src/insexpand.c + +Patch 8.2.3943 +Problem: Compiler warning from gcc for uninitialized variable. +Solution: Initialize variable. (closes #9429) +Files: src/diff.c + +Patch 8.2.3944 +Problem: Insert mode completion functions are too long. +Solution: Split up into multiple functions. (Yegappan Lakshmanan, + closes #9431) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.3945 +Problem: Vim9: partial variable argument types are wrong, leading to a + crash. +Solution: When adjusting the argument count also adjust the argument types. + (closes #9433) +Files: src/vim9type.c, src/userfunc.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.3946 +Problem: When an internal error makes Vim exit the error is not seen. +Solution: Add the error to the test output. +Files: src/message.c, src/testdir/runtest.vim + +Patch 8.2.3947 +Problem: Unnecessary check for NULL pointer. +Solution: Remove the check. (closes #9434) +Files: src/ex_docmd.c + +Patch 8.2.3948 +Problem: Vim9: failure with partial with unknown argument count. +Solution: Do not copy argument types if there aren't any. +Files: src/vim9type.c + +Patch 8.2.3949 +Problem: Using freed memory with /\%V. +Solution: Get the line again after getvvcol(). +Files: src/regexp.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.3950 +Problem: Going beyond the end of the line with /\%V. +Solution: Check for valid column in getvcol(). +Files: src/charset.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.3951 +Problem: Vim9: memory leak when text after a nested function. +Solution: Free the function if text is found after "enddef". +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.3952 +Problem: First line not redrawn when adding lines to an empty buffer. +Solution: Adjust the argument to appended_lines(). (closes #9439, + closes #9438) +Files: src/ex_cmds.c, src/testdir/test_excmd.vim + +Patch 8.2.3953 +Problem: Insert completion code is too complicated. +Solution: More refactoring. Move function arguments into a struct. + (Yegappan Lakshmanan, closes #9437) +Files: src/insexpand.c + +Patch 8.2.3954 +Problem: Vim9: no error for shadowing if script var is declared later. +Solution: Check argument names when compiling a function. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.3955 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/globals.h, src/debugger.c, src/ex_cmds.c, + src/help.c, src/sign.c, src/spellfile.c + +Patch 8.2.3956 +Problem: Duplicate assignment. +Solution: Remove the second assignment. (closes #9442) +Files: src/evalfunc.c + +Patch 8.2.3957 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/globals.h, src/arglist.c, src/bufwrite.c, + src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/help.c, src/scriptfile.c, src/usercmd.c, src/userfunc.c, + src/vim9cmds.c, src/vim9compile.c + +Patch 8.2.3958 +Problem: Build failure compiling xxd with "-std=c2x". +Solution: define _XOPEN_SOURCE. (Yegappan Lakshmanan, closes #9444) +Files: src/xxd/xxd.c + +Patch 8.2.3959 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/autocmd.c, src/bufwrite.c, src/evalvars.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, src/fileio.c, + src/getchar.c, src/gui.c, src/locale.c, src/map.c + +Patch 8.2.3960 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/alloc.c, src/arglist.c, src/autocmd.c, + src/blob.c, src/blowfish.c, src/buffer.c, src/bufwrite.c + +Patch 8.2.3961 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/globals.h, src/arglist.c, src/autocmd.c, + src/blob.c, src/bufwrite.c, src/channel.c, src/clipboard.c, + src/cmdexpand.c, src/debugger.c, src/dict.c, src/eval.c, + src/evalfunc.c, src/evalvars.c, src/evalwindow.c, src/ex_cmds.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, src/fileio.c, + src/filepath.c, src/gui_gtk_x11.c, src/gui_haiku.cc, + src/gui_photon.c, src/gui_w32.c, src/gui_x11.c, src/highlight.c, + src/indent.c, src/insexpand.c, src/job.c, src/json.c, src/list.c, + src/map.c, src/mark.c, src/match.c, src/mbyte.c, src/menu.c, + src/message.c, src/misc2.c, src/ops.c, src/option.c, + src/optionstr.c, src/popupwin.c, src/quickfix.c, src/screen.c, + src/scriptfile.c, src/search.c, src/sign.c, src/spell.c, + src/spellfile.c, src/strings.c, src/syntax.c, src/terminal.c, + src/testing.c, src/textprop.c, src/time.c, src/userfunc.c, + src/vim9cmds.c, src/vim9execute.c, src/vim9script.c, src/window.c + +Patch 8.2.3962 (after 8.2.3961) +Problem: Build fails for missing error message. +Solution: Add changes in missed file. +Files: src/regexp_bt.c + +Patch 8.2.3963 +Problem: Build failure with tiny and small features. (Tony Mechelynck) +Solution: Adjust #ifdefs. +Files: src/errors.h, src/message.c + +Patch 8.2.3964 +Problem: Some common lisp and scheme files not recognized. +Solution: Recognize *.asd as lisp and *.sld as scheme. (Alex Vear, + closes #9447) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3965 +Problem: Vim9: no easy way to check if Vim9 script is supported. +Solution: Add has('vim9script'). +Files: runtime/doc/vim9.txt, src/evalfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.3966 +Problem: When using feedkeys() abbreviations may be blocked. +Solution: Reset tb_no_abbr_cnt when running out of characters. + (closes #9448) +Files: src/getchar.c, src/testdir/test_feedkeys.vim + +Patch 8.2.3967 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/globals.h, src/feature.h, src/arglist.c, + src/autocmd.c, src/blob.c, src/bufwrite.c, src/channel.c, + src/cmdexpand.c, src/dict.c, src/diff.c, src/eval.c, + src/evalfunc.c, src/evalvars.c, src/ex_cmds.c, src/ex_docmd.c, + src/fileio.c, src/filepath.c, src/getchar.c, src/gui_gtk_x11.c, + src/gui_x11.c, src/hardcopy.c, src/help.c, src/highlight.c, + src/if_cscope.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs, + src/if_python.c, src/if_python3.c, src/if_ruby.c, src/if_tcl.c, + src/if_xcmdsrv.c, src/indent.c, src/insexpand.c, src/job.c, + src/list.c, src/main.c, src/map.c, src/match.c, src/mbyte.c, + src/message.c, src/misc1.c, src/option.c, src/optionstr.c, + src/os_mswin.c, src/os_unix.c, src/os_win32.c, src/popupwin.c, + src/profiler.c, src/quickfix.c, src/scriptfile.c, src/search.c, + src/session.c, src/sign.c, src/spell.c, src/spellfile.c, + src/spellsuggest.c, src/syntax.c, src/tag.c, src/terminal.c, + src/testing.c, src/textprop.c, src/typval.c, src/userfunc.c, + src/vim9execute.c, src/vim9expr.c, src/vim9instr.c, + src/vim9script.c + +Patch 8.2.3968 +Problem: Build failure. +Solution: Add missing changes. +Files: src/strings.c, src/vim9compile.c + +Patch 8.2.3969 +Problem: Value of MAXCOL not available in Vim script. +Solution: Add v:maxcol. (Naohiro Ono, closes #9451) +Files: runtime/doc/builtin.txt, runtime/doc/eval.txt, src/evalvars.c, + src/testdir/test_cursor_func.vim, src/testdir/test_normal.vim, + src/testdir/test_put.vim, src/vim.h + +Patch 8.2.3970 +Problem: Error messages are spread out. +Solution: Move more errors to errors.h. +Files: src/errors.h, src/globals.h, src/buffer.c, src/bufwrite.c, + src/clientserver.c, src/cmdhist.c, src/dict.c, src/edit.c, + src/eval.c, src/evalfunc.c, src/evalvars.c, src/ex_cmds.c, + src/ex_docmd.c, src/ex_eval.c, src/ex_getln.c, src/gui_w32.c, + src/gui_x11.c, src/if_xcmdsrv.c, src/insexpand.c, src/json.c, + src/match.c, src/menu.c, src/option.c, src/optionstr.c, + src/os_mswin.c, src/quickfix.c, src/regexp_bt.c, src/regexp_nfa.c, + src/scriptfile.c, src/sign.c, src/spellfile.c, src/undo.c, + src/userfunc.c, src/vim9cmds.c, src/vim9compile.c, + src/vim9execute.c, src/vim9expr.c, src/window.c + +Patch 8.2.3971 +Problem: Build fails. +Solution: Use the right error message name. +Files: src/typval.c + +Patch 8.2.3972 +Problem: Error messages are spread out. +Solution: Move the last errors from globals.h to errors.h. +Files: src/errors.h, src/globals.h, src/eval.c, src/evalfunc.c, + src/evalvars.c, src/evalwindow.c, src/ex_eval.c, src/list.c, + src/match.c, src/menu.c, src/popupmenu.c, src/search.c, + src/vim9cmds.c, src/vim9expr.c + +Patch 8.2.3973 +Problem: Tiny build fails. +Solution: Adjust #ifdefs +Files: src/errors.h + +Patch 8.2.3974 +Problem: Vim9: LISTAPPEND instruction does not check for a locked list. +Solution: Check whether the list is locked. (closes #9452) +Files: src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3975 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/clientserver.c, src/fileio.c, src/gui.c, + src/gui_beval.c, src/gui_w32.c, src/gui_x11.c, src/if_cscope.c, + src/if_xcmdsrv.c, src/os_mswin.c, src/sign.c, src/viminfo.c, + src/window.c + +Patch 8.2.3976 +Problem: FEARG_LAST is never used. (Dominique Pell茅) +Solution: Remove FEARG_LAST and the related code. +Files: src/evalfunc.c + +Patch 8.2.3977 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/change.c, src/clientserver.c, src/eval.c, + src/gui_xim.c, src/if_cscope.c, src/if_py_both.h, src/if_python.c, + src/if_python3.c, src/if_ruby.c, src/if_tcl.c, src/main.c, + src/mark.c, src/match.c, src/memfile.c, src/memline.c, + src/terminal.c, src/textprop.c, src/userfunc.c + +Patch 8.2.3978 +Problem: Build error when using dynamically loaded Python 3. +Solution: Adjust #ifdef. +Files: src/errors.h + +Patch 8.2.3979 +Problem: Vim9: the feature is not mentioned in the right places. +Solution: Add +vim9script to the help and :version output. +Files: runtime/doc/builtin.txt, runtime/doc/various.txt, src/version.c + +Patch 8.2.3980 +Problem: If 'operatorfunc' invokes an operator the remembered Visual mode + may be changed. (Naohiro Ono) +Solution: Save and restore the information for redoing the Visual area. + (closes #9455) +Files: src/ops.c, src/testdir/test_normal.vim + +Patch 8.2.3981 +Problem: Vim9: debugging a for loop doesn't stop before it starts. +Solution: Keep the DEBUG instruction before the expression is evaluated. + (closes #9456) +Files: src/vim9cmds.c, src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3982 +Problem: Some lines of code not covered by tests. +Solution: Add a few more test cases. (Dominique Pell茅, closes #9453) +Files: src/testdir/test_filter_map.vim, src/testdir/test_highlight.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_search.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3983 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/ex_docmd.c, src/fileio.c, src/filepath.c, + src/findfile.c, src/hardcopy.c, src/memfile.c, src/memline.c, + src/menu.c, src/normal.c, src/regexp_bt.c + +Patch 8.2.3984 (after 8.2.3981) +Problem: Debugger test fails. +Solution: Adjust the test for modified debugging of a for loop. +Files: src/testdir/test_debugger.vim + +Patch 8.2.3985 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/findfile.c, src/fold.c, src/hardcopy.c, + src/highlight.c, src/map.c, src/message.c, src/normal.c, + src/option.c, src/os_amiga.c, src/os_unix.c, src/os_win32.c, + src/quickfix.c, src/regexp.c, src/register.c, src/search.c, + src/syntax.c, src/tag.c, src/term.c, src/typval.c, src/undo.c, + src/window.c + +Patch 8.2.3986 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/evalvars.c, src/ex_cmds.c, src/ex_docmd.c, + src/fileio.c, src/fold.c, src/gui_x11.c, src/hardcopy.c, + src/help.c, src/highlight.c, src/if_cscope.c, src/json.c, + src/map.c, src/netbeans.c, src/popupwin.c, src/usercmd.c, + src/userfunc.c + +Patch 8.2.3987 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/digraph.c, src/ex_eval.c, src/gui.c, + src/hardcopy.c, src/if_cscope.c, src/if_tcl.c, src/if_xcmdsrv.c, + src/mbyte.c, src/misc2.c, src/netbeans.c, src/option.c, + src/optionstr.c, src/quickfix.c, src/regexp.c, src/tag.c, + src/term.c, src/viminfo.c + +Patch 8.2.3988 (after 8.2.3987) +Problem: Tiny build fails. +Solution: Fix misplaced #ifdef. +Files: src/errors.h + +Patch 8.2.3989 +Problem: Some insert completion code is not tested. +Solution: Add a few tests. Refactor thesaurus completion. (Yegappan + Lakshmanan, closes #9460) +Files: src/insexpand.c, src/testdir/test_edit.vim, + src/testdir/test_ins_complete.vim + +Patch 8.2.3990 +Problem: Testing wrong operator. +Solution: Test "g@" instead of "r_". (Naohiro Ono, closes #9463) +Files: src/testdir/test_normal.vim + +Patch 8.2.3991 +Problem: Vim9: error when extending dict<any> with another type that it was + initialized with. +Solution: Also set the type for dict<any> if the initializer has a more + specific type. (closes #9461) +Files: src/vim9compile.c, src/vim9type.c, src/vim9.h, src/eval.c, + src/list.c, src/vim9script.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.3992 +Problem: Wrong local-additions in the help with language mix. +Solution: Adjust how the local additions list is generated. (Hirohito + Higashi, closes #9464) +Files: src/help.c, src/testdir/test_help.vim + +Patch 8.2.3993 +Problem: When recording a change in Select mode the first typed character + appears twice. +Solution: When putting the character back into typeahead remove it from + recorded characters. (closes #9462) +Files: src/getchar.c, src/proto/getchar.pro, src/normal.c, + src/testdir/test_registers.vim + +Patch 8.2.3994 +Problem: Vim9: extend() complains about the type even when it was not + declared. +Solution: Only check the list or dict type when it was declared. +Files: src/list.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.3995 +Problem: Not all sshconfig files are detected as such. +Solution: Adjust the patterns used for sshconfig detection. (David Auer, + closes #9322) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.3996 +Problem: Vim9: type checking for list and dict lacks information about + declared type. +Solution: Add dv_decl_type and lv_decl_type. Refactor the type stack to + store two types in each entry. +Files: src/structs.h, src/dict.c, src/list.c, src/vim9type.c, + src/proto/vim9type.pro, src/vim9instr.c, src/proto/vim9instr.pro, + src/vim9compile.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/evalbuffer.c, src/proto/evalbuffer.pro, src/vim9expr.c, + src/vim9cmds.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.3997 +Problem: Vim9: not enough testing for extend() and map(). +Solution: Add more test cases. Fix uncovered problems. Remove unused type + fields. +Files: src/structs.h, src/dict.c, src/list.c, src/vim9compile.c, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.3998 +Problem: Asan error for adding zero to NULL. +Solution: Do not compute pointer if there are no entries. +Files: src/vim9type.c + +Patch 8.2.3999 +Problem: Redundant check for NUL byte. +Solution: Remove the check for a NUL byte. (closes #9471) +Files: src/ex_docmd.c + +Patch 8.2.4000 +Problem: Coverity warns for checking for NULL pointer after using it. +Solution: Remove check for NULL. +Files: src/help.c + +Patch 8.2.4001 +Problem: Insert complete code uses global variables. +Solution: Make variables local to the file and use accessor functions. + (Yegappan Lakshmanan, closes #9470) +Files: src/edit.c, src/getchar.c, src/globals.h, src/insexpand.c, + src/proto/insexpand.pro, src/search.c + +Patch 8.2.4002 +Problem: First char typed in Select mode can be wrong. +Solution: Escape special bytes in the input buffer. (closes #9469) +Files: src/getchar.c, src/testdir/test_utf8.vim + +Patch 8.2.4003 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/channel.c, src/ex_docmd.c, src/ex_eval.c, + src/gui_at_fs.c, src/hardcopy.c, src/if_cscope.c, src/menu.c, + src/netbeans.c, src/optionstr.c, src/os_mswin.c, src/sign.c, + src/typval.c + +Patch 8.2.4004 +Problem: Old compiler complains about struct init with variable. +Solution: Set the struct member later. (John Marriott) +Files: src/evalfunc.c + +Patch 8.2.4005 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/dict.c, src/eval.c, src/evalfunc.c, + src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c, src/ex_eval.c, + src/filepath.c, src/gui.c, src/gui_w32.c, src/hardcopy.c, + src/help.c, src/highlight.c, src/if_python.c, src/list.c, + src/misc1.c, src/normal.c, src/quickfix.c, src/regexp.c, + src/regexp_bt.c, src/regexp_nfa.c, src/typval.c, src/userfunc.c + +Patch 8.2.4006 +Problem: Vim9: crash when declaring variable on the command line. +Solution: Use a temporary type list. (closes #9474) +Files: src/eval.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.4007 +Problem: Session does not restore help buffer properly when "options' is + missing from 'sessionoptions'. +Solution: Use a ":help" command to create the help window. (closes #9475, + closes #9458, closes #9472) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4008 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/diff.c, src/digraph.c, src/evalfunc.c, + src/evalvars.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/insexpand.c, src/match.c, src/memline.c, src/menu.c, + src/ops.c, src/profiler.c, src/quickfix.c, src/regexp.c, + src/regexp_bt.c, src/regexp_nfa.c, src/register.c, src/spell.c, + src/spell.h, src/spellfile.c, src/strings.c, src/syntax.c, + src/typval.c, src/undo.c, src/userfunc.c + +Patch 8.2.4009 +Problem: Reading one byte beyond the end of the line. +Solution: Check for NUL byte first. +Files: src/vim9compile.c, src/ex_docmd.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4010 +Problem: Error messages are spread out. +Solution: Move more error messages to errors.h. +Files: src/errors.h, src/crypt.c, src/diff.c, src/ex_docmd.c, + src/ex_getln.c, src/fileio.c, src/findfile.c, src/float.c, + src/gui.c, src/highlight.c, src/if_mzsch.c, src/if_py_both.h, + src/if_python.c, src/if_python3.c, src/insexpand.c, src/match.c, + src/memline.c, src/option.c, src/popupwin.c, src/regexp.c, + src/regexp_nfa.c, src/spellfile.c, src/strings.c, src/syntax.c, + src/textprop.c, src/typval.c, src/undo.c, src/usercmd.c, + src/userfunc.c, src/window.c + +Patch 8.2.4011 +Problem: Test fails because of changed error number. +Solution: Restore old duplicate error message. +Files: src/errors.h, src/match.c + +Patch 8.2.4012 +Problem: Error messages are spread out. +Solution: Move the last error messages to errors.h. +Files: src/errors.h, src/channel.c, src/clientserver.c, src/diff.c, + src/evalfunc.c, src/evalvars.c, src/ex_cmds2.c, src/ex_docmd.c, + src/gui_w32.c, src/help.c, src/if_mzsch.c, src/if_py_both.h, + src/if_python.c, src/job.c, src/json.c, src/list.c, src/option.c, + src/optionstr.c, src/quickfix.c, src/regexp.c, src/regexp_nfa.c, + src/register.c, src/scriptfile.c, src/sign.c, src/syntax.c, + src/tag.c, src/terminal.c, src/textprop.c, src/typval.c, + src/undo.c, src/userfunc.c, src/vim9compile.c, src/viminfo.c + +Patch 8.2.4013 +Problem: Build failure without the spell feature. +Solution: Adjust #ifdefs. +Files: src/errors.h + +Patch 8.2.4014 +Problem: Git and gitcommit file types not properly recognized. +Solution: Adjust filetype detection. (Tim Pope, closes #9477) +Files: runtime/filetype.vim, runtime/scripts.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4015 +Problem: Build failure with tiny features. (Tony Mechelynck) +Solution: Adjust #ifdefs. +Files: src/errors.h + +Patch 8.2.4016 +Problem: Vim9: incorrect error for argument that is shadowing var. +Solution: Ignore variable that is not in block where the function was + defined. +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4017 +Problem: Gcc warns for misleading indent in Athena menu code. +Solution: Add curlies around the two statements. (Dominique Pell茅, + closes #9480) +Files: src/gui_athena.c + +Patch 8.2.4018 +Problem: ml_get error when win_execute redraws with Visual selection. +Solution: Disable Visual area temporarily. (closes #9479) +Files: src/evalwindow.c, src/proto/evalwindow.pro, src/structs.h, + src/evalbuffer.c, src/proto/evalbuffer.pro, src/evalvars.c, + src/if_py_both.h, src/evalfunc.c, + src/testdir/test_execute_func.vim + +Patch 8.2.4019 +Problem: Vim9: import mechanism is too complicated. +Solution: Do not use the Javascript mechanism but a much simpler one. +Files: runtime/doc/vim9.txt, src/vim9script.c, src/proto/vim9script.pro, + src/errors.h, src/structs.h, src/eval.c, src/proto/eval.pro, + src/evalvars.c, src/proto/evalvars.pro, src/userfunc.c, + src/vim9expr.c, src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.4020 (after 8.2.4019) +Problem: Debugger test fails. +Solution: Fix import statement. +Files: src/testdir/test_debugger.vim + +Patch 8.2.4021 (after 8.2.4019) +Problem: Missing part of the :import changes. +Solution: Add changes in vim9cmds.c. +Files: src/vim9cmds.c + +Patch 8.2.4022 +Problem: Two error messages in the wrong file. +Solution: Use the error message from errors.h. +Files: src/popupwin.c, src/usercmd.c + +Patch 8.2.4023 +Problem: Using uninitialized variable. +Solution: Initialize "ufunc" also when an item is not exported. +Files: src/vim9script.c + +Patch 8.2.4024 +Problem: Confusing error message if imported name is used directly. +Solution: Give a better error message. +Files: src/eval.c, src/proto/eval.pro, src/evalvars.c, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4025 +Problem: Error for import not ending in .vim does not work for .vimrc. +Solution: Check that .vim is the end. (closes #9484) +Files: src/vim9script.c, src/errors.h, src/testdir/test_vim9_script.vim + +Patch 8.2.4026 +Problem: ml_get error with specific win_execute() command. (Sean Dewar) +Solution: Check cursor and Visual area are OK. +Files: src/evalwindow.c, src/testdir/test_execute_func.vim + +Patch 8.2.4027 +Problem: Import test fails on MS-Windows. +Solution: Use a different directory name. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4028 +Problem: ml_get error with :doautoall and Visual area. (Sean Dewar) +Solution: Disable Visual mode while executing autocommands. +Files: src/structs.h, src/autocmd.c, src/testdir/test_autocmd.vim + +Patch 8.2.4029 +Problem: Debugging NFA regexp my crash, cached indent may be wrong. +Solution: Fix some debug warnings in the NFA regexp code. Make sure log_fd + is set when used. Fix breakindent and indent caching. (Christian + Brabandt, closes #9482) +Files: src/indent.c, src/optionstr.c, src/regexp_nfa.c + +Patch 8.2.4030 +Problem: A script local funcref is not found from a mapping. +Solution: When looking for a function, also find a script-local funcref. + (closes #9485) +Files: src/evalvars.c, src/proto/evalvars.pro, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4031 +Problem: Crash in xterm with only two lines. (Dominique Pell茅) +Solution: Only perform xterm compatibility test if possible. (closes #9488) +Files: src/term.c, src/testdir/test_startup.vim + +Patch 8.2.4032 +Problem: ATTRIBUTE_NORETURN is not needed. +Solution: Use NORETURN(). (Ozaki Kiichi, closes #9487) +Files: src/if_ruby.c, src/vim.h + +Patch 8.2.4033 +Problem: Running filetype tests leaves directory behind. +Solution: Delete the top directory. (closes #9483) +Files: src/testdir/test_filetype.vim + +Patch 8.2.4034 +Problem: Coverity warns for possibly using a NULL pointer. +Solution: Check v_partial is not NULL. +Files: src/vim9type.c + +Patch 8.2.4035 +Problem: Timer triggered at the debug prompt may cause trouble. +Solution: Do not trigger any timer at the debug prompt. (closes #9481) +Files: src/time.c + +Patch 8.2.4036 +Problem: Vim9: script test file is getting too long. +Solution: Split the import/export functionality to a separate file. +Files: src/testdir/test_vim9_script.vim, src/testdir/test_vim9_import.vim, + src/testdir/Make_all.mak + +Patch 8.2.4037 +Problem: Insert mode completion is insufficiently tested. +Solution: Add more tests. Fix uncovered memory leak. (Yegappan Lakshmanan, + closes #9489) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.4038 +Problem: Various code not used when features are disabled. +Solution: Add #ifdefs. (Dominique Pell茅, closes #9491) +Files: src/alloc.c, src/buffer.c, src/charset.c, src/clipboard.c, + src/cmdhist.c, src/crypt.c, src/edit.c, src/eval.c, + src/evalbuffer.c, src/evalfunc.c, src/ex_docmd.c, src/globals.h, + src/gui_xim.c, src/hashtab.c, src/highlight.c, src/insexpand.c, + src/main.c, src/mark.c, src/message.c, src/misc1.c, src/misc2.c, + src/ops.c, src/option.c, src/option.h, src/optionstr.c, + src/register.c, src/scriptfile.c, src/tag.c, src/term.c, + src/typval.c, src/usercmd.c, src/userfunc.c, src/vim9script.c, + src/vim9type.c + +Patch 8.2.4039 +Problem: The xdiff library is linked in even when not used. +Solution: Use configure to decide whether xdiff object files are included. +Files: src/Makefile, src/config.mk.in, src/configure.ac, + src/auto/configure, src/feature.h + +Patch 8.2.4040 +Problem: Keeping track of allocated lines in user functions is too + complicated. +Solution: Instead of freeing individual lines keep them all until the end. +Files: src/alloc.c, src/proto/alloc.pro, src/vim9compile.c, + src/userfunc.c, src/proto/userfunc.pro, src/message.c, + src/usercmd.c, src/viminfo.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4041 +Problem: Using uninitialized pointer. +Solution: Store "ht" when variable is in another script. +Files: src/evalvars.c + +Patch 8.2.4042 +Problem: Vim9: build error. +Solution: Use grow array instead of character pointer. +Files: src/vim9execute.c + +Patch 8.2.4043 +Problem: Using int for second argument of ga_init2(). +Solution: Remove unnecessary type cast (int) when using sizeof(). +Files: src/arglist.c, src/channel.c, src/cmdexpand.c, src/dict.c, + src/digraph.c, src/eval.c, src/evalfunc.c, src/evalvars.c, + src/evalwindow.c, src/ex_docmd.c, src/fileio.c, src/filepath.c, + src/findfile.c, src/fold.c, src/hardcopy.c, src/help.c, + src/job.c, src/list.c, src/menu.c, src/os_win32.c, src/register.c, + src/scriptfile.c, src/spellfile.c, src/spellsuggest.c, + src/strings.c, src/syntax.c, src/tag.c, src/terminal.c, + src/undo.c, src/usercmd.c, src/userfunc.c, src/vim9execute.c, + src/viminfo.c, src/window.c, src/if_py_both.h + +Patch 8.2.4044 +Problem: Vim9: no error when importing the same script twice. +Solution: Give an error, unless it is a reload. +Files: src/vim9script.c, src/errors.h, src/testdir/test_vim9_import.vim + +Patch 8.2.4045 +Problem: Some global functions are only used in one file. +Solution: Make the functions static. (Yegappan Lakshmanan, closes #9492) +Files: src/ex_getln.c, src/highlight.c, src/proto/ex_getln.pro, + src/proto/highlight.pro, src/proto/vim9compile.pro, + src/proto/vim9instr.pro, src/proto/window.pro, src/vim9compile.c, + src/vim9instr.c, src/window.c + +Patch 8.2.4046 +Problem: Some error messages not in the right place. +Solution: Adjust the errors file. Fix typo. +Files: src/errors.h, src/regexp_bt.c, src/typval.c, + +Patch 8.2.4047 +Problem: Depending on the build features error messages are unused. +Solution: Add #ifdefs. (Dominique Pell茅, closes #9493) +Files: src/errors.h + +Patch 8.2.4048 +Problem: gcc complains about use of "%p" in printf. +Solution: Add (void *) typecast. (Dominique Pell茅, closes #9494) +Files: src/if_py_both.h + +Patch 8.2.4049 +Problem: Vim9: reading before the start of the line with "$" by itself. +Solution: Do not subtract one when reporting the error. +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4050 +Problem: Vim9: need to prefix every item in an autoload script. +Solution: First step in supporting "vim9script autoload" and "import + autoload". +Files: runtime/doc/repeat.txt, runtime/doc/vim9.txt, src/structs.h, + src/errors.h, src/vim9script.c, src/scriptfile.c, + src/proto/scriptfile.pro, src/userfunc.c, src/eval.c, + src/evalvars.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim9expr.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4051 +Problem: Compiler complains about possibly uninitialized variable. +Solution: Add code to avoid a compiler warning. (John Marriott) +Files: src/scriptfile.c + +Patch 8.2.4052 +Problem: Not easy to resize a window from a plugin. +Solution: Add win_move_separator() and win_move_statusline() functions. + (Daniel Steinberg, closes #9486) +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/evalwindow.c, src/proto/evalwindow.pro, + src/testdir/test_window_cmd.vim + +Patch 8.2.4053 +Problem: Vim9: autoload mechanism doesn't fully work yet. +Solution: Define functions and variables with their autoload name, add the + prefix when calling a function, find the variable in the table of + script variables. +Files: src/structs.h, src/scriptfile.c, src/proto/scriptfile.pro, + src/vim9script.c, src/proto/vim9script.pro, src/userfunc.c, + src/evalvars.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4054 (after 8.2.4053) +Problem: Vim9 script test fails. +Solution: Add missing change. +Files: src/vim9compile.c + +Patch 8.2.4055 +Problem: Vim9: line break in expression causes v:errmsg to be filled. + (Yegappan Lakshmanan) +Solution: Do not give an error when skipping over an expression. +Files: src/userfunc.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4056 +Problem: Vim9: memory leak when exporting function in autoload script. +Solution: Free the name if replacing it. +Files: src/scriptfile.c + +Patch 8.2.4057 +Problem: Vim9: not fully implementing the autoload mechanism. +Solution: Allow for exporting a legacy function. Improve test coverage. +Files: src/vim9script.c, src/testdir/test_vim9_import.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.4058 +Problem: Vim9: import test failure in wrong line. +Solution: Adjust line number. +Files: src/testdir/test_vim9_import.vim + +Patch 8.2.4059 +Problem: Vim9: an expression of a map cannot access script-local items. + (Maxim Kim) +Solution: Use the script ID of where the map was defined. +Files: src/getchar.c, src/map.c, src/proto/map.pro, + src/testdir/test_vim9_import.vim + +Patch 8.2.4060 +Problem: win_execute() is slow on systems where getcwd() or chdir() is + slow. (Rick Howe) +Solution: Avoid using getcwd() and chdir() if no local directory is used and + 'acd' is not set. (closes #9504) +Files: src/evalwindow.c + +Patch 8.2.4061 +Problem: Codecov bash script is deprecated. +Solution: Use the codecov action. (Ozaki Kiichi, closes #9505) +Files: .github/workflows/ci.yml + +Patch 8.2.4062 +Problem: Match highlighting of tab too short. +Solution: Do not stop match highlighting if on a Tab. (Christian Brabandt, + closes #9507, closes #9500) +Files: src/drawline.c, src/testdir/test_match.vim, + src/testdir/dumps/Test_match_tab_linebreak.dump + +Patch 8.2.4063 +Problem: Vim9: exported function in autoload script not found. (Yegappan + Lakshmanan) +Solution: Use the autoload prefix to search for the function. +Files: src/userfunc.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4064 +Problem: Foam files are not detected. +Solution: Detect the foam filetype by the path and file contents. (Mohammed + Elwardi Fadeli, closes #9501) +Files: runtime/filetype.vim, runtime/autoload/dist/ft.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4065 +Problem: Computation overflow with large count for :yank. +Solution: Avoid an overflow. +Files: src/ex_docmd.c, src/testdir/test_excmd.vim + +Patch 8.2.4066 +Problem: Vim9: imported autoload script loaded again. +Solution: Do not create a new imported_T every time. +Files: src/vim9script.c, src/vim9compile.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4067 +Problem: Vim9: cannot call imported function with :call. (Drew Vogel) +Solution: Translate the function name. (closes #9510) +Files: src/userfunc.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4068 (after 8.2.4066) +Problem: Vim9: import test fails. +Solution: Add missing change. +Files: src/scriptfile.c + +Patch 8.2.4069 +Problem: Vim9: import test fails on MS-Windows. +Solution: Ignore case. Adjust test to avoid name that only differs in case. +Files: src/eval.c, src/scriptfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4070 +Problem: Using uninitialized memory when reading empty file. +Solution: Check for empty file before checking for NL. (Dominique Pell茅, + closes #9511) +Files: src/filepath.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.4071 +Problem: Vim9: no detection of return in try/endtry. (Dominique Pell茅) +Solution: Check if any of the blocks inside try/endtry did not end in + return. +Files: src/vim9.h, src/vim9compile.c, src/vim9cmds.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4072 +Problem: Vim9: compiling function fails when autoload script is not loaded + yet. +Solution: Depend on runtime loading. +Files: src/vim9expr.c, src/vim9script.c, src/vim9instr.c, + src/vim9execute.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4073 +Problem: Coverity warns for using NULL pointer. +Solution: Bail out when running out of memory. Check for running over end of + a string. +Files: src/userfunc.c, + +Patch 8.2.4074 +Problem: Going over the end of NameBuff. +Solution: Check length when appending a space. +Files: src/drawscreen.c, src/testdir/test_edit.vim + +Patch 8.2.4075 (after 8.2.4073) +Problem: Test failures. +Solution: Change check for NULL pointer. +Files: src/userfunc.c + +Patch 8.2.4076 +Problem: Memory leak in autoload import. +Solution: Do not overwrite the autoload prefix. +Files: src/vim9script.c + +Patch 8.2.4077 +Problem: Not all Libsensors files are recognized. +Solution: Add "sensors.d/*" pattern. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4078 +Problem: Terminal test for current directory not used on FreeBSD. +Solution: Make it work on FreeBSD. (Ozaki Kiichi, closes #9516) Add + TermWait() inside Run_shell_in_terminal() as a generic solution. +Files: src/testdir/test_terminal3.vim, src/testdir/term_util.vim, + src/testdir/test_terminal.vim, src/testdir/test_terminal2.vim, + src/testdir/test_mapping.vim + +Patch 8.2.4079 +Problem: MS-Windows: "gvim --version" didn't work when build with VIMDLL. +Solution: Adjust #ifdef. (Ken Takata, closes #9517) +Files: src/main.c + +Patch 8.2.4080 +Problem: Not sufficient test coverage for xxd. +Solution: Add a few more test cases. (Erki Auerswald, closes #9515) +Files: src/testdir/test_xxd.vim + +Patch 8.2.4081 +Problem: CodeQL reports problem in if_cscope causing it to fail. +Solution: Use execvp() instead of execl(). Merge the header file into the + source file. (Ozaki Kiichi, closes #9519) +Files: Filelist, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/Make_vms.mms, src/Makefile, src/if_cscope.c, src/if_cscope.h, + src/testdir/test_cscope.vim + +Patch 8.2.4082 +Problem: Check for autoload file name and prefix fails. (Christian J. + Robinson) +Solution: Only lower case the prefix on systems where the file name is not + case sensitive. +Files: src/scriptfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4083 +Problem: Vim9: no test for "vim9script autoload" and using script variable + in the same script. +Solution: Add a simple test. Fix uncovered problem. +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4084 +Problem: Memory leak when looking for autoload prefixed variable. +Solution: Free the concatenated string. +Files: src/evalvars.c + +Patch 8.2.4085 +Problem: Vim9: no test for using import in legacy script. +Solution: Add a test. +Files: src/testdir/test_vim9_import.vim + +Patch 8.2.4086 +Problem: "cctx" argument of find_func_even_dead() is unused. +Solution: Remove the argument. +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim9compile.c, + src/vim9instr.c, src/evalfunc.c, src/evalvars.c, src/testing.c, + src/vim9execute.c, src/vim9expr.c, src/vim9script.c, + src/vim9type.c + +Patch 8.2.4087 +Problem: Cannot test items from an autoload script easily. +Solution: Add the "autoload" value for test_override(). +Files: runtime/doc/testing.txt, src/testing.c, src/globals.h, + src/vim9script.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4088 +Problem: Xxd cannot output everything in one line. +Solution: Make zero columns mean infinite columns. (Erik Auerswald, + closes #9524) +Files: runtime/doc/xxd.1, runtime/doc/xxd.man, src/testdir/test_xxd.vim, + src/xxd/xxd.c + +Patch 8.2.4089 (after 8.2.4078) +Problem: Terminal test for current directory fails on FreeBSD. +Solution: Skip the test. +Files: src/testdir/test_terminal3.vim + +Patch 8.2.4090 +Problem: After restoring a session buffer order can be quite different. +Solution: Create buffers first. (Evgeni Chasnovski, closes #9520) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4091 +Problem: Virtcol is recomputed for statusline unnecessarily. +Solution: Just use "w_virtcol". (closes #9523) +Files: src/buffer.c, src/testdir/test_statusline.vim + +Patch 8.2.4092 +Problem: macOS CI: unnecessarily doing "Install packages". +Solution: Only do "Install packages" for huge build. (Ozaki Kiichi, + closes #9521) +Files: .github/workflows/ci.yml + +Patch 8.2.4093 +Problem: Cached breakindent values not initialized properly. +Solution: Initialize and cache formatlistpat. (Christian Brabandt, + closes #9526, closes #9512) +Files: runtime/doc/options.txt, src/indent.c, src/option.c, + src/proto/option.pro, src/testdir/test_breakindent.vim + +Patch 8.2.4094 +Problem: 'virtualedit' is window-local but using buffer-local enum. +Solution: Use window-local enum. (closes #9529) +Files: src/option.h, src/optiondefs.h + +Patch 8.2.4095 +Problem: Sed script not recognized by the first line. +Solution: Recognize a sed script starting with "#n". (Doug Kearns) +Files: runtime/scripts.vim, src/testdir/test_filetype.vim + +Patch 8.2.4096 +Problem: Linux CI: unnecessarily installing packages +Solution: Only install packages for huge build. (Ozaki Kiichi, + closes #9530) +Files: .github/workflows/ci.yml + +Patch 8.2.4097 +Problem: Wrong number in error message on 32 bit system. (John Paul Adrian + Glaubitz) +Solution: Add type cast. (closes #9527) +Files: src/vim9compile.c + +Patch 8.2.4098 +Problem: Typing "interrupt" at debug prompt may keep exception around, + causing function calls to fail. +Solution: Discard any exception at the toplevel. (closes #9532) +Files: src/main.c + +Patch 8.2.4099 +Problem: Vim9: cannot use Vim9 syntax in mapping. +Solution: Add <ScriptCmd> to use the script context for a command. +Files: runtime/doc/map.txt, src/normal.c, src/getchar.c, + src/proto/getchar.pro, src/ex_getln.c, src/edit.c, src/terminal.c, + src/keymap.h, src/insexpand.c, src/misc2.c, src/ops.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4100 +Problem: Early return when getting the 'formatlistpat' value. +Solution: Remove the first line. (Christian Brabandt) +Files: src/option.c, src/testdir/test_breakindent.vim + +Patch 8.2.4101 +Problem: Warning for unused argument in tiny version. +Solution: Add "UNUSED". +Files: src/getchar.c + +Patch 8.2.4102 +Problem: Vim9: import cannot be used after method. +Solution: Recognize an imported function name. (closes #9496) +Files: src/eval.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4103 +Problem: Vim9: variable declared in for loop not initialized. +Solution: Always initialize the variable. (closes #9535) +Files: src/vim9instr.c, src/proto/vim9instr.pro, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4104 +Problem: Vim9: lower casing the autoload prefix causes problems. +Solution: Always store the prefix with case preserved. +Files: src/scriptfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4105 +Problem: Translation related comment in the wrong place. +Solution: Move it back with the text. (Ken Takata, closes #9537) +Files: src/errors.h, src/ex_docmd.c + +Patch 8.2.4106 +Problem: Going over the end of the w_lines array. +Solution: Break out of the loop when "idx" is too big. (issue #9540) +Files: src/drawscreen.c + +Patch 8.2.4107 +Problem: Script context not restored after using <ScriptCmd>. +Solution: Also restore context when not in a script. (closes #9536) + Add the 'c' flag to feedkeys() to be able to test this. +Files: runtime/doc/builtin.txt, src/getchar.c, src/evalfunc.c, + src/testdir/test_mapping.vim + +Patch 8.2.4108 +Problem: Going over the end of the w_lines array. +Solution: Check not going over the end and limit to Rows. (issue #9540) +Files: src/drawscreen.c + +Patch 8.2.4109 +Problem: MS-Windows: high dpi support is outdated. +Solution: Improve High DPI support by using PerMonitorV2. (Ken Takata + closes #9525, closes #3102) +Files: src/gui.c, src/gui.h, src/gui_w32.c, src/vim.manifest + +Patch 8.2.4110 +Problem: Coverity warns for using NULL pointer. +Solution: Check "evalarg" is not NULL. Skip errors when "verbose" is false. +Files: src/eval.c + +Patch 8.2.4111 +Problem: Potential problem when map is deleted while executing. +Solution: Reset last used map pointer when deleting a mapping. +Files: src/map.c + +Patch 8.2.4112 +Problem: Function not deleted at end of test. +Solution: Delete the function. +Files: src/testdir/test_diffmode.vim + +Patch 8.2.4113 +Problem: Typo on DOCMD_RANGEOK results in not recognizing command. +Solution: Correct the typo. (closes #9539) +Files: src/vim.h, src/testdir/test_mapping.vim + +Patch 8.2.4114 +Problem: Vim9: type checking for a funcref does not work for when it is + used in a method. +Solution: Pass the base to where the type is checked. +Files: src/vim9type.c, src/proto/vim9type.pro, src/userfunc.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.4115 +Problem: Cannot use a method with a complex expression. +Solution: Evaluate the expression after "->" and use the result. +Files: src/eval.c, src/errors.h, src/testdir/test_vim9_expr.vim + +Patch 8.2.4116 +Problem: Vim9: cannot use a method with a complex expression in a :def + function. +Solution: Implement compiling the expression. +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4117 +Problem: Vim9: wrong white space error after using imported item. +Solution: Don't skip over white space. (closes #9544) +Files: src/eval.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4118 +Problem: Using UNUSED for argument that is used. +Solution: Remove UNUSED. +Files: src/usercmd.c + +Patch 8.2.4119 +Problem: Build failure when disabling the channel feature. +Solution: Adjust #ifdef. (Dominique Pell茅, closes #9545) +Files: src/misc2.c + +Patch 8.2.4120 +Problem: Block insert goes over the end of the line. +Solution: Handle invalid byte better. Fix inserting the wrong text. +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.2.4121 +Problem: Visual test fails on MS-Windows. +Solution: Set 'isprint' so that the character used is not printable. +Files: src/testdir/test_visual.vim + +Patch 8.2.4122 +Problem: ":command Cmd" does not show custom completion argument. +Solution: Show the completion argument when using ":verbose". +Files: src/usercmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.4123 +Problem: Complete function cannot be import.Name. +Solution: Dereference the function name if needed. Also: do not see + "import.Name" as a builtin function. (closes #9541) +Files: src/userfunc.c, src/eval.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4124 +Problem: Vim9: method in compiled function may not see script item. +Solution: Make sure not to skip to the next line. (closes #9496) +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4125 +Problem: Completion tests fail. +Solution: Disable error messages while dereferencing the function name. +Files: src/eval.c + +Patch 8.2.4126 +Problem: Crash on exit when built with dynamic Tcl and EXITFREE is defined. + (Dominique Pell茅) +Solution: Only call Tcl_Finalize() when initialized. (closes #9546) +Files: src/if_tcl.c + +Patch 8.2.4127 +Problem: Build failure without the +eval feature. +Solution: Add #ifdef. +Files: src/usercmd.c + +Patch 8.2.4128 +Problem: Crash when method cannot be found. (Christian J. Robinson) +Solution: Don't mix up pointer names. +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4129 +Problem: Building with +sound but without +eval fails. (Dominique Pell茅) +Solution: Disable canberra in tiny and small build. (closes #9548) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.4130 +Problem: MS-Windows: MSVC build may have libraries duplicated. +Solution: Improve the MSVC Makefile. (Ken Takata, closes #9547) +Files: src/Make_mvc.mak + +Patch 8.2.4131 +Problem: Vim9: calling function in autoload import does not work in a :def + function. +Solution: When a variable is not found and a PCALL follows use a funcref. + (closes #9550) +Files: src/vim9execute.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4132 +Problem: Vim9: wrong error message when autoload script can't be found. +Solution: Correct check for using autoload with wrong name. +Files: src/vim9script.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4133 +Problem: output of ":scriptnames" goes into the message history, while this + does not happen for other commands, such as ":ls". +Solution: Use msg_outtrans() instead of smsg(). (closes #9551) +Files: src/scriptfile.c, src/testdir/test_scriptnames.vim + +Patch 8.2.4134 +Problem: MS-Windows: test for import with absolute path fails. +Solution: Handle path starting with slash as an absolute path. +Files: src/vim9script.c + +Patch 8.2.4135 +Problem: Vim9: ":scriptnames" shows unloaded imported autoload script. +Solution: Mark the unloaded script with "A". (closes #9552) +Files: runtime/doc/repeat.txt, src/scriptfile.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4136 +Problem: Vim9: the "autoload" argument of ":vim9script" is not useful. +Solution: Remove the argument. (closes #9555) +Files: runtime/doc/vim9.txt, runtime/doc/repeat.txt, src/vim9script.c, + src/errors.h, src/testdir/test_vim9_import.vim + +Patch 8.2.4137 +Problem: Vim9: calling import with and without method is inconsistent. +Solution: Set a flag that a parenthesis follows to compile_load_scriptvar(). + Add some more tests. Improve error message. +Files: src/vim9expr.c, src/vim9execute.c, src/vim9script.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4138 +Problem: Vim9: no error for return with argument when the function does not + return anything. +Solution: Give an error for the invalid argument. (issue #9497) +Files: src/vim9cmds.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4139 +Problem: Using freed memory if an expression abbreviation deletes the + abbreviation. +Solution: Do not access the pointer after evaluating the expression. +Files: src/map.c, src/testdir/test_mapping.vim + +Patch 8.2.4140 +Problem: maparg() does not indicate the type of script where it was defined. +Solution: Add "scriptversion". +Files: runtime/doc/builtin.txt, src/map.c, src/testdir/test_maparg.vim + +Patch 8.2.4141 (after 8.2.4140) +Problem: Vim9 builtin functions test fails. +Solution: Add "scriptversion" item to maparg() result. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.4142 +Problem: Build failure with normal features without persistent undo. +Solution: Adjust #ifdef. (closes #9557) +Files: src/fileio.c + +Patch 8.2.4143 +Problem: MS-Windows: IME support for Win9x is obsolete. +Solution: Remove the Win9x code. (Ken Takata, closes #9559) +Files: src/gui_w32.c + +Patch 8.2.4144 +Problem: Cannot load libsodium dynamically. +Solution: Support dynamic loading on MS-Windows. (Ken Takata, closes #9554) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak, src/buffer.c, + src/crypt.c, src/memline.c, src/proto/crypt.pro + +Patch 8.2.4145 +Problem: Confusing error when using name of import for a function. +Solution: Pass a flag to trans_function_name(). +Files: src/vim.h, src/userfunc.c, src/proto/userfunc.pro, src/eval.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4146 +Problem: Vim9: shadowed function can be used in compiled function but not + at script level. +Solution: Also give an error in a compiled function. (closes #9563) +Files: src/vim9expr.c + +Patch 8.2.4147 +Problem: E464 does not always include the offending command. +Solution: Add another error message with "%s". (closes #9564) +Files: src/errors.h, src/vim9compile.c, src/ex_docmd.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4148 +Problem: Deleting any mapping may cause <ScriptCmd> to not set the script + context. +Solution: Only reset last_used_map if it is the deleted mapping. + (closes #9568) +Files: src/map.c, src/getchar.c, src/proto/getchar.pro, + src/testdir/test_mapping.vim + +Patch 8.2.4149 +Problem: Test override not restored, autocommand left behind. +Solution: Correct restoring test override. Delete autocommand afterwards. +Files: src/testdir/test_autocmd.vim, src/testdir/test_mapping.vim + +Patch 8.2.4150 +Problem: Coverity warns for using pointer after free. +Solution: Swap statements, even though using the pointer is no problem. +Files: src/map.c + +Patch 8.2.4151 +Problem: Reading beyond the end of a line. +Solution: For block insert only use the offset for correcting the length. +Files: src/ops.c, src/testdir/test_visual.vim + +Patch 8.2.4152 +Problem: Block insert with double wide character fails. +Solution: Adjust the expected output. +Files: src/testdir/test_utf8.vim + +Patch 8.2.4153 +Problem: MS-Windows: Global IME is no longer supported. +Solution: Remove the Global IME implementation. (Ken Takata, closes #9562) +Files: Filelist, runtime/doc/mbyte.txt, src/Make_mvc.mak, src/dimm.idl, + src/glbl_ime.cpp, src/glbl_ime.h, src/gui_w32.c, src/vim.h + +Patch 8.2.4154 +Problem: ml_get error when exchanging windows in Visual mode. +Solution: Correct end of Visual area when entering another buffer. +Files: src/window.c, src/testdir/test_visual.vim + +Patch 8.2.4155 +Problem: Translating strftime() argument results in check error. +Solution: Add gettext comment. +Files: src/time.c + +Patch 8.2.4156 +Problem: Fileinfo message overwrites echo'ed message. +Solution: Reset need_fileinfo when displaying a message. (Rob Pilling, + closes #9569) +Files: src/message.c, src/testdir/test_messages.vim, + src/testdir/dumps/Test_fileinfo_after_echo.dump + +Patch 8.2.4157 +Problem: Terminal test fails because Windows sets the title. +Solution: Add the "vterm_title" testing override and use it in the test. + (Ozaki Kiichi, closes #9556) +Files: runtime/doc/testing.txt, src/globals.h, src/terminal.c, + src/testing.c, src/testdir/test_terminal.vim + +Patch 8.2.4158 +Problem: MS-Windows: memory leak in :browse. +Solution: Free stuff before returning. (Ken Takata, closes #9574) +Files: src/gui_w32.c + +Patch 8.2.4159 +Problem: MS-Windows: _WndProc() is very long. +Solution: Move code to separate functions. (Ken Takata, closes #9573) +Files: src/gui_w32.c + +Patch 8.2.4160 +Problem: Cannot change the register used for Select mode delete. +Solution: Make CTRL-R set the register to be used when deleting text for + Select mode. (Shougo Matsushita, closes #9531) +Files: runtime/doc/visual.txt, src/globals.h, src/normal.c, src/ops.c, + src/testdir/test_selectmode.vim + +Patch 8.2.4161 +Problem: Vim9: warning for missing white space after imported variable. +Solution: Do not skip white space. (closes #9567) +Files: src/vim9expr.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4162 +Problem: Vim9: no error for redefining function with export. +Solution: Check for existing function with/without prefix. (closes #9577) +Files: src/userfunc.c, src/scriptfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4163 +Problem: No error for omitting function name after autoload prefix. +Solution: Check for missing function name. (issue #9577) +Files: src/userfunc.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4164 (after 8.2.4162) +Problem: Error in legacy code for function shadowing variable. +Solution: Only give the error in Vim9 script. +Files: src/userfunc.c + +Patch 8.2.4165 +Problem: The nv_g_cmd() function is too long. +Solution: Move code to separate functions. (Yegappan Lakshmanan, + closes #9576) +Files: src/normal.c + +Patch 8.2.4166 +Problem: Undo synced when switching buffer in another window. +Solution: Do not sync undo when not needed. (closes #9575) +Files: src/buffer.c, src/testdir/test_timers.vim + +Patch 8.2.4167 +Problem: Vim9: error message for old style import. +Solution: Use another error message. Add a test. +Files: src/evalvars.c, src/errors.h, src/testdir/test_vim9_import.vim + +Patch 8.2.4168 (after 8.2.4163) +Problem: Disallowing empty function name breaks existing plugins. +Solution: Allow empty function name in legacy script. +Files: src/userfunc.c, src/testdir/test_autoload.vim, + src/testdir/sautest/autoload/foo.vim + +Patch 8.2.4169 +Problem: MS-Windows: unnecessary casts and other minor things. +Solution: Clean up the MS-Windows code. (Ken Takata, closes #9583) +Files: src/gui_w32.c + +Patch 8.2.4170 +Problem: MS-Windows: still using old message API calls. +Solution: Call the "W" functions directly. (Ken Takata, closes #9582) +Files: src/gui_w32.c, src/os_mswin.c, src/os_win32.c, src/os_win32.h + +Patch 8.2.4171 +Problem: Cannot invoke option function using autoload import. +Solution: Expand the import to an autoload function name. (closes #9578) +Files: src/userfunc.c, src/evalvars.c, src/proto/evalvars.pro, + src/option.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4172 +Problem: Filetype detection for BASIC is not optimal. +Solution: Improve BASIC filetype detection. (Doug Kearns) +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4173 +Problem: Cannot use an import in 'foldexpr'. +Solution: Set the script context to where 'foldexpr' was set. (closes #9584) + Fix that the script context was not set for all buffers. +Files: src/eval.c, src/proto/eval.pro, src/fold.c, src/structs.h, + src/option.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4174 +Problem: Vim9: can use an autoload name in normal script. +Solution: Disallow using an autoload name. +Files: src/userfunc.c, src/errors.h, src/testdir/test_vim9_import.vim + +Patch 8.2.4175 +Problem: MS-Windows: runtime check for multi-line balloon is obsolete. +Solution: Remove the obsolete code. (Ken Takata, closes #9592) +Files: src/evalfunc.c, src/gui_w32.c, src/proto/gui_w32.pro + +Patch 8.2.4176 +Problem: Vim9: cannot use imported function with call(). +Solution: Translate the function name. (closes #9590) +Files: src/evalfunc.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4177 +Problem: Vim9: autoload script not loaded after "vim9script noclear". +Solution: Check IMP_FLAGS_AUTOLOAD properly. (closes #9593) +Files: src/vim9compile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4178 +Problem: Vim9: invalid error for return type of lambda when debugging. +Solution: Do not check the return type of a lambda. (closes #9589) +Files: src/vim9cmds.c + +Patch 8.2.4179 +Problem: 'foldtext' is evaluated in the current script context. +Solution: Use the script context where the option was set. +Files: src/fold.c, src/buffer.c, src/eval.c, src/proto/eval.pro, + src/findfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4180 +Problem: 'balloonexpr' is evaluated in the current script context. +Solution: Use the script context where the option was set. +Files: src/beval.c, src/option.c, src/proto/option.pro, + src/testdir/test_balloon.vim, + src/testdir/dumps/Test_balloon_eval_term_01.dump, + src/testdir/dumps/Test_balloon_eval_term_01a.dump, + src/testdir/dumps/Test_balloon_eval_term_02.dump + +Patch 8.2.4181 +Problem: Vim9: cannot use an import in 'diffexpr'. +Solution: Set the script context when evaluating 'diffexpr'. Do not require + 'diffexpr' to return a bool, it was ignored anyway. +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4182 (after 8.2.4182) +Problem: Memory leak when evaluating 'diffexpr'. +Solution: Use free_tv() instead of clear_tv(). +Files: src/evalvars.c + +Patch 8.2.4183 +Problem: Cannot use an import in 'formatexpr'. +Solution: Set the script context when evaluating 'formatexpr'. +Files: src/textformat.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4184 +Problem: Cannot use an import in 'includeexpr'. +Solution: Set the script context when evaluating 'includeexpr' +Files: src/findfile.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4185 +Problem: Cannot use an import in 'indentexpr'. +Solution: Set the script context when evaluating 'indentexpr' +Files: src/indent.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4186 +Problem: Cannot use an import in 'patchexpr'. +Solution: Set the script context when evaluating 'patchexpr'. Do not + require 'patchexpr' to return a bool, it was ignored anyway. +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4187 +Problem: Gnuplot file not recognized. +Solution: Recognize ".gnuplot". (closes #9588) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4188 +Problem: Not all gitconfig files are recognized. +Solution: Add a few more patterns. (Tim Pope, closes #9597) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4189 +Problem: MS-Windows: code for "old look" is obsolete. +Solution: Delete obsolete code. Use "MS Shell Dlg" font. (Ken Takata, + closes #9596) +Files: src/gui_w32.c + +Patch 8.2.4190 +Problem: All conceal tests are skipped without the screendumps feature. +Solution: Only skip the tests that use screendumps. (closes #9599) +Files: src/testdir/test_conceal.vim + +Patch 8.2.4191 +Problem: json5 files are not recognized. +Solution: Add a pattern for json5 files. (closes #9601) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4192 +Problem: Cannot use an import in 'printexpr'. +Solution: Set the script context when evaluating 'printexpr'. +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4193 +Problem: Cannot use an import in 'charconvert'. +Solution: Set the script context when evaluating 'charconvert'. Also expand + script-local functions in 'charconvert'. +Files: src/evalvars.c, src/optionstr.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4194 +Problem: MS-Windows: code for calculating font size is duplicated. +Solution: Move the code to a function. (Ken Takata, closes #9603) +Files: src/gui_w32.c + +Patch 8.2.4195 +Problem: Resizing terminal may cause to behave like CTRL-Z. +Solution: Set "got_tstp" only when in_mch_suspend is set. (Dorian Bivolaru, + closes #9602, closes #9586) +Files: src/os_unix.c + +Patch 8.2.4196 +Problem: Various file types not recognized. +Solution: Add patterns to recognize more file types (closes #9607) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4197 +Problem: Cannot use an import in the "expr" part of 'spellsuggest'. +Solution: Set the script context when evaluating "expr" of 'spellsuggest'. +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4198 +Problem: Vim9: the switch for executing instructions is too long. +Solution: Move some code to separate functions. +Files: src/vim9execute.c + +Patch 8.2.4199 +Problem: MS-Windows: Support for MSVC before 2003 is not useful. +Solution: Remove the exceptions for MSVC 6.0. (Ken Takata, closes #9616) +Files: src/GvimExt/gvimext.h, src/ex_docmd.c, src/feature.h, + src/gui_w32.c, src/if_cscope.c, src/if_ole.cpp, src/if_ruby.c, + src/macros.h, src/os_mswin.c, src/os_win32.c, src/os_win32.h, + src/proto/os_win32.pro, src/time.c, src/vim.h + +Patch 8.2.4200 +Problem: Some tests do not clean up properly. +Solution: Delete created files. (Yegappan Lakshmanan, closes #9611) +Files: src/testdir/test_filetype.vim, src/testdir/test_messages.vim, + src/testdir/test_vim9_import.vim + +Patch 8.2.4201 +Problem: When using the GUI CTRL-Z does not stop gvim. +Solution: When using the GUI set SIGTSTP to SIG_DFL. (Andrew Maltsev, + closes #9570) +Files: src/os_unix.c + +Patch 8.2.4202 +Problem: Vim9: cannot export function that exists globally. +Solution: When checking if a function already exists only check for + script-local functions. (closes #9615) +Files: src/userfunc.c, src/proto/userfunc.pro, src/vim.h, + src/vim9compile.c, src/vim9instr.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4203 +Problem: Entering a character with CTRL-V may include modifiers. +Solution: Reset "mod_mask" when entering a character with digits after + CTRL-V. (closes #9610) +Files: src/edit.c, src/testdir/test_edit.vim + +Patch 8.2.4204 +Problem: screenpos() has non-zero row for invisible text. +Solution: Only add the window row when the text is visible. (closes #9618) +Files: src/move.c, src/testdir/test_cursor_func.vim + +Patch 8.2.4205 +Problem: The normal_cmd() function is too long. +Solution: Move parts to separate functions. (Yegappan Lakshmanan, + closes #9608) +Files: src/normal.c + +Patch 8.2.4206 +Problem: Condition with many "(" causes a crash. +Solution: Limit recursion to 1000. +Files: src/errors.h, src/eval.c, src/testdir/test_eval_stuff.vim + +Patch 8.2.4207 (after 8.2.4206) +Problem: Recursion test fails with MSVC. +Solution: Use a smaller limit for MSVC. +Files: src/eval.c + +Patch 8.2.4208 +Problem: Using setbufvar() may change the window title. +Solution: Do not redraw when creating the autocommand window. (closes #9613) +Files: src/autocmd.c, src/testdir/test_functions.vim + +Patch 8.2.4209 +Problem: partial in 'opfunc' cannot use an imported function. +Solution: Also expand the function name in a partial. (closes #9614) +Files: src/evalvars.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4210 (after 8.2.4208) +Problem: Window title test fails in some configurations. +Solution: Only run the test if the title can be obtained. +Files: src/testdir/test_functions.vim + +Patch 8.2.4211 (after 8.2.4208) +Problem: Window title test still fails in some configurations. +Solution: Use WaitForAssert(). +Files: src/testdir/test_functions.vim + +Patch 8.2.4212 (after 8.2.4208) +Problem: Window title test still fails in some configurations. +Solution: Explicitly set the 'title' option. +Files: src/testdir/test_functions.vim + +Patch 8.2.4213 +Problem: Too much code for supporting old MSVC versions. +Solution: Remove MSVC 2003 support. (Ken Takata, closes #9623) +Files: Filelist, src/INSTALLpc.txt, src/Make_mvc.mak, src/gui_w32.c, + src/msvcsetup.bat, src/os_win32.c + +Patch 8.2.4214 +Problem: Illegal memory access with large 'tabstop' in Ex mode. +Solution: Allocate enough memory. +Files: src/ex_getln.c, src/testdir/test_ex_mode.vim + +Patch 8.2.4215 +Problem: Illegal memory access when copying lines in Visual mode. +Solution: Adjust the Visual position after copying lines. +Files: src/ex_cmds.c, src/testdir/test_visual.vim + +Patch 8.2.4216 +Problem: Vim9: cannot use a function from an autoload import directly. +Solution: Add the AUTOLOAD instruction to figure out at runtime. + (closes #9620) +Files: src/vim9expr.c, src/vim9.h, src/vim9execute.c, src/vim9instr.c, + src/proto/vim9instr.pro, src/testdir/test_vim9_import.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4217 +Problem: Illegal memory access when undo makes Visual area invalid. +Solution: Correct the Visual area after undo. +Files: src/undo.c, src/testdir/test_visual.vim + +Patch 8.2.4218 +Problem: Illegal memory access with bracketed paste in Ex mode. +Solution: Reserve space for the trailing NUL. +Files: src/edit.c, src/testdir/test_paste.vim + +Patch 8.2.4219 +Problem: Reading before the start of the line. +Solution: Check boundary before trying to read the character. +Files: src/register.c, src/testdir/test_visual.vim + +Patch 8.2.4220 +Problem: MS-Windows: some old compiler support remains. +Solution: Remove obsolete compiler support. (Ken Takata, closes #9627) +Files: src/Make_mvc.mak, src/vim.h + +Patch 8.2.4221 +Problem: Some functions in normal.c are very long. +Solution: Move code to separate functions. (Yegappan Lakshmanan, + closes #9628) +Files: src/normal.c + +Patch 8.2.4222 +Problem: MS-Windows: clumsy way to suppress progress on CI. +Solution: Check for "$CI" in the Makefile itself. (Ken Takata, closes #9631) +Files: .github/workflows/ci.yml, ci/appveyor.bat, src/Make_mvc.mak + +Patch 8.2.4223 +Problem: Long/int compiler warnings; function arguments swapped. +Solution: Add type casts. Swap arguments. (Ken Takata, closes #9632) +Files: src/alloc.c, src/eval.c, src/vim9script.c + +Patch 8.2.4224 +Problem: Vim9: no error when using a number for map() second argument +Solution: Disallow number to string conversion. (closes #9630) +Files: src/eval.c, src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4225 +Problem: Vim9: depth argument of :lockvar not parsed in :def function. +Solution: Parse the optional depth argument. (closes #9629) + Fix that locking doesn't work for a non-materialize list. +Files: src/vim9cmds.c, src/evalvars.c, src/structs.h, src/evalfunc.c, + src/errors.h, src/vim9execute.c, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4226 (after 8.2.4224) +Problem: Filter-map test fails. +Solution: Only reject number argument in Vim9 script. +Files: src/eval.c + +Patch 8.2.4227 +Problem: Vim9: using "lockvar!" in :def function does not work. +Solution: Add "!" instead of "-1". (closes #9634) +Files: src/vim9cmds.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4228 +Problem: No tests for clicking in the GUI tabline. +Solution: Add test functions to generate the events. Add tests using the + functions. (Yegappan Lakshmanan, closes #9638) +Files: runtime/doc/builtin.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/normal.c, + src/proto/testing.pro, src/testdir/test_diffmode.vim, + src/testdir/test_gui.vim, src/testdir/test_normal.vim, + src/testing.c + +Patch 8.2.4229 +Problem: Possible crash when invoking timer callback fails. +Solution: Initialize the typval. Give an error for an empty callback. + (closes #9636) +Files: src/time.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4230 +Problem: MS-Windows: set_guifontwide() is included but won't work. +Solution: Include set_guifontwide() only for X11. (Ken Takata, closes #9640) +Files: src/gui.c + +Patch 8.2.4231 +Problem: Vim9: map() gives type error when type was not declared. +Solution: Only check the type when it was declared, like extend() does. + (closes #9635) +Files: src/list.c, src/evalfunc.c, src/vim9instr.c, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4232 (after 8.2.4231) +Problem: Some compilers don't like a goto label without statement. +Solution: Return instead of using a goto. +Files: src/list.c + +Patch 8.2.4233 +Problem: Crash when recording and using Select mode. +Solution: When deleting the last recorded character check there is something + to delete. +Files: src/getchar.c, src/testdir/test_registers.vim + +Patch 8.2.4234 +Problem: test_garbagecollect_now() does not check v:testing as documented. +Solution: Give an error if v:testing is not set. +Files: src/testing.c, src/errors.h, src/testdir/test_functions.vim + +Patch 8.2.4235 +Problem: Invalid check for NULL pointer. +Solution: Remove the check. +Files: src/getchar.c + +Patch 8.2.4236 +Problem: Accessing freed memory. +Solution: Set the bh_curr pointer to NULL. +Files: src/getchar.c + +Patch 8.2.4237 +Problem: Record buffer wrong if character in Select mode was not typed. +Solution: Only delete the tail from the record buffer if the character was + typed. (closes #9650) +Files: src/normal.c, src/testdir/test_registers.vim + +Patch 8.2.4238 +Problem: *.tf file could be filetype "tf" or "terraform". +Solution: Detect the type from the file contents. (closes #9642) +Files: runtime/filetype.vim, runtime/autoload/dist/ft.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4239 +Problem: Build fails with unusual configuration. +Solution: Adjust #ifdef. (closes #9651) +Files: src/testing.c + +Patch 8.2.4240 +Problem: Error for using flatten() in Vim9 script is unclear. +Solution: Add a remark to use flattennew(). +Files: src/errors.h + +Patch 8.2.4241 +Problem: Some type casts are redundant. +Solution: Remove the type casts. (closes #9643) +Files: src/blob.c, src/buffer.c, src/channel.c, src/clientserver.c, + src/clipboard.c, src/drawline.c, src/drawscreen.c, src/edit.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_eval.c, + src/fold.c, src/if_cscope.c, src/json.c, src/match.c, + src/memline.c, src/message.c, src/misc1.c, src/normal.c, + src/ops.c, src/option.c, src/optionstr.c, src/os_unix.c, + src/register.c, src/sign.c, src/spellfile.c, src/tag.c, src/ui.c, + src/undo.c, src/window.c + +Patch 8.2.4242 +Problem: Put in Visual mode cannot be repeated. +Solution: Use "P" to put without yanking the deleted text into the unnamed + register. (Shougo Matsushita, closes #9591) +Files: runtime/doc/visual.txt, src/normal.c, src/register.c, + src/testdir/test_visual.vim + +Patch 8.2.4243 +Problem: Lua tests fail with Lua 5.4.4. +Solution: Check messages like before Lua 5.4.3. (Jakub Kul铆k, closes #9652) +Files: src/testdir/test_lua.vim + +Patch 8.2.4244 +Problem: MS-Windows: warning from MSVC on debug build. +Solution: Adjust "/opt" options. Remove unused variables. Make variables + uppercase for consistency. (Ken Takata, closes #9647) +Files: src/Make_mvc.mak + +Patch 8.2.4245 +Problem: ":retab 0" may cause illegal memory access. +Solution: Limit the value of 'tabstop' to 10000. +Files: src/option.c, src/vim.h, src/indent.c, + src/testdir/test_options.vim + +Patch 8.2.4246 +Problem: One error message not in errors.h. (Antonio Colombo) +Solution: Move the message and rename. +Files: src/errors.h, src/if_perl.xs + +Patch 8.2.4247 +Problem: Stack corruption when looking for spell suggestions. +Solution: Prevent the depth increased too much. Add a five second time + limit to finding suggestions. +Files: src/spellsuggest.c, src/testdir/test_spell.vim + +Patch 8.2.4248 +Problem: No proper test for moving the window separator. +Solution: Add a test. Add comment in code. (closes #9656) +Files: src/window.c, src/testdir/test_window_cmd.vim + +Patch 8.2.4249 +Problem: The timeout limit for spell suggestions is always 5000 milli + seconds. +Solution: Add the "timeout" entry to 'spellsuggest'. +Files: runtime/doc/options.txt, src/spellsuggest.c, + src/testdir/test_spell.vim + +Patch 8.2.4250 +Problem: Channel out callback test is flaky on Mac. +Solution: Assign high priority to the test process. (Ozaki Kiichi, + closes #9653) +Files: src/testdir/test_channel_pipe.py, src/testdir/thread_util.py + +Patch 8.2.4251 +Problem: Vala files are not recognized. +Solution: Add the *.vala pattern. (closes #9654) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4252 +Problem: Generating the normal command table at runtime is inefficient. +Solution: Generate the table with a Vim script and put it in a header file. + (Yegappan Lakshmanan, closes #9648) +Files: Filelist, runtime/doc/builtin.txt, runtime/doc/usr_41.txt, + src/Make_cyg_ming.mak, src/Make_mvc.mak, src/Make_vms.mms, + src/Makefile, src/create_nvcmdidxs.vim, src/evalfunc.c, + src/main.c, src/normal.c, src/nv_cmdidxs.h, src/proto/normal.pro + +Patch 8.2.4253 +Problem: Using freed memory when substitute uses a recursive function call. +Solution: Make a copy of the substitute text. +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.2.4254 +Problem: Using short instead of int. +Solution: Use int. (closes #9658) +Files: src/if_cscope.c + +Patch 8.2.4255 +Problem: Theoretical computation overflow. +Solution: Perform multiplication in a wider type. (closes #9657) +Files: src/alloc.c, src/drawline.c, src/eval.c, src/evalfunc.c, + src/ex_docmd.c, src/hardcopy.c, src/list.c, src/memfile.c, + src/memline.c, src/popupwin.c + +Patch 8.2.4256 +Problem: MS-Windows: compiler warnings when compiled with /W4. +Solution: Small adjustments to the code. (Ken Takata, closes #9659) +Files: src/gui_w32.c, src/os_win32.c + +Patch 8.2.4257 +Problem: Vim9: finding global function without g: prefix but not finding + global variable is inconsistent. +Solution: Require using g: for a global function. Change the vim9.vim + script into a Vim9 script with exports. Fix that import in legacy + script does not work. +Files: src/vim9expr.c, src/evalfunc.c, src/eval.c, src/userfunc.c, + src/testdir/vim9.vim, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_import.vim, + src/testdir/test_vim9_script.vim, src/testdir/test_blob.vim, + src/testdir/test_execute_func.vim, src/testdir/test_debugger.vim, + src/testdir/test_expr.vim, src/testdir/test_filter_map.vim, + src/testdir/test_float_func.vim, src/testdir/test_functions.vim, + src/testdir/test_glob2regpat.vim, src/testdir/test_highlight.vim, + src/testdir/test_iminsert.vim, src/testdir/test_ins_complete.vim, + src/testdir/test_listdict.vim, src/testdir/test_mapping.vim, + src/testdir/test_normal.vim, src/testdir/test_popupwin.vim, + src/testdir/test_profile.vim, src/testdir/test_quickfix.vim, + src/testdir/test_tagfunc.vim, src/testdir/test_textprop.vim, + src/testdir/test_usercommands.vim + +Patch 8.2.4258 +Problem: Coverity warns for array overrun. +Solution: Restrict depth to MAXWLEN - 1. +Files: src/spellsuggest.c + +Patch 8.2.4259 +Problem: Number of test functions for GUI events is growing. +Solution: Use one function with a dictionary. (Yegappan Lakshmanan, + closes #9660) +Files: runtime/doc/builtin.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/proto/testing.pro, + src/testdir/test_gui.vim, src/testdir/test_vim9_builtin.vim, + src/testing.c + +Patch 8.2.4260 +Problem: Vim9: can still use a global function without g: at the script + level. +Solution: Also check for g: at the script level. (issue #9637) +Files: src/userfunc.c, src/proto/userfunc.pro, src/evalvars.c, + src/vim9expr.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_import.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_11.dump, + src/testdir/dumps/Test_popupwin_scroll_12.dump + +Patch 8.2.4261 +Problem: Accessing invalid memory when a regular expression checks the + Visual area while matching in a string. +Solution: Do not try matching the Visual area in a string. +Files: src/regexp.c, src/testdir/test_help.vim + +Patch 8.2.4262 (after 8.2.4261) +Problem: Some search tests fail. +Solution: Use a better way to reject searching for the Visual area. +Files: src/regexp.c + +Patch 8.2.4263 +Problem: No test for the GUI find/replace dialog. +Solution: Add a test function and a test. (Yegappan Lakshmanan, + closes #9662) +Files: runtime/doc/testing.txt, src/testdir/test_gui.vim, src/testing.c + +Patch 8.2.4264 +Problem: Vim9: can use old style autoload function name. +Solution: Give an error for old style autoload function name. +Files: src/errors.h, src/userfunc.c, src/testdir/test_vim9_import.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.4265 (after 8.2.4264) +Problem: Autoload tests fails. +Solution: Use export instead of name with #. +Files: src/testdir/sautest/autoload/auto9.vim, + src/testdir/test_autoload.vim, src/testdir/test_ins_complete.vim + +Patch 8.2.4266 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize saved_did_emsg. +Files: src/userfunc.c + +Patch 8.2.4267 +Problem: Unused entry in keymap enum. +Solution: Remove the entry. +Files: src/keymap.h + +Patch 8.2.4268 +Problem: CI log output is long. +Solution: Group output in sections. (Ozaki Kiichi, closes #9670) +Files: .github/workflows/ci.yml + +Patch 8.2.4269 +Problem: Coverity warns for using a NULL pointer. +Solution: Check for "name" to not be NULL. +Files: src/userfunc.c + +Patch 8.2.4270 +Problem: Generating nv_cmdidxs.h requires building Vim twice. +Solution: Move the table into a separate file and use a separate executable + to extract the command characters. (Ozaki Kiichi, closes #9669) +Files: src/normal.c, src/nv_cmds.h, Filelist, runtime/doc/builtin.txt, + runtime/doc/usr_41.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/Make_vms.mms, src/Makefile, src/create_nvcmdidxs.c, + src/create_nvcmdidxs.vim, src/evalfunc.c, src/proto/normal.pro + +Patch 8.2.4271 +Problem: MS-Windows: cannot build with Ruby 3.1.0. +Solution: Adjust the DLL name and include directory. (Ken Takata, + closes #9666) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.2.4272 +Problem: Vim9 expr test fails without the channel feature. (Dominique + Pell茅) +Solution: Remove "g:" before "CheckFeature". (closes #9671) +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.4273 +Problem: The EBCDIC support is outdated. +Solution: Remove the EBCDIC support. +Files: src/ascii.h, src/charset.c, src/cindent.c, src/digraph.c, + src/edit.c, src/eval.c, src/evalfunc.c, src/ex_cmds.c, + src/feature.h, src/filepath.c, src/findfile.c, src/getchar.c, + src/gui.c, src/gui_motif.c, src/hardcopy.c, src/help.c, + src/macros.h, src/map.c, src/mark.c, src/misc2.c, src/normal.c, + src/ops.c, src/option.c, src/option.h, src/optiondefs.h, + src/os_unix.c, src/proto/evalfunc.pro, src/regexp.c, + src/regexp_bt.c, src/regexp_nfa.c, src/register.c, src/screen.c, + src/spell.c, src/strings.c, src/structs.h, src/term.c, + src/version.c, src/viminfo.c, src/testdir/test_edit.vim, + src/testdir/test_exec_while_if.vim, src/testdir/test_expr.vim, + src/testdir/test_gf.vim, src/testdir/test_regexp_utf8.vim + +Patch 8.2.4274 +Problem: Basic and form filetype detection is incomplete. +Solution: Add a separate function for .frm files. (Doug Kearns, closes #9675) +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4275 +Problem: Cannot use an autoload function from a package under start. +Solution: Also look in the "start" package directory. (Bjorn Linse, + closes #7193) +Files: src/scriptfile.c, src/testdir/test_packadd.vim + +Patch 8.2.4276 +Problem: Separate test function for the GUI scrollbar. +Solution: Use test_gui_event(). (Yegappan Lakshmanan, closes #9674) +Files: runtime/doc/builtin.txt, runtime/doc/testing.txt, + runtime/doc/usr_41.txt, src/evalfunc.c, src/testing.c, + src/proto/testing.pro, src/testdir/test_gui.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4277 +Problem: Vim9: an import does not shadow a command modifier. +Solution: Do not accept a command modifier followed by a dot. +Files: src/ex_docmd.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4278 +Problem: Build with Athena GUI fails. (Elimar Riesebieter) +Solution: Add #ifdef. +Files: src/testing.c + +Patch 8.2.4279 +Problem: Vim9: cannot change item type with map() after range(). +Solution: Split the return type in current type and declared type. + (closes #9665) +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9instr.c, + src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4280 (after 8.2.4279) +Problem: list-dict test crashes. +Solution: Check declared type for add(). +Files: src/vim9expr.vim + +Patch 8.2.4281 +Problem: Using freed memory with :lopen and :bwipe. +Solution: Do not use a wiped out buffer. +Files: src/buffer.c, src/testdir/test_quickfix.vim + +Patch 8.2.4282 +Problem: Restricted mode requires the -Z command line option. +Solution: Use restricted mode when $SHELL ends in "nologin" or "false". + (closes #9681) +Files: runtime/doc/starting.txt, src/option.c, + src/testdir/test_restricted.vim + +Patch 8.2.4283 +Problem: Using a variable for the return value is not needed. +Solution: Return the value directly. (closes #9687) +Files: src/ex_docmd.c, src/misc2.c + +Patch 8.2.4284 +Problem: Old mac resources files are no longer used. +Solution: Delete the unused files. (Ozaki Kiichi, closes #9688) +Files: Filelist, src/Makefile, src/dehqx.py, src/infplist.xml, + src/os_mac.rsr.hqx, src/os_mac_rsrc/app.icns, + src/os_mac_rsrc/doc-txt.icns, src/os_mac_rsrc/doc.icns + +Patch 8.2.4285 +Problem: Vim9: type of item in for loop not checked properly. +Solution: Adjust the type checking. (closes #9683) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9cmds.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4286 +Problem: Vim9: strict type checking after copy() and deepcopy(). +Solution: Allow type to change after making a copy. (closes #9644) +Files: src/eval.c, src/proto/eval.pro, src/dict.c, src/proto/dict.pro, + src/list.c, src/proto/list.pro, src/evalfunc.c, src/vim9execute.c, + src/vim9type.c, src/proto/vim9type.pro, src/evalvars.c, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4287 +Problem: Cannot assign empty list with any list type to variable with + specific list type. +Solution: Use unknown list type for empty list if the specified type is any. +Files: src/vim9type.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.4288 +Problem: Preprocessor indents are inconsistent. +Solution: Fix preprocessor indents. (Ken Takata, closes #9691) +Files: src/arglist.c, src/change.c, src/ex_cmds.c, src/gui.c, + src/hashtab.c, src/indent.c, src/ops.c, src/os_win32.c + +Patch 8.2.4289 +Problem: Warnings reported by MSVC. +Solution: Rename variables and other fixes. (Ken Takata, closes #9689) +Files: src/cmdexpand.c, src/drawscreen.c, src/filepath.c, src/getchar.c, + src/menu.c, src/os_win32.c, src/version.c + +Patch 8.2.4290 +Problem: MS-Windows: using type casts for timer IDs. +Solution: Remove type casts and use the right type. (Ken Takata, + closes #9690) Remove old debug comments. Rename variables and + functions. +Files: src/gui_w32.c + +Patch 8.2.4291 +Problem: Error number used twice. +Solution: Renumber the errors. +Files: src/errors.h + +Patch 8.2.4292 (after 8.2.4291) +Problem: Test fails. +Solution: Adjust the expected error number. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.4293 +Problem: Vim9: when copying a list it gets type list<any> even when the + original list did not have a type. +Solution: Only set the type when the original list has a type. (closes #9692) +Files: src/list.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4294 +Problem: MS-Windows: #ifdefs for Cygwin are too complicated. +Solution: Simplify the conditions. (Ken Takata, closes #9693) +Files: src/evalfunc.c, src/main.c, src/os_unix.c, src/os_win32.c, + src/os_win32.h + +Patch 8.2.4295 +Problem: Vim9: concatenating two lists may result in wrong type. +Solution: Remove the type instead of using list<any>. (closes #9692) +Files: src/list.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4296 +Problem: Vim9: not all code covered by tests. +Solution: Add a few more tests for corner cases. Fix hang when single quote + is missing. +Files: src/vim9expr.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.4297 +Problem: Vim9: not all code covered by tests. +Solution: Add a couple more tests. +Files: src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4298 +Problem: Divide by zero with huge tabstop value. +Solution: Reject tabstop value that overflows to zero. +Files: src/indent.c, src/testdir/test_vartabs.vim + +Patch 8.2.4299 +Problem: SafeState autocommand interferes with debugging. +Solution: Do not trigger SafeState while debugging. (closes #9697) +Files: src/main.c + +Patch 8.2.4300 (after 8.2.4299) +Problem: Cannot build tiny version. (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/main.c + +Patch 8.2.4301 +Problem: Vim9: type error for copy of dict. +Solution: Do not use dict<any> but no type. (closes #9696) +Files: src/dict.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4302 +Problem: Vim9: return type of getline() is too strict. +Solution: Make the declared type list<any>. Also do this for other + functions returning a list of a specific type. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4303 +Problem: A few messages should not be translated. +Solution: Remove _(). (Dominique Pell茅, closes #9702) +Files: src/syntax.c + +Patch 8.2.4304 +Problem: Vim9: slice() makes a copy but doesn't change the type. +Solution: Change the declared type like copy(). (closes #9696) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4305 +Problem: Tex filetype detection fails. +Solution: Check value to be positive. (closes #9704) +Files: runtime/autoload/dist/ft.vim, src/testdir/test_filetype.vim + +Patch 8.2.4306 +Problem: No test for fixed perl filetype check. +Solution: Add a test. Sort test functions. +Files: src/testdir/test_filetype.vim + +Patch 8.2.4307 +Problem: A few more messages should not be translated. +Solution: Remove _(). +Files: src/syntax.c + +Patch 8.2.4308 +Problem: Vim9: cannot list autoload function. +Solution: Don't give an error for using # when listing a function. + (closes #9703) +Files: src/userfunc.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4309 +Problem: Vim9: crash when using a partial in the wrong context. +Solution: Don't use an NULL outer pointer. (closes #9706) +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4310 +Problem: Vim9: constant list and dict get a declaration type other than + "any". +Solution: A constant list and dict have a declared member type "any". + (closes #9701) +Files: src/vim9instr.c, src/vim9type.c, src/proto/vim9type.pro, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4311 +Problem: Vim9: changing script variable type not caught at compile time. +Solution: Set the declared type. +Files: src/vim9instr.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.4312 +Problem: No error for using :vim9script in a :def function. +Solution: Give an error when compiling. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4313 +Problem: Vim9: cannot change type of list after making a slice. +Solution: Adjust the declared member type. (closes #9696) +Files: src/vim9expr.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4314 (after 8.2.4312) +Problem: Test fails where lines are skipped. +Solution: Only give an error when not skipping commands. +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4315 +Problem: Put in Visual mode not fully tested. +Solution: Add a few more test cases. (closes #9708) +Files: src/testdir/test_visual.vim + +Patch 8.2.4316 +Problem: __CYGWIN32__ is not defined on 64 bit systems. +Solution: Update #ifdefs. (Ken Takata, closes #9709) +Files: src/main.c, src/os_unix.c, src/pty.c, src/vim.h + +Patch 8.2.4317 +Problem: MS-Windows: Vim exits when Python 3 initialisation fails. +Solution: Hook into the exit() function to recover from the failure. + (Ken Takata, closes #9710) +Files: runtime/doc/if_pyth.txt, src/if_python3.c, src/os_win32.c, + src/errors.h, src/proto/os_win32.pro + +Patch 8.2.4318 +Problem: Various comment and indent mistakes, returning wrong zero. +Solution: Fix the mistakes. Return NULL instead of FAIL. +Files: src/clientserver.c, src/eval.c, src/evalvars.c, src/vim9cmds.c, + src/window.c + +Patch 8.2.4319 +Problem: :put does not work properly in compiled function. (John Beckett) +Solution: Adjust the direction when using line zero. +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4320 +Problem: Athena and Motif: when maximized scrollbar position is wrong. +Solution: Implement the scrollbar padding functions. (closes #9712) +Files: src/gui_athena.c, src/gui_motif.c + +Patch 8.2.4321 +Problem: Vim9: crash when using a funcref to a closure. +Solution: Copy pt_outer to the new partial. (closes #9714) +Files: src/evalfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4322 +Problem: Vim9: crash when using funcref with closure. +Solution: Keep a reference to the funcref that has the outer context. + (closes #9716) +Files: src/evalfunc.c, src/structs.h, src/eval.c, src/vim9execute.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.4323 +Problem: Vim9: nested function name can start with "_". +Solution: Use same rule for function name for nested functions. + (closes #9713) +Files: src/vim9compile.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4324 +Problem: Vim9: script-local function name can start with "_". +Solution: Check for leading capital after "s:". Correct error message. +Files: src/userfunc.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.4325 +Problem: 'wildmenu' only shows few matches. +Solution: Add the "pum" option: use a popup menu to show the matches. + (Yegappan Lakshmanan et al., closes #9707) +Files: runtime/doc/options.txt, src/vim.h, src/cmdexpand.c, + src/drawscreen.c, src/evalfunc.c, src/ex_getln.c, src/option.h, + src/optionstr.c, src/popupmenu.c, src/proto/cmdexpand.pro, + src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_01.dump, + src/testdir/dumps/Test_wildmenu_pum_02.dump, + src/testdir/dumps/Test_wildmenu_pum_03.dump, + src/testdir/dumps/Test_wildmenu_pum_04.dump, + src/testdir/dumps/Test_wildmenu_pum_05.dump, + src/testdir/dumps/Test_wildmenu_pum_06.dump, + src/testdir/dumps/Test_wildmenu_pum_07.dump, + src/testdir/dumps/Test_wildmenu_pum_08.dump, + src/testdir/dumps/Test_wildmenu_pum_09.dump, + src/testdir/dumps/Test_wildmenu_pum_10.dump, + src/testdir/dumps/Test_wildmenu_pum_11.dump, + src/testdir/dumps/Test_wildmenu_pum_12.dump, + src/testdir/dumps/Test_wildmenu_pum_13.dump, + src/testdir/dumps/Test_wildmenu_pum_14.dump, + src/testdir/dumps/Test_wildmenu_pum_15.dump, + src/testdir/dumps/Test_wildmenu_pum_16.dump, + src/testdir/dumps/Test_wildmenu_pum_17.dump, + src/testdir/dumps/Test_wildmenu_pum_18.dump, + src/testdir/dumps/Test_wildmenu_pum_19.dump, + src/testdir/dumps/Test_wildmenu_pum_20.dump, + src/testdir/dumps/Test_wildmenu_pum_21.dump, + src/testdir/dumps/Test_wildmenu_pum_22.dump, + src/testdir/dumps/Test_wildmenu_pum_23.dump, + src/testdir/dumps/Test_wildmenu_pum_24.dump, + src/testdir/dumps/Test_wildmenu_pum_25.dump, + src/testdir/dumps/Test_wildmenu_pum_26.dump, + src/testdir/dumps/Test_wildmenu_pum_27.dump, + src/testdir/dumps/Test_wildmenu_pum_28.dump, + src/testdir/dumps/Test_wildmenu_pum_29.dump + +Patch 8.2.4326 +Problem: "o" and "O" copying comment not sufficiently tested. +Solution: Add a test case. (closes #9718) +Files: src/testdir/test_textformat.vim + +Patch 8.2.4327 +Problem: May end up with no current buffer. +Solution: When deleting the current buffer to not pick a quickfix buffer as + the new current buffer. +Files: src/buffer.c, src/testdir/test_quickfix.vim + +Patch 8.2.4328 +Problem: Command line complete matches cleared when typing character. + (Dominique Pell茅) +Solution: Only remove a popup menu if there is one. +Files: src/ex_getln.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_30.dump, + src/testdir/dumps/Test_wildmenu_pum_31.dump + +Patch 8.2.4329 +Problem: No support for end line number and column in 'errorformat'. +Solution: Add %e and %k. (closes #9624) +Files: runtime/doc/quickfix.txt, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.2.4330 +Problem: Vim9: no error if script imports itself. +Solution: Give an error when a script imports itself. +Files: src/vim9script.c, src/errors.h, src/testdir/test_vim9_import.vim + +Patch 8.2.4331 +Problem: Vim9: no test for existing script variable in block. +Solution: Add a test. +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.4332 +Problem: Vim9: incomplete test for existing script variable in block. +Solution: Add a couple more tests. Fix uncovered problem. +Files: src/userfunc.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/vim9script.c, src/vim9expr.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4333 +Problem: cstack not always passed to where it is needed. +Solution: Pass cstack through functions. +Files: src/eval.c, src/vim9expr.c, src/vim9script.c, + src/proto/vim9script.pro, src/vim9compile.c, + src/proto/vim9compile.pro + +Patch 8.2.4334 +Problem: Command line popup menu not positioned correctly. +Solution: Also use vim_strsize() on the existing text. (Naruhiko Nishino, + closes #9727) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_32.dump + +Patch 8.2.4335 +Problem: No autocommand event triggered before changing directory. (Ronnie + Magatti) +Solution: Add DirChangedPre. (closes #9721) +Files: runtime/doc/autocmd.txt, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/vim.h, src/autocmd.c, src/misc2.c, + src/testdir/test_autocmd.vim + +Patch 8.2.4336 +Problem: Using :filter for :scriptnames does not work. (Ben Jackson) +Solution: Call message_filtered(). (closes #9720) +Files: src/scriptfile.c, src/testdir/test_filter_cmd.vim + +Patch 8.2.4337 +Problem: Part of condition is always true. +Solution: Remove that part of the condition. (closes #9729) +Files: src/filepath.c + +Patch 8.2.4338 +Problem: An error from an expression mapping messes up the display. +Solution: When the expression results in an empty string return K_IGNORE. + In cmdline mode redraw the command line. (closes #9726) +Files: src/getchar.c, src/testdir/test_mapping.vim, + src/testdir/dumps/Test_map_expr_2.dump, + src/testdir/dumps/Test_map_expr_3.dump, + src/testdir/dumps/Test_map_expr_4.dump + +Patch 8.2.4339 +Problem: CTRL-A does not work properly with the cmdline popup menu. +Solution: Fix issues with CTRL-A. Add more tests for the cmdline popup + menu. Remove TermWait() before VeriryScreenDump(). Refactor the + cmdline popup code. (Yegappan Lakshmanan, closes #9735) +Files: src/cmdexpand.c, src/ex_getln.c, src/popupmenu.c, + src/testdir/screendump.vim, src/testdir/test_bufline.vim, + src/testdir/test_cmdline.vim, src/testdir/test_conceal.vim, + src/testdir/test_cursorline.vim, src/testdir/test_diffmode.vim, + src/testdir/test_display.vim, src/testdir/test_highlight.vim, + src/testdir/test_match.vim, src/testdir/test_popup.vim, + src/testdir/test_search_stat.vim, src/testdir/test_terminal.vim, + src/testdir/test_textprop.vim, + src/testdir/dumps/Test_wildmenu_pum_33.dump, + src/testdir/dumps/Test_wildmenu_pum_34.dump, + src/testdir/dumps/Test_wildmenu_pum_35.dump, + src/testdir/dumps/Test_wildmenu_pum_36.dump, + src/testdir/dumps/Test_wildmenu_pum_37.dump + +Patch 8.2.4340 +Problem: Amiga: mch_can_exe() is not implemented. +Solution: Implement mch_can_exe() for Amiga OS 4. (Ola S枚der, closes #9731) +Files: src/os_amiga.c + +Patch 8.2.4341 +Problem: Command line not redrawn when finishing popup menu and the screen + has scrolled up. +Solution: Redraw the command line after updating the screen. (closes #9722) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_38.dump + +Patch 8.2.4342 +Problem: CI will soon switch to other windows version. +Solution: Use "windows-2019" instead of "windows-latest". (Ozaki Kiichi, + closes #9740) +Files: .github/workflows/ci.yml + +Patch 8.2.4343 +Problem: When reloading not all properties are detected. +Solution: Add the "edit" value to v:fcs_choice. (Rob Pilling, closes #9579) +Files: runtime/doc/editing.txt, runtime/doc/eval.txt, src/fileio.c, + src/proto/fileio.pro, src/message.c, src/spellfile.c, + src/testdir/test_filechanged.vim + +Patch 8.2.4344 +Problem: Amiga: header file included twice. +Solution: Remove #include. (Ola S枚der, closes #9733) +Files: src/memfile.c + +Patch 8.2.4345 +Problem: <amatch> is expanded like a file name for DirChangedPre. +Solution: Do not expand <amatch>. (closes #9742) Also for the User event. +Files: src/autocmd.c, src/testdir/test_autocmd.vim + +Patch 8.2.4346 +Problem: A custom statusline may cause Esc to work like Enter on the + command line when the popup menu is displayed. +Solution: Save and restore KeyTyped. (closes #9749) +Files: src/drawscreen.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_39.dump + +Patch 8.2.4347 +Problem: In some build setups UNUSED is not defined. +Solution: Change the logic of how UNUSED is defined. (Ola S枚der, + closes #9734) +Files: src/vim.h + +Patch 8.2.4348 +Problem: "legacy exe cmd" does not do what one would expect. +Solution: Apply the "legacy" and "vim9script" command modifiers to the + argument of ":execute". +Files: runtime/doc/vim9.txt, src/globals.h, src/eval.c, src/ex_docmd.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.4349 +Problem: FileChangedShell test fails on MS-Windows. +Solution: Skip the test on MS-Windows. +Files: src/testdir/test_filechanged.vim + +Patch 8.2.4350 +Problem: FEAT_GUI_ENABLED defined but never used. +Solution: Remove the #define. (Ola S枚der, closes #9732) +Files: src/vim.h + +Patch 8.2.4351 +Problem: No coverage is measured on MS-Windows CI. +Solution: Enable coverage on MS-Windows. (Ozaki Kiichi, closes #9750) +Files: .github/workflows/ci.yml + +Patch 8.2.4352 +Problem: ReScript files are not recognized. +Solution: Add the *.res and *.resi patterns. (Ananda Umamil, closes #9752) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4353 +Problem: CI does not use the latest Lua and Python. +Solution: Use Lua 5.4.2 and Python 3.10. (closes #9744) +Files: .github/workflows/ci.yml + +Patch 8.2.4354 +Problem: Dynamic loading of libsodium not handled properly. +Solution: Fix has() and :version. Show an error message when loading fails. + Fix memory leaks. (Ken Takata, closes #9754) +Files: src/crypt.c, src/evalfunc.c, src/gui_dwrite.cpp, src/if_cscope.c, + src/os_win32.c, src/proto/crypt.pro, src/proto/os_win32.pro, + src/version.c + +Patch 8.2.4355 +Problem: Unnecessary call to check_colorcolumn(). +Solution: Remove the call. (Sean Dewar, closes #9748) +Files: src/option.c, src/window.c + +Patch 8.2.4356 +Problem: Command line completion functions are very long. +Solution: Refactor into multiple functions. (Yegappan Lakshmanan, + closes #9753) +Files: src/cmdexpand.c + +Patch 8.2.4357 (after 8.2.4348) +Problem: sticky command modifiers are too sticky. +Solution: Do not apply command modifiers to a sourced script. (closes #9751) +Files: src/scriptfile.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4358 +Problem: Vim9: line number of exception is not set. +Solution: Set the line number before throwing an exception. (closes #9755) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4359 +Problem: crash when repeatedly using :retab. +Solution: Bail out when the line is getting too long. +Files: src/indent.c, src/testdir/test_retab.vim + +Patch 8.2.4360 +Problem: Vim9: allowing use of "s:" leads to inconsistencies. +Solution: Disallow using "s:" in Vim9 script at the script level. +Files: src/userfunc.c, src/proto/userfunc.pro, src/errors.h, + src/vim9compile.c, src/eval.c, src/testdir/vim9.vim, + src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_import.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.4361 (after 8.2.4360) +Problem: Vim9: some tests fail. +Solution: Fix the tests, mostly by removing "s:". +Files: src/testdir/test_expr.vim, src/testdir/test_functions.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_normal.vim, + src/testdir/test_tagfunc.vim + +Patch 8.2.4362 +Problem: :retab may allocate too much memory. +Solution: Bail out when allocating more than MAXCOL bytes. +Files: src/indent.c + +Patch 8.2.4363 +Problem: MS-Windows: running out of memory for a very long line. +Solution: Use a 32 bit value for MAXCOL also when ints are 64 bits. +Files: src/vim.h + +Patch 8.2.4364 +Problem: MS-Windows: still running out of memory for a very long line. +Solution: Check for negative length. +Files: src/indent.c + +Patch 8.2.4365 (after 8.2.4348) +Problem: sticky command modifiers are too sticky. +Solution: Do not apply command modifiers to a called function. (closes #9751) +Files: src/userfunc.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4366 +Problem: Not enough tests for command line completion. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #9760) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + src/testdir/test_usercommands.vim + +Patch 8.2.4367 +Problem: Calling in_vim9script() multiple times. +Solution: Call it once and keep the result. +Files: src/userfunc.c, src/eval.c + +Patch 8.2.4368 +Problem: Amiga: a few compiler warnings. +Solution: Adjust #ifdefs. Add "UNUSED". (Ola S枚der, closes #9756, + closes #9757) +Files: src/term.c, src/os_amiga.c + +Patch 8.2.4369 +Problem: Redundant #ifdef argument. +Solution: Remove unused MSWIN. (Ola S枚der, closes #9758) +Files: src/feature.h + +Patch 8.2.4370 +Problem: MS-Windows: libsodium.dll not included with the installer. +Solution: Add the file to the installer if it exists. (Christian Brabandt, + closes #9762) +Files: nsis/gvim.nsi + +Patch 8.2.4371 +Problem: Vim9: can create a script variable from a legacy function. +Solution: Disallow creating a script variable from a function. +Files: src/evalvars.c, src/errors.h, src/testdir/test_vim9_script.vim + +Patch 8.2.4372 +Problem: Filetype detection from file contents is in legacy script. +Solution: Use a compiled function for filetype detection. +Files: runtime/scripts.vim, runtime/autoload/dist/script.vim + +Patch 8.2.4373 +Problem: Expression test fails. +Solution: Make the test work with latest Vim9 syntax. +Files: src/testdir/test_expr.vim + +Patch 8.2.4374 +Problem: Unreachable code. +Solution: Remove outdated code lines. +Files: src/vim9compile.c + +Patch 8.2.4375 +Problem: ctx_imports is not used. +Solution: Delete ctx_imports. Add missing dependency. +Files: src/vim9.h, src/vim9compile.c, src/proto/vim9compile.pro, + src/eval.c, src/evalfunc.c, src/evalvars.c, src/userfunc.c, + src/vim9expr.c, src/vim9script.c, src/Makefile + +Patch 8.2.4376 +Problem: Not enough tests for command line completion. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #9771) +Files: src/testdir/test_cmdline.vim, src/testdir/test_usercommands.vim + +Patch 8.2.4377 +Problem: CI steps for Windows are a bit unorganized. +Solution: Organize CI test steps on Windows. (Ozaki Kiichi, closes #9764) +Files: .github/workflows/ci.yml + +Patch 8.2.4378 +Problem: Incsearch highlight broken when calling searchcount() in 'tabLine' + function. (Mirko Palmer) +Solution: Save and restore the incsearch state. (Christian Brabandt, + closes #9763, closes #9633) +Files: src/search.c, src/testdir/test_search_stat.vim, + src/testdir/dumps/Test_searchstat_inc_1.dump, + src/testdir/dumps/Test_searchstat_inc_2.dump, + src/testdir/dumps/Test_searchstat_inc_3.dump + +Patch 8.2.4379 +Problem: An empty change is reported to a listener. +Solution: Do not report an empty change. (closes #9768) Remove unused + return value. +Files: src/undo.c, src/change.c, src/testdir/test_listener.vim + +Patch 8.2.4380 +Problem: Small differences between Chinese translation files. +Solution: Add rule for converting UTF-8 to gb2312. (closes #9773) +Files: src/po/Makefile, src/po/Make_all.mak + +Patch 8.2.4381 (after 8.2.4380) +Problem: Translation file listed twice. +Solution: Remove one entry. +Files: src/po/Make_all.mak + +Patch 8.2.4382 (after 8.2.4346) +Problem: A custom 'tabline' may cause Esc to work like Enter on the + command line when the popup menu is displayed. +Solution: Save and restore KeyTyped. (closes #9776) +Files: src/drawscreen.c, src/screen.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_40.dump + +Patch 8.2.4383 +Problem: Vim9: unused code lines. +Solution: Rely on either "cctx" or "cstack" to not be NULL. +Files: src/vim9compile.c + +Patch 8.2.4384 +Problem: Vim9: error message not tested, some code not tested. +Solution: Add a couple of test cases. Give an error for a command modifier + without a command. +Files: src/errors.h, src/vim9compile.c, src/ex_docmd.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4385 (after 8.2.4384) +Problem: Cannot build tiny version. +Solution: Adjust #ifdefs. +Files: src/errors.h + +Patch 8.2.4386 (after 8.2.4384) +Problem: Still cannot build tiny version. +Solution: Adjust #ifdefs. +Files: src/ex_docmd.c + +Patch 8.2.4387 +Problem: Command line completion doesn't always work properly. +Solution: Adjust triggering after a "|". Add more tests. (Yegappan + Lakshmanan, closes #9779) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.4388 +Problem: Dead code in op_insert(). +Solution: Remove condition and else block. (closes #9782) +Files: src/ops.c + +Patch 8.2.4389 +Problem: screenpos() does not handle a position in a closed fold. +Solution: Check if the position is inside a closed fold. (closes #9778) +Files: src/move.c, src/testdir/test_cursor_func.vim + +Patch 8.2.4390 +Problem: Vim9: list from declaration with inferred type does not set the + type on the value. +Solution: When inferring the type in a variable declaration also set the + type of the list or dictionary. (closes #9705) Do not set the + type when the member is "any". +Files: src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4391 +Problem: Command line executed when typing Esc in the GUI. +Solution: Move saving/restoring KeyTyped to build_stl_str_hl(). + (closes #9783) +Files: src/buffer.c, src/screen.c + +Patch 8.2.4392 (after 8.2.4002) +Problem: MS-Windows with VIMDLL: Escaping CSI is wrong. +Solution: Put back #ifdef. (Ken Takata, closes #9769) +Files: src/getchar.c + +Patch 8.2.4393 +Problem: Possible number overflow with nested folds. +Solution: Avoid a negative line number. +Files: src/fold.c + +Patch 8.2.4394 (after 8.2.4392) +Problem: UTF8 select mode test fails on MS-Windows. +Solution: Revert the #ifdef change. +Files: src/getchar.c + +Patch 8.2.4395 +Problem: Some code lines not covered by tests. +Solution: Add a few more test cases. Fix getting more than one error for + invalid assignment. +Files: src/evalvars.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_assign.vim, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.4396 (after 8.2.4395) +Problem: Python3 test fails. +Solution: Remove "let". +Files: src/testdir/test_vim9_func.vim + +Patch 8.2.4397 +Problem: Crash when using many composing characters in error message. +Solution: Use mb_cptr2char_adv() instead of mb_ptr2char_adv(). +Files: src/testing.c, src/testdir/test_assert.vim + +Patch 8.2.4398 +Problem: Some command completion functions are too long. +Solution: Refactor code into separate functions. Add a few more tests. + (Yegappan Lakshmanan, closes #9785) +Files: src/cmdexpand.c, src/ex_getln.c, src/usercmd.c, + src/proto/usercmd.pro, src/testdir/test_cmdline.vim + +Patch 8.2.4399 +Problem: Crash after ml_get error. +Solution: When returning "???" flush the line and set ml_line_lnum. +Files: src/memline.c + +Patch 8.2.4400 (after 8.2.4394) +Problem: MS-Windows: cannot use the mouse in the console with VIMDLL. +Solution: use add_char2buf() instead of fix_input_buffer(). (closes #9784, + closes #9769) +Files: src/getchar.c + +Patch 8.2.4401 +Problem: Map listing does not clear the rest of the command line. +Solution: Call msg_clear_eos(). (closes #5623, closes #5962) +Files: src/map.c, src/testdir/test_mapping.vim, + src/testdir/dumps/Test_map_list_1.dump + +Patch 8.2.4402 +Problem: Missing parenthesis may cause unexpected problems. +Solution: Add more parenthesis is macros. (closes #9788) +Files: src/autocmd.c, src/charset.c, src/drawline.c, src/drawscreen.c, + src/evalfunc.c, src/fileio.c, src/fold.c, src/getchar.c, + src/highlight.c, src/memline.c, src/normal.c, src/quickfix.c, + src/regexp.c, src/search.c, src/sha256.c, src/spell.c, + src/spellfile.c, src/spellsuggest.c, src/syntax.c, src/window.c + +Patch 8.2.4403 +Problem: ml_get error with nested folds and deleting lines. +Solution: Correct the last line number before calling hasFoldingWin(). +Files: src/change.c + +Patch 8.2.4404 +Problem: Vim9: some code not covered by tests. +Solution: Add a few specific test cases. +Files: src/vim9execute.c, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_import.vim + +Patch 8.2.4405 +Problem: Compiler warning for unused variable without the +folding feature. + (Tony Mechelynck) +Solution: Add #ifdef. +Files: src/change.c + +Patch 8.2.4406 +Problem: Expand functions use confusing argument names. +Solution: Rename "file" to "match". Refactor some completion code. Add a + few more tests. (Yegappan Lakshmanan, closes #9790) +Files: src/cmdexpand.c, src/testdir/test_usercommands.vim + +Patch 8.2.4407 +Problem: Vim9: some code not covered by tests. +Solution: Add more tests. Avoid giving two errors. Remove dead code. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.4408 +Problem: Vim9: some code not covered by tests. +Solution: Add a few more tests. Correct error message. Allow unlet on dict + with a number key. +Files: src/vim9execute.c, src/errors.h, src/testdir/test_vim9_assign.vim + +Patch 8.2.4409 +Problem: Vim9: some code not covered by tests. +Solution: Add a few more tests. Fix reported line number. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.4410 +Problem: Vim9: some code not covered by tests. +Solution: Add a few more tests. Remove dead code. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_script.vim + +Patch 8.2.4411 +Problem: Bicep files are not recognized. +Solution: Match *.bicep files. (Dundar Goc, closes #9791) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4412 +Problem: Translation cleanup script does not remove empty lines at end. +Solution: Remove empty lines at the end. (Ken Takata, closes #9794) +Files: src/po/cleanup.vim + +Patch 8.2.4413 +Problem: Vim9: Coverity warns for using NULL pointer. +Solution: Give an internal error when funcref function can't be found. +Files: src/vim9execute.c + +Patch 8.2.4414 +Problem: Solidity files are not recognized. +Solution: Add the *.sol pattern. (Dundar Goc, closes #9792) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4415 +Problem: Function argument name conflicts with C++ keyword. +Solution: Rename the argument. +Files: src/usercmd.c, src/proto/usercmd.pro + +Patch 8.2.4416 +Problem: Vim9: using a script-local function requires using "s:" when + setting 'completefunc'. +Solution: Do not require "s:" in Vim9 script. (closes #9796) +Files: runtime/doc/options.txt, src/userfunc.c, + src/testdir/test_ins_complete.vim + +Patch 8.2.4417 (after 8.2.4416) +Problem: Using NULL pointer. +Solution: Set offset after checking for NULL pointer. +Files: src/userfunc.c + +Patch 8.2.4418 +Problem: Crash when using special multi-byte character. +Solution: Don't use isalpha() for an arbitrary character. +Files: src/charset.c, src/proto/charset.pro, src/filepath.c, + src/testdir/test_autochdir.vim + +Patch 8.2.4419 +Problem: Illegal memory access when using exactly 20 highlights. +Solution: Add one more item in the array. (Brandon Richardson, + closes #9800) +Files: src/buffer.c, src/testdir/test_tabline.vim + +Patch 8.2.4420 +Problem: Menu translations are inconsistent. +Solution: Add a Makefile to convert between encodings. (Ada (Haowen) Yu, + closes #9801) +Files: runtime/lang/Makefile, runtime/lang/menu_af_af.latin1.vim, + runtime/lang/menu_ca_es.latin1.vim, + runtime/lang/menu_chinese_gb.936.vim, + runtime/lang/menu_chinese_taiwan.950.vim, + runtime/lang/menu_cs_cz.iso_8859-2.vim, + runtime/lang/menu_cs_cz.utf-8.vim, + runtime/lang/menu_czech_czech_republic.1250.vim, + runtime/lang/menu_czech_czech_republic.ascii.vim, + runtime/lang/menu_da.utf-8.vim, + runtime/lang/menu_de_de.latin1.vim, + runtime/lang/menu_eo.utf-8.vim, + runtime/lang/menu_es_es.latin1.vim, + runtime/lang/menu_fi_fi.latin1.vim, + runtime/lang/menu_fr_fr.latin1.vim, + runtime/lang/menu_hu_hu.iso_8859-2.vim, + runtime/lang/menu_hu_hu.utf-8.vim, + runtime/lang/menu_is_is.latin1.vim, + runtime/lang/menu_it_it.latin1.vim, + runtime/lang/menu_ja_jp.euc-jp.vim, + runtime/lang/menu_ja_jp.utf-8.vim, + runtime/lang/menu_japanese_japan.932.vim, + runtime/lang/menu_ko_kr.euckr.vim, + runtime/lang/menu_ko_kr.utf-8.vim, + runtime/lang/menu_nl_nl.latin1.vim, + runtime/lang/menu_no_no.latin1.vim, + runtime/lang/menu_pl_pl.iso_8859-2.vim, + runtime/lang/menu_pl_pl.utf-8.vim, + runtime/lang/menu_polish_poland.1250.vim, + runtime/lang/menu_pt_br.vim, runtime/lang/menu_pt_pt.vim, + runtime/lang/menu_ru.utf-8.vim, + runtime/lang/menu_ru_ru.koi8-r.vim, + runtime/lang/menu_ru_ru.utf-8.vim, runtime/lang/menu_ru_ru.vim, + runtime/lang/menu_sk_sk.iso_8859-2.vim, + runtime/lang/menu_sl_si.cp1250.vim, + runtime/lang/menu_sl_si.latin2.vim, + runtime/lang/menu_sl_si.utf-8.vim, + runtime/lang/menu_slovak_slovak_republic.1250.vim, + runtime/lang/menu_sr_rs.ascii.vim, + runtime/lang/menu_sr_rs.iso_8859-2.vim, + runtime/lang/menu_sr_rs.iso_8859-5.vim, + runtime/lang/menu_sr_rs.utf-8.vim, + runtime/lang/menu_sv_se.latin1.vim, + runtime/lang/menu_tr_tr.cp1254.vim, + runtime/lang/menu_tr_tr.iso_8859-9.vim, + runtime/lang/menu_tr_tr.utf-8.vim, + runtime/lang/menu_uk_ua.cp1251.vim, + runtime/lang/menu_uk_ua.koi8-u.vim, + runtime/lang/menu_uk_ua.utf-8.vim, runtime/lang/menu_vi_vn.vim, + runtime/lang/menu_zh_cn.utf-8.vim, + runtime/lang/menu_zh_tw.utf-8.vim + +Patch 8.2.4421 +Problem: Some installed files and directories have wrong permissions. +Solution: Adjust the Makefile and shell to set permissions. (closes #9793) +Files: src/Makefile, src/installman.sh + +Patch 8.2.4422 +Problem: Autochdir test fails on MS-Windows. +Solution: Expect another error on MS-Windows. +Files: src/testdir/test_autochdir.vim + +Patch 8.2.4423 +Problem: "make nvcmdidxs" fails. +Solution: Use "-S" instead of "-u" to source the script. +Files: src/Makefile + +Patch 8.2.4424 +Problem: ".gts" and ".gjs" files are not recognized. +Solution: Recognize Glimmer flavored typescript and javascript. + (closes #9799) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4425 +Problem: map() function does not check function arguments at compile time. +Solution: Give an error if the arguments of a map() function are wrong. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.4426 +Problem: map() function on string and blob does not check argument types at + compile time. +Solution: Check string and blob argument types. Support "0z1234->func()". +Files: src/vim9compile.c, src/evalfunc.c, src/ex_docmd.c, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4427 +Problem: getchar() may return modifiers if no character is available. +Solution: Do not process modifiers when there is no character. (closes #9806) +Files: src/getchar.c, src/testdir/test_functions.vim + +Patch 8.2.4428 +Problem: Crash when switching tabpage while in the cmdline window. +Solution: Disallow switching tabpage when in the cmdline window. +Files: src/window.c, src/proto/window.pro, src/evalvars.c, + src/evalvars.c, src/usercmd.c + +Patch 8.2.4429 +Problem: Using script-local function from the wrong script when using a + partial. (Yegappan Lakshmanan) +Solution: Include the script ID in the partial name. +Files: src/userfunc.c, src/proto/userfunc.pro, src/evalfunc.c, + src/vim9type.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4430 +Problem: GTK: crash when using 'guiligatures' and reading from stdin. +Solution: Make a copy of the message. (Amon Sha, closes #9719, closes #9814) +Files: src/fileio.c + +Patch 8.2.4431 +Problem: Unnecessary condition when assigning to a variable. +Solution: Remove the condition. +Files: src/evalvars.c + +Patch 8.2.4432 (after 8.2.4428) +Problem: Cannot use settabvar() while the cmdline window is open. +Solution: Only give an error when actually switching tabpage. + (closes #9813) +Files: src/window.c + +Patch 8.2.4433 +Problem: CI: cannot see interface versions for MS-Windows. +Solution: List the interface versions. (Ken Takata, closes #9811) +Files: .github/workflows/ci.yml + +Patch 8.2.4434 +Problem: Duplicate check for cmdline window. +Solution: Remove the second check. (Sean Dewar, closes #9816) +Files: src/window.c + +Patch 8.2.4435 +Problem: Dead code in checking map() arguments. (Dominique Pell茅) +Solution: Remove the first return statement. (closes #9815) +Files: src/evalfunc.c + +Patch 8.2.4436 +Problem: Crash with weird 'vartabstop' value. +Solution: Check for running into the end of the line. +Files: src/indent.c, src/testdir/test_vartabs.vim + +Patch 8.2.4437 +Problem: Vartabs test fails on MS-Windows. +Solution: Use iso8859-1 'encoding'. (Ken Takata, closes #9818) +Files: src/testdir/test_vartabs.vim + +Patch 8.2.4438 +Problem: Crash on exit when using cmdline window. +Solution: Reset "cmdwin_type" before exiting. (closes #9817) +Files: src/ui.c, src/testdir/test_exit.vim + +Patch 8.2.4439 +Problem: Accepting "iso8859" 'encoding' as "iso-8859-". +Solution: use "iso8859" as "iso-8859-1". +Files: src/mbyte.c, src/testdir/test_options.vim + +Patch 8.2.4440 +Problem: Crash with specific regexp pattern and string. +Solution: Stop at the start of the string. +Files: src/regexp_bt.c, src/testdir/test_regexp_utf8.vim + +Patch 8.2.4441 +Problem: Vim9: function argument of filter() not checked like map(). +Solution: Also check the function argument of filter(). +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4442 (after 8.2.4438) +Problem: Test for error reading input fails on MS-Windows. +Solution: Don't run the test on MS-Windows. +Files: src/testdir/test_exit.vim + +Patch 8.2.4443 (after 8.2.4440) +Problem: Regexp pattern test fails on Mac. +Solution: Do not use a swapfile for the buffer. +Files: src/testdir/test_regexp_utf8.vim + +Patch 8.2.4444 +Problem: Beep caused by test. ASAN reports leaks. +Solution: Do not put a NL at the end of the script. Make the text work on + MS-Windows. Do not run the test with ASAN. +Files: src/testdir/test_exit.vim + +Patch 8.2.4445 +Problem: Exit test fails on MS-Windows anyway. +Solution: Skip the test on MS-Windows. +Files: src/testdir/test_exit.vim + +Patch 8.2.4446 +Problem: Vim9: cannot refer to a global function like a local one. +Solution: When g:name is not a variable but a function, use a function + reference. (closes #9826) +Files: src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4447 +Problem: Vim9: can still use s:var in a compiled function. +Solution: Disallow using s:var for Vim9 script. (closes #9824) +Files: runtime/doc/vim9.txt, src/vim9expr.c, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4448 (after 8.2.4447) +Problem: Filetype detection is failing. +Solution: Do not use "s:" where it is no longer allowed. +Files: runtime/autoload/dist/ft.vim, + +Patch 8.2.4449 +Problem: vim9: function argument of sort() not checked at compile time. +Solution: Add a compile time check. +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4450 (after 8.2.4449) +Problem: List sort test fails. +Solution: Pass a valid "how" argument. +Files: src/testdir/test_listdict.vim + +Patch 8.2.4451 (after 8.2.4450) +Problem: sort() fails when ignoring case. +Solution: Accept a number one argument in sort(). +Files: src/evalfunc.c, src/testdir/test_listdict.vim + +Patch 8.2.4452 +Problem: Test for what 8.2.4436 fixes does not check for regression. +Solution: Set several options. (Ken Takata, closes #9830) +Files: src/testdir/test_vartabs.vim + +Patch 8.2.4453 +Problem: :helpgrep may free an option that was not allocated. (Yegappan + Lakshmanan) +Solution: Check if the value was allocated. +Files: src/option.c, src/proto/option.pro, src/quickfix.c, + src/testdir/test_quickfix.vim + +Patch 8.2.4454 +Problem: Resetting cmdwin_type only for one situation. +Solution: Reset cmdwin_type before closing windows. (closes #9822) +Files: src/ui.c, src/window.c, src/testdir/test_exit.vim + +Patch 8.2.4455 +Problem: Accepting one and zero for the second sort() argument is strange. +Solution: Disallow using one and zero in Vim9 script. +Files: runtime/doc/builtin.txt, src/evalfunc.c, src/list.c, + src/testdir/test_listdict.vim + +Patch 8.2.4456 +Problem: Terminal test may fail on some machines. +Solution: Increase wait time. (Zdenek Dohnal, closes #9834) +Files: src/testdir/test_terminal.vim + +Patch 8.2.4457 +Problem: The GPM library can only be linked statically. +Solution: Make it possible to load the GPM library dynamically. (Damien) +Files: runtime/doc/various.txt, src/config.h.in, src/configure.ac, + src/Makefile, src/evalfunc.c, src/feature.h, src/os_unix.c, + src/proto/os_unix.pro, src/version.c + +Patch 8.2.4458 +Problem: Vim9: compiling filter() call fails with funcref that has unknown + arguments. +Solution: Do not check the arguments if they are unknown at compile time. + (closes #9835) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4459 +Problem: Vim9: compiling sort() call fails with a funcref that has unknown + arguments. +Solution: Do not check the arguments if they are unknown at compile time. + (closes #9835) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4460 +Problem: Vim9: wrong error for defining dict function. +Solution: Explicitly check for trying to define a dict function. + (closes #9827) +Files: src/errors.h, src/userfunc.c, src/vim9compile.c, + src/testdir/test_vim9_func.vim + +Patch 8.2.4461 +Problem: MS-Windows: garbage characters on stdout with VIMDLL. +Solution: Don't call gui_focus_change() when about to quit. (Ken Takata, + closes #9840) +Files: src/gui_w32.c + +Patch 8.2.4462 +Problem: Not enough testing for quickfix code. +Solution: Add more tests. Fix uncovered problem. (Yegappan Lakshmanan, + closes #9839) +Files: src/quickfix.c, src/window.c, src/testdir/test_makeencoding.vim, + src/testdir/test_quickfix.vim + +Patch 8.2.4463 +Problem: Completion only uses strict matching. +Solution: Add the "fuzzy" item for 'wildoptions'. (Yegappan Lakshmanan, + closes #9803) +Files: runtime/doc/options.txt, src/buffer.c, src/cmdexpand.c, + src/option.c, src/option.h, src/optionstr.c, + src/proto/cmdexpand.pro, src/proto/option.pro, + src/proto/search.pro, src/search.c, src/structs.h, + src/testdir/gen_opt_test.vim, src/testdir/test_cmdline.vim + +Patch 8.2.4464 +Problem: Dtrace files are recognized as filetype D. +Solution: Add a pattern for Dtrace files. (Teubel Gy枚rgy, closes #9841) + Add some more testing. +Files: runtime/autoload/dist/ft.vim, runtime/filetype.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4465 +Problem: Fuzzy completion does not order matches properly. +Solution: Do not use regular expression match. (Yegappan Lakshmanan, + closes #9843) +Files: src/cmdexpand.c, src/search.c, src/testdir/test_cmdline.vim + +Patch 8.2.4466 +Problem: MS-Windows: illegal memory access in installer when using + "create-directories" as the final argument. +Solution: Check the argument count. (Cam Sinclair, closes #9844) +Files: src/dosinst.c + +Patch 8.2.4467 +Problem: Running filetype test leaves file behind. +Solution: Delete the file. +Files: src/testdir/test_filetype.vim + +Patch 8.2.4468 +Problem: Coverity warns for uninitialized struct member. +Solution: Set color.index to zero. +Files: src/terminal.c + +Patch 8.2.4469 +Problem: Coverity warns for uninitialized variable. +Solution: Set the value to zero. +Files: src/ex_getln.c + +Patch 8.2.4470 +Problem: Coverity warns for uninitialized variable. +Solution: Set can_spell to zero. +Files: src/drawline.c + +Patch 8.2.4471 +Problem: Coverity warns for uninitialized variable. +Solution: Set flags to zero. +Files: src/vim9cmds.c + +Patch 8.2.4472 +Problem: Coverity warns for use of a freed function name. +Solution: Only check an autoload name when is prefixed. +Files: src/userfunc.c + +Patch 8.2.4473 +Problem: Coverity warns for not checking return value of ftell(). +Solution: Bail out if ftell() returns a negative value. +Files: src/spellfile.c + +Patch 8.2.4474 +Problem: Memory allocation failures not tested in quickfix code. +Solution: Add alloc IDs and tests. (Yegappan Lakshmanan, closes #9848) +Files: src/alloc.h, src/quickfix.c, src/vim.h, + src/testdir/test_quickfix.vim + +Patch 8.2.4475 +Problem: Fuzzy cmdline completion does not work for lower case. +Solution: Also use fuzzy completion for lower case input. (Yegappan + Lakshmanan, closes #9849) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.4476 +Problem: Operator name spelled wrong. +Solution: Change trinary to ternary. (Goc Dundar, closes #9850) +Files: src/testdir/test_expr.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.4477 +Problem: Crash when using fuzzy completion. +Solution: Temporary fix: put back regexp. (closes #9851) +Files: src/cmdexpand.c + +Patch 8.2.4478 +Problem: Crash when using fuzzy completion. +Solution: Temporary fix: put back regexp. (closes #9852, closes #9851) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.4479 +Problem: No fuzzy completion for maps and abbreviations. +Solution: Fuzzy complete maps and abbreviations. (Yegappan Lakshmanan, + closes #9856) +Files: src/cmdexpand.c, src/map.c, src/proto/map.pro, src/search.c, + src/testdir/test_cmdline.vim + +Patch 8.2.4480 +Problem: Suspending with CTRL-Z does not work on Android. +Solution: Do not handle SIGTSTP. (closes #9854) +Files: src/os_unix.c + +Patch 8.2.4481 +Problem: Cmdline popup menu not removed when 'lazyredraw' is set. +Solution: Temporarily reset 'lazyredraw' when removing the popup menu. + (closes #9857) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_41.dump + +Patch 8.2.4482 +Problem: No fuzzy cmdline completion for user defined completion. +Solution: Add fuzzy completion for user defined completion. (Yegappan + Lakshmanan, closes #9858) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim + +Patch 8.2.4483 +Problem: Command completion makes two rounds to collect matches. +Solution: Use a growarray to collect matches. (Yegappan Lakshmanan, + closes #9860) +Files: src/buffer.c, src/cmdexpand.c, src/map.c, + src/testdir/test_cmdline.vim + +Patch 8.2.4484 +Problem: Vim9: some error messages are not tested. +Solution: Add a few more test cases. Delete dead code. +Files: src/vim9execute.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.4485 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize the variable. (John Marriott) +Files: src/cmdexpand.c + +Patch 8.2.4486 +Problem: MS-Windows GUI: slow scrolling with maximized window. +Solution: Use a better way to check the window is on screen. (Ken Takata, + closes #9865) +Files: src/gui_w32.c + +Patch 8.2.4487 +Problem: Vim9: cannot compare with v:null. +Solution: Allow comparing anything with v:null. (closes #9866) +Files: src/vim9instr.c, src/typval.c, src/proto/typval.pro, + src/vim9.h, src/vim9execute.c, src/evalvars.c, + src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4488 (after 8.2.4487) +Problem: Build error with +eval but without +channel or +job. +Solution: Add #ifdef. (John Marriott) +Files: src/typval.c + +Patch 8.2.4489 (after 8.2.4487) +Problem: Failing test for comparing v:null with number. +Solution: Allow comparing v:null with number in legacy script. + (Ken Takata, closes #9873) Also do this for float. +Files: src/typval.c, src/testdir/test_vimscript.vim + +Patch 8.2.4490 +Problem: Terminal focus reporting only works for xterm-like terminals. + (Jonathan Rascher) +Solution: Remove the "focus_mode" flag. (closes #9859) +Files: src/term.c + +Patch 8.2.4491 +Problem: MS-Windows makefile dependencies are outdated. +Solution: Update dependencies. (Ken Takata, closes #9876) +Files: src/Make_cyg_ming.mak, src/Make_mvc.mak + +Patch 8.2.4492 +Problem: No error if an option is given an invalid value with + ":let &opt = val". +Solution: Give the error. (closes #9864) +Files: src/evalvars.c, src/testdir/test_options.vim + +Patch 8.2.4493 (after 8.2.4492) +Problem: Options test fails in the GUI. +Solution: Do not save and restore 'term'. +Files: src/testdir/gen_opt_test.vim + +Patch 8.2.4494 +Problem: The find_tags() function is much too long. +Solution: Refactor the function. (Yegappan Lakshmanan, closes #9869) +Files: src/quickfix.c, src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.2.4495 +Problem: Help test fails in 24 line terminal. +Solution: Use up to 23 lines for text. +Files: src/testdir/test_help.vim + +Patch 8.2.4496 (after 8.2.4494) +Problem: Coverity gives warnings after tags code refactoring. +Solution: Avoid the warnings. (Yegappan Lakshmanan, closes #9882) +Files: src/tag.c + +Patch 8.2.4497 +Problem: Wrong color for half of wide character next to pum scrollbar. +Solution: Redraw the screen cell with the right color. (closes #9874) +Files: src/screen.c, src/testdir/test_ins_complete.vim, + src/testdir/dumps/Test_scrollbar_on_wide_char.dump + +Patch 8.2.4498 +Problem: Using <Plug> with "noremap" does not work. +Solution: Always remap <Plug>. (closes #9879, closes #9789) +Files: runtime/doc/map.txt, src/getchar.c, src/testdir/test_mapping.vim + +Patch 8.2.4499 +Problem: Vim9: at the script level declarations leak from try block to + catch and finally block. +Solution: End the block and start a new one. (closes #9883) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4500 +Problem: Vim9: can declare a global variable on the command line. +Solution: Disallow declaring a variable on the command line. (closes #9881) +Files: src/errors.h, src/evalvars.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_script.vim, + src/testdir/dumps/Test_vim9_reject_declaration.dump + +Patch 8.2.4501 +Problem: With 'showbreak' set and after the end of the line the cursor + may be displayed in the wrong position. +Solution: Do not apply 'showbreak' after the end of the line. (closes #9884) +Files: src/charset.c, src/testdir/test_breakindent.vim, + src/testdir/dumps/Test_cursor_position_with_showbreak.dump + +Patch 8.2.4502 +Problem: In the GUI a modifier is not recognized for the key typed after + CTRL-X, which may result in a mapping to be used. (Daniel + Steinberg) +Solution: Recognize a modifier starting with CSI. (closes #9889) +Files: src/getchar.c, src/testdir/test_ins_complete.vim + +Patch 8.2.4503 +Problem: Vim9: there is no point in supporting :Print and :mode. +Solution: Do not recognize :Print and :mode as commands. (closes #9870) +Files: src/ex_docmd.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4504 +Problem: When there is a partially matching map and modifyOtherKeys is + active a full map may not work. +Solution: Only simplify modifiers when there is no matching mapping. + (closes #8792) +Files: src/getchar.c, src/testdir/test_termcodes.vim + +Patch 8.2.4505 +Problem: Vim9: outdated "autocmd nested" still works. +Solution: Do not accept the :autocmd argument "nested" without "++" in Vim9 + script. +Files: src/autocmd.c, src/errors.h, src/testdir/test_autocmd.vim + +Patch 8.2.4506 +Problem: "pattern not found" for :global is not an error message. +Solution: In Vim9 script make this an actual error, so that try/catch can be + used as expected. +Files: src/ex_cmds.c, src/errors.h, src/testdir/test_global.vim + +Patch 8.2.4507 (after 8.2.4506) +Problem: Test fails because of new error message. +Solution: Avoid the test fails. +Files: src/testdir/test_vim9_cmd.vim + +Patch 8.2.4508 +Problem: Vim9: cannot assign to a global variable on the command line. +Solution: Allow using :vim9cmd for assignment on the command line. +Files: src/evalvars.c, src/testdir/test_vim9_script.vim, + src/testdir/dumps/Test_vim9_reject_declaration.dump, + src/testdir/dumps/Test_vim9_reject_declaration_1.dump, + src/testdir/dumps/Test_vim9_reject_declaration_2.dump + +Patch 8.2.4509 +Problem: Vim9: can declare a variable with ":va". +Solution: Disallow using ":va", require using ":var". +Files: src/evalvars.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4510 +Problem: Vim9: shortening commands leads to confusing script. +Solution: In Vim9 script require at least ":cont" for ":continue", "const" + instead of "cons", "break" instead of "brea", "catch" instead of + "cat", "else" instead of "el" "elseif" instead of "elsei" "endfor" + instead of "endfo" "endif" instead of "en" "endtry" instead of + "endt", "finally" instead of "fina", "throw" instead of "th", + "while" instead of "wh". +Files: src/ex_cmds.h, src/ex_docmd.c, src/errors.h, src/evalvars.c, + src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4511 +Problem: Filetype test fails. +Solution: Change "endw" to "endwhile". +Files: runtime/autoload/dist/ft.vim + +Patch 8.2.4512 +Problem: The find_tags_in_file() function is much too long. +Solution: Refactor into multiple smaller functions. (Yegappan Lakshmanan, + closes #9892) +Files: Filelist, src/Makefile, src/quickfix.c, src/tag.c, + src/testdir/test83-tags2, src/testdir/test83-tags3, + src/testdir/test_tagjump.vim + +Patch 8.2.4513 +Problem: Window-local directory is not applied if 'acd' fails. +Solution: Don't call do_autochdir(). (closes #9891) +Files: src/window.c, src/testdir/test_autochdir.vim + +Patch 8.2.4514 +Problem: Vim9: some flow commands can be shortened. +Solution: Also require using the full name for ":return", ":enddef", + ":continue", ":export" and ":import". +Files: src/ex_cmds.h, src/ex_docmd.c, src/errors.h, src/userfunc.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4515 +Problem: Old substitute syntax is still supported. +Solution: Disallow using backslash after ":s" in Vim9 script. +Files: src/ex_cmds.c, src/errors.h, src/testdir/test_substitute.vim + +Patch 8.2.4516 (after 8.2.4515) +Problem: Build failure without the +eval feature. +Solution: Move error message outside of #ifdef. +Files: src/errors.h + +Patch 8.2.4517 +Problem: MS-Windows: cannot specify location of sodium library. +Solution: Allow for using a path for SODIUM. (Ken Takata, closes #9896) +Files: src/Make_cyg_ming.mak + +Patch 8.2.4518 +Problem: The binary tag search feature is always enabled. +Solution: Remove the #ifdefs. Add a few more tests. (Yegappan Lakshmanan, + closes #9893) +Files: src/evalfunc.c, src/feature.h, src/tag.c, src/version.c, + src/testdir/test_tagjump.vim, src/testdir/test_taglist.vim + +Patch 8.2.4519 +Problem: Vim9: Can still use ":fini" and ":finis" for ":finish". +Solution: Require using ":finish". +Files: src/ex_cmds.h, src/testdir/test_vim9_script.vim + +Patch 8.2.4520 +Problem: Using wrong highlight for cursor line number. +Solution: Take filler lines into account when using CursorLineNr. + (closes #9897) +Files: src/drawline.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_with_cursorline_number_01.dump, + src/testdir/dumps/Test_diff_with_cursorline_number_02.dump + +Patch 8.2.4521 (after 8.2.4520) +Problem: Build failure without the +diff feature. (John Marriott) +Solution: Define filler+lines if not declaring it. +Files: src/drawline.c + +Patch 8.2.4522 (after 8.2.4492) +Problem: GUI test fails with Motif. (Dominique Pell茅) +Solution: Remove using an invalid value for 'guifontset'. +Files: src/testdir/test_gui.vim + +Patch 8.2.4523 +Problem: When gvim is started maximized the 'window' option isn't set + properly. (Christian J. Robinson) +Solution: Check if 'windows' was already set or not. (Ken Takata, + closes #9904) +Files: src/term.c + +Patch 8.2.4524 +Problem: MS-Windows: cannot build with some sodium libraries. +Solution: Make the DLL name configurable. Add build instructions. + (Ken Takata, closes #9905) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak, src/Make_mvc.mak, + src/crypt.c + +Patch 8.2.4525 +Problem: Some GUI tests don't work on Athena. +Solution: Skip tests that won't work. (Yegappan Lakshmanan, closes #9902) +Files: src/testdir/test_gui.vim + +Patch 8.2.4526 +Problem: Vim9: cannot set variables to a null value. +Solution: Add null_list, null_job, etc. +Files: runtime/doc/vim9.txt, src/eval.c, src/proto/eval.pro, + src/vim9expr.c, src/vim9script.c, src/vim9instr.c, + src/vim9compile.c, src/vim9execute.c, src/vim9.h, src/vim9type.c, + src/evalvars.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_expr.vim + +Patch 8.2.4527 +Problem: The Athena GUI is old and does not work well. +Solution: Remove the Athena GUI from configure to find out who still wants + support for this GUI. +Files: src/configure.ac, src/auto/configure, src/Makefile + +Patch 8.2.4528 +Problem: Crash when using null_function for a partial. +Solution: Don't call fname_trans_sid() with NULL. (closes #9908) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4529 +Problem: Vim9: comparing partial with function fails. +Solution: Support this comparison. Avoid a crash. (closes #9909) + Add more test cases. +Files: src/vim9instr.c, src/userfunc.c, src/vim9type.c, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vimscript.vim + +Patch 8.2.4530 +Problem: Making comparison with null work changes legacy behavior. +Solution: Only use the better comparison in Vim9 script. (closes #9910) +Files: src/typval.c, src/testdir/test_expr.vim + +Patch 8.2.4531 +Problem: LGTM warnings for condition always true and buffer size too small. +Solution: Remove the useless condition. Make the buffer larger. (Goc + Dundar, closes #9914) +Files: src/charset.c, src/term.c + +Patch 8.2.4532 +Problem: Suspending with CTRL-Z does not work on OpenBSD. +Solution: Adjust #ifdef for SIGTSTP. (Stuart Henderson, closes #9912) +Files: src/os_unix.c + +Patch 8.2.4533 +Problem: Vim9: no test that after assigning null the type is still checked. +Solution: Add a test. +Files: src/testdir/test_vim9_assign.vim + +Patch 8.2.4534 +Problem: Vim9: "is" operator with empty string and null returns true. +Solution: Consider empty string and null to be different for "is". +Files: src/typval.c, src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4535 +Problem: Filename modifier ":8" removes the filename. +Solution: Use strncpy() instead of vim_strncpy(). (Christian Brabandt, + closes #9918, closes #8600) +Files: src/filepath.c, src/testdir/test_shortpathname.vim + +Patch 8.2.4536 (after 8.2.4534) +Problem: Debugger test fails when breaking on expression. +Solution: Compare strings with "==" instead of "is". +Files: src/debugger.c + +Patch 8.2.4537 +Problem: Output from linter and language server shows up in git. +Solution: Add patterns to .gitignore. (Goc Dundar, closes #9925) +Files: .gitignore + +Patch 8.2.4538 +Problem: The find_tags_in_file() function is too long. +Solution: Refactor into smaller functions. (Yegappan Lakshmanan, + closes #9920) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.2.4539 +Problem: When comparing special v:none and v:null are handled the same when + compiling. +Solution: Pass more information so that v:none can be handled differently at + compile time. (issue #9923) +Files: src/vim9instr.c, src/vim9compile.c, src/globals.h, + src/testdir/test_vim9_expr.vim + +Patch 8.2.4540 +Problem: Line number for error is off by one. +Solution: Remember the line number of the comparison. (closes #9923) +Files: src/eval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4541 +Problem: Crash in debugger when a variable is not available in the current + block. +Solution: Check for a NULL name. (closes #9926) +Files: src/vim9execute.c, src/testdir/test_debugger.vim + +Patch 8.2.4542 +Problem: Vim9: "break" inside try/catch not handled correctly. +Solution: First jump to :endtry. (closes #9927) +Files: src/vim9cmds.c, src/vim9.h, src/testdir/test_vim9_script.vim + +Patch 8.2.4543 +Problem: Coverity warning for refactored tag search code. +Solution: Avoid the warnings. Update comments. Add one more test case. + (Yegappan Lakshmanan, closes #9928) +Files: src/tag.c, src/testdir/test_tagjump.vim + +Patch 8.2.4544 +Problem: Coverity warnings for not using returned value. +Solution: Assign to vim_ignored. +Files: src/tag.c + +Patch 8.2.4545 +Problem: MS-Windows: the installed icon is low resolution. +Solution: Use a better icon. Install vim.ico. (Christian Brabandt, + closes #9931, closes #9930) +Files: Filelist, nsis/gvim.nsi, src/vim.ico, runtime/bitmaps/vim.ico + +Patch 8.2.4546 +Problem: Duplicate #undef. +Solution: Remove one #undef. (closes #9932) +Files: src/regexp_nfa.c + +Patch 8.2.4547 +Problem: The neXTaw GUI is old and does not work well. +Solution: Remove the neXTaw GUI from configure to find out who still wants + support for this GUI. +Files: src/configure.ac, src/auto/configure, src/Makefile + +Patch 8.2.4548 +Problem: Script-local function is deleted when used in a funcref. +Solution: Do not consider a function starting with "<SNR>" reference + counted. (closes #9916, closes #9820) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4549 +Problem: Cannot build with Motif and editres. (Tony Mechelynck) +Solution: Fix configure mistake. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.4550 +Problem: Motif: cannot set the color of the scrollbar thumb. +Solution: Remove #ifdef. +Files: src/gui_motif.c + +Patch 8.2.4551 +Problem: When mapping <Esc> terminal codes are not recognized. +Solution: Specifically recognize a mapping with just <Esc> and check for + terminal codes even though there is no partial mapping. + (closes #9903) +Files: src/getchar.c, src/testdir/test_termcodes.vim + +Patch 8.2.4552 +Problem: In a :def function "put = expr" does not work. +Solution: Skip over white space. (closes #9936) +Files: src/vim9cmds.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4553 +Problem: Linear tag search is a bit slow. +Solution: Remove a vim_ftell() call. (Yegappan Lakshmanan, closes #9937) +Files: src/tag.c, src/testdir/test_taglist.vim + +Patch 8.2.4554 +Problem: Vim9: using null values not sufficiently tested. +Solution: Add more tests. Fix uncovered problem. +Files: src/vim9type.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.4555 +Problem: getmousepos() returns the wrong column. (Ernie Rael) +Solution: Limit to the text size, not the number of bytes. +Files: src/mouse.c, src/testdir/test_functions.vim + +Patch 8.2.4556 +Problem: Test fails without the +job or +channel feature. (Dominique Pell茅) +Solution: Adjust #ifdefs. Pass on skip flag. (closes #9942) +Files: src/eval.c, src/vim9compile.c + +Patch 8.2.4557 +Problem: Confusing comment about 'cursorlineopt'. +Solution: Adjust comment. (closes #9939) Add parenthesis around logical + OR. +Files: src/drawline.c + +Patch 8.2.4558 +Problem: Motif: using default colors does not work as expected. +Solution: Do not try to store the default colors, use the resources. + (closes #9933) +Files: src/gui_motif.c, src/gui.h + +Patch 8.2.4559 (after 8.24555) +Problem: getmousepos() returns the screen column. (Ernie Rael) +Solution: Return the text column, as documented. +Files: src/mouse.c, src/testdir/test_functions.vim + +Patch 8.2.4560 +Problem: Suspending with CTRL-Z does not work on DragonFlyBSD. +Solution: Adjust #ifdef. (Ozaki Kiichi, closes #9943) +Files: src/os_unix.c + +Patch 8.2.4561 +Problem: Build failure with some combination of features. (John Marriott) +Solution: Adjust #ifdef. +Files: src/mouse.c + +Patch 8.2.4562 +Problem: Linear tag search is not optimal. +Solution: Improve linear tag search performance. (Yegappan Lakshmanan, + closes #9944) +Files: src/tag.c + +Patch 8.2.4563 +Problem: "z=" in Visual mode may go beyond the end of the line. +Solution: Adjust "badlen". +Files: src/spellsuggest.c, src/testdir/test_spell.vim + +Patch 8.2.4564 +Problem: Running test leaves file behind. (Dominique Pell茅) +Solution: Run the profiling in a separate Vim instance. (closes #9952) +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4565 +Problem: No command line completion for :breakadd and :breakdel. +Solution: Add completion for :breakadd and :breakdel. (Yegappan Lakshmanan, + closes #9950) +Files: runtime/doc/builtin.txt, src/cmdexpand.c, src/spellsuggest.c, + src/usercmd.c, src/vim.h, src/testdir/test_cmdline.vim, + src/testdir/test_writefile.vim + +Patch 8.2.4566 +Problem: Check for existing buffer in session file does not work for files + in the home directory. +Solution: Use fnamemodify(). (James Cherti, closes #9945) Add a test. +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4567 +Problem: Bracketed paste doesn't work well in Visual linewise mode. +Solution: Handle linewise Visual mode differently. (closes #9947) +Files: src/normal.c, src/testdir/test_paste.vim + +Patch 8.2.4568 +Problem: getmousepos() does not compute the column below the last line. +Solution: Also compute the column when the mouse is below the last line. + (Sean Dewar, closes #9946) +Files: src/mouse.c, src/testdir/test_functions.vim + +Patch 8.2.4569 +Problem: Coverity warning for not using a return value. +Solution: Add "(void)". +Files: src/popupwin.c + +Patch 8.2.4570 +Problem: No command line completion for :profile and :profdel. +Solution: Implement completion. (Yegappan Lakshmanan, closes #9955) +Files: src/cmdexpand.c, src/profiler.c, src/testdir/test_cmdline.vim, + src/testdir/test_profile.vim + +Patch 8.2.4571 +Problem: Not all gdb files are recognized. +Solution: Add a few more patterns for gdb. (Jade Lovelace, closes #9956) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4572 +Problem: Vim9: return type "any" is sometimes changed to first returned + type. (Virginia Senioria) +Solution: Do not change the return type if declared as "any". (closes #9949) +Files: src/vim9cmds.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4573 +Problem: A nested function (closure) is compiled for debugging without + context. +Solution: Check if a nested function is marked for debugging before + compiling it. Give an error when trying to compile a closure + without its context. (closes #9951) +Files: src/vim9compile.c, src/vim9execute.c, src/proto/vim9execute.pro, + src/vim9expr.c, src/errors.h + +Patch 8.2.4574 +Problem: Vim9: test for profiling fails. +Solution: Mark function for profiling earlier to avoid E1271. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4575 +Problem: Vim9: test for profiling still fails. +Solution: Update flags for profiling and breakpoints when obtaining the + compile type. Do not set the FC_CLOSURE flag for a toplevel + function. +Files: src/vim.h, src/vim9compile.c, src/proto/vim9compile.pro, + src/eval.c, src/vim9execute.c, src/vim9expr.c, src/vim9instr.c, + src/vim9.h + +Patch 8.2.4576 +Problem: Vim9: error for comparing with null can be annoying. +Solution: Allow comparing anything with null. (closes #9948) +Files: src/vim9instr.c, src/typval.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4577 +Problem: Message test is flaky. (Elimar Riesebieter) +Solution: Trigger the autocommand event only after startup is finished. +Files: src/testdir/test_messages.vim + +Patch 8.2.4578 +Problem: No warning when an autoload script for completion function has an + error. +Solution: Do not ignore errors when a function name is given with a dot or + '#' character. (closes #9958) +Files: src/eval.c, src/testdir/test_cmdline.vim + +Patch 8.2.4579 +Problem: Cannot use page-up and page-down in the command line completion + popup menu. +Solution: Check for to page-up and page-down keys. (Yegappan Lakshmanan, + closes #9960) +Files: src/cmdexpand.c, src/ex_getln.c, src/spellsuggest.c, src/vim.h, + src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_pum_42.dump, + src/testdir/dumps/Test_wildmenu_pum_43.dump, + src/testdir/dumps/Test_wildmenu_pum_44.dump, + src/testdir/dumps/Test_wildmenu_pum_45.dump, + src/testdir/dumps/Test_wildmenu_pum_46.dump, + src/testdir/dumps/Test_wildmenu_pum_47.dump, + src/testdir/dumps/Test_wildmenu_pum_48.dump, + src/testdir/dumps/Test_wildmenu_pum_49.dump, + src/testdir/dumps/Test_wildmenu_pum_50.dump + +Patch 8.2.4580 +Problem: Vim9: incorrect error for shadowing variable. +Solution: Do not pass the context when compiling a referenced function. +Files: src/vim9expr.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4581 +Problem: Null types not fully tested. +Solution: Add some more tests using null types. +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.4582 +Problem: Useless code handling a type declaration. +Solution: Remove the code and give an error. +Files: src/eval.c, src/errors.h, src/testdir/test_vim9_script.vim, + src/testdir/dumps/Test_misplaced_type.dump + +Patch 8.2.4583 (after 8.2.4582) +Problem: Screendump test fails. +Solution: Check that making a screendump is possible. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4584 (after 8.2.4578) +Problem: Error for using autoload function in custom completion. +Solution: Do not check for errors when using an autoload function. + (closes #9962) +Files: src/eval.c, src/testdir/test_cmdline.vim + +Patch 8.2.4585 +Problem: Cannot use keypad page-up/down for completion menu. +Solution: Recognize the keypad keys. (Yegappan Lakshmanan, closes #9963) +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.4586 +Problem: Vim9: no error for using lower case name for "func" argument. + (Ernie Rael) +Solution: Check the name as soon as the type is known. +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4587 +Problem: Vim9: double free after unpacking a list. +Solution: Make a copy of the value instead of moving it. (closes #9968) +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4588 +Problem: Mapping with key code after other matching mapping does not work. +Solution: Change ">" to ">=". (closes #9903) +Files: src/getchar.c, src/testdir/test_termcodes.vim + +Patch 8.2.4589 +Problem: Cannot index the g: dictionary. +Solution: Recognize using "g:[key]". (closes #9969) +Files: src/ex_docmd.c, src/eval.c, src/vim9compile.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4590 +Problem: Vim9: range type check has wrong offset. +Solution: Adjust offset for CHECKTYPE. Remove other type check. +Files: src/vim9compile.c, src/vim9execute.c, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4591 +Problem: Cursor line not updated when a callback moves the cursor. +Solution: Check if the cursor moved. (closes #9970) +Files: src/main.c, src/drawscreen.c, src/proto/drawscreen.pro, + src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_cursorline_callback_1.dump + +Patch 8.2.4592 +Problem: Search continues after giving E1204. +Solution: Return failure after giving E1204. (closes #9972) +Files: src/regexp_nfa.c + +Patch 8.2.4593 +Problem: Unnecessary call to redraw_later(). +Solution: Remove the call to redraw_later() in op_yank(). (closes #9971) +Files: src/register.c + +Patch 8.2.4594 +Problem: Need to write script to a file to be able to source them. +Solution: Make ":source" use lines from the current buffer. (Yegappan + Lakshmanan et al., closes #9967) +Files: runtime/doc/repeat.txt, runtime/doc/todo.txt, src/alloc.c, + src/digraph.c, src/eval.c, src/ex_cmds.h, src/scriptfile.c, + src/proto/scriptfile.pro, src/vim9script.c, + src/testdir/test_source.vim + +Patch 8.2.4595 +Problem: X11: using --remote-wait may keep the CPU busy. +Solution: Set the timeout for select() on every call. (Jacopo Secchiero, + closes #9973) +Files: src/if_xcmdsrv.c + +Patch 8.2.4596 +Problem: Installing tutor binary may fail. +Solution: Fix the dependency. (Sergei Trofimovich, closes #9978) +Files: src/Makefile + +Patch 8.2.4597 +Problem: LuaV_debug() not covered by tests. +Solution: Add a test. (Dominique Pell茅, closes #9980) +Files: src/testdir/test_lua.vim + +Patch 8.2.4598 +Problem: Profile completion test sometimes fails. +Solution: Delete the .res file before running tests. +Files: src/testdir/runtest.vim + +Patch 8.2.4599 +Problem: GTK: get assertion errors when scrolling a split window. +Solution: Use GDK_IS_DRAWABLE() on the scrollbar window. (closes #9982) +Files: src/gui_gtk.c + +Patch 8.2.4600 +Problem: Vim9: not enough test coverage for executing :def function. +Solution: Add a few more tests. Fix inconsistencies. +Files: src/vim9execute.c, src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_listdict.vim, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.4601 +Problem: Vim9: not enough test coverage for executing :def function. +Solution: Add a few more tests. +Files: src/testdir/test_vim9_script.vim, src/testdir/test_vim9_func.vim, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.4602 +Problem: Vim9: not enough test coverage for executing :def function. +Solution: Add a few more tests. Fix uncovered problem. Remove dead code. +Files: src/vim9execute.c, src/vim9.h, src/vim9instr.c, + src/proto/vim9instr.pro, src/vim9compile.c, + src/testdir/test_vim9_script.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.4603 +Problem: Sourcing buffer lines is too complicated. +Solution: Simplify the code. Make it possible to source Vim9 script lines. + (Yegappan Lakshmanan, closes #9974) +Files: runtime/doc/repeat.txt, src/ex_docmd.c, src/proto/scriptfile.pro, + src/scriptfile.c, src/structs.h, src/testdir/test_source.vim + +Patch 8.2.4604 +Problem: Error for redefining a script item may be confusing. +Solution: Put quotes around the name. +Files: src/errors.h + +Patch 8.2.4605 +Problem: Error for arguments of remote_expr() even when the +clientserver + feature is not included. +Solution: Move #ifdef. +Files: src/clientserver.c + +Patch 8.2.4606 (after 8.2.4605) +Problem: Test fails because of changed error message. +Solution: Update the expected error message +Files: src/testdir/test_vim9_import.vim + +Patch 8.2.4607 +Problem: Sourcing buffer lines may lead to errors for conflicts. +Solution: Add the ++clear argument. (Yegappan Lakshmanan, closes #9991) +Files: runtime/doc/repeat.txt, src/scriptfile.c, src/vim9script.c, + src/proto/vim9script.pro, src/testdir/test_source.vim + +Patch 8.2.4608 +Problem: getcompletion() does not work properly when 'wildoptions' + contains "fuzzy". +Solution: Do not use addstar(). (Yegappan Lakshmanan, closes #9992, + closes #9986) +Files: runtime/doc/builtin.txt, src/cmdexpand.c, + src/testdir/test_cmdline.vim + +Patch 8.2.4609 +Problem: :unhide does not check for failing to close a window. +Solution: When closing a window fails continue with the next one. Do not + try closing the autocmd window. (closes #9984) +Files: src/buffer.c, src/window.c, src/proto/window.pro, + src/testdir/test_autocmd.vim + +Patch 8.2.4610 +Problem: Some conditions are always true. +Solution: Remove the useless conditions. (closes #9993) +Files: src/clientserver.c, src/drawline.c, src/drawscreen.c, + src/ex_cmds.c, src/fileio.c, src/message.c, src/misc2.c, + src/ops.c, src/sign.c, src/spell.c, src/vim9cmds.c, src/window.c + +Patch 8.2.4611 +Problem: Typos in tests; one lua line not covered by test. +Solution: Fix typos. Add test case. (Dominique Pell茅, closes #9994) +Files: src/testdir/test_breakindent.vim, src/testdir/test_crypt.vim, + src/testdir/test_cursorline.vim, src/testdir/test_digraph.vim, + src/testdir/test_gui.vim, src/testdir/test_lua.vim, + src/testdir/test_regexp_latin.vim, src/testdir/test_signals.vim, + src/testdir/test_spell.vim, src/testdir/test_statusline.vim, + src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim, src/testdir/test_vimscript.vim + +Patch 8.2.4612 +Problem: Vim9: cannot use a recursive call in a nested function. (Sergey + Vlasov) +Solution: Define the funcref before compiling the function. (closes #9989) +Files: src/vim9compile.c, src/vim9instr.c, src/proto/vim9instr.pro, + src/vim9expr.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4613 +Problem: Return type of swapfile_unchanged() is wrong. +Solution: Use "int". (closes #10000 Yeah!) +Files: src/memline.c + +Patch 8.2.4614 +Problem: Redrawing too much when 'cursorline' is set and jumping around. +Solution: Rely on win_update() to redraw the current and previous cursor + line, do not mark lines as modified. (closes #9996) +Files: src/drawline.c, src/drawscreen.c, src/move.c, src/proto/move.pro, + src/option.c + +Patch 8.2.4615 +Problem: Mapping with escaped bar does not work in :def function. (Sergey + Vlasov) +Solution: Do not remove the backslash. (closes #10002) +Files: src/ex_docmd.c, src/proto/ex_docmd.pro, src/syntax.c, + src/vim9cmds.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4616 +Problem: Vim9: Declarations in a {} block of a user command do not use Vim9 + rules if defined in a legacy script. (Yegappan Lakshmanan) +Solution: Pretend the script is Vim9 script. +Files: src/usercmd.c, src/testdir/test_usercommands.vim + +Patch 8.2.4617 +Problem: No completion for :scriptnames. +Solution: Implement :scriptnames completion. (Yegappan Lakshmanan, + closes #10005) +Files: runtime/doc/builtin.txt, src/cmdexpand.c, src/ex_cmds.h, + src/scriptfile.c, src/usercmd.c, src/vim.h, + src/testdir/test_cmdline.vim, src/testdir/test_quickfix.vim + +Patch 8.2.4618 +Problem: Command line completion does not recognize single letter commands. +Solution: Use the condition from find_ex_command(). +Files: src/ex_docmd.c + +Patch 8.2.4619 +Problem: Mapping is cancelled when mouse moves and popup is visible. +Solution: Only generate mouse moved events when a popup may use them. + (closes #10004) +Files: src/gui.c, src/globals.h, src/popupwin.c + +Patch 8.2.4620 (after 8.2.4618) +Problem: Two letter substitute commands don't work. (Yegappan Lakshmanan) +Solution: Invert condition. +Files: src/ex_docmd.c + +Patch 8.2.4621 +Problem: Crash when using the tabline right-click menu. +Solution: Use XtPointer for XmNuserData. (closes #10009) +Files: src/gui_motif.c + +Patch 8.2.4622 +Problem: Vim9: Crash with :execute and :finish. (Sergey Vlasov) +Solution: Check for NULL. (closes #10011) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4623 +Problem: Coverity warns for using uninitialized field. +Solution: Initialize the field to zero. +Files: src/ex_docmd.c + +Patch 8.2.4624 +Problem: Old Coverity warning for resource leak. +Solution: Close the file if memory allocation fails. +Files: src/diff.c + +Patch 8.2.4625 +Problem: Old Coverity warning for resource leak. +Solution: Call FreeWild() if expanding matches did not fail. +Files: src/help.c + +Patch 8.2.4626 +Problem: Visual area not fully updated when removing sign in Visual mode + while scrolling. +Solution: Adjust check for topline. (closes #10017) +Files: src/drawscreen.c, src/testdir/test_display.vim, + src/testdir/dumps/Test_display_scroll_update_visual.dump + +Patch 8.2.4627 +Problem: flatten() does not use maxdepth correctly. +Solution: Use a recursive implementation. (closes #10020) +Files: src/list.c, src/testdir/test_flatten.vim + +Patch 8.2.4628 +Problem: Not enough testing for 2/3 letter substitute commands. +Solution: Add more tests. (Yegappan Lakshmanan, closes #10019) +Files: src/testdir/test_cmdline.vim, src/testdir/test_substitute.vim + +Patch 8.2.4629 +Problem: flattennew() makes a deep copy unnecessarily. +Solution: Use a shallow copy. (issue #10012) +Files: src/list.c + +Patch 8.2.4630 +Problem: 'cursorline' not always updated with 'cursorlineopt' is + "screenline". +Solution: Call check_redraw_cursorline() more often. (closes #10013) +Files: src/normal.c, src/edit.c, src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_cursorline_screenline_1.dump, + src/testdir/dumps/Test_cursorline_screenline_2.dump + +Patch 8.2.4631 +Problem: Crash when switching window in BufWipeout autocommand. +Solution: Put any buffer in the window to avoid it being NULL. + (closes #10024) +Files: src/window.c, src/buffer.c, src/testdir/test_autocmd.vim + +Patch 8.2.4632 +Problem: Using freed memory in flatten(). +Solution: Clear typval after recursing into list. +Files: src/list.c + +Patch 8.2.4633 +Problem: Visual range does not work before command modifiers. +Solution: Move Visual range to after command modifiers. +Files: src/ex_docmd.c, src/testdir/test_source.vim + +Patch 8.2.4634 +Problem: Vim9: cannot initialize a variable to null_list. +Solution: Give negative count to NEWLIST. (closes #10027) + Also fix inconsistencies in comparing with null values. +Files: src/vim9instr.c, src/proto/vim9instr.pro, src/vim9.h, + src/vim9compile.c, src/vim9expr.c, src/vim9execute.c, + src/evalvars.c, src/typval.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4635 (after 8.2.4634) +Problem: Tests using null list or dict fail. +Solution: Only use the new rules for Vim9 script. +Files: src/evalvars.c + +Patch 8.2.4636 (after 8.2.4633) +Problem: Not using Visual range. +Solution: Put the command pointer back to the range. +Files: src/ex_docmd.c + +Patch 8.2.4637 +Problem: Warning for using uninitialized variable. (Tony Mechelynck) +Solution: Initialize it. +Files: src/ex_docmd.c + +Patch 8.2.4638 +Problem: Superfluous check if a redraw is needed for 'cursorline'. +Solution: Remove check_redraw_cursorline(). (closes #10030, closes #10029) +Files: src/drawscreen.c, src/proto/drawscreen.pro, src/edit.c, + src/main.c, src/normal.c, src/move.c, + src/testdir/dumps/Test_cursorcolumn_callback_1.dump, + src/testdir/dumps/Test_relativenumber_callback_1.dump, + src/testdir/test_highlight.vim, src/testdir/test_number.vim + +Patch 8.2.4639 +Problem: Not sufficient parenthesis in preprocessor macros. +Solution: Add more parenthesis. (closes #10031) +Files: src/globals.h, src/gui.h, src/if_py_both.h, src/macros.h, + src/option.h, src/regexp.h, src/spell.h, src/structs.h, src/vim.h, + src/vim9.h + +Patch 8.2.4640 +Problem: Some boolean options use "long" instead of "int". +Solution: Adjust the type. (James McCoy, closes #10033) +Files: src/option.h + +Patch 8.2.4641 +Problem: May mark the wrong window for redrawing. +Solution: Use redraw_win_later(). (closes #10032) +Files: src/move.c + +Patch 8.2.4642 +Problem: Vim9: in :def function script var cannot be null. +Solution: Only initialize a script variable when not set to a null value. + (closes #10034) +Files: src/vim9execute.c, src/vim9type.c, src/globals.h, src/evalvars.c, + src/vim.h, src/vim9script.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4643 +Problem: Vim9: variable may be locked unintentionally. +Solution: Clear "v_lock". (closes #10036) +Files: src/vim9execute.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4644 +Problem: Redrawing too often when 'relativenumber' is set. +Solution: Only redraw when the cursor line changed. (Lewis Russell, + closes #10040) +Files: src/change.c, src/drawscreen.c, src/structs.h + +Patch 8.2.4645 +Problem: 'shortmess' changed when session does not store options. +Solution: Save and restore 'shortmess' if needed. (James Cherti, + closes #10037) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4646 +Problem: Using buffer line after it has been freed in old regexp engine. +Solution: After getting mark get the line again. +Files: src/regexp_bt.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.4647 +Problem: "source" can read past end of copied line. +Solution: Add a terminating NUL. +Files: src/scriptfile.c, src/testdir/test_source.vim + +Patch 8.2.4648 +Problem: Handling LSP messages is a bit slow. +Solution: Included support for LSP messages. (Yegappan Lakshmanan, + closes #10025) +Files: runtime/doc/channel.txt, src/channel.c, src/job.c, src/json.c, + src/proto/json.pro, src/structs.h, src/testdir/test_channel.vim, + src/testdir/test_channel_lsp.py + +Patch 8.2.4649 +Problem: Various formatting problems. +Solution: Improve the code formatting. +Files: src/mark.c, src/quickfix.c, src/regexp_nfa.c, src/register.c, + src/testdir/test_filechanged.vim, src/gui_athena.c, + src/gui_motif.c, src/os_unix.c + +Patch 8.2.4650 +Problem: "import autoload" only works with using 'runtimepath'. +Solution: Also support a relative and absolute file name. +Files: runtime/doc/vim9.txt, src/structs.h, src/scriptfile.c, + src/proto/scriptfile.pro, src/vim9script.c, src/vim9expr.c, + src/vim9.h, src/vim9execute.c, src/vim9instr.c, + src/proto/vim9instr.pro, src/vim.h, src/userfunc.c, + src/proto/userfunc.pro, src/testdir/test_vim9_import.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4651 (after 8.2.4650) +Problem: Test fails because path differs. +Solution: Only compare the tail of the path. +Files: src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4652 (after 8.2.4650) +Problem: Leaking memory if assignment fails. +Solution: Clear assigned value on failure. +Files: src/vim9execute.c + +Patch 8.2.4653 +Problem: "import autoload" does not check the file name. +Solution: Give an error if the file is not readable. (closes #10049) +Files: src/filepath.c, src/proto/filepath.pro, src/errors.h, + src/ex_cmds.c, src/ex_docmd.c, src/spellfile.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4654 (after 8.2.4653) +Problem: Missing changes for import check. +Solution: Add missing changes. +Files: src/vim9script.c + +Patch 8.2.4655 +Problem: Command line completion popup menu positioned wrong when using a + terminal window. +Solution: Position the popup menu differently when editing the command line. + (Yegappan Lakshmanan, closes #10050, closes #10035) +Files: src/popupmenu.c, src/testdir/test_cmdline.vim, + src/testdir/test_terminal.vim, + src/testdir/dumps/Test_wildmenu_pum_term_01.dump + +Patch 8.2.4656 +Problem: Vim9: can't use items from "import autoload" with autoload + directory name. +Solution: Let sn_autoload_prefix overrule sn_import_autoload. + (closes #10054) +Files: src/structs.h, src/vim9instr.c, src/vim9expr.c, src/vim9script.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4657 +Problem: Errors for functions are sometimes hard to read. +Solution: Use printable_func_name() in more places. +Files: src/vim9execute.c, src/userfunc.c, src/proto/userfunc.pro, + src/vim9expr.c, src/eval.c, src/vim9instr.c, src/vim9type.c, + src/testdir/test_vim9_expr.vim + +Patch 8.2.4658 +Problem: Org-mode files are not recognized. +Solution: Add patterns to recognize "org" files. (closes #10046) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4659 +Problem: Invalid memory access when using printable function name. +Solution: Adjust copied name length. +Files: src/userfunc.c + +Patch 8.2.4660 +Problem: Cursorcolumn is sometimes not correct. +Solution: Recompute the cursor column when entering Insert mode and the + cursor is on a character wider than a screen cell. (closes #10057) +Files: src/edit.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_cursorcolumn_insert_on_tab_1.dump, + src/testdir/dumps/Test_cursorcolumn_insert_on_tab_2.dump + +Patch 8.2.4661 +Problem: Coverity warning for using uninitialized variable. +Solution: Initialize variable to NULL. +Files: src/vim9expr.c + +Patch 8.2.4662 +Problem: No error for using out of range list index. +Solution: Check list index at script level like in compiled function. + (closes #10051) +Files: src/vim.h, src/evalvars.c, src/list.c, src/proto/list.pro, + src/eval.c, src/vim9execute.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.4663 +Problem: Occasional crash when running the GUI tests. +Solution: Check that the line index is not too high. (closes #8681) +Files: src/screen.c + +Patch 8.2.4664 +Problem: Elvish files are not recognized. +Solution: Recognize .elv files. (Bruno Roque, closes #10058) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4665 +Problem: Popup with "minwidth" and scrollbar not updated properly. +Solution: Adjust the computation if the window width. (closes #10061) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_previewpopup_4.dump, + src/testdir/dumps/Test_popupwin_previewpopup_5.dump, + src/testdir/dumps/Test_popupwin_previewpopup_7.dump, + src/testdir/dumps/Test_popupwin_previewpopup_8.dump, + src/testdir/dumps/Test_popupwin_previewpopup_9.dump, + src/testdir/dumps/Test_popupwin_previewpopup_10.dump, + src/testdir/dumps/Test_popupwin_drag_minwidth_1.dump, + src/testdir/dumps/Test_popupwin_drag_minwidth_2.dump, + src/testdir/dumps/Test_popupwin_drag_minwidth_3.dump + +Patch 8.2.4666 +Problem: Vim9: assignment not recognized in skipped block. +Solution: When skipping assume identifier exists. (closes #10059) +Files: src/vim9compile.c, src/proto/vim9compile.pro, src/vim9cmds.c, + src/testdir/test_vim9_cmd.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.4667 +Problem: expandcmd() fails on an error. +Solution: On failure return the command unmodified. (Yegappan Lakshmanan, + closes #10063) +Files: runtime/doc/builtin.txt, src/evalfunc.c, + src/testdir/test_expand.vim + +Patch 8.2.4668 +Problem: Buffer allocation failures insufficiently tested. +Solution: Add tests for memory allocation failures. (Yegappan Lakshmanan, + closes #10064) +Files: src/alloc.h, src/buffer.c, src/popupwin.c, src/window.c, + src/testdir/test_buffer.vim, src/testdir/test_swap.vim + +Patch 8.2.4669 +Problem: In compiled code len('string') is not inlined. +Solution: Compute the length at compile time if possible. (closes #10065) +Files: src/evalfunc.c, src/proto/evalfunc.pro, src/vim9expr.c, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4670 +Problem: Memory allocation failures for new tab page not tested. +Solution: Add tests with failing memory allocation. (Yegappan Lakshmanan, + closes #10067) +Files: src/alloc.h, src/blob.c, src/buffer.c, src/window.c, + src/testdir/test_blob.vim, src/testdir/test_buffer.vim, + src/testdir/test_tabpage.vim, src/testdir/test_window_cmd.vim + +Patch 8.2.4671 +Problem: 'wildignorecase' is sometimes not used for glob(). +Solution: Also use 'wildignorecase' when there are no wildcards. + (closes #10066, closes #8350) +Files: src/filepath.c, src/testdir/test_functions.vim + +Patch 8.2.4672 +Problem: Using :normal with Ex mode may make :substitute hang. +Solution: When getting an empty line behave like 'q' was typed. + (closes #10070) +Files: src/ex_cmds.c, src/testdir/test_normal.vim + +Patch 8.2.4673 +Problem: Redrawing a vertically split window is slow when using CTRL-F and + CTRL-B. +Solution: When deciding on USE_REDRAW bail out if scrolling more than three + lines. (issue #8002) +Files: src/screen.c + +Patch 8.2.4674 +Problem: Cannot force getting MouseMove events. +Solution: Add the 'mousemoveevent' option with implementation for the GUI. + (Ernie Rael, closes #10044) +Files: runtime/doc/gui.txt, runtime/doc/options.txt, + runtime/doc/testing.txt, src/gui.c, src/option.h, + src/optiondefs.h, src/testing.c, src/testdir/test_gui.vim + +Patch 8.2.4675 +Problem: No error for missing expression after :elseif. (Ernie Rael) +Solution: Check for missing expression. (closes #10068) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4676 (after 8.2.4675) +Problem: Test fails with different error. +Solution: Add argument to :elseif. +Files: src/testdir/test_vimscript.vim + +Patch 8.2.4677 +Problem: The Athena GUI support is outdated. +Solution: Remove the Athena GUI code. +Files: Filelist, src/Makefile, src/proto.h, src/clipboard.c, + src/gui_athena.c, src/proto/gui_athena.pro, src/gui_at_sb.c, + src/gui_at_sb.h, src/gui_at_fs.c, src/gui_motif.c, src/evalfunc.c, + src/gui.c, src/gui_beval.c, src/gui_x11.c, src/if_mzsch.c, + src/main.c, src/menu.c, src/mouse.c, src/version.c, src/feature.h, + src/gui.h, src/structs.h, src/vim.h, src/testdir/gui_init.vim, + src/testdir/setup_gui.vim, src/testdir/test_clientserver.vim, + src/testdir/test_edit.vim, src/testdir/test_gui.vim, + src/testdir/test_highlight.vim, src/testdir/test_quotestar.vim, + src/testdir/test_startup.vim, runtime/doc/gui.txt, + runtime/doc/gui_x11.txt + +Patch 8.2.4678 +Problem: Vim9: not all code is tested. +Solution: Add a few more tests. +Files: src/vim9execute.c, src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_import.vim, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4679 +Problem: Cannot have expandcmd() give an error message for mistakes. +Solution: Add an optional argument to give errors. Fix memory leak when + expanding files fails. (Yegappan Lakshmanan, closes #10071) +Files: runtime/doc/builtin.txt, src/evalfunc.c, src/filepath.c, + src/testdir/test_expand.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4680 +Problem: Build failure without +postscript. +Solution: Use another error message. +Files: src/vim9execute.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4681 +Problem: Build fails with a combination of features. +Solution: Remove #ifdef for alloc_clear_id(). (John Marriott) +Files: src/alloc.c + +Patch 8.2.4682 +Problem: Vim9: can use :unlockvar for const variable. (Ernie Rael) +Solution: Check whether the variable is a const. +Files: src/ex_docmd.c, src/evalvars.c, src/vim9script.c, + src/proto/vim9script.pro, src/eval.c, src/userfunc.c, + src/testdir/test_vim9_cmd.vim + +Patch 8.2.4683 +Problem: Verbose check with dict_find() to see if a key is present. +Solution: Add dict_has_key(). (Yegappan Lakshmanan, closes #10074) +Files: src/channel.c, src/dict.c, src/evalwindow.c, src/filepath.c, + src/highlight.c, src/json.c, src/match.c, src/popupwin.c, + src/proto/dict.pro, src/quickfix.c, src/search.c, src/sign.c, + src/tag.c, src/terminal.c, src/testing.c, src/textprop.c, + src/time.c + +Patch 8.2.4684 +Problem: Cannot open a channel on a Unix domain socket. +Solution: Add Unix domain socket support. (closes #10062) +Files: runtime/doc/channel.txt, src/channel.c, src/testdir/check.vim, + src/testdir/shared.vim, src/testdir/test_channel.py, + src/testdir/test_channel.vim, src/testdir/test_channel_unix.py, + src/testdir/test_cmdline.vim + +Patch 8.2.4685 +Problem: When a swap file is found for a popup there is no dialog and the + buffer is loaded anyway. +Solution: Silently load the buffer read-only. (closes #10073) +Files: runtime/doc/popup.txt, src/memline.c, src/popupwin.c, src/vim.h, + src/buffer.c, src/testdir/test_popupwin.vim + +Patch 8.2.4686 +Problem: Configure doesn't find the Motif library with Cygwin. +Solution: Check for libXm.dll.a. (Kelvin Lee, closes #10077) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.4687 +Problem: "vimgrep /\%v/ *" may cause a crash. +Solution: When compiling the pattern with the old engine fails, restore the + regprog of the new engine instead of leaving it NULL. + (closes #10079) +Files: src/regexp.c + +Patch 8.2.4688 +Problem: New regexp engine does not give an error for "\%v". +Solution: Check for a value argument. (issue #10079) +Files: src/regexp_nfa.c, src/errors.h, src/regexp_bt.c, + src/testdir/test_regexp_latin.vim + +Patch 8.2.4689 +Problem: Using <Cmd> in a mapping does not work for mouse keys in Insert + mode. (Sergey Vlasov) +Solution: When reading the <Cmd> argument do not use the stuff buffer. + (closes #10080) +Files: src/getchar.c + +Patch 8.2.4690 +Problem: Channel tests fail on MS-Windows. +Solution: Check if the AF_UNIX attribute exists. (closes #10083) +Files: src/testdir/test_channel.py, src/testdir/test_channel_unix.py + +Patch 8.2.4691 (after 8.2.4689) +Problem: Solution for <Cmd> in a mapping causes trouble. +Solution: Use another solution: put back CTRL-O after reading the <Cmd> + sequence. +Files: src/getchar.c + +Patch 8.2.4692 +Problem: No test for what 8.2.4691 fixes. +Solution: Add a test. Use a more generic solution. (closes #10090) +Files: src/getchar.c, src/mouse.c, src/testdir/test_mapping.vim + +Patch 8.2.4693 (after 8.2.4688) +Problem: new regexp does not accept pattern "\%>0v". +Solution: Do accept digit zero. +Files: src/regexp_bt.c, src/regexp_nfa.c, + src/testdir/test_regexp_latin.vim + +Patch 8.2.4694 +Problem: Avoidance of #elif causes more preproc nesting. +Solution: Use #elif where it is useful. (Ozaki Kiichi, closes #10081) +Files: src/option.c, src/optiondefs.h, src/optionstr.c, src/version.c + +Patch 8.2.4695 +Problem: JSON encoding could be faster. +Solution: Optimize encoding JSON strings. (closes #10086) +Files: src/json.c, src/testdir/test_json.vim + +Patch 8.2.4696 +Problem: delete() with "rf" argument does not report a failure. +Solution: Return -1 if the directory could not be removed. (closes #10078) +Files: src/fileio.c, src/testdir/test_functions.vim + +Patch 8.2.4697 +Problem: Vim9: crash when adding a duplicate key to a dictionary. +Solution: Clear the stack item when it has been moved into the dictionary. + (closes #10087) +Files: src/vim9execute.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4698 +Problem: Vim9: script variable has no flag that it was set. +Solution: Add a flag that it was set, to avoid giving it a value when used. + (closes #10088) +Files: src/structs.h, src/vim9script.c, src/vim9execute.c, + src/evalvars.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4699 +Problem: Hard to reproduce hang when reading from a channel. +Solution: Check for readahead before starting to wait. (closes #10093, + closes #7781, closes #6364) +Files: src/channel.c + +Patch 8.2.4700 +Problem: Buffer remains active if a WinClosed event throws an exception. +Solution: Ignore aborting() when closing the buffer. (closes #10097) +Files: src/window.c, src/testdir/test_autocmd.vim + +Patch 8.2.4701 +Problem: Kuka Robot Language files not recognized. +Solution: Recognize *.src and *.dat files. (Patrick Meiser-Knosowski, + closes #10096) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim, + runtime/autoload/dist/ft.vim + +Patch 8.2.4702 +Problem: C++ scope labels are hard-coded. +Solution: Add 'cinscopedecls' to define the labels. (Rom Praschan, + closes #10109) +Files: runtime/doc/indent.txt, runtime/doc/options.txt, + runtime/doc/quickref.txt, runtime/optwin.vim, src/buffer.c, + src/cindent.c, src/option.c, src/option.h, src/optiondefs.h, + src/optionstr.c, src/structs.h, src/testdir/test_cindent.vim + +Patch 8.2.4703 (after 8.2.4702) +Problem: Memory leak in handling 'cinscopedecls'. +Solution: Free the memory before returning. +Files: src/cindent.c + +Patch 8.2.4704 +Problem: Using "else" after return or break increases indent. +Solution: Remove "else" and reduce indent. (Goc Dundar, closes #10099) +Files: src/fileio.c, src/memline.c, src/option.c, src/syntax.c + +Patch 8.2.4705 +Problem: reg_executing may not be cleared. +Solution: Reset reg_executing later. (closes #10111, closes #10110) +Files: src/ex_docmd.c, src/getchar.c, src/globals.h, src/structs.h, + src/testdir/test_registers.vim + +Patch 8.2.4706 +Problem: Buffer remains active if a WinClosed event throws an exception + when there are multiple tabpages. +Solution: Ignore aborting() when closing the buffer. (closes #10101) +Files: src/window.c, src/testdir/test_autocmd.vim + +Patch 8.2.4707 +Problem: Redrawing could be a bit more efficient. +Solution: Optimize redrawing. (closes #10105) +Files: src/change.c, src/edit.c, src/testdir/test_highlight.vim, + src/testdir/dumps/Test_cursorcolumn_insert_on_tab_3.dump + +Patch 8.2.4708 +Problem: PHP test files are not recognized. +Solution: Add the *.phpt pattern. (Julien Voisin, closes #10112) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4709 +Problem: After :redraw the statusline highlight might be used. +Solution: Clear the screen attribute after redrawing the screen. + (closes #10108) +Files: src/ex_docmd.c + +Patch 8.2.4710 +Problem: Smart indenting does not work after completion. +Solution: Set "can_si". (Christian Brabandt, closes #10113, closes #558) +Files: src/edit.c, src/testdir/test_ins_complete.vim + +Patch 8.2.4711 +Problem: When 'insermode' is set :edit from <Cmd> mapping misbehaves. +Solution: Don't set "need_start_insertmode" when already in Insert mode. + (closes #10116) +Files: src/ex_cmds.c, src/testdir/test_edit.vim + +Patch 8.2.4712 +Problem: Only get profiling information after exiting. +Solution: Add "profile dump" and "profile stop". (Marco Hinz, Yegappan + Lakshmanan, closes #10107) +Files: runtime/doc/repeat.txt, src/profiler.c, + src/testdir/test_profile.vim + +Patch 8.2.4713 +Problem: Plugins cannot track text scrolling. +Solution: Add the WinScrolled event. (closes #10102) +Files: runtime/doc/autocmd.txt, src/autocmd.c, src/proto/autocmd.pro, + src/edit.c, src/gui.c, src/main.c, src/structs.h, src/vim.h, + src/window.c, src/proto/window.pro, src/testdir/test_autocmd.vim + +Patch 8.2.4714 +Problem: Using g:filetype_dat and g:filetype_src not tested. +Solution: Add a test. (Patrick Meiser-Knosowski, closes #10117) +Files: src/testdir/test_filetype.vim + +Patch 8.2.4715 +Problem: Vagrantfile not recognized. +Solution: Recognize Vagrantfile as ruby. (Julien Voisin, closes #10119) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4716 +Problem: Memory allocation failure not tested when defining a function. +Solution: Add a test. (Yegappan Lakshmanan, closes #10127) +Files: src/alloc.c, src/alloc.h, src/proto/alloc.pro, src/userfunc.c, + src/testdir/test_user_func.vim, src/testdir/test_vim9_func.vim + +Patch 8.2.4717 +Problem: For TextYankPost v:event does not contain information about the + operation being inclusive or not. +Solution: Add "inclusive" to v:event. (Justin M. Keyes, Yegappan Lakshmanan, + closes #10125) +Files: runtime/doc/autocmd.txt, src/register.c, + src/testdir/test_autocmd.vim + +Patch 8.2.4718 +Problem: @@@ in the last line sometimes drawn in the wrong place. +Solution: Make sure the column is valid. (closes #10130) +Files: src/drawscreen.c, src/screen.c, src/testdir/test_display.vim + src/testdir/dumps/Test_display_lastline_1.dump, + src/testdir/dumps/Test_display_lastline_2.dump, + src/testdir/dumps/Test_display_lastline_3.dump, + src/testdir/dumps/Test_display_lastline_4.dump + +Patch 8.2.4719 +Problem: ">" marker sometimes not displayed in the jumplist. +Solution: If the buffer no longer exists show "-invalid-". (Christian + Brabandt, closes #10131, closes #10100) +Files: runtime/doc/motion.txt, src/mark.c, src/testdir/Make_all.mak, + src/testdir/test_alot.vim, src/testdir/test_jumplist.vim, + src/testdir/test_jumps.vim + +Patch 8.2.4720 +Problem: ABB Rapid files are not recognized properly. +Solution: Add checks for ABB Rapid files. (Patrick Meiser-Knosowski, + closes #10104) +Files: runtime/autoload/dist/ft.vim, runtime/doc/filetype.txt, + runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4721 +Problem: Cooklang files are not recognized. +Solution: recognize *.cook files. (Goc Dundar, closes #10120) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4722 +Problem: When a recording is ended with a mapped key that key is also + recorded. +Solution: Remember the previous last_recorded_len. (closes #10122) +Files: src/getchar.c, src/testdir/test_registers.vim + +Patch 8.2.4723 +Problem: The ModeChanged autocmd event is inefficient. +Solution: Avoid allocating memory. (closes #10134) Rename + trigger_modechanged() to may_trigger_modechanged(). +Files: src/misc1.c, src/proto/misc1.pro, src/edit.c, src/ex_docmd.c, + src/ex_getln.c, src/insexpand.c, src/normal.c, src/terminal.c, + src/autocmd.c + +Patch 8.2.4724 +Problem: Current instance of last search pattern not easily spotted. +Solution: Add CurSearch highlighting. (closes #10133) +Files: runtime/doc/options.txt, runtime/doc/syntax.txt, src/highlight.c, + src/match.c, src/normal.c, src/optiondefs.h, src/structs.h, + src/vim.h, src/normal.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_3.dump + +Patch 8.2.4725 (after 8.2.4724) +Problem: Unused variable in tiny build. +Solution: Add #ifdef. +Files: src/normal.c + +Patch 8.2.4726 +Problem: Cannot use expand() to get the script name. +Solution: Support expand('<script>'). (closes #10121) +Files: runtime/doc/cmdline.txt, src/errors.h, src/ex_docmd.c, + src/scriptfile.c, src/vim.h, src/testdir/test_expand.vim + +Patch 8.2.4727 +Problem: Unused code. +Solution: Remove code and add #ifdefs. (Dominique Pell茅, closes #10136) +Files: runtime/doc/editing.txt, runtime/doc/eval.txt, + runtime/doc/vim9.txt, src/errors.h, src/option.c, src/search.c, + src/proto/search.pro + +Patch 8.2.4728 +Problem: No test that v:event cannot be modified. +Solution: Add a test. (closes #10139) +Files: src/testdir/test_autocmd.vim + +Patch 8.2.4729 +Problem: HEEx and Surface templates do not need a separate filetype. +Solution: Use Elixir for the similar filetypes. (Aaron Tinio, closes #10124) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4730 +Problem: MS-Windows GUI: cannot use CTRL-/. +Solution: Handle the WM_KEYUP event. (Yasuhiro Matsumoto, closes #10141) +Files: src/gui_w32.c + +Patch 8.2.4731 +Problem: The changelist index is not remembered per buffer. +Solution: Keep the changelist index per window and buffer. (closes #10135, + closes #2173) +Files: src/buffer.c, src/evalfunc.c, src/structs.h, + src/testdir/test_changelist.vim + +Patch 8.2.4732 +Problem: Duplicate code to free fuzzy matches. +Solution: Bring back fuzmatch_str_free(). +Files: src/search.c, src/proto/search.pro, src/cmdexpand.c + +Patch 8.2.4733 (after 8.2.4729) +Problem: HEEx and Surface do need a separate filetype. +Solution: Revert 8.2.4729. (closes #10147) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4734 +Problem: getcharpos() may change a mark position. +Solution: Copy the mark position. (closes #10148) +Files: src/eval.c, src/testdir/test_cursor_func.vim + +Patch 8.2.4735 +Problem: Quickfix tests can be a bit hard to read. +Solution: Use heredoc instead of strings and line continuation. (Yegappan + Lakshmanan, closes #10145) +Files: src/testdir/test_quickfix.vim + +Patch 8.2.4736 +Problem: Build problem for Cygwin with Motif. +Solution: Undefine ControlMask. (Kelvin Lee, closes #10152) +Files: src/mbyte.c + +Patch 8.2.4737 +Problem: // in JavaScript string recognized as comment. +Solution: Only check for linecomment if 'cindent' is set. (closes #10151) +Files: src/change.c, src/testdir/test_textformat.vim + +Patch 8.2.4738 +Problem: Esc on commandline executes command instead of abandoning it. +Solution: Save and restore KeyTyped when removing the popup menu. + (closes #10154) +Files: src/cmdexpand.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_1.dump, + src/testdir/dumps/Test_wildmenu_with_pum_foldexpr_2.dump + +Patch 8.2.4739 +Problem: Accessing freed memory after WinScrolled autocmd event. +Solution: Check the window pointer is still valid. (closes #10156) + Remove the argument from may_trigger_winscrolled(). +Files: src/window.c, src/proto/window.pro, src/edit.c, src/gui.c, + src/main.c, src/testdir/test_autocmd.vim + +Patch 8.2.4740 +Problem: When expand() fails there is no error message. +Solution: When 'verbose' is set give an error message. +Files: runtime/doc/builtin.txt, src/evalfunc.c, + src/testdir/test_expand.vim + +Patch 8.2.4741 (after 8.2.4740) +Problem: Startup test fails. +Solution: Avoid an error for verbose expansion. Fix that the "0verbose" + command modifier doesn't work. +Files: runtime/syntax/syntax.vim, runtime/syntax/synload.vim, + src/structs.h, src/ex_docmd.c, src/testdir/test_excmd.vim + +Patch 8.2.4742 +Problem: There is no way to start logging very early in startup. +Solution: Add the --log argument. Include the date in the start message in + the log file. Avoid a duplicate message when forking. Log an + executed shell command. +Files: runtime/doc/starting.txt, runtime/doc/channel.txt, + src/main.c, src/channel.c, src/os_unix.c, src/os_win32.c, + src/testdir/test_startup.vim + +Patch 8.2.4743 +Problem: Clang 14 is available on CI. +Solution: Switch from clang 13 to 14. (closes #10157) +Files: .github/workflows/ci.yml + +Patch 8.2.4744 +Problem: A terminal window can't use the bell. +Solution: Add bell support for the terminal window. (closes #10178) +Files: runtime/doc/options.txt, src/gui_w32.c, src/option.h, + src/optionstr.c, src/terminal.c + +Patch 8.2.4745 (after 8.2.4744) +Problem: Using wrong flag for using bell in the terminal. +Solution: Change to use BO_TERM. +Files: src/terminal.c, src/misc1.c + +Patch 8.2.4746 +Problem: Supercollider filetype not recognized. +Solution: Match file extensions and check file contents to detect + supercollider. (closes #10142) +Files: runtime/filetype.vim, runtime/autoload/dist/ft.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4747 +Problem: No filetype override for .sys files. +Solution: Add g:filetype_sys. (Patrick Meiser-Knosowski, closes #10181) +Files: runtime/doc/filetype.txt, runtime/autoload/dist/ft.vim, + src/testdir/test_filetype.vim + +Patch 8.2.4748 +Problem: Cannot use an imported function in a mapping. +Solution: Recognize <SID>name.Func. +Files: runtime/doc/vim9.txt, src/term.c, src/vim9execute.c, + src/proto/vim9execute.pro, src/scriptfile.c, + src/testdir/test_vim9_import.vim + +Patch 8.2.4749 +Problem: <script> is not expanded in autocmd context. +Solution: Add the context to the pattern struct. (closes #10144) + Rename AutoPatCmd to AutoPatCmd_T. +Files: src/autocmd.c, src/proto/autocmd.pro, src/scriptfile.c, + src/structs.h, src/testdir/test_expand.vim + +Patch 8.2.4750 +Problem: Small pieces of dead code. +Solution: Remove the dead code. (Goc Dundar, closes #10190) Rename the + qftf_cb struct member to avoid confusion. +Files: src/ex_cmds.c, src/misc1.c, src/optionstr.c, src/quickfix.c + +Patch 8.2.4751 (after 8.2.4748) +Problem: Mapping <SID>name.Func does not work for script in autoload + directory. +Solution: Use the # form for a script in the autoload directory. + (closes #10186) +Files: src/term.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4752 +Problem: Wrong 'statusline' value can cause illegal memory access. +Solution: Properly check the value. (closes #10192) +Files: src/optionstr.c, src/testdir/test_options.vim + +Patch 8.2.4753 +Problem: Error from setting an option is silently ignored. +Solution: Handle option value errors better. Fix uses of N_(). +Files: src/option.c, src/proto/option.pro, src/optionstr.c, + src/channel.c, src/crypt.c, src/diff.c, src/edit.c, + src/eval.c, src/evalfunc.c, src/evalvars.c, src/ex_cmds2.c, + src/ex_docmd.c, src/ex_getln.c, src/getchar.c, src/gui.c, + src/gui_gtk_x11.c, src/help.c, src/highlight.c, src/if_tcl.c, + src/main.c, src/memline.c, src/message_test.c, + src/popupmenu.c, src/quickfix.c, src/scriptfile.c, src/spell.c, + src/spellfile.c, src/term.c, src/undo.c, src/vim9script.c + +Patch 8.2.4754 +Problem: Still using cached values after unsetting some known environment + variables. +Solution: Take care of the side effects. (closes #10194) +Files: src/evalfunc.c, src/evalvars.c, src/misc1.c, src/proto/misc1.pro, + src/vim9execute.c, src/optionstr.c, src/testdir/test_environ.vim + +Patch 8.2.4755 +Problem: Cannot use <SID>FuncRef in completion spec. +Solution: Dereference a function name in another way. (closes #10197) +Files: src/eval.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4756 (after 8.2.4754) +Problem: Build error without the +eval feature. +Solution: Adjust #ifdefs. +Files: src/misc1.c + +Patch 8.2.4757 +Problem: List of libraries to suppress lsan errors is outdated. +Solution: Add another library. (closes #10201) +Files: src/testdir/lsan-suppress.txt + +Patch 8.2.4758 +Problem: When using an LSP channel want to get the message ID. +Solution: Have ch_sendexpr() return the ID. (Yegappan Lakshmanan, + closes #10202) +Files: runtime/doc/channel.txt, src/channel.c, src/evalfunc.c, + src/testdir/test_channel.vim + +Patch 8.2.4759 +Problem: CurSearch highlight does not work for multi-line match. +Solution: Check cursor position before adjusting columns. (closes #10133) +Files: src/structs.h, src/match.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line.dump, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_1.dump, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_2.dump, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_3.dump, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_4.dump, + src/testdir/dumps/Test_hlsearch_cursearch_multiple_line_5.dump + +Patch 8.2.4760 +Problem: Using matchfuzzy() on a long list can take a while. +Solution: Add a limit to the number of matches. (Yasuhiro Matsumoto, + closes #10189) +Files: runtime/doc/builtin.txt, src/search.c, + src/testdir/test_matchfuzzy.vim + +Patch 8.2.4761 +Problem: Documentation for using LSP messages is incomplete. +Solution: Update the documentation. (Yegappan Lakshmanan, closes #10206) +Files: runtime/doc/channel.txt + +Patch 8.2.4762 +Problem: Using freed memory when using synstack() and synID() in WinEnter. +Solution: Check using the syntax window. (closes #10204) +Files: src/syntax.c, src/testdir/test_syntax.vim + +Patch 8.2.4763 +Problem: Using invalid pointer with "V:" in Ex mode. +Solution: Correctly handle the command being changed to "+". +Files: src/ex_docmd.c, src/testdir/test_ex_mode.vim + +Patch 8.2.4764 +Problem: CI uses an older gcc version. +Solution: Use GCC 11. (closes #10185) +Files: .github/workflows/ci.yml, src/testdir/lsan-suppress.txt + +Patch 8.2.4765 +Problem: Function matchfuzzy() sorts too many items. +Solution: Only put matches in the array. (Yegappan Lakshmanan, + closes #10208) +Files: src/search.c + +Patch 8.2.4766 +Problem: KRL files using "deffct" not recognized. +Solution: Adjust the pattern used for matching. (Patrick Meiser-Knosowski, + closes #10200) +Files: runtime/autoload/dist/ft.vim, src/testdir/test_filetype.vim + +Patch 8.2.4767 +Problem: Openscad files are not recognized. +Solution: Add a filetype pattern. (Niklas Adam, closes #10199) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4768 +Problem: CI: codecov upload sometimes does not work. +Solution: Use action v3 instead of v2. (closes #10209) +Files: .github/workflows/ci.yml + +Patch 8.2.4769 +Problem: Build warning with UCRT. +Solution: Adjust #ifdef for _wenviron. (John Marriott) +Files: src/evalfunc.c + +Patch 8.2.4770 +Problem: Cannot easily mix expression and heredoc. +Solution: Support `=expr` in heredoc. (Yegappan Lakshmanan, closes #10138) +Files: runtime/doc/eval.txt, src/evalvars.c, src/userfunc.c, + src/testdir/test_let.vim, src/testdir/test_vim9_assign.vim + +Patch 8.2.4771 +Problem: Coverity warns for not checking return value. +Solution: Check return value of rettv_dict_alloc(). +Files: src/channel.c + +Patch 8.2.4772 +Problem: Old Coverity warning for not checking ftell() return value. +Solution: Check return value of fseek() and ftell(). +Files: src/misc1.c + +Patch 8.2.4773 +Problem: Build failure without the +eval feature. +Solution: Use other error message. Avoid warnings. +Files: src/misc1.c, src/cindent.c, src/term.c + +Patch 8.2.4774 +Problem: Crash when using a number for lambda name. +Solution: Check the type of the lambda reference. +Files: src/eval.c, src/errors.h, src/testdir/test_lambda.vim + +Patch 8.2.4775 +Problem: SpellBad highlighting does not work in Konsole. +Solution: Do not keep t_8u defined for Konsole. Redraw when t_8u is reset. + (closes #10177) +Files: src/term.c + +Patch 8.2.4776 +Problem: GTK: 'lines' and 'columns' may change during startup. +Solution: Ignore stale GTK resize events. (Ernie Rael, closes #10179) +Files: src/gui_gtk_x11.c + +Patch 8.2.4777 (after 8.2.4775) +Problem: Screendump tests fail because of a redraw. +Solution: Do not output t_8u before receiving termresponse. Redraw only + when t_8u is not reset and termresponse is received. +Files: src/term.c + +Patch 8.2.4778 +Problem: Pacman files use dosini filetype. +Solution: Use conf instead. (Chaoren Lin, closes #10213) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4779 +Problem: lsan suppression is too version specific. +Solution: Leave out the version number. (Christian Brabandt, closes #10214) +Files: src/testdir/lsan-suppress.txt + +Patch 8.2.4780 +Problem: Parsing an LSP message fails when it is split. +Solution: Collapse the received data before parsing. (Yegappan Lakshmanan, + closes #10215) +Files: runtime/doc/channel.txt, src/channel.c, + src/testdir/test_channel.vim, src/testdir/test_channel_lsp.py + +Patch 8.2.4781 +Problem: Maxima files are not recognized. +Solution: Add patterns to detect Maxima files. (Doron Behar, closes #10211) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4782 +Problem: Accessing freed memory. +Solution: Clear evalarg after checking for trailing characters. + (issue #10218) +Files: src/userfunc.c, src/testdir/test_lambda.vim + +Patch 8.2.4783 +Problem: Coverity warns for leaking memory. +Solution: Use another strategy freeing "theline". +Files: src/evalvars.c + +Patch 8.2.4784 +Problem: Lamba test with timer is flaky. +Solution: Adjust sleep time on retry. +Files: src/testdir/test_lambda.vim + +Patch 8.2.4785 +Problem: Visual mode not stopped early enough if win_gotoid() goes to + another buffer. (Sergey Vlasov) +Solution: Stop Visual mode before jumping to another buffer. (closes #10217) +Files: src/evalwindow.c, src/testdir/test_vim9_builtin.vim, + src/testdir/dumps/Test_win_gotoid_1.dump, + src/testdir/dumps/Test_win_gotoid_2.dump, + src/testdir/dumps/Test_win_gotoid_3.dump + +Patch 8.2.4786 (after 8.2.4785) +Problem: Test for win_gotoid() in Visual mode fails on Mac. +Solution: Skip the test on MacOS. +Files: src/testdir/test_vim9_builtin.vim + +Patch 8.2.4787 +Problem: prop_find() does not find the right property. +Solution: Fix the scan order. (closes #10220) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.4788 +Problem: Large payload for LSP message not tested. +Solution: Add a test with a large LSP payload. (Yegappan Lakshmanan, + closes #10223) +Files: src/channel.c, src/testdir/test_channel.vim, + src/testdir/test_channel_lsp.py + +Patch 8.2.4789 +Problem: The cursor may be in the in wrong place when using :redraw while + editing the cmdline. +Solution: When editing the command line let :redraw update the command line + too. (closes #10210) +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim, + src/testdir/dumps/Test_redraw_in_autocmd_1.dump, + src/testdir/dumps/Test_redraw_in_autocmd_2.dump + +Patch 8.2.4790 +Problem: Lilypond filetype not recognized. +Solution: Add patterns for lilypond. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4791 +Problem: Autocmd events triggered in different order when reusing an empty + buffer. +Solution: Call buff_freeall() earlier. (Charlie Groves, closes #10198) +Files: src/buffer.c, src/testdir/test_autocmd.vim + +Patch 8.2.4792 +Problem: Indent operator creates an undo entry for every line. +Solution: Create one undo entry for all lines. (closes #10227) +Files: src/indent.c, src/testdir/test_indent.vim + +Patch 8.2.4793 +Problem: Recognizing Maxima filetype even though it might be another. +Solution: Remove *.mc and *.dem patterns from Maxima files +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4794 +Problem: Compiler warning for not initialized variable. +Solution: Initialize the variable. (John Marriott) +Files: src/indent.c + +Patch 8.2.4795 +Problem: 'cursorbind' scrolling depends on whether 'cursorline' is set. +Solution: Always call validate_cursor(). (Christian Brabandt, closes #10230, + closes #10014) +Files: src/move.c, src/testdir/README.txt, + src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_hor_scroll_1.dump, + src/testdir/dumps/Test_hor_scroll_2.dump, + src/testdir/dumps/Test_hor_scroll_3.dump, + src/testdir/dumps/Test_hor_scroll_4.dump + +Patch 8.2.4796 (after 8.2.4795) +Problem: File left behind after running cursorline tests. +Solution: Uncomment the line that deletes the file. +Files: src/testdir/test_cursorline.vim + +Patch 8.2.4797 +Problem: getwininfo() may get outdated values. +Solution: Make sure w_botline is up-to-date. (closes #10226) +Files: src/evalwindow.c, src/testdir/test_bufwintabinfo.vim + +Patch 8.2.4798 +Problem: t_8u option was reset even when set by the user. +Solution: Only reset t_8u when using the default value. (closes #10239) +Files: src/term.c + +Patch 8.2.4799 +Problem: Popup does not use correct topline. +Solution: Also add one when firstline is negative. (closes #10229) +Files: src/popupwin.c, src/testdir/test_popupwin.vim + +Patch 8.2.4800 (after 8.2.4798) +Problem: Missing test update for adjusted t_8u behavior. +Solution: Update and extend the test. +Files: src/testdir/test_termcodes.vim + +Patch 8.2.4801 (after 8.2.4795) +Problem: Fix for cursorbind fix not fully tested. +Solution: Add another test case. (Christian Brabandt, closes #10240) +Files: src/testdir/test_cursorline.vim, + src/testdir/dumps/Test_hor_scroll_5.dump + +Patch 8.2.4802 +Problem: Test is not cleaned up. +Solution: Make test clean up after itself. Avoid NUL. (closes #10233) +Files: src/testdir/test_autocmd.vim + +Patch 8.2.4803 +Problem: WinScrolled not always triggered when scrolling with the mouse. +Solution: Add calls to may_trigger_winscrolled(). (closes #10246) +Files: src/mouse.c, src/testdir/test_autocmd.vim + +Patch 8.2.4804 +Problem: Expression in heredoc doesn't work for compiled function. +Solution: Implement compiling the heredoc expressions. (Yegappan Lakshmanan, + closes #10232) +Files: runtime/doc/eval.txt, src/evalvars.c, src/proto/evalvars.pro, + src/ex_getln.c, src/vim9compile.c, src/proto/vim9compile.pro, + src/testdir/test_vim9_assign.vim + +Patch 8.2.4805 +Problem: CurSearch used for all matches in current line. +Solution: Don't use the non-zero line count. (closes #10247) +Files: src/match.c, src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_1.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_2.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_2a.dump, + src/testdir/dumps/Test_hlsearch_cursearch_single_line_2b.dump + +Patch 8.2.4806 +Problem: A mapping using <LeftDrag> does not start Select mode. +Solution: When checking for starting select mode with the mouse also do this + when there is typeahead. (closes #10249) +Files: src/normal.c + +Patch 8.2.4807 +Problem: Processing key events in Win32 GUI is not ideal. +Solution: Improve processing of key events. (closes #10155) +Files: src/gui_w32.c + +Patch 8.2.4808 +Problem: Unused item in engine struct. +Solution: Remove "expr". Add comment with tags. +Files: src/regexp.h + +Patch 8.2.4809 +Problem: Various things not properly tested. +Solution: Add various test cases. (Yegappan Lakshmanan, closes #10259) +Files: src/testdir/test_blob.vim, src/testdir/test_debugger.vim, + src/testdir/test_listdict.vim, src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_import.vim, src/testdir/test_vim9_script.vim + +Patch 8.2.4810 (after 8.2.4808) +Problem: Missing changes in one file. +Solution: Also change the struct initializers. +Files: src/regexp.c + +Patch 8.2.4811 (after 8.2.4807) +Problem: Win32 GUI: caps lock doesn't work. +Solution: Handle VK_CAPITAL. (closes #10260, closes #10258) +Files: src/gui_w32.c + +Patch 8.2.4812 +Problem: Unused struct item. +Solution: Remove "lines" match_T. Simplify the code. (closes #10256) +Files: src/match.c, src/structs.h + +Patch 8.2.4813 +Problem: Pasting text while indent folding may mess up folds. +Solution: Adjust the way folds are split. (Brandon Simmons, closes #10254) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.4814 +Problem: Possible to leave a popup window with win_gotoid(). +Solution: Give an error when trying to leave a popup window with + win_gotoid(). (closes #10253) +Files: src/evalwindow.c, src/testdir/test_terminal3.vim + +Patch 8.2.4815 (after 8.2.4776) +Problem: Cannot build with older GTK version. +Solution: Use gtk_window_get_size() instead of gdk_window_get_width() and + gdk_window_get_height(). (Ernie Rael, closes #10257) +Files: src/gui_gtk_x11.c + +Patch 8.2.4816 +Problem: Still using older codecov app in some places of CI. +Solution: Use v3.1.0. (closes #10209) +Files: .github/workflows/ci.yml + +Patch 8.2.4817 +Problem: Win32 GUI: modifiers are not always used. +Solution: Handle more modifiers. (closes #10269) +Files: src/gui_w32.c + +Patch 8.2.4818 (after 8.2 4806) +Problem: No test for what 8.2.4806 fixes. +Solution: Add a test. (closes #10272) +Files: src/testdir/test_mapping.vim + +Patch 8.2.4819 +Problem: Unmapping simplified keys also deletes other mapping. +Solution: Only unmap a mapping with m_simplified set. (closes #10270) +Files: src/map.c, src/testdir/test_mapping.vim + +Patch 8.2.4820 +Problem: No simple programmatic way to find a specific mapping. +Solution: Add getmappings(). (Ernie Rael, closes #10273) +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/map.c, src/proto/map.pro, src/testdir/test_maparg.vim + +Patch 8.2.4821 +Problem: Crash when imported autoload script was deleted. +Solution: Initialize local variable. (closes #10274) Give a more meaningful + error message. +Files: src/eval.c, src/vim9script.c, src/testdir/test_vim9_import.vim + +Patch 8.2.4822 +Problem: Setting ufunc to NULL twice. +Solution: Set ufunc to NULL in find_exported(). (closes #19275) +Files: src/eval.c, src/vim9script.c + +Patch 8.2.4823 +Problem: Concatenating more than 2 strings in a :def function is + inefficient. +Solution: Add a count to the CONCAT instruction. (closes #10276) +Files: src/vim9.h, src/vim9cmds.c, src/vim9compile.c, src/vim9execute.c, + src/vim9expr.c, src/vim9instr.c, src/proto/vim9instr.pro, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4824 +Problem: Expression is evaluated multiple times. +Solution: Evaluate expression once and store the result. (closes #10278) +Files: src/map.c + +Patch 8.2.4825 +Problem: Can only get a list of mappings. +Solution: Add the optional {abbr} argument. (Ernie Rael, closes #10277) + Rename to maplist(). Rename test file. +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/map.c, src/proto/map.pro, src/testdir/test_maparg.vim, + src/testdir/test_map_functions.vim, src/testdir/Make_all.mak + +Patch 8.2.4826 +Problem: .cshtml files are not recognized. +Solution: Use html filetype for .cshtml files. (Julien Voisin, closes #10212) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4827 +Problem: Typo in variable name. (Gabriel Dupras) +Solution: Rename the variable. +Files: src/map.c + +Patch 8.2.4828 +Problem: Fix for unmapping simplified key not fully tested. +Solution: Add a test case. (closes #10292) +Files: src/map.c, src/testdir/test_mapping.vim + +Patch 8.2.4829 +Problem: A key may be simplified to NUL. +Solution: Use K_ZERO instead. Use macros instead of hard coded values. + (closes #10290) +Files: src/getchar.c, src/misc2.c, src/testdir/test_termcodes.vim + +Patch 8.2.4830 +Problem: Possible endless loop if there is unused typeahead. +Solution: Only loop when the typeahead changed. +Files: src/channel.c + +Patch 8.2.4831 +Problem: Crash when using maparg() and unmapping simplified keys. +Solution: Do not keep a mapblock pointer. (closes #10294) +Files: src/map.c, src/testdir/test_map_functions.vim + +Patch 8.2.4832 +Problem: Passing zero instead of NULL to a pointer argument. +Solution: Use NULL. (closes #10296) +Files: src/getchar.c, src/term.c + +Patch 8.2.4833 +Problem: Failure of mapping not checked for. +Solution: Check return value of ins_typebuf(). (closes #10299) +Files: src/getchar.c, src/term.c, src/testdir/test_termcodes.vim + +Patch 8.2.4834 +Problem: Vim9: some lines not covered by tests. +Solution: Add a few more tests. Remove dead code. +Files: src/vim9execute.c, src/vim9instr.c, src/vim9.h, + src/testdir/test_vim9_expr.vim + +Patch 8.2.4835 +Problem: Vim9: some lines not covered by tests. +Solution: Add a few more tests. Fix disassemble output. +Files: src/vim9execute.c, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4836 +Problem: Vim9: some lines not covered by tests. +Solution: Remove dead code. Add disassemble tests. +Files: src/vim9execute.c, src/vim9.h, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4837 (after patch 8.2.0919) +Problem: Modifiers not simplified when timed out or using feedkeys() with + 'n" flag. +Solution: Adjust how mapped flag and timeout are used. (closes #10305) +Files: src/getchar.c, src/testdir/test_paste.vim, + src/testdir/test_termcodes.vim + +Patch 8.2.4838 +Problem: Checking for absolute path is not trivial. +Solution: Add isabsolutepath(). (closes #10303) +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/filepath.c, src/proto/filepath.pro, + src/testdir/test_functions.vim + +Patch 8.2.4839 +Problem: Compiler warning for unused argument. +Solution: Add "UNUSED". +Files: src/gui_gtk_x11.c + +Patch 8.2.4840 +Problem: Heredoc expression evaluated even when skipping. +Solution: Don't evaluate when "skip" is set. (closes #10306) +Files: src/evalvars.c, src/testdir/test_let.vim + +Patch 8.2.4841 +Problem: Empty string considered an error for expand() when 'verbose' is + set. (Christian Brabandt) +Solution: Do not give an error for an empty result. (closes #10307) +Files: src/evalfunc.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/filepath.c, src/testdir/test_expand_func.vim + +Patch 8.2.4842 (after 8.2.4841) +Problem: expand("%:p") is not empty when there is no buffer name. +Solution: When ignoring errors still return NULL. (closes #10311) +Files: src/ex_docmd.c, src/testdir/test_expand_func.vim + +Patch 8.2.4843 (after 8.2.4807) +Problem: Win32 GUI: Treating CTRL + ALT as AltGr is not backwards + compatible. (Axel Bender) +Solution: Make a difference between left and right menu keys. + (closes #10308) +Files: src/gui_w32.c + +Patch 8.2.4844 +Problem: <C-S-I> is simplified to <S-Tab>. +Solution: Do not simplify CTRL if there is also SHIFT. (closes #10313) +Files: src/getchar.c, src/testdir/test_gui.vim + +Patch 8.2.4845 +Problem: Duplicate code. +Solution: Move code below if/else. (closes #10314) +Files: src/misc1.c + +Patch 8.2.4846 (after 8.2.4844) +Problem: Termcodes test fails. +Solution: use CTRL-SHIFT-V to insert an unsimplified key. (closes #10316) +Files: runtime/doc/cmdline.txt, src/edit.c, src/getchar.c, + src/testdir/test_gui.vim + +Patch 8.2.4847 +Problem: Crash when using uninitialized function pointer. +Solution: Check for NULL pointer. (closes #10319, closes #10319) +Files: src/eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4848 +Problem: Local completion with mappings and simplification not working. +Solution: Fix local completion <C-N>/<C-P> mappings not ignored if keys are + not simplified. (closes #10323) +Files: src/getchar.c, src/testdir/test_popup.vim + +Patch 8.2.4849 +Problem: Gleam filetype not detected. +Solution: Add a pattern for Gleam files. (Mathias Jean Johansen, + closes #10326) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4850 +Problem: Mksession mixes up "tabpages" and "curdir" arguments. +Solution: Correct logic for storing tabpage in session. (closes #10312) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4851 +Problem: Compiler warning for uninitialized variable. +Solution: Use another variable to decide to restore option values. +Files: src/session.c + +Patch 8.2.4852 +Problem: ANSI color index to RGB value not correct. +Solution: Convert the cterm index to ANSI index. (closes #10321, + closes #9836) +Files: src/term.c + +Patch 8.2.4853 +Problem: CI with FreeBSD is a bit outdated. +Solution: Use 12.3 instead of 12.1. (closes #10333) +Files: .cirrus.yml + +Patch 8.2.4854 +Problem: Array size does not match usage. +Solution: Make array size 3 instead of 4. (Christian Brabandt, closes #10336) +Files: src/term.c + +Patch 8.2.4855 +Problem: Robot files are not recognized. +Solution: Add patterns for robot files. (Zoe Roux, closes #10339) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4856 +Problem: MinGW compiler complains about unknown escape sequence. +Solution: Avoid using a backslash in path. (Christian Brabandt, + closes #10337) +Files: .github/workflows/ci.yml + +Patch 8.2.4857 +Problem: Yaml indent for multiline is wrong. +Solution: Adjust patterns. (closes #10328, closes #8740) +Files: runtime/indent/yaml.vim, runtime/indent/testdir/yaml.in, + runtime/indent/testdir/yaml.ok + +Patch 8.2.4858 +Problem: K_SPECIAL may be escaped twice. +Solution: Avoid double escaping. (closes #10340) +Files: src/highlight.c, src/misc2.c, src/proto/misc2.pro, src/term.c, + src/typval.c, src/testdir/test_eval_stuff.vim, + src/testdir/test_feedkeys.vim, src/testdir/test_functions.vim, + src/testdir/test_mapping.vim + +Patch 8.2.4859 +Problem: wget2 files are not recognized. +Solution: Add patterns to recognize wget2. (Doug Kearns) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.4860 +Problem: MS-Windows: always uses current directory for executables. +Solution: Check the NoDefaultCurrentDirectoryInExePath environment variable. + (Yasuhiro Matsumoto, closes #10341) +Files: runtime/doc/builtin.txt, src/os_win32.c, + src/testdir/test_functions.vim + +Patch 8.2.4861 +Problem: It is not easy to restore saved mappings. +Solution: Make mapset() accept a dict argument. (Ernie Rael, closes #10295) +Files: runtime/doc/builtin.txt, src/errors.h, src/evalfunc.c, src/map.c, + src/typval.c, src/proto/typval.pro, + src/testdir/test_map_functions.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4862 +Problem: Vim9: test may fail when run with valgrind. +Solution: Wait longer for callback if needed. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4863 +Problem: Accessing freed memory in test without the +channel feature. + (Dominique Pell茅) +Solution: Do not generate PUSHCHANNEL or PUSHJOB if they are not + implemented. (closes #10350) +Files: src/vim9instr.c, src/errors.h, src/vim9compile.c, + src/testdir/test_vim9_script.vim + +Patch 8.2.4864 (after 8.2.4863) +Problem: Vim9: script test fails. +Solution: Remove "if" around declaration. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4865 +Problem: :startinsert right after :stopinsert does not work when popup menu + is still visible. +Solution: Use ins_compl_active() instead of pum_visible(). (closes #10352) +Files: src/edit.c, src/testdir/test_ins_complete.vim + +Patch 8.2.4866 +Problem: Duplicate code in "get" functions. +Solution: Use get_var_from() for getwinvar(), gettabvar(), gettabwinvar() + and getbufvar(). (closes #10335) +Files: src/evalvars.c + +Patch 8.2.4867 +Problem: Listing of mapping with K_SPECIAL is wrong. +Solution: Adjust escaping of special characters. (closes #10351) +Files: src/map.c, src/message.c, src/testdir/test_mapping.vim + +Patch 8.2.4868 +Problem: When closing help window autocmds triggered for the wrong window. +Solution: Figure out the new current window earlier. (closes #10348) +Files: src/window.c, src/testdir/test_help.vim + +Patch 8.2.4869 +Problem: Expression in command block does not look after NL. +Solution: Skip over NL to check what follows. (closes #10358) +Files: src/eval.c, src/proto/eval.pro, src/vim9script.c, + src/testdir/test_usercommands.vim + +Patch 8.2.4870 +Problem: Vim9: expression in :substitute is not compiled. +Solution: Use an INSTR instruction if possible. (closes #10334) +Files: src/evalfunc.c, src/regexp.c, src/vim9execute.c, src/vim9expr.c, + src/testdir/test_vim9_builtin.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4871 +Problem: Vim9: in :def function no error for using a range with a command + that does not accept one. +Solution: Check for the command to accept a range. (closes #10330) +Files: src/vim9compile.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4872 +Problem: Vim9: no error for using an expression only at the script level + when followed by an empty line. +Solution: Do not check the line number but whether something follows. + (closes #10357) +Files: src/ex_eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4873 +Problem: Vim9: using "else" differs from using "endif/if !cond". +Solution: Leave the block and enter another one. (closes #10320) +Files: src/ex_eval.c, src/testdir/test_vim9_script.vim + +Patch 8.2.4874 +Problem: Win32 GUI: horizontal scroll wheel not handled properly. +Solution: Also handle WM_MOUSEHWHEEL. (closes #10309) +Files: src/gui_w32.c + +Patch 8.2.4875 +Problem: MS-Windows: some .exe files are not recognized. +Solution: Parse APPEXECLINK junctions. (closes #10302) +Files: src/os_mswin.c, src/proto/os_mswin.pro, src/os_win32.c, + src/os_win32.h, src/testdir/test_functions.vim + +Patch 8.2.4876 +Problem: MS-Windows: Shift-BS results in strange character in powershell. +Solution: Add K_S_BS. (Christian Brabandt, closes #10283, closes #10279) +Files: src/edit.c, src/keymap.h, src/term.c, src/testdir/shared.vim, + src/testdir/test_edit.vim + +Patch 8.2.4877 +Problem: MS-Windows: Using Normal colors for termguicolors causes problems. +Solution: Do not use Normal colors to set sg_gui_fg and sg_gui_bg. + (Christian Brabandt, closes #10317, closes #10241) +Files: src/highlight.c + +Patch 8.2.4878 +Problem: Valgrind warning for using uninitialized variable. +Solution: Initialize the type of newtv. +Files: src/strings.c + +Patch 8.2.4879 +Problem: Screendump test may fail when using valgrind. +Solution: Wait longer for the first screendump. +Files: src/testdir/test_vim9_builtin.vim, src/testdir/screendump.vim + +Patch 8.2.4880 +Problem: Vim9: misplaced elseif causes invalid memory access. +Solution: Check cs_idx not to be negative. +Files: src/ex_eval.c + +Patch 8.2.4881 +Problem: "P" in Visual mode still changes some registers. +Solution: Make "P" in Visual mode not change any register. (Shougo + Matsushita, closes #10349) +Files: runtime/doc/change.txt, runtime/doc/index.txt, + runtime/doc/visual.txt, src/normal.c, src/testdir/test_visual.vim + +Patch 8.2.4882 +Problem: Cannot make 'breakindent' use a specific column. +Solution: Add the "column" entry in 'breakindentopt'. (Christian Brabandt, + closes #10362, closes #10325) +Files: runtime/doc/options.txt, src/indent.c, src/structs.h, + src/testdir/test_breakindent.vim + +Patch 8.2.4883 +Problem: String interpolation only works in heredoc. +Solution: Support interpolated strings. Use syntax for heredoc consistent + with strings, similar to C#. (closes #10327) +Files: runtime/doc/eval.txt, src/errors.h, src/eval.c, src/evalvars.c, + src/proto/evalvars.pro, src/typval.c, src/proto/typval.pro, + src/vim9compile.c, src/proto/vim9compile.pro, src/vim9expr.c, + src/testdir/test_debugger.vim, src/testdir/test_expr.vim, + src/testdir/test_let.vim, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4884 +Problem: Test fails without the job/channel feature. (Dominique Pell茅) +Solution: Add condition. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4885 (after 8.2.4884) +Problem: Test fails with the job/channel feature. +Solution: Move check for job/channel separately. +Files: src/testdir/test_vim9_script.vim + +Patch 8.2.4886 +Problem: Vim9: redir in skipped block seen as assignment. +Solution: Check for valid assignment. +Files: src/ex_docmd.c, src/testdir/test_vim9_assign.vim + +Patch 8.2.4887 +Problem: Channel log does not show invoking a timer callback. +Solution: Add a ch_log() call. +Files: src/time.c + +Patch 8.2.4888 +Problem: Line number of lambda ignores line continuation. +Solution: Use the line number of where the arguments are. Avoid outputting + "..." twice. (closes #10364) +Files: src/userfunc.c + +Patch 8.2.4889 +Problem: CI only tests with FreeBSD 12. +Solution: Also test with FreeBSD 13. (closes #10366) +Files: .cirrus.yml + +Patch 8.2.4890 +Problem: Inconsistent capitalization in error messages. +Solution: Make capitalization consistent. (Doug Kearns) +Files: src/errors.h + +Patch 8.2.4891 +Problem: Vim help presentation could be better. +Solution: Add an imported file for extra Vim help support. Show highlight + names in the color they have. +Files: Filelist, runtime/import/dist/vimhelp.vim + +Patch 8.2.4892 +Problem: Test failures because of changed error messages. +Solution: Adjust the expected error messages. +Files: src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_func.vim, src/testdir/test_vim9_script.vim, + src/testdir/test_expand.vim, src/testdir/test_tcl.vim, + src/testdir/test_vimscript.vim + +Patch 8.2.4893 (after 8.2.4891) +Problem: Distributed import files are not installed. +Solution: Add rules to Makefile and NSIS. +Files: src/Makefile, nsis/gvim.nsi + +Patch 8.2.4894 +Problem: MS-Windows: not using italics. +Solution: Use italics. Simplify the code. (closes #10359) +Files: src/term.c + +Patch 8.2.4895 +Problem: Buffer overflow with invalid command with composing chars. +Solution: Check that the whole character fits in the buffer. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.4896 (after 8.2.4869) +Problem: Expression in command block does not look after NL when command is + typed. +Solution: Skip over NL also when not in a script. (closes #10358) +Files: src/eval.c, src/testdir/test_usercommands.vim + +Patch 8.2.4897 +Problem: Comment inside an expression in lambda ignores the rest of the + expression. +Solution: Truncate the line at the comment. (closes #10367) +Files: src/eval.c, src/testdir/test_lambda.vim + +Patch 8.2.4898 +Problem: Coverity complains about pointer usage. +Solution: Move code for increment/decrement. +Files: src/vim9compile.c + +Patch 8.2.4899 +Problem: With latin1 encoding CTRL-W might go before the start of the + command line. +Solution: Check already being at the start of the command line. +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.4900 +Problem: Vim9 expression test fails without the job feature. +Solution: Add a check for the job feature. (Dominique Pell茅, closes #10373) +Files: src/testdir/test_vim9_expr.vim + +Patch 8.2.4901 +Problem: NULL pointer access when using invalid pattern. +Solution: Check for failed regexp program. +Files: src/buffer.c, src/testdir/test_buffer.vim + +Patch 8.2.4902 +Problem: Mouse wheel scrolling is inconsistent. +Solution: Use the MS-Windows system setting. (closes #10368) +Files: runtime/doc/scroll.txt, src/gui_w32.c, src/mouse.c, + src/proto/mouse.pro, src/testing.c, src/testdir/test_gui.vim + +Patch 8.2.4903 +Problem: Cannot get the current cmdline completion type and position. +Solution: Add getcmdcompltype() and getcmdscreenpos(). (Shougo Matsushita, + closes #10344) +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/cmdexpand.c, + src/proto/cmdexpand.pro, src/evalfunc.c, src/ex_getln.c, + src/proto/ex_getln.pro, src/usercmd.c, src/proto/usercmd.pro, + src/testdir/test_cmdline.vim + +Patch 8.2.4904 +Problem: codecov includes MS-Windows install files. +Solution: Ignore dosinst.c and uninstall.c. +Files: .codecov.yml + +Patch 8.2.4905 +Problem: codecov includes MS-Windows install header file. +Solution: Ignore dosinst.h. +Files: .codecov.yml + +Patch 8.2.4906 +Problem: MS-Windows: cannot use transparent background. +Solution: Make transparent background work with 'termguicolors' and NONE + background color. (Yasuhiro Matsumoto, closes #10310, closes #7162) +Files: runtime/doc/options.txt, src/os_win32.c, src/term.c + +Patch 8.2.4907 +Problem: Some users do not want a line comment always inserted. +Solution: Add the '/' flag to 'formatoptions' to not repeat the comment + leader after a statement when using "o". +Files: runtime/doc/change.txt, src/option.h, src/change.c, + src/testdir/test_textformat.vim + +Patch 8.2.4908 +Problem: No text formatting for // comment after a statement. +Solution: format a comment when the 'c' flag is in 'formatoptions'. +Files: src/textformat.c, src/testdir/test_textformat.vim + +Patch 8.2.4909 +Problem: MODE_ enum entries names are too generic. +Solution: use CH_MODE_. +Files: src/structs.h, src/channel.c, src/job.c, src/terminal.c + +Patch 8.2.4910 +Problem: Imperfect coding. +Solution: Make code nicer. +Files: src/ex_getln.c + +Patch 8.2.4911 +Problem: The mode #defines are not clearly named. +Solution: Prepend MODE_. Renumber them to put the mapped modes first. +Files: src/vim.h, src/autocmd.c, src/buffer.c, src/change.c, + src/charset.c, src/cindent.c, src/clipboard.c, src/debugger.c, + src/digraph.c, src/drawline.c, src/drawscreen.c, src/edit.c, + src/evalfunc.c, src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, + src/fileio.c, src/fold.c, src/getchar.c, src/globals.h, src/gui.c, + src/gui_gtk.c, src/gui_w32.c, src/gui_xim.c, src/indent.c, + src/insexpand.c, src/macros.h, src/main.c, src/map.c, src/menu.c, + src/message.c, src/misc1.c, src/misc2.c, src/mouse.c, + src/netbeans.c, src/normal.c, src/ops.c, src/option.c, + src/os_unix.c, src/os_win32.c, src/popupmenu.c, src/search.c, + src/tag.c, src/screen.c, src/term.c, src/terminal.c, + src/textformat.c, src/window.c + +Patch 8.2.4912 +Problem: Using execute() to define a lambda doesn't work. (Ernie Rael) +Solution: Put the getline function in evalarg. (closes #10375) +Files: src/eval.c, src/evalfunc.c, src/proto/evalfunc.pro, + src/testdir/test_vim9_func.vim + +Patch 8.2.4913 +Problem: Popup_hide() does not always have effect. +Solution: Add the POPF_HIDDEN_FORCE flag. (closes #10376) +Files: src/popupwin.c, src/vim.h, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popup_prop_not_visible_01a.dump, + src/testdir/dumps/Test_popup_prop_not_visible_01b.dump + +Patch 8.2.4914 +Problem: String interpolation in :def function may fail. +Solution: Do not terminate the expression. (closes #10377) +Files: src/vim9compile.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4915 +Problem: Sometimes the cursor is in the wrong position. +Solution: When the cursor moved to another line, recompute w_botline. + (closes #9736) +Files: src/move.c + +Patch 8.2.4916 (after 8.2.4915) +Problem: Mouse in Insert mode test fails. +Solution: Fix the test and check relevant positions. +Files: src/testdir/test_edit.vim + +Patch 8.2.4917 +Problem: Fuzzy expansion of option names is not right. +Solution: Pass the fuzzy flag down the call chain. (Christian Brabandt, + closes #10380, closes #10318) +Files: src/cmdexpand.c, src/option.c, src/proto/option.pro, + src/testdir/test_options.vim + +Patch 8.2.4918 +Problem: Conceal character from matchadd() displayed too many times. +Solution: Check the syntax flag. (closes #10381, closes #7268) +Files: src/drawline.c, src/testdir/test_matchadd_conceal.vim + +Patch 8.2.4919 +Problem: Can add invalid bytes with :spellgood. +Solution: Check for a valid word string. +Files: src/mbyte.c, src/spellfile.c, src/errors.h, + src/testdir/test_spell_utf8.vim + +Patch 8.2.4920 (after 8.2.4902) +Problem: MS-Windows GUI: unused variables. +Solution: Delete the variables. (John Marriott) +Files: src/gui_w32.c + +Patch 8.2.4921 +Problem: Spell test fails because of new illegal byte check. +Solution: Remove the test. +Files: src/testdir/test_spell.vim + +Patch 8.2.4922 (after 8.2.4916) +Problem: Mouse test fails on MS-Windows. +Solution: Set 'mousemodel' to "extend". +Files: src/testdir/test_edit.vim + +Patch 8.2.4923 +Problem: Test checks for terminal feature unnecessarily. +Solution: Remove CheckRunVimInTerminal. (closes #10383) +Files: src/testdir/test_matchadd_conceal.vim + +Patch 8.2.4924 +Problem: maparg() may return a string that cannot be reused. +Solution: use msg_outtrans_special() instead of str2special(). + (closes #10384) +Files: src/message.c, src/option.c, src/testdir/test_map_functions.vim, + src/testdir/test_mapping.vim, src/testdir/test_options.vim + +Patch 8.2.4925 +Problem: Trailing backslash may cause reading past end of line. +Solution: Check for NUL after backslash. +Files: src/textobject.c, src/testdir/test_textobjects.vim + +Patch 8.2.4926 +Problem: #ifdef for crypt feature around too many lines. +Solution: Move code outside of #ifdef. (closes #10388) +Files: src/option.c + +Patch 8.2.4927 +Problem: Return type of remove() incorrect when using three arguments. +Solution: Use first argument type when there are three arguments. + (closes #10387) +Files: src/evalfunc.c, src/testdir/test_vim9_builtin.vim + +Patch 8.2.4928 +Problem: Various white space and cosmetic mistakes. +Solution: Change spaces to tabs, improve comments. +Files: src/bufwrite.c, src/channel.c, src/cindent.c, src/crypt.c, + src/debugger.c, src/digraph.c, src/edit.c, src/evalwindow.c, + src/ex_cmds.c, src/ex_docmd.c, src/ex_getln.c, src/fileio.c, + src/filepath.c, src/gui.c, src/highlight.c, src/indent.c, + src/insexpand.c, src/job.c, src/keymap.h, src/macros.h, + src/menu.c, src/misc1.c, src/misc2.c, src/mouse.c, src/move.c, + src/normal.c, src/ops.c, src/option.c, src/option.h, src/search.c, + src/session.c, src/spellsuggest.c, src/structs.h, src/tag.c, + src/term.c, src/terminal.c, src/textformat.c, src/typval.c, + src/ui.c, src/userfunc.c, src/vim.h, src/vim9.h, + src/vim9compile.c, src/vim9execute.c, src/window.c, + src/testdir/test_cursorline.vim, src/os_unix.c, src/if_lua.c, + src/if_py_both.h, src/os_amiga.c, src/os_win32.c, src/os_mswin.c, + src/os_vms.c, src/os_vms_conf.h + +Patch 8.2.4929 +Problem: Off-by-one error in statusline item. +Solution: Subtrace one less. (closes #10394, closes #5599) +Files: src/buffer.c, src/testdir/test_statusline.vim, + src/testdir/dumps/Test_statusline_hl.dump + +Patch 8.2.4930 +Problem: Interpolated string expression requires escaping. +Solution: Do not require escaping in the expression. +Files: runtime/doc/eval.txt, src/typval.c, src/proto/typval.pro, + src/dict.c, src/eval.c, src/evalvars.c, src/proto/evalvars.pro, + src/vim9compile.c, src/proto/vim9compile.pro, src/vim9expr.c, + src/vim9instr.c, src/alloc.c, src/proto/alloc.pro, + src/testdir/test_expr.vim, src/testdir/test_let.vim + +Patch 8.2.4931 +Problem: Crash with sequence of Perl commands. +Solution: Move PUTBACK to another line. (closes #10386) +Files: src/if_perl.xs + +Patch 8.2.4932 +Problem: Not easy to filter the output of maplist(). +Solution: Add mode_bits to the dictionary. (Ernie Rael, closes #10356) +Files: runtime/doc/builtin.txt, src/map.c, + src/testdir/test_map_functions.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4933 +Problem: A few more capitalization mistakes in error messages. +Solution: Adjust capitalization. (Doug Kearns) +Files: src/errors.h + +Patch 8.2.4934 +Problem: String interpolation fails when not evaluating. +Solution: Skip the expression when not evaluating. (closes #10398) +Files: src/typval.c, src/evalvars.c, src/proto/evalvars.pro, + src/testdir/test_vim9_expr.vim + +Patch 8.2.4935 +Problem: With 'foldmethod' "indent" some lines are not included in the + fold. (Oleg Koshovetc) +Solution: Fix it. (Brandon Simmons, closes #10399, closes #3214) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.4936 +Problem: MS-Windows: mouse coordinates for scroll event are wrong. +Solution: Convert coordinates to the text area coordinates. (closes #10400) +Files: src/gui_w32.c + +Patch 8.2.4937 (after 8.2.4931) +Problem: No test for what 8.2.4931 fixes. +Solution: Add a test that triggers a valgrind error. +Files: src/testdir/test_perl.vim + +Patch 8.2.4938 +Problem: Crash when matching buffer with invalid pattern. +Solution: Check for NULL regprog. +Files: src/buffer.c, src/testdir/test_buffer.vim + +Patch 8.2.4939 +Problem: matchfuzzypos() with "matchseq" does not have all positions. +Solution: Also add a position for white space. (closes #10404) +Files: runtime/doc/builtin.txt, src/search.c, + src/testdir/test_matchfuzzy.vim + +Patch 8.2.4940 +Problem: Some code is never used. +Solution: Remove dead code. Add a few more test cases. +Files: src/vim9expr.c, src/proto/vim9expr.pro, src/vim9compile.c, + src/testdir/test_vim9_builtin.vim, src/testdir/test_vim9_expr.vim + +Patch 8.2.4941 +Problem: '[ and '] marks may be wrong after undo. +Solution: Adjust the '[ and '] marks if needed. (closes #10407, closes #1281) +Files: src/undo.c, src/testdir/test_undo.vim + +Patch 8.2.4942 +Problem: Error when setting 'filetype' in help file again. +Solution: Deal with text property type already existing. (closes #10409) +Files: runtime/import/dist/vimhelp.vim + +Patch 8.2.4943 +Problem: Changing 'switchbuf' may have no effect. +Solution: Handle 'switchbuf' in didset_string_options(). (Sean Dewar, + closes #10406) +Files: src/optionstr.c, src/testdir/test_options.vim + +Patch 8.2.4944 +Problem: Text properties are wrong after "cc". (Axel Forsman) +Solution: Pass the deleted byte count to inserted_bytes(). (closes #10412, + closes #7737, closes #5763) +Files: src/change.c, src/testdir/test_textprop.vim + +Patch 8.2.4945 +Problem: Inconsistent use of white space. +Solution: Use Tabs and Spaces consistently. +Files: src/os_amiga.c, src/if_py_both.h, src/os_win32.c, src/os_mswin.c, + src/os_vms.c, src/os_vms_conf.h + +Patch 8.2.4946 +Problem: Vim9: some code not covered by tests. +Solution: Add a few more test cases. Remove dead code. +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4947 +Problem: Text properties not adjusted when accepting spell suggestion. +Solution: Adjust text properties when text changes. (closes #10414) +Files: src/spell.c, src/spellsuggest.c, src/testdir/test_textprop.vim + +Patch 8.2.4948 +Problem: Cannot use Perl heredoc in nested :def function. (Virginia + Senioria) +Solution: Only concatenate heredoc lines when not in a nested function. + (closes #10415) +Files: src/userfunc.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4949 +Problem: Vim9: some code not covered by tests. +Solution: Add a few more test cases. Fix double error message. +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4950 +Problem: Text properties position wrong after shifting text. +Solution: Adjust the text properties when shifting a block of text. + (closes #10418) +Files: src/ops.c, src/testdir/test_textprop.vim + +Patch 8.2.4951 +Problem: Smart indenting done when not enabled. +Solution: Check option values before setting can_si. (closes #10420) +Files: src/indent.c, src/proto/indent.pro, src/change.c, src/edit.c, + src/ops.c, src/testdir/test_smartindent.vim + +Patch 8.2.4952 +Problem: GUI test will fail if color scheme changes. +Solution: Reduce the test for now. +Files: src/testdir/test_gui.vim + +Patch 8.2.4953 +Problem: With 'smartindent' inserting '}' after completion goes wrong. +Solution: Check the cursor is in indent. (closes #10420) +Files: src/indent.c, src/testdir/test_smartindent.vim + +Patch 8.2.4954 +Problem: Inserting line breaks text property spanning more than one line. +Solution: Check TP_FLAG_CONT_PREV and TP_FLAG_CONT_NEXT. (closes #10423) +Files: src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.4955 +Problem: Text property in wrong position after auto-indent. +Solution: Adjust text property columns. (closes #10422, closes #7719) +Files: src/change.c, src/testdir/test_textprop.vim + +Patch 8.2.4956 +Problem: Reading past end of line with "gf" in Visual block mode. +Solution: Do not include the NUL in the length. +Files: src/normal.c, src/testdir/test_gf.vim + +Patch 8.2.4957 +Problem: Text properties in a wrong position after a block change. +Solution: Adjust the properties columns. (closes #10427) +Files: src/ops.c, src/testdir/test_textprop.vim + +Patch 8.2.4958 +Problem: A couple conditions are always true. +Solution: Remove the conditions. (Goc Dundar, closes #10428) +Files: src/evalfunc.c, src/quickfix.c + +Patch 8.2.4959 +Problem: Using NULL regexp program. +Solution: Check for regexp program becoming NULL in more places. +Files: src/buffer.c, src/testdir/test_buffer.vim + +Patch 8.2.4960 +Problem: Text properties that cross line boundary are not correctly updated + for a deleted line. +Solution: Correct computing location of text property entry. (Paul Ollis, + closes #10431, closes #10430) +Files: src/memline.c, src/testdir/test_textprop.vim + +Patch 8.2.4961 +Problem: Build error with a certain combination of features. +Solution: Adjust #if. (John Marriott) +Files: src/memline.c + +Patch 8.2.4962 +Problem: Files show up in git status. +Solution: Adjust the list of ignored files. Clean up more test files. + (Shane xb Qian, closes #9929) +Files: .gitignore, src/testdir/Makefile + +Patch 8.2.4963 +Problem: Expanding path with "/**" may overrun end of buffer. +Solution: Use vim_snprintf(). +Files: src/filepath.c + +Patch 8.2.4964 +Problem: MS-Windows GUI: mouse event test is flaky. +Solution: Add a short delay after generating a mouse event. +Files: src/testdir/test_gui.vim + +Patch 8.2.4965 +Problem: GUI: testing mouse move event depends on screen cell size. +Solution: Multiply the row and column with the screen cell size. +Files: runtime/doc/testing.txt, src/testing.c, src/testdir/test_gui.vim + +Patch 8.2.4966 +Problem: MS-Windows GUI: mouse event test gets extra event. +Solution: Ignore one move event. +Files: src/testdir/test_gui.vim + +Patch 8.2.4967 (after 8.2.4966) +Problem: MS-Windows GUI: mouse event test sometimes fails. +Solution: Ignore one move event only if there is an extra event. +Files: src/testdir/test_gui.vim + +Patch 8.2.4968 +Problem: Reading past end of the line when C-indenting. +Solution: Check for NUL. +Files: src/cindent.c, src/testdir/test_cindent.vim + +Patch 8.2.4969 +Problem: Changing text in Visual mode may cause invalid memory access. +Solution: Check the Visual position after making a change. +Files: src/change.c, src/edit.c, src/misc2.c, src/proto/misc2.pro, + src/testdir/test_visual.vim + +Patch 8.2.4970 +Problem: "eval 123" gives an error, "eval 'abc'" does not. +Solution: Also give an error when evaluating only a string. (closes #10434) +Files: src/ex_eval.c, src/testdir/test_vim9_cmd.vim + +Patch 8.2.4971 +Problem: Vim9: interpolated string seen as range. +Solution: Recognize an interpolated string at the start of a command line. + (closes #10434) +Files: src/ex_docmd.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4972 +Problem: Vim9: compilation fails when using dict member when skipping. +Solution: Do not generate ISN_USEDICT when skipping. (closes #10433) +Files: src/vim9expr.c, src/testdir/test_vim9_expr.vim + +Patch 8.2.4973 +Problem: Vim9: type error for list unpack mentions argument. +Solution: Mention variable. (close #10435) +Files: src/vim9.h, src/vim9execute.c, src/vim9instr.c, + src/proto/vim9instr.pro, src/vim9compile.c, + src/testdir/test_vim9_script.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4974 +Problem: ":so" command may read after end of buffer. +Solution: Compute length of text properly. +Files: src/scriptfile.c, src/testdir/test_source.vim + +Patch 8.2.4975 +Problem: Recursive command line loop may cause a crash. +Solution: Limit recursion of getcmdline(). +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.4976 +Problem: Coverity complains about not restoring a saved value. +Solution: Restore value before handling error. +Files: src/vim9execute.c + +Patch 8.2.4977 +Problem: Memory access error when substitute expression changes window. +Solution: Disallow changing window in substitute expression. +Files: src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.2.4978 +Problem: No error if engine selection atom is not at the start. +Solution: Give an error. (Christian Brabandt, closes #10439) +Files: runtime/doc/pattern.txt, src/errors.h, src/regexp_bt.c, + src/regexp_nfa.c, src/testdir/test_regexp_latin.vim + +Patch 8.2.4979 +Problem: Accessing freed memory when line is flushed. +Solution: Make a copy of the pattern to search for. +Files: src/window.c, src/testdir/test_tagjump.vim + +Patch 8.2.4980 +Problem: When 'shortmess' contains 'A' loading a session may still warn for + an existing swap file. (Melker 脰sterberg) +Solution: Keep the 'A' flag to 'shortmess' in the session file. + (closes #10443) +Files: src/session.c, src/testdir/test_mksession.vim + +Patch 8.2.4981 +Problem: It is not possible to manipulate autocommands. +Solution: Add functions to add, get and set autocommands. (Yegappan + Lakshmanan, closes #10291) +Files: runtime/doc/autocmd.txt, runtime/doc/builtin.txt, + runtime/doc/usr_41.txt, src/autocmd.c, src/evalfunc.c, + src/proto/autocmd.pro, src/testdir/test_autocmd.vim, + src/testdir/test_vim9_builtin.vim + +Patch 8.2.4982 +Problem: Colors in terminal window are not 100% correct. +Solution: Use g:terminal_ansi_colors as documented. (closes #10429, + closes #7227 closes #10347) +Files: src/job.c, src/option.c, src/proto/term.pro, + src/terminal.c, src/proto/terminal.pro, src/term.c, + src/testdir/test_functions.vim, src/testdir/test_terminal.vim + +Patch 8.2.4983 (after 8.2.4982) +Problem: Colors test fails in the GUI. +Solution: Reset g:terminal_ansi_colors. +Files: src/testdir/test_functions.vim + +Patch 8.2.4984 +Problem: Dragging statusline fails for window with winbar. +Solution: Fix off-by-one error. (closes #10448) +Files: src/mouse.c, src/testdir/test_winbar.vim + +Patch 8.2.4985 +Problem: PVS warns for possible array underrun. +Solution: Add a check for a positive value. (Goc Dundar, closes #10451) +Files: src/spell.c + +Patch 8.2.4986 +Problem: Some github actions are outdated. +Solution: Update CodeQl to v2, update checkout to v3. (closes #10450) +Files: .github/workflows/ci.yml, .github/workflows/codeql-analysis.yml, + .github/workflows/coverity.yml + +Patch 8.2.4987 +Problem: After deletion a small fold may be closable. +Solution: Check for a reverse range. (Brandon Simmons, closes #10457) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.4988 +Problem: Textprop in wrong position when replacing multi-byte chars. +Solution: Adjust textprop position. (closes #10461) +Files: src/change.c, src/testdir/test_textprop.vim + +Patch 8.2.4989 +Problem: Cannot specify a function name for :defcompile. +Solution: Implement a function name argument for :defcompile. +Files: runtime/doc/vim9.txt, src/userfunc.c, src/proto/userfunc.pro, + src/vim9execute.c, src/ex_cmds.h, src/testdir/test_vim9_cmd.vim, + src/testdir/test_vim9_disassemble.vim + +Patch 8.2.4990 (after 8.2.4989) +Problem: Memory leak when :defcompile fails. +Solution: Free fname when returning early. +Files: src/userfunc.c + +Patch 8.2.4991 +Problem: No test for what patch 8.1.0535 fixes. +Solution: Add a test. (closes #10462) +Files: src/testdir/test_fold.vim + +Patch 8.2.4992 (after 8.2.4989) +Problem: Compiler warning for possibly uninitialized variable. (Tony + Mechelynck) +Solution: Initialize variable in the caller instead of in the function. +Files: src/userfunc.c, src/vim9execute.c + +Patch 8.2.4993 +Problem: smart/C/lisp indenting is optional, which makes the code more + complex, while it only reduces the executable size a bit. +Solution: Graduate FEAT_CINDENT, FEAT_SMARTINDENT and FEAT_LISP. +Files: runtime/doc/builtin.txt, runtime/doc/indent.txt, + runtime/doc/options.txt, runtime/doc/various.txt, src/feature.h, + src/buffer.c, src/change.c, src/cindent.c, src/charset.c, + src/edit.c, src/evalfunc.c, src/indent.c, src/insexpand.c, + src/main.c, src/mouse.c, src/ops.c, src/option.c, src/optionstr.c, + src/register.c, src/search.c, src/textformat.c, src/version.c, + src/option.h, src/optiondefs.h, src/structs.h, src/globals.h, + src/testdir/test_edit.vim + +Patch 8.2.4994 +Problem: Tests are using legacy functions. +Solution: Convert a few tests to use :def functions. +Files: src/testdir/test_cindent.vim + +Patch 8.2.4995 (after 8.2.4992) +Problem: Still a compiler warning for possibly uninitialized variable. + (Tony Mechelynck) +Solution: Initialize variables. +Files: src/vim9execute.c + +Patch 8.2.4996 (after 8.2.4969) +Problem: setbufline() may change Visual selection. (Qiming Zhao) +Solution: Disable Visual mode when using another buffer. (closes #10466) +Files: src/evalbuffer.c, src/testdir/test_bufline.vim + +Patch 8.2.4997 +Problem: Python: changing hidden buffer can cause the display to be messed + up. +Solution: Do not mark changed lines when using another buffer. (Paul Ollis, + closes #10437, closes #7972) +Files: src/if_py_both.h, src/testdir/test_python3.vim + +Patch 8.2.4998 +Problem: Vim9: crash when using multiple funcref(). +Solution: Check if varargs type is NULL. (closes #10467) +Files: src/vim9type.c, src/testdir/test_vim9_func.vim + +Patch 8.2.4999 +Problem: Filetype test table is not properly sorted. +Solution: Sort by filetype. (Doug Kearns) +Files: src/testdir/test_filetype.vim + +Patch 8.2.5000 +Problem: No patch for documentation updates. +Solution: Update documentation files. +Files: runtime/doc/arabic.txt, runtime/doc/autocmd.txt, + runtime/doc/builtin.txt, runtime/doc/change.txt, + runtime/doc/channel.txt, runtime/doc/cmdline.txt, + runtime/doc/diff.txt, runtime/doc/digraph.txt, + runtime/doc/editing.txt, runtime/doc/eval.txt, + runtime/doc/filetype.txt, runtime/doc/fold.txt, + runtime/doc/ft_ada.txt, runtime/doc/ft_ps1.txt, + runtime/doc/ft_raku.txt, runtime/doc/ft_rust.txt, + runtime/doc/ft_sql.txt, runtime/doc/gui.txt, + runtime/doc/gui_w32.txt, runtime/doc/helphelp.txt, + runtime/doc/help.txt, runtime/doc/if_cscop.txt, + runtime/doc/if_lua.txt, runtime/doc/if_perl.txt, + runtime/doc/if_pyth.txt, runtime/doc/if_tcl.txt, + runtime/doc/indent.txt, runtime/doc/index.txt, + runtime/doc/insert.txt, runtime/doc/intro.txt, + runtime/doc/map.txt, runtime/doc/mbyte.txt, + runtime/doc/message.txt, runtime/doc/motion.txt, + runtime/doc/netbeans.txt, runtime/doc/options.txt, + runtime/doc/os_dos.txt, runtime/doc/os_vms.txt, + runtime/doc/os_win32.txt, runtime/doc/pattern.txt, + runtime/doc/pi_netrw.txt, runtime/doc/pi_zip.txt, + runtime/doc/popup.txt, runtime/doc/print.txt, + runtime/doc/quickfix.txt, runtime/doc/quickref.txt, + runtime/doc/remote.txt, runtime/doc/repeat.txt, + runtime/doc/rileft.txt, runtime/doc/scroll.txt, + runtime/doc/sign.txt, runtime/doc/spell.txt, + runtime/doc/sponsor.txt, runtime/doc/starting.txt, + runtime/doc/syntax.txt, runtime/doc/tabpage.txt, + runtime/doc/tagsrch.txt, runtime/doc/terminal.txt, + runtime/doc/term.txt, runtime/doc/testing.txt, + runtime/doc/textprop.txt, runtime/doc/tips.txt, + runtime/doc/todo.txt, runtime/doc/uganda.txt, + runtime/doc/undo.txt, runtime/doc/usr_02.txt, + runtime/doc/usr_04.txt, runtime/doc/usr_05.txt, + runtime/doc/usr_06.txt, runtime/doc/usr_08.txt, + runtime/doc/usr_09.txt, runtime/doc/usr_12.txt, + runtime/doc/usr_20.txt, runtime/doc/usr_29.txt, + runtime/doc/usr_40.txt, runtime/doc/usr_41.txt, + runtime/doc/usr_45.txt, runtime/doc/usr_46.txt, + runtime/doc/usr_50.txt, runtime/doc/usr_51.txt, + runtime/doc/usr_52.txt, runtime/doc/usr_90.txt, + runtime/doc/usr_toc.txt, runtime/doc/various.txt, + runtime/doc/version5.txt, runtime/doc/version6.txt, + runtime/doc/version7.txt, runtime/doc/version8.txt, + runtime/doc/version9.txt, runtime/doc/vi_diff.txt, + runtime/doc/vim9.txt, runtime/doc/visual.txt, + runtime/doc/windows.txt, runtime/doc/tags, runtime/doc/Makefile + +Patch 8.2.5001 +Problem: Checking translations affects the search pattern history. +Solution: Use "keeppatterns". (Doug Kearns) +Files: src/po/check.vim + +Patch 8.2.5002 +Problem: deletebufline() may change Visual selection. +Solution: Disable Visual mode when using another buffer. (closes #10469) +Files: src/evalbuffer.c, src/testdir/test_bufline.vim + +Patch 8.2.5003 +Problem: Cannot do bitwise shifts. +Solution: Add the >> and << operators. (Yegappan Lakshmanan, closes #8457) +Files: runtime/doc/eval.txt, src/errors.h, src/eval.c, src/structs.h, + src/vim.h, src/vim9execute.c, src/vim9expr.c, + src/testdir/test_expr.vim, src/testdir/test_vim9_disassemble.vim, + src/testdir/test_vim9_expr.vim + +Patch 8.2.5004 +Problem: Right shift on negative number does not work as documented. +Solution: Use a uvarnumber_T type cast. +Files: runtime/doc/eval.txt, src/eval.c, src/vim9expr.c, + src/vim9execute.c, src/charset.c, src/testdir/test_expr.vim + +Patch 8.2.5005 (after 8.2.5003) +Problem: Compiler warning for uninitialized variable. (John Marriott) +Solution: Initialize the pointer to NULL. +Files: src/vim9expr.vim + +Patch 8.2.5006 (after 8.2.5003) +Problem: Asan warns for undefined behavior. +Solution: Cast the shifted value to unsigned. +Files: src/eval.c, src/vim9expr.c, src/vim9execute.c + +Patch 8.2.5007 +Problem: Spell suggestion may use uninitialized memory. (Zdenek Dohnal) +Solution: Avoid going over the end of the word. +Files: src/spellsuggest.c, src/testdir/test_spell_utf8.vim + +Patch 8.2.5008 +Problem: When 'formatoptions' contains "/" wrongly wrapping a long trailing + comment. +Solution: Pass the OPENLINE_FORMAT flag. +Files: src/change.c, src/vim.h, src/textformat.c, + src/testdir/test_textformat.vim + +Patch 8.2.5009 +Problem: Fold may not be closable after appending. +Solution: Set the fd_small flag to MAYBE. (Brandon Simmons, closes #10471) +Files: src/fold.c, src/testdir/test_fold.vim + +Patch 8.2.5010 +Problem: The terminal debugger uses various global variables. +Solution: Add a dictionary to hold the terminal debugger preferences. +Files: runtime/doc/terminal.txt, + runtime/pack/dist/opt/termdebug/plugin/termdebug.vim + +Patch 8.2.5011 +Problem: Replacing an autocommand requires several lines. +Solution: Add the "replace" flag to autocmd_add(). (Yegappan Lakshmanan, + closes #10473) +Files: runtime/doc/autocmd.txt, runtime/doc/builtin.txt, src/autocmd.c, + src/testdir/test_autocmd.vim + +Patch 8.2.5012 +Problem: Cannot select one character inside (). +Solution: Do not try to extend the area if it is empty. (closes #10472, + closes #6616) +Files: src/textobject.c, src/testdir/test_textobjects.vim + +Patch 8.2.5013 +Problem: After text formatting the cursor may be in an invalid position. +Solution: Correct the cursor position after formatting. +Files: src/textformat.c, src/testdir/test_textformat.vim + +Patch 8.2.5014 +Problem: Byte offsets are wrong when using text properties. +Solution: Make sure text properties do not affect the byte counts. + (Paul Ollis, closes #10474) +Files: src/memline.c, src/textprop.c, src/testdir/test_textprop.vim + +Patch 8.2.5015 +Problem: Hoon and Moonscript files are not recognized. +Solution: Add filetype patterns. (Goc Dundar, closes #10478) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.5016 +Problem: Access before start of text with a put command. +Solution: Check the length is more than zero. +Files: src/register.c, src/testdir/test_put.vim + +Patch 8.2.5017 +Problem: Gcc 12.1 warns for uninitialized variable. +Solution: Initialize the variable. (closes #10476) +Files: src/evalvars.c + +Patch 8.2.5018 +Problem: Vim9: some code is not covered by tests. +Solution: Delete dead code. +Files: src/vim9instr.c, src/proto/vim9instr.pro, src/vim9compile.c, + src/vim9expr.c, + +Patch 8.2.5019 +Problem: Cannot get the first screen column of a character. +Solution: Let virtcol() optionally return a list. (closes #10482, + closes #7964) +Files: runtime/doc/builtin.txt, src/evalfunc.c, + src/testdir/test_functions.vim, src/testdir/test_vim9_builtin.vim + +Patch 8.2.5020 +Problem: Using 'imstatusfunc' and 'imactivatefunc' breaks 'foldopen'. +Solution: Save and restore the KeyTyped flag. (closes #10479) +Files: src/gui_xim.c, src/testdir/test_iminsert.vim + + +Patch 8.2.5021 +Problem: Build fails with normal features and +terminal. (Dominique Pell茅) +Solution: Add #ifdefs. (closes #10484) +Files: src/terminal.c + +Patch 8.2.5022 +Problem: 'completefunc'/'omnifunc' error does not end completion. +Solution: Check if there was an error or exception. (closes #10486, + closes #4218) +Files: src/insexpand.c, src/testdir/test_ins_complete.vim + +Patch 8.2.5023 +Problem: Substitute overwrites allocated buffer. +Solution: Disallow undo when in a substitute command. +Files: src/normal.c, src/undo.c, src/testdir/test_substitute.vim + +Patch 8.2.5024 +Problem: Using freed memory with "]d". +Solution: Copy the pattern before searching. +Files: src/normal.c, src/testdir/test_tagjump.vim + +Patch 8.2.5025 +Problem: Vim9: a few lines not covered by tests. +Solution: Add a few tests. +Files: src/vim9script.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_import.vim + +Patch 8.2.5026 +Problem: Vim9: a few lines not covered by tests. +Solution: Delete dead code. Add a few test cases. make "12->func()" work. +Files: src/vim9type.c, src/ex_docmd.c, src/proto/ex_docmd.pro, + src/vim9compile.c, src/testdir/test_vim9_assign.vim, + src/testdir/test_vim9_func.vim + +Patch 8.2.5027 +Problem: Error for missing :endif when an exception was thrown. (Dani + Dickstein) +Solution: Do not give an error when aborting. (closes #10490) +Files: src/ex_docmd.c, src/testdir/test_trycatch.vim + +Patch 8.2.5028 +Problem: Syntax regexp matching can be slow. +Solution: Adjust the counters for checking the timeout to check about once + per msec. (closes #10487, closes #2712) +Files: src/regexp_bt.c, src/regexp_nfa.c + +Patch 8.2.5029 +Problem: "textlock" is always zero. +Solution: Remove "textlock" and rename "textwinlock" to "textlock". + (closes #10489) +Files: runtime/doc/insert.txt, runtime/doc/tags, src/beval.c, + src/change.c, src/edit.c, src/errors.h, src/eval.c, src/ex_cmds.c, + src/ex_getln.c, src/proto/ex_getln.pro, src/globals.h, + src/indent.c, src/insexpand.c, src/map.c, src/register.c, + src/undo.c, src/window.c, src/testdir/test_edit.vim, + src/testdir/test_ins_complete.vim, src/testdir/test_popup.vim, + src/testdir/test_quickfix.vim + +Patch 8.2.5030 +Problem: autocmd_add() can only handle one event and pattern. +Solution: Support a list of events and patterns. (Yegappan Lakshmanan, + closes #10483) +Files: runtime/doc/builtin.txt, src/autocmd.c, src/errors.h, + src/testdir/test_autocmd.vim + +Patch 8.2.5031 +Problem: Cannot easily run the benchmarks. +Solution: Have "make benchmark" in the src directory work. +Files: src/Makefile, src/testdir/Makefile + +Patch 8.2.5032 +Problem: Python 3 test fails without the GUI. +Solution: Check the balloon_eval feature is available. +Files: src/testdir/test_python3.vim + +Patch 8.2.5033 (after 8.2.5030) +Problem: Build error with +eval but without +quickfix. Warning for + uninitialized variable. +Solution: Adjust #ifdefs. (John Marriott) +Files: src/errors.h, src/autocmd.c + +Patch 8.2.5034 +Problem: There is no way to get the byte index from a virtual column. +Solution: Add virtcol2col(). (Yegappan Lakshmanan, closes #10477, + closes #10098) +Files: runtime/doc/builtin.txt, runtime/doc/usr_41.txt, src/evalfunc.c, + src/move.c, src/proto/move.pro, src/testdir/test_cursor_func.vim + +Patch 8.2.5035 +Problem: When splitting a window the changelist position moves. +Solution: Set the changelist index a bit later. (closes #10493) +Files: src/window.c, src/testdir/test_changelist.vim, + src/testdir/test_normal.vim + +Patch 8.2.5036 (after 8.2.5028) +Problem: Using two counters for timeout check in NFA engine. +Solution: Use only one counter. Tune the counts based on guessing. +Files: src/regexp_nfa.c + +Patch 8.2.5037 +Problem: Cursor position may be invalid after "0;" range. +Solution: Check the cursor position when it was set by ";" in the range. +Files: src/ex_docmd.c, src/testdir/test_excmd.vim + +Patch 8.2.5038 +Problem: A finished terminal in a popup window does not show a scrollbar. +Solution: Show the scrollbar if the terminal job is finished. (closes + #10497) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_poptermscroll_1.dump, + src/testdir/dumps/Test_popupwin_poptermscroll_2.dump, + src/testdir/dumps/Test_popupwin_poptermscroll_3.dump + +Patch 8.2.5039 +Problem: Confusing error if first argument of popup_create() is wrong. +Solution: Give a more informative error. +Files: src/popupwin.c, src/testdir/test_popupwin.vim, src/errors.h, + src/testdir/dumps/Test_popup_settext_07.dump + +Patch 8.2.5040 +Problem: Scrollbar thumb in scrolled popup not visible. +Solution: Show at least one thumb character. (fixes 10492) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_13.dump + +Patch 8.2.5041 +Problem: Cannot close a terminal popup with "NONE" job. +Solution: Adjust the conditions for whether a job is running. + (closes #10498) +Files: src/buffer.c, src/terminal.c, src/proto/terminal.pro, + src/undo.c, src/testdir/test_popupwin.vim + +Patch 8.2.5042 +Problem: Scrollbar thumb in tall scrolled popup not visible. +Solution: Show at least one thumb character. (fixes 10492) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_scroll_13.dump + +Patch 8.2.5043 +Problem: Can open a cmdline window from a substitute expression. +Solution: Disallow opening a command line window when text or buffer is + locked. +Files: src/buffer.c, src/ex_getln.c, src/proto/ex_getln.pro, + src/window.c, src/testdir/test_substitute.vim + +Patch 8.2.5044 (after 8.2.5043) +Problem: Command line test fails. +Solution: Also beep when cmdline win can't be opened because of locks. + Make the test not beep. Make the test pass on MS-Windows. +Files: src/ex_getln.c, src/testdir/test_substitute.vim + +Patch 8.2.5045 +Problem: Can escape a terminal popup window when the job is finished. +Solution: Only check for a finished job where it is relevant. + (closes #10253) +Files: src/popupwin.c, src/testdir/test_popupwin.vim, + src/testdir/dumps/Test_popupwin_poptermscroll_1.dump, + src/testdir/dumps/Test_popupwin_poptermscroll_2.dump, + src/testdir/dumps/Test_popupwin_poptermscroll_3.dump, + src/testdir/dumps/Test_popupwin_poptermscroll_4.dump + +Patch 8.2.5046 +Problem: vim_regsub() can overwrite the destination. +Solution: Pass the destination length, give an error when it doesn't fit. +Files: src/regexp.h, src/regexp.c, src/proto/regexp.pro, src/eval.c, + src/ex_cmds.c + +Patch 8.2.5047 +Problem: CurSearch highlight is often wrong. +Solution: Remember the last highlighted position and redraw when needed. +Files: src/globals.h, src/match.c, src/drawscreen.c, src/change.c, + src/testdir/test_search.vim, + src/testdir/dumps/Test_hlsearch_cursearch_changed_1.dump + +Patch 8.2.5048 +Problem: When using XIM the gui test may fail. +Solution: Only use --not-a-term when not using XIM. +Files: src/testdir/test_gui.vim + +Patch 8.2.5049 +Problem: Insufficient tests for autocommands. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #10507) +Files: src/autocmd.c, src/testdir/gen_opt_test.vim, + src/testdir/test_autocmd.vim, src/testdir/test_cmdline.vim + +Patch 8.2.5050 +Problem: Using freed memory when searching for pattern in path. +Solution: Make a copy of the line. +Files: src/search.c, src/testdir/test_tagjump.vim + +Patch 8.2.5051 +Problem: Check for autocmd_add() event argument is confusing. +Solution: Make the code more straightforward. +Files: src/autocmd.c + +Patch 8.2.5052 +Problem: CI checkout step title is a bit cryptic. +Solution: Add a better title. (closes #10509) +Files: .github/workflows/ci.yml, .github/workflows/coverity.yml, + .github/workflows/codeql-analysis.yml + +Patch 8.2.5053 +Problem: Cannot have a comment halfway an expression in an autocmd command + block. +Solution: When skipping over the NL also skip over comments. (closes #10519) +Files: src/eval.c, src/testdir/test_autocmd.vim + +Patch 8.2.5054 +Problem: No good filetype for conf files similar to dosini. +Solution: Add the confini filetype. (closes #10518) +Files: runtime/filetype.vim, src/testdir/test_filetype.vim + +Patch 8.2.5055 +Problem: Statusline is not updated when terminal title changes. +Solution: Redraw the status line when the title changes. (issue #10425) +Files: src/terminal.c + +Patch 8.2.5056 +Problem: The channel log only contains some of the raw terminal output. +Solution: Add the "o" flag to log all terminal output. Use it for "--log". +Files: runtime/doc/channel.txt, runtime/doc/starting.txt, src/main.c, + src/channel.c, src/vim.h, src/term.c, src/edit.c, src/normal.c, + src/optionstr.c + +Patch 8.2.5057 +Problem: Using gettimeofday() for timeout is very inefficient. +Solution: Set a platform dependent timer. (Paul Ollis, closes #10505) +Files: src/auto/configure, src/config.h.in, src/configure.ac, + src/drawscreen.c, src/errors.h, src/evalfunc.c, src/ex_cmds.c, + src/ex_getln.c, src/match.c, src/os_mac.h, src/os_macosx.m, + src/os_unix.c, src/os_win32.c, src/proto/os_unix.pro, + src/proto/os_win32.pro, src/proto/regexp.pro, src/quickfix.c, + src/regexp.c, src/regexp.h, src/regexp_bt.c, src/regexp_nfa.c, + src/screen.c, src/search.c, src/structs.h, src/syntax.c, + src/testdir/test_hlsearch.vim, src/testdir/test_search.vim, + src/testdir/test_syntax.vim + +Patch 8.2.5058 +Problem: input() does not handle composing characters properly. +Solution: Use mb_cptr2char_adv() instead of mb_ptr2char_adv(). + (closes #10527) +Files: src/getchar.c, src/testdir/test_functions.vim + +Patch 8.2.5059 +Problem: Autoconf 2.71 produces many obsolete warnings. +Solution: Replace obsolete macros with non-obsolete ones, where the + functionality does not change. (issue #10528) +Files: src/configure.ac, src/auto/configure + +Patch 8.2.5060 (after 8.2.5059) +Problem: Running configure fails. +Solution: Remove line break. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.5061 +Problem: C89 requires signal handlers to return void. +Solution: Drop RETSIGTYPE and hard-code a void return value. +Files: src/configure.ac, src/auto/configure, src/if_cscope.c, + src/os_unix.c, src/pty.c, src/os_mac.h, src/os_vms_conf.h, + src/config.h.in, src/osdef1.h.in + +Patch 8.2.5062 +Problem: Coverity warns for dead code. +Solution: Remove the dead code. +Files: src/os_unix.c, src/match.c + +Patch 8.2.5063 +Problem: Error for a command may go over the end of IObuff. +Solution: Truncate the message. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.5064 +Problem: No test for what 8.1.0052 fixes. +Solution: Add a test. (closes #10531) +Files: src/getchar.c, src/testdir/test_mapping.vim + +Patch 8.2.5065 +Problem: Wrong return type for main() in tee.c. +Solution: Use "int" instead of "void". Remove unused variable. +Files: src/tee/tee.c + +Patch 8.2.5066 +Problem: Can specify multispace listchars only for whole line. +Solution: Add "leadmultispace". (Christian Brabandt, closes #10496) +Files: runtime/doc/options.txt, src/drawline.c, src/message.c, + src/screen.c, src/structs.h, src/window.c, + src/testdir/test_listchars.vim + +Patch 8.2.5067 +Problem: Timer_create is not available on every Mac system. (Hisashi T + Fujinaka) +Solution: Adjust #ifdef. +Files: src/os_unix.c + +Patch 8.2.5068 +Problem: Gcc 12.1 warning when building tee. +Solution: Change type to size_t. (John Marriott) +Files: src/tee/tee.c + +Patch 8.2.5069 +Problem: Various warnings from clang on MS-Windows. +Solution: Fix the code to avoid the warnings. (Yegappan Lakshmanan, + closes #10538) +Files: src/dosinst.c, src/fileio.c, src/gui_w32.c, src/os_mswin.c, + src/os_win32.c + +Patch 8.2.5070 +Problem: Unnecessary code. +Solution: Remove code that isn't needed. (closes #10534) +Files: src/message.c, src/screen.c + +Patch 8.2.5071 +Problem: With some Mac OS version clockid_t is redefined. +Solution: Adjust #ifdefs. (Ozaki Kiichi, closes #10549) +Files: src/os_mac.h + +Patch 8.2.5072 +Problem: Using uninitialized value and freed memory in spell command. +Solution: Initialize "attr". Check for empty line early. +Files: src/spell.c, src/testdir/test_spell_utf8.vim + +Patch 8.2.5073 +Problem: Clang on MS-Windows produces warnings. +Solution: Avoid the warnings. (Yegappan Lakshmanan, closes #10546) +Files: src/dosinst.c, src/dosinst.h, src/gui_dwrite.cpp, src/gui_w32.c, + src/iscygpty.c, src/libvterm/src/vterm_internal.h, src/mbyte.c, + src/os_win32.c, src/os_win32.h, src/term.c, src/xdiff/xinclude.h + +Patch 8.2.5074 +Problem: Spell test fails on MS-Windows. +Solution: Do not change 'encoding' +Files: src/testdir/test_spell_utf8.vim + +Patch 8.2.5075 +Problem: Clang gives an out of bounds warning. +Solution: adjust conditional expression (John Marriott) +Files: src/ui.c + +Patch 8.2.5076 +Problem: Unnecessary code. +Solution: Remove code and replace with function call. (closes #10552) +Files: src/drawline.c, src/getchar.c + +Patch 8.2.5077 +Problem: Various warnings from clang on MS-Windows. +Solution: Avoid the warnings. (Yegappan Lakshmanan, closes #10553) +Files: src/dosinst.c, src/dosinst.h, src/filepath.c, src/gui_w32.c, + src/misc1.c, src/os_win32.c + +Patch 8.2.5078 +Problem: Substitute test has a one second delay. +Solution: Use ":silent!". Add another test case. (closes #10558) +Files: src/testdir/test_substitute.vim + +Patch 8.2.5079 +Problem: DirChanged autocommand may use freed memory. (Shane-XB Qian) +Solution: Free the memory later. (closes #10555) +Files: src/ex_docmd.c, src/testdir/test_autocmd.vim + +Patch 8.2.5080 +Problem: When indenting gets out of hand it is hard to stop. +Solution: When line gets too long set got_int. +Files: src/indent.c + +Patch 8.2.5081 +Problem: Autocmd test fails on MS-Windows. +Solution: Set shellslash to get forward slashes. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.5082 (after 8.2.5080) +Problem: Retab test fails. +Solution: Disable the test for now. +Files: src/testdir/test_retab.vim + +Patch 8.2.5083 +Problem: Autocmd test still fails on MS-Windows. +Solution: Change backward to forward slashes. +Files: src/testdir/test_autocmd.vim + +Patch 8.2.5084 +Problem: When the GUI shows a dialog tests get stuck. +Solution: Add the --gui-dialog-file argument. +Files: runtime/doc/starting.txt, src/Make_mvc.mak, src/gui.c, src/main.c, + src/message.c, src/os_mswin.c, src/proto/gui.pro, + src/proto/main.pro, src/structs.h, src/testdir/Make_dos.mak, + src/testdir/Make_ming.mak, src/testdir/Makefile, + src/testdir/runtest.vim, src/testdir/shared.vim + +Patch 8.2.5085 +Problem: Gcc gives warning for signed/unsigned difference. +Solution: Use a different pointer type. (John Marriott) +Files: src/os_mswin.c + +Patch 8.2.5086 +Problem: CI runs on Windows 2019. +Solution: Switch to Windows 2022. (closes #10566) +Files: .github/workflows/ci.yml + +Patch 8.2.5087 +Problem: Cannot build with clang on MS-Windows. +Solution: Add support for building with clang. (Yegappan Lakshmanan, + closes #10557) +Files: src/GvimExt/Make_ming.mak, src/INSTALLpc.txt, + src/Make_cyg_ming.mak + +Patch 8.2.5088 +Problem: Value of cmod_verbose is a bit complicated to use. +Solution: Use zero for not set, value + 1 when set. (closes #10564) +Files: src/ex_docmd.c, src/ex_getln.c, src/globals.h, src/structs.h + +Patch 8.2.5089 +Problem: Some functions return a different value on failure. +Solution: Initialize the return value earlier. (Yegappan Lakshmanan, + closes #10568) +Files: src/autocmd.c, src/dict.c, src/evalfunc.c, src/list.c + +Patch 8.2.5090 +Problem: MS-Windows: vim.def is no longer used. +Solution: Delete vim.def. (Ken Takata, closes #10569) +Files: Filelist, Makefile, src/vim.def + +Patch 8.2.5091 +Problem: Terminal test fails with some shell commands. +Solution: Disable setting the window title. (closes #10530) +Files: src/testdir/test_terminal.vim + +Patch 8.2.5092 +Problem: Using "'<,'>" in Ex mode may compare unrelated pointers. +Solution: Set eap->cmd to "+" only later. +Files: src/ex_docmd.c + +Patch 8.2.5093 +Problem: Error message for unknown command may mention the command twice. + (Malcolm Rowe) +Solution: Add the did_append_cmd flag. (closes #10570) +Files: src/ex_docmd.c + +Patch 8.2.5094 +Problem: MS-Windows GUI: empty command may cause a dialog. +Solution: Delete the dialog file. Improve the message. +Files: src/testdir/runtest.vim, src/testdir/test_ex_mode.vim + +Patch 8.2.5095 +Problem: Terminal test still fails with some shell commands. +Solution: Disable setting the window title in the Vim instance running in a + terminal window. (closes #10530) +Files: src/testdir/test_terminal.vim + +Patch 8.2.5096 (after 8.2.5095) +Problem: Terminal test still fails with some shell commands. +Solution: Add missing "call". (closes #10530) +Files: src/testdir/test_terminal.vim + +Patch 8.2.5097 +Problem: Using uninitialized memory when using 'listchars'. +Solution: Use the length returned by mb_char2bytes(). (closes #10576) +Files: src/message.c + +Patch 8.2.5098 +Problem: Spelldump test sometimes hangs. +Solution: Catch the problem of the spell file not being found to avoid + hanging in the download dialog. +Files: src/testdir/test_spell.vim + +Patch 8.2.5099 +Problem: Some terminal tests are not retried. +Solution: Mark terminal tests as flaky. +Files: src/testdir/test_terminal.vim + +Patch 8.2.5100 +Problem: Memory usage tests are not retried. +Solution: Mark memory usage tests as flaky. +Files: src/testdir/test_memory_usage.vim + +Patch 8.2.5101 +Problem: MS-Windows with MinGW: $CC may be "cc" instead of "gcc". +Solution: Set $CC if it is not matching "clang". (Yegappan Lakshmanan, + closes #10578) +Files: src/INSTALLpc.txt, src/Make_cyg_ming.mak + +Patch 8.2.5102 +Problem: Interrupt not caught in test. +Solution: Consider an exception thrown in the current try/catch when got_int + is set. Also catch early exit when not using try/catch. +Files: src/indent.c, src/testing.c, src/testdir/test_retab.vim, + src/testdir/runtest.vim + +Patch 8.2.5103 +Problem: Build fails with small features. +Solution: Add #ifdef. Skip test on MS-Windows. +Files: src/indent.c, src/testdir/test_retab.vim + +Patch 8.2.5104 (after 8.2.5103) +Problem: Test hangs on MS-Windows. +Solution: Skip another test on MS-Windows. +Files: src/testdir/test_retab.vim + +Patch 8.2.5105 (after 8.2.5104) +Problem: Test still hangs on MS-Windows. +Solution: Skip "nocatch" test the right way. +Files: src/testdir/test_retab.vim + +Patch 8.2.5106 +Problem: Default cmdwin mappings are re-mappable. +Solution: Make the default mappings not re-mappable. (closes #10580) Use + symbols for the first do_map() argument. +Files: src/vim.h, src/ex_getln.c, src/map.c, src/proto/map.pro, + src/digraph.c, src/netbeans.c + +Patch 8.2.5107 +Problem: Some callers of rettv_list_alloc() check for not OK. (Christ van + Willegen) +Solution: Use "==" instead of "!=" when checking the return value. +Files: src/evalbuffer.c, src/channel.c, src/cmdexpand.c, src/evalfunc.c, + src/evalwindow.c, src/insexpand.c, src/job.c, src/list.c, + src/map.c, src/menu.c, src/mouse.c, src/move.c, src/sign.c, + src/textprop.c, src/term.c, src/time.c + +Patch 8.2.5108 +Problem: Retab test disabled because it hangs on MS-Windows. +Solution: Also set got_int at the other place an overlong text is detected. +Files: src/indent.c, src/testdir/test_retab.vim + +Patch 8.2.5109 +Problem: Mode not updated after CTRL-O CTRL-C in Insert mode. +Solution: Set redraw_mode and use it. (closes #10581) +Files: src/main.c, src/normal.c, src/testdir/test_normal.vim, + src/testdir/dumps/Test_mode_updated_1.dump + +Patch 8.2.5110 +Problem: Icon filetype not recognized from the first line. +Solution: Add a check for the first line. (Doug Kearns) +Files: runtime/autoload/dist/script.vim, src/testdir/test_filetype.vim + +Patch 8.2.5111 +Problem: No test for --gui-dialog-file. +Solution: Add a test. +Files: src/testdir/test_gui.vim + +Patch 8.2.5112 (after 8.2.5111) +Problem: Gui test hangs on MS-Windows. +Solution: Use "!start" to start Vim. +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) +Files: src/os_unix.c, src/proto/os_unix.pro, src/gui.c + +Patch 8.2.5114 +Problem: Time limit on searchpair() does not work properly. +Solution: Set the time limit once instead of for each regexp. (closes #10562) +Files: src/search.c, src/evalfunc.c, src/testdir/test_search.vim + +Patch 8.2.5115 +Problem: Search timeout is overrun with some patterns. +Solution: Check for timeout in more places. Make the flag volatile and + atomic. Use assert_inrange() to see what happened. +Files: src/regexp_nfa.c, src/regexp_bt.c, src/regexp.c, src/os_unix.c, + src/proto/os_unix.pro, src/testdir/test_search.vim + +Patch 8.2.5116 +Problem: "limit" option of matchfuzzy() not always respected. +Solution: Remove "else". (Kazuyuki Miyagi, closes #10586) +Files: runtime/doc/builtin.txt, src/search.c, + src/testdir/test_matchfuzzy.vim + +Patch 8.2.5117 +Problem: Crash when calling a Lua callback from a :def function. (Bohdan + Makohin) +Solution: Handle FC_CFUNC in call_user_func_check(). (closes #10587) +Files: src/userfunc.c, src/testdir/test_lua.vim + +Patch 8.2.5118 +Problem: MS-Windows: sending a message to another Vim may hang if that Vim + is halted. +Solution: Add a timeout to serverSendToVim(). (Ken Takata, closes #10585) +Files: runtime/pack/dist/opt/editexisting/plugin/editexisting.vim, + src/os_mswin.c + +Patch 8.2.5119 +Problem: CI uses cache v2. +Solution: Use cache v3. (closes #10588) +Files: .github/workflows/ci.yml + +Patch 8.2.5120 +Problem: Searching for quotes may go over the end of the line. +Solution: Check for running into the NUL. +Files: src/textobject.c + +Patch 8.2.5121 +Problem: Interrupt test sometimes fails. +Solution: Use a different file name. +Files: src/testdir/test_interrupt.vim + +Patch 8.2.5122 +Problem: Lisp indenting my run over the end of the line. +Solution: Check for NUL earlier. +Files: src/indent.c, src/testdir/test_indent.vim + +Patch 8.2.5123 +Problem: Using invalid index when looking for spell suggestions. +Solution: Do not decrement the index when it is zero. +Files: src/spellsuggest.c, src/testdir/test_spell.vim + +Patch 8.2.5124 +Problem: When syntax timeout test fails it does not show the time. +Solution: Use assert_inrange(). +Files: src/testdir/test_syntax.vim + +Patch 8.2.5125 +Problem: MS-Windows: warnings from MinGW compiler. +Solution: Use "volatile". (Yasuhiro Matsumoto, closes #10589) Initialize + variable. +Files: src/os_win32.c, src/proto/os_win32.pro, src/map.c + +Patch 8.2.5126 +Problem: Substitute may overrun destination buffer. +Solution: Disallow switching buffers in a substitute expression. +Files: src/ex_docmd.c, src/testdir/test_substitute.vim + +Patch 8.2.5127 +Problem: Using assert_true() does not show value on failure. +Solution: Use assert_inrange(). (closes #10593) +Files: src/testdir/test_channel.vim, src/testdir/test_hlsearch.vim + +Patch 8.2.5128 +Problem: Syntax highlighting disabled when using synID() in searchpair() + skip expression and it times out. (Jaehwang Jung) +Solution: Add the redrawtime_limit_set flag. (closes #10562) +Files: src/globals.h, src/drawscreen.c, src/syntax.c + +Patch 8.2.5129 +Problem: Timeout handling is not optimal. +Solution: Avoid setting timeout_flag twice. Adjust the pointer when + stopping the regexp timeout. Adjust variable name. +Files: src/os_unix.c, src/os_win32.c, src/regexp.c + +Patch 8.2.5130 +Problem: Edit test for mode message fails when using valgrind. +Solution: Use WaitForAssert(). Run beep test later. +Files: src/testdir/test_edit.vim + +Patch 8.2.5131 +Problem: Timeout implementation is not optimal. +Solution: Further improvements for timeouts. Add a test for searchpair() + timeout. (partly by Paul Ollis) +Files: src/configure.ac, src/auto/configure, + src/testdir/test_hlsearch.vim, src/testdir/test_search.vim + +Patch 8.2.5132 +Problem: :mkview test doesn't test much. +Solution: Save the view with the folds closed. (James McCoy, closes #10596) +Files: src/testdir/test_mksession.vim + +Patch 8.2.5133 +Problem: MacOS: build fails. +Solution: Remove "#if 0" from timer_delete(). +Files: src/os_macosx.m + +Patch 8.2.5134 +Problem: Function has confusing name. +Solution: Rename tgetent_error() to invoke_tgetent(). +Files: src/term.c + +Patch 8.2.5135 +Problem: Running configure gives warnings for main() return type. +Solution: Specify "int" return type. Avoid a few more warnings. +Files: src/configure.ac, src/auto/configure + +Patch 8.2.5136 +Problem: Debugger test fails when run with valgrind. +Solution: Wait longer when using valgrind. +Files: src/testdir/shared.vim, src/testdir/test_debugger.vim, + src/testdir/test_search.vim + +Patch 8.2.5137 +Problem: Cannot build without the +channel feature. (Dominique Pell茅) +Solution: Add #ifdef around ch_log() calls. (closes #10598) +Files: src/os_unix.c, src/regexp_nfa.c, src/regexp_bt.c + +Patch 8.2.5138 +Problem: Various small issues. +Solution: Various small improvements. +Files: src/filepath.c, src/job.c, src/mark.c, src/move.c, + src/popupwin.c, src/testdir/test_filetype.vim + +Patch 8.2.5139 +Problem: TIME_WITH_SYS_TIME is no longer supported by autoconf. +Solution: Always include time.h. +Files: src/os_unix.h + +Patch 8.2.5140 +Problem: Seachpair timeout test is flaky. +Solution: Mark the test as flaky so it is retried. +Files: src/testdir/test_search.vim + +Patch 8.2.5141 +Problem: Using "volatile int" in a signal handler might be wrong. +Solution: Use "volatile sig_atomic_t". +Files: src/os_unix.c, src/proto/os_unix.pro, src/os_win32.c, + src/proto/os_win32.pro, src/regexp.c, + +Patch 8.2.5142 +Problem: Startup test fails if there is a status bar at the top of the + screen. (Ernie Rael) +Solution: Use a larger vertical offset in the test. +Files: src/testdir/test_startup.vim + +Patch 8.2.5143 +Problem: Some tests fail when using valgrind. Spurious leak reports. +Solution: Use WaitForAssert(). Avoid failing fork/exec. Skip tests where a + job is killed when running valgrind. +Files: src/testdir/test_iminsert.vim, src/testdir/test_popup.vim, + src/testdir/test_cscope.vim, src/testdir/test_channel.vim + +Patch 8.2.5144 +Problem: With 'lazyredraw' set completion menu may be displayed wrong. +Solution: When the popup menu is visible do not insert a screen line. + (closes #10601) +Files: src/screen.c + +Patch 8.2.5145 +Problem: Exit test causes spurious valgrind reports. +Solution: Skip test. Add CheckNotValgrind. +Files: src/testdir/test_exit.vim, src/testdir/check.vim, + src/testdir/test_channel.vim + +Patch 8.2.5146 +Problem: Memory leak when substitute expression nests. +Solution: Use an array of expression results. +Files: src/alloc.c, src/regexp.c, src/proto/regexp.pro, + src/errors.h, src/ex_cmds.c, src/testdir/test_substitute.vim + +Patch 8.2.5147 +Problem: Flaky test always fails on retry. +Solution: Delete the created function. +Files: src/testdir/test_search.vim + +Patch 8.2.5148 +Problem: Invalid memory access when using an expression on the command line. +Solution: Make sure the position does not go negative. +Files: src/ex_getln.c, src/testdir/test_cmdline.vim + +Patch 8.2.5149 (after 8.2.5148) +Problem: Cannot build without the +eval feature. (Tony Mechelynck) +Solution: Add #ifdefs. +Files: src/ex_getln.c + +Patch 8.2.5150 +Problem: Read past the end of the first line with ":0;'{". +Solution: When on line zero check the column is valid for line one. +Files: src/ex_docmd.c, src/testdir/test_cmdline.vim + +Patch 8.2.5151 +Problem: Reading beyond the end of the line with lisp indenting. +Solution: Avoid going over the NUL at the end of the line. +Files: src/indent.c, src/testdir/test_lispwords.vim + +Patch 8.2.5152 +Problem: search() gets stuck with "c" and skip evaluates to true. +Solution: Reset the SEARCH_START option. (closes #10608) +Files: src/evalfunc.c, src/testdir/test_syntax.vim + +Patch 8.2.5153 +Problem: "make uninstall" does not remove colors/lists. +Solution: Add a line to the Makefile. (closes #10609) +Files: src/Makefile + +Patch 8.2.5154 +Problem: Still mentioning version8, some cosmetic issues. +Solution: Prefer mentioning version9, cosmetic improvements. +Files: src/version.c, src/if_tcl.c, src/regexp.c, + src/testdir/test_gui.vim, src/os_unix.c, Filelist, src/Makefile + +Patch 8.2.5155 +Problem: In diff mode windows may get out of sync. (Gary Johnson) +Solution: Avoid that the other window scrolls for 'cursorbind'. +Files: src/move.c, src/testdir/test_diffmode.vim, + src/testdir/dumps/Test_diff_scroll_1.dump, + src/testdir/dumps/Test_diff_scroll_2.dump + +Patch 8.2.5156 +Problem: Search timeout test often fails with FreeBSD. +Solution: Double the maximum time. +Files: src/testdir/test_search.vim + +Patch 8.2.5157 +Problem: MS-Windows GUI: CTRL-key combinations do not always work. +Solution: Handle special key combinations better. (closes #10613, + closes #10602, closes #10579) +Files: src/gui_w32.c + +Patch 8.2.5158 +Problem: TSTP and INT signal tests are not run with valgrind. +Solution: Sleep a bit longer. (closes #10614) +Files: src/testdir/test_signals.vim + +Patch 8.2.5159 (after 8.2.5157) +Problem: Fix for CTRL-key combinations causes more problems than it solves. +Solution: Roll back the change. +Files: src/gui_w32.c + +Patch 8.2.5160 +Problem: Accessing invalid memory after changing terminal size. +Solution: Adjust cmdline_row and msg_row to the value of Rows. +Files: src/term.c + +Patch 8.2.5161 +Problem: Might still access invalid memory. +Solution: Add extra check for negative value. +Files: src/message.c + +Patch 8.2.5162 +Problem: Reading before the start of the line with BS in Replace mode. +Solution: Check the cursor column is more than zero. +Files: src/edit.c + +Patch 8.2.5163 +Problem: Crash when deleting buffers in diff mode. +Solution: Recompute diffs later. Skip window without a valid buffer. +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.2.5164 +Problem: Invalid memory access after diff buffer manipulations. +Solution: Use zero offset when change removes all lines in a diff block. +Files: src/diff.c, src/testdir/test_diffmode.vim + +Patch 8.2.5165 +Problem: Import test fails because 'diffexpr' isn't reset. +Solution: Reset 'diffexpr'. +Files: src/testdir/test_vim9_import.vim + +Patch 8.2.5166 +Problem: Test for DiffUpdated fails. +Solution: Also accept a count of two. +Files: src/testdir/test_diffmode.vim + +Patch 8.2.5167 +Problem: get(Fn, 'name') on funcref returns special byte code. +Solution: Use the printable name. +Files: src/evalfunc.c, src/testdir/test_getvar.vim + +Patch 8.2.5168 +Problem: Cannot build with Python 3.11. +Solution: Adjust define for _PyObject_TypeCheck. (Zdenek Dohnal, + closes #10627) +Files: src/if_python3.c + +Patch 8.2.5169 +Problem: Nested :source may use NULL pointer. +Solution: Do not use the NULL pointer. +Files: src/eval.c, src/testdir/test_vimscript.vim + +Patch 8.2.5170 +Problem: Tiny issues. +Solution: Tiny improvements. +Files: src/misc1.c, src/screen.c, src/vim.h + +Patch 8.2.5171 +Problem: Dependencies and proto files are outdated. +Solution: Update dependencies and proto files. Avoid errors. +Files: src/Makefile, src/gui_w32.c, src/os_mswin.c, src/proto/buffer.pro, + src/proto/cmdexpand.pro, src/proto/getchar.pro, + src/proto/help.pro, src/proto/mbyte.pro, src/proto/option.pro, + src/proto/screen.pro, src/proto/syntax.pro, + src/proto/textformat.pro, src/proto/textobject.pro, + src/proto/time.pro, src/proto/gui_x11.pro, src/proto/if_tcl.pro, + src/proto/os_mswin.pro + +Patch 8.2.5172 +Problem: "make menu" still uses legacy script. +Solution: make menu generation script use Vim9 script, fix errors. +Files: runtime/makemenu.vim + + +============================================================================== +VERSION 9.1 *version-9.1* *version9.1* *vim-9.1* + +This section is about improvements made between version 9.0 and 9.1. +The release 9.1 is dedicated to Vim's Benevolent dictator for life +|Bram-Moolenaar|. + +This release has hundreds of bug fixes, there are a few new features and there +are many minor improvements. + +Vim9 classes +------------ +Support for classes and objects in a Vim9 script are added. This is described +in |vim9-class|. The following features are supported: + - Defining classes and instantiating objects + - Multiple constructors + - Class variables and methods + - Object variables and methods + - Public and protected access for variables and methods + - Constant and final object/class variables + - Extending classes (single inheritance) + - Interfaces + - Abstract classes + - Exporting classes + +Support for creating a type alias for an existing type is added. + +Virtual text +------------ +Support for adding |virtual-text| to a buffer is added. This is useful for +language server features (e.g. inlay hints) + +Smooth Scroll +------------- +Support for scrolling text using screen lines instead of file lines is added. +Refer to the 'smoothscroll' option. + +The EditorConfig (|editorconfig-install|) and the JSON formatting +(|ft-json-plugin|) plugins are included. + +OpenVMS x86_64 platform port: http://www.polarhome.com/vim/ + +Other improvements *new-other-9.1* +------------------ +- Support for undercurl (|t_Ce|), double underline (|t_Us|), dotted underline + (|t_ds|) and dashed underline (|t_Ds|) termcap entries and + highlight modes (|highlight-term|). +- The 'fillchars' option is now a global-local option and allows to + specify the character used for the last window line. +- The |:vertical| and |:horizontal| modifiers can be used with ":wincmd =" + command to equalize windows vertically or horizontally. +- |:defer| command to defer the execution of a function till the end of a + function. +- Support for closing a tab page using the middle mouse button. +- Sound support in MacOS. +- The |prop_remove()| function can now remove multiple text properties. +- The |items()| function now supports a List or a String argument. +- The |repeat()| function now supports blob repeat. +- Command line completion support for |:runtime| command. +- Support for custom completion using |getcompletion()|. +- Command-line completion support for option values. +- Support for multiple "%=" items in 'statusline'. +- Support for the PmenuKind, PmenuKindSel, PmenuExtra and PmenuExtraSel + highlight groups. +- Text properties can override 'cursorline' highlight. +- Support for echoing messages in a popup window |:echowindow|. +- Control scroll behavior when splitting windows 'splitkeep'. +- Support for mouse scrolling in the MS-Windows console. +- Support for using different keyboard protocols 'keyprotocol' + (xterm |modifyOtherKeys| and Kitty terminal protocol (CSI u) support). +- Support for UTF-16 string index. +- Quickfix list items can have associated custom user data. +- |reverse()| supports reversing a string. +- 'switchbuf' is used by more commands. +- |undotree()| can be used with any buffer. +- |printf()| supports positional arguments. +- |col()|, |charcol()| and |virtcol()| can be used with different windows. +- Support for Python3 stable ABI (|python-stable|). +- Use |jumplist| like a stack 'jumpoptions'. +- Support for writing extended attributes in Linux (|xattr|). +- 'errorformat' supports parsing a buffer number ("%b"). +- Support for building the python interface using Python 3.12. +- |matchaddpos()| is no longer limited to 8 positions. +- |readblob()| allows to read part of a file. +- 'shortmess' allows to suppress "scanning" messages. +- Add the XChaCha20v2 encryption method 'cryptmethod'. +- Add support for testing syntax files. +- Support "**" for filename expansion with bash using globstar setting. +- Add quadruple prime digraph using 4'. +- Better high dpi support on Windows. +- Various fixes for unsafe memory access, memory leaks, buffer overflows + and potential crashes. +- Termdebug: Support for the variables window (|termdebug_variables_window|), + moving up/down the stack frames (|termdebug-frames|) and setting temporary + breakpoints (|:Tbreak|). +- xxd: support for using colors in the hex dump output (xxd -R). +- xxd: reversing a bit dump (xxd -r). +- xxd: customize the variable name used in the C include output (xxd -n). + +Changed *changed-9.1* +------- +- The features |++builtin_terms|, |+cmdline_info|, |+cmdwin|, |+file_in_path|, + |+float|, |+path_extra|, |+textobjects|, |+wildignore| and |+wildmenu| are + available in all the builds. +- Support for Windows-XP is dropped. +- Support for VisVim is removed. +- The "small" and "big" builds are dropped in favor of "tiny" and "huge" + builds. +- Mention the detected 'keyprotocol' on ":verbose map" when listing mappings. +- The optional Content-Type header is removed from the LSP messages. +- |charidx()| returns the character length when the index is one more than the + last byte index. +- Ctrl-Q works like Ctrl-V in replace mode. +- |popup_filter_menu()| now wraps around. +- |popup_create()| now aborts on an error. +- |g<End>| now jumps to the last non-blank character. +- dot and hyphen are supported in highlight group names. +- |executable()| resolves symlinks on MS-Windows. +- Ruby 1.8 support is dropped. +- 'ttyfast' is always set. +- |virtcol2col()| returns the first byte for a multi-byte character. +- |i_CTRL-O| resets Select Mode. +- |mode()| returns more submodes. +- r with CTRL-C on a visual area replaces using CTRL-C consistently. +- The matchparen plugin no longer uses hard coded match id 3. +- The Statusline no longer uses hard coded values "^" and "=" if the + highlighting groups for the statusline have been cleared. +- 'maxfuncdepth' setting is also used for the maximum callback depth. +- Migrate to autoconf 2.71. +- Start using C99 feature (declare variable in for loops). + +Added *added-9.1* +----- + +Various syntax, indent and other plugins were added. + +Functions: ~ + +|err_teapot()| produce error 418 or 503 +|getbufoneline()| get a single line from the specified buffer +|getcellwidths()| get character cell width overrides +|getmouseshape()| get name of the current mouse shape +|getscriptinfo()| get list of sourced vim scripts +|indexof()| index in a List or Blob of a true expression +|instanceof()| check if a variable is an instance of a given class +|keytrans()| translate internal key codes to be usable with |:map| +|popup_findecho()| get window ID for popup used for |:echowindow| +|setcmdline()| set the current command line +|strutf16len()| number of UTF-16 code units in a string +|swapfilelist()| list of existing swap files in 'directory' +|test_mswin_event()| generate an MS-Windows event for testing +|utf16idx()| UTF-16 index of a byte in a string + + +Autocommands: ~ + +|TextChangedT| after a change was made to the text in Terminal mode +|WinResized| after a window in the current tab page is resized + + +Commands: ~ + +|:abstract| define a Vim9 abstract class +|:class| start of a class specification +|:defer| call function when current function is done +|:echowindow| same as :echomsg, but use a popup window +|:endinterface| end of an interface specification +|:endclass| end of a class specification +|:horizontal| following window command works horizontally +|:interface| start of an interface specification +|:public| prefix for a class or object member +|:static| prefix for a class member or function +|:this| prefix for an object member +|:type| create a type alias + + +Options: ~ + +'endoffile' write CTRL-Z at end of the file +'jumpoptions' specifies how jumping is done +'keyprotocol' what keyboard protocol to use for what terminal +'lispoptions' changes how Lisp indenting is done +'showcmdloc' where to show (partial) command +'smoothscroll' scroll by screen lines when 'wrap' is set +'splitkeep' determines scroll behavior for split windows + +============================================================================== +PATCHES *patches-9.1* *bug-fixes-9.1* + *patches-after-9.0* + +The list of patches that got included since 9.0.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.0.0001 +Problem: Travis CI is no longer used. +Solution: Delete the Travis CI configuration. (Hugo Osvaldo Barrera, + closes #10636) + +Patch 9.0.0002 +Problem: Map functionality outside of map.c. +Solution: Move f_hasmapto() to map.c. Rename a function. (closes #10611) + +Patch 9.0.0003 +Problem: Functions are global while they could be local. +Solution: Add "static". Add a few tests. (Yegappan Lakshmanan, + closes #10612) + +Patch 9.0.0004 +Problem: Plural messages not translated properly. +Solution: Use ngettext() in a few more places. (Matvey Tarasov, + closes #10606) + +Patch 9.0.0005 +Problem: Hare files are not recognized. +Solution: Add a filetype pattern. (Hugo Osvaldo Barrera, closes #10630) + +Patch 9.0.0006 +Problem: Not all Visual Basic files are recognized. +Solution: Change detection of *.cls files. (Doug Kearns) + +Patch 9.0.0007 +Problem: No support for double, dotted and dashed underlines. +Solution: Add the termcap entries and highlight modes. (closes #9553) + +Patch 9.0.0008 +Problem: Cannot specify the variable name for "xxd -i". +Solution: Add the "-name" argument. (David Gow, closes #10599) + +Patch 9.0.0009 +Problem: Going past the end of a menu item with only modifier. +Solution: Check for NUL. + +Patch 9.0.0010 +Problem: Returning 0 for has('patch-9.0.0') is inconsistent. +Solution: Make it return 1. (closes #10640) + +Patch 9.0.0011 +Problem: Reading beyond the end of the line with put command. +Solution: Adjust the end mark position. + +Patch 9.0.0012 +Problem: Signature files not detected properly. +Solution: Add a function to better detect signature files. (Doug Kearns) + +Patch 9.0.0013 +Problem: Reproducing memory access errors can be difficult. +Solution: When testing, copy each line to allocated memory, so that valgrind + can detect accessing memory before and/or after it. Fix uncovered + problems. + +Patch 9.0.0014 +Problem: Missing part of the test override change. +Solution: Add the missing part. + +Patch 9.0.0015 +Problem: With EXITFREE defined terminal menus are not cleared. +Solution: Also clear terminal menus. Remove condition that is always true. + (closes #10641) + +Patch 9.0.0016 +Problem: Comparing line pointer for 'breakindent' is not reliable. +Solution: Make a copy of the line. + +Patch 9.0.0017 +Problem: Accessing memory beyond the end of the line. +Solution: Stop Visual mode when closing a window. + +Patch 9.0.0018 +Problem: Going over the end of the typeahead. +Solution: Put a NUL after the typeahead. + +Patch 9.0.0019 +Problem: Timers test not run where possible. +Solution: Adjust platform checks. (closes #10645) + +Patch 9.0.0020 +Problem: With some completion reading past end of string. +Solution: Check the length of the string. + +Patch 9.0.0021 +Problem: Invalid memory access when adding word with a control character to + the internal spell word list. +Solution: Disallow adding a word with control characters or a trailing + slash. + +Patch 9.0.0022 +Problem: Spell test fails. +Solution: Expect new error is given. + +Patch 9.0.0023 +Problem: On Solaris timer_create() exists but does not work. +Solution: Adjust the configure check to run the test program. + (closes #10647) + +Patch 9.0.0024 +Problem: May access part of typeahead buf that isn't filled. +Solution: Check length of typeahead. + +Patch 9.0.0025 +Problem: Accessing beyond allocated memory when using the cmdline window in + Ex mode. +Solution: Use "*" instead of "'<,'>" for Visual mode. + +Patch 9.0.0026 +Problem: Accessing freed memory with diff put. +Solution: Bail out when diff pointer is no longer valid. + +Patch 9.0.0027 +Problem: The command line test is getting quite big. +Solution: Move command line window tests to a separate file. + +Patch 9.0.0028 +Problem: MS-Windows: tests fail if there is a stray "runtime" directory. +Solution: Only use a "runtime" directory if it contains "defaults.vim". + +Patch 9.0.0029 +Problem: The bitmaps/vim.ico file is not in the distribution. +Solution: Add it back to the distribution. Adjust the build rules to have + it end up in the right place. + +Patch 9.0.0030 +Problem: Matchfuzzy test depends on path of current directory. +Solution: Use fnamemodify() to remove the path. (Robin Becker, + closes #10650) + +Patch 9.0.0031 +Problem: <cmod> of user command does not have correct verbose value. +Solution: Use the value from the command modifier. (closes #10651) + +Patch 9.0.0032 +Problem: In the quickfix window 'cursorline' overrules QuickFixLine + highlighting. +Solution: Combine the attributes. Add a test. (closes #10654) + +Patch 9.0.0033 +Problem: On a Belgian keyboard CTRL-[ does not work. +Solution: Handle GDK_KEY_dead_circumflex. (Anton Sharonov, closes #10658) + +Patch 9.0.0034 +Problem: Spell tests do not always clear the word list. +Solution: Clear the word list in TearDown(). (closes #10659) + +Patch 9.0.0035 +Problem: Spell dump may go beyond end of an array. +Solution: Limit the word length. + +Patch 9.0.0036 +Problem: 'fillchars' cannot have window-local values. +Solution: Make 'fillchars' global-local. (closes #5206) + +Patch 9.0.0037 +Problem: Build error. +Solution: Add missing change. + +Patch 9.0.0038 +Problem: 'listchars' test fails. +Solution: Use window-local value after setting the global value + +Patch 9.0.0039 +Problem: Not all systems have GDK_KEY_dead_circumflex. (Hisashi T Fujinaka) +Solution: Add an #ifdef. + +Patch 9.0.0040 +Problem: Use of set_chars_option() is confusing. +Solution: Add "apply" argument to store the result or not. Merge similar + code. + +Patch 9.0.0041 +Problem: A couple of filetype patterns do not have "*" before "/etc". +Solution: Add the star. (Jonas Strittmatter, closes #10662) + +Patch 9.0.0042 +Problem: Missing change for filetype detection. +Solution: Include change to detect guile from shebang line. + +Patch 9.0.0043 +Problem: Insufficient testing for bracket commands. +Solution: Add a few more tests. (closes #10668) + +Patch 9.0.0044 +Problem: Typos in comments, wrapping lines. +Solution: Adjust comments. Wrap lines. + +Patch 9.0.0045 +Problem: Reading past end of completion with a long line and 'infercase' + set. +Solution: Allocate the string if needed. + +Patch 9.0.0046 +Problem: Reading past end of completion with duplicate match. +Solution: Check string length + +Patch 9.0.0047 +Problem: Using freed memory with recursive substitute. +Solution: Always make a copy for reg_prev_sub. + +Patch 9.0.0048 +Problem: Cursor in wrong column with mouse click after concealed text. +Solution: Store the text column when drawing text. + +Patch 9.0.0049 +Problem: Csv and tsv files are not recognized. +Solution: Add patterns fo csv and tsv files. (Leandro Lourenci, + closes #10680) + +Patch 9.0.0050 +Problem: Split else-of is confusing. +Solution: Join the lines. (closes #10696) + +Patch 9.0.0051 +Problem: Using CTRL-C with :append may hang Vim. +Solution: Reset got_int. (closes #10729, closes #10728) + +Patch 9.0.0052 +Problem: "zG" may throw an error if invalid character follows. +Solution: Pass the word length to valid_spell_word(). (Ken Takata, + closes #10737) + +Patch 9.0.0053 +Problem: E1281 not tested with the old regexp engine. +Solution: Loop over the values of 'regexp'. (Dominique Pell茅, closes #10695) + +Patch 9.0.0054 +Problem: Compiler warning for size_t to int conversion. +Solution: Add type cast. (Mike Williams, closes #10741) + +Patch 9.0.0055 +Problem: Bitbake files are not detected. +Solution: Add bitbake filetype detection by file name and contents. (Gregory + Anders, closes #10697) + +Patch 9.0.0056 +Problem: Wrong line number reported when :cexpr fails in :def function. +Solution: Set line_number before executing :cexpr. (closes #10735) + +Patch 9.0.0057 +Problem: has('patch-xxx') returns true. +Solution: Check for digit. (closes #10751) + +Patch 9.0.0058 +Problem: Win32: cannot test low level events. +Solution: Add "sendevent" to test_gui_event(). (Yegappan Lakshmanan, + closes #10679) + +Patch 9.0.0059 +Problem: Test file has wrong name. +Solution: Rename the file. Various small fixes. (closes #10674) + +Patch 9.0.0060 +Problem: Accessing uninitialized memory when completing long line. +Solution: Terminate string with NUL. + +Patch 9.0.0061 +Problem: ml_get error with nested autocommand. +Solution: Also check line numbers for a nested autocommand. (closes #10761) + +Patch 9.0.0062 +Problem: Compiler warnings for signed/unsigned char. +Solution: Add type casts. (John Marriott) + +Patch 9.0.0063 +Problem: Too many type casts for dict_get functions. +Solution: Change the key argument from "char_u *" to "char *". + +Patch 9.0.0064 +Problem: Confusing error when using "q:" in command line window. +Solution: Check for the situation and give a better error message. + (closes #10756) + +Patch 9.0.0065 +Problem: Cross-compiling doesn't work because of timer_create check. +Solution: Use AC_CACHE_CHECK(). (Richard Purdie, closes #10777) + +Patch 9.0.0066 +Problem: Switching window unnecessarily when getting buffer options. +Solution: Do not switch window when getting buffer options. (closes #10767) + +Patch 9.0.0067 +Problem: Cannot show virtual text. +Solution: Initial changes for virtual text support, using text properties. + +Patch 9.0.0068 +Problem: Build fails with tiny features. +Solution: Add #ifdef. + +Patch 9.0.0069 +Problem: Leaking memory when using text prop with inserted text. +Solution: Clear the growarray with text. + +Patch 9.0.0070 +Problem: Using utfc_ptr2char_len() when length is negative. +Solution: Check value of length. (closes #10760) + +Patch 9.0.0071 +Problem: Command overlaps with printed text in scrollback. +Solution: Clear until end-of-line and use correct message chunk. + (closes #10765, closes #10764) + +Patch 9.0.0072 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. (John Marriott) + +Patch 9.0.0073 +Problem: Too many files recognized as bsdl. +Solution: Use pattern "*.bsd" instead of "*bsd". (Martin Tournoij, + closes #10783) + +Patch 9.0.0074 +Problem: Coverity warns for double free. +Solution: Reset cts_text_prop_count when freeing cts_text_props. + +Patch 9.0.0075 +Problem: Some compilers warn for using an uninitialized variable. (Tony + Mechelynck) +Solution: Initialize the variable. + +Patch 9.0.0076 +Problem: No test for what patch 8.1.1424 fixes. +Solution: Add a test. (closes #10789) + +Patch 9.0.0077 +Problem: When switching window in autocmd the restored cursor position may + be wrong. +Solution: Do not restore the cursor if it was not set. (closes #10775) + +Patch 9.0.0078 +Problem: Star register is changed when deleting and both "unnamed" and + "unnamedplus" are in 'clipboard'. +Solution: Make the use of the star register work as documented. (Ernie Rael, + closes #10669) + +Patch 9.0.0079 +Problem: Error in autoload script not reported for 'foldexpr'. +Solution: Reset "emsg_off" when auto-loading a script. (closes #10685) + +Patch 9.0.0080 +Problem: Compiler warning for size_t to int conversion. +Solution: Add type casts. (Mike Williams, closes #10795) + +Patch 9.0.0081 +Problem: Command line completion of user command may have duplicates. + (Dani Dickstein) +Solution: Skip global user command if an identical buffer-local one is + defined. (closes #10797) + +Patch 9.0.0082 +Problem: Cannot interrupt global command from command line. +Solution: Reset got_int in another place. (closes #10739) + +Patch 9.0.0083 +Problem: ModeChanged event not triggered when leaving the cmdline window. +Solution: Call may_trigger_modechanged(). (closes #10791) + +Patch 9.0.0084 +Problem: Using "terraform" filetype for .tfvars file is bad. +Solution: use "terraform-vars", so that different completion and other + mechanisms can be used. (Radek Simko, closes #10755) + +Patch 9.0.0085 +Problem: ":write" fails after ":file name" and the ":edit". +Solution: Reset BF_NOTEDITED when using ":edit". (closes #10790) + +Patch 9.0.0086 +Problem: Tabline is not redrawn when entering command line. +Solution: Set "redraw_tabline". (closes #10771) + +Patch 9.0.0087 +Problem: MS-Windows: CTRL-[ on Belgian keyboard does not work like Esc. +Solution: Figure out what the key code means. (Anton Sharonov, + closes #10687, closes #10454) + +Patch 9.0.0088 +Problem: Pattern for detecting bitbake files is not sufficient. +Solution: Adjust the pattern. (Gregory Anders, closes #10743) + +Patch 9.0.0089 +Problem: Fuzzy argument completion doesn't work for shell commands. +Solution: Check for cmdidx not being CMD_bang. (Yegappan Lakshmanan, + closes #10769) + +Patch 9.0.0090 +Problem: No error when assigning bool to a string option with setwinvar(). +Solution: Give an error (closes #10766) + +Patch 9.0.0091 +Problem: Duplicate error number. +Solution: Use unique error number. + +Patch 9.0.0092 +Problem: Plugins cannot change v:completed_item. +Solution: Make v:completed_item writeable. (Shougo Matsushita, + closes #10801) + +Patch 9.0.0093 +Problem: Sway config files are recognized as i3config. +Solution: Recognize swayconfig separately. (James Eapen, closes #10672) + +Patch 9.0.0094 +Problem: Cursor restored unexpected with nested autocommand. +Solution: Do not restore the cursor when it was moved intentionally. + (closes #10780) + +Patch 9.0.0095 +Problem: Conditions are always true. +Solution: Remove useless conditions. (closes #10802) + +Patch 9.0.0096 +Problem: Flag "new_value_alloced" is always true. +Solution: Remove "new_value_alloced". (closes #10792) + +Patch 9.0.0097 +Problem: Long quickfix line is truncated for :clist. +Solution: Allocate a buffer if needed. + +Patch 9.0.0098 +Problem: missing include file in timer_create configure check. +Solution: Include stdlib.h. + +Patch 9.0.0099 +Problem: Scrollback can be wrong after redrawing the command line. +Solution: Clear unfinished scrollback when redrawing. (closes #10807) + +Patch 9.0.0100 +Problem: Get hit-enter prompt for system() when '!' is in 'guioptions'. +Solution: Do not call wait_return() when not redrawing. (closes #3327) + +Patch 9.0.0101 +Problem: Invalid memory access in diff mode with "dp" and undo. +Solution: Make sure the line number does not go below one. + +Patch 9.0.0102 +Problem: Reading past end of line with insert mode completion. +Solution: Check text length. + +Patch 9.0.0103 +Problem: If running configure with cached results -lrt may be missing. +Solution: Use two cache variables, one without and one with -lrt. + (closes #10799) Swap checks to avoid adding -lrt unnecessarily. + +Patch 9.0.0104 +Problem: Going beyond allocated memory when evaluating string constant. +Solution: Properly skip over <Key> form. + +Patch 9.0.0105 +Problem: Illegal memory access when pattern starts with illegal byte. +Solution: Do not match a character with an illegal byte. + +Patch 9.0.0106 +Problem: Illegal byte regexp test doesn't fail when fix is reversed. +Solution: Make sure illegal bytes end up in sourced script file. + +Patch 9.0.0107 +Problem: Condition always has the same value. +Solution: Remove the condition. + +Patch 9.0.0108 +Problem: Configure check for timer_create may give wrong error. +Solution: Give a warning instead of an error. + +Patch 9.0.0109 +Problem: Writing over the end of a buffer on stack when making list of + spell suggestions. +Solution: Make sure suggested word is not too long. (closes #10812) + +Patch 9.0.0110 +Problem: Help tag generation picks up words in code examples. +Solution: Skip over examples. (Carlo Teubner, closes #10813) + +Patch 9.0.0111 +Problem: "nocombine" is missing from synIDattr(). +Solution: Add "nocombine". (Muni Tanjim, closes #10816) + +Patch 9.0.0112 +Problem: MS-Windows: test fails because file already exists. +Solution: Wait a little while until the file is gone. + +Patch 9.0.0113 +Problem: has() is not strict about parsing the patch version. +Solution: Check the version more strictly. (Ken Takata, closes #10752) + +Patch 9.0.0114 +Problem: The command line takes up space even when not used. +Solution: Allow for 'cmdheight' to be set to zero. (Shougo Matsushita, + closes #10675, closes #940) + +Patch 9.0.0115 +Problem: When 'cmdheight' is zero pressing ':' may scroll a window. +Solution: Add the made_cmdheight_nonzero flag and set 'scrolloff' to zero. + +Patch 9.0.0116 +Problem: Virtual text not displayed if 'signcolumn' is "yes". +Solution: Set c_extra and c_final to NUL. + +Patch 9.0.0117 +Problem: Text of removed textprop with text is not freed. +Solution: Free the text when the property is removed. Reduce the array size + to ignore NULLs at the end. + +Patch 9.0.0118 +Problem: No test for what patch 9.0.0155 fixes. +Solution: Add a test. Fix typos. (closes #10822) + +Patch 9.0.0119 +Problem: Tiny chance that creating a backup file fails. +Solution: Check for EEXIST error. (Ken Takata, closes #10821) + +Patch 9.0.0120 +Problem: MS-Windows GUI: cannot use AltGr + Space. +Solution: Check for VK_MENU instead of VK_LMENU. (Anton Sharonov, + closes #10820, closes #10753) + +Patch 9.0.0121 +Problem: Cannot put virtual text after or below a line. +Solution: Add "text_align" and "text_wrap" arguments. + +Patch 9.0.0122 +Problem: Breakindent test fails. +Solution: Fix condition. + +Patch 9.0.0123 +Problem: Cannot build with small features. +Solution: Add #ifdef. + +Patch 9.0.0124 +Problem: Code has more indent than needed. +Solution: Use continue and return statements. (closes #10824) + +Patch 9.0.0125 +Problem: Cursor positioned wrong with virtual text after the line. +Solution: Clear cts_with_trailing. + +Patch 9.0.0126 +Problem: Expanding file names fails in directory with more than 255 + entries. +Solution: Use an int instead of char_u to count. (John Drouhard, + closes #10818) + +Patch 9.0.0127 +Problem: Unused variable. +Solution: Remove the variable. (closes #10829) + +Patch 9.0.0128 +Problem: Coverity complains about possible double free. +Solution: Clear the pointer to avoid warnings. + +Patch 9.0.0129 +Problem: Compiler warning for int/size_t usage. +Solution: Add a type cast. (Mike Williams, closes #10830) + +Patch 9.0.0130 +Problem: Cursor position wrong when inserting around virtual text. +Solution: Update the cursor position properly. + +Patch 9.0.0131 +Problem: Virtual text with Tab is not displayed correctly. +Solution: Change any Tab to a space. + +Patch 9.0.0132 +Problem: Multi-byte characters in virtual text not handled correctly. +Solution: Count screen cells instead of bytes. + +Patch 9.0.0133 +Problem: Virtual text after line moves to joined line. (Yegappan + Lakshmanan) +Solution: When joining lines only keep virtual text after the last line. + +Patch 9.0.0134 +Problem: No test for text property with column zero. +Solution: Add a test. Add message to assert for no open popups. + +Patch 9.0.0135 +Problem: Comment about tabpage line above the wrong code. +Solution: Move the comment. (closes #10836) + +Patch 9.0.0136 +Problem: After CTRL-Left-mouse click a mouse scroll also has CTRL. +Solution: Reset orig_mouse_code also for wheel events. (closes #10840) + +Patch 9.0.0137 +Problem: Debugger test may fail when $CWD is very long. +Solution: Skip the test if the directory name is too long. (James McCoy, + closes #10837) + +Patch 9.0.0138 +Problem: Not enough characters accepted for 'spellfile'. +Solution: Add vim_is_fname_char() and use it for 'spellfile'. + +Patch 9.0.0139 +Problem: Truncating virtual text after a line not implemented. + Cursor positioning wrong with Newline in the text. +Solution: Implement truncating. Disallow control characters in the text. + (closes #10842) + +Patch 9.0.0140 +Problem: execute() does not use the "legacy" command modifier. +Solution: pass the command modifier in sticky_cmdmod_flags. (Kota Kato, + closes #10845) + +Patch 9.0.0141 +Problem: "delmenu" does not remove autocommands. Running menu test function + alone fails. +Solution: Delete autocommands Make sure there is at least one menu. + (closes #10848) + +Patch 9.0.0142 +Problem: Crash when adding and removing virtual text. (Ben Jackson) +Solution: Check that the text of the text property still exists. + +Patch 9.0.0143 +Problem: Cursor positioned after virtual text in empty line. +Solution: Keep cursor in the first column. (closes #10786) + +Patch 9.0.0144 +Problem: Text property cannot override 'cursorline' highlight. +Solution: Add the "override" flag to prop_type_add(). (closes #5533, + closes #8225). + +Patch 9.0.0145 +Problem: Substitute that joins lines drops text properties. +Solution: Move text properties of the last line to the new line. + +Patch 9.0.0146 +Problem: Missing part of change for "override" flag. +Solution: Add the missing change. + +Patch 9.0.0147 +Problem: Cursor positioned wrong after two text properties with virtual + text and "below" alignment. (Tim Pope) +Solution: Do not stop after a text property using MAXCOL. (closes #10849) + +Patch 9.0.0148 +Problem: A "below" aligned text property gets 'showbreak' displayed. +Solution: Do not use 'showbreak' before or in virtual text. (issue #10851) + +Patch 9.0.0149 +Problem: Test for fuzzy completion fails sometimes. +Solution: Use a more specific file name to minimize the chance of matching a + random directory name. (closes #10854) + +Patch 9.0.0150 +Problem: Error for using #{ in an expression is a bit confusing. +Solution: Mention that this error is only given for an expression. + Avoid giving the error more than once. (closes #10855) + +Patch 9.0.0151 +Problem: A "below" aligned text property does not work with 'nowrap'. +Solution: Start a new screen line to display the virtual text. + (closes #10851) + +Patch 9.0.0152 +Problem: Warning for unused argument in small build. +Solution: Add "UNUSED". + +Patch 9.0.0153 +Problem: No fold and sign column for virtual text with "below" align and + 'nowrap'. +Solution: Go back to draw state WL_START when moving to the next line. + (closes #10851) + +Patch 9.0.0154 +Problem: Text properties wrong after splitting a line. +Solution: Check for text properties after the line. (closes #10857) + +Patch 9.0.0155 + +Patch 9.0.0156 +Problem: Giving E1170 only in an expression is confusing. +Solution: Give E1170 for any "#{ comment". (closes #10855) + +Patch 9.0.0157 +Problem: 'showbreak' displayed below truncated "after" text prop. +Solution: Suppress 'showbreak' when "after" prop doesn't wrap. + +Patch 9.0.0158 +Problem: With 'nowrap' "below" property not displayed correctly. +Solution: Adjust virtual text with 'nowrap', do not truncate. + +Patch 9.0.0159 +Problem: Cannot build with small features. +Solution: Check for E1170 only with FEAT_EVAL. + +Patch 9.0.0160 +Problem: Some diff mode tests fail. +Solution: Only advance "ptr" when a text property follows. + +Patch 9.0.0161 +Problem: Warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize line_attr_save. + +Patch 9.0.0162 +Problem: Text property "below" gets indent if 'breakindent' is set. (Tim + Pope) +Solution: Do not put indent before text property. (closes #10859) + +Patch 9.0.0163 +Problem: Text property not adjusted for text inserted with "p". +Solution: Adjust column and length of text properties. + +Patch 9.0.0164 +Problem: Using freed memory with put command. +Solution: Get byte offset before replacing the line. + +Patch 9.0.0165 +Problem: Looking up a text property type by ID is slow. +Solution: Keep an array of property types sorted on ID. + +Patch 9.0.0166 +Problem: When using text properties the line text length is computed twice. +Solution: If the text length was already computed don't do it again. + +Patch 9.0.0167 +Problem: Checking for text properties could be a bit more efficient. +Solution: Return early when there are no text properties. Update TODO + items. + +Patch 9.0.0168 +Problem: Cursor positioned wrong with two virtual text properties close + together. (Ben Jackson) +Solution: Add the original size, not the computed one. (closes #10864) + +Patch 9.0.0169 +Problem: Insufficient testing for line2byte() with text properties. +Solution: Add tests with a lot of text. + +Patch 9.0.0170 +Problem: Various minor code formatting issues. +Solution: Improve code formatting. + +Patch 9.0.0171 +Problem: Quickfix line highlight is overruled by 'cursorline'. +Solution: Reverse the combination of attributes. (closes #10654) + +Patch 9.0.0172 +Problem: Trying to allocate zero bytes. +Solution: Do not allocate the proptype array when there are none. + (closes #10867) + +Patch 9.0.0173 +Problem: Assert fails only on MS-Windows. +Solution: Disable the assert for now. + +Patch 9.0.0174 +Problem: No error for using "#{ comment" in a compiled function. +Solution: Make error checking for "#{" consistent. (closes #10855) + +Patch 9.0.0175 +Problem: Spell checking for capital not working with trailing space. +Solution: Do not calculate cap_col at the end of the line. (Christian + Brabandt, closes #10870, issue #10838) + +Patch 9.0.0176 +Problem: Checking character options is duplicated and incomplete. +Solution: Move checking to check_chars_options(). (closes #10863) + +Patch 9.0.0177 +Problem: Cursor position wrong with 'virtualedit' and mouse click after end + of the line. (Hermann Mayer) +Solution: Do not use ScreenCols[] when 'virtualedit' is active. + (closes #10868) + +Patch 9.0.0178 +Problem: Cursor position wrong with virtual text before Tab. +Solution: Use the byte length, not the cell with, to compare the column. + Correct tab size after text prop. (closes #10866) + +Patch 9.0.0179 +Problem: Cursor position wrong with wrapping virtual text in empty line. +Solution: Adjust handling of an empty line. (closes #10875) + +Patch 9.0.0180 +Problem: Stray logfile appears when running tests. +Solution: Remove ch_logfile() calls. + +Patch 9.0.0181 +Problem: Textprop test with line2byte() fails on MS-Windows. +Solution: Fix updating chunks in ml_delete_int(). + +Patch 9.0.0182 +Problem: Quarto files are not recognized. +Solution: Recognize quarto files by the extension. (Jonas Strittmatter, + closes #10880) + +Patch 9.0.0183 +Problem: Extra space after virtual text when 'linebreak' is set. +Solution: Do not count virtual text when getting linebreak value. + (closes #10884) + +Patch 9.0.0184 +Problem: Virtual text prop highlight continues after truncation. +Solution: Recompute the length of attributes. + +Patch 9.0.0185 +Problem: Virtual text does not show if there is a text prop at same + position. (Ben Jackson) +Solution: Fix the sorting of properties. (closes #10879) + +Patch 9.0.0186 +Problem: Virtual text without highlighting does not show. (Ben Jackson) +Solution: Use a text property when it has highlighting or when it has text. + (closes #10878) + +Patch 9.0.0187 +Problem: Command line height changes when maximizing window height. +Solution: Do not change the command line height. (closes #10885) + +Patch 9.0.0188 +Problem: Strange effects when using virtual text with "text_align" and + non-zero column. (Martin Tournoij) +Solution: Give an error. (closes #10888) + +Patch 9.0.0189 +Problem: Invalid memory access for text prop without highlight. +Solution: Check for a valid highlight ID. + +Patch 9.0.0190 +Problem: The way 'cmdheight' can be made zero is inconsistent. +Solution: Only make 'cmdheight' zero when setting it explicitly, not when + resizing windows. (closes #10890) + +Patch 9.0.0191 +Problem: Messages test fails; window size incorrect when 'cmdheight' is + made smaller. +Solution: Properly cleanup after test with cmdheight zero. Resize windows + correctly when 'cmdheight' gets smaller. + +Patch 9.0.0192 +Problem: Possible invalid memory access when 'cmdheight' is zero. (Martin + Tournoij) +Solution: Avoid going over the end of w_lines[] when w_height is Rows. + (closes #10882) + +Patch 9.0.0193 +Problem: Search and match highlight interfere with virtual text highlight. + (Ben Jackson) +Solution: Check for match highlight after text properties. Reset and + restore search highlight when showing virtual text. + (closes #10892) + +Patch 9.0.0194 +Problem: Cursor displayed in wrong position after removing text prop. (Ben + Jackson) +Solution: Invalidate the cursor position. (closes #10898) + +Patch 9.0.0195 +Problem: Metafun files are not recognized. +Solution: Add filetype detection patterns. + +Patch 9.0.0196 +Problem: Finding value in list may require a for loop. +Solution: Add indexof(). (Yegappan Lakshmanan, closes #10903) + +Patch 9.0.0197 +Problem: Astro files are not detected. +Solution: Add a pattern to match Astro files. (Emilia Zapata, closes #10904) + +Patch 9.0.0198 +Problem: ml_get error when switching buffer in Visual mode. +Solution: End Visual mode when switching buffer. (closes #10902) + +Patch 9.0.0199 +Problem: Cursor position wrong with two right-aligned virtual texts. +Solution: Add the padding for right-alignment. (issue #10906) + +Patch 9.0.0200 +Problem: cursor in a wrong position if 'wrap' is off and using two right + aligned text props in one line. +Solution: Count an extra line for a right aligned text property after a + below or right aligned text property. (issue #10909) + +Patch 9.0.0201 +Problem: CursorLine highlight overrules virtual text highlight. +Solution: Let extra attribute overrule line attribute. (closes #10909) + +Patch 9.0.0202 +Problem: Code and help for indexof() is not ideal. +Solution: Refactor the code, improve the help. (Yegappan Lakshmanan, + closes #10908) + +Patch 9.0.0203 +Problem: Confusing variable name. +Solution: Use "prim_aep" instead of "spell_aep". + +Patch 9.0.0204 +Problem: indexof() may leak memory. +Solution: Free allocated values. (Yegappan Lakshmanan, closes #10916) + +Patch 9.0.0205 +Problem: Cursor in wrong position when inserting after virtual text. (Ben + Jackson) +Solution: Put the cursor after the virtual text, where the text will be + inserted. (closes #10914) + +Patch 9.0.0206 +Problem: Redraw flags are not named specifically. +Solution: Prefix "UPD_" to the flags, for UPDate_screen(). + +Patch 9.0.0207 +Problem: Stacktrace not shown when debugging. +Solution: Set msg_scroll in msg_source(). (closes #10917) + +Patch 9.0.0208 +Problem: The override flag has no effect for virtual text. (Ben Jackson) +Solution: Make the override flag work. (closes #10915) + +Patch 9.0.0209 +Problem: Build error with small features. +Solution: Add #ifdef. + +Patch 9.0.0210 +Problem: 'list' mode does not work properly with virtual text. +Solution: Show the "$" at the right position. (closes #10913) + +Patch 9.0.0211 +Problem: Invalid memory access when compiling :lockvar. +Solution: Don't read past the end of the line. + +Patch 9.0.0212 +Problem: Invalid memory access when compiling :unlet. +Solution: Don't read past the end of the line. + +Patch 9.0.0213 +Problem: Using freed memory with error in assert argument. +Solution: Make a copy of the error. + +Patch 9.0.0214 +Problem: Splitting a line may duplicate virtual text. (Ben Jackson) +Solution: Don't duplicate a text property with virtual text. Make + auto-indenting work better. (closes #10919) + +Patch 9.0.0215 +Problem: Not passing APC_INDENT flag. +Solution: Pass the flag where it's needed. + +Patch 9.0.0216 +Problem: Undo earlier test sometimes fails on MS-Windows. +Solution: Use another file name. + +Patch 9.0.0217 +Problem: 'shellslash' works differently when sourcing a script again. +Solution: Use the name from the script item. (closes #10920) + +Patch 9.0.0218 +Problem: Reading before the start of the line. +Solution: When displaying "$" check the column is not negative. + +Patch 9.0.0219 +Problem: Cannot make a funcref with "s:func" in a def function in legacy + script. +Solution: Allow for using a lower case function name after "s:". (Kota Kato, + closes #10926) + +Patch 9.0.0220 +Problem: Invalid memory access with for loop over NULL string. +Solution: Make sure mb_ptr2len() consistently returns zero for NUL. + +Patch 9.0.0221 +Problem: Accessing freed memory if compiling nested function fails. +Solution: Mess up the variable name so that it won't be found. + +Patch 9.0.0222 +Problem: No good reason why text objects are only in larger builds. +Solution: Graduate +textobjects. + +Patch 9.0.0223 +Problem: Typo in diffmode test. +Solution: Fix the typo. (closes #10932) + +Patch 9.0.0224 +Problem: Using NULL pointer when skipping compiled code. +Solution: Check for skipping. + +Patch 9.0.0225 +Problem: Using freed memory with multiple line breaks in expression. +Solution: Free eval_tofree later. + +Patch 9.0.0226 +Problem: job_start() test may fail under valgrind. +Solution: Wait until the job is running. + +Patch 9.0.0227 +Problem: Cannot read error message when abort() is called. +Solution: Output a newline before calling abort(). + +Patch 9.0.0228 +Problem: Crash when pattern looks below the last line. +Solution: Consider invalid lines to be empty. (closes #10938) + +Patch 9.0.0229 +Problem: Vim9: error message for missing type is not clear. +Solution: Mention the context. (issue #10944) + +Patch 9.0.0230 +Problem: No error for comma missing in list in :def function. +Solution: Check for missing comma. (closes #10943) + +Patch 9.0.0231 +Problem: Expanding "**" may loop forever with directory links. +Solution: Check for being interrupted. (closes #10946) + +Patch 9.0.0232 +Problem: Test with BufNewFile autocmd is flaky. +Solution: Use another file name. + +Patch 9.0.0233 +Problem: Removing multiple text properties takes many calls. +Solution: Pass a list to prop_remove(). (Ben Jackson, closes #10945) + +Patch 9.0.0234 +Problem: Cannot make difference between the end of :normal and a character + in its argument. +Solution: Add the "typebuf_was_empty" flag. (closes #10950) + +Patch 9.0.0235 +Problem: 'autoshelldir' does not work with chunked response. +Solution: Collect chunks before parsing OSC 7. (closes #10949) + +Patch 9.0.0236 +Problem: Popup menu not removed when 'wildmenu' reset while it is visible. +Solution: Do not check p_wmnu, only pum_visible(). (closes #10953) + +Patch 9.0.0237 +Problem: Mac: cannot build if dispatch.h is not available. +Solution: Add #ifdef. (Evan Miller, closes #10954) + +Patch 9.0.0238 +Problem: Shift-Tab shows matches on cmdline when 'wildmenu' is off. +Solution: Only show matches when 'wildmode' contains "list". (closes #10951) + +Patch 9.0.0239 +Problem: Build failure without the +wildmenu feature. +Solution: Move parenthesis. + +Patch 9.0.0240 +Problem: Crash when using ":mkspell" with an empty .dic file. +Solution: Check for an empty word tree. + +Patch 9.0.0241 +Problem: "make install" does not install shared syntax file. (James McCoy) +Solution: Install and uninstall the shared syntax files. (closes #10956) + +Patch 9.0.0242 +Problem: "make install" still fails. (Wilhelm Payne) +Solution: Also add the directory to installrtbase. (Dominique Pell茅) + +Patch 9.0.0243 +Problem: Text properties "below" sort differently on MS-Windows. +Solution: Use the ID as a tie breaker. (closes #10958) + +Patch 9.0.0244 +Problem: Cannot easily get the list of sourced scripts. +Solution: Add the getscriptinfo() function. (Yegappan Lakshmanan, + closes #10957) + +Patch 9.0.0245 +Problem: Mechanism to prevent recursive screen updating is incomplete. +Solution: Add "redraw_not_allowed" and set it in build_stl_str_hl(). + (issue #10952) + +Patch 9.0.0246 +Problem: Using freed memory when 'tagfunc' deletes the buffer. +Solution: Make a copy of the tag name. + +Patch 9.0.0247 +Problem: Cannot add padding to virtual text without highlight. +Solution: Add the "text_padding_left" argument. (issue #10906) + +Patch 9.0.0248 +Problem: Duplicate code in finding a script in the execution stack. +Solution: Reduce duplicate code. (closes #10961) + +Patch 9.0.0249 +Problem: No test for what 9.0.0234 fixes. +Solution: Add a test. (issue #10950) + +Patch 9.0.0250 +Problem: Slightly inconsistent error messages. +Solution: Make it "Using a Float". (closes #10959) + +Patch 9.0.0251 +Problem: Test output shows up in git. +Solution: Ignore the "failed" directory. (Yao-Ching Huang, closes #10969) + +Patch 9.0.0252 +Problem: Cursor in wrong place after virtual text. +Solution: Do not change the length of a virtual text property. + (closes #10964) + +Patch 9.0.0253 +Problem: A symlink to an autoload script results in two entries in the list + of scripts, items expected in one are actually in the other. +Solution: Have one script item refer to the actually sourced one. + (closes #10960) + +Patch 9.0.0254 +Problem: Typo in function name. +Solution: Rename the function. (closes #10971) + +Patch 9.0.0255 +Problem: Build failure without the eval feature. +Solution: Add #ifdef. + +Patch 9.0.0256 +Problem: Compiler warning for uninitialized variables. +Solution: Initialize the variables. + +Patch 9.0.0257 +Problem: "->" in ":scriptnames" output not tested yet. +Solution: Add a check. + +Patch 9.0.0258 +Problem: MS-Windows installer skips syntax/shared. +Solution: Use "File /r" in the installer script. (Ken Takata, closes #10972) + +Patch 9.0.0259 +Problem: Crash with mouse click when not initialized. +Solution: Check TabPageIdxs[] is not NULL. + +Patch 9.0.0260 +Problem: Using freed memory when using 'quickfixtextfunc' recursively. +Solution: Do not allow for recursion. + +Patch 9.0.0261 +Problem: bufload() reads a file even if the name is not a file name. (Cyker + Way) +Solution: Do not read the file when the buffer name is not a file name. + (closes #10975) + +Patch 9.0.0262 +Problem: Build failure without the +quickfix feature. +Solution: Add #ifdef. + +Patch 9.0.0263 +Problem: Too many #ifdefs. +Solution: Make some functions always available. + +Patch 9.0.0264 +Problem: CI still runs on Ubuntu 18.04. +Solution: Run CI on Ubuntu 20.04. (closes #10582) + +Patch 9.0.0265 +Problem: No good reason why the "gf" command is not in the tiny version. +Solution: Graduate the file_in_path feature. + +Patch 9.0.0266 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. + +Patch 9.0.0267 +Problem: Coverity workflow still uses Ubuntu 18.04. +Solution: Use Ubuntu 20.04 + +Patch 9.0.0268 +Problem: Build error without the +eval feature. +Solution: Remove #ifdef. + +Patch 9.0.0269 +Problem: getscriptinfo() does not include the version. Cannot select + entries by script name. +Solution: Add the "version" item and the "name" argument. (Yegappan + Lakshmanan, closes #10962) + +Patch 9.0.0270 +Problem: Some values of 'path' and 'tags' do not work in the tiny version. +Solution: Graduate the +path_extra feature. + +Patch 9.0.0271 +Problem: Using INIT() in non-header files. +Solution: Remove INIT(). (closes #10981) + +Patch 9.0.0272 +Problem: BufReadCmd not triggered when loading a "nofile" buffer. (Maxim + Kim) +Solution: Call readfile() but bail out before reading a file. + (closes #10983) + +Patch 9.0.0273 +Problem: Konsole termresponse not recognized. +Solution: Handle Konsole like libvterm, set 'ttymouse' to "sgr". + (closes #10990) + +Patch 9.0.0274 +Problem: Netrw plugin does not show remote files. +Solution: Do read a file when 'buftype' is "acwrite". (closes #10983) + +Patch 9.0.0275 +Problem: BufEnter not triggered when using ":edit" in "nofile" buffer. +Solution: Let readfile() return NOTDONE. (closes #10986) + +Patch 9.0.0276 +Problem: 'buftype' values not sufficiently tested. +Solution: Add and extend tests with 'buftype' values. (closes #10988) + +Patch 9.0.0277 +Problem: Coverity CI: update-alternatives not needed with Ubuntu 20.04. +Solution: Remove update-alternatives for Lua. (closes #10987) + +Patch 9.0.0278 +Problem: The +wildignore feature is nearly always available. +Solution: Graduate +wildignore for consistency. + +Patch 9.0.0279 +Problem: The tiny version has the popup menu but not 'wildmenu'. +Solution: Graduate the wildmenu feature. + +Patch 9.0.0280 +Problem: The builtin termcap list depends on the version. +Solution: Always include all termcap entries. Remove duplicate lines. + +Patch 9.0.0281 +Problem: Build failure without the +eval feature. +Solution: Add #ifdef. + +Patch 9.0.0282 +Problem: A nested timeout stops the previous timeout. +Solution: Ignore any nested timeout. + +Patch 9.0.0283 +Problem: Cannot complete "syn list @cluster". +Solution: Recognize and handle "list @". (Bj枚rn Linse, closes #10990) + +Patch 9.0.0284 +Problem: Using static buffer for multiple completion functions. +Solution: Use one buffer in expand_T. + +Patch 9.0.0285 +Problem: It is not easy to change the command line from a plugin. +Solution: Add setcmdline(). (Shougo Matsushita, closes #10869) + +Patch 9.0.0286 +Problem: Using freed memory when location list changed in autocmd. +Solution: Return QF_ABORT and handle it. (Yegappan Lakshmanan, + closes #10993) + +Patch 9.0.0287 +Problem: Irix systems no longer exist. +Solution: Remove references to Irix. (Yegappan Lakshmanan, closes #10994) + +Patch 9.0.0288 +Problem: When 'cmdheight' is zero some messages are not displayed. +Solution: Use a popup notification window. + +Patch 9.0.0289 +Problem: Invalid memory write. +Solution: Do not put NUL in a static string. + +Patch 9.0.0290 +Problem: Compiler warning for variable set but not used. +Solution: Add #ifdef. + +Patch 9.0.0291 +Problem: Test failing. +Solution: Run test with cmdheight=0 last. + +Patch 9.0.0292 +Problem: Test causes another test to fail. +Solution: Redraw to remove the popup window + +Patch 9.0.0293 +Problem: Messages window not hidden when starting a command line. +Solution: Hide the messages window. (closes #10996) + +Patch 9.0.0294 +Problem: Crash when 'cmdheight' is 0 and popup_clear() used. +Solution: Reset "message_win" when the message popup is cleared. Close the + popup when 'cmdheight' is non-zero. Add a screendump test. + +Patch 9.0.0295 +Problem: GUI drop files test sometimes fails. +Solution: Mark the test as flaky. + +Patch 9.0.0296 +Problem: Message in popup is shortened unnecessary. +Solution: Do not use 'showcmd' and 'ruler' for a message in the popup. + Set the timer when unhiding the message popup. + +Patch 9.0.0297 +Problem: Cursor position wrong after right aligned virtual text. (Iizuka + Masashi) +Solution: Take the width of the column offset into account. (closes #10997) + Also fix virtual text positioning. + +Patch 9.0.0298 +Problem: Compiler warning for size_t to int conversion. +Solution: Add a type cast. (Wilhelm Payne, closes #11000) + +Patch 9.0.0299 +Problem: Error messages for setcmdline() could be better. +Solution: Use more specific error messages. (Yegappan Lakshmanan, + closes #10995) + +Patch 9.0.0300 +Problem: 'cpoptions' tests are flaky. +Solution: Use a different file name for each test. + +Patch 9.0.0301 +Problem: The message window popup is delayed after an error message. +Solution: Do not set emsg_on_display when using the message window. + +Patch 9.0.0302 +Problem: CI for Coverity is bothered by deprecation warnings. +Solution: Ignore deprecation warnings. (closes #11002) + +Patch 9.0.0303 +Problem: It is not easy to get information about a script. +Solution: Make getscriptinfo() return the version. When selecting a specific + script return functions and variables. (Yegappan Lakshmanan, + closes #10991) + +Patch 9.0.0304 +Problem: WinScrolled is not triggered when only skipcol changes. +Solution: Add w_last_skipcol and use it. (closes #10998) + +Patch 9.0.0305 +Problem: CI lists useless deprecation warnings. +Solution: Ignore deprecation warnings. (closes #11003) + +Patch 9.0.0306 +Problem: Buffer write message is two lines in message popup window. +Solution: Overwrite message if "msg_scroll" is off. + +Patch 9.0.0307 +Problem: :echomsg doesn't work properly with cmdheight=0. +Solution: Improve scrolling and displaying. + +Patch 9.0.0308 +Problem: When cmdheight is zero the attention prompt doesn't show. +Solution: Do not use the message window for a prompt. + +Patch 9.0.0309 +Problem: Invalid memory access when cmdheight is zero. +Solution: Check index in w_lines is smaller than Rows. + +Patch 9.0.0310 +Problem: Output of :messages disappears when cmdheight is zero. +Solution: Do not use the messages window for :messages. Make Esc close the + messages window. + +Patch 9.0.0311 +Problem: Test for hit-Enter prompt fails. +Solution: Only reset cmdline_row when 'cmdheight' is zero. + +Patch 9.0.0312 +Problem: Test for cmdheight zero fails. +Solution: Do not close the messages window for CTRL-C. + +Patch 9.0.0313 +Problem: Using common name in tests leads to flaky tests. +Solution: Rename files and directories to be more specific. + +Patch 9.0.0314 +Problem: VDM files are not recognized. +Solution: Add patterns for VDM files. (Alessandro Pezzoni, closes #11004) + +Patch 9.0.0315 +Problem: Shell command is displayed in message window. +Solution: Do not echo the shell command in the message window. + +Patch 9.0.0316 +Problem: Screen flickers when 'cmdheight' is zero. +Solution: Redraw over existing text instead of clearing. + +Patch 9.0.0317 +Problem: When updating the whole screen a popup may not be redrawn. +Solution: Mark the screen and windows for redraw also when not clearing. + Also mark popup windows for redraw. + +Patch 9.0.0318 +Problem: Clearing screen causes flicker. +Solution: Do not clear but redraw in more cases. Add () to "wait_return". + +Patch 9.0.0319 +Problem: Godot shader files are not recognized. +Solution: Add patterns for "gdshader". (Maxim Kim, closes #11006) + +Patch 9.0.0320 +Problem: Command line type of CmdlineChange differs from getcmdtype(). +Solution: Use the same type. (closes #11005) + +Patch 9.0.0321 +Problem: Cannot use the message popup window directly. +Solution: Add ":echowindow". + +Patch 9.0.0322 +Problem: Crash when no errors and 'quickfixtextfunc' is set. +Solution: Do not handle errors if there aren't any. + +Patch 9.0.0323 +Problem: Using common name in tests leads to flaky tests. +Solution: Rename files and directories to be more specific. + +Patch 9.0.0324 +Problem: MS-Windows: resolve() test fails. +Solution: Revert renaming the directory. + +Patch 9.0.0325 +Problem: MS-Windows: completion test fails. +Solution: Adjust directory prefix. + +Patch 9.0.0326 +Problem: Some changes for cmdheight=0 are not needed. +Solution: Revert resize behavior if height is greater than the available + space. (Shougo Matsushita, closes #11008) + +Patch 9.0.0327 +Problem: items() does not work on a list. (Sergey Vlasov) +Solution: Make items() work on a list. (closes #11013) + +Patch 9.0.0328 +Problem: OLD_DIGRAPHS is unused. +Solution: Remove OLD_DIGRAPHS. Also drop HPUX_DIGRAPHS. + +Patch 9.0.0329 +Problem: ":highlight" hangs when 'cmdheight' is zero. +Solution: Add to msg_col when using the message window. (closes #11014) + +Patch 9.0.0330 +Problem: Method tests fail. +Solution: Adjust for change of items(). + +Patch 9.0.0331 +Problem: Cannot use items() on a string. +Solution: Make items() work on a string. (closes #11016) + +Patch 9.0.0332 +Problem: Overwrite check may block BufWriteCmd. +Solution: Do not use overwrite check when 'buftype' is "acwrite". + (closes #11011) + +Patch 9.0.0333 +Problem: Method test fails. +Solution: Adjust test for items() now working on string. + +Patch 9.0.0334 +Problem: Test does not properly clean up. +Solution: Fix typo in argument of delete(). (Dominique Pell茅, closes #11010) + +Patch 9.0.0335 +Problem: Checks for Dictionary argument often give a vague error message. +Solution: Give a useful error message. (Yegappan Lakshmanan, closes #11009) + +Patch 9.0.0336 +Problem: Tests are flaky because of using a common file name. +Solution: Rename files and directories to be more unique. + +Patch 9.0.0337 +Problem: Flicker when resetting cmdline_row after updating the screen. +Solution: Do not update cmdline_row. (issue #11017) + +Patch 9.0.0338 +Problem: Return value of list_append_list() not always checked. +Solution: Check return value and handle failure. + +Patch 9.0.0339 +Problem: No check if the return value of XChangeGC() is NULL. +Solution: Only use the return value when it is not NULL. (closes #11020) + +Patch 9.0.0340 +Problem: The 'cmdheight' zero support causes too much trouble. +Solution: Revert support for 'cmdheight' being zero. + +Patch 9.0.0341 +Problem: mapset() does not restore <Nop> mapping properly. +Solution: Use an empty string for <Nop>. (closes #11022) + +Patch 9.0.0342 +Problem: ":wincmd =" equalizes in two directions. +Solution: Make ":vertical wincmd =" equalize vertically only and + ":horizontal wincmd =" equalize horizontally only. + +Patch 9.0.0343 +Problem: ColorScheme autocommand triggered when colorscheme is not found. + (Romain Lafourcade) +Solution: Only trigger ColorScheme when loading the colorscheme succeeds. + (closes #11024) + +Patch 9.0.0344 +Problem: MS-Windows: background color wrong in Console. +Solution: Figure out the default console background color. (Yasuhiro + Matsumoto, issue #10310) + +Patch 9.0.0345 +Problem: Error message for list argument could be clearer. +Solution: Include the argument number. (Yegappan Lakshmanan, closes #11027) + +Patch 9.0.0346 +Problem: :horizontal modifier not fully supported. +Solution: Also use :horizontal for completion and user commands. + (closes #11025) + +Patch 9.0.0347 +Problem: MS-Windows: cannot set cursor shape in Windows Terminal. +Solution: Make cursor shape work with Windows Terminal. (Ken Takata, + closes #11028, closes #6576) + +Patch 9.0.0348 +Problem: MS-Windows: GUI mouse move event test is flaky. +Solution: Wait for a little while for the first move event. + +Patch 9.0.0349 +Problem: Filetype of *.sil files not well detected. +Solution: Inspect the file contents to guess the filetype. + +Patch 9.0.0350 +Problem: :echowindow does not work in a compiled function. +Solution: Handle the expression at compile time. + +Patch 9.0.0351 +Problem: Message window may obscure the command line. +Solution: Reduce the maximum height of the message window. + +Patch 9.0.0352 +Problem: using :echowindow in a timer clears part of message +Solution: Do not use msg_clr_eos(). + +Patch 9.0.0353 +Problem: Missing entry in switch. +Solution: Add ISN_ECHOWINDOW. + +Patch 9.0.0354 +Problem: MS-Windows: starting a python server for test sometimes fails. +Solution: Increase the waiting time for the port. + +Patch 9.0.0355 +Problem: Check for uppercase char in autoload name is wrong, it checks the + name of the script. +Solution: Remove the check. (closes #11031) + +Patch 9.0.0356 +Problem: :echowindow sets the in_echowindow flag too early. +Solution: Set in_echowindow only when outputting the text. (Yasuhiro + Matsumoto, closes #11033) + +Patch 9.0.0357 +Problem: 'linebreak' interferes with text property highlight if there is + syntax highlighting. +Solution: Check the text prop attributes after combining with syntax + attributes. (closes #11035) + +Patch 9.0.0358 +Problem: 'breakindent' does not indent non-lists with + "breakindentopt=list:-1". +Solution: Adjust indent computation. (Maxim Kim, closes #11038) + +Patch 9.0.0359 +Problem: Error message for wrong argument type is not specific. +Solution: Include more information in the error. (Yegappan Lakshmanan, + closes #11037) + +Patch 9.0.0360 +Problem: Crash when invalid line number on :for is ignored. +Solution: Do not check breakpoint for non-existing line. + +Patch 9.0.0361 +Problem: Removing a listener may result in a memory leak and remove + subsequent listeners. +Solution: Init the "prev" pointer only once. (Yegappan Lakshmanan, + closes #11039) + +Patch 9.0.0362 +Problem: Expanding ":e %" does not work for remote files. +Solution: If the "%" or "#" file does not exist add the expansion anyway. + +Patch 9.0.0363 +Problem: Common names in test files causes tests to be flaky. +Solution: Use more specific names. + +Patch 9.0.0364 +Problem: Clang static analyzer gives warnings. +Solution: Avoid the warnings. (Yegappan Lakshmanan, closes #11043) + +Patch 9.0.0365 +Problem: File name used in test is unusual. +Solution: Rename it. (Dominique Pell茅, closes #11044) + +Patch 9.0.0366 +Problem: Cannot use import->Func() in lambda. (Israel Chauca Fuentes) +Solution: Adjust how an expression in a lambda is parsed. (closes #11042) + +Patch 9.0.0367 +Problem: Coverity complains about dropping sign of character. +Solution: Add explicit type cast. + +Patch 9.0.0368 +Problem: Old Coverity warning for using NULL pointer. +Solution: Bail out if dictionary allocation fails. + +Patch 9.0.0369 +Problem: A failing flaky test doesn't mention the time. +Solution: Add the time for debugging. Improve error message. + +Patch 9.0.0370 +Problem: Cleaning up afterwards can make a function messy. +Solution: Add the :defer command. + +Patch 9.0.0371 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize the variable. (John Marriott) + +Patch 9.0.0372 +Problem: MS-Windows: "%T" time format does not appear to work. +Solution: Use "%H:%M:%S" instead. + +Patch 9.0.0373 +Problem: Coverity warns for NULL check and unused return value. +Solution: Remove the NULL check, it was already checked earlier. Add (void) + to ignore the return value. + +Patch 9.0.0374 +Problem: Coverity still complains about dropping sign of character. +Solution: Add intermediate variable. + +Patch 9.0.0375 +Problem: The footer feature is unused. +Solution: Remove FEAT_FOOTER and code. + +Patch 9.0.0376 +Problem: Clang warns for dead assignments. +Solution: Adjust the code. (Yegappan Lakshmanan, closes #11048) + +Patch 9.0.0377 +Problem: Argument assignment does not work. +Solution: Skip over "=". + +Patch 9.0.0378 +Problem: Compiler warning for uninitialized variable. (Tony Mechelynck) +Solution: Initialize it. + +Patch 9.0.0379 +Problem: Cleaning up after writefile() is a hassle. +Solution: Add the 'D' flag to defer deleting the written file. Very useful + in tests. + +Patch 9.0.0380 +Problem: Deleting files in tests is a hassle. +Solution: Use the new 'D' flag of writefile(). + + +Problem: Deleting files in tests is a hassle. +Solution: Use the new 'D' flag of writefile(). + +Patch 9.0.0381 +Problem: Writefile test leaves files behind. +Solution: Fix the file names of files to be deleted. (Dominique Pell茅, + closes #11056) + +Patch 9.0.0382 +Problem: Freeing the wrong string on failure. +Solution: Adjust the argument. Reorder the code. + +Patch 9.0.0383 +Problem: Coverity complains about unused value. +Solution: Use the value. + +Patch 9.0.0384 +Problem: Coverity still complains about using return value of getc(). +Solution: Check for EOF. + +Patch 9.0.0385 +Problem: GUI: when CTRL-D is mapped in Insert mode it gets inserted. + (Yasuhiro Matsumoto) +Solution: Also recognize modifier starting with CSI. (closes #11057) + +Patch 9.0.0386 +Problem: Some code blocks are nested too deep. +Solution: Bail out earlier. (Yegappan Lakshmanan, closes #11058) + +Patch 9.0.0387 +Problem: repeating a <ScriptCmd> mapping does not use the right script + context. +Solution: When using a mapping put <SID>{sid}; in the redo buffer. + (closes #11049) + +Patch 9.0.0388 +Problem: The do_arg_all() function is too long. +Solution: Split the function in smaller parts. (Yegappan Lakshmanan, + closes #11062) + +Patch 9.0.0389 +Problem: Crash when 'tagfunc' closes the window. +Solution: Bail out when the window was closed. + +Patch 9.0.0390 +Problem: Cannot use a partial with :defer. +Solution: Add the partial arguments before the other arguments. Disallow + using a dictionary. + +Patch 9.0.0391 +Problem: Using separate delete() call instead of writefile() 'D' flag. +Solution: Use the writefile 'D' flag. + +Patch 9.0.0392 +Problem: Inverted condition is a bit confusing. +Solution: Remove the "!" and swap the blocks. (Ken Takata) + +Patch 9.0.0393 +Problem: Signals test often fails on FreeBSD. +Solution: Use separate files for Suspend and Resume. (Ken Takata, + closes #11065) + +Patch 9.0.0394 +Problem: Cygwin: multibyte characters may be broken in terminal window. +Solution: Adjust how to read and write on the channel. (Ken Takata, + closes #11063) + +Patch 9.0.0395 +Problem: Clang warnings for function prototypes. +Solution: Remove incomplete function prototypes. (closes #11068) + +Patch 9.0.0396 +Problem: :findrepl does not escape '&' and '~' properly. +Solution: Escape depending on the value of 'magic'. (closes #11067) + +Patch 9.0.0397 +Problem: :defer not tested with exceptions and ":qa!". +Solution: Test :defer works when exceptions are thrown and when ":qa!" is + used. Invoke the deferred calls on exit. + +Patch 9.0.0398 +Problem: Members of funccall_T are inconsistently named. +Solution: Use the "fc_" prefix for all members. + +Patch 9.0.0399 +Problem: Using :defer in expression funcref not tested. +Solution: Add a test. Fix uncovered problems. + +Patch 9.0.0400 +Problem: GUI test sometimes hangs on CI. +Solution: Delete a test file explicitly. (Ken Takata, closes #11072) + +Patch 9.0.0401 +Problem: CI uses older clang version. +Solution: Switch from clang 14 to 15. (closes #11066) + +Patch 9.0.0402 +Problem: Javascript module files are not recognized. +Solution: Recognize "*.jsm" files as Javascript. (Brett Holman, + closes #11069) + +Patch 9.0.0403 +Problem: 'equalalways' may be off when 'laststatus' is zero. +Solution: call last_status() before win_equal(). (Luuk van Baal, + closes #11070) + +Patch 9.0.0404 +Problem: Crash when passing invalid arguments to assert_fails(). +Solution: Check for NULL string. + +Patch 9.0.0405 +Problem: Arguments in a partial not used by a :def function. +Solution: Put the partial arguments on the stack. + +Patch 9.0.0406 +Problem: Deferred functions not invoked when partial func exits. +Solution: Create a funccall_T when calling a :def function. + +Patch 9.0.0407 +Problem: matchstr() does match column offset. (Yasuhiro Matsumoto) +Solution: Accept line number zero. (closes #10938) + +Patch 9.0.0408 +Problem: GUI test sometimes fails on MS-Windows. +Solution: Make sure Vim is the foreground window. (Ken Takata, closes #11077) + +Patch 9.0.0409 +Problem: #{g:x} was seen as a curly-braces expression. +Solution: Do never see #{} as a curly-braces expression. (closes #11075) + +Patch 9.0.0410 +Problem: Struct member cts_lnum is unused. +Solution: Delete it. + +Patch 9.0.0411 +Problem: Only created files can be cleaned up with one call. +Solution: Add flags to mkdir() to delete with a deferred function. + Expand the writefile() name to a full path to handle changing + directory. + +Patch 9.0.0412 +Problem: Compiler warning for unused argument. +Solution: Add UNUSED. + +Patch 9.0.0413 +Problem: ASAN reports a memory leak. +Solution: Free the string received from the server. (Ken Takata, + closes #11080) + +Patch 9.0.0414 +Problem: matchstr() still does not match column offset when done after a + text search. +Solution: Only use the line number for a multi-line search. Fix the test. + (closes #10938) + +Patch 9.0.0415 +Problem: On MS-Windows some tests are flaky. +Solution: Add sleeps, disable swapfile, mark test as flaky. (Ken Takata, + closes #11082) + +Patch 9.0.0416 +Problem: ml_get error when appending lines in popup window. +Solution: Only update w_topline when w_buffer matches curbuf. + (closes #11074) + +Patch 9.0.0417 +Problem: Jsonnet files are not recognized. +Solution: Add a pattern for Jsonnet files. (Cezary Dro偶ak, closes #11073, + closes #11081) + +Patch 9.0.0418 +Problem: Manually deleting temp test files. +Solution: Use the 'D' flag of writefile() and mkdir(). + +Patch 9.0.0419 +Problem: The :defer command does not check the function argument count and + types. +Solution: Check the function arguments when adding a deferred function. + +Patch 9.0.0420 +Problem: Function went missing. +Solution: Add the function back. + +Patch 9.0.0421 +Problem: MS-Windows makefiles are inconsistently named. +Solution: Use consistent names. (Ken Takata, closes #11088) + +Patch 9.0.0422 +Problem: Not enough testing of the :all command. +Solution: Add more testing. (Yegappan Lakshmanan, closes #11091) + +Patch 9.0.0423 +Problem: "for" and "while" not recognized after :vim9cmd and :legacy. + (Emanuele Torre) +Solution: Recognize all the command modifiers. (closes #11087) + Add a test to check the list of modifiers. + +Patch 9.0.0424 +Problem: gitattributes files are not recognized. +Solution: Add patterns to match gitattributes files. (closes #11085) + +Patch 9.0.0425 +Problem: Autocmd test is a bit flaky on MS-Windows. +Solution: Add a bit more sleeping. (Ken Takata, closes #11095) + +Patch 9.0.0426 +Problem: Failed flaky tests reports only start time. +Solution: Also report the end time. + +Patch 9.0.0427 +Problem: Drupal theme files are not recognized. +Solution: Use php filetype for Drupl theme files. Remove trailing spaces. + (Rodrigo Aguilera, closes #11096) + +Patch 9.0.0428 +Problem: Autocmd test uses common file name. +Solution: Use unique name to reduce flakiness. + +Patch 9.0.0429 +Problem: Not all keys are tested for the MS-Windows GUI. +Solution: Add more key codes to the list. (Yegappan Lakshmanan, + closes #11097) + +Patch 9.0.0430 +Problem: Cannot use repeat() with a blob. +Solution: Implement blob repeat. (closes #11090) + +Patch 9.0.0431 +Problem: Current mode shows in message window. +Solution: Reset in_echowindow before redrawing. (issue #11094) + +Patch 9.0.0432 +Problem: Crash when using for loop variable in closure. +Solution: Check that the variable wasn't deleted. (issue #11094) + +Patch 9.0.0433 +Problem: Coverity warns for not checking allocation failure. +Solution: Check that allocating a list or blob succeeded. + +Patch 9.0.0434 +Problem: gitignore files are not recognized. +Solution: Add patterns for the gitignore filetype. (closes #11102) + +Patch 9.0.0435 +Problem: Compiler warning for uninitialized variable. +Solution: Initialize it. + +Patch 9.0.0436 +Problem: CI: running tests in parallel causes flakiness. +Solution: Reorganize the MS-Windows runs. (Ken Takata, closes #11101) + +Patch 9.0.0437 +Problem: No error when a custom completion function returns something else + than the expected list. +Solution: Give an error. (closes #11100) + +Patch 9.0.0438 +Problem: Cannot put virtual text above a line. +Solution: Add the "above" value for "text_align". + +Patch 9.0.0439 +Problem: Cursor wrong if inserting before line with virtual text above. +Solution: Add the width of the "above" virtual text to the cursor position. + (issue #11084) + +Patch 9.0.0440 +Problem: Crash when using mkdir() with "R" flag in compiled function. +Solution: Reserve a variable for deferred function calls. Handle more than + one argument. + +Patch 9.0.0441 +Problem: Closure in for loop test fails on some systems. +Solution: Do not wait for the ruler to show up. (issue #11106) + +Patch 9.0.0442 +Problem: Virtual text "above" doesn't handle line numbers. +Solution: Take the left column offset into account. (issue #11084) + Also make padding work. + +Patch 9.0.0443 +Problem: Blueprint files are not recognized. +Solution: Add a pattern for blueprint files. (Gabriele Musco, closes #11107) + +Patch 9.0.0444 +Problem: Trying to declare g:variable gives confusing error. +Solution: Give a better error message. (closes #11108) + +Patch 9.0.0445 +Problem: When opening/closing window text moves up/down. +Solution: Add the 'splitscroll' option. When off text will keep its + position as much as possible. + +Patch 9.0.0446 +Problem: Message window may be positioned too low. +Solution: Compute cmdline_row before computing the position. + +Patch 9.0.0447 +Problem: Using :echowin while at the hit-enter prompt causes problems. +Solution: Do not prompt for :echowin. Postpone showing the message window. + Start the timer when the window is displayed. + +Patch 9.0.0448 +Problem: SubRip files are not recognized. +Solution: Add a pattern for SubRip. (closes #11113) + +Patch 9.0.0449 +Problem: There is no easy way to translate a string with a key code into a + readable string. +Solution: Add the keytrans() function. (closes #11114) + +Patch 9.0.0450 +Problem: Return value of argument check functions is inconsistent. +Solution: Return OK/FAIL instead of TRUE/FALSE. (closes #11112) + +Patch 9.0.0451 +Problem: Virtual text "above" does not work with 'nowrap'. +Solution: Do wrap the line after. (closes #11084) + +Patch 9.0.0452 +Problem: Visual highlighting extends into virtual text prop. +Solution: Do not highlight what isn't actually selected. Fix ordering of + stored text props. + +Patch 9.0.0453 +Problem: On an AZERTY keyboard digit keys get the shift modifier. +Solution: Remove the shift modifier from digit keys. (closes #11109) + +Patch 9.0.0454 +Problem: Incorrect color for modeless selection with GTK. +Solution: Use simple inversion instead of XOR. (closes #11111) + +Patch 9.0.0455 +Problem: A few problems with 'splitscroll'. +Solution: Fix 'splitscroll' problems. (Luuk van Baal, closes #11117) + +Patch 9.0.0456 +Problem: Function called at debug prompt is also debugged. +Solution: Reset the debug level while entering the debug command. + (closes #11118) + +Patch 9.0.0457 +Problem: Substitute prompt does not highlight an empty match. +Solution: Highlight at least one character. + +Patch 9.0.0458 +Problem: Splitting a line with a text prop "above" moves it to a new line + below. +Solution: Keep an "above" text prop above the first line. + +Patch 9.0.0459 +Problem: Vim9: block in for loop doesn't behave like a code block. +Solution: Use a new block ID for each loop at the script level. + +Patch 9.0.0460 +Problem: Loop variable can't be found. +Solution: Adjust block_id of the loop variable each round. + +Patch 9.0.0461 +Problem: 'scroll' is not always updated. +Solution: Call win_init_size() at the right place. + +Patch 9.0.0462 +Problem: ASAN warning for integer overflow. +Solution: Check for tp_col to be MAXCOL. + +Patch 9.0.0463 +Problem: Command line test leaves directory behind. +Solution: Use the "R" flag on the first mkdir(). (Dominique Pell茅, + closes #11127) + +Patch 9.0.0464 +Problem: With virtual text "above" indenting doesn't work well. +Solution: Ignore text properties while adjusting indent. (issue #11084) + +Patch 9.0.0465 +Problem: Cursor moves when cmdwin is closed when 'splitscroll' is off. +Solution: Temporarily set 'splitscroll' when jumping back to the original + window. (closes #11128) + +Patch 9.0.0466 +Problem: Virtual text wrong after adding line break after line. +Solution: Pass an "eol" flag to where text properties are adjusted. + (closes #11131) + +Patch 9.0.0467 +Problem: Build failure. +Solution: Add missing change. + +Patch 9.0.0468 +Problem: Execution stack underflow without the +eval feature. (Dominique + Pell茅) +Solution: Add to execution stack without FEAT_EVAL. (closes #11135) + +Patch 9.0.0469 +Problem: Cursor moves if cmdwin is closed when 'splitscroll' is off. +Solution: Skip win_fix_cursor if called when cmdwin is open or closing. + (Luuk van Baal, closes #11134) + +Patch 9.0.0470 +Problem: In a :def function all closures in a loop get the same variables. +Solution: When in a loop and a closure refers to a variable declared in the + loop, prepare for making a copy of variables for each closure. + +Patch 9.0.0471 +Problem: No test for what patch 9.0.0469 fixes. +Solution: Add a test. (closes #11140) + +Patch 9.0.0472 +Problem: Virtual text "below" doesn't show in list mode. +Solution: Reset lcs_eol_one when displaying text property. + +Patch 9.0.0473 +Problem: fullcommand() only works for the current script version. +Solution: Add an optional argument for the script version. + +Patch 9.0.0474 +Problem: fullcommand() test failure. +Solution: Update function table. + +Patch 9.0.0475 +Problem: Not using deferred delete in tests. +Solution: Use deferred delete more often. + +Patch 9.0.0476 +Problem: Varargs does not work for replacement function of substitute(). +Solution: Check the varargs flag of the function. (closes #11142) + +Patch 9.0.0477 +Problem: Missing dependency may cause crashes on incomplete build. +Solution: Add dependency. + +Patch 9.0.0478 +Problem: Test for 'splitscroll' takes too much time. +Solution: Only test some of the combinations. (Luuk van Baal, closes #11139) + +Patch 9.0.0479 +Problem: In a :def function all closures in a loop get the same variables. +Solution: Use a separate list of variables for LOADOUTER and SAVEOUTER. + +Patch 9.0.0480 +Problem: Cannot use a :def varargs function with substitute(). +Solution: Use has_varargs(). (closes #11146) + +Patch 9.0.0481 +Problem: In a :def function all closures in a loop get the same variables. +Solution: Use a separate list of variables for LOADOUTER and STOREOUTER. + Not copied at end of loop yet. + +Patch 9.0.0482 +Problem: "g0" moves to wrong location with virtual text "above". +Solution: Compensate for the extra columns. (closes #11141) Also fix "g$" + +Patch 9.0.0483 +Problem: Illegal memory access when replacing in virtualedit mode. +Solution: Check for replacing NUL after Tab. + +Patch 9.0.0484 +Problem: In a :def function all closures in a loop get the same variables. +Solution: Add ENDLOOP at break, continue and return if needed. + +Patch 9.0.0485 +Problem: In a :def function all closures in a loop get the same variables. +Solution: Make a copy of loop variables used in a closure. + +Patch 9.0.0486 +Problem: Text scrolled with 'nosplitscroll', autocmd win opened and help + window closed. +Solution: Skip win_fix_scroll() in more situations. (Luuk van Baal, + closes #11150) + +Patch 9.0.0487 +Problem: Using freed memory with combination of closures. +Solution: Do not use a partial after it has been freed through the + funcstack. + +Patch 9.0.0488 +Problem: Cursor in wrong position with virtual text "above" and + 'showbreak'. +Solution: Take the first character column into account. (closes #11149) + +Patch 9.0.0489 +Problem: Using "end_lnum" with virtual text causes problems. +Solution: Disallow using "end_lnum" with virtual text. (closes #11151) + Also disallow "end_col" and "length". + +Patch 9.0.0490 +Problem: Using freed memory with cmdwin and BufEnter autocmd. +Solution: Make sure pointer to b_p_iminsert is still valid. + +Patch 9.0.0491 +Problem: No good reason to build without the float feature. +Solution: Remove configure check for float and "#ifdef FEAT_FLOAT". + +Patch 9.0.0492 +Problem: Cmdwin test fails on MS-Windows. +Solution: Skip test on MS-Windows. + +Patch 9.0.0493 +Problem: Perl test fails. +Solution: Remove remaining FEAT_EVAL. + +Patch 9.0.0494 +Problem: Small build misses float function declarations. +Solution: Adjust #ifdefs. + +Patch 9.0.0495 +Problem: Closure doesn't work properly in nested loop. +Solution: Save variables up to the outer loop. + +Patch 9.0.0496 +Problem: No good reason to keep supporting Windows-XP. +Solution: Drop Windows-XP support. (Ken Takata, closes #11089) + +Patch 9.0.0497 +Problem: LyRiCs files are not recognized. +Solution: Add a pattern to detect LyRiCs files. (closes #11155) + +Patch 9.0.0498 +Problem: Various small issues. +Solution: Various small fixes. + +Patch 9.0.0499 +Problem: In :def function list created after const is locked. +Solution: Reset v_lock. (closes #11154) + +Patch 9.0.0500 +Problem: When quitting the cmdline window with CTRL-C it remains visible. +Solution: Redraw to avoid confusion. Adjust the error message. + (closes #11152) Adjust the cursor position after CTRL-C. + +Patch 9.0.0501 +Problem: Warning for using uninitialized value in mouse test. +Solution: Clear ScreenCols when allocating it. (Dominique Pell茅) + +Patch 9.0.0502 +Problem: A closure in a nested loop in a :def function does not work. +Solution: Use an array of loopvars, one per loop level. + +Patch 9.0.0503 +Problem: Build failure. +Solution: Add missing changes. + +Patch 9.0.0504 +Problem: still a Build failure. +Solution: Add another missing changes. Avoid compiler warning. + +Patch 9.0.0505 +Problem: Various problems with 'nosplitscroll'. +Solution: Fix 'nosplitscroll' problems. (Luuk van Baal, closes #11166) + +Patch 9.0.0506 +Problem: Line number argument for :badd does not work. +Solution: Set the last cursor position in the new buffer. (closes #11161) + +Patch 9.0.0507 +Problem: Command line cleared when using :redrawstatus in CmdlineChanged + autocommand event. +Solution: Postpone the redraw. (closes #11162) + +Patch 9.0.0508 +Problem: When the channel test fails there is no clue why. +Solution: Add info about the job status. (Ken Takata, closes #11175) + +Patch 9.0.0509 +Problem: Confusing error for "saveas" command with "nofile" buffer. +Solution: Give a clearer error message. (closes #11171) + +Patch 9.0.0510 +Problem: Chatito files are not recognized. +Solution: Add a pattern for Chatito files. (closes #11174) + +Patch 9.0.0511 +Problem: Unnecessary scrolling for message of only one line. +Solution: Only set msg_scroll when needed. (closes #11178) + +Patch 9.0.0512 +Problem: Cannot redraw the status lines when editing a command. +Solution: Only postpone the redraw when messages have scrolled. + (closes #11170) + +Patch 9.0.0513 +Problem: May not be able to use a pattern ad the debug prompt. +Solution: Temporarily disable the timeout. (closes #11164) + +Patch 9.0.0514 +Problem: Terminal test sometimes hangs. +Solution: Add a bit more information to the test output. (issue #11179) + +Patch 9.0.0515 +Problem: Virtual text highlight starts too early when 'number' is set. +Solution: Set column offset when wrapping. (issue #11138) + +Patch 9.0.0516 +Problem: Virtual text "above" highlights gap after it. +Solution: Do not highlight the gap. (closes #11138) + +Patch 9.0.0517 +Problem: When at the command line :redrawstatus does not work well. +Solution: Only update the statuslines instead of the screen. (closes #11180) + +Patch 9.0.0518 +Problem: Virtual text highlight starts too early with 'nowrap' and 'number' + set. +Solution: Add the offset to the attribute skip count. (issue #11138) + +Patch 9.0.0519 +Problem: The win_line() function is much too long. +Solution: Move the code to draw the line number to a separate function. + +Patch 9.0.0520 +Problem: Declaring a loop variable at the start of a block is clumsy. +Solution: Declare the variable inside the loop in a few places to see if + this works. + +Patch 9.0.0521 +Problem: Compiler warns for unused argument in small version. +Solution: Add UNUSED. + +Patch 9.0.0522 +Problem: Build fails on Appveyor. +Solution: Select Visual Studio 2015 for the build tools. + +Patch 9.0.0523 +Problem: more compiler warnings for arguments in small version +Solution: Adjust #ifdefs. + +Patch 9.0.0524 +Problem: Build instructions for MS-Windows are outdated. +Solution: Remove instructions for old MSVC versions. + +Patch 9.0.0525 +Problem: Manually deleting temp test files. +Solution: Add the 'D' flag to writefile(). + +Patch 9.0.0526 +Problem: MS-Windows: still some support for XP and old compilers. +Solution: Remove XP support and mention of old compilers. (Ken Takata, + closes #11183) + +Patch 9.0.0527 +Problem: Long sign text may overflow buffer. +Solution: Use a larger buffer. Prevent for overflow. + +Patch 9.0.0528 +Problem: MS-Windows: no batch files for more recent MSVC versions. +Solution: Add batch files for 2017, 2019 and 2022. (Ken Takata, + closes #11184) + +Patch 9.0.0529 +Problem: Appveyor setup contains outdated lines. +Solution: Remove outdated lines. (Ken Takata, closes #11182) + +Patch 9.0.0530 +Problem: Using freed memory when autocmd changes mark. +Solution: Copy the mark before editing another buffer. + +Patch 9.0.0531 +Problem: The win_line() function is much too long. +Solution: Move code to separate functions. + +Patch 9.0.0532 +Problem: Edit test is flaky when run under valgrind. +Solution: Send some text to the terminal to trigger a redraw. + +Patch 9.0.0533 +Problem: The win_line() function is much too long. +Solution: Move code to separate functions. + +Patch 9.0.0534 +Problem: Line number is displayed at virtual text "above". +Solution: Show the line number at the text line. + +Patch 9.0.0535 +Problem: Closure gets wrong value in for loop with two loop variables. +Solution: Correctly compute the number of loop variables to clear. + +Patch 9.0.0536 +Problem: CI: codecov action update available. +Solution: Update Codecov 3.1.0 to 3.3.1. (closes #11188) + +Patch 9.0.0537 +Problem: The do_set() function is much too long. +Solution: Move setting of a string option to a separate function. + +Patch 9.0.0538 +Problem: Manually deleting test temp files. +Solution: Add the 'D' flag to writefile(). + +Patch 9.0.0539 +Problem: Long message test can be flaky. +Solution: Wait for more prompt instead of ruler. + +Patch 9.0.0540 +Problem: Assigning stack variable to argument confuses Coverity. +Solution: Use a local pointer, also makes the code simpler. + +Patch 9.0.0541 +Problem: Terminal pwd test fails with a very long path name. +Solution: Join two lines. + +Patch 9.0.0542 +Problem: MSVC build still has support for 2012 edition. +Solution: Drop MSVC 2012 support. (Ken Takata, closes #11191) + +Patch 9.0.0543 +Problem: Insufficient testing for assert and test functions. +Solution: Add a few more tests. (Yegappan Lakshmanan, closes #11190) + +Patch 9.0.0544 +Problem: Minor issues with setting a string option. +Solution: Adjust the code, add a test. (closes #11192) + +Patch 9.0.0545 +Problem: When a test is slow and CI times out there is no time info. +Solution: Add the elapsed time to the "Executing" message. + +Patch 9.0.0546 +Problem: Supporting Ruby 1.8 makes code complicated. +Solution: Drop Ruby 1.8 support, it is ancient. (Ken Takata, closes #11195) + +Patch 9.0.0547 +Problem: Looping over empty out_loop[] entries. +Solution: Store the array size. + +Patch 9.0.0548 +Problem: reduce() with a compiled lambda could be faster. +Solution: Call eval_expr_typval() instead of call_func() directly. + +Patch 9.0.0549 +Problem: Duplicated code in calling a :def function. +Solution: Simplify the code. + +Patch 9.0.0550 +Problem: Crash when closing a tabpage and buffer is NULL. +Solution: Adjust how autocommands are triggered when closing a window. + (closes #11198, closes #11197) + +Patch 9.0.0551 +Problem: Mode message is delayed when :echowin was used. (Maxim Kim) +Solution: Save and restore msg_didout in :echowin. (closes #11193) + +Patch 9.0.0552 +Problem: Crash when using NUL in buffer that uses :source. +Solution: Don't get a next line when skipping over NL. + +Patch 9.0.0553 +Problem: No error for "|" after "{" in lambda. +Solution: Check for invalid "|". (closes #11199) + +Patch 9.0.0554 +Problem: Using freed memory when command follows lambda. +Solution: Don't free what is still in use. (closes #11201) + +Patch 9.0.0555 +Problem: Scrolling with 'nosplitscroll' in callback changing curwin. +Solution: Invalidate w_cline_row in the right place. (Luuk van Baal, + closes #11185) + +Patch 9.0.0556 +Problem: Leaking memory with nested functions. +Solution: Free saved pointer. + +Patch 9.0.0557 +Problem: Valgrind reports possibly leaked memory. +Solution: Move the problematic test function to the "fails" test file to + avoid obscuring real memory leaks. + +Patch 9.0.0558 +Problem: Coverity warns for possibly using NULL pointer. +Solution: Only use "evalarg" when not NULL. + +Patch 9.0.0559 +Problem: Timer test may get stuck at hit-enter prompt. +Solution: Feed some more characters. + +Patch 9.0.0560 +Problem: Elapsed time since testing started is not visible. +Solution: Show the elapsed time while running tests. + +Patch 9.0.0561 +Problem: When a test gets stuck it just hangs forever. +Solution: Set a timeout of 30 seconds. + +Patch 9.0.0562 +Problem: HSL playlist files are not recognized. +Solution: Add a pattern to recognize HSL playlist files. (Beno卯t Ryder, + closes #11204) + +Patch 9.0.0563 +Problem: Timer_info() test fails. +Solution: Ignore test timeout timer. Don't use test_null_job() when not + available. + +Patch 9.0.0564 +Problem: A few tests keep failing on MacOS M1. +Solution: Add a test check CheckNotMacM1. Fix timer tests. + +Patch 9.0.0565 +Problem: Cscope test causes problems when code for test timeout timer is + included (even when commented out). +Solution: Disable part of the cscope test for now. + +Patch 9.0.0566 +Problem: Nim files are not recognized. +Solution: Add patterns for Nim files. (Nbiba Bedis, closes #11205) + +Patch 9.0.0567 +Problem: 'completeopt' "longest" is not used for complete(). +Solution: Also use "longest" for complete(). (Bjorn Linse, closes #11206) + +Patch 9.0.0568 +Problem: Autocmd code is indented more than needed. +Solution: Break out sooner. (Yegappan Lakshmanan, closes #11208) + Also in user function code. + +Patch 9.0.0569 +Problem: Cannot easily get out when using "vim file | grep word". +Solution: Without changes let CTRL-C exit Vim. Otherwise give a message on + stderr. (closes #11209) + +Patch 9.0.0570 +Problem: CI for Windows is still using codecov action 3.1.0. +Solution: Use action 3.1.1. (closes #11212) + +Patch 9.0.0571 +Problem: MS-Windows: CTRL-C can make Vim exit. +Solution: Check the not-a-term argument. + +Patch 9.0.0572 +Problem: Insert complete tests leave a mapping behind. +Solution: Use a buffer-local mapping. (closes #11211) + +Patch 9.0.0573 +Problem: Outdated dependencies go unnoticed. +Solution: Use github Dependabot. (closes #11213) + +Patch 9.0.0574 +Problem: Timer garbage collect test hangs on Mac M1. +Solution: Properly check for Mac M1 and skip the test. + +Patch 9.0.0575 +Problem: The getchar() function behaves strangely with bracketed paste. +Solution: Do not handle paste-start in getchar(). (issue #11172) + +Patch 9.0.0576 +Problem: Unused loop variables. +Solution: Use a while loop instead. (closes #11214) + +Patch 9.0.0577 +Problem: Buffer underflow with unexpected :finally. +Solution: Check CSF_TRY can be found. + +Patch 9.0.0578 +Problem: One timer test fails on Mac M1. +Solution: Skip the test on Mac M1. + +Patch 9.0.0579 +Problem: Using freed memory when 'tagfunc' wipes out buffer that holds + 'complete'. +Solution: Make a copy of the option. Make sure cursor position is valid. + +Patch 9.0.0580 +Problem: No CI running for MacOS on M1. +Solution: Add a cirrus CI task. (closes #11203) + +Patch 9.0.0581 +Problem: Adding a character for incsearch fails at end of line. +Solution: Only check cursor line number. + +Patch 9.0.0582 +Problem: Channel cwd test fails on Cirrus CI. +Solution: Also remove /private from the expected directory. + +Patch 9.0.0583 +Problem: Only recognizing .m3u8 files is inconsistent. +Solution: Also match .m3u files. (issue #11204) + +Patch 9.0.0584 +Problem: Cscope test with wrong executable name fails. +Solution: Use /bin/sh to execute the command. (Yegappan Lakshmanan) + +Patch 9.0.0585 +Problem: When long message test fails the error message is not visible. +Solution: Dump more lines. + +Patch 9.0.0586 +Problem: Missing change in test. +Solution: Add the test change. + +Patch 9.0.0587 +Problem: Unicode tables are outdated. +Solution: Update to Unicode release 15. (Christian Brabandt, closes #11220) + +Patch 9.0.0588 +Problem: MorphOS build is broken. +Solution: Add "-lm" to LDFLAGS and "-noixemul" to CFLAGS. (Ola S枚der, + closes #11222) + +Patch 9.0.0589 +Problem: On AmigaOS4 the pid is available but the task address is used. +Solution: Use getpid(). (Ola S枚der, closes #11224) + +Patch 9.0.0590 +Problem: After exiting Insert mode spelling is not checked in the next + line. +Solution: When spelling is enabled redraw the next line after exiting Insert + mode in case the spell highlight needs updating. + +Patch 9.0.0591 +Problem: Message window popup shows on only one tab page. (Naruhiko + Nishino) +Solution: Show the message window popup on all tab pages. (closes #11231) + +Patch 9.0.0592 +Problem: Display not cleared when scrolling back in messages, a background + color is set and t_ut is empty. +Solution: Clear to the end of the display if needed. (closes #8973) + +Patch 9.0.0593 +Problem: CI actions have too many permissions. +Solution: Restrict permissions to what is required. (closes #11223) + +Patch 9.0.0594 +Problem: Makefile error message causes a shell error. +Solution: Put the message in single quotes. (closes #11232) + +Patch 9.0.0595 +Problem: Extra newline in messages after a verbose shell message. +Solution: Output the newline with msg_putchar_attr(). (closes #11233) + Make it possible to filter a screendump before comparing it. + +Patch 9.0.0596 +Problem: CI on Mac M1 has the channel feature disabled. +Solution: Include the channel feature. + +Patch 9.0.0597 +Problem: Cannot close a tab page with the middle mouse button. +Solution: Support closing a tab page with the middle mouse button, like many + other programs. (closes #10746) + +Patch 9.0.0598 +Problem: Using negative array index with negative width window. +Solution: Make sure the window width does not become negative. + +Patch 9.0.0599 +Problem: Latexmkrc files are not recognized. +Solution: Use Perl filetype for latexmkrc files. (closes #11241) + +Patch 9.0.0600 +Problem: GYP files are not recognized. +Solution: Recognize GYP files. (closes #11242) + +Patch 9.0.0601 +Problem: Too much indent. +Solution: Return out early from a function. (Yegappan Lakshmanan, + close #11238) + +Patch 9.0.0602 +Problem: New TypeScript extensions are not recognized. +Solution: Recognize .mts and .cts files. (closes #11237) + +Patch 9.0.0603 +Problem: With 'nosplitscroll' folds are not handled correctly. +Solution: Take care of closed folds when moving the cursor. (Luuk van Baal, + closes #11234) + +Patch 9.0.0604 +Problem: Luacheckrc file is not recognized. +Solution: Use lua filetype for luacheckrc. (closes #11236) + +Patch 9.0.0605 +Problem: Dump file missing. +Solution: Add the missing dump file. (issue #11234) + +Patch 9.0.0606 +Problem: system() opens a terminal window when using the GUI and "!" is in + 'guioptions'. +Solution: Do not use a terminal window when the SHELL_SILENT flag is used. + (closes #11202) + +Patch 9.0.0607 +Problem: Verbose echo message test fails on Mac OS. +Solution: Skip the test on Mac OS. + +Patch 9.0.0608 +Problem: With spell checking, deleting a full stop at the end of a line + does not update SpellCap at the start of the next line. +Solution: Update the next line when characters have been deleted. Also when + using undo. + +Patch 9.0.0609 +Problem: Blockedit test fails because of wrong indent. +Solution: Adjust the expected text temporarily + +Patch 9.0.0610 +Problem: Global interrupt test fails when run under valgrind. +Solution: Use TermWait(). + +Patch 9.0.0611 +Problem: Tests delete files with a separate delete() call. +Solution: Use deferred delete. + +Patch 9.0.0612 +Problem: Blockedit test passes with wrong result. +Solution: Add a "vim9script" line to make indenting work. + +Patch 9.0.0613 +Problem: Running source tests leaves file behind. +Solution: Add the "D" flag to writefile(). (Dominique Pell茅, closes #11243) + Also do this for other writefile() calls and drop delete(). + +Patch 9.0.0614 +Problem: SpellFileMissing autocmd may delete buffer. +Solution: Disallow deleting the current buffer to avoid using freed memory. + +Patch 9.0.0615 +Problem: Using reduce() on a list from range() is a bit slow. +Solution: Avoid materializing the list. + +Patch 9.0.0616 +Problem: Spell test fails because error message changed. +Solution: Adjust expected error message. + +Patch 9.0.0617 +Problem: Calling function for reduce() has too much overhead. +Solution: Only call clear_tv() when needed. + +Patch 9.0.0618 +Problem: Calling function for reduce() has too much overhead. +Solution: Do not create a funccall_T every time. + +Patch 9.0.0619 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0620 +Problem: matchaddpos() can only add up to 8 matches. +Solution: Allocate the array of positions. (closes #11248) + +Patch 9.0.0621 +Problem: Filetype test leaves file behind. +Solution: Add deferred delete flag to writefile(). (Dominique Pell茅, + closes #11249) + +Patch 9.0.0622 +Problem: matchaddpos() can get slow when adding many matches. +Solution: Update the next available match ID when manually picking an ID and + remove check if the available ID can be used. (idea by Rick Howe) + +Patch 9.0.0623 +Problem: Error for modifying a const is not detected at compile time. +Solution: Add TTFLAG_CONST and check for it in add() and extend(). + +Patch 9.0.0624 +Problem: Leaking argument type array. +Solution: Add allocated memory to type_gap. + +Patch 9.0.0625 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0626 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0627 +Problem: "const" and "final" both make the type a constant. (Daniel + Steinberg) +Solution: Only have "const" make the type a constant. + +Patch 9.0.0628 +Problem: Coverity warns for not checking return value. +Solution: Check the return value and simplify the code. + +Patch 9.0.0629 +Problem: Get an error for using const only when executing. +Solution: Check for const at compile time for filter(), map(), remove(), + reverse(), sort() and uniq(). + +Patch 9.0.0630 +Problem: In Vim9 script a numbered function cannot be called. +Solution: Do not require "g:" before a numbered function name. + (closes #11254) + +Patch 9.0.0631 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0632 +Problem: Calling a function from an "expr" option has too much overhead. +Solution: Add call_simple_func() and use it for 'foldexpr' + +Patch 9.0.0633 +Problem: FEAT_TITLE was removed but is still used. +Solution: Remove FEAT_TITLE. (Naruhiko Nishino, closes #11256) + +Patch 9.0.0634 +Problem: Evaluating "expr" options has more overhead than needed. +Solution: Use call_simple_func() for 'foldtext', 'includeexpr', 'printexpr', + "expr" of 'spellsuggest', 'diffexpr', 'patchexpr', 'balloonexpr', + 'formatexpr', 'indentexpr' and 'charconvert'. + +Patch 9.0.0635 +Problem: Build error and compiler warnings. +Solution: Add missing change. Add type casts. + +Patch 9.0.0636 +Problem: Underline color does not work in terminals that don't send a + termresponse. +Solution: Do output t_8u if it was set explicitly. (closes #11253) + +Patch 9.0.0637 +Problem: Syntax of commands in Vim9 script depends on +eval feature. +Solution: Use same syntax with and without the +eval feature. + +Patch 9.0.0638 +Problem: Popup menu highlight wrong on top of preview popup. (Yegappan + Lakshmanan) +Solution: Also check for the popup menu in screen_line(). + +Patch 9.0.0639 +Problem: Checking for popup in screen_char() is too late, the attribute has + already been changed. +Solution: Move check for popup to where screen_char() is called. + +Patch 9.0.0640 +Problem: Cannot scroll by screen line if a line wraps. +Solution: Add the 'smoothscroll' option. Only works for CTRL-E and CTRL-Y + so far. + +Patch 9.0.0641 +Problem: Missing part of the new option code. +Solution: Add missing WV_SMS. + +Patch 9.0.0642 +Problem: Breakindent test fails. +Solution: Correct logic for resetting need_showbreak. + +Patch 9.0.0643 +Problem: Smoothscroll test fails. +Solution: Check if skipcol changed. + +Patch 9.0.0644 +Problem: 'smoothscroll' is not copied to a new window on :split. +Solution: Copy the option value. Add a test. + +Patch 9.0.0645 +Problem: CTRL-Y does not stop at line 1. (John Marriott) +Solution: Stop at line 1 when 'smoothscroll' is not set. (closes #11261) + +Patch 9.0.0646 +Problem: with 'smoothscroll' set CTRL-E does not work properly when + 'foldmethod' is set to "indent". (Yee Cheng Chin) +Solution: Merge the code for scrolling with folds and 'smoothscroll'. + (closes #11262) + +Patch 9.0.0647 +Problem: The 'splitscroll' option is not a good name. +Solution: Rename 'splitscroll' to 'splitkeep' and make it a string option, + also supporting "topline". (Luuk van Baal, closes #11258) + +Patch 9.0.0648 +Problem: When using powershell input redirection does not work. +Solution: Use a different shell command for powershell. (Yegappan + Lakshmanan, closes #11257) + +Patch 9.0.0649 +Problem: No indication when the first line is broken for 'smoothscroll'. +Solution: Show "<<<" in the first line. + +Patch 9.0.0650 +Problem: Some tests are failing. +Solution: Adjust for "<<<" showing up. + +Patch 9.0.0651 +Problem: Build fails without the +conceal feature. +Solution: Rename called function. + +Patch 9.0.0652 +Problem: 'smoothscroll' not tested with 'number' and "n" in 'cpo'. +Solution: Add tests, fix uncovered problem. + +Patch 9.0.0653 +Problem: BS and DEL do not work properly in an interactive shell. (Gary + Johnson) +Solution: Adjust the length for replaced codes. + +Patch 9.0.0654 +Problem: Breakindent test fails. +Solution: Temporarily accept wrong result. + +Patch 9.0.0655 +Problem: passing modifier codes to a shell running in the GUI. (Gary + Johnson) +Solution: Include modifier codes into the key and drop the modifiers. + +Patch 9.0.0656 +Problem: Cannot specify another character to use instead of '@' at the end + of the window. +Solution: Add "lastline" to 'fillchars'. (Martin Tournoij, closes #11264, + closes #10963) + +Patch 9.0.0657 +Problem: Too many #ifdefs. +Solution: Graduate the +cmdwin feature. Now the tiny and small builds are + equal, drop the small build. (Martin Tournoij, closes #11268) + +Patch 9.0.0658 +Problem: Tiny build fails on Mac OS. +Solution: Define FEAT_CLIPBOARD only for normal build. + +Patch 9.0.0659 +Problem: Wrong type of comment in SetSyn() function. +Solution: Use Vim9 comment. (closes #11278) + +Patch 9.0.0660 +Problem: Mapping with CTRL keys does not work in the GUI. +Solution: Recognize CSI next to K_SPECIAL. (closes #11275, closes #11270) + +Patch 9.0.0661 +Problem: Multi-byte "lastline" item in 'fillchars' does not work properly + when the window is two columns wide. +Solution: Compute the text length correctly. (closes #11280) + +Patch 9.0.0662 +Problem: Concealed characters do not work correctly. +Solution: Subtract boguscols instead of adding them. (closes #11273) + +Patch 9.0.0663 +Problem: Tests check for +cmdwin feature which is always present. +Solution: Remove the checks. (closes #11287) + +Patch 9.0.0664 +Problem: Bad redrawing with spell checking, using "C" and "$" in 'cpo'. +Solution: Do not redraw the next line when "$" is in 'cpo'. (closes #11285) + +Patch 9.0.0665 +Problem: Setting 'cmdheight' has no effect if last window was resized. +Solution: Do apply 'cmdheight' when told to. Use the frame height instead + of the cmdline_row. (closes #11286) + +Patch 9.0.0666 +Problem: Spacing-combining characters handled as composing, causing text to + take more space than expected. +Solution: Handle characters marked with "Mc" not as composing. + (closes #11282) + +Patch 9.0.0667 +Problem: ml_get error when 'splitkeep' is "screen". (Marius Gedminas) +Solution: Check the botline is not too large. (Luuk van Baal, + closes #11293, closes #11292) + +Patch 9.0.0668 +Problem: CI on Mac M1 only uses clang +Solution: Also run with gcc. (closes #11263) + +Patch 9.0.0669 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0670 +Problem: No space for command line when there is a tabline. +Solution: Correct computation of where the command line should be. + (closes #11295) + +Patch 9.0.0671 +Problem: Negative topline using CTRL-Y with 'smoothscroll' and 'diff'. + (Ernie Rael) +Solution: Only use 'smoothscroll' when 'wrap' is set. + +Patch 9.0.0672 +Problem: Cursor line only partly shows with 'smoothscroll' and 'scrolloff' + zero. +Solution: Do not use 'smoothscroll' when adjusting the bottom of the window. + (closes #11269) + +Patch 9.0.0673 +Problem: First line not scrolled properly with 'smoothscroll' and + 'scrolloff' zero and using "k". +Solution: Make sure the cursor position is visible. + +Patch 9.0.0674 +Problem: Build error with tiny version. +Solution: Use PLINES_NOFILL macro. + +Patch 9.0.0675 +Problem: Search test screendump is outdated. +Solution: Update the screendump for improved display. + +Patch 9.0.0676 +Problem: CI on Mac M1 with gcc actually uses clang. +Solution: Remove the gcc task. (Ozaki Kiichi, closes #11297) + +Patch 9.0.0677 +Problem: Breakindent test accepts wrong result. +Solution: Fix the number column and adjust the expected text. + +Patch 9.0.0678 +Problem: Using exclamation marks on :function. +Solution: Use :func and :endfunc as usual. + +Patch 9.0.0679 +Problem: Tests failing with 'smoothscroll', 'number' and "n" in 'cpo'. +Solution: Do not count number column in topline if columns are skipped. + +Patch 9.0.0680 +Problem: Tests failing with 'breakindent', 'number' and "n" in 'cpo'. +Solution: Do count the number column in topline if 'breakindent' is set. + +Patch 9.0.0681 +Problem: "<<<" shows for 'smoothscroll' even when 'showbreak is set. +Solution: When 'showbreak' is set do not display "<<<". + +Patch 9.0.0682 +Problem: Crash when popup with deleted timer is closed. (Igbanam + Ogbuluijah) +Solution: Check the timer still exists. (closes #11301) + +Patch 9.0.0683 +Problem: Cannot specify a time for :echowindow. +Solution: A count can be used to specify the display time. Add + popup_findecho(). + +Patch 9.0.0684 +Problem: Skipped :exe command fails compilation on MS-Windows. +Solution: Adjust return value when skipping. + +Patch 9.0.0685 +Problem: FORTIFY_SOURCE causes a crash in Vim9 script. +Solution: Use a pointer to the first char. (Yee Cheng Chin, closes #11302) + +Patch 9.0.0686 +Problem: The right ALT key does not work on some MS-Windows keyboards. +Solution: Adjust the modifiers based on GetKeyState(). (Anton Sharonov, + closes #11300) + +Patch 9.0.0687 +Problem: "export def" does not work in a nested block. +Solution: Do not handle "export" with a separate function but in the same + command stack. (closes #11304) + +Patch 9.0.0688 +Problem: Debugger does not display the whole command. +Solution: Set ea.cmd before checking for a breakpoint. + +Patch 9.0.0689 +Problem: Compiler warning for unused function. +Solution: Add #ifdef. (John Marriott) + +Patch 9.0.0690 +Problem: Buffer size for expanding tab not correctly computed. +Solution: Correctly use size of end character. + +Patch 9.0.0691 +Problem: lalloc(0) error in listchars test. +Solution: Skip generating text for tab if tab_len is zero. + +Patch 9.0.0692 +Problem: PoE filter files are not recognized. +Solution: Add a pattern to detect PoE filter files. (closes #11305) + +Patch 9.0.0693 +Problem: browse() first argument cannot be a bool. +Solution: Use tv_get_bool_chk() instead of tv_get_number_chk(). + (closes #11308) + +Patch 9.0.0694 +Problem: No native sound support on Mac OS. +Solution: Add sound support for Mac OS. (Yee Cheng Chin, closes #11274) + +Patch 9.0.0695 +Problem: Failing check for dictionary type for const any. +Solution: Check for any type properly. (closes #11310) + +Patch 9.0.0696 +Problem: It is unclear if the +rightleft and +arabic features are actively + being used. +Solution: Disable the features, await feedback. + +Patch 9.0.0697 +Problem: Cursor in wrong position with Visual substitute. +Solution: When restoring 'linebreak' mark the virtual column as invalid. + (closes #11309, closes #11311) + +Patch 9.0.0698 +Problem: VisVim is outdated, does not work with current Visual Studio. +Solution: Remove VisVim. (Martin Tournoij) + +Patch 9.0.0699 +Problem: Tiny build fails. +Solution: Add #ifdef. + +Patch 9.0.0700 +Problem: There is no real need for a "big" build. +Solution: Move common features to "normal" build, less often used features + to the "huge" build. (Martin Tournoij, closes #11283) + +Patch 9.0.0701 +Problem: With 'smoothscroll' the cursor position s not adjusted in a long + line. +Solution: Move the cursor further up or down in the line. + +Patch 9.0.0702 +Problem: Incomplete testing cursor position after change with 'linebreak' + set. +Solution: Add a test and move test cases together. (closes #11313) + +Patch 9.0.0703 +Problem: Failing check for argument type for const any. +Solution: Check for any type properly. (closes #11316) + +Patch 9.0.0704 +Problem: CI runs "tiny" and "small" builds, which are the same. +Solution: Remove the "small" build. (Naruhiko Nishino, closes #11315) + +Patch 9.0.0705 +Problem: Virtual text truncation does not take padding into account. +Solution: Subtract the padding from the available space. (closes #11318) + +Patch 9.0.0706 +Problem: :help in a narrow window always opens at the top. +Solution: Respect 'splitbelow'. (closes #11319) + +Patch 9.0.0707 +Problem: With 'smoothscroll' and 'scrolloff' non-zero the cursor position + is not properly adjusted in a long line. +Solution: Move the cursor further up or down in the line. + +Patch 9.0.0708 +Problem: :confirm does not work properly for a terminal buffer. +Solution: Handle :confirm for a terminal buffer differently. (Yee Cheng + Chin, closes #11312) + +Patch 9.0.0709 +Problem: Virtual text "after" not correct with 'nowrap'. +Solution: Do not display "after" text prop on the next line when 'wrap' is + off. + +Patch 9.0.0710 +Problem: Quitting/unloading/hiding a terminal buffer does not always work + properly. +Solution: Avoid that ":q!" leaves an empty buffer behind. ":bunload!" also + kills the job and unloads the buffer. ":hide" does not unload the + buffer. (Yee Cheng Chin, closes #11323) + +Patch 9.0.0711 +Problem: SubStation Alpha files are not recognized. +Solution: Add patterns for SubStation Alpha files. (closes #11332) + +Patch 9.0.0712 +Problem: Wrong column when calling setcursorcharpos() with zero lnum. +Solution: Set the line number before calling buf_charidx_to_byteidx(). + (closes #11329) + +Patch 9.0.0713 +Problem: <amatch> of MenuPopup event is expanded like a file name. +Solution: Do not expand <amatch> for MenuPopup. (closes #11328) + +Patch 9.0.0714 +Problem: With 'nowrap' two virtual text below not displayed correctly. +Solution: Set text_prop_follows before continuing. Correct for number + column. (closes #11333) + +Patch 9.0.0715 +Problem: Wrong argument for append() gives two error messages. +Solution: When getting an error for a number argument don't try using it as + a string. (closes #11335) + +Patch 9.0.0716 +Problem: With 'nowrap' virtual text "after" does not scroll left. +Solution: Skip part of the virtual text that is left of the window. + (closes #11320) Fix going beyond the last column of the window. + +Patch 9.0.0717 +Problem: Compiler warning for unused variable in tiny build. +Solution: Add #ifdefs. + +Patch 9.0.0718 +Problem: Extra empty line between two virtual text "below" when 'wrap' and + 'number' are set. +Solution: Reset "before" when there is no text in the screen line. + (closes #11334) + +Patch 9.0.0719 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0720 +Problem: MS-Windows GUI may have pixel dust from antialiasing. +Solution: When a character changes also redraw the next one. (issue #8532) + +Patch 9.0.0721 +Problem: Virtual text "above" with padding not displayed correctly. +Solution: Take padding into account when truncating. (closes #11340) + +Patch 9.0.0722 +Problem: Virtual text "after" does not show with 'list' set. +Solution: Do not break out of the loop when another text prop follows. + (closes #11337) + +Patch 9.0.0723 +Problem: Extra empty line below virtual text when 'list' is set. +Solution: Do not reset lcs_eol_one but set text_prop_follows. (closes #11339) + +Patch 9.0.0724 +Problem: Closure in compiled function gets same variable in block. +Solution: At the end of a block to not always reset the variable count. + (issue #11094) + +Patch 9.0.0725 +Problem: Virtual text "after" wraps to next line even when 'wrap' is off + and 'list' is set. +Solution: Do not use the minimum width when 'wrap' is off. (issue #11336) + +Patch 9.0.0726 +Problem: Looping over list of lists and changing the list contents works in + Vim9 script, not in a compiled function. +Solution: Mark the loop variable final instead of const. (closes #11347) + +Patch 9.0.0727 +Problem: Help in the repository differs from patched version too much. +Solution: Make a patch for a few help files. + +Patch 9.0.0728 +Problem: extend() test fails. +Solution: Item is final, not const. + +Patch 9.0.0729 +Problem: The rightleft and arabic features are disabled. +Solution: Re-enable the features, some users want to use the functionality. + +Patch 9.0.0730 +Problem: Startup test fails with right-left feature. +Solution: Do not delete test file too early. + +Patch 9.0.0731 +Problem: clang-tidy configuration files are not recognized. +Solution: Recognize clang-tidy files as yaml. (closes #11350) + +Patch 9.0.0732 +Problem: No check for white space before and after "=<<". (Doug Kearns) +Solution: Check for white space in Vim9 script. (closes #11351) + +Patch 9.0.0733 +Problem: Use of strftime() is not safe. +Solution: Check the return value of strftime(). Use a larger buffer and + correctly pass the available space. (Dominique Pell茅, closes + #11348) + +Patch 9.0.0734 +Problem: Cursor position invalid when scrolling with 'smoothscroll' set. + (Ernie Rael) +Solution: Add w_valid_skipcol and clear flags when it changes. Adjust + w_skipcol after moving the cursor. + +Patch 9.0.0735 +Problem: Breakindent and scrolloff tests fail. +Solution: Temporarily skip the assertions. + +Patch 9.0.0736 +Problem: Quickfix listing does not handle very long messages. +Solution: Use a growarray instead of a fixed size buffer. (Yegappan + Lakshmanan, closes #11357) + +Patch 9.0.0737 +Problem: Lisp word only recognized when a space follows. +Solution: Also match a word at the end of a line. Rename the test. Use a + compiled function to avoid backslashes. + +Patch 9.0.0738 +Problem: Cannot suppress completion "scanning" messages. +Solution: Add the "C" flag in 'shortmess'. (Bjorn Linse, closes #11354) + +Patch 9.0.0739 +Problem: Mouse column not correctly used for popup_setpos. +Solution: Adjust off-by-one error and handle Visual line selection properly. + (Yee Cheng Chin, closes #11356) + +Patch 9.0.0740 +Problem: prop_add_list() gives multiple errors for invalid argument. +Solution: Only give one error message. + +Patch 9.0.0741 +Problem: Cannot specify an ID for each item with prop_add_list(). (Sergey + Vlasov) +Solution: Add an optional fifth number to the item. (closes #11360) + +Patch 9.0.0742 +Problem: Reading past end of the line when compiling a function with + errors. +Solution: Do not return an invalid pointer. Fix skipping redirection. + +Patch 9.0.0743 +Problem: Starting cscope on Unix does not quote the arguments correctly. + (Gary Johnson) +Solution: Move the final quote after the arguments. + +Patch 9.0.0744 +Problem: In script in autoload dir exported variable is not found. (Doug + Kearns) +Solution: Find the variable with the "script#" prefix. (closes #11361) + +Patch 9.0.0745 +Problem: Wrong cursor position when using "gj" and "gk" in a long line. +Solution: Adjust computations for the cursor position and skipcol. Re-enable + tests that pass now, disable failing breakindent test. + +Patch 9.0.0746 +Problem: Breakindent test cases are commented out. +Solution: Adjust expected result to slightly different behavior. Correct + computations for cursor position. + +Patch 9.0.0747 +Problem: Too many #ifdefs. +Solution: Graduate the +cmdline_info feature. (Martin Tournoij, + closes #11330) + +Patch 9.0.0748 +Problem: Kitty may send key without modifiers with CSI u code. +Solution: Handle CSI u code without modifiers. (Trygve Aaberge, + closes #11364) + +Patch 9.0.0749 +Problem: Alloc/free of buffer for each quickfix entry is inefficient. +Solution: Use a shared grow array. (Yegappan Lakshmanan, closes #11365) + +Patch 9.0.0750 +Problem: Crash when popup closed in callback. (Maxim Kim) +Solution: In syntax_end_parsing() check that syn_block is valid. + +Patch 9.0.0751 +Problem: 'scrolloff' does not work well with 'smoothscroll'. +Solution: Make positioning the cursor a bit better. Rename functions. + +Patch 9.0.0752 +Problem: Rprofile files are not recognized. +Solution: Recognize Rprofile files as "r". (closes #11369) + +Patch 9.0.0753 +Problem: Some Ex commands are not in the help index. +Solution: Add the missing commands. Add a script to check all Ex commands + are in the help index. (Yee Cheng Chin, closes #11371) + +Patch 9.0.0754 +Problem: 'indentexpr' overrules lisp indenting in one situation. +Solution: Add "else" to keep the lisp indent. (issue #11327) + +Patch 9.0.0755 +Problem: Huge build on macos always fails on CI. +Solution: Temporarily disable the perl interface. + +Patch 9.0.0756 +Problem: No autocmd event for changing text in a terminal window. +Solution: Add TextChangedT. (Shougo Matsushita, closes #11366) + +Patch 9.0.0757 +Problem: Line number not visible with 'smoothscroll', 'nu' and 'rnu'. +Solution: Put the ">>>" after the line number instead of on top. + +Patch 9.0.0758 +Problem: "precedes" from 'listchars' overwritten by <<< for 'smoothscroll'. +Solution: Keep the "precedes" character. + +Patch 9.0.0759 +Problem: Huge build on macos does not use Perl. +Solution: Re-enable the Perl interface using "dynamic". (closes #11375) + +Patch 9.0.0760 +Problem: Display test for 'listchars' "precedes" fails. +Solution: Correct the expected result. + +Patch 9.0.0761 +Problem: Cannot use 'indentexpr' for Lisp indenting. +Solution: Add the 'lispoptions' option. + +Patch 9.0.0762 +Problem: Build failure. +Solution: Add missing change. + +Patch 9.0.0763 +Problem: MS-Windows: warning for using int for size_t. +Solution: Declare variable as size_t. + +Patch 9.0.0764 +Problem: Indent and option tests fail. +Solution: Change OP_INDENT. Add entry to options test table. + +Patch 9.0.0765 +Problem: With a Visual block a put command column may go negative. +Solution: Check that the column does not become negative. + +Patch 9.0.0766 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0767 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0768 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0769 +Problem: Too many delete() calls in tests. +Solution: Use deferred delete where possible. + +Patch 9.0.0770 +Problem: Quickfix commands may keep memory allocated. +Solution: Free memory when it's a bit much. (Yegappan Lakshmanan, + closes #11379) + +Patch 9.0.0771 +Problem: Cannot always tell the difference between tex and rexx files. +Solution: Recognize tex by a leading backslash. (Martin Tournoij, + closes #11380) + +Patch 9.0.0772 +Problem: The libvterm code is outdated. +Solution: Include libvterm changes from revision 790 to 801. + +Patch 9.0.0773 +Problem: Huge build on MacOS uses dynamic Perl. +Solution: Use built-in Perl, uninstall the brew one. (closes #11382) + +Patch 9.0.0774 +Problem: The libvterm code is outdated. +Solution: Include libvterm changes from revision 802 to 817. Revert some + changes made for C89. + +Patch 9.0.0775 +Problem: MS-Windows: mouse scrolling not supported in the console. +Solution: Add event handling for mouse scroll events. (Christopher + Plewright, closes #11374) + +Patch 9.0.0776 +Problem: MSVC can't have field name "small". +Solution: Rename small to smallfont. + +Patch 9.0.0777 +Problem: Code is indented too much. +Solution: Use an early return. (Yegappan Lakshmanan, closes #11386) + +Patch 9.0.0778 +Problem: Indexing of unknown const type fails during compilation. +Solution: Check for "any" properly. (closes #11389) + +Patch 9.0.0779 +Problem: lsl and lm3 file extensions are not recognized. +Solution: Add *.lsl and *.lm3 patterns. (Doug Kearns, closes #11384) + +Patch 9.0.0780 +Problem: 'scroll' value computed in unexpected location. +Solution: Compute 'scroll' when the window height is changed. (Luuk van + Baal, closes #11387) + +Patch 9.0.0781 +Problem: Workaround to rename "small" to "smallfont" is clumsy. +Solution: Undefine "small" after including windows.h. (Ken Takata) + +Patch 9.0.0782 +Problem: OpenVPN files are not recognized. +Solution: Add patterns for OpenVPN files. (closes #11391) + +Patch 9.0.0783 +Problem: ":!" doesn't do anything but does update the previous command. +Solution: Do not have ":!" change the previous command. (Martin Tournoij, + closes #11372) + +Patch 9.0.0784 +Problem: Text prop "above" not displayed correctly with 'number' and "n" in + 'cpo'. +Solution: Draw the line number column until the line text is reached. + +Patch 9.0.0785 +Problem: Memory leak with empty shell command. +Solution: Free the allocated memory when bailing out. + +Patch 9.0.0786 +Problem: User command does not get number from :tab modifier. +Solution: Include the number. (closes #11393, closes #6901) + +Patch 9.0.0787 +Problem: MS-Windows: mouse scrolling in terminal misbehaves without dll. +Solution: Add #ifdef as a temporary solution. (Christopher Plewright, + closes #11392) + +Patch 9.0.0788 +Problem: ModeChanged autocmd not executed when Visual mode is ended with + CTRL-C. +Solution: Do not trigger the autocmd when got_int is set. (closes #11394) + +Patch 9.0.0789 +Problem: Dummy buffer ends up in a window. +Solution: Disallow navigating to a dummy buffer. + +Patch 9.0.0790 +Problem: Test for dummy buffer does not always produce the E86 error. +Solution: Do not check if the error is produced. + +Patch 9.0.0791 +Problem: At the hit-Enter prompt the End and Home keys may not work. +Solution: Use the special "@" code for End and Home, like it was done for + the cursor keys in patch 8.2.2246. (Trygve Aaberge, closes #11396) + +Patch 9.0.0792 +Problem: MS-Windows: compiler complains about unused function. +Solution: Add #ifdef. (John Marriott) + +Patch 9.0.0793 +Problem: MS-Windows: mouse scroll events only work with the dll. +Solution: Accept CSI codes for MS-Windows without the GUI. (Christopher + Plewright, closes #11401) + +Patch 9.0.0794 +Problem: There is no way to find out if an escape sequence with + modifyOtherKeys has been seen. +Solution: Add a notice with ":verbose map". + +Patch 9.0.0795 +Problem: readblob() always reads the whole file. +Solution: Add arguments to read part of the file. (Ken Takata, + closes #11402) + +Patch 9.0.0796 +Problem: Mapping test fails in some situations. +Solution: Find the line with the verbose information. + +Patch 9.0.0797 +Problem: Order of assert function arguments is reverted. +Solution: Swap the arguments. (closes #11399) + +Patch 9.0.0798 +Problem: Clang format configuration files are not recognized. +Solution: Use yaml for Clang format configuration files. (Marwin Glaser, + closes #11398) + +Patch 9.0.0799 +Problem: In compiled function ->() on next line not recognized. +Solution: Also check for "(". (closes #11405) + +Patch 9.0.0800 +Problem: Compiler complains about repeated typedef. +Solution: Remove one typedef. + +Patch 9.0.0801 +Problem: The modifyOtherKeys flag is set when it should not. +Solution: Do not handle special key codes with a modifier value above 16 as + a modifyOtherKeys value. (issue #11403) + +Patch 9.0.0802 +Problem: MS-Windows: cannot map console mouse scroll events. +Solution: Change CSI to K_SPECIAL when checking for a mapping. (Christopher + Plewright, closes #11410) + +Patch 9.0.0803 +Problem: readblob() cannot read from character device. +Solution: Use S_ISCHR() to not check the size. (Ken Takata, closes #11407) + +Patch 9.0.0804 +Problem: Crash when trying to divide the largest negative number by -1. +Solution: Handle this case specifically. + +Patch 9.0.0805 +Problem: Filetype autocmd may cause freed memory access. +Solution: Set the quickfix-busy flag while filling the buffer. + +Patch 9.0.0806 +Problem: 'langmap' works differently when there are modifiers. +Solution: Only apply 'langmap' to a character where modifiers have no + effect. (closes #11395, closes #11404) + +Patch 9.0.0807 +Problem: With 'smoothscroll' typing "0" may not go to the first column. +Solution: Recompute w_cline_height when needed. Do not scroll up when it + would move the cursor. + +Patch 9.0.0808 +Problem: jsonnet filetype detection has a typo. +Solution: Change "libjsonnet" to "libsonnet". (Maxime Brunet, closes #11412) + +Patch 9.0.0809 +Problem: Test for job writing to buffer fails. +Solution: Correct w_topline when deleting a buffer line. + +Patch 9.0.0810 +Problem: readblob() returns empty when trying to read too much. +Solution: Return what is available. + +Patch 9.0.0811 +Problem: Error if :echowin is preceded by a command modifier. +Solution: Do not give an error for range when there is a modifier. + (closes #11414) + +Patch 9.0.0812 +Problem: GUI mouse scrollwheel mappings don't work. +Solution: Add check for "gui.in_use". (Christopher Plewright, closes #11418) + +Patch 9.0.0813 +Problem: Kitty terminal is not recognized. +Solution: Recognize Kitty by the termresponse and then do not set + seenModifyOtherKeys, since Kitty doesn't support that. + (issue #11413) + +Patch 9.0.0814 +Problem: Aws config files are not recognized. +Solution: Use "confini" for aws config files. (Justin M. Keyes, + closes #11416) + +Patch 9.0.0815 +Problem: ":!" does not switch to the alternate screen. +Solution: For ":!" don't clear the previous command. (closes #11420, + closes #11409) + +Patch 9.0.0816 +Problem: CTRL-Z at end of file is always dropped. +Solution: Add the 'endoffile' option, like the 'endofline' option. + (closes #11408, closes #11397) + +Patch 9.0.0817 +Problem: Build error. +Solution: correct variable name. + +Patch 9.0.0818 +Problem: "!ls" does not work. +Solution: Do not free memory that is in use. + +Patch 9.0.0819 +Problem: Still a build error, tests are failing. +Solution: Correct recent changes. Add missing init for 'eof'. + +Patch 9.0.0820 +Problem: Memory leak with empty shell command. +Solution: Free the empty string. + +Patch 9.0.0821 +Problem: Memory leak with empty shell command. +Solution: Free the empty string. + +Patch 9.0.0822 +Problem: Crash when dragging the statusline with a mapping. +Solution: Check for valid window pointer. (issue #11427) + +Patch 9.0.0823 +Problem: Mouse drag test fails. +Solution: Only reset the mouse click flag when actually switching to another + tab page. Disable test that keeps failing. + +Patch 9.0.0824 +Problem: Crash when using win_move_separator() in other tab page. +Solution: Check for valid window in current tab page. + (closes #11479, closes #11427) + +Patch 9.0.0825 +Problem: Cannot drag an entry in the tabpage line. +Solution: Clear dragwin instead of got_click. (closes #11483, + closes #11482) + +Patch 9.0.0826 +Problem: If 'endofline' is set the CTRL-Z may be written in the wrong + place. +Solution: Write CTRL-Z at the end of the file. Update the help to explain + the possibilities better. (Ken Takata, closes #11486) + +Patch 9.0.0827 +Problem: The <Home> key in tmux doesn't work when 'term' is set to "xterm". + (Dominique Pell茅) +Solution: Only use '@' in a termcap key entry for "1" when ";" follows. + (closes #11429) + +Patch 9.0.0828 +Problem: Various typos. +Solution: Correct typos. (closes #11432) + +Patch 9.0.0829 +Problem: Wrong counts in macro comment. +Solution: Update the value counts. (closes #11480) + +Patch 9.0.0830 +Problem: Compiling with Perl on Mac 12 fails. +Solution: Suppress infinite warnings. (closes #11499) + +Patch 9.0.0831 +Problem: Compiler warning for redefining HAVE_DUP. +Solution: Undefine HAVE_DUP if needed. (Ozaki Kiichi, closes #11484) + +Patch 9.0.0832 +Problem: Deprecation warning causes build failure. +Solution: Suppress deprecation warning. (closes #11503) + +Patch 9.0.0833 +Problem: Mac: no +sound feature in huge build. +Solution: Enable +sound in Mac huge build. (closes #11497) + +Patch 9.0.0834 +Problem: Warning for missing return type. +Solution: Add "int". (San James, closes #11496) + +Patch 9.0.0835 +Problem: The window title is not redrawn when 'endoffile' changes. +Solution: redraw the window title when 'endoffile' is changed. (Ken Takata, + closes #11488) + +Patch 9.0.0836 +Problem: Wrong error when using extend() with funcref. +Solution: Better check the variable type. (closes #11468, closes #11455) + +Patch 9.0.0837 +Problem: append() reports failure when not appending anything. +Solution: Only report failure when appending something. (closes #11498) + +Patch 9.0.0838 +Problem: Compiler warnings for unused variables. +Solution: Adjust #ifdef and remove unused variables. (John Marriott) + +Patch 9.0.0839 +Problem: Test may fail depending on sequence of events. +Solution: Accept error codes in either order. (Yee Cheng Chin, + closes #11510) + +Patch 9.0.0840 +Problem: Cannot change a slice of a const list. (Takumi KAGIYAMA) +Solution: Remove the const flag from the slice type. (closes #11490) + +Patch 9.0.0841 +Problem: deletebufline() does not always return 1 on failure. +Solution: Refactor the code to make it work more predictable. (closes #11511) + +Patch 9.0.0842 +Problem: Unicode range for Apple SF symbols is outdated. +Solution: Update to SF Symbols 4. (Yee Cheng Chin, closes #11474) + +Patch 9.0.0843 +Problem: VHS tape files are not recognized. +Solution: Add a filetype pattern. (Carlos Alexandro Becker, closes #11452) + +Patch 9.0.0844 +Problem: Handling 'statusline' errors is spread out. +Solution: Pass the option name to the lower levels so the option can be + reset there when an error is encountered. (Luuk van Baal, + closes #11467) + +Patch 9.0.0845 +Problem: Shell command with just space gives strange error. +Solution: Skip white space at start of the argument. (Christian Brabandt, + Shane-XB-Qian, closes #11515, closes #11495) + +Patch 9.0.0846 +Problem: Using assert_fails() may cause hit-enter prompt. +Solution: Set no_wait_return. (closes #11522) + +Patch 9.0.0847 +Problem: CI: not totally clear what MS-Windows version is used. +Solution: Show the Windows version. (Ken Takata, closes #11524) + +Patch 9.0.0848 +Problem: Help item for --log argument is not aligned nicely. +Solution: Add a Tab. (Ken Takata, closes #11521) + +Patch 9.0.0849 +Problem: Terminal mouse test is a bit flaky. +Solution: Add WaitFor() calls. (James McCoy closes #11519) Tune wait times + to reduce flakiness. + +Patch 9.0.0850 +Problem: MS-Windows Terminal has unstable color control. +Solution: Do not try to read the old command prompt colortable, use modern + VT sequences. (Christopher Plewright, closes #11450, + closes #11373) + +Patch 9.0.0851 +Problem: Terminal mouse test is still flaky. +Solution: Also use WaitForAssert(). + +Patch 9.0.0852 +Problem: Crypt test is skipped if xxd is not found. +Solution: Find xxd where it was supposed to be build. + +Patch 9.0.0853 +Problem: Terminal mouse test is still flaky on MacOS M1. +Solution: Also wait for the file to have some contents. + +Patch 9.0.0854 +Problem: No proper test for what 9.0.0846 fixes. +Solution: Run test in a terminal so that the hit-enter prompt can show up. + (closes #11523) + +Patch 9.0.0855 +Problem: Comment not located above the code it refers to. +Solution: Move the comment. (closes #11527) + +Patch 9.0.0856 +Problem: MS-Windows: executable not found when running individual test. +Solution: Also look for vimd.exe. (Christopher Plewright, closes #11525) + +Patch 9.0.0857 +Problem: Selecting MSVC 2017 does not set $PLATFORM. +Solution: Use $VSCMD_ARG_TGT_ARCH. (Ken Takata, closes #11485) + +Patch 9.0.0858 +Problem: "!!sort" in a closed fold sorts too many lines. +Solution: Round to end of fold after adding the line count. (closes #11487) + +Patch 9.0.0859 +Problem: Compiler warning for unused variable. +Solution: Add #ifdef. + +Patch 9.0.0860 +Problem: MS-Windows: windres fails with clang 15.0.4. +Solution: Use llvm-windres. (John Marriott) + +Patch 9.0.0861 +Problem: Solution for "!!sort" in closed fold is not optimal. +Solution: Use a different range instead of the subtle difference in handling + a range with an offset. (issue #11487) + +Patch 9.0.0862 +Problem: Default value of 'endoffile' is wrong. +Solution: The default must be 'noendoffile'. + +Patch 9.0.0863 +Problem: col() and charcol() only work for the current window. +Solution: Add an optional winid argument. (Yegappan Lakshmanan, + closes #11466, closes #11461) + +Patch 9.0.0864 +Problem: Crash when using "!!" without a previous shell command. +Solution: Check "prevcmd" is not NULL. (closes #11487) + +Patch 9.0.0865 +Problem: Duplicate arguments are not always detected. +Solution: Expand to full path before comparing arguments. (Nir Lichtman, + closes #11505, closes #9402) + +Patch 9.0.0866 +Problem: No test for what patch 8.2.2207 fixes. +Solution: Add a test case. (closes #11531) + +Patch 9.0.0867 +Problem: Wildmenu redrawing code is spread out. +Solution: Refactor to move code together. (closes #11528) + +Patch 9.0.0868 +Problem: MS-Windows: after Vim exits console resizing does not work + properly. +Solution: Restore screen behavior checks for various WT and VTP + combinations. (Christopher Plewright, closes #11526, + closes #11507) + +Patch 9.0.0869 +Problem: Bogus error when string used after :elseif. +Solution: Do not consider a double quote the start of a comment. + (closes #11534) + +Patch 9.0.0870 +Problem: Get E967 when using text property in quickfix window. (Sergey + Vlasov) +Solution: Do not add an extra NUL and compute the text length correctly. + (closes #11513) + +Patch 9.0.0871 +Problem: Using freed memory when clearing augroup at more prompt. +Solution: Delay clearing augroup until it's safe. (closes #11441) + +Patch 9.0.0872 +Problem: Code is indented more than needed. +Solution: Return early. (Yegappan Lakshmanan, closes #11538) + +Patch 9.0.0873 +Problem: Using freed memory when executing mapclear at the more prompt. +Solution: Do not clear mappings while listing them. (closes #11438) + +Patch 9.0.0874 +Problem: Using freed memory when executing unmenu at the more prompt. +Solution: Do not clear menus while listing them. (closes #11439) + +Patch 9.0.0875 +Problem: Using freed memory when executing delfunc at the more prompt. +Solution: Check function list not changed in another place. (closes #11437) + +Patch 9.0.0876 +Problem: Code is indented more than needed. +Solution: Split ExpandEscape() in two. (Yegappan Lakshmanan, closes #11539) + +Patch 9.0.0877 +Problem: Using freed memory with :comclear while listing commands. +Solution: Bail out when the command list has changed. (closes #11440) + +Patch 9.0.0878 +Problem: Coverity warns for dead code. +Solution: Remove the dead code. + +Patch 9.0.0879 +Problem: Unnecessary nesting in makefile. +Solution: Join "else" and "ifeq". (Ken Takata, closes #11547) + +Patch 9.0.0880 +Problem: Preprocessor indenting is off. +Solution: Adjust preprocessor indentation. (Ken Takata, closes #11546) + +Patch 9.0.0881 +Problem: Cannot get the currently showing mouse shape. +Solution: Add getmouseshape(). + +Patch 9.0.0882 +Problem: Using freed memory after SpellFileMissing autocmd uses bwipe. +Solution: Bail out if the window no longer exists. + +Patch 9.0.0883 +Problem: A silent mapping may cause dots on the command line. +Solution: Don't show dots for completion if they are not going to be removed + again. (closes #11501) + +Patch 9.0.0884 +Problem: Mouse shape remains in op-pending mode after failed change. +Solution: Reset finish_op and restore it. (closes #11545) + +Patch 9.0.0885 +Problem: Informational message has an error message number. +Solution: Use a message without an error number. (closes #11530) + +Patch 9.0.0886 +Problem: Horizontal mouse scroll only works in the GUI. +Solution: Make horizontal mouse scroll also work in a terminal. + (Christopher Plewright, closes #11448) + +Patch 9.0.0887 +Problem: Cannot easily try out what codes various keys produce. +Solution: Add a script to gather key code information, with an initial list + of codes to compare with. + +Patch 9.0.0888 +Problem: MS-Windows GUI: CTRL-] does not work on Swiss keyboard. +Solution: Check the key code and don't consider it as a dead key. (Aedin + Louis Xavier, closes #11556) + +Patch 9.0.0889 +Problem: Keycode check script has a few flaws. +Solution: Sort on terminal name. Ignore XTGETTCAP responses. Check for + version and status response. Update entries. + +Patch 9.0.0890 +Problem: No test for what patch 9.0.0827 fixes. +Solution: Add a test (still doesn't fail when fix is reverted). + +Patch 9.0.0891 +Problem: Virtual text below after match has wrong highlight. +Solution: Restore search_attr only after the virtual text. + (closes #11446) + +Patch 9.0.0892 +Problem: May redraw when not needed, causing slow scrolling. +Solution: Do not redraw when w_skipcol doesn't change. When w_skipcol + changes only redraw from the top. (issue #11559) + +Patch 9.0.0893 +Problem: 'smoothscroll' cursor calculations wrong when 'number' is set. +Solution: Correct the code that computes the width. (closes #11492) + +Patch 9.0.0894 +Problem: Virtual text property highlight ignores window background. +Solution: Combine text prop attribute with win_attr into extra_attr. + (closes #11462) + +Patch 9.0.0895 +Problem: File renamed twice in test; missing feature check. +Solution: Remove a rename() call. Add check for cryptv feature. + (closes #11564) + +Patch 9.0.0896 +Problem: Test for home key fails when 'term' is "tmux". +Solution: Only save termcap entries that exist. Adjust code for xHome to + what xterm uses. (closes #11566) + +Patch 9.0.0897 +Problem: Clinical Quality Language files are not recognized. +Solution: Add the "*.cql" pattern. (Matthew Gramigna, closes #11452) + +Patch 9.0.0898 +Problem: With 'smoothscroll' cursor is one screen line too far down. (Ernie + Rael) +Solution: Add a test that currently has the wrong result so that a fix can + be made. (issue #11436) + +Patch 9.0.0899 +Problem: The builtin terminals are in one long list. +Solution: Refactor into multiple lists and an index of the lists. + +Patch 9.0.0900 +Problem: Cursor moves too far with 'smoothscroll'. +Solution: Only move as far as really needed. (Yee Cheng Chin, closes #11504) + +Patch 9.0.0901 +Problem: Setting w_leftcol and handling side effects is confusing. +Solution: Use a function to set w_leftcol() and handle side effects. + +Patch 9.0.0902 +Problem: Some mouse scroll code is not in a good place. +Solution: Refactor the code. (Christopher Plewright, closes #11561) + +Patch 9.0.0903 +Problem: Key code checker doesn't check modifyOtherKeys resource. +Solution: Request the modifyOtherKeys resource value. Drop resource DCS + responses. + +Patch 9.0.0904 +Problem: Various comment and indent flaws. +Solution: Improve comments and indenting. + +Patch 9.0.0905 +Problem: Virtual text after the line wraps when 'wrap' is off. +Solution: Only set text_prop_follows when wrapping. (closes #11463) + +Patch 9.0.0906 +Problem: Mouse scroll code is not optimal. +Solution: Properly organise Normal mode, Insert mode and common code. + (Christopher Plewright, closes #11572) + +Patch 9.0.0907 +Problem: Restoring window after WinScrolled may fail. +Solution: Lock the window layout when triggering WinScrolled. + +Patch 9.0.0908 +Problem: With 'smoothscroll' cursor may end up in wrong position. +Solution: Correct the computation of screen lines. (Yee Cheng Chin, + closes #11502) + +Patch 9.0.0909 +Problem: Error message for layout change does not match action. +Solution: Pass the command to where the error is given. (closes #11573) + +Patch 9.0.0910 +Problem: Setting lines in another buffer may not work well. +Solution: Make sure the buffer being changed has a window. (issue #11558) + +Patch 9.0.0911 +Problem: With 'smoothscroll' set mouse click position may be wrong. +Solution: Adjust computations for w_skipcol. (Yee Cheng Chin, closes #11514) + +Patch 9.0.0912 +Problem: libvterm with modifyOtherKeys level 2 does not match xterm. +Solution: Adjust key code escape sequences to be the same as what xterm + sends in modifyOtherKeys level 2 mode. Check the value of + no_reduce_keys before using it. + +Patch 9.0.0913 +Problem: Only a change in the current window triggers the WinScrolled + event. +Solution: Trigger WinScrolled if any window scrolled or changed size. + (issue #11576) + +Patch 9.0.0914 +Problem: deletebufline() may move marks in the wrong window. +Solution: Find a window for the buffer being changed. (closes #11583) + +Patch 9.0.0915 +Problem: WinScrolled may trigger immediately when defined. +Solution: Initialize the fields in all windows. (closes #11582) + +Patch 9.0.0916 +Problem: getbufline() is inefficient for getting a single line. +Solution: Add getbufoneline(). + +Patch 9.0.0917 +Problem: The WinScrolled autocommand event is not enough. +Solution: Add WinResized and provide information about what changed. + (closes #11576) + +Patch 9.0.0918 +Problem: MS-Windows: modifier keys do not work with mouse scroll events. +Solution: Use K_SPECIAL instead of CSI for the modifier keys. (Christopher + Plewright, closes #11587) + +Patch 9.0.0919 +Problem: Build failure with tiny features. +Solution: Adjust #ifdef's. + +Patch 9.0.0920 +Problem: Cannot find an import prefixed with "s:". (Doug Kearns) +Solution: Skip over the "s:". (closes #11585) + +Patch 9.0.0921 +Problem: Missing defined(PROTO) in #ifdef. +Solution: Adjust #ifdef so that proto works with different features. + Clean up some preprocessor indenting. + +Patch 9.0.0922 +Problem: Mermaid files are not recognized. +Solution: Add patterns for Mermaid. (Crag MacEachern) + +Patch 9.0.0923 +Problem: Second SIGWINCH signal may be ignored. +Solution: When set_shellsize() is busy when called then run the inner code + again when it's done. (issue #424) + +Patch 9.0.0924 +Problem: The first termcap entry of a builtin termcap is not used. +Solution: Remove increment that was previously skipping the KS_NAME entry. + +Patch 9.0.0925 +Problem: Two conditions are always false. +Solution: Remove the conditions. Update return value types to make clear + what could be returned. (closes #11593) + +Patch 9.0.0926 +Problem: Coverity warns for not using return value of dict_add(). +Solution: When dict_add() fails then don't call hash_remove(). + +Patch 9.0.0927 +Problem: Coverity warns for using a NULL pointer. +Solution: Check for memory allocation failure. + +Patch 9.0.0928 +Problem: Using Ruby LDFLAGS may cause build problems. +Solution: Do not add Ruby LDFLAGS to Vim's LDFLAGS. (Zdenek Dohnal, + closes #11592) + +Patch 9.0.0929 +Problem: Build failure with tiny version. (Tony Mechelynck) +Solution: Add #ifdef. + +Patch 9.0.0930 +Problem: Cannot debug the Kitty keyboard protocol with TermDebug. +Solution: Add Kitty keyboard protocol support to the libvterm fork. + Recognize the escape sequences that the protocol generates. Add + the 'keyprotocol' option to allow the user to specify for which + terminal what protocol is to be used, instead of hard-coding this. + Add recognizing the kitty keyboard protocol status. + +Patch 9.0.0931 +Problem: MS-Windows: mouse column limited to 223. +Solution: Use two bytes for each mouse coordinate. Add the mouse position + to scroll events. (Christopher Plewright, closes #11597) + +Patch 9.0.0932 +Problem: Oblivion files are not recognized. +Solution: Recognize Oblivion files and alike as "obse". (closes #11540) + +Patch 9.0.0933 +Problem: Kitty shows "already at oldest change" on startup. +Solution: When receiving the keyboard protocol state return the ignore key. + (closes #11601) + +Patch 9.0.0934 +Problem: Various code formatting issues. +Solution: Improve code formatting. + +Patch 9.0.0935 +Problem: When using dash it may not be recognize as filetype "sh". +Solution: Add checks for "dash". (Eisuke Kawashima, closes #11600) + +Patch 9.0.0936 +Problem: Wrong type for "isunnamed" returned by getreginfo(). +Solution: Use VAR_BOOL instead of VAR_SPECIAL. (closes #11598) + +Patch 9.0.0937 +Problem: Forked repositories send out useless email. +Solution: When Coverity fails to run just ignore it. (Shane-XB-Qian, + closes #11604) + +Patch 9.0.0938 +Problem: MS-Windows: debug executable not found when running test. +Solution: Look for vimd.exe. (Christopher Plewright, closes #11602) + +Patch 9.0.0939 +Problem: Still using simplified mappings when using the kitty keyboard + protocol. +Solution: Use the kitty_protocol_state value to decide whether to use + simplified mappings. Improve how seenModifyOtherKeys is set and + reset. + +Patch 9.0.0940 +Problem: Crash when typing a letter in a terminal window. (Shane-XB-Qian) +Solution: Use the "vterm" variable instead of getting the terminal pointer + from the current buffer. (closes #11608) + +Patch 9.0.0941 +Problem: CI failures in sound dummy. +Solution: Temporarily disable building sound dummy. (closes #11610) + +Patch 9.0.0942 +Problem: Workflow Description Language files are not recognized. +Solution: Add a pattern for the "wdl" filetype. (Matt Dunford, + closes #11611) + +Patch 9.0.0943 +Problem: Pretending to go out of Insert mode when Esc is received has side + effects. +Solution: When the kitty keyboard protocol is enabled expect Esc to always + be the start of an escape sequence. + +Patch 9.0.0944 +Problem: 'cursorline' causes virtual text highlight to continue. +Solution: Save and restore line_attr. (closes #11588) + +Patch 9.0.0945 +Problem: Failures in the cursorline test. +Solution: Reset extra_attr only after a text property. + +Patch 9.0.0946 +Problem: CI: Error in Coverity flow is not reported. +Solution: Use another way to avoid errors in a forked repository. (Ken + Takata, closes #11609) + +Patch 9.0.0947 +Problem: Invalid memory access in substitute with function that goes to + another file. +Solution: Check for text locked in CTRL-W gf. + +Patch 9.0.0948 +Problem: 'ttyfast' is set for arbitrary terminals. +Solution: Always set 'ttyfast'. (closes #11549) + +Patch 9.0.0949 +Problem: Crash when unletting a variable while listing variables. +Solution: Disallow changing a hashtable while going over the entries. + (closes #11435) + +Patch 9.0.0950 +Problem: The pattern "\_s\zs" matches at EOL. +Solution: Make the pattern "\_s\zs" match at the start of the next line. + (closes #11617) + +Patch 9.0.0951 +Problem: Trying every character position for a match is inefficient. +Solution: Use the start position of the match ignoring "\zs". + +Patch 9.0.0952 +Problem: Eclipse preference files are not recognized. +Solution: Add a pattern to use "jproperties" for Eclipse preference files. + (closes #11618) + +Patch 9.0.0953 +Problem: Part of making search more efficient is missing. +Solution: Add the change in searchit(). + +Patch 9.0.0954 +Problem: Cannot detect whether modifyOtherKeys is enabled. +Solution: Use XTQMODKEYS introduced by xterm version 377 to request the + modifyOtherKeys level. Update the keycode check results. + +Patch 9.0.0955 +Problem: Libvterm does not support the XTQMODKEYS request. +Solution: Implement the XTQMODKEYS request and response. Update the keycode + check results. + +Patch 9.0.0956 +Problem: Terminal tests fail when using key with modifier. +Solution: Use the modifyOtherKeys encoding when using RunVimInTerminal(). + +Patch 9.0.0957 +Problem: Tests fail without the terminal feature. +Solution: Move functions to another utility script. + +Patch 9.0.0958 +Problem: Messages test is flaky. +Solution: Add a short delay. + +Patch 9.0.0959 +Problem: Error when using the "File Settings / Text Width" menu. +Solution: Use str2nr(). (closes #11624) + +Patch 9.0.0960 +Problem: Error when using the "Tools / Spelling / Find More Languages" + menu. +Solution: Remove "<SID>". Reset "g:menutrans_set_lang_to" when 'encoding' + changes. (closes #11625) + +Patch 9.0.0961 +Problem: Using deletebufline() may jump to another window. +Solution: Do not use a window where the buffer was only in the past. + (closes #11594) + +Patch 9.0.0962 +Problem: Virtual text below cannot be placed below empty lines. +Solution: Add one character. (James Alvarado, closes #11606, closes #11520) + +Patch 9.0.0963 +Problem: Function name does not match autocmd event name. +Solution: Rename "optionsset" to "optionset". (closes #11630) + +Patch 9.0.0964 +Problem: Status line of other window not redrawn when dragging it when + 'splitkeep' is set to "screen". +Solution: Set w_redr_status earlier. (Luuk van Baal, closes #11635, + closes #11632) + +Patch 9.0.0965 +Problem: Using one window for executing autocommands is insufficient. +Solution: Use up to five windows for executing autocommands. + +Patch 9.0.0966 +Problem: Some compilers don't allow a declaration after a label. +Solution: Move the declaration to the start of the block. (John Marriott) + +Patch 9.0.0967 +Problem: Leaking memory from autocmd windows. +Solution: Free window when auc_win is not NULL. + +Patch 9.0.0968 +Problem: GUI mouse event test is a bit flaky. +Solution: Mark the test case as flaky. Move test function failure checks to + a separate test function. + +Patch 9.0.0969 +Problem: Matchparen highlight is not updated when switching buffers. +Solution: Listen to the BufLeave and the BufWinEnter autocmd events. + (closes #11626) + +Patch 9.0.0970 +Problem: Coverity warns for uninitialized variable. +Solution: Initialize "ren_ret". + +Patch 9.0.0971 +Problem: Escape sequences not recognized without the termresponse feature. +Solution: Recognize escape sequences to avoid display mess up. + +Patch 9.0.0972 +Problem: Build failure on some systems. +Solution: Adjust #ifdefs related to the termresponse feature. + +Patch 9.0.0973 +Problem: Kitty keyboard protocol key not decoded when it has an unsupported + modifier, such as NumLock. +Solution: Accept a key with any modifier. (closes #11638) + +Patch 9.0.0974 +Problem: Even when Esc is encoded a timeout is used. +Solution: Use K_ESC when an encoded Esc is found. + +Patch 9.0.0975 +Problem: Virtual text below an empty line is misplaced when 'number' is + set. +Solution: Adjust the computations. (closes #11629) + +Patch 9.0.0976 +Problem: Enabling the kitty keyboard protocol uses push/pop. +Solution: Use the start/stop codes to avoid unpredictable behavior. + +Patch 9.0.0977 +Problem: It is not easy to see what client-server commands are doing. +Solution: Add channel log messages if ch_log() is available. Move the + channel logging and make it available with the +eval feature. + +Patch 9.0.0978 +Problem: Build errors without the +channel feature. (John Marriott) +Solution: Adjust #ifdefs. + +Patch 9.0.0979 +Problem: ch_log() text can be hard to find in the log file. +Solution: Prepend "ch_log()" to the text. + +Patch 9.0.0980 +Problem: The keyboard state response may end up in a shell command. +Solution: Only request the keyboard protocol state when the typeahead is + empty, no more commands are following and not exiting. Add the + t_RK termcap entry for this. + +Patch 9.0.0981 +Problem: Build error in tiny version. +Solution: Add #ifdef. + +Patch 9.0.0982 +Problem: 'cursorline' not drawn before virtual text below. +Solution: Add the 'cursorline' attribute to the empty space. (closes #11647) + +Patch 9.0.0983 +Problem: Stray characters displayed when starting the GUI. +Solution: Add t_RK to the list of terminal options. + +Patch 9.0.0984 +Problem: GUI: remote_foreground() does not always work. (Ron Aaron) +Solution: For GTK use gtk_window_set_keep_above(). (issue #11641) + +Patch 9.0.0985 +Problem: When using kitty keyboard protocol function keys may not work. + (Kovid Goyal) +Solution: Recognize CSI ending in [ABCDEFHPQRS] also when the termcap + entries are not specified. (closes #11648) + +Patch 9.0.0986 +Problem: Build failure with tiny version. +Solution: Add #ifdef. + +Patch 9.0.0987 +Problem: File missing from list of distributed files. +Solution: Add logfile.pro to list of distributed files. + +Patch 9.0.0988 +Problem: Using feedkeys() does not show up in a channel log. +Solution: Add ch_log() calls and clean up the code. + +Patch 9.0.0989 +Problem: Popupwin test is more flaky on MacOS. +Solution: Use a longer wait time. + +Patch 9.0.0990 +Problem: Callback name argument is changed by setqflist(). +Solution: Use the expanded function name for the callback, do not store it + in the argument. (closes #11653) + +Patch 9.0.0991 +Problem: Crash when reading help index with various options set. (Marius + Gedminas) +Solution: Do not set wlv.c_extra to NUL when wlv.p_extra is NULL. + (closes #11651) + +Patch 9.0.0992 +Problem: Vim9 script: get E1096 when comment follows return. +Solution: Adjust condition for return without expression. (closes #11654) + +Patch 9.0.0993 +Problem: Display errors when adding or removing text property type. +Solution: Perform a full redraw. Only use text properties for which the + type is defined. (closes #11655) + +Patch 9.0.0994 +Problem: Tests for empty prop type name fail. +Solution: Correct the error number. + +Patch 9.0.0995 +Problem: Padding before virtual text below is highlighted when 'number' and + 'nowrap' are set. +Solution: Save and restore n_attr_skip. (closes #11643) + +Patch 9.0.0996 +Problem: If 'keyprotocol' is empty "xterm" still uses modifyOtherKeys. +Solution: Remove t_TI, t_RK and t_TE from the "xterm" builtin termcap and + let the default value of 'keyprotocol' add those. + +Patch 9.0.0997 +Problem: Coverity warns for dead code. +Solution: Don't use ASCII_ISUPPER() for a negative value. + +Patch 9.0.0998 +Problem: "gk" may reset skipcol when not needed. +Solution: Only reset skipcol if the cursor column is less. + +Patch 9.0.0999 +Problem: Memory may leak. +Solution: Free the sound callback function name if it was allocated. + +Patch 9.0.1000 +Problem: With 'smoothscroll' skipcol may be reset unnecessarily. +Solution: Check the line does actually fit in the window. + +Patch 9.0.1001 +Problem: Classes are not documented or implemented yet. +Solution: Make the first steps at documenting Vim9 objects, classes and + interfaces. Make initial choices for the syntax. Add a skeleton + implementation. Add "public" and "this" in the command table. + +Patch 9.0.1002 +Problem: Command list test fails. +Solution: Add commands added to the list. + +Patch 9.0.1003 +Problem: Tiny build fails. +Solution: Remove #ifdef from error message. + +Patch 9.0.1004 +Problem: Suspend test sometimes fails on MacOS. +Solution: Wait a short while for terminal responses. + +Patch 9.0.1005 +Problem: A failed test may leave a swap file behind. +Solution: Delete the swap file to avoid another test to fail. Use another + file name. + +Patch 9.0.1006 +Problem: Suspend test still sometimes fails on MacOS. +Solution: Wait a little while for terminal responses. + +Patch 9.0.1007 +Problem: There is no way to get a list of swap file names. +Solution: Add the swapfilelist() function. Use it in the test script to + clean up. Remove deleting individual swap files. + +Patch 9.0.1008 +Problem: Test for swapfilelist() fails on MS-Windows. +Solution: Only check the tail of the path. Mark a test as flaky. + +Patch 9.0.1009 +Problem: Test for catch after interrupt is flaky on MS-Windows. +Solution: Mark the test as flaky. + +Patch 9.0.1010 +Problem: Stray warnings for existing swap files. +Solution: Wipe out the buffer until it has no name and no swap file. + +Patch 9.0.1011 +Problem: ml_get error when using screenpos(). +Solution: Give an error for the line number. (closes #11661) + +Patch 9.0.1012 +Problem: Tests may get stuck in buffer with swap file. +Solution: Bail out when bwipe! doesn't get another buffer. + +Patch 9.0.1013 +Problem: Suspend test often fails on Mac OS. +Solution: Make t_RP empty. + +Patch 9.0.1014 +Problem: Zir files are not recognized. +Solution: Add a pattern for Zir files. (closes #11664) + +Patch 9.0.1015 +Problem: Without /dev/urandom srand() seed is too predictable. +Solution: Use micro seconds and XOR with process ID. (Yasuhiro Matsumoto, + closes #11656) + +Patch 9.0.1016 +Problem: screenpos() does not count filler lines for diff mode. +Solution: Add filler lines. (closes 11658) + +Patch 9.0.1017 +Problem: Test for srand() fails on MS-Windows. +Solution: Do not expect the same result a second time. + +Patch 9.0.1018 +Problem: Suspend test still fails on Mac OS. +Solution: Make 'keyprotocol' empty. + +Patch 9.0.1019 +Problem: 'smoothscroll' and virtual text above don't work together. + (Yee Cheng Chin) +Solution: Skip virtual text above when w_skipcol is non-zero. + (closes #11665) + +Patch 9.0.1020 +Problem: Tests call GetSwapFileList() before it is defined. +Solution: Move the call to after defining the function. (Christopher + Plewright) + +Patch 9.0.1021 +Problem: Test trips over g:name. +Solution: Delete g:name after using it. + +Patch 9.0.1022 +Problem: Suspend test fails on Mac OS when suspending Vim. +Solution: Make 'keyprotocol' empty. + +Patch 9.0.1023 +Problem: MS-Windows: dynamic loading of libsodium doesn't work. +Solution: Add "randombytes_random". (Ken Takata, closes #11667) + +Patch 9.0.1024 +Problem: CI doesn't use the latest FreeBSD version. +Solution: Go from 12.3 to 12.4. (closes #11423) + +Patch 9.0.1025 +Problem: WinScrolled is not triggered when filler lines change. +Solution: Add "topfill" to the values that WinScrolled triggers on. + (closes #11668) + +Patch 9.0.1026 +Problem: type of w_last_topfill is wrong. +Solution: Use "int" instead of "linenr_T". (closes #11670) + +Patch 9.0.1027 +Problem: LGTM is soon shutting down. +Solution: Remove LGTM from CI. (closes #11671) + +Patch 9.0.1028 +Problem: Mouse shape test is flaky, especially on Mac OS. +Solution: Instead of starting all timers at the same time, start the next + one in the callback of the previous one. (Yee Cheng Chin, + closes #11673) Also use "bwipe!" instead of "close!" to avoid + swap files remaining. + +Patch 9.0.1029 +Problem: Autoload directory missing from distribution. +Solution: Add the autoload/zig directory to the list of distributed files. + +Patch 9.0.1030 +Problem: Using freed memory with the cmdline popup menu. +Solution: Clear the popup menu when clearing the matches. (closes #11677) + +Patch 9.0.1031 +Problem: Vim9 class is not implemented yet. +Solution: Add very basic class support. + +Patch 9.0.1032 +Problem: Test fails when terminal feature is missing. +Solution: Use CheckRunVimInTerminal. + +Patch 9.0.1033 +Problem: Tiny build fails because of conflicting typedef. +Solution: Remove one typedef. + +Patch 9.0.1034 +Problem: Reporting swap file when windows are split. +Solution: Close extra windows after running a test. + +Patch 9.0.1035 +Problem: Object members are not being marked as used, garbage collection + may free them. +Solution: Mark object members as used. Fix reference counting. + +Patch 9.0.1036 +Problem: Undo misbehaves when writing from an insert mode mapping. +Solution: Sync undo when writing. (closes #11674) + +Patch 9.0.1037 +Problem: lalloc(0) error for a class without members. +Solution: Don't allocate room for members if there aren't any. + Don't create the class if there was an error. + +Patch 9.0.1038 +Problem: Function name does not match what it is used for. +Solution: Include the modifier in the name. (closes #11679) + +Patch 9.0.1039 +Problem: Using a <Cmd> mapping CmdlineChanged may be triggered twice. +Solution: Count the number of times CmdlineChanged is triggered and avoid + doing it twice. (closes #116820 + +Patch 9.0.1040 +Problem: Test for <Cmd> mapping with CmdlineChanged fails. +Solution: Put back the check for the cmdline length not changing. + +Patch 9.0.1041 +Problem: Cannot define a method in a class. +Solution: Implement defining an object method. Make calling an object + method work. + +Patch 9.0.1042 +Problem: ASAN gives false alarm about array access. +Solution: Use an intermediate pointer. + +Patch 9.0.1043 +Problem: Macro has confusing name and is duplicated. +Solution: Use one macro with an understandable name. (closes #11686) + +Patch 9.0.1044 +Problem: Setting window height using Python may cause errors. +Solution: When setting "curwin" also set "curbuf". (closes #11687) + +Patch 9.0.1045 +Problem: In a class object members cannot be initialized. +Solution: Support initializing object members. Make "disassemble" work on + an object method. + +Patch 9.0.1046 +Problem: Class method disassemble test fails on MS-Windows. +Solution: Do not match with a specific size. + +Patch 9.0.1047 +Problem: Matchparen is slow. +Solution: Actually use the position where the match started, not the + position where the search started. (closes #11644) + +Patch 9.0.1048 +Problem: With "screenline" in 'culopt' cursorline highlight is wrong. +Solution: Apply the priority logic also when "screenline is in 'culopt'. + (closes #11696) + +Patch 9.0.1049 +Problem: Crash when opening a very small terminal window. +Solution: Instead of crashing fix the cursor position. (closes #11697) + +Patch 9.0.1050 +Problem: Using freed memory when assigning to variable twice. +Solution: Make copy of the list type. (closes #11691) + +Patch 9.0.1051 +Problem: After a failed CTRL-W ] next command splits window. +Solution: Reset postponed_split. (Rob Pilling, closes #11698) + +Patch 9.0.1052 +Problem: Using freed memory on exit when EXITFREE is defined. +Solution: Make a deep copy of the type. Make sure TTFLAG_STATIC is not set + in the copy. + +Patch 9.0.1053 +Problem: Default constructor arguments are not optional. +Solution: Use "= v:none" to make constructor arguments optional. + +Patch 9.0.1054 +Problem: Object member can't get type from initializer. +Solution: If there is no type specified try to use the type of the + initializer. Check for a valid type. + +Patch 9.0.1055 +Problem: Coverity warns for using uninitialized memory. +Solution: Clear the "lhs" field earlier. + +Patch 9.0.1056 +Problem: Leaking memory when disassembling an object method. +Solution: Free the typval of the class. + +Patch 9.0.1057 +Problem: Conflict between supercollider and scala filetype detection. +Solution: Do not check for "Class : Method", it can appear in both + filetypes. (Chris Kipp, closes #11699) + +Patch 9.0.1058 +Problem: String value of class and object do not have useful information. +Solution: Add the class name and for the object the member values. + +Patch 9.0.1059 +Problem: Build failure with some compilers that can't handle a + declaration directly after a "case" statement. +Solution: Add a block to put the declarations in. + +Patch 9.0.1060 +problem: Private and public object members are not implemented yet. +Solution: Implement private and public object members. + +Patch 9.0.1061 +Problem: Cannot display 'showcmd' somewhere else. +Solution: Add the 'showcmdloc' option. (Luuk van Baal, closes #11684) + +Patch 9.0.1062 +Problem: Some test function names do not match what they are doing. +Solution: Leave out user data for the test that is called "NoUserData". + (closes #11703) + +Patch 9.0.1063 +Problem: When using Kitty a shell command may mess up the key protocol + state. +Solution: Output t_te before t_TE. If t_te switches between the main and + the alternate screen then deactivating the key protocol by t_TE + should happen after switching screen. (issue #11705) + +Patch 9.0.1064 +Problem: Code for making 'shortmess' temporarily empty is repeated. +Solution: Add functions for making 'shortmess' empty and restoring it. + (Christian Brabandt, closes #11709) + +Patch 9.0.1065 +Problem: A shell command switching screens may still have a problem with + the kitty keyboard protocol. +Solution: Disable the kitty keyboard protocol both in the current and the + alternate screen, if there are indications it might be needed. + (issue #11705) Also fix naming. + +Patch 9.0.1066 +Problem: Test function name is wrong. +Solution: Rename to what is actually being tested. (closes #11712) + +Patch 9.0.1067 +Problem: In diff mode virtual text is highlighted incorrectly. (Rick Howe) +Solution: Do not use diff attributes for virtual text. (closes #11714) + +Patch 9.0.1068 +Problem: No information about whether requesting term codes has an effect. +Solution: Add ch_log() calls to report the effect of term code responses. + Avoid deleting an entry and then adding back the same one. + +Patch 9.0.1069 +Problem: Diff mode highlight fails for special characters. +Solution: Adjust condition for setting "diff_hlf". + +Patch 9.0.1070 +Problem: Reading beyond array size. +Solution: Only use name[0] and name[1], do not use "name" as a string. + +Patch 9.0.1071 +Problem: Codecov action version is too specific. +Solution: Only use "v3" to automatically use the latest stable version. + (closes #11720) + +Patch 9.0.1072 +Problem: screenpos() column result in fold may be too small. +Solution: Add space of 'number', sign column, etc. (closes #11715) + +Patch 9.0.1073 +Problem: Using "xterm-kitty" for 'term' causes problems. +Solution: Remove the "xterm-" part when 'term' is set from $TERM. Detect a + few kitty-specific properties based on the version response + instead of the terminal name. + +Patch 9.0.1074 +Problem: Class members are not supported yet. +Solution: Add initial support for class members. + +Patch 9.0.1075 +Problem: build fails if the compiler doesn't allow for a declaration right + after "case". +Solution: Add a block. + +Patch 9.0.1076 +Problem: ASAN complains about NULL argument. +Solution: Skip memmove() when there is nothing to move. + +Patch 9.0.1077 +Problem: Can add text property with negative ID before virtual text + property. +Solution: Remember that a text property with a negative ID was used and give + an appropriate error message. (closes #11725) + Fix index computation. + +Patch 9.0.1078 +Problem: With the +vartabs feature indent folding may use wrong 'tabstop'. +Solution: Use the "buf" argument instead of "curbuf". + +Patch 9.0.1079 +Problem: Leaking memory when defining a user command fails. +Solution: Free "compl_arg" when needed. (closes #11726) + +Patch 9.0.1080 +Problem: The "kitty" terminfo entry is not widespread, resulting in the + kitty terminal not working properly. +Solution: Go back to using "xterm-kitty" and avoid the problems it causes in + another way. + +Patch 9.0.1081 +Problem: Using "->" with split lines does not always work. +Solution: Avoid trying to get another line. (closes #11723) + +Patch 9.0.1082 +Problem: Some jsonc files are not recognized. +Solution: Add patterns for jsonc and move some from json to jsonc. + (closes #11711) + +Patch 9.0.1083 +Problem: Empty and comment lines in a class cause an error. +Solution: Skip empty and comment lines. (closes #11734) + +Patch 9.0.1084 +Problem: Code handling low level MS-Windows events cannot be tested. +Solution: Add test_mswin_event() and tests using it. (Christopher Plewright, + closes #11622) + +Patch 9.0.1085 +Problem: Compiler warns for uninitialized variable. +Solution: Initialize the variable. Remove unused function. (John Marriott) + +Patch 9.0.1086 +Problem: Display wrong in Windows terminal after exiting Vim. +Solution: Apply screen restore fix for Windows 11 also to Windows 10 builds. + (Christopher Plewright, closes #11713, closes #11706) + +Patch 9.0.1087 +Problem: Autocommand test sometimes fails. +Solution: Add a short delay. (James McCoy, closes #11737) + +Patch 9.0.1088 +Problem: Clang warns for unused variable. +Solution: Adjust #ifdef. (John Marriott) + +Patch 9.0.1089 +Problem: unnecessary assignment +Solution: Remove the assignment. (Luuk van Baal, closes #1136) + +Patch 9.0.1090 +Problem: FHIR Shorthand files are not recognized. +Solution: Add a pattern to detect FSH files. (Matthew Gramigna, + closes #11738) + +Patch 9.0.1091 +Problem: Assignment to non-existing member causes a crash. (Yegappan + Lakshmanan) +Solution: Give an error message and bail out when a member cannot be found. + +Patch 9.0.1092 +Problem: Search error message doesn't show used pattern. +Solution: Pass the actually used pattern to where the error message is + given. (Rob Pilling, closes #11742) + +Patch 9.0.1093 +Problem: Using freed memory of object member. (Yegappan Lakshmanan) +Solution: Make a copy of the object member when getting it. + +Patch 9.0.1094 +Problem: Compiler warning when HAS_MESSAGE_WINDOW is not defined. +Solution: Add UNUSED. + +Patch 9.0.1095 +Problem: Using freed memory when declaration fails. (Yegappan Lakshmanan) +Solution: After unreferencing an object set the reference to NULL. + +Patch 9.0.1096 +Problem: Reallocating hashtab when the size didn't change. +Solution: Bail out when the hashtab is already the desired size. + +Patch 9.0.1097 +Problem: Tests are failing. +Solution: Do clean up a hashtab when at the initial size. + +Patch 9.0.1098 +Problem: Code uses too much indent. +Solution: Use an early return. (Yegappan Lakshmanan, closes #11747) + +Patch 9.0.1099 +Problem: Trying to resize a hashtab may cause a problem. +Solution: Do not try to resize a hashtab before adding an item. + +Patch 9.0.1100 +Problem: A hashtab with many removed items is not cleaned up. +Solution: Re-hash a hashtab even when the size didn't change if too many + items were removed. + +Patch 9.0.1101 +Problem: Unused global variable. +Solution: Remove the variable. (closes #11752) + +Patch 9.0.1102 +Problem: Complicated use of #ifdef. +Solution: Simplify #ifdef use. (Ken Takata, closes #11745) + +Patch 9.0.1103 +Problem: jq files are not recognized. +Solution: Add detection of Jq files. (David McDonald, closes #11743) + +Patch 9.0.1104 +Problem: Invalid memory access when checking function argument types. +Solution: Do not check beyond the number of arguments. (closes #11755) + +Patch 9.0.1105 +Problem: Code is indented too much. +Solution: Use an early return. (Yegappan Lakshmanan, closes #11756) + +Patch 9.0.1106 +Problem: Not all postfix files are recognized. +Solution: Recognize main.cf.proto files. (closes #11732) + +Patch 9.0.1107 +Problem: Float constant not recognized as float. +Solution: Check the vartype instead of comparing with t_float. + (closes #11754) + +Patch 9.0.1108 +Problem: Type error when using "any" type and adding a number to a float. +Solution: Accept both a number and a float. (closes #11753) + +Patch 9.0.1109 +Problem: Leaking allocated type. +Solution: Reset the "static" flag in the allocated type copy. + +Patch 9.0.1110 +Problem: Build fails on Mac OS X 10.4/10.5 . +Solution: Check if the dispatch/dispatch.h header exists. (Evan Miller, + closes #11746) + +Patch 9.0.1111 +Problem: Termcap entries for RGB colors are not set automatically. +Solution: Always set the termcap entries when +termguicolors is enabled. + +Patch 9.0.1112 +Problem: test_mswin_event() can hang. +Solution: Add the "execute" argument to process events right away. + (Christopher Plewright, closes #11760) + +Patch 9.0.1113 +Problem: Users cannot easily try out a PR. +Solution: Add an "artifacts" section to the AppVeyor CI config. (Christian + Brabandt, closes #11762) + +Patch 9.0.1114 +Problem: CI does not use the latest Python version. +Solution: Switch from Python 3.10 to 3.11. (closes #11761) + +Patch 9.0.1115 +Problem: Code is indented more than needed. +Solution: Use an early return to reduce indenting. (Yegappan Lakshmanan, + closes #11758) + +Patch 9.0.1116 +Problem: Compiler may complain about an unused function. +Solution: Add #ifdef. (John Marriott) + +Patch 9.0.1117 +Problem: Terminfo entries for bracketed paste are not used. +Solution: Use the newly added terminfo entries for bracketed paste. + Correct mixup of output strings and key codes. + +Patch 9.0.1118 +Problem: Sporadic test failures when using a terminal window. +Solution: Adjust waiting times. (James McCoy, closes #11763) + +Patch 9.0.1119 +Problem: Type of arguments not checked when calling a partial. +Solution: Give an error for a wrong argument type. (closes #11753) + +Patch 9.0.1120 +Problem: Tex filetype detection not sufficiently tested. +Solution: Add more test cases for "tex" detection. (Jonas Strittmatter, + closes #11765) + +Patch 9.0.1121 +Problem: Cursor positioning and display problems with 'smoothscroll' and + using "zt", "zb" or "zz". +Solution: Adjust computations and conditions. (Yee Cheng Chin, + closes #11764) + +Patch 9.0.1122 +Problem: Class member access is not fully tested yet. +Solution: Add more tests. + +Patch 9.0.1123 +Problem: Class function not implemented yet. +Solution: Implement defining and calling a class function. + +Patch 9.0.1124 +Problem: Virtual text at a column position is truncated at the window edge. + (Yegappan Lakshmanan) +Solution: Do not truncated virtual text that is placed at a column. + +Patch 9.0.1125 +Problem: Memory leak when using class functions. +Solution: Clear and free the array with class functions. + +Patch 9.0.1126 +Problem: Bracketed paste can be enabled when pasted text is not recognized. +Solution: Output t_BE only when t_PS and t_PE are set. + +Patch 9.0.1127 +Problem: No error if function argument shadows class member. +Solution: Give an error for shadowing a class member. + +Patch 9.0.1128 +Problem: Build failure. +Solution: Add type cast. Add missing error messages. + +Patch 9.0.1129 +Problem: Sporadic Test_range() failure. +Solution: Clear typeahead. Move to a separate function. (issue #22771) + +Patch 9.0.1130 +Problem: Unexpected output when autoloading a script for an interactive + operation. +Solution: Reset "KeyTyped" while loading a script and when handling a nested + function. (closes #11773) + +Patch 9.0.1131 +Problem: Build failure without the +eval feature. +Solution: Move code inside #ifdef. + +Patch 9.0.1132 +Problem: Code is indented more than needed. +Solution: Use an early return to reduce indentation. (Yegappan Lakshmanan, + closes #11769) + +Patch 9.0.1133 +Problem: Error message names do not match the items. +Solution: Add "_str" when the text contains "%s". + +Patch 9.0.1134 +Problem: Comparing objects uses identity instead of equality. +Solution: Compare the object values. + +Patch 9.0.1135 +Problem: Missing function argument. +Solution: Add ignore case flag. + +Patch 9.0.1136 +Problem: Memory leak when getting class member type from expr. +Solution: Clear the expression result. + +Patch 9.0.1137 +Problem: Some conditions are always false. +Solution: Remove the useless conditions. (closes #11776) + +Patch 9.0.1138 +Problem: Crash when expecting varargs but it is something else. +Solution: Only use the member when the type is a list. (closes #11774) + +Patch 9.0.1139 +Problem: Cannot create a new object in a compiled function. +Solution: Compile the instructions to create a new object. + +Patch 9.0.1140 +Problem: Cannot call an object method in a compiled function. +Solution: Compile the instructions to invoke an object method. + +Patch 9.0.1141 +Problem: 'cursorcolumn' and 'colorcolumn' wrong after concealing and + wrapping line. +Solution: Reset "wlv.vcol_off" after each screen line. (Alexey Radkov, + closes #11777) + +Patch 9.0.1142 +Problem: Crash and/or memory leak when redefining function after error. +Solution: Clear pointer after making a copy. Clear arrays on failure. + (closes #11774) + +Patch 9.0.1143 +Problem: Invalid memory access with bad 'statusline' value. +Solution: Avoid going over the NUL at the end. + +Patch 9.0.1144 +Problem: Reading beyond text. +Solution: Add strlen_maxlen() and use it. + +Patch 9.0.1145 +Problem: Invalid memory access with recursive substitute expression. +Solution: Check the return value of vim_regsub(). + +Patch 9.0.1146 +Problem: MS-Windows: various special keys and modifiers are not mappable. +Solution: Adjust the handling of keys with modifiers. (Christian Plewright, + closes #11768) + +Patch 9.0.1147 +Problem: Cannot access a class member in a compiled function. +Solution: Implement looking up a class member. + +Patch 9.0.1148 +Problem: Cmdline test fails in the GUI. +Solution: Skip the test when running in the GUI. + +Patch 9.0.1149 +Problem: Class members may be garbage collected. +Solution: Mark class members as being in use. + +Patch 9.0.1150 +Problem: :interface is not implemented yet. +Solution: Implement the basics of :interface. + +Patch 9.0.1151 +Problem: Build failure. +Solution: Add missing part of :interface change. + +Patch 9.0.1152 +Problem: Class "implements" argument not implemented. +Solution: Implement "implements" argument. Add basic checks for when a + class implements an interface. + +Patch 9.0.1153 +Problem: Build error with some compilers. +Solution: Clear pointer the right way. + +Patch 9.0.1154 +Problem: Coverity warns for dead code. +Solution: Remove condition that is always true. + +Patch 9.0.1155 +Problem: Cannot use a class as a type. +Solution: Accept a class and interface name as a type. + +Patch 9.0.1156 +Problem: Tests fail because of a different error message. +Solution: Don't give an error if a type name can't be found. + +Patch 9.0.1157 +Problem: "implements" only handles one interface name. +Solution: Handle a comma separated list of names. Check for duplicate + names. + +Patch 9.0.1158 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11787) + +Patch 9.0.1159 +Problem: Extends argument for class not implemented yet. +Solution: Basic implementation of "extends". + +Patch 9.0.1160 +Problem: ASAN error for ufunc_T allocated with wrong size. +Solution: Make sure the size can always fit the struct. + +Patch 9.0.1161 +Problem: Coverity warns for using strcpy(). +Solution: Call a function to set the function name. + +Patch 9.0.1162 +Problem: Configure does not handle all FORTIFY_SOURCE variants. +Solution: Also handle Fedora's default FORTIFY_SOURCE flags. (Zdenek Dohnal, + closes #11794) + +Patch 9.0.1163 +Problem: Compiler warning for implicit size_t/int conversion. +Solution: Add a type cast. (Mike Williams, closes #11795) + +Patch 9.0.1164 +Problem: Evaluating string expression advances function line. +Solution: Disable function lines while parsing a string expression. + (Hirohito Higashi, closes #11796) + +Patch 9.0.1165 +Problem: Tests using IPv6 sometimes fail. +Solution: Use getaddrinfo() and use try/catch. (James McCoy, + closes #11783) + +Patch 9.0.1166 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11792) + +Patch 9.0.1167 +Problem: EditorConfig files do not have their own filetype. +Solution: Add the "editorconfig" filetype. (Gregory Anders, closes #11779) + +Patch 9.0.1168 +Problem: Code to enable/disable mouse is not from terminfo/termcap. +Solution: Request the "XM" entry and use it to set 'ttymouse' if possible. + +Patch 9.0.1169 +Problem: Some key+modifier tests fail on some AppVeyor images. +Solution: Adjust the tests for key movements and fix the revealed bugs. + (Christopher Plewright, closes #11798) + +Patch 9.0.1170 +Problem: LGTM badge no longer works. +Solution: Remove the LGTM badge. (closes #11799) + +Patch 9.0.1171 +Problem: Screen is not redrawn after using setcellwidths(). +Solution: Redraw the screen when the cell widths have changed. (Yasuhiro + Matsumoto, closes #11800) + +Patch 9.0.1172 +Problem: When 'selection' is "exclusive" then "1v" is one char short. +Solution: Add one character when 'selection' is "exclusive". (closes #11791) + +Patch 9.0.1173 +Problem: Compiler warning for unused variable on non-Unix systems. +Solution: Move #ifdef. (John Marriott) + +Patch 9.0.1174 +Problem: Smali files are not recognized. +Solution: Add a pattern for Smali files. (Amaan Qureshi, closes #11801) + +Patch 9.0.1175 +Problem: The set_ref_in_item() function is too long. +Solution: Use a separate function for more complicated types. (Yegappan + Lakshmanan, closes #11802) + +Patch 9.0.1176 +Problem: smithy files are not recognized. +Solution: Add a pattern for Smithy files. (Chris Kipp, closes #11804) + +Patch 9.0.1177 +Problem: AppVeyor uses some older tools. +Solution: Switch to Visual Studio 2022 and Python 3.11. (Christopher + Plewright, closes #11793) + +Patch 9.0.1178 +Problem: A child class cannot override functions from a base class. +Solution: Allow overriding and implement "super". + +Patch 9.0.1179 +Problem: Not all errors around inheritance are tested. +Solution: Add more tests. Fix uncovered problems. + +Patch 9.0.1180 +Problem: Compiler warnings without the +job feature. +Solution: Adjust #ifdefs. (John Marriott) + +Patch 9.0.1181 +Problem: Class inheritance and typing insufficiently tested. +Solution: Add more tests. Implement missing behavior. + +Patch 9.0.1182 +Problem: go checksum files are not recognized. +Solution: Add the name of go checksum files. (Amaan Qureshi, closes #11803) + +Patch 9.0.1183 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11805) + +Patch 9.0.1184 +Problem: Interface of an object is not recognized when checking type. +Solution: Use the interface implemented by an object. + +Patch 9.0.1185 +Problem: Using class from imported script not tested. +Solution: Add tests. Implement what is missing. + +Patch 9.0.1186 +Problem: Imported class does not work when used twice in a line. +Solution: Fix the type parsing. + +Patch 9.0.1187 +Problem: Test for using imported class fails. +Solution: Skip over rest of type. + +Patch 9.0.1188 +Problem: Return value of type() for class and object unclear. +Solution: Add v:t_object and v:t_class. + +Patch 9.0.1189 +Problem: Invalid memory access with folding and using "L". +Solution: Prevent the cursor from moving to line zero. + +Patch 9.0.1190 +Problem: AppVeyor runs much slower with MSVC 2022. +Solution: Go back to MSVC 2015. (Christopher Plewright, closes #11810) + +Patch 9.0.1191 +Problem: Some Bazel files are not recognized. +Solution: Add an extra Bazel pattern. (Keith Smily, closes #11807) + +Patch 9.0.1192 +Problem: No error when class function argument shadows a member. +Solution: Check for shadowing. + +Patch 9.0.1193 +Problem: Cannot map <Esc> when using the Kitty key protocol. +Solution: Add a non-simplified mapping for K_ESC. (closes #11811) + +Patch 9.0.1194 +Problem: Compiler warning for comparing pointer with int. +Solution: Change NULL to zero. + +Patch 9.0.1195 +Problem: Restoring KeyTyped when building statusline not tested. +Solution: Add a test. Clean up and fix other tests. (closes #11815) + +Patch 9.0.1196 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11813) + +Patch 9.0.1197 +Problem: Dump file missing from patch. +Solution: Add missing dump file. + +Patch 9.0.1198 +Problem: Abstract class not supported yet. +Solution: Implement abstract class and add tests. + +Patch 9.0.1199 +Problem: Crash when using kitty and using a mapping with <Esc>. +Solution: Do not try setting did_simplify when it is NULL. (closes #11817) + +Patch 9.0.1200 +Problem: AppVeyor builds with an old Python version. +Solution: Switch from Python 3.8 to 3.11. (Christopher Plewright, + closes #11814) + +Patch 9.0.1201 +Problem: Assignment with operator doesn't work in object method. +Solution: Handle loading the object member. (closes #11820) Add a few more + tests. + +Patch 9.0.1202 +Problem: Crash when iterating over list of objects. +Solution: Do not make a copy of tt_member for object or class. + (closes #11823) + +Patch 9.0.1203 +Problem: Return type of values() is always list<any>. +Solution: Use the member type if possible. (issue #11822) + +Patch 9.0.1204 +Problem: Expression compiled the wrong way after using an object. +Solution: Generate constants before getting the type. + +Patch 9.0.1205 +Problem: Crash when handling class that extends another class with more + than one object members. +Solution: Correct pointer computations. (closes #11824) + +Patch 9.0.1206 +Problem: Testing with Python on AppVeyor does not work properly. +Solution: Fix typo. Move most lines to the .bat file. (Christopher + Plewright, closes #11828) + +Patch 9.0.1207 +Problem: Error when object type is expected but getting "any". +Solution: When actual type is "any" use a runtime type check. + (closes #11826) + +Patch 9.0.1208 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11819) + +Patch 9.0.1209 +Problem: Getting interface member does not always work. +Solution: Convert the index on the interface to the index on the object. + (closes #11825) + +Patch 9.0.1210 +Problem: Compiler complains about declaration after label. +Solution: Move declaration to beginning of block (John Marriott) + +Patch 9.0.1211 +Problem: Storing value in interface member does not always work. +Solution: Convert the index on the interface to the index on the object. + +Patch 9.0.1212 +Problem: Cannot read back what setcellwidths() has done. +Solution: Add getcellwidths(). (Kota Kato, closes #11837) + +Patch 9.0.1213 +Problem: Adding a line below the last one does not expand fold. +Solution: Do not skip mark_adjust() when adding lines below the last one. + (Brandon Simmons, closes #11832, closes #10698) + +Patch 9.0.1214 +Problem: File left behind after running tests. +Solution: Delete the file. (Dominique Pell茅, closes #11839) + +Patch 9.0.1215 +Problem: Using isalpha() adds dependency on current locale. +Solution: Do not use isalpha() for recognizing a URL or the end of an Ex + command. (closes #11835) + +Patch 9.0.1216 +Problem: Coverity warns for ignoring return value. +Solution: Break out of loop if function fails. + +Patch 9.0.1217 +Problem: Using an object member in a closure doesn't work. +Solution: Initialize lv_loop_depth. (closes #11840) + +Patch 9.0.1218 +Problem: Completion includes functions that don't work. +Solution: Skip functions that are not implemented. (Kota Kato, + closes #11845) + +Patch 9.0.1219 +Problem: Handling of FORTIFY_SOURCE flags doesn't match Fedora usage. +Solution: Adjust the "sed" patterns. (Zdenek Dohnal, closes #11847) + +Patch 9.0.1220 +Problem: Termcap/terminfo entries do not indicate where modifiers might + appear. +Solution: Add ";*" for function keys where modifiers are likely to be used. + +Patch 9.0.1221 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11833) + +Patch 9.0.1222 +Problem: Terminal tests are flaky on MacOS. +Solution: Add TermWait() calls. (Yegappan Lakshmanan, closes #11852) + +Patch 9.0.1223 +Problem: Cannot use setcellwidths() below 0x100. +Solution: Also accept characters between 0x80 and 0x100. (Ken Takata, + closes #11834) + +Patch 9.0.1224 +Problem: Cannot call a :def function with a number for a float argument. +Solution: Accept a number as well, convert it to a float. + +Patch 9.0.1225 +Problem: Reading past the end of a line when formatting text. +Solution: Check for not going over the end of the line. + +Patch 9.0.1226 +Problem: Spurious empty line when using text properties and virtual text. +Solution: Do not set "text_prop_follows" when the other text property is not + virtual text. (closes #11846) + +Patch 9.0.1227 +Problem: No cmdline completion for :runtime. +Solution: Add completion for :runtime. (closes #11853, closes #11447) + Improve the resulting matches. + +Patch 9.0.1228 +Problem: Fuzzy menu completion is only tested in the GUI. +Solution: Make fuzzy menu completion test work without GUI. + (closes #11861) + +Patch 9.0.1229 +Problem: Cap'n Proto files are not recognized. +Solution: Add a pattern and the "capnp" filetype. (Amaan Qureshi, + closes #11862) + +Patch 9.0.1230 +Problem: Apache thrift files are not recognized. +Solution: Add a pattern for thrift files. (Amaan Qureshi, closes #11859) + +Patch 9.0.1231 +Problem: Completion of :runtime does not handle {where} argument. +Solution: Parse the {where} argument. (closes #11863) + +Patch 9.0.1232 +Problem: ColorTable saving and restoring does not work properly. +Solution: Restore ColorTable[16] usage. (Christopher Plewright, + closes #11836) + +Patch 9.0.1233 +Problem: search() loops forever if "skip" is TRUE for all matches. +Solution: Keep the position of the first match. + +Patch 9.0.1234 +Problem: The code style has to be checked manually. +Solution: Add basic code style checks in a test. Fix or avoid uncovered + problems. + +Patch 9.0.1235 +Problem: MS-Windows console: not flushing termguicolors. +Solution: Flush termguicolors. (Christopher Plewright, closes #11871) + +Patch 9.0.1236 +Problem: Code in same_leader() can be simplified. +Solution: Simplify code that is executed only once. (closes #11867) + +Patch 9.0.1237 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11858) + +Patch 9.0.1238 +Problem: :runtime completion can be further improved. +Solution: Also complete the {where} argument values and adjust the + completion for that. (closes #11874) + +Patch 9.0.1239 +Problem: Cannot have a line break before an object member access. +Solution: Check for "." in next line. (closes #11864) + +Patch 9.0.1240 +Problem: Cannot access a private object member in a lambda defined inside + the class. +Solution: Go up the context stack to find the class. (closes #11866) + +Patch 9.0.1241 +Problem: Coverity warns for not checking function return value. +Solution: Explicitly ignore the return value. + +Patch 9.0.1242 +Problem: Code for :runtime completion is not consistent. +Solution: Make code for cmdline expansion more consistent. (closes #11875) + +Patch 9.0.1243 +Problem: :setglobal cannot use script-local function for "expr" option. +Solution: Use the pointer to the option value properly. (closes #11883) + +Patch 9.0.1244 +Problem: Cursor briefly displayed in a wrong position when pressing Esc in + Insert mode after autoindent was used. +Solution: Do not adjust the cursor position for assumed deleted white space + if text is following. (closes #11877) + +Patch 9.0.1245 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11879) + +Patch 9.0.1246 +Problem: Code is indented more than necessary. +Solution: Use an early return where it makes sense. (Yegappan Lakshmanan, + closes #11887) + +Patch 9.0.1247 +Problem: Divide by zero with 'smoothscroll' set and a narrow window. +Solution: Bail out when the window is too narrow. + +Patch 9.0.1248 +Problem: Cannot export an interface. (Ernie Rael) +Solution: Add the EX_EXPORT flag to :interface. (closes #11884) + +Patch 9.0.1249 +Problem: Cannot export an abstract class. (Ernie Rael) +Solution: Add the EX_EXPORT flag to :abstract. (closes #11884) + +Patch 9.0.1250 +Problem: Cannot use an object method with :defer. (Ernie Rael) +Solution: Find the object method and generate code to call it. + (closes #11886) + +Patch 9.0.1251 +Problem: Checking returned value of ga_grow() is inconsistent. +Solution: Check for FAIL instead of "not OK". (Yegappan Lakshmanan, + closes #11897) + +Patch 9.0.1252 +Problem: MS-Windows: scrollback cropped off on Vim exit. +Solution: Don't call SetConsoleScreenBufferInfoEx when using the alternate + screen buffer. (Christopher Plewright, closes #11882) + +Patch 9.0.1253 +Problem: CI adds repository unnecessarily. +Solution: Remove the line from the workflow. (closes #11900) + +Patch 9.0.1254 +Problem: Calling a method on an interface does not work. +Solution: At runtime figure out what method to call. (closes #11901) + +Patch 9.0.1255 +Problem: Changing 'virtualedit' does not have immediate effect. +Solution: Correct how is checked for a changed value. (closes #11878) + +Patch 9.0.1256 +Problem: NetworkManager connection files are not recognized. +Solution: Add a pattern for NetworkManager connection files. (closes #11893) + +Patch 9.0.1257 +Problem: Code style is not check in test scripts. +Solution: Add basic code style check for test files. + +Patch 9.0.1258 +Problem: Code style test fails. +Solution: Adjust test files. + +Patch 9.0.1259 +Problem: Diffmode test fails. +Solution: Adjust expected result for adjusted indenting. + +Patch 9.0.1260 +Problem: Coverity warns for possible NULL pointer usage. +Solution: Change the condition. + +Patch 9.0.1261 +Problem: Elsa files are not recognized. +Solution: Add a pattern for Elsa files. (Amaan Qureshi, closes #11908) + +Patch 9.0.1262 +Problem: The did_set_string_option function is too long. +Solution: Split off functionality to individual functions. (Yegappan + Lakshmanan, Lewis Russell, closes #11904) + +Patch 9.0.1263 +Problem: KDL files are not recognized. +Solution: Add a pattern for KDL files. (Amaan Qureshi, closes #11898) + +Patch 9.0.1264 +Problem: Motif: compiler warning for unused argument. +Solution: Add "UNUSED". + +Patch 9.0.1265 +Problem: Using an interface method may give a compilation error. +Solution: Do not try to compile the body of a method of an interface. + (closes #11885) + +Patch 9.0.1266 +Problem: Error for space before ": type" is inconsistent. +Solution: Give E1059 in more places. (closes #11868) + +Patch 9.0.1267 +Problem: The did_set_string_option function is too long. +Solution: Further cleanup of handling string options. (Yegappan Lakshmanan, + Lewis Russell, closes #11920) + +Patch 9.0.1268 +Problem: .clangd and .stylelintrc files don't get a filetype. +Solution: Use yaml for .clangd and json for .stylelintrc files. (Mark + Skelton, closes #11916) + +Patch 9.0.1269 +Problem: Channel test often fails on Mac OS. +Solution: Increase the wait time from one to 15 milliseconds. (D. Ben + Knoble, closes #11894) + +Patch 9.0.1270 +Problem: Crash when using search stat in narrow screen. +Solution: Check length of message. (closes #11921) + +Patch 9.0.1271 +Problem: Using sizeof() and subtract array size is tricky. +Solution: Use offsetof() instead. (closes #11926) + +Patch 9.0.1272 +Problem: Typo in pattern for filetype detection. +Solution: Fix the typo. (closes #11924) + +Patch 9.0.1273 +Problem: "1v" may select block with wrong size. (Evgeni Chasnovski) +Solution: Compute "curswant" in the right line. (closes #11925) + +Patch 9.0.1274 +Problem: FIRRTL files are not recognized. +Solution: Add a pattern for FIRRTL files. (Amaan Qureshi, closes #11931) + +Patch 9.0.1275 +Problem: The code for setting options is too complicated. +Solution: Refactor the do_set() function. (Yegappan Lakshmanan, Lewis + Russell, closes #11932) + +Patch 9.0.1276 +Problem: Some mappings with Meta and Shift do not work. +Solution: Apply the Shift modifier to the key. (issue #11913) + +Patch 9.0.1277 +Problem: Cursor may move with autocmd in Visual mode. +Solution: Restore "VIsual_active" before calling check_cursor(). + (closes #11939) + +Patch 9.0.1278 +Problem: go.work.sum files are not recognized. +Solution: Recognize go.work.sum files as the gosum filetype. (Amaan Qureshi, + closes #11940) + +Patch 9.0.1279 +Problem: Display shows lines scrolled down erroneously. (Yishai Lerner) +Solution: Do not change "wl_lnum" at index zero. (closes #11938) + +Patch 9.0.1280 +Problem: Insufficient testing for what 9.0.1265 fixes. +Solution: Add a couple of test cases. (issue #11885) + +Patch 9.0.1281 +Problem: Cadence files are not recognized. +Solution: Recognize Cadence files. (Janez Podhostnik, closes #11951) + +Patch 9.0.1282 +Problem: Ron files are not recognized. +Solution: Recognize Ron files. (Amaan Qureshi, closes #11948) + +Patch 9.0.1283 +Problem: The code for setting options is too complicated. +Solution: Refactor the do_set() function. (Yegappan Lakshmanan, Lewis + Russell, closes #11945) + +Patch 9.0.1284 +Problem: Compiler warnings for uninitialized variables. (Tony Mechelynck) +Solution: Add variable initializations. + +Patch 9.0.1285 +Problem: Various small problems. +Solution: Adjust white space and comments. + +Patch 9.0.1286 +Problem: Coverity warns for using a NULL pointer. +Solution: Bail out whan "varp" is NULL. + +Patch 9.0.1287 +Problem: With the Kitty key protocol Esc with NumLock cannot be mapped. +Solution: Also use K_ESC when there is a modifier. (closes #11811) + +Patch 9.0.1288 +Problem: FunC files are not recognized. +Solution: Recognize FunC files. (Amaan Qureshi, closes #11949) + +Patch 9.0.1289 +Problem: A newer version of clang can be used for CI. +Solution: Switch from clang-15 to clang-16. (closes #11577) + +Patch 9.0.1290 +Problem: CTRL-N and -P on cmdline don't trigger CmdlineChanged. +Solution: Jump to cmdline_changed instead of cmdline_not_changed. + (closes #11956) + +Patch 9.0.1291 +Problem: Move language files are not recognized. +Solution: Recognize Move language files. (Amaan Qureshi, closes #11947) + +Patch 9.0.1292 +Problem: :defer may call the wrong method for an object. (Ernie Rael) +Solution: When en object is from a class that extends or implements, figure + out the method to call at runtime. (closes #11910) + +Patch 9.0.1293 +Problem: The set_num_option() is too long. +Solution: Move code to separate functions. (Yegappan Lakshmanan, + closes #11954) + +Patch 9.0.1294 +Problem: The set_bool_option() function is too long. +Solution: Move code to separate functions. (Yegappan Lakshmanan, + closes #11964) + +Patch 9.0.1295 +Problem: The option initialization function is too long. +Solution: Move code to separate functions. (Yegappan Lakshmanan, + closes #11966) + +Patch 9.0.1296 +Problem: Calling an object method with arguments does not work. (Ernie + Rael) +Solution: Take the argument count into account when looking up the object. + (closes #11911) + +Patch 9.0.1297 +Problem: Wrong value for $LC_CTYPE makes the environ test fail. +Solution: Unset $LC_CTYPE when running tests. (closes #11963) + +Patch 9.0.1298 +Problem: Inserting a register on the command line does not trigger + incsearch or update hlsearch. +Solution: Have cmdline_insert_reg() return CMDLINE_CHANGED when appropriate + and handle it correctly. (Ken Takata, closes #11960) + +Patch 9.0.1299 +Problem: Change for triggering incsearch not sufficiently tested. +Solution: Add a test case. Simplify the code. (closes #11971) + +Patch 9.0.1300 +Problem: 'statusline' only supports one "%=" item. +Solution: Add support for multiple "%=" items. (TJ DeVries, Yegappan + Lakshmanan, closes #11970, closes #11965) + +Patch 9.0.1301 +Problem: Virtual text below empty line not displayed. +Solution: Adjust flags and computations. (closes #11959) + +Patch 9.0.1302 +Problem: On a Belgian keyboard CTRL-] does not work. +Solution: Translate CTRL-$ into CTRL-]. (closes #11831) + +Patch 9.0.1303 +Problem: Motif: scrollbar width/height wrong when maximized. +Solution: Set the width/height when creating the scrollbar. (closes #11946) + +Patch 9.0.1304 +Problem: "$" for 'list' option displayed in wrong position when there are + text properties. +Solution: Adjust logic for order of displayed items. (closes #11959) + +Patch 9.0.1305 +Problem: Cursor in wrong line with virtual text above. +Solution: Count extra line for text property above/below. (closes #11959) + +Patch 9.0.1306 +Problem: No regression test for solved problem of #11959. +Solution: Add a test, also with 'list' set. (closes #11959) + +Patch 9.0.1307 +Problem: Setting 'formatoptions' with :let doesn't check for errors. +Solution: Pass "errbuf" to set_string_option(). (Yegappan Lakshmanan, + closes #11974, closes #11972) + +Patch 9.0.1308 +Problem: The code for setting options is too complicated. +Solution: Refactor the code for setting options. (Yegappan Lakshmanan, + closes #11989) + +Patch 9.0.1309 +Problem: Scrolling two lines with even line count and 'scrolloff' set. +Solution: Adjust how the topline is computed. (closes #10545) + +Patch 9.0.1310 +Problem: 'splitkeep' test has failures. +Solution: Adjust expected cursor line position. + +Patch 9.0.1311 +Problem: Coverity warns for using a NULL pointer. +Solution: Use "empty_option" instead of NULL. + +Patch 9.0.1312 +Problem: Cursor position wrong when splitting window in insert mode. +Solution: Pass the actual mode to win_fix_cursor(). (Luuk van Baal, + closes #11999, + +Patch 9.0.1313 +Problem: Some settings use the current codepage instead of 'encoding'. +Solution: Adjust how options are initialized. (Ken Takata, closes #11992) + +Patch 9.0.1314 +Problem: :messages behavior depends on 'fileformat' of current buffer. +Solution: Pass the buffer pointer to where it is used. (Mirko Ceroni, + closes #11995) + +Patch 9.0.1315 +Problem: Escaping for completion of map command not properly tested. +Solution: Add a few test cases. (closes #12009) + +Patch 9.0.1316 +Problem: MS-Windows: vimfiles dir created with admin group. +Solution: Use ShellExecAsUser to create the vimfiles directory. (Christopher + Plewright, Ken Takata, closes #12000, closes #11888) + +Patch 9.0.1317 +Problem: Crash when using an unset object variable. +Solution: Give an error instead. (closes #12005) + +Patch 9.0.1318 +Problem: Code style test fails. +Solution: Remove trailing white space. + +Patch 9.0.1319 +Problem: PRQL files are not recognized. +Solution: Add a filetype pattern for PRQL files. (Matthias Queitsch, + closes #12018) + +Patch 9.0.1320 +Problem: Checking the type of a null object causes a crash. +Solution: Don't try to get the class of a null object. (closes #12005) + Handle error from calling a user function better. + +Patch 9.0.1321 +Problem: vimscript test fails where using {expr} syntax. +Solution: Only return FCERR_FAILED in call_user_func() for Vim9 script. + +Patch 9.0.1322 +Problem: Crash when indexing "any" which is an object. +Solution: Check the index is a number. Do not check the member type of an + object. (closes #12019) + +Patch 9.0.1323 +Problem: Build failure with +eval feature. +Solution: Add missing part for using funcerror_T. + +Patch 9.0.1324 +Problem: "gj" and "gk" do not move correctly over a closed fold. +Solution: Use the same code as used for "j"/"k" to go to the next/previous + line. (Luuk van Baal, closes #12007) + +Patch 9.0.1325 +Problem: 'colorcolumn' highlight wrong with virtual text above. +Solution: Adjust column of 'colorcolumn' for text property. (closes #12004) + +Patch 9.0.1326 +Problem: Relative line number not updated with virtual text above. +Solution: Adjust the row for the line number for virtual text above. + (closes #12004) + +Patch 9.0.1327 +Problem: Cursor in wrong position below line with virtual text below ending + in multi-byte character. +Solution: When checking for last character take care of multi-byte + character. + +Patch 9.0.1328 +Problem: Error when using "none" for GUI color is confusing. +Solution: Mention that the name should perhaps be "NONE". (closes #1400) + +Patch 9.0.1329 +Problem: Completion of map includes simplified ones. +Solution: Do not complete simplified mappings. (closes #12013) + +Patch 9.0.1330 +Problem: Handling new value of an option has a long "else if" chain. +Solution: Use a function pointer. (Yegappan Lakshmanan, closes #12015) + +Patch 9.0.1331 +Problem: Illegal memory access when using :ball in Visual mode. +Solution: Stop Visual mode when using :ball. (Pavel Mayorov, closes #11923) + +Patch 9.0.1332 +Problem: Crash when using buffer-local user command in cmdline window. + (Karl Yngve Lerv氓g) +Solution: Use the right buffer to find the user command. (closes #12030, + closes #12029) + +Patch 9.0.1333 +Problem: When redo'ing twice <ScriptCmd> may not get the script ID. +Solution: When "last_used_map" map is not set use "last_used_sid". + (closes #11930) + +Patch 9.0.1334 +Problem: Using tt_member for the class leads to mistakes. +Solution: Add a separate tt_class field. + +Patch 9.0.1335 +Problem: No test for bad use of spaces in help files. +Solution: Add checks for use of spaces in help files. Ignore intentional + spaces. (Hirohito Higashi, closes #11952) + +Patch 9.0.1336 +Problem: Functions without arguments are not always declared properly. +Solution: Use "(void)" instead of "()". (Yegappan Lakshmanan, closes #12031) + +Patch 9.0.1337 +Problem: Yuck files are not recognized. +Solution: Add a filetype pattern for yuck files. (Amaan Qureshi, + closes #12033) + +Patch 9.0.1338 +Problem: :defcompile and :disassemble can't find class method. (Ernie Rael) +Solution: Make a class name and class.method name work. (closes #11984) + +Patch 9.0.1339 +Problem: No test for :disassemble with class function. +Solution: Add a test. + +Patch 9.0.1340 +Problem: Coverity warns for using NULL pointer. +Solution: Check that lhs_type is not NULL. + +Patch 9.0.1341 +Problem: Build error with mzscheme but without GUI. +Solution: Adjust #ifdefs. (Ken Takata, closes #12042) Also fix function + argument. + +Patch 9.0.1342 +Problem: MS-Windows: linking may fail with space in directory name. +Solution: Add quotes. (closes #12050) + +Patch 9.0.1343 +Problem: Check for OSC escape sequence doesn't work. +Solution: Move square bracket to the right place. (Johan Mattsson, + closes #12048) + +Patch 9.0.1344 +Problem: Check for OSC escape sequence doesn't work. +Solution: Fix typo in index. + +Patch 9.0.1345 +Problem: Too many "else if" statements for handling options. +Solution: Add more functions to handle options. (Yegappan Lakshmanan, + closes #12051) + +Patch 9.0.1346 +Problem: Starlark files are not recognized. +Solution: Add patterns for Starlark files. (Amaan Qureshi, closes #12049) + +Patch 9.0.1347 +Problem: "gr CTRL-O" stays in Insert mode. (Pierre Ganty) +Solution: Do not set restart_edit when "cmdchar" is 'v'. (closes #12045) + +Patch 9.0.1348 +Problem: Un-grammar files are not recognized. +Solution: Add patterns for Un-grammar files. (Amaan Qureshi, closes #12034) + +Patch 9.0.1349 +Problem: "gr" with a count fails. +Solution: Break out of the loop only after using the count. + +Patch 9.0.1350 +Problem: CPON files are not recognized. +Solution: Add patterns for CPON files. (Amaan Qureshi, closes #12053) + +Patch 9.0.1351 +Problem: Dhall files are not recognized. +Solution: Add patterns for Dhall files. (Amaan Qureshi, closes #12052) + +Patch 9.0.1352 +Problem: "ignore" files are outdated. +Solution: Update "ignore" files. (Ken Takata, closes #12056) + +Patch 9.0.1353 +Problem: Too many "else if" statements to handle option values. +Solution: Add more functions to handle option value changes. (Yegappan + Lakshmanan, closes #12058) + +Patch 9.0.1354 +Problem: "gr CTRL-G" stays in virtual replace mode. (Pierre Ganty) +Solution: Prepend CTRL-V before control characters. (closes #12045) + +Patch 9.0.1355 +Problem: No error when declaring a class twice. (Ernie Rael) +Solution: Pass different flags when declaring the class. (closes #12057) + +Patch 9.0.1356 +Problem: Cannot cancel "gr" with Esc. +Solution: Make "gr<Esc>" do nothing. (closes #12064) + +Patch 9.0.1357 +Problem: Using null_object results in an internal error. (Ernie Rael) +Solution: Add instructions for pushing an object and class. (closes #12044) + +Patch 9.0.1358 +Problem: Compilation error with some compilers. +Solution: Avoid using "class" as member name. + +Patch 9.0.1359 +Problem: Too many "else if" statements in handling options. +Solution: Add more functions for handling option changes. (Yegappan + Lakshmanan, closes #12060) + +Patch 9.0.1360 +Problem: Cue files are not recognized. +Solution: Add patterns for Cue files. (Amaan Qureshi, closes #12067) + +Patch 9.0.1361 +Problem: extendnew() not sufficiently tested. +Solution: Add a few more test cases for extendnew(). (closes #12075) + +Patch 9.0.1362 +Problem: ml_get error when going to another tab. (Daniel J. Perry) +Solution: Do not call update_topline() if "curwin" is invalid. + (closes #11907) + +Patch 9.0.1363 +Problem: Crash when :def function has :break in skipped block. (Ernie Rael) +Solution: Don't generate a jump for a skipped :break. (closes #12077) + +Patch 9.0.1364 +Problem: Build error with older Mac OS. +Solution: Adjust #ifdef. (Yee Cheng Chin, closes #12074) + +Patch 9.0.1365 +Problem: Dead test code. +Solution: Remove code that depends on Farsi, which has been removed. + (closes #12084) + +Patch 9.0.1366 +Problem: Functions for setting options are in random order. +Solution: Sort functions alphabetically. (Yegappan Lakshmanan, + closes #12082) + +Patch 9.0.1367 +Problem: Divide by zero in zero-width window. +Solution: Check the width is positive. + +Patch 9.0.1368 +Problem: Bass files are not recognized. +Solution: Add patterns for Bass files. (Amaan Qureshi, closes #12088) + +Patch 9.0.1369 +Problem: Still some "else if" constructs for setting options. +Solution: Add a few more functions for handling options. (Yegappan + Lakshmanan, closes #12090) + +Patch 9.0.1370 +Problem: Crash when using a NULL object. (Ernie Rael) +Solution: Check for NULL and give an error message. (closes #12083) + +Patch 9.0.1371 +Problem: Ballooneval interferes with Insert completion. +Solution: Ignore mouse-move events when completing. (closes #12094, + closes #12092) + +Patch 9.0.1372 +Problem: Test for 'toolbariconsize' may fail. +Solution: Only test 'toolbariconsize' when it is supported. (James McCoy, + closes #12095) + +Patch 9.0.1373 +Problem: Wrong text displayed when using both 'linebreak' and 'list'. +Solution: Only set "c_extra" to NUL when "p_extra" is not empty. (Hirohito + Higashi, closes #12065) + +Patch 9.0.1374 +Problem: Function for setting options not used consistently. +Solution: Use a function for 'encoding' and terminal options. (Yegappan + Lakshmanan, closes #12099) + +Patch 9.0.1375 +Problem: Crash when getting member of obj of unknown class. +Solution: Check for NULL class and give an error message. (Ernie Rael, + closes #12096) + +Patch 9.0.1376 +Problem: Accessing invalid memory with put in Visual block mode. +Solution: Adjust the cursor column if needed. + +Patch 9.0.1377 +Problem: job_status() may return "dead" if the process parent changed. +Solution: Call mch_process_running() to check if the job is still alive. + +Patch 9.0.1378 +Problem: Illegal memory access when using virtual editing. +Solution: Make sure "startspaces" is not negative. + +Patch 9.0.1379 +Problem: Functions for handling options are not ordered. +Solution: Put functions in alphabetical order. (Yegappan Lakshmanan, + closes #12101) + +Patch 9.0.1380 +Problem: CTRL-X on 2**64 subtracts two. (James McCoy) +Solution: Correct computation for large number. (closes #12103) + +Patch 9.0.1381 +Problem: ACCESS_ names have a conflict with on some systems. +Solution: Rename by prepending VIM_. (Ola S枚der, closes #12105) + +Patch 9.0.1382 +Problem: Failing test for strptime() doesn't show returned value. +Solution: Use assert_equal() instead of assert_true(). + +Patch 9.0.1383 +Problem: xxd: combination of little endian and cols fails. (Aapo + Rantalainen) +Solution: Round up the space taken by the hex output. (closes #12097) + +Patch 9.0.1384 +Problem: Setting HOMEBREW_NO_AUTO_UPDATE is not needed with Homebrew + version 4. +Solution: Remove setting HOMEBREW_NO_AUTO_UPDATE. (closes #12008) + +Patch 9.0.1385 +Problem: g'Esc is considered an error. +Solution: Make g'Esc silently abandon the command. (closes #12110) + +Patch 9.0.1386 +Problem: Options test fails with some window width. +Solution: Adjust what text the test checks with. (closes #12111) + +Patch 9.0.1387 +Problem: Scrollbar test sporadically fails. +Solution: Mark the scrollbar test as flaky. (Christian Brabandt, + closes #12113) + +Patch 9.0.1388 +Problem: Amiga: not all builds use gethostname(). +Solution: Use gethostname() for all builds except AROS. (Ola S枚der, + closes #12107) + +Patch 9.0.1389 +Problem: Amiga: a couple of include files are included twice. +Solution: Remove duplicate includes. (Ola S枚der, closes #12106) + +Patch 9.0.1390 +Problem: FOR_ALL_ macros are defined in an unexpected file. +Solution: Move FOR_ALL_ macros to macros.h. Add FOR_ALL_HASHTAB_ITEMS. + (Yegappan Lakshmanan, closes #12109) + +Patch 9.0.1391 +Problem: "clear" macros are not always used. +Solution: Use ALLOC_ONE, VIM_CLEAR, CLEAR_POINTER and CLEAR_FIELD in more + places. (Yegappan Lakshmanan, closes #12104) + +Patch 9.0.1392 +Problem: Using NULL pointer with nested :open command. +Solution: Check that ccline.cmdbuff is not NULL. + +Patch 9.0.1393 +Problem: Cairo files are not recognized. +Solution: Add a pattern for Cairo files. (Amaan Qureshi, closes #12118) + +Patch 9.0.1394 +Problem: Unx Tal files are not recognized. +Solution: Add a pattern for Unx Tal files. (Amaan Qureshi, closes #12117) + +Patch 9.0.1395 +Problem: Odin files are not recognized. +Solution: Add a pattern for Odin files. (Amaan Qureshi, closes #12122) + +Patch 9.0.1396 +Problem: sort(list, 'N') does not work in Vim9 script context. +Solution: Convert string to number without giving an error. (closes #12061) + +Patch 9.0.1397 +Problem: Highlight for popupmenu kind and extra cannot be set. +Solution: Add PmenuKind, PmenuKindSel, PmenuExtra and PmenuExtraSel + highlight groups and use them. (Gianmaria Bajo, closes #12114) + +Patch 9.0.1398 +Problem: Profile test repeats the headers many times. +Solution: Put the headers in script variables. + +Patch 9.0.1399 +Problem: Highlight test script has a few problems. +Solution: Rewrite the script in Vim9 syntax. (closes #10379) + +Patch 9.0.1400 +Problem: find_file_in_path() is not reentrant. +Solution: Instead of global variables pass pointers to the functions. + (closes #12093) + +Patch 9.0.1401 +Problem: Condition is always true. +Solution: Remove the condition. (closes #12139) + +Patch 9.0.1402 +Problem: Crash when using null_class. +Solution: Give an error when trying to use a null class. + +Patch 9.0.1403 +Problem: Unused variables and functions. +Solution: Delete items and adjust #ifdefs. (Dominique Pell茅, closes #12145) + +Patch 9.0.1404 +Problem: Compilation error with some compilers. +Solution: Adjust array initialization. (John Marriott) + +Patch 9.0.1405 +Problem: Missing check for out-of-memory. +Solution: Check for alloc() returning NULL pointer. (closes #12149) + +Patch 9.0.1406 +Problem: ILE RPG files are not recognized. +Solution: Add patterns for ILE RPG files. (Andreas Louv, issue #12152) + +Patch 9.0.1407 +Problem: TableGen files are not recognized. +Solution: Add a pattern for TableGen files. (Amaan Qureshi, closes #12156) + +Patch 9.0.1408 +Problem: QMLdir files are not recognized. +Solution: Add a pattern for QMLdir files. (Amaan Qureshi, closes #12161) + +Patch 9.0.1409 +Problem: Racket files are recognized as scheme. +Solution: Recognize rackets files separately. (Gabriel Kakizaki, + closes #12164, closes #12162) + +Patch 9.0.1410 +Problem: MacOS: sed fails on .po files. +Solution: Set $LANG to "C". (Yee Cheng Chin, closes #12153) + +Patch 9.0.1411 +Problem: Accuracy of profiling is not optimal. +Solution: Use CLOCK_MONOTONIC if possible. (Ernie Rael, closes #12129) + +Patch 9.0.1412 +Problem: Pony files are not recognized. +Solution: Add a pattern for Pony files. (Amaan Qureshi, closes #12155) + +Patch 9.0.1413 +Problem: Compiler warning for unused variable. +Solution: Move variable declaration. (John Marriott) + +Patch 9.0.1414 +Problem: <M-S-x> in Kitty does not use the Shift modifier. +Solution: Apply the Shift modifier to ASCII letters. (closes #11913) + +Patch 9.0.1415 +Problem: Crystal files are not recognized. +Solution: Add a pattern for Crystal files. (Amaan Qureshi, closes #12175) + +Patch 9.0.1416 +Problem: Crash when collection is modified when using filter(). +Solution: Lock the list/dict/blob. (Ernie Rael, closes #12183) + +Patch 9.0.1417 +Problem: ESDL files are not recognized. +Solution: Add a pattern for ESDL files. (Amaan Qureshi, closes #12174) + +Patch 9.0.1418 +Problem: The included xdiff code is a bit outdated. +Solution: Sync with the latest git xdiff code. (Yee Cheng Chin, + closes #12181) + +Patch 9.0.1419 +Problem: Lean files are not recognized. +Solution: Add a pattern for Lean files. (Amaan Qureshi, closes #12177) + +Patch 9.0.1420 +Problem: Build failure because SIZE_MAX is not defined. +Solution: Define SIZE_MAX when missing. (John Marriott) + +Patch 9.0.1421 +Problem: Nu files are not recognized. +Solution: Add a pattern for Nu files. (Amaan Qureshi, closes #12172) + +Patch 9.0.1422 +Problem: Sage files are not recognized. +Solution: Add a pattern for Sage files. (Amaan Qureshi, closes #12176) + +Patch 9.0.1423 +Problem: WebAssembly Interface Type files are not recognized. +Solution: Add a pattern for WIT files. (Amaan Qureshi, closes #12173) + +Patch 9.0.1424 +Problem: Unused macros are defined. +Solution: Remove the unused macros. + +Patch 9.0.1425 +Problem: "wat" and "wast" files are one filetype. +Solution: Add a separate filetype for "wat" files. (Amaan Qureshi, + closes #12165) + +Patch 9.0.1426 +Problem: Indent wrong after "export namespace" in C++. +Solution: Skip over "inline" and "export" in any order. (Virginia Senioria, + closes #12134, closes #12133) + +Patch 9.0.1427 +Problem: Warning for uninitialized variable. (Tony Mechelynck) +Solution: Add #ifdef. + +Patch 9.0.1428 +Problem: Cursor in wrong position when leaving insert mode. +Solution: Update the w_valid flags. Position the cursor also when not + redrawing. (closes #12137) + +Patch 9.0.1429 +Problem: Invalid memory access when ending insert mode. +Solution: Check if the insert_skip value is valid. + +Patch 9.0.1430 +Problem: Livebook files are not recognized. +Solution: Add a pattern for Livebook files. (Mathias Jean Johansen, + closes #12203) + +Patch 9.0.1431 +Problem: getscriptinfo() loops even when specific SID is given. +Solution: Only loop when needed. Give a clearer error message. + (closes #12207) + +Patch 9.0.1432 +Problem: Completion popup in wrong position with virtual text "above". +Solution: Adjust the column. (closes #12210) + +Patch 9.0.1433 +Problem: On some systems the Lua library is not found. +Solution: Check if a subdirectory for Lua exists. (closes #4475) + +Patch 9.0.1434 +Problem: Crash when adding package already in 'runtimepath'. +Solution: Change order for using 'runtimepath' entries. (closes #12215) + +Patch 9.0.1435 +Problem: Scrolling too many lines when 'wrap' and 'diff' are set. +Solution: Only scroll by screenlines for 'diff' when 'wrap' is not set. + (closes #12211) + +Patch 9.0.1436 +Problem: Cannot compare a typed variable with v:none. +Solution: Allow for "x is v:none" and "x isnot v:none". (issue #12194) + +Patch 9.0.1437 +Problem: Test fails with different error number. +Solution: Adjust the expected error. + +Patch 9.0.1438 +Problem: .fs files are falsely recognized as forth files. +Solution: Check 100 lines for something that looks like forth. (Johan + Kotlinski, closes #12219, closes #11988) + +Patch 9.0.1439 +Problem: Start Insert mode when accessing a hidden prompt buffer. +Solution: Call leaving_window() in aucmd_restbuf(). (Thorben Tr枚bst, + closes #12148, closes #12147) + +Patch 9.0.1440 +Problem: "rvim" can execute a shell through :diffpatch. +Solution: Disallow the shell "patch" command. + +Patch 9.0.1441 +Problem: MacOS: Python 3 using framework do not set dll name properly. +Solution: Use the framework prefix. (Yee Cheng Chin, closes #12189) + +Patch 9.0.1442 +Problem: mapset() does not restore non-script context. +Solution: Also accept negative sid. (closes #12132) + +Patch 9.0.1443 +Problem: Ending Insert mode when accessing a hidden prompt buffer. +Solution: Don't stop Insert mode when it was active before. (closes #12237) + +Patch 9.0.1444 +Problem: Crash when passing NULL to setcmdline(). (Andreas Louv) +Solution: Use tv_get_string() instead of using v_string directly. + (closes #12231, closes #12227) + +Patch 9.0.1445 +Problem: openSUSE: configure doesn't find the Motif library. (Tony + Mechelynck) +Solution: Also search in /usr/lib64. + +Patch 9.0.1446 +Problem: Unnecessary checks for the "skip" flag when skipping. +Solution: Remove the unnecessary checks. (closes #12254) + +Patch 9.0.1447 +Problem: Condition is always true. +Solution: Remove the useless condition. (closes #12253) + +Patch 9.0.1448 +Problem: Diff test fails on MacOS 13. +Solution: Install GNU diffutils. (Ozaki Kiichi, closes #12258) + +Patch 9.0.1449 +Problem: Test for prompt buffer is flaky. +Solution: Use WaitForAssert() instead of TermWait(). (Ozaki Kiichi, + closes #12247) + +Patch 9.0.1450 +Problem: MacOS: building fails if clock_gettime() is not available. +Solution: Add a configure check for clock_gettime(). (closes #12242) + +Patch 9.0.1451 +Problem: Unnecessary redrawing when 'showcmdloc' is not "last". +Solution: Redraw later when "showcmd_is_clear" is set. (Luuk van Baal, + closes #12260) + +Patch 9.0.1452 +Problem: Code using EVAL_CONSTANT is dead, it is never set. +Solution: Remove EVAL_CONSTANT. (closes #12252) + +Patch 9.0.1453 +Problem: Typos in source code and tests. +Solution: Fix the typos. (Dominique Pell茅, closes #12217) + +Patch 9.0.1454 +Problem: Code indenting is confused by macros. +Solution: Put semicolon after the macros instead of inside. (Ozaki Kiichi, + closes #12257) + +Patch 9.0.1455 +Problem: C++ 20 modules are not recognized. +Solution: Add patterns to recognize C++ 20 modules as "cpp". (Ben Jackson, + closes #12261) + +Patch 9.0.1456 +Problem: Shortmess test depends on order of test execution. +Solution: Clear messages. (closes #12264) + +Patch 9.0.1457 +Problem: No regression test for what patch 9.0.1333 fixes. +Solution: Extend existing test to cover the fixed problem. (issue #11930) + +Patch 9.0.1458 +Problem: Buffer overflow when expanding long file name. +Solution: Use a larger buffer and avoid overflowing it. (Yee Cheng Chin, + closes #12201) + +Patch 9.0.1459 +Problem: Typo in name of type. +Solution: Change funccal_T to funccall_T. (closes #12265) + +Patch 9.0.1460 +Problem: Insufficient testing for getcmdcompltype(). +Solution: Add a few more test cases. (closes #12268) + +Patch 9.0.1461 +Problem: Ruler not drawn correctly when using 'rulerformat'. +Solution: Adjust formatting depending on whether the ruler is drawn in the + statusline or the command line. (Sean Dewar, closes #12246) + +Patch 9.0.1462 +Problem: Recursively calling :defer function if it does :qa. +Solution: Clear the defer entry before calling the function. (closes #12266) + +Patch 9.0.1463 +Problem: Virtual text truncation only works with Unicode 'encoding'. +Solution: Convert the ellipsis character to 'encoding' if needed. (Hirohito + Higashi, closes #12233) + +Patch 9.0.1464 +Problem: Strace filetype detection is expensive. +Solution: Match with a cheap pattern first. (Federico Mengozzi, + closes #12220) + +Patch 9.0.1465 +Problem: Haiku build fails. +Solution: Do not include globals.h and proto.h twice. (Ozaki Kiichi, + closes #12273) + +Patch 9.0.1466 +Problem: Cannot use an object member name as a method argument. +Solution: Do not give an error for using an object member name for a method + argument. (Hirohito Higashi, closes #12241, closes #12225) + Fix line number for other argument error. + +Patch 9.0.1467 +Problem: Jenkinsfiles are not recognized as groovy. +Solution: Add a pattern for Jenkinsfiles. (closes #12236) + +Patch 9.0.1468 +Problem: Recursively calling :defer function if it does :qa in a compiled + function. +Solution: Clear the defer entry before calling the function. (closes #12271) + +Patch 9.0.1469 +Problem: Deferred functions not called from autocommands. +Solution: Also go through the funccal_stack. (closes #12267) + +Patch 9.0.1470 +Problem: Deferred functions invoked in unexpected order when using :qa and + autocommands. +Solution: Call deferred functions for the current funccal before using the + stack. (closes #12278) + +Patch 9.0.1471 +Problem: Warnings for function declarations. +Solution: Add argument types. (Michael Jarvis, closes #12277) + +Patch 9.0.1472 +Problem: ":drop fname" may change the last used tab page. +Solution: Restore the last used tab page when :drop has changed it. + (closes #12087) + +Patch 9.0.1473 +Problem: CI does not run sound tests. +Solution: Re-enable sound tests. Use "apt-get" instead of "apt". (Ozaki + Kiichi, closes #12280) + +Patch 9.0.1474 +Problem: CI runs with old version of Ubuntu and tools. +Solution: Update CI to more recent versions. (closes #11092) + +Patch 9.0.1475 +Problem: Busted configuration files are not recognized. +Solution: Recognize busted configuration files as Lua. (Craig MacEachern, + closes #12209) + +Patch 9.0.1476 +Problem: Lines put in non-current window are not displayed. (Marius + Gedminas) +Solution: Don't increment the topline when inserting just above it. + (closes #12212) + +Patch 9.0.1477 +Problem: Crash when recovering from corrupted swap file. +Solution: Check for a valid page count. (closes #12275) + +Patch 9.0.1478 +Problem: Filetypes for *.v files not detected properly. +Solution: Use the file contents to detect the filetype. (Turiiya, + closes #12281) + +Patch 9.0.1479 +Problem: Small source file problems; outdated list of distributed files. +Solution: Small updates to source files and list of distributed files. + +Patch 9.0.1480 +Problem: Using popup menu may leave text in the command line. +Solution: Clear the command line if the popup menu covered it. (Luuk van + Baal, closes #12286) + +Patch 9.0.1481 +Problem: Decrypting with libsodium may fail if the library changes. +Solution: Add parameters used to the encrypted file header. (Christian + Brabandt, closes #12279) + +Patch 9.0.1482 +Problem: Crash when textprop has a very large "padding" value. (Yegappan + Lakshmanan) +Solution: Avoid the "after" count to go negative. + +Patch 9.0.1483 +Problem: += operator does not work on class member. +Solution: Do not skip as if "this." was used. (Christian Brabandt, + closes #12263) + +Patch 9.0.1484 +Problem: Coverity warns for using invalid array index. +Solution: Add entry for Xchacha, even though it is not used. + +Patch 9.0.1485 +Problem: no functions for converting from/to UTF-16 index. +Solution: Add UTF-16 flag to existing functions and add strutf16len() and + utf16idx(). (Yegappan Lakshmanan, closes #12216) + +Patch 9.0.1486 +Problem: Parallel make might not work. +Solution: Add missing dependencies. (Samuel Dionne-Riel, closes #12288) + +Patch 9.0.1487 +Problem: Content-type header for LSP channel not according to spec. +Solution: Use "vscode-jsonrpc" instead of "vim-jsonrpc". (Yegappan + Lakshmanan, closes #12295) + +Patch 9.0.1488 +Problem: xchacha20v2 crypt header is platform dependent. +Solution: Avoid using "size_t". (Ozaki Kiichi, closes #12296) + +Patch 9.0.1489 +Problem: Crypt with libsodium is not tested on CI. +Solution: Configure testing with libsodium. (Ozaki Kiichi, closes #12297) + +Patch 9.0.1490 +Problem: The ModeChanged event may be triggered too often. +Solution: Only trigger ModeChanged when no operator is pending. + (closes #12298) + +Patch 9.0.1491 +Problem: Wrong scrolling with ls=0 and :botright split. +Solution: Add statusline before calling frame_new_height(). (closes #12299) + +Patch 9.0.1492 +Problem: Using uninitialized memory when argument is missing. +Solution: Check there are sufficient arguments before the base. + (closes #12302) + +Patch 9.0.1493 +Problem: Popup menu position wrong in window with toolbar. +Solution: Take the window toolbar into account when positioning the popup + menu. (closes #12308) + +Patch 9.0.1494 +Problem: Crash when recovering from corrupted swap file. +Solution: Bail out when the line index looks wrong. (closes #12276) + +Patch 9.0.1495 +Problem: GTK3: hiding the mouse pointer does not work. (Rory O鈥橩ane) +Solution: Set alpha level to zero. (Kenny Stauffer, closes #12293, + closes #3256) + +Patch 9.0.1496 +Problem: Test restoring register with wrong value. +Solution: Correct name of variable. (closes #12310) + +Patch 9.0.1497 +Problem: The ruler percentage can't be localized. +Solution: Use a string that can be translated. (Emir Sari, closes #12311) + +Patch 9.0.1498 +Problem: In a terminal window the cursor may jump around. (Kenny Stauffer) +Solution: Do not move the cursor to the position for terminal-normal mode. + (closes #12312) + +Patch 9.0.1499 +Problem: Using uninitialized memory with fuzzy matching. +Solution: Initialize the arrays used to store match positions. + +Patch 9.0.1500 +Problem: The falsy operator is not tested properly. +Solution: Add a few more test cases. (closes #12319) + +Patch 9.0.1501 +Problem: Crash with nested :try and :throw in catch block. +Solution: Jump to :endtry before returning from function. (closes #12245) + +Patch 9.0.1502 +Problem: No test for deleting the end of a long wrapped line. +Solution: Add a test to check the right text is displayed. (Luuk van Baal, + closes #12318) + +Patch 9.0.1503 +Problem: Luau files are not recognized. +Solution: Add a patter for Luau files. (Amaan Qureshi, closes #12317) + +Patch 9.0.1504 +Problem: No error when calling remote_startserver() with an empty string. +Solution: Give an error for an empty string. (Hirohito Higashi, + closes #12327) + +Patch 9.0.1505 +Problem: Error when heredoc content looks like heredoc. +Solution: Handle curly expressions. (closes #12325) + +Patch 9.0.1506 +Problem: Line number not displayed when using 'smoothscroll'. +Solution: Adjust condition for showing the line number. (closes #12333) + +Patch 9.0.1507 +Problem: Assert message is confusing with boolean result. assert_inrange() + replaces message instead of adding it. +Solution: Don't put quotes around expected boolean value. Append message + for assert_inrange(). (closes #12342, closes #12341) + +Patch 9.0.1508 +Problem: Catch does not work when lines are joined with a newline. +Solution: Set "nextcmd" appropriately. (closes #12348) + +Patch 9.0.1509 +Problem: Error message lacks mentioning the erroneous argument. +Solution: Specify the argument that the error is for. + +Patch 9.0.1510 +Problem: Misleading variable name for error message. +Solution: Change "name" to "number". (closes #12345) + +Patch 9.0.1511 +Problem: Crash when using wrong arg types to assert_match(). +Solution: Check for NULL pointer. (closes #12349) + +Patch 9.0.1512 +Problem: Inserting lines when scrolling with 'smoothscroll' set. +Solution: Adjust line height computation for w_skipcol. (Luuk van Baal, + closes #12350) + +Patch 9.0.1513 +Problem: Text scrolls unnecessarily when splitting and 'splitkeep' is not + "cursor". +Solution: Avoid resetting w_skipcol. (Luuk van Baal, closes #12334) + +Patch 9.0.1514 +Problem: Test waits unnecessarily long before checking screendump. +Solution: Remove TermWait() call. + +Patch 9.0.1515 +Problem: reverse() does not work for a String. +Solution: Implement reverse() for a String. (Yegappan Lakshmanan, + closes #12179) + +Patch 9.0.1516 +Problem: Cannot use special keys in <Cmd> mapping. +Solution: Do allow for special keys in <Cmd> and <ScriptCmd> mappings. + (closes #12326) + +Patch 9.0.1517 +Problem: MacOS: configure removes -O2 from $CFLAGS. +Solution: Only adjust $CFLAGS for gcc. (closes #12351) + +Patch 9.0.1518 +Problem: Search stats not always visible when searching backwards. +Solution: Do not display the top/bot message on top of the search stats. + (Christian Brabandt, closes #12322, closes #12222) + +Patch 9.0.1519 +Problem: Global 'filetype' is set when it is detected from the file content. +Solution: Set the local 'filetype' option value. + +Patch 9.0.1520 +Problem: Completion for option name includes all bool options. +Solution: Do not recognize the "noinv" prefix. Prefix "no" or "inv" when + appropriate. + +Patch 9.0.1521 +Problem: Failing redo of command with control characters. +Solution: Use AppendToRedobuffLit() for colon commands. (closes #12354) + +Patch 9.0.1522 +Problem: Some functions give two error messages. +Solution: Do not give a second error message. (closes #12352) + +Patch 9.0.1523 +Problem: Some error messages are not marked for translation. +Solution: Surround the messages in _(). (closes #12356) + +Patch 9.0.1524 +Problem: Passing -1 for bool is not always rejected. +Solution: Check for error in a better way. (closes #12358) + +Patch 9.0.1525 +Problem: 'smoothscroll' does not always work properly. +Solution: Do not reset w_skipcol after it was intentionally set. (Luuk van + Baal, closes #12360, closes #12199, closes #12323) + +Patch 9.0.1526 +Problem: Condition is always true. +Solution: Remove unnecessary condition. (closes #12359) + +Patch 9.0.1527 +Problem: Crash when using negative value for term_cols. +Solution: Check for invalid term_cols value. (Kenta Sato, closes #12362) + +Patch 9.0.1528 +Problem: Libsodium encryption is only used with "huge" features, even when + manually enabled through configure. (Tony Mechelynck) +Solution: Remove the condition on FEAT_HUGE. + +Patch 9.0.1529 +Problem: Code style test doesn't check for space after "if". +Solution: Add a test for space. + +Patch 9.0.1530 +Problem: Cursor moves to wrong line when 'foldmethod' is "diff". (Rick + Howe) +Solution: Adjust logic for scrolling. (Luuk van Baal, closes #12364, + closes #12218) + +Patch 9.0.1531 +Problem: Crash when register contents ends up being invalid. +Solution: Check "y_array" is not NULL. + +Patch 9.0.1532 +Problem: Crash when expanding "~" in substitute causes very long text. +Solution: Limit the text length to MAXCOL. + +Patch 9.0.1533 +Problem: Test for 'smoothscroll' is ineffective. +Solution: Change the order of testing "zb" and "zt". (Luuk van Baal, + closes #12366) + +Patch 9.0.1534 +Problem: Test for expanding "~" in substitute takes too long. +Solution: Disable the test for now. + +Patch 9.0.1535 +Problem: Test commented out in a wrong way. +Solution: Use legacy script comment character. + +Patch 9.0.1536 +Problem: CI: sound dummy stopped working. +Solution: Temporarily stop using sound dummy. + +Patch 9.0.1537 +Problem: Message for opening the cmdline window is not translated. +Solution: Add gettext() and scan the defaults script for text to be + translated. (closes #12371) + +Patch 9.0.1538 +Problem: :wqall does not trigger ExitPre. (Bart Libert) +Solution: Move preparations for :qall to a common function. (closes #12374) + +Patch 9.0.1539 +Problem: Typst filetype is not recognized. +Solution: Distinguish between sql and typst. (Gaetan Lepage, closes #12363) + +Patch 9.0.1540 +Problem: reverse() on string doesn't work in compiled function. +Solution: Accept string in argument type check. (Yegappan Lakshmanan, + closes #12377) + +Patch 9.0.1541 +Problem: CI: sound dummy is disabled. +Solution: Make sound dummy work again. (closes #12380) + +Patch 9.0.1542 +Problem: Line not fully displayed if it doesn't fit in the screen. +Solution: Do not reset s_skipcol if not needed. (Luuk van Baal, + closes #12376) + +Patch 9.0.1543 +Problem: Display errors when making topline shorter and 'smoothscroll' is + set. +Solution: Reset w_skipcol when the topline becomes shorter than its current + value. (Luuk van Baal, closes #12367) + +Patch 9.0.1544 +Problem: Recent glibc marks sigset() as a deprecated. +Solution: Use sigaction() in mch_signal() if possible. (Ozaki Kiichi, + closes #12373) + +Patch 9.0.1545 +Problem: Text not scrolled when cursor moved with "g0" and "h". +Solution: Adjust w_skipcol when needed. (Luuk van Baal, closes #12387) + +Patch 9.0.1546 +Problem: Some commands for opening a file don't use 'switchbuf'. +Solution: Use 'switchbuf' for more commands. (Yegappan Lakshmanan, + closes #12383, closes #12381) + +Patch 9.0.1547 +Problem: Coveralls workflow on CI is commented out. +Solution: Remove the Coveralls workflow. (closes #12389) + +Patch 9.0.1548 +Problem: CI: check in sound-dummy module may throw an error. +Solution: Check whether apt-cache can show the package description. + (Christian Brabandt, closes #12390) + +Patch 9.0.1549 +Problem: USD filetype is not recognized. +Solution: Add patterns for USD filetype. (Colin Kennedy, closes #12370) + +Patch 9.0.1550 +Problem: In cmdline window S-Tab does not select previous completion. + (Maxim Kim) +Solution: Add a mapping for S-Tab. (closes #12116) + +Patch 9.0.1551 +Problem: Position of marker for 'smoothscroll' not computed correctly. +Solution: Take 'list' and other options into account. (Luuk van Baal, + closes #12393) + +Patch 9.0.1552 +Problem: CI: sound-dummy module is not installed. +Solution: Invert using the result of the condition. (closes #12394) + +Patch 9.0.1553 +Problem: CI: using slightly outdated gcc version. +Solution: Use "brew" to get a more recent gcc version. (closes #12391) + +Patch 9.0.1554 +Problem: Code for handling 'switchbuf' is repeated. +Solution: Add a function to handle 'switchbuf'. (Yegappan Lakshmanan, + closes #12397) + +Patch 9.0.1555 +Problem: setcharsearch() does not clear last searched char properly. +Solution: Do not accept lastc_bytelen smaller than one. (closes #12398) + +Patch 9.0.1556 +Problem: Vim9: error for missing "return" after "throw". +Solution: Set had_return flag for "throw". (closes #12262) + +Patch 9.0.1557 +Problem: Test failures for unreachable code. +Solution: Add a test override to ignore unreachable code. + +Patch 9.0.1558 +Problem: Wrong error for unreachable code after :throw. +Solution: Adjust the error message. + +Patch 9.0.1559 +Problem: Function argument types not always checked and using v:none may + cause an error. +Solution: Check argument types once the function type is known. Do not give + an error for using v:none as an argument. (closes #12200) + +Patch 9.0.1560 +Problem: Win32: When 'encoding' is set $PATH has duplicate entries. +Solution: Only append the directory if it is not there yet. (Ken Takata, + closes #12400, closes #12372) + +Patch 9.0.1561 +Problem: Display wrong when moving cursor to above the top line and + 'smoothscroll' is set. +Solution: Call adjust_skipcol() in more places and make it work better. + (Luuk van Baal, closes #12395) + +Patch 9.0.1562 +Problem: Mixing package managers is not a good idea. +Solution: Install gcc 13 with apt-get. (closes #12405) + +Patch 9.0.1563 +Problem: GTK3: window manager resize hints are incomplete. +Solution: Use NULL for second argument of gtk_window_set_geometry_hints(). + (Kenny Stauffer closes #11055) + +Patch 9.0.1564 +Problem: Display moves up and down with 'incsearch' and 'smoothscroll'. +Solution: Do not check if w_skipcol changed. (Luuk van Baal, closes #12410, + closes #12409) + +Patch 9.0.1565 +Problem: Json lines files are not recognized. +Solution: Add a pattern to detect "jsonl" files. (issue #7520) + +Patch 9.0.1566 +Problem: Motif: GUI scrollbar test fails in 24 lines terminal. +Solution: Skip the part of the test that fails for now. + +Patch 9.0.1567 +Problem: Profiler calculation may be wrong on 32 bit builds. +Solution: Use 64 bit variable if possible. (Isao Sato, closes #12412) + +Patch 9.0.1568 +Problem: With 'smoothscroll' cursor may move below botline. +Solution: Call redraw_later() if needed, Compute cursor row with adjusted + condition. (Luuk van Baal, closes #12415) + +Patch 9.0.1569 +Problem: Cannot use "this.member" in lambda in class method. +Solution: Adjust check for reserved keyword. (Hirohito Higashi, + closes #12416, closes #12076, closes #12336) + +Patch 9.0.1570 +Problem: Some tests are slow. +Solution: Make a few test cases faster. + +Patch 9.0.1571 +Problem: RedrawingDisabled not used consistently. +Solution: Avoid RedrawingDisabled going negative. Set RedrawingDisabled in + win_split_ins(). (closes #11961) + +Patch 9.0.1572 +Problem: Error messages are not translated. +Solution: Add _(). + +Patch 9.0.1573 +Problem: Error for function name has wrong line number. +Solution: Set the line number before giving the error. + +Patch 9.0.1574 +Problem: MS-Windows: list of translation input files incomplete. +Solution: Move the list of files to a common file. (closes #12426) + +Patch 9.0.1575 +Problem: "file N of M" message is not translated. +Solution: Make argument count message translatable. (close #12429) + +Patch 9.0.1576 +Problem: Users may not know what to do with an internal error. +Solution: Add a translated message with instructions. + +Patch 9.0.1577 +Problem: MS-Windows: context menu translations may be wrong. +Solution: Set the encoding before using gettext(). (Ken Takata, + closes #12441, closes #12431) + +Patch 9.0.1578 +Problem: SpellCap highlight not always updated when needed. +Solution: Handle updating line below closed fold and other situations where + only part of the window is redrawn. (Luuk van Baal, closes #12428, + closes #12420) + +Patch 9.0.1579 +Problem: Some error messages are not translated. +Solution: Add the N_() marker on messages. (closes #12427) + +Patch 9.0.1580 +Problem: CI: indent test hangs on FreeBSD. +Solution: Set 'nomore' when running the indent tests. (Ozaki Kiichi, + closes #12446) + +Patch 9.0.1581 +Problem: Translation does not work for plural argument. +Solution: Use PLURAL_MSG() for errors and with xgettext. (closes #12443) + +Patch 9.0.1582 +Problem: :stopinsert may not work in a popup close handler. (Ben Jackson) +Solution: Restore stop_insert_mode when appropriate. (closes #12452, + closes #12434) + +Patch 9.0.1583 +Problem: Get E304 when using 'cryptmethod' "xchacha20v2". (Steve Mynott) +Solution: Add 4th crypt method to block zero ID check. Avoid syncing a swap + file before reading the file. (closes #12433) + +Patch 9.0.1584 +Problem: Not all meson files are recognized. +Solution: Add "meson.options". (Liam Beguin, closes #12444) + +Patch 9.0.1585 +Problem: Weird use of static variables for spell checking. +Solution: Move the variables to a structure and pass them from win_update() + to win_line(). (Luuk van Baal, closes #12448) + +Patch 9.0.1586 +Problem: Checking translations gives an error for using two messages with + ngettext() that differ in "%" items. +Solution: Adjust the check script to tolerate omitting one "%" item. + +Patch 9.0.1587 +Problem: Corn config files are not recognized. +Solution: Add a pattern for Corn config files. (Jake Stanger, closes #12449) + +Patch 9.0.1588 +Problem: Incsearch not triggered when pasting clipboard register on the + command line. +Solution: Also set "literally" when using a clipboard register. (Ken Takata, + closes #12460) + +Patch 9.0.1589 +Problem: Filetype test contains too many special characters. +Solution: Use Vim9 syntax for a few things. + +Patch 9.0.1590 +Problem: Filetype test has trailing white space. +Solution: Remove trailing white space. + +Patch 9.0.1591 +Problem: Some "gomod" files are not recognized. +Solution: Check for "go.mod" file name before checking out the contents. + (Omar El Halabi, closes #12462) + +Patch 9.0.1592 +Problem: Not all timer tests are marked as flaky. +Solution: Set the flaky flag for all timer tests. (closes #12355) + +Patch 9.0.1593 +Problem: MS-Windows: assert error when compiled with debug mode. +Solution: Adjust arguments to setvbuf(). (Ken Takata, closes #12467) + +Patch 9.0.1594 +Problem: Some internal error messages are translated. +Solution: Consistently do not translate internal error messages. + (closes #12459) + +Patch 9.0.1595 +Problem: Line pointer becomes invalid when using spell checking. +Solution: Call ml_get() at the right places. (Luuk van Baal, closes #12456) + +Patch 9.0.1596 +Problem: :registers command does not work in sandbox. +Solution: Add flag to the command. (closes #12473) + +Patch 9.0.1597 +Problem: Cursor ends up below the window after a put. +Solution: Mark w_crow and w_botline invalid when changing the cursor line. + (closes #12465) + +Patch 9.0.1598 +Problem: screenchar(), screenchars() and screenstring() do not work + properly when 'encoding' is set to a double-byte encoding. +Solution: Fix the way the bytes of the characters are obtained. + (issue #12469) + +Patch 9.0.1599 +Problem: Cursor not adjusted when near top or bottom of window and + 'splitkeep' is not "cursor". +Solution: Move boundary checks to outer cursor move functions, inner + functions should only return valid cursor positions. (Luuk van + Baal, closes #12480) + +Patch 9.0.1600 +Problem: screenpos() does not take w_skipcol into account. +Solution: Subtract w_skipcol from column. (closes #12486, closes #12476) + +Patch 9.0.1601 +Problem: Filetype detection fails for *.conf file without comments. + (Dmitrii Tcyganok) +Solution: Use "conf" filetype as a fallback for an empty .conf file. + (closes #12487, closes #12483) + +Patch 9.0.1602 +Problem: Stray character is visible if 'smoothscroll' marker is displayed + on top of a double-wide character. +Solution: When overwriting a double-width character with the 'smoothscroll' + marker clear the second half. (closes #12469) + +Patch 9.0.1603 +Problem: Display wrong when scrolling multiple lines with 'smoothscroll' + set. +Solution: Redraw when w_skipcol changed. (closes #12477, closes #12468) + +Patch 9.0.1604 +Problem: Errors from the codestyle test are a bit confusing. +Solution: Use assert_report() with a clearer message. Avoid a warning for + an existing swap file. + +Patch 9.0.1605 +Problem: Crash when calling method on super in child constructor. (Israel + Chauca Fuentes) +Solution: Clear the type list. (Ernie Rael, closes #12489, closes #12471) + +Patch 9.0.1606 +Problem: Using freed memory when 'foldcolumn' is set. +Solution: Save extra pointer to free it later. (closes #12492) + +Patch 9.0.1607 +Problem: screenpos() returns wrong row with diff filler lines. +Solution: Only add filler lines when appropriate. Also don't add the + 'smoothscroll' marker when w_skipcol is zero. (closes #12485, + closes #12484) + +Patch 9.0.1608 +Problem: update_topline() is called twice. +Solution: Do not call update_topline() before curs_columns(). (Luuk van + Baal, closes #12495) + +Patch 9.0.1609 +Problem: Crash when an object indirectly references itself. +Solution: Avoid clearing an object while it is already being cleared. + (closes #12494) + +Patch 9.0.1610 +Problem: Display is wrong when 'smoothscroll' is set and scrolling multiple + lines. +Solution: Redraw with UPD_NOT_VALID when "skipcol" is or was set. + (closes #12490, closes #12468) + +Patch 9.0.1611 +Problem: v:maxcol can be changed in a :for loop. +Solution: Check for read-only loop variable. (closes #12470) + +Patch 9.0.1612 +Problem: "skipcol" not reset when using multi-byte characters. +Solution: Compare with w_virtcol instead of w_cursor.col. (closes #12457) + +Patch 9.0.1613 +Problem: Some make output gets picked up by 'errorformat'. +Solution: Ignore make output by default. (Gregory Anders, closes #12481) + +Patch 9.0.1614 +Problem: strlen() called too often for :spellrepall. +Solution: Store the result in a variable. (closes #12497) + +Patch 9.0.1615 +Problem: URL shortcut files are not recognized. +Solution: Add a pattern for URL shortcut files. (closes #12474) + +Patch 9.0.1616 +Problem: Quickfix text field is truncated. +Solution: Fix output of text field after pattern field in quickfix buffer. + (Shane Harper, closes #12498) + +Patch 9.0.1617 +Problem: charidx() and utf16idx() result is not consistent with byteidx(). +Solution: When the index is equal to the length of the text return the + length of the text instead of -1. (Yegappan Lakshmanan, + closes #12503) + +Patch 9.0.1618 +Problem: Trace32 files are not recognized. +Solution: Add patterns for the t32 filetype. (Christoph Sax, closes #12505) + +Patch 9.0.1619 +Problem: The focus gained/lost escape sequences cause trouble for a + terminal where Vim does not expect them. +Solution: Always recognize the codes for focus gained/lost. (closes #12499) + +Patch 9.0.1620 +Problem: Nix files are not recognized from the hashbang line. +Solution: Add a hashbang check. (issue #12507) + +Patch 9.0.1621 +Problem: FILETYPE_FILE is defined to the same value multiple times. Same + for a few similar macros. +Solution: Define FILETYPE_FILE and others in feature.h only + +Patch 9.0.1622 +Problem: Filetype name t32 is a bit obscure. +Solution: Rename t32 to trace32. (Christoph Sax, closes #12512) + +Patch 9.0.1623 +Problem: The program to filetype translation is not exported. +Solution: Export Exe2filetype(). + +Patch 9.0.1624 +Problem: Crash when calling object constructor from legacy script. (Israel + Chauca Fuentes) +Solution: Pass a pointer for "ufunc". (closes #12502) + +Patch 9.0.1625 +Problem: "super" is not considered a reserved name. +Solution: Add "super" to the list of reserved names. (closes #12515) + +Patch 9.0.1626 +Problem: Visual area not shown when using 'showbreak' and start of line is + not visible. (Jaehwang Jung) +Solution: Adjust "fromcol" for the space taken by 'showbreak'. + (closes #12514) + +Patch 9.0.1627 +Problem: No generic mechanism to test syntax plugins. +Solution: Add a syntax plugin test mechanism, using screendumps. Add a + simple test for "c". + +Patch 9.0.1628 +Problem: Syntax tests fail on FreeBSD. +Solution: Pass the Vim executable path with VIMPROG. (Ken Takata, + closes #12535) Adjust the paths. + +Patch 9.0.1629 +Problem: Having utf16idx() rounding up is inconvenient. +Solution: Make utf16idx() round down. (Yegappan Lakshmanan, closes #12523) + +Patch 9.0.1630 +Problem: "make clean" at the toplevel fails. +Solution: Clean the indent and syntax directories in a sub-shell. (Ben + Jackson, closes #12536, closes #12526) + +Patch 9.0.1631 +Problem: Passing a wrong variable type to an option gives multiple errors. +Solution: Bail out early on failure. (closes #12504) + +Patch 9.0.1632 +Problem: Not all cabal config files are recognized. +Solution: Add a couple of patterns. (Marcin Szamotulski, closes #12463) + +Patch 9.0.1633 +Problem: Duplicate code for converting float to string. +Solution: Use tv_get_string(). (closes #12521) + +Patch 9.0.1634 +Problem: Message is cleared when removing mode message (Gary Johnson). +Solution: Do not clear the command line after displaying a message. + +Patch 9.0.1635 +Problem: Error message is cleared when removing mode message. +Solution: Also reset flags when the message is further down. + +Patch 9.0.1636 +Problem: Expanding a pattern interferes with command line completion. +Solution: Set the file index only when appropriate. (closes #12519) + +Patch 9.0.1637 +Problem: Compiler warning for uninitialized variable. +Solution: Move the variable to an inner block and initialize it. (Christian + Brabandt, closes #12549) + +Patch 9.0.1638 +Problem: crypt tests hang and cause memory errors +Solution: Move variable to start of function. + +Patch 9.0.1639 +Problem: Build failure without the crypt feature. +Solution: Adjust #ifdefs + +Patch 9.0.1640 +Problem: Compiler warning for unused variables without the crypt feature. +Solution: Adjust #ifdefs + +Patch 9.0.1641 +Problem: The log file does not give information about window sizes. +Solution: Add a few log messages about obtaining the window size. + +Patch 9.0.1642 +Problem: Build failure with tiny features. +Solution: Add #ifdef's. + +Patch 9.0.1643 +Problem: Filetype detection fails if file name ends in many '~'. +Solution: Strip multiple '~' at the same time. (closes #12553) + +Patch 9.0.1644 +Problem: Not all filetype file name matches are tested. +Solution: Add more file names to test with. (Jonas Strittmatter, + closes #12569) + +Patch 9.0.1645 +Problem: zserio files are not recognized. +Solution: Add a pattern for zserio files. (Dominique Pell茅, + closes #12544) + +Patch 9.0.1646 +Problem: CI: codecov may take a very long time to run. +Solution: Add a timeout. (Philip Heiduck, closes #12559) + +Patch 9.0.1647 +Problem: Insufficient testing for syntax plugins. +Solution: Add shell file examples. (Charles Campbell) Create a messages + file for easier debugging and reporting the test results. + +Patch 9.0.1648 +Problem: Result of syntax tests is hard to see. +Solution: List the failed tests. + +Patch 9.0.1649 +Problem: Syntax test failure causes script to abort. +Solution: Fix appending string to list. + +Patch 9.0.1650 +Problem: MS-Windows: default 'viewdir' may include read-only directory. +Solution: Use $HOME instead of $VIM for 'viewdir' default. (closes #12119) + +Patch 9.0.1651 +Problem: Unclear why syntax test fails on Mac. +Solution: Temporarily show the whole "messages" file. + +Patch 9.0.1652 +Problem: Unclear why syntax test fails on Mac. +Solution: Echo v:errors when it's not empty. + +Patch 9.0.1653 +Problem: Amiga: default 'viewdir' may not work. +Solution: Use "home:" instead of "$VIM". Add a test. (Christian Brabandt, + closes #12576) + +Patch 9.0.1654 +Problem: MS-Windows: test for default 'viewdir' fails. +Solution: Escape the pattern. + +Patch 9.0.1655 +Problem: Syntax test fails when Vim window is not tall enough. +Solution: Make sure each terminal window is closed. + +Patch 9.0.1656 +Problem: Syntax test fails when detected shell type differs. +Solution: Avoid using "/bin/sh", it depends on the system. Add a check that + the shell type detection is correct. + +Patch 9.0.1657 +Problem: One more syntax test depends on the system. +Solution: Use "dash" instead of "sh". + +Patch 9.0.1658 +Problem: Autoload files for "zig" are not installed. +Solution: Add install and uninstall rules in the makefile. (Christian + Brabandt, closes #12577, closes #12567) + +Patch 9.0.1659 +Problem: Termdebug: default highlight cleared when changing colorscheme. +Solution: Use a ColorScheme autocommand. (Christian Brabandt, closes #12566, + closes #12555) + +Patch 9.0.1660 +Problem: Error for using matchfuzzy() in Vim9 script returning a list of + dicts. +Solution: Make return type of matchfuzzy() list<any>. (Yegappan Lakshmanan, + closes #12574) + +Patch 9.0.1661 +Problem: BUCK files are not recognized. +Solution: Recognize BUCK files as "bzl". (Son Luong Ngoc, closes #12564) + +Patch 9.0.1662 +Problem: Crash when using a class member twice. (Christian J. Robinson) +Solution: Make a copy of the value. + +Patch 9.0.1663 +Problem: Termdebug on MS-Windows: some file names are not recognized. +Solution: Do not always change \t and \n. (Christian Brabandt, + closes #12565, closes #12560, closes #12550) + +Patch 9.0.1664 +Problem: Divide by zero when scrolling with 'smoothscroll' set. +Solution: Avoid using a negative width. (closes #12540, closes #12528) + +Patch 9.0.1665 +Problem: Empty CmdlineEnter autocommand causes errors in Ex mode. +Solution: Save and restore ex_pressedreturn. (Christian Brabandt, + closes # 12581, closes #12578) + +Patch 9.0.1666 +Problem: Compiler may warn for uninitialized variable. +Solution: Initialize this_props_len. (Christian Brabandt, closes #12599) + +Patch 9.0.1667 +Problem: Regression test doesn't fail when fix is reverted. +Solution: Add "n" to 'cpoptions' instead of using :winsize. (closes #12587, + issue #12528) + +Patch 9.0.1668 +Problem: PEM files are not recognized. +Solution: Add patterns to match PEM files. (closes #12582) + +Patch 9.0.1669 +Problem: Crash syncing swapfile in new buffer when using sodium crypt. + (James McCoy) +Solution: Add checks for sodium encryption. (Christian Brabandt, + closes #12591, closes #12585) + +Patch 9.0.1670 +Problem: Resetting local option to global value is inconsistent. +Solution: Handle "<" specifically for 'scrolloff' and 'sidescrolloff'. + (closes #12594) + +Patch 9.0.1671 +Problem: Termdebug: error with more than 99 breakpoints. +Solution: Use a different sign for breakpoint 100 and over. (closes #12589, + closes #12588) + +Patch 9.0.1672 +Problem: Tabline highlight wrong after truncated double width label. +Solution: Fill up half a double width character later. (closes #12614) + +Patch 9.0.1673 +Problem: Cannot produce a status 418 or 503 message. +Solution: Add err_teapot(). + +Patch 9.0.1674 +Problem: Help for builtin functions is not sorted properly. +Solution: Put err_teapot() help in the right position. + +Patch 9.0.1675 +Problem: Test may run into timeout when using valgrind. +Solution: Use a longer timeout when using valgrind. + +Patch 9.0.1676 +Problem: Warning for buffer in use when exiting early. +Solution: Change file names to be able to see what buffer is in use when + exiting. + +Patch 9.0.1677 +Problem: Typo in syntax test input file. +Solution: Fix the typo and the expected dump files. (THARAK HEGDE, + closes #12635) + +Patch 9.0.1678 +Problem: Blade files are not recognized. +Solution: Add a pattern for Blade files. (closes #12650) + +Patch 9.0.1679 +Problem: Tests may leave leftover files around +Solution: Clean up tests and remove files + +Patch 9.0.1680 +Problem: sodium test fails in Github CI +Solution: Catch sodium_mlock() errors and do not error out + +Patch 9.0.1681 +Problem: Build Failure with Perl 5.38 +Solution: Fix Build Failure + +Patch 9.0.1682 +Problem: crypt: sodium encryption is not portable +Solution: use little-endian byte order for sodium encrypted files + +Patch 9.0.1683 +Problem: need runtime files updated +Solution: merge various github PRs + +Patch 9.0.1684 +Problem: libvterm slightly outdated +Solution: Update libvterm from rev 818 to rev 839 + +Patch 9.0.1685 +Problem: Python 3.11 interface throws deprecation warnings +Solution: ignore those warnings for gcc and clang + +Patch 9.0.1686 +Problem: undotree() only works for the current buffer +Solution: Add an optional "buffer number" parameter to undotree(). If + omitted, use the current buffer for backwards compatibility. + +Patch 9.0.1687 +Problem: mapset() not properly handling script ID +Solution: replace_termcodes() may accept a script ID + +Patch 9.0.1688 +Problem: cannot store custom data in quickfix list +Solution: add `user_data` field for the quickfix list + +Patch 9.0.1689 +Problem: python 3.12 produces warnings and fails test +Solution: Make use of raw strings in python3 tests + +Patch 9.0.1690 +Problem: popup_create() not aborting on errors +Solution: check for errors in arguments given and abort if an error + occurred + +Patch 9.0.1691 +Problem: wrong viewport restored for incsearch and smoothscroll +Solution: Save and restore skipcol as well + +Patch 9.0.1692 +Problem: Android not handling AI_V4MAPPED ai_flag +Solution: don't set AI_V4MAPPED flag when on Android, since + Android's getaddrinfo returns EAI_BADFLAGS if ai_flags + contains it + +Patch 9.0.1693 +Problem: Ctrl-Q not handled like Ctrl-V in replace mode +Solution: Handle Ctrl-Q like Ctrl-V + +Patch 9.0.1694 +Problem: wrong mapping applied when replaying a char search +Solution: Store a NOP after the ESC + +Patch 9.0.1695 +Problem: Crash with overlong textprop above +Solution: Consider only positive padding + +Patch 9.0.1696 +Problem: sodium_mlock may still fail in CI +Solution: Catch E1230 in testscript and skip test + +Patch 9.0.1697 +Problem: incsearch test not sufficient (after 9.0.1691) +Solution: add an additional test + +Patch 9.0.1698 +Problem: Test_map_restore_sid fails in GUI +Solution: Feed an unsimplified Ctrl-B + +Patch 9.0.1699 +Problem: compile warning for xdiff/xutils on MS-Windows +Solution: add explicit type cast from size_t to long + +Patch 9.0.1700 +Problem: Cannot compile with dynamic perl < 5.38 (after 9.0.1681) +Solution: Fix if_perl/dyn from perl 5.32 to 5.38 + +Patch 9.0.1701 +Problem: vim9 crash when class member overridden +Solution: Use method_count field instead + +Patch 9.0.1702 +Problem: Undo test is flaky. +Solution: Apply filter and change time to "1 second ago" in both dumps. + +Patch 9.0.1703 +Problem: Vim9 Calling a method in an extended class fails +Solution: use method index directly + +Patch 9.0.1704 +Problem: Cannot use positional arguments for printf() +Solution: Support positional arguments in string formatting + +Patch 9.0.1705 +Problem: cursor position wrong when clicking on an unprintable char +Solution: Don't update prev_ptr when wlv.n_extra is not zero. + +Patch 9.0.1706 +Problem: typos in the xxd manpage +Solution: Fix typos and formatting + +Patch 9.0.1707 +Problem: Cannot wrap around in popup_filter_menu() +Solution: Allow to wrap around by default + +Patch 9.0.1708 +Problem: getcompletion() fails for user-defined commands +Solution: set context for completion function + +Patch 9.0.1709 +Problem: dynamic build with python 3.12 breaks +Solution: if_python3.c: Fix building dynamic Python3 interpreter + +Patch 9.0.1710 +Problem: sidescrolloff and scrolloff options work slightly + different than other global-local options +Solution: Make it behave consistent for all global-local options + +Patch 9.0.1711 +Problem: dead code in charset.c +Solution: remove it + +Patch 9.0.1712 +Problem: missing null check in object_clear() +Solution: Add null check of cl + +Patch 9.0.1713 +Problem: Github CI fails to load snd-dummy kernel module +Solution: Make installation of linux-modules-extra optional + +Patch 9.0.1714 +Problem: getcompletion() "cmdline" fails after :autocmd +Solution: Use set_cmd_context() instead of set_one_cmd_context(). + +Patch 9.0.1715 +Problem: duplicate test in message_test.c +Solution: Remove duplicate test and make functions static + +Patch 9.0.1716 +Problem: Windows build with python 3.12 and clang fails +Solution: Remove the PyBool_Type function pointer for python 3.12 + +Patch 9.0.1717 +Problem: virtcol2col returns last byte of a multi-byte char +Solution: Make it return the first byte for a multi-byte char + +Patch 9.0.1718 +Problem: dict-completion does not respect region +Solution: respect selected region in dict completion + +Patch 9.0.1719 +Problem: if_lua: crash for Lua functions invoked via Vim callbacks +Solution: Use Lua registry rather than upvalues for udata cache + +Patch 9.0.1720 +Problem: Vim9 class using wrong index for overridden method +Solution: Use correct index for overridden method + +Patch 9.0.1721 +Problem: Build failure on Windows with dynamic lua (after 9.0.1719) +Solution: move definition further down in if_lua + +Patch 9.0.1722 +Problem: wrong error messages when passing wrong types to count() +Solution: fix it + +Patch 9.0.1723 +Problem: Fix regression in {func} argument of reduce() +Solution: pass function name as string again + +Patch 9.0.1724 +Problem: vim9class constructor argument type checking bug +Solution: fix it + +Patch 9.0.1725 +Problem: Wrong cursor position when clicking after concealed text + with 'virtualedit'. +Solution: Store virtual columns in ScreenCols[] instead of text + columns, and always use coladvance() when clicking. + +Patch 9.0.1726 +Problem: incorrect heights in win_size_restore() +Solution: avoid restoring incorrect heights in win_size_restore() + +Patch 9.0.1727 +Problem: minor problems with the teapot() +Solution: remove the null check, update documentation + +Patch 9.0.1728 +Problem: missing winid argument for virtcol() +Solution: Add a {winid} argument to virtcol() + +Patch 9.0.1729 +Problem: screenpos() wrong result with w_skipcol and cpoptions+=n +Solution: Use adjust_plines_for_skipcol() instead of subtracting + w_skipcol. + +Patch 9.0.1730 +Problem: passing multiple patterns to runtime not working +Solution: prepend prefix to each argument separately + +Patch 9.0.1731 +Problem: blockwise Visual highlight not working with virtual text +Solution: Reset the correct variable at the end of virtual selection and + Check for double-width char inside virtual text. + +Patch 9.0.1732 +Problem: vimexpr: shadowing variable +Solution: Rename local variable + +Patch 9.0.1733 +Problem: CI: cannot cache linux-modules-extra +Solution: Enable caching and reduce failed downloads + +Patch 9.0.1734 +Problem: runtime completion fails for multiple args +Solution: Make it work + +Patch 9.0.1735 +Problem: Rename completion specific findex var +Solution: Move "findex" static variable to xp_selected in expand_T + +Patch 9.0.1736 +Problem: Github Actions times out after 20 minutes +Solution: Increase the timeout to 25 minutes + +Patch 9.0.1737 +Problem: Calling a base class method through an extended class fails +Solution: Create lookup table for member index in the interface to + to the member class implementing the interface + +Patch 9.0.1738 +Problem: Duplicate code to reverse a string +Solution: Move reverse_text() to strings.c and remove string_reverse(). + +Patch 9.0.1739 +Problem: leftover files in libvterm +Solution: Fix cleaning of libvterm directory + +Patch 9.0.1740 +Problem: segfault when reading invalid viminfo file +Solution: Check the expected type in the viminfo file + +Patch 9.0.1741 +Problem: No type checking in interfaces +Solution: Implement member type check in vim9 interfaces + +Patch 9.0.1742 +Problem: Wrong curswant when clicking and the second cell of a + double-width char. +Solution: Don't copy virtcol of the first char to the second one. + +Patch 9.0.1743 +Problem: Parameter of gui_gtk:gui_mch_browse incorrectly marked as + UNUSED. +Solution: Remove UNUSED flag. + +Patch 9.0.1744 +Problem: Dead code in open_cmdwin() +Solution: Remove it + +Patch 9.0.1745 +Problem: Missing test coverage for blockwise Visual highlight with + virtual that starts with a double-width char. +Solution: Add a new virtual text to the test. Some other small fixes. + +Patch 9.0.1746 +Problem: vim9class compile error for char/char_u conversion +Solution: Correctly cast to (char *) + +Patch 9.0.1747 +Problem: screenpos() may cause unnecessary redraw. +Solution: Don't unnecessarily reset VALID_WROW flag. + +Patch 9.0.1748 +Problem: CI: cannot label issues automatically +Solution: Create CI labeler + +Patch 9.0.1749 +Problem: Text property highlight doesn't override a sign highlight over + a tab character +Solution: Let text_property override tab highlighting + +Patch 9.0.1750 +Problem: CI: fails because of changed error messages + (after: 9.0.1741) +Solution: Adjust expected error messages + +Patch 9.0.1751 +Problem: CI: labeler configuration not found + (after 9.0.1748) +Solution: set configuration path + +Patch 9.0.1752 +Problem: CI: Coveralls is no longer used +Solution: Remove .coveralls.yml + +Patch 9.0.1753 +Problem: can't move to last non-blank char +Solution: Make g<end> behave like that + +Patch 9.0.1754 +Problem: still ci breakage (after 9.0.1741) +Solution: fix remaining issue + +Patch 9.0.1755 +Problem: CI still fails with sodium mlock error +Solution: catch mlock failure + +Patch 9.0.1756 +Problem: failing cursorline sign test +Solution: only reset char attr, if cursorline + option is not set + +Patch 9.0.1757 +Problem: ex_class() function is too long +Solution: refactor it + +Patch 9.0.1758 +Problem: vim9 no class identifiers in stack dumps +Solution: Prefix class members in stack traces with the class name + followed by a dot. + +Patch 9.0.1759 +Problem: Visual highlight not working with cursor at end of screen line + and 'showbreak'. +Solution: Only update "vcol_prev" when drawing buffer text. + +Patch 9.0.1760 +Problem: vim9 class problem with new() constructor +Solution: Don't allow a return type for the new() class constructor. + +Patch 9.0.1761 +Problem: g<kEnd> behaves different from g<end> +Solution: Make g<kEnd> behave like g<End> + +Patch 9.0.1762 +Problem: Not able to get the virtual text property +Solution: Make prop_list() return virtual text and alignment + +Patch 9.0.1763 +Problem: crash when passing invalid buffer to undotree() +Solution: Use get_buf_arg() instead of tv_get_buf_from_arg(). + +Patch 9.0.1764 +Problem: CI: label should not be set on all yml files +Solution: only set it for specific yml files in .github + +Patch 9.0.1765 +Problem: Error when cross-compiling Vim +Solution: use AC_CHECK_SIZEOF to find sizeof(wchar_t) + +Patch 9.0.1766 +Problem: Runtime: Missing QML support +Solution: Add QML support to Vim + +Patch 9.0.1767 +Problem: '.-' no allowed in highlight group names +Solution: Allow dot and hyphen characters in highlight group names + +Patch 9.0.1768 +Problem: Runtime: no support for bicep files +Solution: Add filetype support for bicepparam + +Patch 9.0.1769 +Problem: executable() ignoring symlinks on Windows +Solution: resolve reparse points + +Patch 9.0.1770 +Problem: lines disappear when modifying chars before virt text +Solution: take virtual text property length into account + +Patch 9.0.1771 +Problem: regex: combining chars in collections not handled +Solution: Check for following combining characters for NFA and BT engine + +Patch 9.0.1772 +Problem: Cursor is adjusted in window that did not change in size by + 'splitkeep'. +Solution: Only check that cursor position is valid in a window that + has changed in size. + +Patch 9.0.1773 +Problem: cannot distinguish Forth and Fortran *.f files +Solution: Add Filetype detection Code + +Patch 9.0.1774 +Problem: no support for custom cmdline completion +Solution: Add new vimscript functions + +Patch 9.0.1775 +Problem: Wrong comparison in vim9type.c +Solution: Change condition to false + +Patch 9.0.1776 +Problem: No support for stable Python 3 ABI +Solution: Support Python 3 stable ABI + +Patch 9.0.1777 +Problem: patch 9.0.1771 causes problems +Solution: revert it + +Patch 9.0.1778 +Problem: if_py_both: code-style issue +Solution: add space + +Patch 9.0.1779 +Problem: Need more state() tests +Solution: Add a few more tests for operator pending mode and register + yank command + +Patch 9.0.1780 +Problem: Vim9 type not defined during object creation +Solution: Define type during object creation and not during class + definition, parse multi-line member initializers, fix lock + initialization + +Patch 9.0.1781 +Problem: Problems when setting bin/paste option +Solution: When setting binary/paste, remember that this also affects + depending options, so that :verbose set returns the right + location. + +Patch 9.0.1782 +Problem: prop_list() does not return text_padding_left +Solution: Store and return the text_padding_left value for text + properties + +Patch 9.0.1783 +Problem: Wrong display with wrapping virtual text or unprintable chars, + 'showbreak' and 'smoothscroll'. +Solution: Don't skip cells taken by 'showbreak' in screen lines before + "w_skipcol". Combined "n_skip" and "skip_cells". + +Patch 9.0.1784 +Problem: redundant else in pum_set_selected() +Solution: Remove it + +Patch 9.0.1785 +Problem: wrong cursor position with 'showbreak' and lcs-eol +Solution: Add size of 'showbreak' before when 'listchars' "eol" is used. + Also fix wrong cursor position with wrapping virtual text on + empty line and 'showbreak'. + +Patch 9.0.1786 +Problem: Vim9: need instanceof() function +Solution: Implement instanceof() builtin + +Patch 9.0.1787 +Problem: Cannot build with latest luajit +Solution: adjust sed regexp and don't expect '-' in version output + +Patch 9.0.1788 +Problem: C4090 warnings in strings.c +Solution: Add type casts + +Patch 9.0.1789 +Problem: too early declaration of variable in pum_set_selected() +Solution: Move declaration to where it is actually used + +Patch 9.0.1790 +Problem: The Content-Type header is an optional header that some LSP + servers struggle with and may crash when encountering it. +Solution: Drop the Content-Type header from all messages, because we use + the default value anyway. + +Patch 9.0.1791 +Problem: No tests for the Termdebug plugin +Solution: Add some simple tests for the Termdebug plugin + +Patch 9.0.1792 +Problem: Normal mode "gM", "gj", "gk" commands behave incorrectly with + virtual text. +Solution: Use linetabsize() instead of linetabsize_str(). + +Patch 9.0.1793 +Problem: obsolete macros in configure script +Solution: Remove those and start moving to autoconf 2.71 + +Patch 9.0.1794 +Problem: autoconf: not correctly detecting include dirs +Solution: make use of python3 to generate includedirs + +Patch 9.0.1795 +Problem: Indentation issues +Solution: Fix code indentation issues. + +Patch 9.0.1796 +Problem: Vim9 problems with null_objects +Solution: Vim9 improve null_object usage + +Patch 9.0.1797 +Problem: Vimball/Visual Basic filetype detection conflict +Solution: runtime(vb): Improve Vimball and Visual Basic detection logic + +Patch 9.0.1798 +Problem: The 'syntax' option has no completion. +Solution: Add syntax option completion. + +Patch 9.0.1799 +Problem: Russian menu translation can be improved +Solution: update the Russian menu files + +Patch 9.0.1800 +Problem: Cursor position still wrong with 'showbreak' and virtual text + after last character or 'listchars' "eol". +Solution: Remove unnecessary w_wcol adjustment in curs_columns(). Also + fix first char of virtual text not shown at the start of a screen + line. + +Patch 9.0.1801 +Problem: Vim9 instanceof() fails in a def func +Solution: allow Objects in compile time check + +Patch 9.0.1802 +Problem: Multiline regex with Visual selection fails when Visual + selection contains virtual text after last char. +Solution: Only include virtual text after last char when getting full + line length. + +Patch 9.0.1803 +Problem: Cannot detect norg markup files +Solution: Add norg markup language detection + +Patch 9.0.1804 +Problem: Vim9: no support for private object methods +Solution: Add support for private object/class methods + +Patch 9.0.1805 +Problem: Vim9: problem compiling object method as function call arg +Solution: After a object/class method call, remove the object/class from + the stack. + +Patch 9.0.1806 +Problem: Vim9: bogus error on export +Solution: Don't error out when the export command is not executed + +Patch 9.0.1807 +Problem: runtime: crystal scripts not recognised +Solution: Filetype detect Crystal scripts by shebang line + +Patch 9.0.1808 +Problem: Termdebug: Typo in Termdebug test +Solution: fix the typos + +Patch 9.0.1809 +Problem: Termdebug test flaky +Solution: wait slightly longer + +Patch 9.0.1810 +Problem: camel-case spelling has issues with digits +Solution: Improve the camCase spell checking by taking digits + and caps into account + +Patch 9.0.1811 +Problem: still some issues with term_debug test +Solution: Use WaitForAssert() + +Patch 9.0.1812 +Problem: CI still fails with sodium_mlock error() +Solution: Catch and ignore E1230 error in test_crypt + +Patch 9.0.1813 +Problem: 'linebreak' is incorrectly drawn after 'breakindent'. +Solution: Don't include 'breakindent' size when already after it. + +Patch 9.0.1814 +Problem: Vim9 no error on duplicate object member var +Solution: detect duplicate members and error out + +Patch 9.0.1815 +Problem: pango_coverage_unref() deprecated in pango > 1.51 +Solution: use g_object_unref() instead + +Patch 9.0.1816 +Problem: configure: sed uses non-portable regex +Solution: use '*' modifier instead of '\?' in regex + for luajit version detection + +Patch 9.0.1817 +Problem: configure: using obsolete AC_HEADER_STDC +Solution: Remove it and re-create configure + +Patch 9.0.1818 +Problem: dynamically linking perl is broken +Solution: Fix all issues + +Patch 9.0.1819 +Problem: Github CI too complex +Solution: CI: Tidy up matrix + +Patch 9.0.1820 +Problem: Rexx files may not be recognised +Solution: Add shebang detection and improve disambiguation of *.cls + files + +Patch 9.0.1821 +Problem: Vim9 constructors are always static +Solution: make the "static" keyword an error + +Patch 9.0.1822 +Problem: Vim9: no check for duplicate members in extended classes +Solution: Check for duplicate members in extended classes. + Fix memory leak. + +Patch 9.0.1823 +Problem: Autoconf 2.69 too old +Solution: Migrate to Autoconf 2.71 + +Patch 9.0.1824 +Problem: Vim9: private members may be modifiable +Solution: prevent modification for def function + +Patch 9.0.1825 +Problem: Wrong cursor position with virtual text before a whitespace + character and 'linebreak'. +Solution: Always set "col_adj" to "size - 1" and apply 'linebreak' after + adding the size of 'breakindent' and 'showbreak'. + +Patch 9.0.1826 +Problem: keytrans() doesn't translate recorded key typed in a GUI +Solution: Handle CSI like K_SPECIAL, like in mb_unescape() + +Patch 9.0.1827 +Problem: xxd: no color support +Solution: Add color support using xxd -R + +Patch 9.0.1828 +Problem: Wrong cursor position with virtual text before double-width + char at window edge. +Solution: Check for double-width char before adding virtual text size. + +Patch 9.0.1829 +Problem: Vim9 missing access-checks for private vars +Solution: Use the proper check for private/readonly variable. Access + level for a member cannot be changed in a class implementing an + interface. Update the code indentation + +Patch 9.0.1830 +Problem: Vim9: crash when accessing a null object +Solution: Check accessing a NULL object in def function + +Patch 9.0.1831 +Problem: Vim9: failing null test +Solution: Use required public keyword + +Patch 9.0.1832 +Problem: xxd: reporting wrong version (after 9.0.1827) +Solution: Update version string + +Patch 9.0.1833 +Problem: runtime files may execute code in current dir +Solution: only execute, if not run from current directory + +Patch 9.0.1834 +Problem: Some problems with xxd coloring +Solution: Fix the following problems: + +Patch 9.0.1835 +Problem: Perl interface has problems with load PL_current_context +Solution: Fix Perl interface to load PL_current_context from library + +Patch 9.0.1836 +Problem: Wrong display with "above" virtual text and 'linebreak' or + 'breakindent' and 'showbreak'. +Solution: Exclude size of "above" virtual text when calculating them. + +Patch 9.0.1837 +Problem: Vim9: class_member_type() can be optimized +Solution: class_member_type() provides more information; + safe an additional alloc()/free() + +Patch 9.0.1838 +Problem: Vim9: Cannot modify class member vars from def function +Solution: Add support for modifying class member variables from a def + function + +Patch 9.0.1839 +Problem: No Makefile rule to build cscope database +Solution: Add rule + +Patch 9.0.1840 +Problem: use-after-free in do_ecmd +Solution: Verify oldwin pointer after reset_VIsual() + +Patch 9.0.1841 +Problem: style: trailing whitespace in ex_cmds.c +Solution: remove it + +Patch 9.0.1842 +Problem: Need more accurate profiling +Solution: Improve profiling results + +Patch 9.0.1843 +Problem: xxd color test flaky +Solution: Filter unneeded lines + +Patch 9.0.1844 +Problem: doc helptags may not be up to date +Solution: Add CI jobs to verify helptags are updated + +Patch 9.0.1845 +Problem: xxd: Test_xxd_color start failing +Solution: Revert changes to dump file + +Patch 9.0.1846 +Problem: crash in fullcommand +Solution: Check for typeval correctly + +Patch 9.0.1847 +Problem: potential oob write in do_addsub() +Solution: don't overflow buf2, check size in for loop() + +Patch 9.0.1848 +Problem: buffer-overflow in vim_regsub_both() +Solution: Check remaining space + +Patch 9.0.1849 +Problem: CI error on different signedness +Solution: cast unsigned to int + +Patch 9.0.1850 +Problem: Vim9: wrong line number where options set +Solution: Set source line number earlier + +Patch 9.0.1851 +Problem: Virtual text at a column causes 'breakindent' and 'showbreak' + to be missing (after patch 9.0.1124). +Solution: Add check for "tp_col" in another place where TP_FLAG_WRAP is + checked. + +Patch 9.0.1852 +Problem: i_CTRL-O does not reset Select Mode +Solution: Reset select mode on CTRL-O in insert mode + +Patch 9.0.1853 +Problem: CI error on different signedness in regexp.c + (after patch 9.0.1848) +Solution: Cast strlen() call to int + +Patch 9.0.1854 +Problem: test_crash1() fails on CI +Solution: don't run Screendump test, verify that it doesn't crash + by running it through a shell command line, testing + the exit value and concatenating success cmd using '&&' + +Patch 9.0.1855 +Problem: mode() doesn't indicate command line for terminal +Solution: make it return 'ct' for command-line from Terminal mode + +Patch 9.0.1856 +Problem: issues with formatting positional arguments +Solution: fix them, add tests and documentation + +Patch 9.0.1857 +Problem: heap-use-after-free in is_qf_win() +Solution: Check buffer is valid before accessing it + +Patch 9.0.1858 +Problem: heap use after free in ins_compl_get_exp() +Solution: validate buffer before accessing it + +Patch 9.0.1859 +Problem: heap-use-after-free in bt_normal() +Solution: check that buffer is still valid + +Patch 9.0.1860 +Problem: CI: test_crash1() is flaky +Solution: Wait a bit longer + +Patch 9.0.1861 +Problem: xxd: issue when -R is specified several times +Solution: Fix command line parsing + +Patch 9.0.1862 +Problem: Vim9 Garbage Collection issues +Solution: Class members are garbage collected early leading to + use-after-free problems. Handle the garbage + collection of classes properly. + +Patch 9.0.1863 +Problem: wrong format specifiers in e_aptypes_is_null_str_nr +Solution: Fix the wrong format specifier + +Patch 9.0.1864 +Problem: crash with bt_quickfix1_poc when cleaning up + and EXITFREE is defined +Solution: Test if buffer is valid in a window, else close + window directly, don't try to access buffer properties + +Patch 9.0.1865 +Problem: Vim9: garbage collection may cause crash +Solution: validate that class members typeval is not null + +Patch 9.0.1866 +Problem: Undo is synced after character find. +Solution: Set no_u_sync when calling gotchars_nop(). + +Patch 9.0.1867 +Problem: Vim9: access to interface statics possible +Solution: Prevent direct access to interface statics + +Patch 9.0.1868 +Problem: test_crash still fails for circle ci +Solution: give even more time to complete + +Patch 9.0.1869 +Problem: Coverity warns about uninitialized var +Solution: initialize it + +Patch 9.0.1870 +Problem: Vim9: disassemble does not show static +Solution: Show static flag + +Patch 9.0.1871 +Problem: Github CI does not run i386 job +Solution: Add a i386 architecture + +Patch 9.0.1872 +Problem: CI: test_crash() fails on CI +Solution: Skip test on BSD + +Patch 9.0.1873 +Problem: heap-buffer-overflow in vim_regsub_both +Solution: Disallow exchanging windows when textlock is active + +Patch 9.0.1874 +Problem: CI may fail in test_recover_empty_swap +Solution: Set directory option + +Patch 9.0.1875 +Problem: Vim9: improve test for disassemble + static +Solution: Add a Vim9 script disassemble test for an interface with + static members + +Patch 9.0.1876 +Problem: Vim9: parsing commands with newlines wrong +Solution: Accept a '\n' for parsing lists and command arguments + +Patch 9.0.1877 +Problem: missing test for patch 9.0.1873 +Solution: add a test trying to exchange windows + +Patch 9.0.1878 +Problem: tests running sh have problems +Solution: Check that dash is installed + +Patch 9.0.1879 +Problem: Vim9: incorrect duplicate class member detection +Solution: Incorrect duplicate class member detection when variable names + have the same prefix. Not able to access class member variables + using an object. Fix coding style issues + +Patch 9.0.1880 +Problem: Vim9: Need more tests for inheritance +Solution: Add access tests and fixes. + +Patch 9.0.1881 +Problem: Test_crash fails on Mac +Solution: Skip test on Mac + +Patch 9.0.1882 +Problem: Trailing white space in tests +Solution: Delete it + +Patch 9.0.1883 +Problem: Vim9: Calling an interface method using a child object fails +Solution: Search methods of parent class + +Patch 9.0.1884 +Problem: Wrong order of arguments for error messages +Solution: Reverse order or arguments for e_aptypes_is_null_nr_str + +Patch 9.0.1885 +Problem: Vim9: no support for abstract methods +Solution: Add support for defining abstract methods in an abstract class + +Patch 9.0.1886 +Problem: Various Typos +Solution: Fix Typos + +Patch 9.0.1887 +Problem: Vim9: class members are accessible via object +Solution: Disable class member variable access using an object + +Patch 9.0.1888 +Problem: Vim9: Problem trying to invoke class method +Solution: Lookup the class method insider other classes + +Patch 9.0.1889 +Problem: Vim9 static tests fail +Solution: Fix tests, make CI happy ;) + +Patch 9.0.1890 +Problem: Vim9: lookup code for class/object repeated +Solution: Refactor and make use of lookup functions + +Patch 9.0.1891 +Problem: No runtime support for Mojo +Solution: Add basic filetype and syntax plugins + +Patch 9.0.1892 +Problem: CI: no FreeBSD 14 support +Solution: Drop support for FreeBSD 12, add FreeBSD 14 + +Patch 9.0.1893 +Problem: CI: strptime test fails on BSD14 +Solution: Skip the test + +Patch 9.0.1894 +Problem: CI: trailing white space in tests +Solution: clean up the trailing white space + +Patch 9.0.1895 +Problem: Vim9: finding method/member is inefficient +Solution: Use lookups + +Patch 9.0.1896 +Problem: "below" virtual text doesn't work with 'rightleft'. +Solution: Use column from right border with 'rightleft'. + +Patch 9.0.1897 +Problem: Vim9: confusing error with .= in compiled functions +Solution: Check in error condition, if .= was attempted and in that case + give a different error message. + +Patch 9.0.1898 +Problem: Vim9: restrict access to static vars and methods +Solution: Class members are accessible only from the class where they are + defined. + +Patch 9.0.1899 +Problem: potential buffer overflow in PBYTE macro +Solution: Check returned memline length + +Patch 9.0.1900 +Problem: Configure script uses non-portable == comparison +Solution: Use the standard and portable "=" instead + +Patch 9.0.1901 +Problem: win32: not correctly freeing environment +Solution: After we call GetEnvironmentStringsW, we should call + FreeEnvironmentStringsW + +Patch 9.0.1902 +Problem: Vim9: Coverity complains about dead code +Solution: Copy only object methods from the super class + to a subclass when extending a class. Fix + Coverity warning. + +Patch 9.0.1903 +Problem: Github Actions fails because snd-dummy modules missing + in current runner images +Solution: ignore modprobe error + +Patch 9.0.1904 +Problem: Cirrus-CI fails because we have used all credits +Solution: Remove FreeBSD 13.1 and MacOS M1 + +Patch 9.0.1905 +Problem: FEAT_FLOAT no longer defined +Solution: Remove last existing FEAT_FLOAT ifdefs in + message_test + +Patch 9.0.1906 +Problem: Vim9: Interfaces should not support class methods and + variables +Solution: Make sure interface follow the interface specification + +Patch 9.0.1907 +Problem: No support for liquidsoap filetypes +Solution: Add liquidsoap filetype detection code + +Patch 9.0.1908 +Problem: undefined behaviour upper/lower function ptrs +Solution: Fix UBSAN error in regexp and simplify upper/lowercase + modifier code + +Patch 9.0.1909 +Problem: Vim9: problem calling class method from other class +Solution: Fix this problem, fix readonly object access, update error + messages. + +Patch 9.0.1910 +Problem: Mac OS X: missing sound support on older versions +Solution: Check Macro MAC_OS_X_VERSION_MIN_REQUIRED + +Patch 9.0.1911 +Problem: Vim9: segfault with null object and instanceof() +Solution: return early + +Patch 9.0.1912 +Problem: Cirrus-CI running out of credits +Solution: disable Cirrus-CI for now + +Patch 9.0.1913 +Problem: if_python: undefined behaviour for function pointers +Solution: Fix if_python undefined behavior for function pointer casts + +Patch 9.0.1914 +Problem: Vim9: few issues when accessing object members +Solution: When calling an object method, check for null object. + Accessing a Dict object member doesn't work. + +Patch 9.0.1915 +Problem: r_CTRL-C works differently in visual mode +Solution: Make r_CTRL-C behave consistent in visual mode + in terminal and Windows GUI + +Patch 9.0.1916 +Problem: Crash when allocating large terminal screen +Solution: Don't allow values > 1000 for terminal + screen columns and rows + +Patch 9.0.1917 +Problem: undefined behaviour with python function pointer +Solution: correctly cast function pointers from void + +Patch 9.0.1918 +Problem: No filetype detection for Authzed filetypes +Solution: Detect the *.zed file extension as authzed filetype + +Patch 9.0.1919 +Problem: Wrong curswant when clicking on empty line or with vsplits. +Solution: Don't check for ScreenCols[] before the start of the window + and handle empty line properly. + +Patch 9.0.1920 +Problem: Vim9: cannot write public var in nested object +Solution: Write variable in nested read-only object reference. + Also test write fails. + +Patch 9.0.1921 +Problem: not possible to use the jumplist like a stack +Solution: Add the 'jumpoptions' setting to make the jumplist + a stack. + +Patch 9.0.1922 +Problem: LSP server request message is misinterpreted as a response message +Solution: Check that the message does not have the "message" field + +Patch 9.0.1923 +Problem: curswant wrong on click with 've' and 'wrap' set +Solution: Add w_leftcol to mouse click column. + +Patch 9.0.1924 +Problem: LSP server message still wrongly handled (after 9.0.1922) +Solution: Handle 'method' messages properly, don't discard them, add + tests. + +Patch 9.0.1925 +Problem: if_python: still undefined behaviour with function pointer +Solution: fix remaining problems + +Patch 9.0.1926 +Problem: Vim9: not enough info in error message +Solution: Add class name, change member to variable, quote names + +Patch 9.0.1927 +Problem: patch 1916 (fixed terminal size) not optimal +Solution: Add defines to make it easier changeable later + +Patch 9.0.1928 +Problem: Vim9: constructor type checking bug +Solution: Fix class constructor regression + +Patch 9.0.1929 +Problem: runtime tests fail with tiny vim +Solution: check for tiny vim, run runtime tests in CI + even for tiny version + +Patch 9.0.1930 +Problem: compiler warnings with clang-17 +Solution: Fix function prototypes and function pointer + +Patch 9.0.1931 +Problem: make test_compilers fails on ubuntu +Solution: set LC_ALL=C + +Patch 9.0.1932 +Problem: Vim9: error when using null object constructor +Solution: Check for a null object only when calling an object method + +Patch 9.0.1933 +Problem: Can change the type of a v: variable using if_lua. +Solution: Add additional handling of v: variables like :let. + +Patch 9.0.1934 +Problem: bwipe fails after switching window from aucmd_win. +Solution: Decrement b_nwindows after switching back to aucmd_win. + +Patch 9.0.1935 +Problem: Vim9: not consistent error messages +Solution: Make error messages more consistent. Use "variable" for + (object/class) member + +Patch 9.0.1936 +Problem: test: using wrong expected message in test_crypt +Solution: make use of single quotes + +Patch 9.0.1937 +Problem: missing test for mouse click + 'virtedit' +Solution: Add test for clicking after eol with 'virtualedit' and wrapped + line + +Patch 9.0.1938 +Problem: multispace wrong when scrolling horizontally +Solution: Update position in "multispace" or "leadmultispace" also in + skipped chars. Reorder conditions to be more consistent. + +Patch 9.0.1939 +Problem: still a problem when processing LSP RPC requests +Solution: When processing async LSP RPC requests, compare sequence + numbers only in response messages + +Patch 9.0.1940 +Problem: wrong upstream version in libvterm README +Solution: correct version to 839 + +Patch 9.0.1941 +Problem: Memory leak detected (after 9.0.1928) +Solution: Free arg_objm in get_lambda_tv() + +Patch 9.0.1942 +Problem: Vim9: execution stack invalidated with null object +Solution: Check for a null object before adjusting the execution stack + +Patch 9.0.1943 +Problem: CI not run with clang-17 +Solution: Update CI to use clang-17 + +Patch 9.0.1944 +Problem: Vim9: function instruction pointer invalidated +Solution: Use the funcref index instead of the instruction pointer + +Patch 9.0.1945 +Problem: Vim9: missing support for ro-vars in interface +Solution: Support only read-only object variables in an interface, + add additional checks when parsing class definitions. + +Patch 9.0.1946 +Problem: filename expansion using ** in bash may fail +Solution: Try to enable the globstar setting + +Patch 9.0.1947 +Problem: Bash Expansion test fails on Windows/MacOS +Solution: Disable Test_glob_extended_bash for now + +Patch 9.0.1948 +Problem: Vim9: object variable "this." should only be used in + constructor +Solution: Disallow to this in normal object methods (other than + constructors) + +Patch 9.0.1949 +Problem: Vim9: allows reserved keywords as members +Solution: Disallow reserved keywords, disallow + duplicate object and class variables + +Patch 9.0.1950 +Problem: Vim9: error codes spread out +Solution: group them together and reserve 100 + more for future use + +Patch 9.0.1951 +Problem: Vim9: hard to debug vim9_class errors from CI +Solution: Include the line number in assert_xxx() calls. Include the + entire error message in the tests. Fix the indentation in the + test file. Add tags for new error codes. + +Patch 9.0.1952 +Problem: Vim9: unused static field +Solution: remove it and simplify code + +Patch 9.0.1953 +Problem: Misplaced comment in errors.h +Solution: Move it up + +Patch 9.0.1954 +Problem: CI: change netrw label in labeller bot +Solution: Rename it to 'plugin-netrw' + +Patch 9.0.1955 +Problem: Vim9: lockvar issues with objects/classes +Solution: fix `get_lhs()` object/class access and avoid `SEGV`, + make error messages more accurate. + +Patch 9.0.1956 +Problem: Custom cmdline completion skips original cmdline when pressing + Ctrl-P at first match if completion function invokes glob(). +Solution: Move orig_save into struct expand_T. + +Patch 9.0.1957 +Problem: termcap options should change on keyprotocol setting +Solution: Apply termcap entries when 'keyprotocol' changes + +Patch 9.0.1958 +Problem: cannot complete option values +Solution: Add completion functions for several options + +Patch 9.0.1959 +Problem: Vim9: methods parameters and types are covariant +Solution: Support contra-variant type check for object method arguments + (similar to Dart). + +Patch 9.0.1960 +Problem: Make CI checks more strict +Solution: Add -Wstrict-prototypes -Wmissing-prototypes to CI, + fix uncovered problems + +Patch 9.0.1961 +Problem: Cmdline completion for 'listchars' fields doesn't include + "multispace" and "leadmultispace" (after 9.0.1958). +Solution: Include "multispace" and "leadmultispace" in lcstab. + +Patch 9.0.1962 +Problem: No support for writing extended attributes +Solution: Add extended attribute support for linux + +Patch 9.0.1963 +Problem: Configure script may not detect xattr correctly +Solution: include sys/xattr instead of attr/xattr, + make Test_write_with_xattr_support() test + xattr feature correctly + +Patch 9.0.1964 +Problem: xattr support fails to build on MacOS X +Solution: Disable xattr support for MacOS X + +Patch 9.0.1965 +Problem: wrong auto/configure script +Solution: regenerate with autoconf 2.71 + +Patch 9.0.1966 +Problem: configure prints stray 6 when checking libruby +Solution: redirect stdout to dev/null + +Patch 9.0.1967 +Problem: xattr errors not translated +Solution: mark for translation, consistently capitalize + first letter. + +Patch 9.0.1968 +Problem: cmdline completion should consider key option +Solution: Disable cmdline completion for key option, slightly + refactor how P_NO_CMD_EXPAND is handled + +Patch 9.0.1969 +Problem: buffer-overflow in trunc_string() +Solution: Add NULL at end of buffer + +Patch 9.0.1970 +Problem: win32: high-dpi support can be improved +Solution: implement WM_GETDPISCALEDSIZE + +Patch 9.0.1971 +Problem: macOS: FEAT_SOUND guard too restrictive +Solution: check for older macOS support properly + +Patch 9.0.1972 +Problem: win32: missing '**' expansion test (after v9.0.1947) +Solution: Add test for MS-Windows + +Patch 9.0.1973 +Problem: Clean up cmdline option completion code +Solution: Fix various minor problems + +Patch 9.0.1974 +Problem: vim9: using contra-variant type-checks (after v9.0.1959) +Solution: Use invariant type checking instead + +Patch 9.0.1975 +Problem: xattr: permission-denied errors on write +Solution: ignore those errors + +Patch 9.0.1976 +Problem: style: space before tab in optionstr.c +Solution: remove the space + +Patch 9.0.1977 +Problem: Vim9: object members can change type +Solution: Check type during assignment to object/class var + +Patch 9.0.1978 +Problem: No filetype detection for just files +Solution: Detect just files (*.just, justfile, etc) + +Patch 9.0.1979 +Problem: Cirrus CI disabled +Solution: re-enable Cirrus CI + +Patch 9.0.1980 +Problem: win32: issues with stable python ABI +Solution: if_python3,win32: Fix Python3 stable ABI + +Patch 9.0.1981 +Problem: Cannot scroll up in diff mode with many filler lines and zero + 'scrolloff'. +Solution: Invalidate w_cline_row before calling comp_botline(). + +Patch 9.0.1982 +Problem: vim9: clean up from v9.0.1955 +Solution: Fix a few remaining issues, improve error message + +Patch 9.0.1983 +Problem: Scrolling non-current window using mouse is inconsistent + depending on 'scrollbind'/'scrolloff' and different from GUI + vertical scrollbar when 'cursorbind' is set. +Solution: Don't move cursor in non-current windows for 'cursorbind' if + cursor in the current window didn't move. + +Patch 9.0.1984 +Problem: CI: Test_open_delay*() fails on FreeBSD 14 +Solution: Skip it on BSD + +Patch 9.0.1985 +Problem: CI: codecov is intrusive +Solution: disable codecov comments + +Patch 9.0.1986 +Problem: Vim9: accepting type-annotations +Solution: Reject type annotations outside of declarations. + +Patch 9.0.1987 +Problem: win32: font-size calculation can be improved +Solution: calculate font size before the window size + +Patch 9.0.1988 +Problem: Vim9: potential use-after-free for class members +Solution: Use the class-related grow array for storing the + member type instead of using a temporary type + list grow array + +Patch 9.0.1989 +Problem: Vim9: double error message given +Solution: Only give second error message, if ther + wasn't one given before + +Patch 9.0.1990 +Problem: strange error number +Solution: change error number, + add doc tag for E1507 + +Patch 9.0.1991 +Problem: no cmdline completion for setting the font +Solution: enable it on Win32 and GTK builds + +Patch 9.0.1992 +Problem: segfault in exmode when redrawing +Solution: skip gui_scroll when exmode_active + +Patch 9.0.1993 +Problem: warning about unused function definition +Solution: add ifdefs + +Patch 9.0.1994 +Problem: inconsistent feature description +Solution: delete old mentioned feature sets small and big + +Patch 9.0.1995 +Problem: Invalid memory access when 'foldexpr' returns empty string. +Solution: Check for NUL. + +Patch 9.0.1996 +Problem: Cannot build with python312 +Solution: Define wrapper types and functions for python 3.12 + +Patch 9.0.1997 +Problem: Some unused code in move.c and string.c +Solution: Remove it + +Patch 9.0.1998 +Problem: xxd: cannot reverse a bit dump +Solution: implement reversing the bit dump using -b -r + +Patch 9.0.1999 +Problem: Vim9: some error messages can be improved +Solution: Mention the defining class for variable access error message + +Patch 9.0.2000 +Problem: Vim9: use-after-free in deep call stack +Solution: Get the objct pointer from execution stack + +Patch 9.0.2001 +Problem: Vim9: segfault with islocked() +Solution: Check that the lval pointer is not null for objects and + class variables + +Patch 9.0.2002 +Problem: Vim9: need cleanup of class related interface code +Solution: Remove the unused class variable and class method related code + for interfaces. + +Patch 9.0.2003 +Problem: xxd: compilation warning +Solution: initialize variables + +Patch 9.0.2004 +Problem: Missing test file +Solution: git-add the file to the repo + +Patch 9.0.2005 +Problem: partially revert patch v9.0.1997 +Solution: add a comment, to make clear it's not used + +Patch 9.0.2006 +Problem: Vim9: need more tests +Solution: add additional disassembly tests + +Patch 9.0.2007 +Problem: Vim9: covariant parameter types allowed when assigning + functions +Solution: Enforce invariant type check for arguments and return value + when assigning a funcref + +Patch 9.0.2008 +Problem: test: undofile left behind +Solution: cleanup undofile + +Patch 9.0.2009 +Problem: cmdline-completion for comma-separated options wrong +Solution: Fix command-line expansions for options with filenames with + commas + +Patch 9.0.2010 +Problem: [security] use-after-free from buf_contents_changed() +Solution: block autocommands + +Patch 9.0.2011 +Problem: INI files not detected +Solution: detect uppercase .INI as dosini files + +Patch 9.0.2012 +Problem: Vim9: error message can be more accurate +Solution: Fix the error messages + +Patch 9.0.2013 +Problem: Unicode tables outdated +Solution: Update Unicode tables to v15.1 (released 23.09.2023) + +Patch 9.0.2014 +Problem: confusing ifdefs in if_<lang>.c +Solution: refactor ifndefs to #ifdefs + +Patch 9.0.2015 +Problem: Vim9: does not handle islocked() from a method correctly +Solution: Handle islocked() builtin from a method. + +Patch 9.0.2016 +Problem: Vim9: assignment operators don't work for class vars +Solution: implement it + +Patch 9.0.2017 +Problem: linebreak applies for leading whitespace +Solution: only apply linebreak, once we have found non-breakat chars in + the line + +Patch 9.0.2018 +Problem: complete_info() returns wrong index +Solution: Make order of 'info' in completion_info consistent + +Patch 9.0.2019 +Problem: Vim9: no support for funcrefs +Solution: Add support for object/class funcref members + +Patch 9.0.2020 +Problem: Vim9: islocked() needs more work +Solution: rework islocked() and remove sync_root + from get_lval() + +Patch 9.0.2021 +Problem: Coverity complains about change in charset (after v9.0.2017) +Solution: check pointer t at index 0 + +Patch 9.0.2022 +Problem: When clicking in the middle of a TAB, getmousepos() returns + the column of the next char instead of the TAB. +Solution: Break out of the loop when the vcol to find is inside current + char. Fix invalid memory access when calling virtcol2col() on + an empty line. + +Patch 9.0.2023 +Problem: need more tests for :cq +Solution: Add more tests, including wraparound on linux + +Patch 9.0.2024 +Problem: no filetype detection for Debian sources +Solution: Add new deb822sources filetype + +Patch 9.0.2025 +Problem: no cmdline completion for ++opt args +Solution: Add cmdline completion for :e ++opt=arg and :terminal + [++options] + +Patch 9.0.2026 +Problem: win32: python3 dll loading can be improved +Solution: Load DLL from registry path + +Patch 9.0.2027 +Problem: Vim9: no support for bitwise operators in lambda funcs +Solution: move "evaluate" assignment a bit up in order to decide + to perform bitwise operations + +Patch 9.0.2028 +Problem: confusing build dependencies +Solution: clean them up, make them parallelizable + +Patch 9.0.2029 +Problem: Vim9: no support for partials using call() +Solution: Add support + +Patch 9.0.2030 +Problem: no max callback recursion limit +Solution: bail out, if max call recursion for callback functions + has been reached. + +Patch 9.0.2031 +Problem: `TextChangedI` can trigger on entering Insert mode if there + was previously a change not in Insert mode. +Solution: Make it trigger only when text is actually changed in Insert + mode. + +Patch 9.0.2032 +Problem: Cannot accurately get mouse clicking position when clicking on + a TAB or with virtual text. +Solution: Add a "coladd" field to getmousepos() result. + +Patch 9.0.2033 +Problem: gcc overflow-warning for f_resolve +Solution: use pointer p instead of pointer q[-1] + +Patch 9.0.2034 +Problem: don't try to copy SMACK attribute, when none exist +Solution: return early if SMACK extended attributes do not exist or + if they are not supported + +Patch 9.0.2035 +Problem: [security] use-after-free with wildmenu +Solution: properly clean up the wildmenu when exiting + +Patch 9.0.2036 +Problem: if_python: rework python3.12 build dependency + (after 9.0.1996) +Solution: use PyTuple_Size instead of inlining the Py_SIZE + into the Vim code base + +Patch 9.0.2037 +Problem: A few remaining cmdline completion issues with C-E/Y +Solution: Fix cmdline completion fuzzy/Ctrl-E/Ctrl-Y/options when not + used at the end + +Patch 9.0.2038 +Problem: Vim9: object method funcref not cleaned up after use +Solution: Clean up type stack after using object method funcref, + remove now longer used ISN_DEFEROBJ instruction + +Patch 9.0.2039 +Problem: completion shows current word after completion restart +Solution: remove the word being completed after completion restart + +Patch 9.0.2040 +Problem: trim(): hard to use default mask +Solution: Use default 'mask' when it is v:none + +Patch 9.0.2041 +Problem: trim(): hard to use default mask (partly revert v9.0.2040) +Solution: use default mask when it is empty + +Patch 9.0.2042 +Problem: Test_cq_zero_exmode fails without channel feature +Solution: Make the test check the channel feature + +Patch 9.0.2043 +Problem: Vim9: issue with funcref assignment and varargs +Solution: Fix funcref type checking + +Patch 9.0.2044 +Problem: Vim9: exceptions confuse deferred functions +Solution: save and restore exception state when calling deferred + functions + +Patch 9.0.2045 +Problem: tests: checking for swap files takes time +Solution: don't check for swap files when test has been skipped + +Patch 9.0.2046 +Problem: win32,python: warning that MS_WIN64 got re-defined +Solution: Do not define MS_WIN64, as it is no longer used + +Patch 9.0.2047 +Problem: perl: warning about inconsistent dll linkage +Solution: suppress warning + +Patch 9.0.2048 +Problem: python: uninitialized warning +Solution: initialize 'minor' always + +Patch 9.0.2049 +Problem: Vim9: not recognizing qualified class vars for infix ops +Solution: Drop the class type from the stack before generating the + CLASSMEMBER instruction + +Patch 9.0.2050 +Problem: Vim9: crash with deferred function call and exception +Solution: Save and restore exception state + +Patch 9.0.2051 +Problem: Vim9: wrong error for non-existing object var +Solution: mention object or class depending on whether + the var is an object or class variable. + +Patch 9.0.2052 +Problem: win32: using deprecated wsock32 api +Solution: Use winsock2 (ws2_32) consistently + +Patch 9.0.2053 +Problem: zig filetype detection test wrong +Solution: Remove .zir pattern, add new test for .zon pattern + +Patch 9.0.2054 +Problem: win32: iscygpty needs update +Solution: Update iscygpty to the latest version, make use iswascii() + API function + +Patch 9.0.2055 +Problem: Vim9: non-consistent error messages +Solution: make error messages more consistent with common structure + +Patch 9.0.2056 +Problem: no digraph for quadruple prime +Solution: add quadruple prime digraph using 4' + +Patch 9.0.2057 +Problem: Vim9: no strict type checks for funcrefs varargs +Solution: Perform strict type checking when declaring funcrefs + with vararg declaration, add tests + +Patch 9.0.2058 +Problem: tests: avoid error when no swap files exist +Solution: use unlet! so that no error message is reported + in case the variable does not exists + +Patch 9.0.2059 +Problem: outstanding exceptions may be skipped +Solution: When restoring exception state, process remaining outstanding + exceptions + +Patch 9.0.2060 +Problem: *.{gn,gni} files are not recognized +Solution: Detect some as gn filetype (without adding an extra filetype) + +Patch 9.0.2061 +Problem: not able to detect xkb filetypes +Solution: Detect files below /u/s/X11/xkb as xkb files (without adding + an extra filetype) + +Patch 9.0.2062 +Problem: Janet files are not recognised +Solution: Add filename and shebang detection (without + adding an extra filetype plugin) + +Patch 9.0.2063 +Problem: pacman hooks are detected as conf filetype +Solution: make it consistent to pacman.conf and detect those + hooks as confini + +Patch 9.0.2064 +Problem: cannot use buffer-number for errorformat +Solution: add support for parsing a buffer number using '%b' in + 'errorformat' + +Patch 9.0.2065 +Problem: EXPAND flag set for filetype option +Solution: Remove P_EXPAND flag from the 'filetype' option + +Patch 9.0.2066 +Problem: xxd: corrupting files when reversing bit dumps +Solution: handle reversing bit dump slightly differently + +Patch 9.0.2067 +Problem: xxd: coloring was disabled on Cygwin +Solution: don't include WIN32 + +Patch 9.0.2068 +Problem: [security] overflow in :history +Solution: Check that value fits into int + +Patch 9.0.2069 +Problem: possible to escape bracketed paste mode with Ctrl-C +Solution: Do not handle Ctrl-C specially when key_protocol + is in use, makes bracketed paste mode more robust + +Patch 9.0.2070 +Problem: [security] disallow setting env in restricted mode +Solution: Setting environment variables in restricted mode could + potentially be used to execute shell commands. Disallow this. + +Patch 9.0.2071 +Problem: objdump files not recognized +Solution: detect *.objdump files, add a filetype plugin + +Patch 9.0.2072 +Problem: Vim9: no nr2str conversion in list-unpack +Solution: Generate 2STRING instruction to convert dict index to string + +Patch 9.0.2073 +Problem: typo in quickfix.c comments +Solution: fix them + +Patch 9.0.2074 +Problem: Completion menu may be wrong +Solution: Check for the original direction of the completion menu, + add more tests, make it work with 'noselect' + +Patch 9.0.2075 +Problem: TextChangedI may not always trigger +Solution: trigger it in more cases: for insert/ + append/change operations, and when + opening a new line, + +Patch 9.0.2076 +Problem: Vim9: No support for type aliases +Solution: Implement :type command + +Patch 9.0.2077 +Problem: CI fails because of trailing whitespace in test +Solution: Remove it + +Patch 9.0.2078 +Problem: several problems with type aliases +Solution: Check for more error conditions, add tests, + fix issues + +Patch 9.0.2079 +Problem: Not all Dart files detected +Solution: Add shebang filetype detection for Dart + +Patch 9.0.2080 +Problem: vim9_script test too large +Solution: split vim9 type alias test into + separate test file + +Patch 9.0.2081 +Problem: With 'smoothscroll' set, "w_skipcol" is not reset when unsetting + 'wrap'. Resulting in incorrect calculation of the cursor position. +Solution: Reset "w_skipcol" when unsetting 'wrap'. + +Patch 9.0.2082 +Problem: test_channel may fail because of IPv6 config issues +Solution: Catch and skip the test, if getaddrinfo() fails with + 'Address family not supported' + +Patch 9.0.2083 +Problem: Perl: xsubpp may be in non-standard location +Solution: Add --with-subpp configure option + +Patch 9.0.2084 +Problem: Vim9: abstract static methods are possible +Solution: Disallow abstract static methods + +Patch 9.0.2085 +Problem: Vim9: abstract can be used in interface +Solution: Disallow the use of abstract in an interface + +Patch 9.0.2086 +Problem: code cleanup for option callbacks needed +Solution: remove flag os_doskip, it's not necessary, as we can check, + whether an error message was returned + +Patch 9.0.2087 +Problem: build-failure in vim9class +Solution: reference correct error message, + disable non-failing test + +Patch 9.0.2088 +Problem: Vim9: still allows abstract static methods + (after v9.0.2084, v9.0.2085 and v9.0.2087) +Solution: Disallow abstract static methods + +Patch 9.0.2089 +Problem: sound_playfile() fails when using powershell +Solution: quote filename using doublequotes, don't escape filename, + because it doesn't use the shell + +Patch 9.0.2090 +Problem: complete_info() skips entries with 'noselect' +Solution: Check, if first entry is at original text state + +Patch 9.0.2091 +Problem: Vim9: cannot convert list to string using += + (after 9.0.2072) +Solution: convert dict index to string later in compile_member() + +Patch 9.0.2092 +Problem: tests: failure in test_arabic +Solution: adjust the test for the changed arabic keymap + +Patch 9.0.2093 +Problem: Unsupported option causes rest of modeline test to be skipped. +Solution: Revert the change from patch 8.2.1432. + +Patch 9.0.2094 +Problem: Vim9: need more assignment tests +Solution: Add test for using different types in assignment, function + arguments and return values + +Patch 9.0.2095 +Problem: statusline may look different than expected +Solution: do not check for highlighting of stl and stlnc characters + +Patch 9.0.2096 +Problem: Vim9: confusing usage of private +Solution: clarify and use protected keyword instead + +Patch 9.0.2097 +Problem: No support for cypher files +Solution: Add cypher filetype detection + +Patch 9.0.2098 +Problem: No filetype support for xcompose files +Solution: Add filetype detection + +Patch 9.0.2099 +Problem: Terminal control codes鹿 are sent even when silent + mode is on, causing the terminal to clear up +Solution: Block any terminal codes when silent mode is on + +Patch 9.0.2100 +Problem: CI: test_Termdebug fails +Solution: only test for a changed winlayout, if the window + width actually changed + +Patch 9.0.2101 +Problem: CI: test_termdebug may still fail +Solution: use term_wait() to make it more robust + +Patch 9.0.2102 +Problem: matchparen highlight not cleared in completion mode +Solution: Clear matchparen highlighting in completion mode + +Patch 9.0.2103 +Problem: recursive callback may cause issues on some archs +Solution: Decrease the limit drastically to 20 + +Patch 9.0.2104 +Problem: wast filetype should be replaced by wat filetype +Solution: start using the official wat filetype name + +Patch 9.0.2105 +Problem: Skipcol is not reset when topline changed scrolling cursor to top +Solution: reset skipcol + +Patch 9.0.2106 +Problem: [security]: Use-after-free in win_close() +Solution: Check window is valid, before accessing it + +Patch 9.0.2107 +Problem: [security]: FPE in adjust_plines_for_skipcol +Solution: don't divide by zero, return zero + +Patch 9.0.2108 +Problem: [security]: overflow with count for :s command +Solution: Abort the :s command if the count is too large + +Patch 9.0.2109 +Problem: [security]: overflow in nv_z_get_count +Solution: break out, if count is too large + +Patch 9.0.2110 +Problem: [security]: overflow in ex address parsing +Solution: Verify that lnum is positive, before subtracting from + LONG_MAX + +Patch 9.0.2111 +Problem: [security]: overflow in get_number +Solution: Return 0 when the count gets too large + +Patch 9.0.2112 +Problem: [security]: overflow in shift_line +Solution: allow a max indent of INT_MAX + +Patch 9.0.2113 +Problem: Coverity warns for another overflow in shift_line() +Solution: Test for INT_MAX after the if condition, cast integer values + to (long long) before multiplying. + +Patch 9.0.2114 +Problem: overflow detection not accurate when adding digits +Solution: Use a helper function + +Patch 9.0.2115 +Problem: crash when callback function aborts because of recursiveness +Solution: correctly initialize rettv + +Patch 9.0.2116 +Problem: No test for defining sign without attribute +Solution: Add test for defining sign without attributes + +Patch 9.0.2117 +Problem: [security] use-after-free in qf_free_items +Solution: only access qfpnext, if it hasn't been freed + +Patch 9.0.2118 +Problem: [security]: avoid double-free +Solution: Only fee plain_font, when it is not the same as bold_font + +Patch 9.0.2119 +Problem: remove dead-condition in ex_class() +Solution: remove the extra condition + +Patch 9.0.2120 +Problem: un-used assignment in do_source_buffer_init +Solution: Remove it + +Patch 9.0.2121 +Problem: [security]: use-after-free in ex_substitute +Solution: always allocate memory + +Patch 9.0.2122 +Problem: [security]: prevent overflow in indenting +Solution: use long long and remove cast to (int) + +Patch 9.0.2123 +Problem: Problem with initializing the length of range() lists +Solution: Set length explicitly when it shouldn't contain any items + +Patch 9.0.2124 +Problem: INT overflow logic can be simplified +Solution: introduce trim_to_int() function + +Patch 9.0.2125 +Problem: File info disappears immediately when 'cmdheight' has just + decreased due to switching tabpage and 'shortmess' doesn't + contain 'o' or 'O'. +Solution: Make sure msg_row isn't smaller than cmdline_row. + +Patch 9.0.2126 +Problem: Unused assignments when checking the value of 'listchars'. +Solution: Loop only once when just checking the value. Add a test to + check that this change doesn't cause double-free. + +Patch 9.0.2127 +Problem: translation Makefiles can be improved +Solution: Modified and extended po-related Makefiles and + related files + +Patch 9.0.2128 +Problem: No runtime files for SWIG filetypes +Solution: Add syntax and filetype plugins for SWIG (Simplified Wrapper + Interface Generator) description files. + +Patch 9.0.2129 +Problem: [security]: use-after-free in call_dfunc() +Solution: Refresh dfunc pointer + +Patch 9.0.2130 +Problem: some errors with translation Makefiles +Solution: fix issues + +Patch 9.0.2131 +Problem: not all nushell files detected +Solution: use *.nu to detect nushell files + +Patch 9.0.2132 +Problem: Duplicate Netbeans Error Message +Solution: Remove duplicate message + +Patch 9.0.2133 +Problem: Cannot detect overstrike mode in Cmdline mode +Solution: Make mode() return "cr" for overstrike + +Patch 9.0.2134 +Problem: ml_get error when scrolling after delete +Solution: mark topline to be validated in main_loop + if it is larger than current buffers line + count + +Patch 9.0.2135 +Problem: No test for mode() when executing Ex commands +Solution: Add some test cases and simplify several other test cases. + Also add a few more test cases for ModeChanged. + +Patch 9.0.2136 +Problem: MSVC errorformat can be improved +Solution: parse error type and column number in MSVC errorformat + +Patch 9.0.2137 +Problem: Can't detect angular & mustache filetypes +Solution: Detect *.mustache as Mustache filetype; + detect *.component.html as html.angular filetype + +Patch 9.0.2138 +Problem: Overflow logic requires long long +Solution: Define vimlong_T data type to make life easier + for porters + +Patch 9.0.2139 +Problem: html.angular ft is problematic +Solution: partly revert v9.0.2137 + +Patch 9.0.2140 +Problem: [security]: use-after-free in win-enter +Solution: validate window pointer before calling win_enter() + +Patch 9.0.2141 +Problem: [security]: buffer-overflow in suggest_trie_walk +Solution: Check n before using it as index into bytes array + +Patch 9.0.2142 +Problem: [security]: stack-buffer-overflow in option callback functions +Solution: pass size of errbuf down the call stack, use snprintf() + instead of sprintf() + +Patch 9.0.2143 +Problem: [security]: buffer-overflow in ex_substitute +Solution: clear memory after allocating + +Patch 9.0.2144 +Problem: Text properties causes wrong line wrapping to be drawn. +Solution: Find the index of the last text property that inserts text. + +Patch 9.0.2145 +Problem: Wrong scrolling in Insert mode with 'smoothscroll' at the + bottom of the window. +Solution: Don't use set_topline() when 'smoothscroll' is set. + +Patch 9.0.2146 +Problem: text-property without type errors when joining +Solution: count all text-properties, with or without type + before joining lines + +Patch 9.0.2147 +Problem: Type check tests fail without the channel feature +Solution: only run tests, when Vim was build with +channel + +Patch 9.0.2148 +Problem: Vim does not detect pacman.log file +Solution: Detect pacmanlogs and add syntax highlighting + +Patch 9.0.2149 +Problem: [security]: use-after-free in exec_instructions() +Solution: get tv pointer again + +Patch 9.0.2150 +Problem: Using int for errbuflen in option funcs +Solution: Use size_t for errbuflen in string option functions + +Patch 9.0.2151 +Problem: 'breakindent' is not drawn after diff filler lines. +Solution: Correct check for whether 'breakindent' should be drawn. + +Patch 9.0.2152 +Problem: Using type unknown for List/Dict containers +Solution: Use 'any' instead + +Patch 9.0.2153 +Problem: no support to build on OpenVMS +Solution: Add OpenVMS X86_64 platform port + +Patch 9.0.2154 +Problem: The options[] array is not sorted alphabetically. +Solution: Sort it alphabetically. Add a test. Avoid unnecessary loop + iterations in findoption(). + +Patch 9.0.2155 +Problem: Vim9: type not kept when assigning vars +Solution: When assigning a List or a Dict value to a variable of type + 'any', keep the type + +Patch 9.0.2156 +Problem: Vim9: can use typealias in an assignment +Solution: Generate errors when class/typealias involved in the rhs of an + assignment + +Patch 9.0.2157 +Problem: Vim9: incorrectly parses :def func definitions +Solution: check for more context when parsing function args + +Patch 9.0.2158 +Problem: [security]: use-after-free in check_argument_type +Solution: Reset function type pointer when freeing the function type + list + +Patch 9.0.2159 +Problem: screenpos() may crash with neg. column +Solution: validate and correct column + +Patch 9.0.2160 +Problem: instanceof() should use varargs as second arg +Solution: Modify `instanceof()` to use varargs instead of list + +Patch 9.0.2161 +Problem: Vim9: not able to use imported interfaces and classes +Solution: Detect imported class/interfaces names correctly + +Patch 9.0.2162 +Problem: Vim9: type documentation out-dated +Solution: Update documentation, fix typo in type alias + definition + +Patch 9.0.2163 +Problem: Vim9: type can be assigned to list/dict +Solution: Prevent assigning a `type` to a `list` or `dict` + +Patch 9.0.2164 +Problem: Vim9: can use type a func arg/return value +Solution: Check if using type as function argument or return value + +Patch 9.0.2165 +Problem: Vim9: can simplify arg type checking code +Solution: In `f_argcheck` array use `arg_any`, instead of NULL + +Patch 9.0.2166 +Problem: Memory leak in Configure Script when checking GTK +Solution: Free the allocated memory + +Patch 9.0.2167 +Problem: Vim9-script object/class variable declarations use syntax + that is inconsistent with the rest of the language. +Solution: Use :var to declare object and class variables. + +Patch 9.0.2168 +Problem: Moving tabpages on :drop may cause an endless loop +Solution: Disallow moving tabpages on :drop when cleaning up the arglist + first + +Patch 9.0.2169 +Problem: Vim9: builtin funcs may accept a non-value +Solution: Restrict builtin functions that accept `type` + +Patch 9.0.2170 +Problem: Vim9: no support for const/final class/objects vars +Solution: Support final and const object and class variables + +Patch 9.0.2171 +Problem: The options[] array is still not sorted alphabetically + (after: v9.0.2154), causing test failures +Solution: Sort the remaining items + +Patch 9.0.2172 +Problem: Vim9: compiling :defer may fail +Solution: compile defer, when ctx_skip is not SKIP_YES + +Patch 9.0.2173 +Problem: Vim9: Vim crashes when compiling a for statement with a + non-existing type +Solution: Error out when lhs_type is not null + +Patch 9.0.2174 +Problem: Vim9: segfault when assigning to type +Solution: do not clear typeval, add missing patch number + +Patch 9.0.2175 +Problem: Compiler warning for uninitialized var +Solution: initialize variable to NULL + +Patch 9.0.2176 +Problem: Compile error with Motif UI + mouse support (after v9.0.1262) +Solution: Use correct oldval option pointer + +Patch 9.0.2177 +Problem: Wrong cursor position when dragging out of window. +Solution: Don't use ScreenCols[] when mouse is not in current window. + +Patch 9.0.2178 +Problem: reg_executing() returns wrong result in :normal with range + when 'showcmd' is set (after 8.2.4705). +Solution: Reset "pending_end_reg_executing" when executing a register. + +Patch 9.0.2179 +Problem: no filetype detection for execline scripts +Solution: Add filetype detection for execline + +Patch 9.0.2180 +Problem: POSIX function name in exarg struct causes issues + on OpenVMS +Solution: Rename getline member in exarg struct to ea_getline, + remove isinf() workaround for VMS + +Patch 9.0.2181 +Problem: Vim9: missing error messages +Solution: Add one more error message + +Patch 9.0.2182 +Problem: Vim9: need a way to reserve future extension +Solution: reserve double underscore prefix for future use + (Yegappan Lakshmanan) + +Patch 9.0.2183 +Problem: Maximum callback depth is not configurable. +Solution: Revert patch 9.0.2103. Set 'maxfuncdepth' in test. + (zeertzjq) + +Patch 9.0.2184 +Problem: Vim9: inconsistent :type/:class messages +Solution: Update the Messages (Ernie Rael) + +Patch 9.0.2185 +Problem: Coverity complains about not checking return value + in compare_isn_not_values (after 9.0.2184) +Solution: cast return value to "(void)" to make intention clear + +Patch 9.0.2186 +Problem: LTCG compile error on Win/ARM64 for `write_chars()` +Solution: Explicitly initialise the storage to use data rather than BSS + (Saleem Abdulrasool) + +Patch 9.0.2187 +Problem: Visual selection isn't drawn with 'breakindent' when the line + doesn't fit in the window (Jaehwang Jung) +Solution: Adjust wlv->fromcol also for 'breakindent' (zeertzjq) + +Patch 9.0.2188 +Problem: cursor wrong after { in single line buffer + (Edwin Chan) +Solution: do not place the cursor at the end for a single + line buffer when moving backwards (Gary Johnson) + +Patch 9.0.2189 +Problem: Wrong display when 'breakindentopt' contains "sbr" and + 'showbreak' and 'nobreakindent' are set. +Solution: Always reset wlv->need_showbreak regardless of the values of + 'breakindent' and 'showbreak', as they aren't checked when + setting wlv->need_showbreak (zeertzjq) + +Patch 9.0.2190 +Problem: proto files need update +Solution: re-generate them + + vim:tw=78:ts=8:noet:ft=help:norl:fdm=manual: diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt new file mode 100644 index 0000000..1714833 --- /dev/null +++ b/runtime/doc/vi_diff.txt @@ -0,0 +1,1365 @@ +*vi_diff.txt* For Vim version 9.1. Last change: 2022 Apr 03 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Differences between Vim and Vi *vi-differences* + +This file lists the differences between Vim and Vi/Ex and gives an overview of +what is in Vim that is not in Vi. + +Vim is mostly POSIX 1003.2-1 compliant. The only command known to be missing +is ":open". There are probably a lot of small differences (either because Vim +is missing something or because Posix is beside the mark). + +1. Simulated command |simulated-command| +2. Missing options |missing-options| +3. Limits |limits| +4. The most interesting additions |vim-additions| +5. Other vim features |other-features| +6. Supported Vi features |vi-features| +7. Command-line arguments |cmdline-arguments| +8. POSIX compliance |posix-compliance| + +============================================================================== +1. Simulated command *simulated-command* + +This command is in Vi, but Vim only simulates it: + + *:o* *:op* *:open* +:[range]o[pen] Works like |:visual|: end Ex mode. + {Vi: start editing in open mode} + +:[range]o[pen] /pattern/ As above, additionally move the cursor to the + column where "pattern" matches in the cursor + line. + +Vim does not support open mode, since it's not really useful. For those +situations where ":open" would start open mode Vim will leave Ex mode, which +allows executing the same commands, but updates the whole screen instead of +only one line. + +============================================================================== +2. Missing options *missing-options* + +These options are in the Unix Vi, but not in Vim. If you try to set one of +them you won't get an error message, but the value is not used and cannot be +printed. + +autoprint (ap) boolean (default on) *'autoprint'* *'ap'* +beautify (bf) boolean (default off) *'beautify'* *'bf'* +flash (fl) boolean (default ??) *'flash'* *'fl'* +graphic (gr) boolean (default off) *'graphic'* *'gr'* +hardtabs (ht) number (default 8) *'hardtabs'* *'ht'* + number of spaces that a <Tab> moves on the display +mesg boolean (default on) *'mesg'* +novice boolean (default off) *'novice'* +open boolean (default on) *'open'* +optimize (op) boolean (default off) *'optimize'* *'op'* +redraw boolean (default off) *'redraw'* +slowopen (slow) boolean (default off) *'slowopen'* *'slow'* +sourceany boolean (default off) *'sourceany'* +w300 number (default 23) *'w300'* +w1200 number (default 23) *'w1200'* +w9600 number (default 23) *'w9600'* + +Vi did not allow for changing the termcap entries, you would have to exit Vi, +edit the termcap entry and try again. Vim has the |terminal-options|. + +============================================================================== +3. Limits *limits* + +Vim has only a few limits for the files that can be edited {Vi: can not handle +<Nul> characters and characters above 128, has limited line length, many other +limits}. + +Maximum line length 2147483647 characters. Longer lines are split. +Maximum number of lines 2147483647 lines. +Maximum file size 2147483647 bytes (2 Gbyte) when a long integer is + 32 bits. Much more for 64 bit longs. Also limited + by available disk space for the |swap-file|. + *E75* +Length of a file path Unix and Win32: 1024 characters, otherwise 256 + characters (or as much as the system supports). +Length of an expanded string option + Unix and Win32: 1024 characters, otherwise 256 + characters +Maximum display width Unix and Win32: 1024 characters, otherwise 255 + characters +Maximum lhs of a mapping 50 characters. +Number of different highlighting types: over 30000 +Range of a Number variable: -2147483648 to 2147483647 (might be more on 64 + bit systems) +Maximum length of a line in a tags file: 512 bytes. + +Information for undo and text in registers is kept in memory, thus when making +(big) changes the amount of (virtual) memory available limits the number of +undo levels and the text that can be kept in registers. Other things are also +kept in memory: Command-line history, error messages for Quickfix mode, etc. + +Memory usage limits +------------------- + +The option 'maxmem' ('mm') is used to set the maximum memory used for one +buffer (in kilobytes). 'maxmemtot' is used to set the maximum memory used for +all buffers (in kilobytes). The defaults depend on the system used. For the +Amiga, 'maxmemtot' is set depending on the amount of memory available. +These are not hard limits, but tell Vim when to move text into a swap file. +If you don't like Vim to swap to a file, set 'maxmem' and 'maxmemtot' to a +very large value. The swap file will then only be used for recovery. If you +don't want a swap file at all, set 'updatecount' to 0, or use the "-n" +argument when starting Vim. + +============================================================================== +4. The most interesting additions *vim-additions* + +Vi compatibility. |'compatible'| + Although Vim is 99% Vi compatible, some things in Vi can be + considered to be a bug, or at least need improvement. But still, Vim + starts in a mode which behaves like the "real" Vi as much as possible. + To make Vim behave a little bit better, try resetting the 'compatible' + option: + :set nocompatible + Or start Vim with the "-N" argument: + vim -N + Vim starts with 'nocompatible' automatically if you have a .vimrc + file. See |startup|. + The 'cpoptions' option can be used to set Vi compatibility on/off for + a number of specific items. + +Support for different systems. + Vim can be used on: + - All Unix systems (it works on all systems it was tested on, although + the GUI and Perl interface may not work everywhere). + - Amiga (500, 1000, 1200, 2000, 3000, 4000, ...). + - MS-Windows + - VMS + - Macintosh + - IBM OS/390 + Note that on some systems features need to be disabled to reduce + resource usage. For some outdated systems you need to use an older + Vim version. + +Multi level persistent undo. |undo| + 'u' goes backward in time, 'CTRL-R' goes forward again. Set option + 'undolevels' to the number of changes to be remembered (default 1000). + Set 'undolevels' to 0 for a Vi-compatible one level undo. Set it to + -1 for no undo at all. + When all changes in a buffer have been undone, the buffer is not + considered changed anymore. You can exit it with :q, without <!>. + When undoing a few changes and then making a new change Vim will + create a branch in the undo tree. This means you can go back to any + state of the text, there is no risk of a change causing text to be + lost forever. |undo-tree| + The undo information is stored in a file when the 'undofile' option is + set. This means you can exit Vim, start Vim on a previously edited + file and undo changes that were made before exiting Vim. + +Graphical User Interface (GUI). |gui| + Included support for GUI: menu's, mouse, scrollbars, etc. You can + define your own menus. Better support for CTRL/SHIFT/ALT keys in + combination with special keys and mouse. Supported for various + platforms, such as X11 with Motif, GTK, Win32 (Windows XP and later), + Amiga and Macintosh. + +Multiple windows and buffers. |windows.txt| + Vim can split the screen into several windows, each editing a + different buffer or the same buffer at a different location. Buffers + can still be loaded (and changed) but not displayed in a window. This + is called a hidden buffer. Many commands and options have been added + for this facility. + Vim can also use multiple tab pages, each with one or more windows. A + line with tab labels can be used to quickly switch between these pages. + |tab-page| + +Terminal window. |:terminal| + Vim can create a window in which a terminal emulator runs. This can + be used to execute an arbitrary command, a shell or a debugger. + +Syntax highlighting. |:syntax| + Vim can highlight keywords, patterns and other things. This is + defined by a number of |:syntax| commands, and can be made to + highlight most languages and file types. A number of files are + included for highlighting the most common languages, like C, C++, + Java, Pascal, Makefiles, shell scripts, etc. The colors used for + highlighting can be defined for ordinary terminals, color terminals + and the GUI with the |:highlight| command. A convenient way to do + this is using a |:colorscheme| command. + The highlighted text can be exported as HTML. |convert-to-HTML| + Other items that can be highlighted are matches with the search string + |'hlsearch'|, matching parens |matchparen| and the cursor line and + column |'cursorline'| |'cursorcolumn'|. + +Text properties |textprop.txt| + Vim supports highlighting text by a plugin. Property types can be + specified with |prop_type_add()| and properties can be placed with + |prop_add()|. + +Spell checking. |spell| + When the 'spell' option is set Vim will highlight spelling mistakes. + About 50 languages are currently supported, selected with the + 'spelllang' option. In source code only comments and strings are + checked for spelling. + +Folding. |folding| + A range of lines can be shown as one "folded" line. This allows + overviewing a file and moving blocks of text around quickly. + Folds can be created manually, from the syntax of the file, by indent, + etc. + +Diff mode. |diff| + Vim can show two versions of a file with the differences highlighted. + Parts of the text that are equal are folded away. Commands can be + used to move text from one version to the other. + +Plugins. |add-plugin| + The functionality can be extended by dropping a plugin file in the + right directory. That's an easy way to start using Vim scripts + written by others. Plugins can be for all kind of files, or + specifically for a filetype. + Packages make this even easier. |packages| + +Asynchronous communication and timers. |channel| |job| |timer| + Vim can exchange messages with other processes in the background. + This makes it possible to have servers do work and send back the + results to Vim. |channel| + Vim can start a job, communicate with it and stop it. |job| + Timers can fire once or repeatedly and invoke a function to do any + work. |timer| + +Repeat a series of commands. |q| + "q{c}" starts recording typed characters into named register {c}. + A subsequent "q" stops recording. The register can then be executed + with the "@{c}" command. This is very useful to repeat a complex + action. + +Flexible insert mode. |ins-special-special| + The arrow keys can be used in insert mode to move around in the file. + This breaks the insert in two parts as far as undo and redo is + concerned. + + CTRL-O can be used to execute a single Normal mode command. This is + almost the same as hitting <Esc>, typing the command and doing |a|. + +Visual mode. |Visual-mode| + Visual mode can be used to first highlight a piece of text and then + give a command to do something with it. This is an (easy to use) + alternative to first giving the operator and then moving to the end of + the text to be operated upon. + |v| and |V| are used to start Visual mode. |v| works on characters + and |V| on lines. Move the cursor to extend the Visual area. It is + shown highlighted on the screen. By typing "o" the other end of the + Visual area can be moved. The Visual area can be affected by an + operator: + d delete + c change + y yank + > or < insert or delete indent + ! filter through external program + = filter through indent + : start |:| command for the Visual lines. + gq format text to 'textwidth' columns + J join lines + ~ swap case + u make lowercase + U make uppercase + {Vi has no Visual mode, the name "visual" is used for Normal mode, to + distinguish it from Ex mode} + +Block operators. |visual-block| + With Visual mode a rectangular block of text can be selected. Start + Visual mode with CTRL-V. The block can be deleted ("d"), yanked ("y") + or its case can be changed ("~", "u" and "U"). A deleted or yanked + block can be put into the text with the "p" and "P" commands. + +Help system. |:help| + Help is displayed in a window. The usual commands can be used to + move around, search for a string, etc. Tags can be used to jump + around in the help files, just like hypertext links. The |:help| + command takes an argument to quickly jump to the info on a subject. + <F1> is the quick access to the help system. The name of the help + index file can be set with the 'helpfile' option. + +Command-line editing and history. |cmdline-editing| + You can insert or delete at any place in the command-line using the + cursor keys. The right/left cursor keys can be used to move + forward/backward one character. The shifted right/left cursor keys + can be used to move forward/backward one word. CTRL-B/CTRL-E can be + used to go to the begin/end of the command-line. + {Vi: can only alter the last character in the line} + {Vi: when hitting <Esc> the command-line is executed. This is + unexpected for most people; therefore it was changed in Vim. But when + the <Esc> is part of a mapping, the command-line is executed. If you + want the Vi behaviour also when typing <Esc>, use ":cmap ^V<Esc> + ^V^M"} + |cmdline-history| + The command-lines are remembered. The up/down cursor keys can be used + to recall previous command-lines. The 'history' option can be set to + the number of lines that will be remembered. There is a separate + history for commands and for search patterns. + +Command-line completion. |cmdline-completion| + While entering a command-line (on the bottom line of the screen) + <Tab> can be typed to complete + what example ~ + - command :e<Tab> + - tag :ta scr<Tab> + - option :set sc<Tab> + - option value :set hf=<Tab> + - file name :e ve<Tab> + - etc. + + If there are multiple matches, CTRL-N (next) and CTRL-P (previous) + will walk through the matches. <Tab> works like CTRL-N, but wraps + around to the first match. + + The 'wildchar' option can be set to the character for command-line + completion, <Tab> is the default. CTRL-D can be typed after an + (incomplete) wildcard; all matches will be listed. CTRL-A will insert + all matches. CTRL-L will insert the longest common part of the + matches. + +Insert-mode completion. |ins-completion| + In Insert mode the CTRL-N and CTRL-P keys can be used to complete a + word that appears elsewhere. |i_CTRL-N| + With CTRL-X another mode is entered, through which completion can be + done for: + |i_CTRL-X_CTRL-F| file names + |i_CTRL-X_CTRL-K| words from 'dictionary' files + |i_CTRL-X_CTRL-T| words from 'thesaurus' files + |i_CTRL-X_CTRL-I| words from included files + |i_CTRL-X_CTRL-L| whole lines + |i_CTRL-X_CTRL-]| words from the tags file + |i_CTRL-X_CTRL-D| definitions or macros + |i_CTRL-X_CTRL-O| Omni completion: clever completion + specifically for a file type + etc. + +Long line support. |'wrap'| |'linebreak'| + If the 'wrap' option is off, long lines will not wrap and only part + of them will be shown. When the cursor is moved to a part that is not + shown, the screen will scroll horizontally. The minimum number of + columns to scroll can be set with the 'sidescroll' option. The |zh| + and |zl| commands can be used to scroll sideways. + Alternatively, long lines are broken in between words when the + 'linebreak' option is set. This allows editing a single-line + paragraph conveniently (e.g. when the text is later read into a DTP + program). Move the cursor up/down with the |gk| and |gj| commands. + +Text formatting. |formatting| + The 'textwidth' option can be used to automatically limit the line + length. This supplements the 'wrapmargin' option of Vi, which was not + very useful. The |gq| operator can be used to format a piece of text + (for example, |gqap| formats the current paragraph). Commands for + text alignment: |:center|, |:left| and |:right|. + +Extended search patterns. |pattern| + There are many extra items to match various text items. Examples: + A "\n" can be used in a search pattern to match a line break. + "x\{2,4}" matches "x" 2 to 4 times. + "\s" matches a white space character. + +Directory, remote and archive browsing. |netrw| + Vim can browse the file system. Simply edit a directory. Move around + in the list with the usual commands and press <Enter> to go to the + directory or file under the cursor. + This also works for remote files over ftp, http, ssh, etc. + Zip and tar archives can also be browsed. |tar| |zip| + +Edit-compile-edit speedup. |quickfix| + The |:make| command can be used to run the compilation and jump to the + first error. A file with compiler error messages is interpreted. Vim + jumps to the first error. + + Each line in the error file is scanned for the name of a file, line + number and error message. The 'errorformat' option can be set to a + list of scanf-like strings to handle output from many compilers. + + The |:cn| command can be used to jump to the next error. + |:cl| lists all the error messages. Other commands are available. + The 'makeef' option has the name of the file with error messages. + The 'makeprg' option contains the name of the program to be executed + with the |:make| command. + The 'shellpipe' option contains the string to be used to put the + output of the compiler into the errorfile. + +Finding matches in files. |:vimgrep| + Vim can search for a pattern in multiple files. This uses the + advanced Vim regexp pattern, works on all systems and also works to + search in compressed files. + +Improved indenting for programs. |'cindent'| + When the 'cindent' option is on the indent of each line is + automatically adjusted. C syntax is mostly recognized. The indent + for various styles can be set with 'cinoptions'. The keys to trigger + indenting can be set with 'cinkeys'. + + Comments can be automatically formatted. The 'comments' option can be + set to the characters that start and end a comment. This works best + for C code, but also works for e-mail (">" at start of the line) and + other types of text. The |=| operator can be used to re-indent + lines. + + For many other languages an indent plugin is present to support + automatic indenting. |30.3| + +Searching for words in included files. |include-search| + The |[i| command can be used to search for a match of the word under + the cursor in the current and included files. The 'include' option + can be set to a pattern that describes a command to include a file + (the default is for C programs). + The |[I| command lists all matches, the |[_CTRL-I| command jumps to + a match. + The |[d|, |[D| and |[_CTRL-D| commands do the same, but only for + lines where the pattern given with the 'define' option matches. + +Automatic commands. |autocommand| + Commands can be automatically executed when reading a file, writing a + file, jumping to another buffer, etc., depending on the file name. + This is useful to set options and mappings for C programs, + documentation, plain text, e-mail, etc. This also makes it possible + to edit compressed files. + +Scripts and Expressions. |expression| + Commands have been added to form up a powerful script language. + |:if| Conditional execution, which can be used for example + to set options depending on the value of $TERM. + |:while| Repeat a number of commands. + |:for| Loop over a list. + |:echo| Print the result of an expression. + |:let| Assign a value to an internal variable, option, etc. + Variable types are Number, String, List and Dictionary. + |:execute| Execute a command formed by an expression. + |:try| Catch exceptions. + etc., etc. See |eval|. + Debugging and profiling are supported. |debug-scripts| |profile| + If this is not enough, an interface is provided to |Python|, |Ruby|, + |Tcl|, |Lua|, |Perl| and |MzScheme|. + +Viminfo. |viminfo-file| + The command-line history, marks and registers can be stored in a file + that is read on startup. This can be used to repeat a search command + or command-line command after exiting and restarting Vim. It is also + possible to jump right back to where the last edit stopped with |'0|. + The 'viminfo' option can be set to select which items to store in the + .viminfo file. This is off by default. + +Printing. |printing| + The |:hardcopy| command sends text to the printer. This can include + syntax highlighting. + +Mouse support. |mouse-using| + The mouse is supported in the GUI version, in an xterm for Unix, for + BSDs with sysmouse, for Linux with gpm, and Win32. It can be used to + position the cursor, select the visual area, paste a register, etc. + +Usage of key names. |<>| |key-notation| + Special keys now all have a name like <Up>, <End>, etc. + This name can be used in mappings, to make it easy to edit them. + +Editing binary files. |edit-binary| + Vim can edit binary files. You can change a few characters in an + executable file, without corrupting it. Vim doesn't remove NUL + characters (they are represented as <NL> internally). + |-b| command-line argument to start editing a binary file + |'binary'| Option set by |-b|. Prevents adding an <EOL> for the + last line in the file. + +Multi-language support. |multi-lang| + Files in double-byte or multibyte encodings can be edited. There is + UTF-8 support to be able to edit various languages at the same time, + without switching fonts. |UTF-8| + Messages and menus are available in different languages. + +Move cursor beyond lines. + When the 'virtualedit' option is set the cursor can move all over the + screen, also where there is no text. This is useful to edit tables + and figures easily. + +============================================================================== +5. Other vim features *other-features* + +A random collection of nice extra features. + + +When Vim is started with "-s scriptfile", the characters read from +"scriptfile" are treated as if you typed them. If end of file is reached +before the editor exits, further characters are read from the console. + +The "-w" option can be used to record all typed characters in a script file. +This file can then be used to redo the editing, possibly on another file or +after changing some commands in the script file. + +The "-o" option opens a window for each argument. "-o4" opens four windows. + +Vi requires several termcap entries to be able to work full-screen. Vim only +requires the "cm" entry (cursor motion). + + +In command mode: + +When the 'showcmd' option is set, the command characters are shown in the last +line of the screen. They are removed when the command is finished. + +If the 'ruler' option is set, the current cursor position is shown in the +last line of the screen. + +"U" still works after having moved off the last changed line and after "u". + +Characters with the 8th bit set are displayed. The characters between '~' and +0xa0 are displayed as "~?", "~@", "~A", etc., unless they are included in the +'isprint' option. + +"][" goes to the next ending of a C function ('}' in column 1). +"[]" goes to the previous ending of a C function ('}' in column 1). + +"]f", "[f" and "gf" start editing the file whose name is under the cursor. +CTRL-W f splits the window and starts editing the file whose name is under +the cursor. + +"*" searches forward for the identifier under the cursor, "#" backward. +"K" runs the program defined by the 'keywordprg' option, with the identifier +under the cursor as argument. + +"%" can be preceded with a count. The cursor jumps to the line that +percentage down in the file. The normal "%" function to jump to the matching +brace skips braces inside quotes. + +With the CTRL-] command, the cursor may be in the middle of the identifier. + +The used tags are remembered. Commands that can be used with the tag stack +are CTRL-T, ":pop" and ":tag". ":tags" lists the tag stack. + +Vi uses 'wrapscan' when searching for a tag. When jumping to a tag Vi starts +searching in line 2 of another file. It does not find a tag in line 1 of +another file when 'wrapscan' is not set. + +The 'tags' option can be set to a list of tag file names. Thus multiple +tag files can be used. For file names that start with "./", the "./" is +replaced with the path of the current file. This makes it possible to use a +tags file in the same directory as the file being edited. +{Vi: always uses binary search in some versions} +{Vi does not have the security prevention for commands in tag files} + +Previously used file names are remembered in the alternate file name list. +CTRL-^ accepts a count, which is an index in this list. +":files" command shows the list of alternate file names. +"#<N>" is replaced with the <N>th alternate file name in the list. +"#<" is replaced with the current file name without extension. + +Search patterns have more features. The <NL> character is seen as part of the +search pattern and the substitute string of ":s". Vi sees it as the end of +the command. + +Searches can put the cursor on the end of a match and may include a character +offset. + +Count added to "~", ":next", ":Next", "n" and "N". + +The command ":next!" with 'autowrite' set does not write the file. In vi the +file was written, but this is considered to be a bug, because one does not +expect it and the file is not written with ":rewind!". + +In Vi when entering a <CR> in replace mode deletes a character only when 'ai' +is set (but does not show it until you hit <Esc>). Vim always deletes a +character (and shows it immediately). + +Added :wnext command. Same as ":write" followed by ":next". + +The ":w!" command always writes, also when the file is write protected. In Vi +you would have to do ":!chmod +w %:S" and ":set noro". + +When 'tildeop' has been set, "~" is an operator (must be followed by a +movement command). + +With the "J" (join) command you can reset the 'joinspaces' option to have only +one space after a period (Vi inserts two spaces). + +"cw" can be used to change white space formed by several characters (Vi is +confusing: "cw" only changes one space, while "dw" deletes all white space). +{Vi: "cw" when on a blank followed by other blanks changes only the first +blank; this is probably a bug, because "dw" deletes all the blanks} + +"o" and "O" accept a count for repeating the insert (Vi clears a part of +display). + +Flags after Ex commands not supported (no plans to include it). + +On non-UNIX systems ":cd" command shows current directory instead of going to +the home directory (there isn't one). ":pwd" prints the current directory on +all systems. + +After a ":cd" command the file names (in the argument list, opened files) +still point to the same files. In Vi ":cd" is not allowed in a changed file; +otherwise the meaning of file names change. + +":source!" command reads Vi commands from a file. + +":mkexrc" command writes current modified options and mappings to a ".exrc" +file. ":mkvimrc" writes to a ".vimrc" file. + +No check for "tail recursion" with mappings. This allows things like +":map! foo ^]foo". + +When a mapping starts with number, vi loses the count typed before it (e.g. +when using the mapping ":map g 4G" the command "7g" goes to line 4). This is +considered a vi bug. Vim concatenates the counts (in the example it becomes +"74G"), as most people would expect. + +The :put! command inserts the contents of a register above the current line. + +The "p" and "P" commands of vi cannot be repeated with "." when the putted +text is less than a line. In Vim they can always be repeated. + +":noremap" command can be used to enter a mapping that will not be remapped. +This is useful to exchange the meaning of two keys. ":cmap", ":cunmap" and +":cnoremap" can be used for mapping in command-line editing only. ":imap", +":iunmap" and ":inoremap" can be used for mapping in insert mode only. +Similar commands exist for abbreviations: ":noreabbrev", ":iabbrev" +":cabbrev", ":iunabbrev", ":cunabbrev", ":inoreabbrev", ":cnoreabbrev". + +In Vi the command ":map foo bar" would remove a previous mapping +":map bug foo". This is considered a bug, so it is not included in Vim. +":unmap! foo" does remove ":map! bug foo", because unmapping would be very +difficult otherwise (this is vi compatible). + +The ':' register contains the last command-line. +The '%' register contains the current file name. +The '.' register contains the last inserted text. + +":dis" command shows the contents of the yank registers. + +CTRL-O/CTRL-I can be used to jump to older/newer positions. These are the +same positions as used with the '' command, but may be in another file. The +":jumps" command lists the older positions. + +If the 'shiftround' option is set, an indent is rounded to a multiple of +'shiftwidth' with ">" and "<" commands. + +The 'scrolljump' option can be set to the minimum number of lines to scroll +when the cursor gets off the screen. Use this when scrolling is slow. + +The 'scrolloff' option can be set to the minimum number of lines to keep +above and below the cursor. This gives some context to where you are +editing. When set to a large number the cursor line is always in the middle +of the window. + +Uppercase marks can be used to jump between files. The ":marks" command lists +all currently set marks. The commands "']" and "`]" jump to the end of the +previous operator or end of the text inserted with the put command. "'[" and +"`[" do jump to the start. {Vi: no uppercase marks} + +The 'shelltype' option can be set to reflect the type of shell used on the +Amiga. + +The 'highlight' option can be set for the highlight mode to be used for +several commands. + +The CTRL-A (add) and CTRL-X (subtract) commands are new. The count to the +command (default 1) is added to/subtracted from the number at or after the +cursor. That number may be decimal, octal (starts with a '0') or hexadecimal +(starts with '0x'). Very useful in macros. + +With the :set command the prefix "inv" can be used to invert boolean options. + +In both Vi and Vim you can create a line break with the ":substitute" command +by using a CTRL-M. For Vi this means you cannot insert a real CTRL-M in the +text. With Vim you can put a real CTRL-M in the text by preceding it with a +CTRL-V. + + +In Insert mode: + +If the 'revins' option is set, insert happens backwards. This is for typing +Hebrew. When inserting normal characters the cursor will not be shifted and +the text moves rightwards. Backspace, CTRL-W and CTRL-U will also work in +the opposite direction. CTRL-B toggles the 'revins' option. In replace mode +'revins' has no effect. Only when enabled at compile time. + +The backspace key can be used just like CTRL-D to remove auto-indents. + +You can backspace, CTRL-U and CTRL-W over line breaks if the 'backspace' (bs) +option includes "eol". You can backspace over the start of insert if the +'backspace' option includes "start". + +When the 'paste' option is set, a few options are reset and mapping in insert +mode and abbreviation are disabled. This allows for pasting text in windowing +systems without unexpected results. When the 'paste' option is reset, the old +option values are restored. + +CTRL-T/CTRL-D always insert/delete an indent in the current line, no matter +what column the cursor is in. + +CTRL-@ (insert previously inserted text) works always (Vi: only when typed as +first character). + +CTRL-A works like CTRL-@ but does not leave insert mode. + +CTRL-R {register} can be used to insert the contents of a register. + +When the 'smartindent' option is set, C programs will be better auto-indented. +With 'cindent' even more. + +CTRL-Y and CTRL-E can be used to copy a character from above/below the +current cursor position. + +After CTRL-V you can enter a three digit decimal number. This byte value is +inserted in the text as a single character. Useful for international +characters that are not on your keyboard. + +When the 'expandtab' (et) option is set, a <Tab> is expanded to the +appropriate number of spaces. + +The window always reflects the contents of the buffer (Vi does not do this +when changing text and in some other cases). + +If Vim is compiled with DIGRAPHS defined, digraphs are supported. A set of +normal digraphs is included. They are shown with the ":digraph" command. +More can be added with ":digraph {char1}{char2} {number}". A digraph is +entered with "CTRL-K {char1} {char2}" or "{char1} BS {char2}" (only when +'digraph' option is set). + +When repeating an insert, e.g. "10atest <Esc>" vi would only handle wrapmargin +for the first insert. Vim does it for all. + +A count to the "i" or "a" command is used for all the text. Vi uses the count +only for one line. "3iabc<NL>def<Esc>" would insert "abcabcabc<NL>def" in Vi +but "abc<NL>defabc<NL>defabc<NL>def" in Vim. + + +In Command-line mode: + +<Esc> terminates the command-line without executing it. In vi the command +line would be executed, which is not what most people expect (hitting <Esc> +should always get you back to command mode). To avoid problems with some +obscure macros, an <Esc> in a macro will execute the command. If you want a +typed <Esc> to execute the command like vi does you can fix this with + ":cmap ^V<Esc> ^V<CR>" + +General: + +The 'ttimeout' option is like 'timeout', but only works for cursor and +function keys, not for ordinary mapped characters. The 'timeoutlen' option +gives the number of milliseconds that is waited for. If the 'esckeys' option +is not set, cursor and function keys that start with <Esc> are not recognized +in insert mode. + +There is an option for each terminal string. Can be used when termcap is not +supported or to change individual strings. + +The 'fileformat' option can be set to select the <EOL>: "dos" <CR><NL>, "unix" +<NL> or "mac" <CR>. +When the 'fileformats' option is not empty, Vim tries to detect the type of +<EOL> automatically. The 'fileformat' option is set accordingly. + +On systems that have no job control (older Unix systems and non-Unix systems) +the CTRL-Z, ":stop" or ":suspend" command starts a new shell. + +If Vim is started on the Amiga without an interactive window for output, a +window is opened (and :sh still works). You can give a device to use for +editing with the |-d| argument, e.g. "-d con:20/20/600/150". + +The 'columns' and 'lines' options are used to set or get the width and height +of the display. + +Option settings are read from the first and last few lines of the file. +Option 'modelines' determines how many lines are tried (default is 5). Note +that this is different from the Vi versions that can execute any Ex command +in a modeline (a major security problem). |trojan-horse| + +If the 'insertmode' option is set (e.g. in .exrc), Vim starts in insert mode. +And it comes back there, when pressing <Esc>. + +Undo information is kept in memory. Available memory limits the number and +size of change that can be undone. This is hardly a problem on the Amiga and +almost never with Unix and Win32. + +If the 'backup' or 'writebackup' option is set: Before a file is overwritten, +a backup file (.bak) is made. If the "backup" option is set it is left +behind. + +Vim creates a file ending in ".swp" to store parts of the file that have been +changed or that do not fit in memory. This file can be used to recover from +an aborted editing session with "vim -r file". Using the swap file can be +switched off by setting the 'updatecount' option to 0 or starting Vim with +the "-n" option. Use the 'directory' option for placing the .swp file +somewhere else. + +Vim is able to work correctly on filesystems with 8.3 file names, also when +using messydos or crossdos filesystems on the Amiga, or any 8.3 mounted +filesystem under Unix. See |'shortname'|. + +Error messages are shown at least one second (Vi overwrites error messages). + +If Vim gives the |hit-enter| prompt, you can hit any key. Characters other +than <CR>, <NL> and <Space> are interpreted as the (start of) a command. +{Vi: only ":" commands are interpreted} + +The contents of the numbered and unnamed registers is remembered when +changing files. + +The "No lines in buffer" message is a normal message instead of an error +message, since that may cause a mapping to be aborted. +{Vi: error messages may be overwritten with other messages before you have a +chance to read them} + +The AUX: device of the Amiga is supported. + +============================================================================== +6. Supported Vi features *vi-features* + +Vim supports nearly all Vi commands and mostly in the same way. That is when +the 'compatible' option is set and 'cpoptions' contains all flags. What the +effect is of resetting 'compatible' and removing flags from 'cpoptions' can be +found at the help for the specific command. + +The help files used to mark features that are in Vim but not in Vi with {not +in Vi}. However, since these remarks cluttered the help files we now do it +the other way around: Below is listed what Vi already supported. Anything +else has been added by Vim. + + +The following Ex commands are supported by Vi: ~ + +`:abbreviate` enter abbreviation +`:append` append text +`:args` print the argument list +`:cd` change directory; Vi: no "cd -" +`:change` replace a line or series of lines +`:chdir` change directory +`:copy` copy lines +`:delete` delete lines +`:edit` edit a file +`:exit` same as `:xit` +`: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! +`:k` set a mark +`:list` print lines +`:map` show or enter a mapping +`:mark` set a mark +`:move` move lines +`:Next` go to previous file in the argument list {Vi: no count} +`:next` go to next file in the argument list {Vi: no count} +`:number` print lines with line number +`:open` start open mode (not implemented in Vim) +`:pop` jump to older entry in tag stack (only in some versions) +`:preserve` write all text to swap file {Vi: might also exit} +`:previous` same as `:Next` {Vi: only in some versions} +`:print` print lines +`:put` insert contents of register in the text +`:quit` quit Vi +`:read` read file into the text +`:recover` recover a file from a swap file {Vi: recovers in another way + and sends mail if there is something to recover} +`:rewind` go to the first file in the argument list; no ++opt +`:set` set option; but not `:set inv{option}`, `:set option&`, + `:set all&`, `:set option+=value`, `:set option^=value` + `:set option-=value` `:set option<` +`:shell` escape to a shell +`:source` read Vi or Ex commands from a file +`:stop` suspend the editor or escape to a shell +`:substitute` find and replace text; Vi: no '&', 'i', 's', 'r' or 'I' flag, + confirm prompt only supports 'y' and 'n', no highlighting +`:suspend` same as ":stop" +`:t` same as ":copy" +`:tag` jump to tag +`:unabbreviate` remove abbreviation +`:undo` undo last change {Vi: only one level} +`:unmap` remove mapping +`:vglobal` execute commands for not matching lines +`:version` print version number and other info +`:visual` same as ":edit", but turns off "Ex" mode +`:wq` write to a file and quit Vi +`:write` write to a file +`:xit` write if buffer changed and quit Vi +`:yank` yank lines into a register +`:z` print some lines {not in all versions of Vi} +`:!` filter lines or execute an external command +`:"` comment +`:#` same as ":number" +`:*` execute contents of a register +`:&` repeat last ":substitute" +`:<` shift lines one 'shiftwidth' left +`:=` print the cursor line number +`:>` shift lines one 'shiftwidth' right +`:@` execute contents of a register; but not `:@`; `:@@` only in + some versions + +Common for these commands is that Vi doesn't support the ++opt argument on +`:edit` and other commands that open a file. + + +The following Normal mode commands are supported by Vi: ~ + +note: See the beginning of |normal-index| for the meaning of WORD, N, Nmove +and etc in the description text. + +|CTRL-B| scroll N screens Backwards +|CTRL-C| interrupt current (search) command +|CTRL-D| scroll Down N lines (default: half a screen); Vim scrolls + 'scroll' screen lines, Vi scrolls file lines; makes a + difference when lines wrap +|CTRL-E| scroll N lines upwards (N lines Extra) +|CTRL-F| scroll N screens Forward +|CTRL-G| display current file name and position +|<BS>| same as "h" +|CTRL-H| same as "h" +|<NL>| same as "j" +|CTRL-J| same as "j" +|CTRL-L| redraw screen +|<CR>| cursor to the first CHAR N lines lower +|CTRL-M| same as <CR> +|CTRL-N| same as "j" +|CTRL-P| same as "k" +|CTRL-R| in some Vi versions: same as CTRL-L +|CTRL-T| jump to N older Tag in tag list +|CTRL-U| N lines Upwards (default: half a screen) {Vi used file lines + while Vim scrolls 'scroll' screen lines; makes a difference + when lines wrap} +|CTRL-Y| scroll N lines downwards +|CTRL-Z| suspend program (or start new shell) +|CTRL-]| :ta to ident under cursor {Vi: identifier after the cursor} +|CTRL-^| edit alternate file {Vi: no count} +|<Space>| same as "l" +|!| filter Nmove text through the {filter} command +|!!| filter N lines through the {filter} command +" use register {a-zA-Z0-9.%#:-"} for next delete, yank or put + (uppercase to append) ({.%#:} only work with put) +|$| cursor to the end of Nth next line +|%| find the next (curly/square) bracket on this line and go to + its match, or go to matching comment bracket, or go to + matching preprocessor directive (Vi: no count supported) +|&| repeat last :s +|'| jump to mark (Vi: only lowercase marks) +|(| cursor N sentences backward +|)| cursor N sentences forward +|+| same as <CR> +|,| repeat latest f, t, F or T in opposite direction N times +|-| cursor to the first CHAR N lines higher +|.| repeat last change with count replaced with N +|/| search forward for the Nth occurrence of {pattern} +|0| cursor to the first char of the line +|:| start entering an Ex command +|;| repeat latest f, t, F or T N times +|<| shift Nmove lines one 'shiftwidth' leftwards +|<<| shift N lines one 'shiftwidth' leftwards +|=| filter Nmove lines through "indent" +|==| filter N lines through "indent" +|>| shift Nmove lines one 'shiftwidth' rightwards +|>>| shift N lines one 'shiftwidth' rightwards +|?| search backward for the Nth previous occurrence of {pattern} +|@| execute the contents of register {a-z} N times + {Vi: only named registers} +|@@| repeat the previous @{a-z} N times +|A| append text after the end of the line N times +|B| cursor N WORDS backward +|C| change from the cursor position to the end of the line +|D| delete the characters under the cursor until the end of the + line and N-1 more lines [into register x]; synonym for "d$" +|E| cursor forward to the end of WORD N +|F| cursor to the Nth occurrence of {char} to the left +|G| cursor to line N, default last line +|H| cursor to line N from top of screen +|I| insert text before the first CHAR on the line N times +|J| Join N lines; default is 2 +|L| cursor to line N from bottom of screen +|M| cursor to middle line of screen +|N| repeat the latest '/' or '?' N times in opposite direction +|O| begin a new line above the cursor and insert text, repeat N + times {Vi: blank [count] screen lines} +|P| put the text [from register x] before the cursor N times + {Vi: no count} +|Q| switch to "Ex" mode +|R| enter replace mode: overtype existing characters, repeat the + entered text N-1 times +|S| delete N lines [into register x] and start insert; synonym for + "cc". +|T| cursor till after Nth occurrence of {char} to the left +|U| undo all latest changes on one line + {Vi: while not moved off of the last modified line} +|W| cursor N WORDS forward +|X| delete N characters before the cursor [into register x] +|Y| yank N lines [into register x]; synonym for "yy" +|ZZ| store current file if modified, and exit +|[[| cursor N sections backward +|]]| cursor N sections forward +|^| cursor to the first CHAR of the line +|_| cursor to the first CHAR N - 1 lines lower +|`| cursor to the mark {a-zA-Z0-9} +|a| append text after the cursor N times +|b| cursor N words backward +|c| delete Nmove text [into register x] and start insert +|cc| delete N lines [into register x] and start insert +|d| delete Nmove text [into register x] +|dd| delete N lines [into register x] +|e| cursor forward to the end of word N +|f| cursor to Nth occurrence of {char} to the right +|h| cursor N chars to the left +|i| insert text before the cursor N times +|j| cursor N lines downward +|k| cursor N lines upward +|l| cursor N chars to the right +|m| set mark {A-Za-z} at cursor position +|n| repeat the latest '/' or '?' N times +|o| begin a new line below the cursor and insert text + {Vi: blank [count] screen lines} +|p| put the text [from register x] after the cursor N times + {Vi: no count} +|r| replace N chars with {char} {Vi: CTRL-V <CR> still replaces + with a line break, cannot replace something with a <CR>} +|s| (substitute) delete N characters [into register x] and start + insert +|t| cursor till before Nth occurrence of {char} to the right +|u| undo changes {Vi: only one level} +|w| cursor N words forward +|x| delete N characters under and after the cursor [into register + x] +|y| yank Nmove text [into register x] +|yy| yank N lines [into register x] +|z<CR>| current line to the top +|z-| current line to the bottom +|z+| cursor on line N +|z^| cursor on line N +|{| cursor N paragraphs backward +| cursor to column N +|}| cursor N paragraphs forward +|~| switch case of N characters under the cursor; Vim: depends on + 'tildeop' {Vi: no count, no 'tildeop'} +|<Del>| same as "x" + + +The following commands are supported in Insert mode by Vi: ~ + +CTRL-@ insert previously inserted text and stop insert + {Vi: only when typed as first char, only up to 128 chars} +CTRL-C quit insert mode, without checking for abbreviation, unless + 'insertmode' set. +CTRL-D delete one shiftwidth of indent in the current line + {Vi: CTRL-D works only when used after autoindent} +<BS> delete character before the cursor {Vi: does not delete + autoindents, does not cross lines, does not delete past start + position of insert} +CTRL-H same as <BS> +<Tab> insert a <Tab> character +CTRL-I same as <Tab> +<NL> same as <CR> +CTRL-J same as <CR> +<CR> begin new line +CTRL-M same as <CR> +CTRL-T insert one shiftwidth of indent in current line {Vi: only when + in indent} +CTRL-V {char} insert next non-digit literally {Vi: no decimal byte entry} +CTRL-W delete word before the cursor +CTRL-Z when 'insertmode' set: suspend Vi +<Esc> end insert mode (unless 'insertmode' set) +CTRL-[ same as <Esc> +0 CTRL-D delete all indent in the current line +^ CTRL-D delete all indent in the current line, restore it in the next + line +<Del> delete character under the cursor + + +The following options are supported by Vi: ~ + +'autoindent' 'ai' take indent for new line from previous line + {Vi does this slightly differently: After the + indent is deleted when typing <Esc> or <CR>, the + cursor position when moving up or down is after + the deleted indent; Vi puts the cursor somewhere + in the deleted indent}. +'autowrite' 'aw' automatically write file if changed +'directory' 'dir' list of directory names for the swap file + {Vi: directory to put temp file in, defaults to + "/tmp"} +'edcompatible' 'ed' toggle flags of ":substitute" command +'errorbells' 'eb' ring the bell for error messages +'ignorecase' 'ic' ignore case in search patterns +'lines' number of lines in the display +'lisp' automatic indenting for Lisp {Vi: Does it a little + bit differently} +'list' show <Tab> and <EOL> +'magic' changes special characters in search patterns +'modeline' 'ml' recognize 'modelines' at start or end of file + {called modelines in some Vi versions} +'number' 'nu' print the line number in front of each line +'paragraphs' 'para' nroff macros that separate paragraphs +'prompt' 'prompt' enable prompt in Ex mode +'readonly' 'ro' disallow writing the buffer {Vim sets 'readonly' + when editing a file with `:view`} +'remap' allow mappings to work recursively +'report' threshold for reporting nr. of lines changed +'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D +'sections' 'sect' nroff macros that separate sections +'shell' 'sh' name of shell to use for external commands +'shiftwidth' 'sw' number of spaces to use for (auto)indent step +'showmatch' 'sm' briefly jump to matching bracket if insert one +'showmode' 'smd' message on status line to show current mode +'tabstop' 'ts' number of spaces that <Tab> in file uses +'taglength' 'tl' number of significant characters for a tag +'tags' 'tag' list of file names used by the tag command + {Vi: default is "tags /usr/lib/tags"} +'tagstack' 'tgst' push tags onto the tag stack {not in all versions + of Vi} +'term' name of the terminal +'terse' shorten some messages +'timeout' 'to' time out on mappings and key codes +'timeoutlen' 'tm' time for 'timeout' {only in some Vi versions} +'ttytype' 'tty' alias for 'term' +'verbose' 'vbs' give informative messages {only in some Vi + versions as a boolean option} +'warn' warn for shell command when buffer was changed +'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B + {Vi also uses the option to specify the number of + displayed lines} +'wrapmargin' 'wm' chars from the right where wrapping starts + {Vi: works differently and less usefully} +'wrapscan' 'ws' searches wrap around the end of the file +'writeany' 'wa' write to file with no need for "!" override + +Also see |missing-options|. + +============================================================================== +7. Command-line arguments *cmdline-arguments* + +Different versions of Vi have different command-line arguments. This can be +confusing. To help you, this section gives an overview of the differences. + +Five variants of Vi will be considered here: + Elvis Elvis version 2.1b + Nvi Nvi version 1.79 + Posix Posix 1003.2 + Vi Vi version 3.7 (for Sun 4.1.x) + Vile Vile version 7.4 (incomplete) + Vim Vim version 5.2 + +Only Vim is able to accept options in between and after the file names. + ++{command} Elvis, Nvi, Posix, Vi, Vim: Same as "-c {command}". + +- Nvi, Posix, Vi: Run Ex in batch mode. + Vim: Read file from stdin (use -s for batch mode). + +-- Vim: End of options, only file names are following. + +--cmd {command} Vim: execute {command} before sourcing vimrc files. + +--echo-wid Vim: GTK+ echoes the Window ID on stdout + +--help Vim: show help message and exit. + +--literal Vim: take file names literally, don't expand wildcards. + +--nofork Vim: same as |-f| + +--noplugin[s] Vim: Skip loading plugins. + +--remote Vim: edit the files in another Vim server + +--remote-expr {expr} Vim: evaluate {expr} in another Vim server + +--remote-send {keys} Vim: send {keys} to a Vim server and exit + +--remote-silent {file} Vim: edit the files in another Vim server if possible + +--remote-wait Vim: edit the files in another Vim server and wait for it + +--remote-wait-silent Vim: like --remote-wait, no complaints if not possible + +--role {role} Vim: GTK+ 2: set role of main window + +--serverlist Vim: Output a list of Vim servers and exit + +--servername {name} Vim: Specify Vim server name + +--socketid {id} Vim: GTK window socket to run Vim in + +--windowid {id} Vim: Win32 window ID to run Vim in + +--version Vim: show version message and exit. + +-? Vile: print usage summary and exit. + +-a Elvis: Load all specified file names into a window (use -o for + Vim). + +-A Vim: Start in Arabic mode (when compiled with Arabic). + +-b {blksize} Elvis: Use {blksize} blocksize for the session file. +-b Vim: set 'binary' mode. + +-C Vim: Compatible mode. + +-c {command} Elvis, Nvi, Posix, Vim: run {command} as an Ex command after + loading the edit buffer. + Vim: allow up to 10 "-c" arguments + +-d {device} Vim: Use {device} for I/O (Amiga only). {only when compiled + without the |+diff| feature} +-d Vim: start with 'diff' set. |vimdiff| + +-dev {device} Vim: Use {device} for I/O (Amiga only). + +-D Vim: debug mode. + +-e Elvis, Nvi, Vim: Start in Ex mode, as if the executable is + called "ex". + +-E Vim: Start in improved Ex mode |gQ|, like "exim". + +-f Vim: Run GUI in foreground (Amiga: don't open new window). +-f {session} Elvis: Use {session} as the session file. + +-F Vim: Start in Farsi mode (when compiled with Farsi). + Nvi: Fast start, don't read the entire file when editing + starts. + +-G {gui} Elvis: Use the {gui} as user interface. + +-g Vim: Start GUI. +-g N Vile: start editing at line N + +-h Vim: Give help message. + Vile: edit the help file + +-H Vim: start Hebrew mode (when compiled with it). + +-i Elvis: Start each window in Insert mode. +-i {viminfo} Vim: Use {viminfo} for viminfo file. + +-L Vim: Same as "-r" {only in some versions of Vi: "List + recoverable edit sessions"}. + +-l Nvi, Vi, Vim: Set 'lisp' and 'showmatch' options. + +-m Vim: Modifications not allowed to be written, resets 'write' + option. + +-M Vim: Modifications not allowed, resets 'modifiable' and the + 'write' option. + +-N Vim: No-compatible mode. + +-n Vim: No swap file used. + +-nb[args] Vim: open a NetBeans interface connection + +-O[N] Vim: Like -o, but use vertically split windows. + +-o[N] Vim: Open [N] windows, or one for each file. + +-p[N] Vim: Open [N] tab pages, or one for each file. + +-P {parent-title} Win32 Vim: open Vim inside a parent application window + +-q {name} Vim: Use {name} for quickfix error file. +-q{name} Vim: Idem. + +-R Elvis, Nvi, Posix, Vile, Vim: Set the 'readonly' option. + +-r Elvis, Nvi, Posix, Vi, Vim: Recovery mode. + +-S Nvi: Set 'secure' option. +-S {script} Vim: source script after starting up. + +-s Nvi, Posix, Vim: Same as "-" (silent mode), when in Ex mode. + Elvis: Sets the 'safer' option. +-s {scriptin} Vim: Read from script file {scriptin}; only when not in Ex + mode. +-s {pattern} Vile: search for {pattern} + +-t {tag} Elvis, Nvi, Posix, Vi, Vim: Edit the file containing {tag}. +-t{tag} Vim: Idem. + +-T {term} Vim: Set terminal name to {term}. + +-u {vimrc} Vim: Read initializations from {vimrc} file. + +-U {gvimrc} Vim: Read GUI initializations from {gvimrc} file. + +-v Nvi, Posix, Vi, Vim: Begin in Normal mode (visual mode, in Vi + terms). + Vile: View mode, no changes possible. + +-V Elvis, Vim: Verbose mode. +-V{nr} Vim: Verbose mode with specified level. + +-w {size} Elvis, Posix, Nvi, Vi, Vim: Set value of 'window' to {size}. +-w{size} Nvi, Vi: Same as "-w {size}". +-w {name} Vim: Write to script file {name} (must start with non-digit). + +-W {name} Vim: Append to script file {name}. + +-x Vi, Vim: Ask for encryption key. See |encryption|. + +-X Vim: Don't connect to the X server. + +-y Vim: Start in easy mode, like |evim|. + +-Z Vim: restricted mode + +@{cmdfile} Vile: use {cmdfile} as startup file. + +============================================================================== +8. POSIX compliance *posix* *posix-compliance* + +In 2005 the POSIX test suite was run to check the compatibility of Vim. Most +of the test was executed properly. There are the few things where Vim +is not POSIX compliant, even when run in Vi compatibility mode. + *$VIM_POSIX* +Set the $VIM_POSIX environment variable to have 'cpoptions' include the POSIX +flags when Vim starts up. This makes Vim run as POSIX as it can. That's +a bit different from being Vi compatible. + +You can find the Posix specification for Vi here: +https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html +And the related Ex specification: +https://pubs.opengroup.org/onlinepubs/9699919799/utilities/ex.html + +This is where Vim does not behave as POSIX specifies and why: + + *posix-screen-size* + The $COLUMNS and $LINES environment variables are ignored by Vim if + the size can be obtained from the terminal in a more reliable way. + Add the '|' flag to 'cpoptions' to have $COLUMNS and $LINES overrule + sizes obtained in another way. + + The "{" and "}" commands don't stop at a "{" in the original Vi, but + POSIX specifies it does. Add the '{' flag to 'cpoptions' if you want + it the POSIX way. + + The "D", "o" and "O" commands accept a count. Also when repeated. + Add the '#' flag to 'cpoptions' if you want to ignore the count. + + The ":cd" command fails if the current buffer is modified when the '.' + flag is present in 'cpoptions'. + + There is no ATTENTION message, the "A" flag is added to 'shortmess'. + +These are remarks about running the POSIX test suite: +- vi test 33 sometimes fails for unknown reasons +- vi test 250 fails; behavior will be changed in a new revision + http://www.opengroup.org/austin/mailarchives/ag-review/msg01710.html + (link no longer works, perhaps it's now: + https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&source=L&listname=austin-review-l&id=1711) +- vi test 310 fails; exit code non-zero when any error occurred? +- ex test 24 fails because test is wrong. Changed between SUSv2 and SUSv3. +- ex tests 47, 48, 49, 72, 73 fail because .exrc file isn't read in silent + mode and $EXINIT isn't used. +- ex tests 76, 78 fail because echo is used instead of printf. (fixed) + Also: problem with \s not changed to space. +- ex test 355 fails because 'window' isn't used for "30z". +- 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 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 + 1 instead of 2. +- ex test 534 fails because .exrc isn't read in silent mode. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vim-da.1 b/runtime/doc/vim-da.1 new file mode 100644 index 0000000..6699741 --- /dev/null +++ b/runtime/doc/vim-da.1 @@ -0,0 +1,555 @@ +.TH VIM 1 "11. april 2006" +.SH NAVN +vim \- Vi IMproved, en programm鴕s teksteditor +.SH SYNOPSIS +.br +.B vim +[tilvalg] [fil ..] +.br +.B vim +[tilvalg] \- +.br +.B vim +[tilvalg] \-t tag +.br +.B vim +[tilvalg] \-q [fejlfil] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH BESKRIVELSE +.B Vim +er en teksteditor som er opad kompatibel med Vi. +Den kan bruges til at redigere alle slags ren tekst. +Den er s鎟lig nyttig til at redigere programmer. +.PP +Der er mange forbedringer over Vi: multiniveau fortryd, +multivinduer og -buffere, syntaksfremh鎣ning, redigering af kommandolinje, +fuldf鴕else af filnavn, onlinehj鎙p, visuel markering, osv. +Se ":help vi_diff.txt" for et overblik over forskellene mellem +.B Vim +og Vi. +.PP +Mens +.B Vim +k鴕er, kan der indhentes massere af hj鎙p fra online-hj鎙pesystemet, med +":help"-kommandoen. +Se ONLINEHJ芁P-sektionen nedenfor. +.PP +Oftest startes +.B Vim +for at redigere en enkelt fil med kommandoen +.PP + vim fil +.PP +Mere generelt startes +.B Vim +med: +.PP + vim [tilvalg] [filliste] +.PP +Hvis fillisten mangler, s startes editoren med en tom buffer. +Ellers kan 閚 af f鴏gende fire m錮er bruges til at v鎙ge en eller +flere filer som skal redigeres. +.TP 12 +fil .. +En liste over filnavne. +Den f鴕ste bliver den nuv鎟ende fil og l鎠es ind i bufferen. +Mark鴕en placeres p den f鴕ste linje i bufferen. +Du kan g til de andre filer med ":next"-kommandoen. Skriv "\-\-" foran +fillisten, for at redigere en fil som begynder med en bindestreg. +.TP +\- +Filen som skal redigeres l鎠es fra stdin. Kommandoer l鎠es fra stderr, hvilket +skal v鎟e en tty. +.TP +\-t {tag} +Filen som skal redigeres og den indledende mark鴕placering afh鎛ger af +et "tag", en slags g til-etiket. +{tag} opsl錽 i tags-filen, den tilknyttede fil bliver den nuv鎟ende +fil og den tilknyttede kommando udf鴕es. +Det bruges mest til C-programmer, hvor {tag} kunne v鎟e et +funktionsnavn. +Virkningen er at filen som indeholder funktionen bliver den nuv鎟ende fil +og mark鴕en placeres i begyndelsen af funktionen. +Se ":help tag\-commands". +.TP +\-q [fejlfil] +Start i quickFix-tilstand. +Filen [fejlfil] l鎠es og den f鴕ste fejl vises. +Hvis [fejlfil] udelades, s indhentes filnavnet fra 'errorfile'-valgmuligheden +(standard er "AztecC.Err" p Amiga, "errors.err" p andre +systemer). +Der kan hoppes til yderligere fejl med ":cn"-kommandoen. +Se ":help quickfix". +.PP +.B Vim +opf鴕er sig anderledes, afh鎛gig af navnet p kommandoen (eksekverbaren kan +stadig v鎟e den samme fil). +.TP 10 +vim +Den "normale" m錮e, alt er standard. +.TP +ex +Start i Ex-tilstand. +G til normal tilstand med ":vi"-kommandoen. +Det kan ogs g鴕es med "\-e"-argumentet. +.TP +view +Start i skrivebeskyttet tilstand. Du vil v鎟e beskyttet mod at skrive filerne. +Det kan ogs g鴕es med "\-R"-argumentet. +.TP +gvim gview +GUI-versionen. +Starter et nyt vindue. +Det kan ogs g鴕es med "\-g"-argumentet. +.TP +evim eview +GUI-versionen i easy-tilstand. +Starter et nyt vindue. +Det kan ogs g鴕es med "\-y"-argumentet. +.TP +rvim rview rgvim rgview +Som dem ovenfor, men med restriktioner. Det vil ikke v鎟e muligt at starte +skalkommandoer, eller at suspendere +.B Vim\c +\&. +Det kan ogs g鴕es med "\-Z"-argumentet. +.SH TILVALG +Tilvalgene kan gives i vilk錼lig r鎘kef鴏ge, f鴕 eller efter filnavnene. +Tilvalg uden et argument kan kombineres efter en enkelt bindestreg. +.TP 12 ++[nummer] +Ved den f鴕ste fil, placeres mark鴕en p linje "nummer". +Hvis "nummer" mangler, s placeres mark鴕en p den sidste linje. +.TP ++/{sti} +Ved den f鴕ste fil, placeres mark鴕en p linjen med den +f鴕ste forekomst af {sti}. +Se ":help search\-pattern" for tilg鎛gelige s鴊em鴑stre. +.TP ++{kommando} +.TP +\-c {kommando} +{kommando} udf鴕es efter den f鴕ste fil er blevet l鎠t. +{kommando} fortolkes som en Ex-kommando. +Hvis {kommando} indeholder mellemrum, s skal den omsluttes af +dobbelte citationstegn (det afh鎛ger af den skal der bruges). +Eksempel: vim "+set si" main.c +.br +Bem鎟k: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer. +.TP +\-S {fil} +{fil} bliver sourced efter den f鴕ste fil er blevet l鎠t. +Det svarer til \-c "source {fil}". +{fil} m ikke begynde med '\-'. +Hvis {fil} udelades, s bruges "Session.vim" (virker kun n錼 \-S er det sidste +argument). +.TP +\-\-cmd {kommando} +Ligesom at bruge "\-c", men kommandoen udf鴕es lige inden +behandlingen af vimrc-filer. +Du kan bruge op til 10 af disse kommandoer, uafh鎛gigt af "\-c"-kommandoer. +.TP +\-A +Hvis +.B Vim +blev kompileret med underst鴗telse af ARABIC til redigering af filer som er +orienteret h鴍re mod venstre og arabisk tastaturlayout, s starter tilvalget +.B Vim +i arabisk tilstand, dvs. 'arabic' s鎡tes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-b +Bin鎟 tilstand. +Der s鎡tes nogle f valgmuligheder som g鴕 det muligt at redigere en +bin鎟 eller eksekverbar fil. +.TP +\-C +Kompatibel. S鎡 'compatible'-valgmuligheden. +Det f錼 +.B Vim +til at opf鴕e sig mest som Vi, selvom der findes en .vimrc-fil. +.TP +\-d +Start i diff-tilstand. +Der skal v鎟e to, tre eller fire filnavneargumenter. +.B Vim +錬ner alle filerne og viser forskellene mellem dem. +Virker ligesom vimdiff(1). +.TP +\-d {enhed} +舃n {enhed} til brug som en terminal. +Kun p Amiga. +Eksempel: +"\-d con:20/30/600/150". +.TP +\-D +Fejlretning. G til fejlretningstilstand n錼 den f鴕ste kommando udf鴕es fra +et script. +.TP +\-e +Start +.B Vim +i Ex-tilstand, ligesom hvis "ex"-eksekverbaren blev kaldt. +.TP +\-E +Start +.B Vim +i forbedret Ex-tilstand, ligesom hvis "exim"-eksekverbaren blev kaldt. +.TP +\-f +Forgrund. I GUI-versionen, vil +.B Vim +ikke fork'e og frig鴕e fra skallen som den blev startet i. +P Amiga, genstartes +.B Vim +ikke for at 錬ne et nyt vindue. +Tilvalget b鴕 bruges n錼 +.B Vim +udf鴕es af et program der venter p at redigeringssession +bliver f鎟dig (f.eks. mail). +P Amiga virker ":sh"- og ":!"-kommandoerne ikke. +.TP +\-\-nofork +Forgrund. I GUI-versionen, vil +.B Vim +ikke fork'e og frig鴕e fra skallen som den blev startet i. +.TP +\-F +Hvis +.B Vim +blev kompileret med underst鴗telse af FKMAP til redigering af filer som er +orienteret h鴍re mod venstre og persisk tastaturlayout, s starter tilvalget +.B Vim +i persisk tilstand, dvs. 'fkmap' og 'rightleft' s鎡tes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-g +Hvis +.B Vim +blev kompileret med underst鴗telse af GUI, s aktiveres GUI'en af +denne valgmulighed. Hvis underst鴗telse af GUI ikke blev kompileret ind, +s gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-h +Giv lidt hj鎙p om kommandolinjeargumenterne og tilvalgene. +Herefter afsluttes +.B Vim\c +\&. +.TP +\-H +Hvis +.B Vim +blev kompileret med underst鴗telse af RIGHTLEFT til redigering af filer som er +orienteret h鴍re mod venstre og hebraisk tastaturlayout, s starter tilvalget +.B Vim +i hebraisk tilstand, dvs. 'hkmap' og 'rightleft' s鎡tes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-i {viminfo} +N錼 brug af viminfo-filen er aktiveret, s s鎡ter tilvalget det +filnavn som skal bruges, i stedet for standarden "~/.viminfo". +Det kan ogs bruges til at springe brugen af .viminfo-filen over, +ved at give navnet "NONE". +.TP +\-L +Samme som \-r. +.TP +\-l +Lisp-tilstand. +S鎡ter 'lisp'- og 'showmatch'-valgmulighederne til. +.TP +\-m +苙dring af filer er deaktiveret. +Nulstiller 'write'-valgmuligheden. +Du kan stadig 鎛dre bufferen, men det er ikke muligt at skrive en fil. +.TP +\-M +苙dringer tillades ikke. 'modifiable'- og 'write'-valgmulighederne fjernes, +s 鎛dringer ikke er tilladt og filer ikke kan skrives. Bem鎟k at +valgmulighederne kan s鎡tes for at g鴕e det muligt at foretage 鎛dringer. +.TP +\-N +No-compatible-tilstand. Nulstil 'compatible'-valgmuligheden. +Det f錼 +.B Vim +til at opf鴕e sig en smule bedre, men mindre Vi-kompatibel, selvom der ikke +findes en .vimrc-fil. +.TP +\-n +Der bruges ingen swap-fil. +Det er umuligt at gendanne efter programmet er holdt op med at virke. +God hvis du vil redigere en fil p et meget langsomt medie (f.eks. floppy). +Kan ogs g鴕es med ":set uc=0". +Kan fortrydes med ":set uc=200". +.TP +\-nb +Bliv en editor-server til NetBeans. Se dokumentationen for detaljer. +.TP +\-o[N] +舃n N vinduer stablet. +N錼 N udelades, s 錬nes 閠 vindue pr. fil. +.TP +\-O[N] +舃n N vinduer side om side. +N錼 N udelades, s 錬nes 閠 vindue pr. fil. +.TP +\-p[N] +舃n N fanebladssider. +N錼 N udelades, s 錬nes 閚 fanebladsside pr. fil. +.TP +\-R +Skrivebeskyttet tilstand. +\&'readonly'-valgmuligheden s鎡tes. +Du kan stadig redigere bufferen, men vil v鎟e forhindret i +fejlagtigt at overskrive en fil. +Hvis du vil overskrive en fil, s tilf鴍 et +udr錬stegn til Ex-kommandoen, som i ":w!". +\-R-tilvalget indeb鎟er ogs \-n-tilvalget (se ovenfor). +\&'readonly'-valgmuligheden kan sl錽 fra med ":set noro". +Se ":help 'readonly'". +.TP +\-r +Oplist swap-filer, med information om at bruge dem til gendannelse. +.TP +\-r {fil} +Gendannelsestilstand. +Swap-filen bruges til at gendanne en redigeringssession som holdt +op med at virke. Swap-filen er en fil med det samme filnavn som tekstfilen, +med ".swp" tilf鴍et i slutningen. +Se ":help recovery". +.TP +\-s +Stille tilstand. Kun n錼 der startes som "Ex" eller +n錼 "\-e"-tilvalget blev givet inden "\-s"-tilvalget. +.TP +\-s {scriptind} +Script-filen {scriptind} l鎠es. +Tegnene i filen fortolkes som havde du skrevet dem. +Det samme kan g鴕es med kommandoen ":source! {scriptind}". +Hvis slutningen af filen n錽 inden editoren afslutter, +s l鎠es yderligere tegn fra tastaturet. +.TP +\-T {terminal} +Fort鎙ler +.B Vim +navnet p terminalen som du bruger. +Kr鎣es kun n錼 den automatisk m錮e ikke virker. +Skal v鎟e en terminal som kendes af +.B Vim +(indbygget) eller defineret i termcap- eller terminfo-filen. +.TP +\-u {vimrc} +Brug kommandoerne i {vimrc}-filen til initialiseringer. +Alle de andre initialiseringer springes over. +Brug den til at redigere en s鎟lig slags filer. +Den kan ogs bruges til at springe alle initialiseringer over, +ved at give navnet "NONE". Se ":help initialization" i vim for flere detaljer. +.TP +\-U {gvimrc} +Brug kommandoerne i {gvimrc}-filen til GUI-initialiseringer. +Alle de andre GUI-initialiseringer springes over. +Den kan ogs bruges til at springe alle GUI-initialiseringer over, +ved at give navnet "NONE". Se ":help gui\-init" i vim for flere detaljer. +.TP +\-V[N] +Uddybende. Giv meddelelser om hvilke filer som er sourced og til l鎠ning og +skrivning af en viminfo-fil. Det valgfrie nummer N er v鎟dien af 'verbose'. +Standard er 10. +.TP +\-v +Start +.B Vim +i Vi-tilstand, ligesom eksekverbaren kaldet "vi". Det har kun virkning n錼 +eksekverbaren kaldes "ex". +.TP +\-w {scriptud} +Alle tegnene som du skrev optages i filen {scriptud}, indtil du afslutter +.B Vim\c +\&. +Det er nyttigt hvis du vil oprette en script-fil som skal bruges med +"vim \-s" eller ":source!". +Hvis {scriptud}-filen findes, s tilf鴍es tegnene til slutningen. +.TP +\-W {scriptud} +Ligesom \-w, men en eksisterende fil overskrives. +.TP +\-x +Brug kryptering n錼 der skrives filer. Sp鴕ger efter en krypteringsn鴊le. +.TP +\-X +Opret ikke forbindelse til X-serveren. Afkorter opstartstiden i en terminal, +men vinduets titel og udklipsholder bruges ikke. +.TP +\-y +Start +.B Vim +i easy-tilstand, ligesom hvis "evim"- eller "eview"-eksekverbarene blev kaldt. +F錼 +.B Vim +til at opf鴕e sig som en klik og skriv-editor. +.TP +\-Z +Restriktiv tilstand. Virker ligesom eksekverbaren som begynder med "r". +.TP +\-\- +Betegner slutningen af tilvalgene. +Argumenter efter dette h錸dteres som et filnavn. +Det kan bruges til at redigere et filnavn som begynder med et '\-'. +.TP +\-\-echo\-wid +Kun GTK GUI: Ekko vinduets id p stdout. +.TP +\-\-help +Giv en hj鎙pemeddelelse og afslut, ligesom "\-h". +.TP +\-\-literal +Tag filnavnets argumenter bogstaveligt, udvid ikke jokertegn. +Det har ingen virkning i Unix hvor skallen udvidder jokertegn. +.TP +\-\-noplugin +Spring indl鎠ning af plugins over. Indeb鎟es af \-u NONE. +.TP +\-\-remote +Opret forbindelse til en Vim-server og f den til at redigere filerne +som gives i resten af argumenterne. Hvis der ikke findes nogen server, +s gives der en advarsel og filerne redigeres i den nuv鎟ende Vim. +.TP +\-\-remote\-expr {udtryk} +Opret forbindelse til en Vim-server, evaluer +{udtryk} i den og udskriv resultatet p stdout. +.TP +\-\-remote\-send {n鴊ler} +Opret forbindelse til en Vim-server and send {n鴊ler} til den. +.TP +\-\-remote\-silent +Som \-\-remote, men uden advarslen n錼 der ikke findes nogen server. +.TP +\-\-remote\-wait +Som \-\-remote, men Vim afslutter ikke f鴕 filerne er blevet redigeret. +.TP +\-\-remote\-wait\-silent +Som \-\-remote\-wait, men uden advarslen n錼 der ikke findes nogen server. +.TP +\-\-serverlist +Oplist navnene p alle Vim-servere som der kan findes. +.TP +\-\-servername {navn} +Brug servernavnet {navn}. Bruges til den nuv鎟ende Vim, +medmindre det bruges med et \-\-remote-argument, +s er det navnet p serveren som der skal oprettes forbindelse til. +.TP +\-\-socketid {id} +Kun GTK GUI: Brug GtkPlug-mekanismen til at k鴕e gvim i et andet vindue. +.TP +\-\-version +Udskriv versionsinformation og afslut. +.SH ONLINEHJ芁P +Skriv ":help" i +.B Vim +for at begynde. +Skriv ":help emne" for at f hj鎙p til et bestemt emne. +F.eks.: ":help ZZ" for at f hj鎙pe til "ZZ"-kommandoen. +Brug <Tab> og CTRL-D for at fuldf鴕e emner (":help cmdline\-completion"). +Tags findes til at hoppe fra et sted til et andet (en slags hypertekst-links, +se ":help"). +Alle dokumentationsfiler kan vises p denne m錮e, f.eks. +":help syntax.txt". +.SH FILER +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim\c +-dokumentationsfilerne. +Brug ":help doc\-file\-list" for at f den fulde liste. +.TP +/usr/local/lib/vim/doc/tags +Tags-filen som bruges til at finde information i dokumentationsfilerne. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Systembrede syntaksinitialiseringer. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaksfiler til diverse sprog. +.TP +/usr/local/lib/vim/vimrc +Systembrede +.B Vim\c +-initialiseringer. +.TP +~/.vimrc +Dine personlige +.B Vim\c +-initialiseringer. +.TP +/usr/local/lib/vim/gvimrc +Systembrede gvim-initialiseringer. +.TP +~/.gvimrc +Dine personlige gvim-initialiseringer. +.TP +/usr/local/lib/vim/optwin.vim +Script som bruges til ":options"-kommandoen, +en god m錮e til at vise og s鎡te valgmuligheder. +.TP +/usr/local/lib/vim/menu.vim +Systembrede menu-initialiseringer til gvim. +.TP +/usr/local/lib/vim/bugreport.vim +Script til at generere en fejlrapport. Se ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script til at registrere filtypen ud fra navnet. Se ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script til at registrere filtypen ud fra indholdet. Se ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Filer som bruges til PostScript-udskrivning. +.PP +L鎠 VIM-hjemmesiden for seneste info: +.br +<URL:http://www.vim.org/> +.SH SE OGS +vimtutor(1) +.SH FORFATTER +Det meste af +.B Vim +blev lavet af Bram Moolenaar, med en masse hj鎙p fra andre. +Se ":help credits" i +.B Vim\c +\&. +.br +.B Vim +er baseret p Stevie, arbejdet p af: Tim Thompson, +Tony Andrews og G.R. (Fred) Walter. +Selvom der n鎠ten ikke er noget af den originale kode tilbage. +.SH FEJL +Formodentligt. +Se ":help todo" for en liste over kendte problemer. +.PP +Bem鎟k at flere ting som af nogle kan anses som v鎟ende fejl, +faktisk er pga. en for n鎟 reproduktion af Vi's opf鴕sel. +Og hvis du t鎛ker at andre ting er fejl "fordi Vi g鴕 det anderledes", +s kig n鎟mere p vi_diff.txt-filen (eller skriv :help vi_diff.txt i Vim). +Se ogs 'compatible'- og 'cpoptions'-valgmulighederne. diff --git a/runtime/doc/vim-da.UTF-8.1 b/runtime/doc/vim-da.UTF-8.1 new file mode 100644 index 0000000..97e06a0 --- /dev/null +++ b/runtime/doc/vim-da.UTF-8.1 @@ -0,0 +1,555 @@ +.TH VIM 1 "11. april 2006" +.SH NAVN +vim \- Vi IMproved, en programm酶rs teksteditor +.SH SYNOPSIS +.br +.B vim +[tilvalg] [fil ..] +.br +.B vim +[tilvalg] \- +.br +.B vim +[tilvalg] \-t tag +.br +.B vim +[tilvalg] \-q [fejlfil] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH BESKRIVELSE +.B Vim +er en teksteditor som er opad kompatibel med Vi. +Den kan bruges til at redigere alle slags ren tekst. +Den er s忙rlig nyttig til at redigere programmer. +.PP +Der er mange forbedringer over Vi: multiniveau fortryd, +multivinduer og -buffere, syntaksfremh忙vning, redigering af kommandolinje, +fuldf酶relse af filnavn, onlinehj忙lp, visuel markering, osv. +Se ":help vi_diff.txt" for et overblik over forskellene mellem +.B Vim +og Vi. +.PP +Mens +.B Vim +k酶rer, kan der indhentes massere af hj忙lp fra online-hj忙lpesystemet, med +":help"-kommandoen. +Se ONLINEHJ脝LP-sektionen nedenfor. +.PP +Oftest startes +.B Vim +for at redigere en enkelt fil med kommandoen +.PP + vim fil +.PP +Mere generelt startes +.B Vim +med: +.PP + vim [tilvalg] [filliste] +.PP +Hvis fillisten mangler, s氓 startes editoren med en tom buffer. +Ellers kan 茅n af f酶lgende fire m氓der bruges til at v忙lge en eller +flere filer som skal redigeres. +.TP 12 +fil .. +En liste over filnavne. +Den f酶rste bliver den nuv忙rende fil og l忙ses ind i bufferen. +Mark酶ren placeres p氓 den f酶rste linje i bufferen. +Du kan g氓 til de andre filer med ":next"-kommandoen. Skriv "\-\-" foran +fillisten, for at redigere en fil som begynder med en bindestreg. +.TP +\- +Filen som skal redigeres l忙ses fra stdin. Kommandoer l忙ses fra stderr, hvilket +skal v忙re en tty. +.TP +\-t {tag} +Filen som skal redigeres og den indledende mark酶rplacering afh忙nger af +et "tag", en slags g氓 til-etiket. +{tag} opsl氓s i tags-filen, den tilknyttede fil bliver den nuv忙rende +fil og den tilknyttede kommando udf酶res. +Det bruges mest til C-programmer, hvor {tag} kunne v忙re et +funktionsnavn. +Virkningen er at filen som indeholder funktionen bliver den nuv忙rende fil +og mark酶ren placeres i begyndelsen af funktionen. +Se ":help tag\-commands". +.TP +\-q [fejlfil] +Start i quickFix-tilstand. +Filen [fejlfil] l忙ses og den f酶rste fejl vises. +Hvis [fejlfil] udelades, s氓 indhentes filnavnet fra 'errorfile'-valgmuligheden +(standard er "AztecC.Err" p氓 Amiga, "errors.err" p氓 andre +systemer). +Der kan hoppes til yderligere fejl med ":cn"-kommandoen. +Se ":help quickfix". +.PP +.B Vim +opf酶rer sig anderledes, afh忙ngig af navnet p氓 kommandoen (eksekverbaren kan +stadig v忙re den samme fil). +.TP 10 +vim +Den "normale" m氓de, alt er standard. +.TP +ex +Start i Ex-tilstand. +G氓 til normal tilstand med ":vi"-kommandoen. +Det kan ogs氓 g酶res med "\-e"-argumentet. +.TP +view +Start i skrivebeskyttet tilstand. Du vil v忙re beskyttet mod at skrive filerne. +Det kan ogs氓 g酶res med "\-R"-argumentet. +.TP +gvim gview +GUI-versionen. +Starter et nyt vindue. +Det kan ogs氓 g酶res med "\-g"-argumentet. +.TP +evim eview +GUI-versionen i easy-tilstand. +Starter et nyt vindue. +Det kan ogs氓 g酶res med "\-y"-argumentet. +.TP +rvim rview rgvim rgview +Som dem ovenfor, men med restriktioner. Det vil ikke v忙re muligt at starte +skalkommandoer, eller at suspendere +.B Vim\c +\&. +Det kan ogs氓 g酶res med "\-Z"-argumentet. +.SH TILVALG +Tilvalgene kan gives i vilk氓rlig r忙kkef酶lge, f酶r eller efter filnavnene. +Tilvalg uden et argument kan kombineres efter en enkelt bindestreg. +.TP 12 ++[nummer] +Ved den f酶rste fil, placeres mark酶ren p氓 linje "nummer". +Hvis "nummer" mangler, s氓 placeres mark酶ren p氓 den sidste linje. +.TP ++/{sti} +Ved den f酶rste fil, placeres mark酶ren p氓 linjen med den +f酶rste forekomst af {sti}. +Se ":help search\-pattern" for tilg忙ngelige s酶gem酶nstre. +.TP ++{kommando} +.TP +\-c {kommando} +{kommando} udf酶res efter den f酶rste fil er blevet l忙st. +{kommando} fortolkes som en Ex-kommando. +Hvis {kommando} indeholder mellemrum, s氓 skal den omsluttes af +dobbelte citationstegn (det afh忙nger af den skal der bruges). +Eksempel: vim "+set si" main.c +.br +Bem忙rk: Du kan bruge op til 10 "+"- eller "\-c"-kommandoer. +.TP +\-S {fil} +{fil} bliver sourced efter den f酶rste fil er blevet l忙st. +Det svarer til \-c "source {fil}". +{fil} m氓 ikke begynde med '\-'. +Hvis {fil} udelades, s氓 bruges "Session.vim" (virker kun n氓r \-S er det sidste +argument). +.TP +\-\-cmd {kommando} +Ligesom at bruge "\-c", men kommandoen udf酶res lige inden +behandlingen af vimrc-filer. +Du kan bruge op til 10 af disse kommandoer, uafh忙ngigt af "\-c"-kommandoer. +.TP +\-A +Hvis +.B Vim +blev kompileret med underst酶ttelse af ARABIC til redigering af filer som er +orienteret h酶jre mod venstre og arabisk tastaturlayout, s氓 starter tilvalget +.B Vim +i arabisk tilstand, dvs. 'arabic' s忙ttes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-b +Bin忙r tilstand. +Der s忙ttes nogle f氓 valgmuligheder som g酶r det muligt at redigere en +bin忙r eller eksekverbar fil. +.TP +\-C +Kompatibel. S忙t 'compatible'-valgmuligheden. +Det f氓r +.B Vim +til at opf酶re sig mest som Vi, selvom der findes en .vimrc-fil. +.TP +\-d +Start i diff-tilstand. +Der skal v忙re to, tre eller fire filnavneargumenter. +.B Vim +氓bner alle filerne og viser forskellene mellem dem. +Virker ligesom vimdiff(1). +.TP +\-d {enhed} +脜bn {enhed} til brug som en terminal. +Kun p氓 Amiga. +Eksempel: +"\-d con:20/30/600/150". +.TP +\-D +Fejlretning. G氓 til fejlretningstilstand n氓r den f酶rste kommando udf酶res fra +et script. +.TP +\-e +Start +.B Vim +i Ex-tilstand, ligesom hvis "ex"-eksekverbaren blev kaldt. +.TP +\-E +Start +.B Vim +i forbedret Ex-tilstand, ligesom hvis "exim"-eksekverbaren blev kaldt. +.TP +\-f +Forgrund. I GUI-versionen, vil +.B Vim +ikke fork'e og frig酶re fra skallen som den blev startet i. +P氓 Amiga, genstartes +.B Vim +ikke for at 氓bne et nyt vindue. +Tilvalget b酶r bruges n氓r +.B Vim +udf酶res af et program der venter p氓 at redigeringssession +bliver f忙rdig (f.eks. mail). +P氓 Amiga virker ":sh"- og ":!"-kommandoerne ikke. +.TP +\-\-nofork +Forgrund. I GUI-versionen, vil +.B Vim +ikke fork'e og frig酶re fra skallen som den blev startet i. +.TP +\-F +Hvis +.B Vim +blev kompileret med underst酶ttelse af FKMAP til redigering af filer som er +orienteret h酶jre mod venstre og persisk tastaturlayout, s氓 starter tilvalget +.B Vim +i persisk tilstand, dvs. 'fkmap' og 'rightleft' s忙ttes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-g +Hvis +.B Vim +blev kompileret med underst酶ttelse af GUI, s氓 aktiveres GUI'en af +denne valgmulighed. Hvis underst酶ttelse af GUI ikke blev kompileret ind, +s氓 gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-h +Giv lidt hj忙lp om kommandolinjeargumenterne og tilvalgene. +Herefter afsluttes +.B Vim\c +\&. +.TP +\-H +Hvis +.B Vim +blev kompileret med underst酶ttelse af RIGHTLEFT til redigering af filer som er +orienteret h酶jre mod venstre og hebraisk tastaturlayout, s氓 starter tilvalget +.B Vim +i hebraisk tilstand, dvs. 'hkmap' og 'rightleft' s忙ttes. +Ellers gives en fejlmeddelelse og +.B Vim +afbrydes. +.TP +\-i {viminfo} +N氓r brug af viminfo-filen er aktiveret, s氓 s忙tter tilvalget det +filnavn som skal bruges, i stedet for standarden "~/.viminfo". +Det kan ogs氓 bruges til at springe brugen af .viminfo-filen over, +ved at give navnet "NONE". +.TP +\-L +Samme som \-r. +.TP +\-l +Lisp-tilstand. +S忙tter 'lisp'- og 'showmatch'-valgmulighederne til. +.TP +\-m +脝ndring af filer er deaktiveret. +Nulstiller 'write'-valgmuligheden. +Du kan stadig 忙ndre bufferen, men det er ikke muligt at skrive en fil. +.TP +\-M +脝ndringer tillades ikke. 'modifiable'- og 'write'-valgmulighederne fjernes, +s氓 忙ndringer ikke er tilladt og filer ikke kan skrives. Bem忙rk at +valgmulighederne kan s忙ttes for at g酶re det muligt at foretage 忙ndringer. +.TP +\-N +No-compatible-tilstand. Nulstil 'compatible'-valgmuligheden. +Det f氓r +.B Vim +til at opf酶re sig en smule bedre, men mindre Vi-kompatibel, selvom der ikke +findes en .vimrc-fil. +.TP +\-n +Der bruges ingen swap-fil. +Det er umuligt at gendanne efter programmet er holdt op med at virke. +God hvis du vil redigere en fil p氓 et meget langsomt medie (f.eks. floppy). +Kan ogs氓 g酶res med ":set uc=0". +Kan fortrydes med ":set uc=200". +.TP +\-nb +Bliv en editor-server til NetBeans. Se dokumentationen for detaljer. +.TP +\-o[N] +脜bn N vinduer stablet. +N氓r N udelades, s氓 氓bnes 茅t vindue pr. fil. +.TP +\-O[N] +脜bn N vinduer side om side. +N氓r N udelades, s氓 氓bnes 茅t vindue pr. fil. +.TP +\-p[N] +脜bn N fanebladssider. +N氓r N udelades, s氓 氓bnes 茅n fanebladsside pr. fil. +.TP +\-R +Skrivebeskyttet tilstand. +\&'readonly'-valgmuligheden s忙ttes. +Du kan stadig redigere bufferen, men vil v忙re forhindret i +fejlagtigt at overskrive en fil. +Hvis du vil overskrive en fil, s氓 tilf酶j et +udr氓bstegn til Ex-kommandoen, som i ":w!". +\-R-tilvalget indeb忙rer ogs氓 \-n-tilvalget (se ovenfor). +\&'readonly'-valgmuligheden kan sl氓s fra med ":set noro". +Se ":help 'readonly'". +.TP +\-r +Oplist swap-filer, med information om at bruge dem til gendannelse. +.TP +\-r {fil} +Gendannelsestilstand. +Swap-filen bruges til at gendanne en redigeringssession som holdt +op med at virke. Swap-filen er en fil med det samme filnavn som tekstfilen, +med ".swp" tilf酶jet i slutningen. +Se ":help recovery". +.TP +\-s +Stille tilstand. Kun n氓r der startes som "Ex" eller +n氓r "\-e"-tilvalget blev givet inden "\-s"-tilvalget. +.TP +\-s {scriptind} +Script-filen {scriptind} l忙ses. +Tegnene i filen fortolkes som havde du skrevet dem. +Det samme kan g酶res med kommandoen ":source! {scriptind}". +Hvis slutningen af filen n氓s inden editoren afslutter, +s氓 l忙ses yderligere tegn fra tastaturet. +.TP +\-T {terminal} +Fort忙ller +.B Vim +navnet p氓 terminalen som du bruger. +Kr忙ves kun n氓r den automatisk m氓de ikke virker. +Skal v忙re en terminal som kendes af +.B Vim +(indbygget) eller defineret i termcap- eller terminfo-filen. +.TP +\-u {vimrc} +Brug kommandoerne i {vimrc}-filen til initialiseringer. +Alle de andre initialiseringer springes over. +Brug den til at redigere en s忙rlig slags filer. +Den kan ogs氓 bruges til at springe alle initialiseringer over, +ved at give navnet "NONE". Se ":help initialization" i vim for flere detaljer. +.TP +\-U {gvimrc} +Brug kommandoerne i {gvimrc}-filen til GUI-initialiseringer. +Alle de andre GUI-initialiseringer springes over. +Den kan ogs氓 bruges til at springe alle GUI-initialiseringer over, +ved at give navnet "NONE". Se ":help gui\-init" i vim for flere detaljer. +.TP +\-V[N] +Uddybende. Giv meddelelser om hvilke filer som er sourced og til l忙sning og +skrivning af en viminfo-fil. Det valgfrie nummer N er v忙rdien af 'verbose'. +Standard er 10. +.TP +\-v +Start +.B Vim +i Vi-tilstand, ligesom eksekverbaren kaldet "vi". Det har kun virkning n氓r +eksekverbaren kaldes "ex". +.TP +\-w {scriptud} +Alle tegnene som du skrev optages i filen {scriptud}, indtil du afslutter +.B Vim\c +\&. +Det er nyttigt hvis du vil oprette en script-fil som skal bruges med +"vim \-s" eller ":source!". +Hvis {scriptud}-filen findes, s氓 tilf酶jes tegnene til slutningen. +.TP +\-W {scriptud} +Ligesom \-w, men en eksisterende fil overskrives. +.TP +\-x +Brug kryptering n氓r der skrives filer. Sp酶rger efter en krypteringsn酶gle. +.TP +\-X +Opret ikke forbindelse til X-serveren. Afkorter opstartstiden i en terminal, +men vinduets titel og udklipsholder bruges ikke. +.TP +\-y +Start +.B Vim +i easy-tilstand, ligesom hvis "evim"- eller "eview"-eksekverbarene blev kaldt. +F氓r +.B Vim +til at opf酶re sig som en klik og skriv-editor. +.TP +\-Z +Restriktiv tilstand. Virker ligesom eksekverbaren som begynder med "r". +.TP +\-\- +Betegner slutningen af tilvalgene. +Argumenter efter dette h氓ndteres som et filnavn. +Det kan bruges til at redigere et filnavn som begynder med et '\-'. +.TP +\-\-echo\-wid +Kun GTK GUI: Ekko vinduets id p氓 stdout. +.TP +\-\-help +Giv en hj忙lpemeddelelse og afslut, ligesom "\-h". +.TP +\-\-literal +Tag filnavnets argumenter bogstaveligt, udvid ikke jokertegn. +Det har ingen virkning i Unix hvor skallen udvidder jokertegn. +.TP +\-\-noplugin +Spring indl忙sning af plugins over. Indeb忙res af \-u NONE. +.TP +\-\-remote +Opret forbindelse til en Vim-server og f氓 den til at redigere filerne +som gives i resten af argumenterne. Hvis der ikke findes nogen server, +s氓 gives der en advarsel og filerne redigeres i den nuv忙rende Vim. +.TP +\-\-remote\-expr {udtryk} +Opret forbindelse til en Vim-server, evaluer +{udtryk} i den og udskriv resultatet p氓 stdout. +.TP +\-\-remote\-send {n酶gler} +Opret forbindelse til en Vim-server and send {n酶gler} til den. +.TP +\-\-remote\-silent +Som \-\-remote, men uden advarslen n氓r der ikke findes nogen server. +.TP +\-\-remote\-wait +Som \-\-remote, men Vim afslutter ikke f酶r filerne er blevet redigeret. +.TP +\-\-remote\-wait\-silent +Som \-\-remote\-wait, men uden advarslen n氓r der ikke findes nogen server. +.TP +\-\-serverlist +Oplist navnene p氓 alle Vim-servere som der kan findes. +.TP +\-\-servername {navn} +Brug servernavnet {navn}. Bruges til den nuv忙rende Vim, +medmindre det bruges med et \-\-remote-argument, +s氓 er det navnet p氓 serveren som der skal oprettes forbindelse til. +.TP +\-\-socketid {id} +Kun GTK GUI: Brug GtkPlug-mekanismen til at k酶re gvim i et andet vindue. +.TP +\-\-version +Udskriv versionsinformation og afslut. +.SH ONLINEHJ脝LP +Skriv ":help" i +.B Vim +for at begynde. +Skriv ":help emne" for at f氓 hj忙lp til et bestemt emne. +F.eks.: ":help ZZ" for at f氓 hj忙lpe til "ZZ"-kommandoen. +Brug <Tab> og CTRL-D for at fuldf酶re emner (":help cmdline\-completion"). +Tags findes til at hoppe fra et sted til et andet (en slags hypertekst-links, +se ":help"). +Alle dokumentationsfiler kan vises p氓 denne m氓de, f.eks. +":help syntax.txt". +.SH FILER +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim\c +-dokumentationsfilerne. +Brug ":help doc\-file\-list" for at f氓 den fulde liste. +.TP +/usr/local/lib/vim/doc/tags +Tags-filen som bruges til at finde information i dokumentationsfilerne. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Systembrede syntaksinitialiseringer. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaksfiler til diverse sprog. +.TP +/usr/local/lib/vim/vimrc +Systembrede +.B Vim\c +-initialiseringer. +.TP +~/.vimrc +Dine personlige +.B Vim\c +-initialiseringer. +.TP +/usr/local/lib/vim/gvimrc +Systembrede gvim-initialiseringer. +.TP +~/.gvimrc +Dine personlige gvim-initialiseringer. +.TP +/usr/local/lib/vim/optwin.vim +Script som bruges til ":options"-kommandoen, +en god m氓de til at vise og s忙tte valgmuligheder. +.TP +/usr/local/lib/vim/menu.vim +Systembrede menu-initialiseringer til gvim. +.TP +/usr/local/lib/vim/bugreport.vim +Script til at generere en fejlrapport. Se ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script til at registrere filtypen ud fra navnet. Se ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script til at registrere filtypen ud fra indholdet. Se ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Filer som bruges til PostScript-udskrivning. +.PP +L忙s VIM-hjemmesiden for seneste info: +.br +<URL:http://www.vim.org/> +.SH SE OGS脜 +vimtutor(1) +.SH FORFATTER +Det meste af +.B Vim +blev lavet af Bram Moolenaar, med en masse hj忙lp fra andre. +Se ":help credits" i +.B Vim\c +\&. +.br +.B Vim +er baseret p氓 Stevie, arbejdet p氓 af: Tim Thompson, +Tony Andrews og G.R. (Fred) Walter. +Selvom der n忙sten ikke er noget af den originale kode tilbage. +.SH FEJL +Formodentligt. +Se ":help todo" for en liste over kendte problemer. +.PP +Bem忙rk at flere ting som af nogle kan anses som v忙rende fejl, +faktisk er pga. en for n忙r reproduktion af Vi's opf酶rsel. +Og hvis du t忙nker at andre ting er fejl "fordi Vi g酶r det anderledes", +s氓 kig n忙rmere p氓 vi_diff.txt-filen (eller skriv :help vi_diff.txt i Vim). +Se ogs氓 'compatible'- og 'cpoptions'-valgmulighederne. diff --git a/runtime/doc/vim-de.1 b/runtime/doc/vim-de.1 new file mode 100644 index 0000000..0ba4938 --- /dev/null +++ b/runtime/doc/vim-de.1 @@ -0,0 +1,478 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.\" Translated by bw1 (2008) and Florian Rehnisch <fm-r@gmx.de> (2012) +.\" Kudos to the folks on vim-dev and debian-l10n-german +.TH VIM 1 "2006 Apr 11" +.SH BEZEICHNUNG +vim \- Vi IMproved, ein Text\-Editor f黵 Programmierer +.SH 蹷ERSICHT +.br +\fBvim\fP [Optionen] [Datei ...] +.br +\fBvim\fP [Optionen] \- +.br +\fBvim\fP [Optionen] \-t Tag +.br +\fBvim\fP [Optionen] \-q [Fehlerdatei] +.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 BESCHREIBUNG +\fBVim\fP ist ein Text\-Editor, der aufw鋜tskompatibel zu Vi ist. Er kann +verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders +n黷zlich, um Programme zu bearbeiten. +.PP +Vim hat einige Erweiterungen gegen黚er Vi, z.B.: R點kg鋘gigmachen in +mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +Bearbeiten der Befehlszeile, Dateinamenerg鋘zung, eingebaute Hilfe, visuelle +Auswahl, usw. ... Siehe :help vi_diff.txt f黵 eine 躡ersicht der +Unterschiede zwischen \fBVim\fP und Vi. +.PP +Im laufenden \fBVim\fP kann mit dem Befehl :help viel Hilfe durch das +eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE +weiter unten. +.PP +Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Befehl gestartet: +.PP + vim Datei +.PP +Allgemeiner betrachtet, wird \fBVim\fP folgenderma遝n gestartet: +.PP + vim [Optionen] [Dateiliste] +.PP +Bei einer fehlenden Dateiliste startet der Editor mit einem leeren +Puffer. Andernfalls werden nach den folgenden vier M鰃lichkeiten eine oder +mehrere Dateien bearbeitet: +.TP 12 +Datei ... +Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und +zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers +platziert. Zu den anderen Dateien kann mit dem Befehl :next gelangt +werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen +Sie der Dateiliste 籠-\- voran. +.TP +\- +Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle +werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein +sollte. +.TP +\-t {Tag} +Die zu editierende Datei und die anf鋘gliche Cursor\-Position h鋘gen von +einem 籘ag ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei +nachgeschlagen, die zugeh鰎ige Datei wird zur aktuellen und der zugeh鰎ige +Befehl wird ausgef黨rt. Dies wird meistens f黵 Programme in der Sprache 籆 +benutzt, wobei {Tag} ein Funktionsname sein k鰊nte. Die Wirkung dieses +Befehls ist, dass die Datei, die die Funktion enth鋖t, als aktuelle im +Editor ge鰂fnet und angezeigt wird und der Cursor auf dem Beginn der +Funktion positioniert wird. Siehe :help tag\-commands. +.TP +\-q [Fehlerdatei] +Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der +erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der +Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies +vorgabem溥ig 籄ztecC.Err, sowie "errors.err bei anderen). Weitere Fehler +k鰊nen mit dem :cn玕-Befehl angesprungen werden. Siehe ":help quickfix. +.PP +\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu +starten (die ausf黨rbare Datei kann dieselbe sein). +.TP 10 +vim +der 籲ormale Weg, alles ist standardm溥ig +.TP +ex +Startet im Ex\-Modus. Mit dem Befehl :vi gelangt man in den normalen +Modus. Funktioniert auch mit dem Argument 籠-e. +.TP +view +Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem 躡erschreiben +gesch黷zt. Dasselbe wird mit dem Parameter 籠-R erreicht. +.TP +gvim gview +Die grafische Version: 謋fnet ein neues Fenster. Dasselbe wird mit dem +Parameter 籠-g erreicht. +.TP +evim eview +Die grafische Version im einfachen Modus: 謋fnet ein neues Fenster. Dasselbe +wird mit dem Parameter 籠-y erreicht. +.TP +rvim rview rgvim rgview +Wie die obigen, aber mit Beschr鋘kungen: Es ist nicht m鰃lich, Shell\-Befehle +aufzurufen oder mit Unterbrechung in eine Shell zur點kzuspringen. Dasselbe +wird mit dem Parameter 籠-Z erreicht. +.SH OPTIONEN +Die Optionen k鰊nen in beliebiger Reihenfolge vor oder nach den Dateinamen +angegeben werden. Optionen ohne Parameter k鰊nen hinter einem einzigen +Bindestrich gruppiert werden. +.TP 12 ++[Nummer] +In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls +[Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei +gesetzt. +.TP ++/{Suchmuster} +In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} +gesetzt. Siehe :help search\-pattern. +.TP ++{Befehl} +.TP +\-c {Befehl} +{Befehl} wird nach dem Lesen der ersten Datei ausgef黨rt. Als {Befehl} wird +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles +in Anf黨rungszeichen gesetzt werden (h鋘gt von der verwendeten Shell +ab). Beispiel: vim "+set si" main.c +.br +Anmerkung: Sie k鰊nen bis zu 10 +玕- oder "\-c玕-Befehle verwenden. +.TP +\-S {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgef黨rt. Dies entspricht 籠-c +"source {Datei}". {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird 籗ession.vim verwendet +(Funktioniert nur, wenn 籠-S als letzter Parameter steht). +.TP +\-\-cmd {Befehl} +Wie 籠-c, aber dieser Befehl wird vor allen VimRC\-Dateien ausgef黨rt. Sie +k鰊nen unabh鋘gig von den 籠-c玕-Befehlen bis zu 10 dieser Befehle verwenden. +.TP +\-A +Falls \fBVim\fP mit Unterst黷zung f黵 das Schreiben von rechts nach links und +arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser +Parameter den Modus f黵s Arabische (:set arabic). Anderenfalls beendet sich +\fBVim\fP mit einer Fehlermeldung. +.TP +b +Bin鋜er Modus: Es werden einige Variablen gesetzt, sodass es m鰃lich ist, +eine bin鋜e oder ausf黨rbare Datei zu bearbeiten. +.TP +\-C +Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten +sehr 鋒nlich zu Vi, selbst wenn eine VimRC\-Datei existiert. +.TP +\-d +Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als +Parameter 黚ergeben werden. \fBVim\fP 鰂fnet sie alle und zeigt die +Unterschiede an. Arbeitet wie vimdiff(1). +.TP +\-d {Ger鋞} +謋fnet das {Ger鋞}, um es als Terminal zu nutzen. Nur f黵 AmigaOS. Beispiel: +"\-d con:20/30/600/150". +.TP +D +Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem +Skript ausgef黨rt wird. +.TP +\-e +Startet \fBVim\fP im Ex\-Modus, als w黵de als ausf黨rbare Datei 籩x aufgerufen. +.TP +\-E +Startet \fBVim\fP im erweiterten Ex\-Modus, als w黵de die ausf黨rbare Datei als +籩xim aufgerufen. +.TP +\-f +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +l鰏t sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird +kein neues Fenster ge鰂fnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: +mail). Bei AmigaOS funktionieren die Befehle :sh und ":! nicht. +.TP +\-\-nofork +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +l鰏t sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\-F +Wenn \fBVim\fP mit FKMAP\-Unterst黷zung f黵 das Schreiben von rechts nach links +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, +d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +\fBVim\fP mit einer Fehlermeldung ab. +.TP +\-g +Falls \fBVim\fP mit GUI\-Unterst黷zung kompiliert wurde, wird die GUI +aktiviert. Falls keine GUI\-Unterst黷zung einkompiliert wurde, wird mit einer +Fehlermeldung abgebrochen. +.TP +\-h +Gibt eine kleine Hilfe f黵 die Befehlszeilenparameter aus. Danach beendet +sich \fBVim.\fP +.TP +\-H +Hebr鋓sch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterst黷zung f黵 das Schreiben +von rechts nach links und hebr鋓scher Tastaturbelegung kompiliert wurde, +werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet +sich \fBVim\fP mit einer Fehlermeldung. +.TP +\-i {VimInfo} +Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt 粇/.viminfo die +angegebene Datei. Es ist auch m鰃lich die Verwendung einer VimInfo\-Datei +durch Angabe des Dateinamen 籒ONE zu verhindern, +.TP +\-L +dasselbe wie 籠-r +.TP +\-l +Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. +.TP +\-m +Deaktiviert das Ver鋘dern von Dateien, indem die Option 'write' gel鰏cht +wird. Der Puffer kann ver鋘dert werden, nur das Schreiben einer Datei ist +nicht m鰃lich. +.TP +\-M +Keine Ver鋘derungen erlaubt: Die Optionen 'modifiable' und 'write' werden +gel鰏cht, so dass 膎derungen nicht erlaubt sind und Dateien nicht +geschrieben werden k鰊nen. Man beachte, dass diese Optionen ('modifiable', +\&'write') dennnoch nachtr鋑lich zum Erlauben von 膎derungen gesetzt werden +k鰊nen. +.TP +\-N +Nicht\-kompatibler Modus: L鰏cht die Option 'compatible'. Dies veranlasst +\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, +selbst wenn es keine VimRC\-Datei gibt. +.TP +\-n +Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz +ist nicht m鰃lich. Auf einem langsamen Medium (Diskette) kann diese +Einstellung n黷zlich sein. Kann auch mit 籹et uc=0 erreicht werden; kann +mit 籹et uc=200 aufgehoben werden. +.TP +\-nb +\fBVim\fP fungiert als Server f黵 NetBeans. Details siehe Dokumentation. +.TP +\-o[N] +謋fnet [N] Fenster 黚ereinander. Wenn keine Zahl angegeben wird, 鰂fne ein +Fenster pro Datei. +.TP +\-O[N] +謋fnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, 鰂fne ein +Fenster pro Datei. +.TP +\-p[N] +謋fnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, 鰂fne eine +Reiterseite pro Datei. +.TP +\-R +Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch +bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu +黚erschreiben. Wenn Sie wirklich eine Datei 黚erschreiben wollen, f黦en Sie +dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in :w!). Die Option "\-R +bedingt die Option 籠-n (siehe oben). Die Option 'readonly' kann durch ":set +noro gel鰏cht werden. Siehe :help 'readonly'. +.TP +\-r +Listet die Auslagerungsdateien und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung. +.TP +\-r {Datei} +Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung +verwendet und hat denselben Dateinamen wie die Text\-Datei + .swp. Siehe +":help recovery. +.TP +\-s +Der stille Modus: Nur wenn die ausf黨rbare Datei als 籩x aufgerufen wird +oder vor 籠-s die Option "\-e gegeben wird. +.TP +\-s {Eingabeskript} +Die Datei {Eingabeskript} wird gelesen und ausgef黨rt, als w黵den Sie die +Zeichen in ihr tippen. Dasselbe kann mit dem Befehl :source! +{Eingabeskript} erreicht werden. Wird das Ende der Datei vor dem Beenden +des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. +.TP +\-T {Terminal} +Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: +(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. +.TP +\-u {VimRC} +Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Initialisierungen werden 黚ersprungen. Benutzen Sie dies, um eine besondere +Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle +Initialisierungen zu 黚erspringen, indem der Name 籒ONE angegeben wird. F黵 +weitere Einzelheiten siehe :help initialisation innerhalb von Vim. +.TP +\-U {GvimRC} +Benutzt die Befehle in der Datei {GvimRC} f黵 die Initialisierung der +grafischen Oberfl鋍he. Alle anderen Initialisierungen werden +黚ersprungen. Dies kann ebenfalls benutzt werden, um alle +GUI\-Initialisierungen zu 黚erspringen, indem der Name 籒ONE angegeben +wird. Siehe :help gui\-init innerhalb von Vim f黵 weitere Einzelheiten. +.TP +\-V[N] +Ausf黨rlich (verbose): Gibt Meldungen dar黚er, welche Befehlsdateien +eingelesen werden, und 黚er das Lesen und Schreiben einer VimInfo\-Datei. Die +optionale Zahl N ist der Wert f黵 'verbose'. Vorgabe ist 10. +.TP +\-v +Startet \fBVim\fP im Vi\-Modus, so als w黵de die ausf黨rbare Datei mit 籿i +aufgerufen. Dies wirkt sich nur aus, wenn die ausf黨rbare Datei als 籩x +aufgerufen wird. +.TP +\-w {Ausgabeskript} +Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist n黷zlich, falls Sie +eine Skript\-Datei zum Benutzen mit 籿im \-s oder ":source! erzeugen +wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen +angeh鋘gt. +.TP +\-W {Ausgabeskript} +Wie \-w, aber eine bereits vorhandene Datei wird 黚erschrieben. +.TP +\-x +Benutzt beim Schreiben von Dateien eine Verschl黶selung. Fragt nach dem +Schl黶sel. +.TP +\-X +F黨rt keine Verbindung zum X\-Server durch. Dadurch verk黵zt sich die +Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +verwendet. +.TP +\-y +Startet \fBVim\fP im einfachen Modus, als w黵de die ausf黨rbare Datei mit +籩vim oder 籩view aufgerufen. \fBVim\fP verh鋖t sich dann wie ein Editor zum +Klicken und Tippen. +.TP +\-Z +Eingeschr鋘kter Modus: Funktioniert, als w黵de der Name der ausf黨rbaren +Datei mit 籸 beginnen. +.TP +\-\- +Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen +behandelt. Dies kann benutzt werden, um einen Dateinamen mit 籠- am Anfang +zu verwenden. +.TP +\-\-echo\-wid +Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. +.TP +\-\-help +Gibt eine Hilfe\-Nachricht aus und beendet, wie 籠-h. +.TP +\-\-literal +Nimmt die Dateinamen so wie sie sind und vervollst鋘digt sie nicht nach +Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die +Metazeichen expandiert. +.TP +\-\-noplugin +Lade keine Plugins. Impliziert durch 籠-u NONE. +.TP +\-\-remote +Verbindet mit einem Vim\-Server und l鋝st ihn die in den restlichen +Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, +f黨rt dies zu einer Warnmeldung und die Dateien werden im gegenw鋜tigen Vim +zum Bearbeiten ge鰂fnet. +.TP +\-\-remote\-expr {Ausdruck} +Verbindet mit einem Vim\-Server, f黨rt {Ausdruck} aus und zeigt das Ergebnis +auf der Standardausgabe an. +.TP +\-\-remote\-send {Zeichen} +Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. +.TP +\-\-remote\-silent +Wie 籠-\-remote, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-remote\-wait +Wie 籠-\-remote, aber Vim beendet sich nicht, bis die Dateien bearbeitet +wurden. +.TP +\-\-remote\-wait\-silent +Wie 籠-\-remote\-wait, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-serverlist +Listet die Namen aller gefundenen Vim\-Server auf. +.TP +\-\-servername {Name} +Benutzt {Name} als Server\-Namen. Wird f黵 den gegenw鋜tigen Vim benutzt, +au遝r es wird mit dem Argument 籠-\-remote benutzt, dann ist es der Name des +zu kontaktierenden Servers. +.TP +\-\-socketid {id} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +Fenster laufen zu lassen. +.TP +\-\-version +Versionsinformation anzeigen und beenden +.SH "EINGEBAUTE HILFE" +Tippen Sie in \fBVim\fP :help, um zu beginnen. Geben Sie ":help begriff ein, +um Hilfe 黚er ein bestimmtes Thema zu bekommen. Zum Beispiel :help ZZ f黵 +Hilfe 黚er den Befehl 籞Z. Benutzen Sie <Tab> und CTRL\-D, um +Begriffe zu vervollst鋘digen (:help cmdline\-completion). Tags sind +vorhanden, um von einem Ort zum anderen zu springen (eine Art +Hypertext\-Verkn黳fungen, siehe :help). Auf diese Weise k鰊nen alle +Dokumentations\-Dateien aufgerufen werden, zum Beispiel :help syntax.txt. +.SH DATEIEN +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentations\-Dateien f黵 \fBVim\fP. Verwenden Sie :help doc\-file\-list, um +die gesamte Liste zu bekommen. +.TP +/usr/local/lib/vim/doc/tags +Die 籘ag玕-Datei, die verwendet wird, um Informationen in der Dokumentation +zu finden. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Die systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaxdateien f黵 die verschiedenen Sprachen. +.TP +/usr/local/lib/vim/vimrc +Systemweite Einstellungsdatei f黵 \fBVim\fP +.TP +~/.vimrc +Pers鰊liche Einstellungsdatei f黵 \fBVim\fP +.TP +/usr/local/lib/vim/gvimrc +Systemweite Einstellungsdatei f黵 GVim +.TP +~/.gvimrc +Pers鰊liche Einstellungsdatei f黵 GVim +.TP +/usr/local/lib/vim/optwin.vim +Das Script, das von dem Befehl :options verwendet wird, eine sch鰊e +M鰃lichkeit, um Optionen zu betrachten und zu setzen. +.TP +/usr/local/lib/vim/menu.vim +Systemweite Einstellungsdatei f黵 das Men von GVim +.TP +/usr/local/lib/vim/bugreport.vim +Das Script zum Generieren eines Fehlerberichts. Siehe :help bugs. +.TP +/usr/local/lib/vim/filetype.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Dateinamens. Siehe :help 'filetype'. +.TP +/usr/local/lib/vim/scripts.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Inhaltes. Siehe :help 'filetype'. +.TP +/usr/local/lib/vim/print/*.ps +Diese Dateien werden zum Drucken von PostScript verwendet. +.PP +F黵 die neuesten Informationen lesen Sie die Vim\-Homepage: +.br +<URL:http://www.vim.org/> +.SH "SIEHE AUCH" +vimtutor(1) +.SH AUTOR +\fBVim\fP wurde gr鲞tenteils von Bram Moolenaar erstellt, mit viel Hilfe von +anderen Leuten. Siehe :help credits in \fBVim.\fP +.br +\fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und +G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom +urspr黱glichen Code 黚rig geblieben. +.SH FEHLER +Die sind m鰃lich. Siehe :help todo f黵 eine Liste bekannter Probleme. +.PP +Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten +m鰃en, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens +verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, +粀eil Vi es anders tut, sollten Sie einen genaueren Blick auf die Datei +vi_diff.txt werfen (oder in Vim :help vi_diff.txt tippen). Sehen Sie sich +auch die Optionen 'compatible' und 'cpoptions' an. diff --git a/runtime/doc/vim-de.UTF-8.1 b/runtime/doc/vim-de.UTF-8.1 new file mode 100644 index 0000000..f79e622 --- /dev/null +++ b/runtime/doc/vim-de.UTF-8.1 @@ -0,0 +1,478 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.\" Translated by bw1 (2008) and Florian Rehnisch <fm-r@gmx.de> (2012) +.\" Kudos to the folks on vim-dev and debian-l10n-german +.TH VIM 1 "2006 Apr 11" +.SH BEZEICHNUNG +vim \- Vi IMproved, ein Text\-Editor f眉r Programmierer +.SH 脺BERSICHT +.br +\fBvim\fP [Optionen] [Datei 鈥 +.br +\fBvim\fP [Optionen] \- +.br +\fBvim\fP [Optionen] \-t Tag +.br +\fBvim\fP [Optionen] \-q [Fehlerdatei] +.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 BESCHREIBUNG +\fBVim\fP ist ein Text\-Editor, der aufw盲rtskompatibel zu Vi ist. Er kann +verwendet werden, um alle Arten von Klartext zu bearbeiten. Er ist besonders +n眉tzlich, um Programme zu bearbeiten. +.PP +Vim hat einige Erweiterungen gegen眉ber Vi, z.B.: R眉ckg盲ngigmachen in +mehreren Schritten, mehrere Fenster und Puffer, Syntax\-Hervorhebung, +Bearbeiten der Befehlszeile, Dateinamenerg盲nzung, eingebaute Hilfe, visuelle +Auswahl, usw. 鈥 Siehe 禄:help vi_diff.txt芦 f眉r eine 脺bersicht der +Unterschiede zwischen \fBVim\fP und Vi. +.PP +Im laufenden \fBVim\fP kann mit dem Befehl 禄:help芦 viel Hilfe durch das +eingebaute Hilfesystem erlangt werden. Siehe den Abschnitt EINGEBAUTE HILFE +weiter unten. +.PP +Meistens wird \fBVim\fP zum Editieren einer einzigen Datei mit dem folgende +Befehl gestartet: +.PP + vim Datei +.PP +Allgemeiner betrachtet, wird \fBVim\fP folgenderma脽en gestartet: +.PP + vim [Optionen] [Dateiliste] +.PP +Bei einer fehlenden Dateiliste startet der Editor mit einem leeren +Puffer. Andernfalls werden nach den folgenden vier M枚glichkeiten eine oder +mehrere Dateien bearbeitet: +.TP 12 +Datei 鈥 +Eine Liste von Dateinamen. Die erste Datei wird in den Puffer geladen und +zur aktuellen. Der Cursor wird auf der ersten Zeile des Puffers +platziert. Zu den anderen Dateien kann mit dem Befehl 禄:next芦 gelangt +werden. Falls einer der Dateinamen mit einem Bindestrich beginnt, stellen +Sie der Dateiliste 禄\-\-芦 voran. +.TP +\- +Die zu bearbeitende Datei wird von der Standardeingabe gelesen. Befehle +werden von der Standardfehlerausgabe gelesen, die ein Text\-Terminal sein +sollte. +.TP +\-t {Tag} +Die zu editierende Datei und die anf盲ngliche Cursor\-Position h盲ngen von +einem 禄Tag芦 ab, einer Art Sprungmarke. {Tag} wird in der Tag\-Datei +nachgeschlagen, die zugeh枚rige Datei wird zur aktuellen und der zugeh枚rige +Befehl wird ausgef眉hrt. Dies wird meistens f眉r Programme in der Sprache 禄C芦 +benutzt, wobei {Tag} ein Funktionsname sein k枚nnte. Die Wirkung dieses +Befehls ist, dass die Datei, die die Funktion enth盲lt, als aktuelle im +Editor ge枚ffnet und angezeigt wird und der Cursor auf dem Beginn der +Funktion positioniert wird. Siehe 禄:help tag\-commands芦. +.TP +\-q [Fehlerdatei] +Startet im QuickFix\-Modus. Die Datei [Fehlerdatei] wird gelesen und der +erste Fehler wird angezeigt. Falls [Fehlerdatei] ausgelassen wird, wird der +Dateiname aus der Option 'errorfile' verwendet (bei AmigaOS ist dies +vorgabem盲脽ig 禄AztecC.Err芦, sowie 鈥瀍rrors.err芦 bei anderen). Weitere Fehler +k枚nnen mit dem 禄:cn芦\-Befehl angesprungen werden. Siehe 鈥:help quickfix芦. +.PP +\fBVim\fP reagiert unterschiedlich auf den Namen, der verwendet wird, um Vim zu +starten (die ausf眉hrbare Datei kann dieselbe sein). +.TP 10 +vim +der 禄normale芦 Weg, alles ist standardm盲脽ig +.TP +ex +Startet im Ex\-Modus. Mit dem Befehl 禄:vi芦 gelangt man in den normalen +Modus. Funktioniert auch mit dem Argument 禄\-e芦. +.TP +view +Startet im Nur\-Lesen\-Modus. Die Datei wird vor dem 脺berschreiben +gesch眉tzt. Dasselbe wird mit dem Parameter 禄\-R芦 erreicht. +.TP +gvim gview +Die grafische Version: 脰ffnet ein neues Fenster. Dasselbe wird mit dem +Parameter 禄\-g芦 erreicht. +.TP +evim eview +Die grafische Version im einfachen Modus: 脰ffnet ein neues Fenster. Dasselbe +wird mit dem Parameter 禄\-y芦 erreicht. +.TP +rvim rview rgvim rgview +Wie die obigen, aber mit Beschr盲nkungen: Es ist nicht m枚glich, Shell\-Befehle +aufzurufen oder mit Unterbrechung in eine Shell zur眉ckzuspringen. Dasselbe +wird mit dem Parameter 禄\-Z芦 erreicht. +.SH OPTIONEN +Die Optionen k枚nnen in beliebiger Reihenfolge vor oder nach den Dateinamen +angegeben werden. Optionen ohne Parameter k枚nnen hinter einem einzigen +Bindestrich gruppiert werden. +.TP 12 ++[Nummer] +In der ersten Datei wird der Cursor auf die Zeile [Nummer] gesetzt. Falls +[Nummer] nicht angegeben wird, wird der Cursor in die letzte Zeile der Datei +gesetzt. +.TP ++/{Suchmuster} +In der ersten Datei wird der Cursor auf das erste Auftreten von {Suchmuster} +gesetzt. Siehe 禄:help search\-pattern芦. +.TP ++{Befehl} +.TP +\-c {Befehl} +{Befehl} wird nach dem Lesen der ersten Datei ausgef眉hrt. Als {Befehl} wird +ein Ex\-Befehl erwartet. Sind in {Befehl} Leerzeichen vorhanden, muss alles +in Anf眉hrungszeichen gesetzt werden (h盲ngt von der verwendeten Shell +ab). Beispiel: vim "+set si" main.c +.br +Anmerkung: Sie k枚nnen bis zu 10 禄+芦\- oder 鈥瀄-c芦\-Befehle verwenden. +.TP +\-S {Datei} +{Datei} wird nach dem Lesen der ersten Datei ausgef眉hrt. Dies entspricht 禄\-c +"source {Datei}"芦. {Datei} darf nicht mit einem Bindestrich (\-) +anfangen. Wenn kein Dateiname angegeben wird, wird 禄Session.vim芦 verwendet +(Funktioniert nur, wenn 禄\-S芦 als letzter Parameter steht). +.TP +\-\-cmd {Befehl} +Wie 禄\-c芦, aber dieser Befehl wird vor allen VimRC\-Dateien ausgef眉hrt. Sie +k枚nnen unabh盲ngig von den 禄\-c芦\-Befehlen bis zu 10 dieser Befehle verwenden. +.TP +\-A +Falls \fBVim\fP mit Unterst眉tzung f眉r das Schreiben von rechts nach links und +arabischer Tastaturbelegung compiliert wurde (ARABIC), startet dieser +Parameter den Modus f眉rs Arabische (:set arabic). Anderenfalls beendet sich +\fBVim\fP mit einer Fehlermeldung. +.TP +b +Bin盲rer Modus: Es werden einige Variablen gesetzt, sodass es m枚glich ist, +eine bin盲re oder ausf眉hrbare Datei zu bearbeiten. +.TP +\-C +Kompatibel: Setzt die Option 'compatible'. Das macht \fBVim\fP im Verhalten +sehr 盲hnlich zu Vi, selbst wenn eine VimRC\-Datei existiert. +.TP +\-d +Startet im diff\-Modus. Es sollten zwei, drei oder vier Dateinamen als +Parameter 眉bergeben werden. \fBVim\fP 枚ffnet sie alle und zeigt die +Unterschiede an. Arbeitet wie vimdiff(1). +.TP +\-d {Ger盲t} +脰ffnet das {Ger盲t}, um es als Terminal zu nutzen. Nur f眉r AmigaOS. Beispiel: +"\-d con:20/30/600/150". +.TP +D +Debug\-Modus: \fBVim\fP geht in den Debug\-Modus, wenn der erste Befehl in einem +Skript ausgef眉hrt wird. +.TP +\-e +Startet \fBVim\fP im Ex\-Modus, als w眉rde als ausf眉hrbare Datei 禄ex芦 aufgerufen. +.TP +\-E +Startet \fBVim\fP im erweiterten Ex\-Modus, als w眉rde die ausf眉hrbare Datei als +禄exim芦 aufgerufen. +.TP +\-f +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +l枚st sich nicht von der Shell, in der er aufgerufen wurde. Bei AmigaOS wird +kein neues Fenster ge枚ffnet. Dieser Parameter wird benutzt, damit das +aufrufende Programm auf das Beenden des Bearbeitungssitzung wartet (z.B.: +mail). Bei AmigaOS funktionieren die Befehle 禄:sh芦 und 鈥:!芦 nicht. +.TP +\-\-nofork +Vordergrund: Bei der GUI\-Version erzeugt \fBVim\fP keinen neuen Prozess und +l枚st sich nicht von der Shell, in der er aufgerufen wurde. +.TP +\-F +Wenn \fBVim\fP mit FKMAP\-Unterst眉tzung f眉r das Schreiben von rechts nach links +und Farsi\-Tastatur\-Belegung kompiliert wurde, startet Vim im Farsi\-Modus, +d.h. die Optionen 'fkmap' und 'rightleft' werden gesetzt. Andernfalls bricht +\fBVim\fP mit einer Fehlermeldung ab. +.TP +\-g +Falls \fBVim\fP mit GUI\-Unterst眉tzung kompiliert wurde, wird die GUI +aktiviert. Falls keine GUI\-Unterst眉tzung einkompiliert wurde, wird mit einer +Fehlermeldung abgebrochen. +.TP +\-h +Gibt eine kleine Hilfe f眉r die Befehlszeilenparameter aus. Danach beendet +sich \fBVim.\fP +.TP +\-H +Hebr盲isch\-Modus, falls \fBVim\fP mit RIGHTLEFT\-Unterst眉tzung f眉r das Schreiben +von rechts nach links und hebr盲ischer Tastaturbelegung kompiliert wurde, +werden die Optionen 'hkmap' und 'rightleft' gesetzt. Andernfalls beendet +sich \fBVim\fP mit einer Fehlermeldung. +.TP +\-i {VimInfo} +Wenn eine VimInfo\-Datei verwendet wird: Verwendet statt 禄~/.viminfo芦 die +angegebene Datei. Es ist auch m枚glich die Verwendung einer VimInfo\-Datei +durch Angabe des Dateinamen 禄NONE芦 zu verhindern, +.TP +\-L +dasselbe wie 禄\-r芦 +.TP +\-l +Lisp\-Modus. Aktiviert die Optionen 'lisp' und 'showmatch'. +.TP +\-m +Deaktiviert das Ver盲ndern von Dateien, indem die Option 'write' gel枚scht +wird. Der Puffer kann ver盲ndert werden, nur das Schreiben einer Datei ist +nicht m枚glich. +.TP +\-M +Keine Ver盲nderungen erlaubt: Die Optionen 'modifiable' und 'write' werden +gel枚scht, so dass 脛nderungen nicht erlaubt sind und Dateien nicht +geschrieben werden k枚nnen. Man beachte, dass diese Optionen ('modifiable', +\&'write') dennnoch nachtr盲glich zum Erlauben von 脛nderungen gesetzt werden +k枚nnen. +.TP +\-N +Nicht\-kompatibler Modus: L枚scht die Option 'compatible'. Dies veranlasst +\fBVim\fP, sich ein wenig besser, aber weniger Vi\-kompatibel zu verhalten, +selbst wenn es keine VimRC\-Datei gibt. +.TP +\-n +Verwendet keine Auslagerungsdatei: Eine Wiederherstellung nach einem Absturz +ist nicht m枚glich. Auf einem langsamen Medium (Diskette) kann diese +Einstellung n眉tzlich sein. Kann auch mit 禄set uc=0芦 erreicht werden; kann +mit 禄set uc=200芦 aufgehoben werden. +.TP +\-nb +\fBVim\fP fungiert als Server f眉r NetBeans. Details siehe Dokumentation. +.TP +\-o[N] +脰ffnet [N] Fenster 眉bereinander. Wenn keine Zahl angegeben wird, 枚ffne ein +Fenster pro Datei. +.TP +\-O[N] +脰ffnet [N] Fenster nebeneinander. Wenn keine Zahl angegeben wird, 枚ffne ein +Fenster pro Datei. +.TP +\-p[N] +脰ffnet [N] Reiterseiten. Wenn keine Zahl angegeben wird, 枚ffne eine +Reiterseite pro Datei. +.TP +\-R +Nur\-Lesen\-Modus: Die Option 'readonly' wird gesetzt. Der Puffer kann noch +bearbeitet werden, aber es wird verhindert, eine Datei aus Versehen zu +眉berschreiben. Wenn Sie wirklich eine Datei 眉berschreiben wollen, f眉gen Sie +dem Ex\-Befehl ein Ausrufezeichen hinzu (wie in 禄:w!芦). Die Option 鈥瀄-R芦 +bedingt die Option 禄\-n芦 (siehe oben). Die Option 'readonly' kann durch 鈥:set +noro芦 gel枚scht werden. Siehe 禄:help 'readonly'芦. +.TP +\-r +Listet die Auslagerungsdateien und gibt Informationen zu ihrer +Verwendbarkeit zur Wiederherstellung. +.TP +\-r {Datei} +Wiederherstellungsmodus: Die Auslagerungsdatei wird zur Wiederherstellung +verwendet und hat denselben Dateinamen wie die Text\-Datei + 禄.swp芦. Siehe +鈥:help recovery芦. +.TP +\-s +Der stille Modus: Nur wenn die ausf眉hrbare Datei als 禄ex芦 aufgerufen wird +oder vor 禄\-s芦 die Option 鈥瀄-e芦 gegeben wird. +.TP +\-s {Eingabeskript} +Die Datei {Eingabeskript} wird gelesen und ausgef眉hrt, als w眉rden Sie die +Zeichen in ihr tippen. Dasselbe kann mit dem Befehl 禄:source! +{Eingabeskript}芦 erreicht werden. Wird das Ende der Datei vor dem Beenden +des Editors erreicht, werden weitere Zeichen von der Tastatur gelesen. +.TP +\-T {Terminal} +Setzt den Namen des benutzten Terminals. Nur erforderlich, wenn die +Automatik nicht funktioniert. Sollte ein \fBVim\fP bekanntes Terminal sein: +(builtin) oder in einer termcap\- oder terminfo\-Datei definiert. +.TP +\-u {VimRC} +Verwendet zur Initialisierung die Befehle in der Datei {VimRC}. Alle anderen +Initialisierungen werden 眉bersprungen. Benutzen Sie dies, um eine besondere +Art von Dateien zu bearbeiten. Dies kann auch benutzt werden, um alle +Initialisierungen zu 眉berspringen, indem der Name 禄NONE芦 angegeben wird. F眉r +weitere Einzelheiten siehe 禄:help initialisation芦 innerhalb von Vim. +.TP +\-U {GvimRC} +Benutzt die Befehle in der Datei {GvimRC} f眉r die Initialisierung der +grafischen Oberfl盲che. Alle anderen Initialisierungen werden +眉bersprungen. Dies kann ebenfalls benutzt werden, um alle +GUI\-Initialisierungen zu 眉berspringen, indem der Name 禄NONE芦 angegeben +wird. Siehe 禄:help gui\-init芦 innerhalb von Vim f眉r weitere Einzelheiten. +.TP +\-V[N] +Ausf眉hrlich (verbose): Gibt Meldungen dar眉ber, welche Befehlsdateien +eingelesen werden, und 眉ber das Lesen und Schreiben einer VimInfo\-Datei. Die +optionale Zahl N ist der Wert f眉r 'verbose'. Vorgabe ist 10. +.TP +\-v +Startet \fBVim\fP im Vi\-Modus, so als w眉rde die ausf眉hrbare Datei mit 禄vi芦 +aufgerufen. Dies wirkt sich nur aus, wenn die ausf眉hrbare Datei als 禄ex芦 +aufgerufen wird. +.TP +\-w {Ausgabeskript} +Alle Zeichen, die eingetippt werden, werden in der Datei {Ausgabeskript} +aufgezeichnet, solange bis Sie \fBVim\fP beenden. Dies ist n眉tzlich, falls Sie +eine Skript\-Datei zum Benutzen mit 禄vim \-s芦 oder 鈥:source!芦 erzeugen +wollen. Falls die Datei {Ausgabeskript} vorhanden ist, werden die Zeichen +angeh盲ngt. +.TP +\-W {Ausgabeskript} +Wie \-w, aber eine bereits vorhandene Datei wird 眉berschrieben. +.TP +\-x +Benutzt beim Schreiben von Dateien eine Verschl眉sselung. Fragt nach dem +Schl眉ssel. +.TP +\-X +F眉hrt keine Verbindung zum X\-Server durch. Dadurch verk眉rzt sich die +Startzeit, aber der Fenstertitel und die Zwischenablage werden nicht +verwendet. +.TP +\-y +Startet \fBVim\fP im einfachen Modus, als w眉rde die ausf眉hrbare Datei mit +禄evim芦 oder 禄eview芦 aufgerufen. \fBVim\fP verh盲lt sich dann wie ein Editor zum +Klicken und Tippen. +.TP +\-Z +Eingeschr盲nkter Modus: Funktioniert, als w眉rde der Name der ausf眉hrbaren +Datei mit 禄r芦 beginnen. +.TP +\-\- +Markiert das Ende der Optionen. Argumente, die folgen, werden als Dateinamen +behandelt. Dies kann benutzt werden, um einen Dateinamen mit 禄\-芦 am Anfang +zu verwenden. +.TP +\-\-echo\-wid +Nur GTK\-GUI: Schreibe die Fenster\-ID auf die Standardausgabe. +.TP +\-\-help +Gibt eine Hilfe\-Nachricht aus und beendet, wie 禄\-h芦. +.TP +\-\-literal +Nimmt die Dateinamen so wie sie sind und vervollst盲ndigt sie nicht nach +Metazeichen (*,?). Dies wirkt sich nicht unter Unix aus, wo die Shell die +Metazeichen expandiert. +.TP +\-\-noplugin +Lade keine Plugins. Impliziert durch 禄\-u NONE芦. +.TP +\-\-remote +Verbindet mit einem Vim\-Server und l盲sst ihn die in den restlichen +Argumenten angegeben Dateien editieren. Wenn kein Server gefunden wird, +f眉hrt dies zu einer Warnmeldung und die Dateien werden im gegenw盲rtigen Vim +zum Bearbeiten ge枚ffnet. +.TP +\-\-remote\-expr {Ausdruck} +Verbindet mit einem Vim\-Server, f眉hrt {Ausdruck} aus und zeigt das Ergebnis +auf der Standardausgabe an. +.TP +\-\-remote\-send {Zeichen} +Verbindet mit einem Vim\-Server und sendet ihm {Zeichen}. +.TP +\-\-remote\-silent +Wie 禄\-\-remote芦, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-remote\-wait +Wie 禄\-\-remote芦, aber Vim beendet sich nicht, bis die Dateien bearbeitet +wurden. +.TP +\-\-remote\-wait\-silent +Wie 禄\-\-remote\-wait芦, aber ohne Warnung, wenn kein Server gefunden wird. +.TP +\-\-serverlist +Listet die Namen aller gefundenen Vim\-Server auf. +.TP +\-\-servername {Name} +Benutzt {Name} als Server\-Namen. Wird f眉r den gegenw盲rtigen Vim benutzt, +au脽er es wird mit dem Argument 禄\-\-remote芦 benutzt, dann ist es der Name des +zu kontaktierenden Servers. +.TP +\-\-socketid {id} +Nur GTK\-GUI: Benutzt den GtkPlug\-Mechanismus, um GVim in einem anderen +Fenster laufen zu lassen. +.TP +\-\-version +Versionsinformation anzeigen und beenden +.SH "EINGEBAUTE HILFE" +Tippen Sie in \fBVim\fP 禄:help芦, um zu beginnen. Geben Sie 鈥:help begriff芦 ein, +um Hilfe 眉ber ein bestimmtes Thema zu bekommen. Zum Beispiel 禄:help ZZ芦 f眉r +Hilfe 眉ber den Befehl 禄ZZ芦. Benutzen Sie <Tab> und CTRL\-D, um +Begriffe zu vervollst盲ndigen (禄:help cmdline\-completion芦). Tags sind +vorhanden, um von einem Ort zum anderen zu springen (eine Art +Hypertext\-Verkn眉pfungen, siehe 禄:help芦). Auf diese Weise k枚nnen alle +Dokumentations\-Dateien aufgerufen werden, zum Beispiel 禄:help syntax.txt芦. +.SH DATEIEN +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentations\-Dateien f眉r \fBVim\fP. Verwenden Sie 禄:help doc\-file\-list芦, um +die gesamte Liste zu bekommen. +.TP +/usr/local/lib/vim/doc/tags +Die 禄Tag芦\-Datei, die verwendet wird, um Informationen in der Dokumentation +zu finden. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Die systemweite Einrichtung der Syntaxhervorhebung. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntaxdateien f眉r die verschiedenen Sprachen. +.TP +/usr/local/lib/vim/vimrc +Systemweite Einstellungsdatei f眉r \fBVim\fP +.TP +~/.vimrc +Pers枚nliche Einstellungsdatei f眉r \fBVim\fP +.TP +/usr/local/lib/vim/gvimrc +Systemweite Einstellungsdatei f眉r GVim +.TP +~/.gvimrc +Pers枚nliche Einstellungsdatei f眉r GVim +.TP +/usr/local/lib/vim/optwin.vim +Das Script, das von dem Befehl 禄:options芦 verwendet wird, eine sch枚ne +M枚glichkeit, um Optionen zu betrachten und zu setzen. +.TP +/usr/local/lib/vim/menu.vim +Systemweite Einstellungsdatei f眉r das Men眉 von GVim +.TP +/usr/local/lib/vim/bugreport.vim +Das Script zum Generieren eines Fehlerberichts. Siehe 禄:help bugs芦. +.TP +/usr/local/lib/vim/filetype.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Dateinamens. Siehe 禄:help 'filetype'芦. +.TP +/usr/local/lib/vim/scripts.vim +Mit diesem Script erkennt Vim den Typ einer Datei anhand ihres +Inhaltes. Siehe 禄:help 'filetype'芦. +.TP +/usr/local/lib/vim/print/*.ps +Diese Dateien werden zum Drucken von PostScript verwendet. +.PP +F眉r die neuesten Informationen lesen Sie die Vim\-Homepage: +.br +<URL:http://www.vim.org/> +.SH "SIEHE AUCH" +vimtutor(1) +.SH AUTOR +\fBVim\fP wurde gr枚脽tenteils von Bram Moolenaar erstellt, mit viel Hilfe von +anderen Leuten. Siehe 禄:help credits芦 in \fBVim.\fP +.br +\fBVim\fP basiert auf Stevie, der von Tim Thompson, Tony Andrews und +G.R. (Fred) Walter geschrieben wurde. Es ist jedoch kaum etwas vom +urspr眉nglichen Code 眉brig geblieben. +.SH FEHLER +Die sind m枚glich. Siehe 禄:help todo芦 f眉r eine Liste bekannter Probleme. +.PP +Beachten Sie, dass gewisse Dinge, die manche Leute als Fehler betrachten +m枚gen, in Wirklichkeit durch zu getreue Nachbildung des Vi\-Verhaltens +verursacht werden. Und falls Sie denken, dass andere Dinge Fehler sind, +禄weil Vi es anders tut芦, sollten Sie einen genaueren Blick auf die Datei +vi_diff.txt werfen (oder in Vim 禄:help vi_diff.txt芦 tippen). Sehen Sie sich +auch die Optionen 'compatible' und 'cpoptions' an. diff --git a/runtime/doc/vim-fr.1 b/runtime/doc/vim-fr.1 new file mode 100644 index 0000000..ede25ff --- /dev/null +++ b/runtime/doc/vim-fr.1 @@ -0,0 +1,589 @@ +.\" Traduction lundi 7 ao鹴 2000 par Richard Hitier +.\" (richard.hitier@dial.oleane.com) +.\" Mise jour de la traduction par David Blanchet +.\" (david.blanchet@free.fr) 2006-06-10 +.\" Mise jour de la traduction par Dominique Pell +.\" (dominique.pelle@gmail.com) 2013-05-10 +.\" +.TH VIM 1 "22 f関rier 2002" +.SH NOM +vim \- Vi IMproved, 閐iteur de texte pour programmeurs +.SH SYNOPSIS +.br +.B vim +[options] [fichier ...] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t marqueur +.br +.B vim +[options] \-q [fichiererreurs] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +est un 閐iteur de texte proposant une compatibilit ascendante +avec Vi. Il permet d'閐iter n'importe quel type de texte brut. +Il est particuli鑢ement adapt pour l'閐ition des programmes. +.PP +Il comporte de nombreuses am閘iorations par rapport Vi : annulation sur +plusieurs niveaux, fen阾res et tampons multiples, coloration syntaxique, +閐ition en ligne de commande, compl鑤ement des noms de fichiers, aide en +ligne, s閘ection visuelle, etc. +Voir ":help vi_diff.txt" pour un r閟um des diff閞ences entre +.B Vim +et Vi. +.PP +Pendant l'ex閏ution de +.B Vim +\, une aide abondante est accessible au travers du syst鑝e d'aide +en ligne, gr鈉e la commande ":help". +Voir la section AIDE EN LIGNE plus bas. +.PP +Le plus souvent +.B Vim +est d閙arr pour 閐iter un unique fichier avec la commande +.PP + vim fichier +.PP +Plus g閚閞alement, +.B Vim +est lanc avec : +.PP + vim [options] [listefichiers] +.PP +Si la listefichiers est omise, l'閐iteur d閙arre avec un tampon vide. +Autrement, l'une des quatre m閠hodes suivantes vous permettra de choisir +un ou plusieurs fichiers 閐iter. +.TP 12 +fichier ... +Une liste de noms de fichiers. +Le premier sera le fichier courant et sera lu dans le tampon. +Le curseur sera plac sur la premi鑢e ligne du tampon. +Vous pouvez passer aux autres fichiers avec la commande ":next". +Pour 閐iter un fichier d閎utant par un tiret, faites pr閏閐er la +liste de fichiers par "\-\-". +.TP +\- +Le fichier 閐iter est lu sur l'entr閑 standard (stdin). Les commandes sont +lues depuis stderr, qui devrait 阾re un terminal. +.TP +\-t {marqueur} +Le fichier 閐iter et la position initiale du curseur d閜endent +d'un "marqueur", qui est une sorte d'閠iquette. +{marqueur} est recherch dans le fichier des marqueurs, le fichier correspondant +devient le fichier courant et la commande associ閑 est ex閏ut閑. +Principalement utile pour les programmes en C ; dans ce cas, {marqueur} +peut 阾re le nom d'une fonction. +Au final, le fichier contenant cette fonction devient le fichier +courant et le curseur est plac au d閎ut de la fonction. +Voir ":help tag\-commands". +.TP +\-q [fichiererreurs] +D閙arre en mode Mise-au-point (QuickFix). +Le fichier [fichiererreurs] est lu et la premi鑢e erreur est affich閑. +Si [fichiererreurs] est omis, le nom du fichier est lu dans +l'option 'errorfile' ("AztecC.Err" par d閒aut sur Amiga, "errors.err" sur les +autres syst鑝es). +La commande ":cn" permet de sauter aux erreurs suivantes. +Voir ":help quickfix". +.PP +.B Vim +se comporte diff閞emment selon le nom de la commande (l'ex閏utable peut +cependant 阾re le m阭e fichier). +.TP 10 +vim +La fa鏾n "normale", le comportement par d閒aut. +.TP +ex +D閙arre en mode Ex. +La commande ":vi" permet de passer en mode Normal. +Ce mode est 間alement accessible avec l'argument "\-e". +.TP +view +D閙arre en mode Lecture-Seule. Vous 阾es prot間 de l'閏riture accidentelle +des fichiers. Ce mode est 間alement accessible avec l'argument "\-R". +.TP +gvim gview +La version graphique. +Ouvre une nouvelle fen阾re. +蒰alement accessible avec l'argument "\-g". +.TP +evim eview +La version graphique en mode D閎utant (easy). +Ouvre une nouvelle fen阾re. +蒰alement accessible avec l'argument "\-y". +.TP +rvim rview rgvim rgview +Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de +lancer des commandes du shell, ou de suspendre +.B Vim. +蒰alement accessible avec l'argument "\-Z". +.SH OPTIONS +Les options peuvent 阾re sp閏ifi閑s dans n'importe quel ordre, +avant ou apr鑣 les noms de fichiers. Les options sans arguments +peuvent 阾re combin閑s apr鑣 un unique tiret. +.TP 12 ++[num] +Place le curseur sur la ligne "num" dans le premier fichier. +Si "num" est omis, le curseur sera plac sur la derni鑢e ligne. +.TP ++/{motif} +Place le curseur sur la premi鑢e occurrence de {motif} dans le premier fichier. +Voir ":help search\-pattern" pour conna顃re les motifs de recherches +disponibles. +.TP ++{commande} +.TP +\-c {commande} +Ex閏ute {commande} apr鑣 la lecture du premier fichier. +{commande} est interpr閠閑 comme une commande Ex. +Si la {commande} contient des espaces, elle doit 阾re entour閑 +de doubles-apostrophes (cela d閜end du shell utilis). +Exemple : vim "+set si" main.c +.br +Note : vous pouvez utiliser jusqu' 10 commandes "+" ou "\-c". +.TP +\-S {fichier} +Source {fichier} apr鑣 la lecture du premier fichier. +C'est 閝uivalent \-c "source {fichier}". +{fichier} ne peut pas d閎uter par un '\-'. +Si {fichier} est omis, "Session.vim" est utilis (cela ne fonctionne que si +\-S est le dernier argument). +.TP +\-\-cmd {commande} +Comme "\-c", mais la commande est ex閏ut閑 juste avant de traiter les fichiers +vimrc. +Vous pouvez utiliser jusqu' 10 de ces commandes, ind閜endamment des +commandes "\-c". +.TP +\-A +Si +.B Vim +a 閠 compil avec le support de la fonctionnalit ARABIC pour l'閐ition de +fichiers de droite gauche et les claviers arabes, cette option lance +.B Vim +en mode Arabe, c.--d. que l'option 'arabic' est activ閑. +Sinon, un message d'erreur est 閙is et +.B Vim +quitte. +.TP +\-b +Mode Binaire. +Active plusieurs options pour permettre l'閐ition +d'un fichier binaire ou ex閏utable. +.TP +\-C +Compatible. Active l'option 'compatible'. +.B Vim +se comportera alors quasiment comme Vi, m阭e s'il existe un fichier .vimrc. +.TP +\-d +D閙arre en mode Diff. +Deux, trois ou quatre noms de fichiers doivent 阾re sp閏ifi閟. +.B Vim +ouvrira alors tous les fichiers et affichera leurs diff閞ences. +Fonctionne comme vimdiff(1). +.TP +\-d {p閞iph} +Ouvre {p閞iph} pour l'utiliser comme terminal. +Uniquement sur Amiga. +Exemple : +"\-d con:20/30/600/150". +.TP +\-D +Debogage. Passe en mode D閎ogage lors de l'ex閏ution de la premi鑢e commande +d'un script. +.TP +\-e +D閙arre +.B Vim +en mode Ex, comme si l'ex閏utable s'appelait "ex". +.TP +\-E +D閙arre +.B Vim +en mode Ex am閘ior, comme si l'ex閏utable "exim" avait 閠 invoqu. +.TP +\-f +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forke pas et ne se d閠ache pas du shell dans lequel il a 閠 invoqu. +Sur Amiga, +.B Vim +n'est pas relanc pour ouvrir une nouvelle fen阾re. +Cette option est utile quand +.B Vim +est ex閏ut par un programme qui attend la fin de la session d'閐ition +(par exemple mail). +Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. +.TP +\-\-nofork +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forkera pas et ne se d閠achera pas du shell dans lequel il a 閠 lanc. +.TP +\-F +Si +.B Vim +a 閠 compil avec le support de la fonctionnalit FKMAP pour l'閐ition de +fichiers de droite gauche et les claviers farsi, cette option lance +.B Vim +en mode Farsi, c.--d. avec les options 'fkmap' et 'rightleft' activ閑s. +Sinon, un message d'erreur est 閙is et +.B Vim +quitte. +.TP +\-g +Si +.B Vim +a 閠 compil avec le support de l'IHM graphique, cette option active +l'IHM graphique. Si le support n'a pas 閠 compil, un message d'erreur +est 閙is et +.B Vim +quitte. +.TP +\-h +Donne une aide succincte sur les arguments et les options de la ligne de +commande. Apr鑣 cela, +.B Vim +quitte. +.TP +\-H +Si +.B Vim +a 閠 compil avec le support de la fonctionnalit RIGHTLEFT pour l'閐ition de +fichiers de droite gauche et les claviers h閎reux, cette option lance +.B Vim +en mode H閎reu, c.--d. avec les options 'hkmap' et 'rightleft' activ閑s. +Sinon, un message d'erreur est 閙is et +.B Vim +quitte. +.TP +\-i {viminfo} +Lorsque l'utilisation d'un fichier viminfo est activ閑, cette option indique +le nom de fichier utiliser la place de "~/.viminfo" par d閒aut. +Il est possible d'emp阠her l'utilisation d'un fichier ".viminfo", en +sp閏ifiant le nom de fichier "NONE". +.TP +\-L +Comme \-r. +.TP +\-l +Mode Lisp. +Active les options 'lisp' et 'showmatch'. +.TP +\-m +Emp阠he la modification des fichiers. +D閟active l'option 'write'. +Vous pouvez toujours modifier le tampon, mais il vous sera impossible +d'閏rire le fichier. +.TP +\-M +N'autorise aucune modification. les options 'modifiable' et 'write' sont +d閟activ閑s, de sorte que les changements ne sont pas autoris閟 et que les +fichiers ne peuvent pas 阾re 閏rits. Note : ces options peuvent 阾re activ閑s +pour autoriser les modifications. +.TP +\-N +Mode Non-compatible. D閟active l'option 'compatible'. +Cela am閘iorera le comportement de +.B Vim +\, mais il sera moins conforme celui de Vi, m阭e s'il n'existe aucun +fichier ".vimrc". +.TP +\-n +N'utilise pas de fichier d'閏hange (swapfile). +Le recouvrement apr鑣 un plantage sera impossible. +Utile pour 閐iter un fichier sur un support tr鑣 lent (disquette par ex.). +蒰alement activable avec ":set uc=0". +Il est possible de l'annuler avec ":set uc=200". +.TP +\-nb +Devient un serveur d'閐ition pour NetBeans. Consulter la documentation ce +sujet pour davantage de d閠ails. +.TP +\-o[N] +Ouvre N fen阾res les unes au-dessus des autres. +Quand N est omis, ouvre une fen阾re pour chaque fichier. +.TP +\-O[N] +Ouvre N fen阾res c魌e c魌e. +Quand N est omis, ouvre une fen阾re pour chaque fichier fichier. +.TP +\-p[N] +Ouvre N onglets. +Quand N est omis, ouvre un onglet pour chaque fichier fichier. +.TP +\-R +Mode Lecture-Seule. +Active l'option 'readonly'. +Vous pouvez toujours 閐iter le tampon, mais il vous sera impossible de +d'閏raser accidentellement un fichier. +Si vous voulez 閏raser un fichier, ajoutez un point d'exclamation la commande +Ex, comme dans ":w!". +L'option \-R impose l'option \-n (voir ci-dessus). +L'option 'readonly' peut 阾re d閟activ閑 avec ":set noro". +Voir ":help 'readonly'". +.TP +\-r +Donne la liste des fichiers d'閏hange, avec des informations pour les utiliser + des fins de recouvrement. +.TP +\-r {file} +Mode Recouvrement. +Utilise le fichier d'閏hange pour r閏ouvrer d'une session d'閐ition plant閑. +Le fichier d'閏hange est un fichier avec le m阭e nom que le fichier texte, +suivi du suffixe ".swp". +Voir ":help recovery". +.TP +\-s +Mode Silencieux. Disponible uniquement quand +.B Vim +est lanc en tant que "ex" ou quand l'option "\-e" a 閠 sp閏ifi閑 avant +l'option "\-s". +.TP +\-s {scriptEntr閑} +Lit le fichier de script {scriptEntr閑}. +Les caract鑢es du fichier sont interpr閠閟 comme si vous les tapiez. +La commande ":source! {scriptEntr閑}" donne le m阭e r閟ultat. +Si la fin du fichier est atteinte avant que l'閐iteur quitte, les caract鑢es +suivants sont lus depuis le clavier. +.TP +\-T {terminal} +Indique +.B Vim +le nom du terminal utilis. +Cela n'est requis que lorsque la d閠ection automatique 閏houe. +Le {terminal} devrait 阾re connu de +.B Vim +(int間r) ou d閒ini dans le fichier termcap ou terminfo. +.TP +\-u {vimrc} +Utilise les commandes du fichier {vimrc} pour les initialisations. +Toutes les autres initialisations sont omises. + utiliser pour 閐iter un type de fichiers particulier. +Cela permet aussi d'omettre toute initialisation en sp閏ifiant le nom de +fichier "NONE". +Voir ":help initialization" dans Vim pour davantage de d閠ails. +.TP +\-U {gvimrc} +Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM +graphique. +Toutes les autres initialisations graphiques sont omises. +Cela permet aussi d'omettre toute initialisation graphique en sp閏ifiant le nom +de fichier "NONE". +Voir ":help gui\-init" dans Vim pour davantage de d閠ails. +.TP +\-V[N] +Mode Verbeux. +Donne des messages propos des fichiers sourc閟, ainsi que sur la lecture +et les 閏ritures dans le fichier viminfo. le nombre optionnel N pr閏ise la +valeur de l'option 'verbose' (10 par d閒aut). +.TP +\-v +D閙arre +.B Vim +en mode Vi, comme si l'ex閏utable s'appelait "vi". Cela n'a d'effet que si +l'ex閏utable invoqu est "ex". +.TP +\-w {scriptSortie} +Tous les caract鑢es que vous tapez sont enregistr閟 dans le fichier +{scriptSortie}, jusqu' ce que vous quittiez +.B Vim. +C'est utile quand vous voulez cr閑r un fichier de script utiliser avec +"vim \-s" ou ":source!". +Si le fichier {scriptSortie} existe, les caract鑢es sont ajout閟 la fin. +.TP +\-W {scriptSortie} +Comme \-w, mais un fichier existant sera 閏ras. +.TP +\-x +Chiffre les fichiers lors de l'閏riture. Une cl de chiffrement sera demand閑. +.TP +\-X +Ne se connecte pas au serveur X. Acc閘鑢e le temps de d閙arrage dans un +terminal, mais le titre de la fen阾re et le presse-papier seront inaccessibles. +.TP +\-y +D閙arre +.B Vim +en mode D閎utant (easy), comme si l'ex閏utable s'appelait "evim" ou "eview". +Donne +.B Vim +un comportement plus proche des 閐iteurs cliquez-tapez . +.TP +\-Z +Mode restreint. Fonctionne comme si l'ex閏utable commen鏰it par la lettre 'r'. +.TP +\-\- +D閘imite la fin des options. +Les arguments qui suivent seront consid閞閟 comme des noms de fichiers. +Cela permet d'閐iter des fichiers d閎utant par un '\-'. +.TP +\-\-echo\-wid +IHM graphique GTK uniquement : retourne la Window ID sur stdout. +.TP +\-\-help +Donne un message d'aide et quitte, comme "\-h". +.TP +\-\-literal +Prend les arguments de noms de fichiers litt閞alement, sans 閠endre les +jokers. N'a aucun effet sur Unix, o le shell 閠end les jokers. +.TP +\-\-noplugin +Ne charge pas les greffons. Implicite avec \-u NONE. +.TP +\-\-remote +Se connecte un serveur Vim et lui fait 閐iter les fichiers sp閏ifi閟 dans +le reste des arguments. Si aucun serveur n'est trouv, un avertissement est +閙is et les fichiers sont 閐it閟 dans le Vim courant. +.TP +\-\-remote\-expr {expr} +Se connecte un serveur Vim, y 関alue {expr} et affiche le r閟ultat sur la +sortie standard (stdout). +.TP +\-\-remote\-send {touches} +Se connecte un serveur Vim et y envoie {touches}. +.TP +\-\-remote\-silent +Comme \-\-remote, mais sans 閙ettre d'avertissement si aucun serveur n'est +trouv. +.TP +\-\-remote\-wait +Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours +d'閐ition. +.TP +\-\-remote\-wait\-silent +Comme \-\-remote\-wait, mais sans 閙ettre d'avertissement si aucun serveur n'est +trouv. +.TP +\-\-serverlist +Donne la liste des noms de tous les serveurs Vim disponibles. +.TP +\-\-servername {nom} +Utilise {nom} pour le nom de serveur. Ce nom est donn au Vim courant, moins +qu'il ne soit utilis avec un argument \-\-remote. Dans ce cas, il s'agit du nom +du serveur auquel se connecter. +.TP +\-\-socketid {id} +IHM graphique GTK+ uniquement : utilise le m閏anisme GtkPlug pour faire +fonctionner gvim dans une autre fen阾re. +.TP +\-\-version +Affiche les informations sur la version puis quitte. +.SH AIDE EN LIGNE +Taper ":help" dans +.B Vim +pour commencer. +Taper ":help sujet" pour obtenir de l'aide sur un sujet pr閏is. +Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". +Utiliser <Tab> et CTRL\-D pour compl閠er les sujets (":help +cmdline\-completion"). +Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit + un autre (comme des liens hypertextes, voir ":help"). +L'ensemble des fichiers de la documentation peut 阾re consult de cette +fa鏾n, par exemple ":help syntax.txt". +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/doc/*.txt +Les fichiers de la documentation de +.B Vim. +Utiliser ":help doc\-file\-list" pour obtenir la liste compl鑤e. +.TP +/usr/local/lib/vim/doc/tags +Le fichier des marqueurs utilis pour trouver les informations dans les +fichiers de la documentation. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Initialisation de la syntaxe pour l'ensemble du syst鑝e. +.TP +/usr/local/lib/vim/syntax/*.vim +Fichiers de syntaxe pour diff閞ents langages. +.TP +/usr/local/lib/vim/vimrc +Initialisation de +.B Vim +pour l'ensemble du syst鑝e. +.TP +~/.vimrc +Initialisation de +.B Vim +de votre compte utilisateur. +.TP +/usr/local/lib/vim/gvimrc +Initialisation de gvim pour l'ensemble du syst鑝e. +.TP +~/.gvimrc +Initialisation de gvim pour votre compte utilisateur. +.TP +/usr/local/lib/vim/optwin.vim +Script utilis pour la commande ":options", une mani鑢e pratique de consulter +et de modifier les options. +.TP +/usr/local/lib/vim/menu.vim +Initialisation des menus de gvim pour l'ensemble du syst鑝e. +.TP +/usr/local/lib/vim/bugreport.vim +Script pour g閚閞er un rapport de bogue. Voir ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script pour d閠ecter le type d'un fichier d'apr鑣 son nom. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script pour d閠ecter le type d'un fichier d'apr鑣 son contenu. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Fichiers utilis閟 pour l'impression PostScript. +.PP +Pour disposer d'informations r閏entes, consulter le site Internet de VIM : +.br +<URL:http://www.vim.org/> +.SH VOIR AUSSI +vimtutor(1) +.SH AUTEUR +La majeure partie de +.B Vim +a 閠 閏rite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.br +.B Vim +est bas sur Stevie, r閍lis par Tim Thompson, +Tony Andrews et G.R. (Fred) Walter. +Toutefois, pratiquement rien du code original ne subsiste. +.SH BOGUES +Probablement. +Voir ":help todo" pour consulter la liste des probl鑝es connus. +.PP +NOTE : Remarquez que bon nombre de points, qui pourraient 阾re consid閞閟 comme +des bugs par certains, sont en fait dus une reproduction trop fid鑜e +du comportement de Vi. Et si vous pensez que d'autres points sont des +bugs "parce que Vi le fait diff閞emment", vous devriez jeter un oeil +attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). +Regardez aussi les options 'compatible' et 'coptions'. +.SH TRADUCTION +Cette page de manuel a 閠 traduite par Richard Hitier. +<richard.hitier@dial.oleane.com> 2000-08-07. +.br +Cette page de manuel a 閠 mise jour par David Blanchet. +<david.blanchet@free.fr> 2006-04-10. +Mise jour 2013-05-10, Dominique Pell <dominique.pelle@gmail.com> diff --git a/runtime/doc/vim-fr.UTF-8.1 b/runtime/doc/vim-fr.UTF-8.1 new file mode 100644 index 0000000..4537722 --- /dev/null +++ b/runtime/doc/vim-fr.UTF-8.1 @@ -0,0 +1,589 @@ +.\" Traduction lundi 7 ao没t 2000 par Richard Hitier +.\" (richard.hitier@dial.oleane.com) +.\" Mise 脿 jour de la traduction par David Blanchet +.\" (david.blanchet@free.fr) 2006-06-10 +.\" Mise 脿 jour de la traduction par Dominique Pell茅 +.\" (dominique.pelle@gmail.com) 2013-05-10 +.\" +.TH VIM 1 "22 f茅vrier 2002" +.SH NOM +vim \- Vi IMproved, 茅diteur de texte pour programmeurs +.SH SYNOPSIS +.br +.B vim +[options] [fichier ...] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t marqueur +.br +.B vim +[options] \-q [fichiererreurs] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +est un 茅diteur de texte proposant une compatibilit茅 ascendante +avec Vi. Il permet d'茅diter n'importe quel type de texte brut. +Il est particuli猫rement adapt茅 pour l'茅dition des programmes. +.PP +Il comporte de nombreuses am茅liorations par rapport 脿 Vi : annulation sur +plusieurs niveaux, fen锚tres et tampons multiples, coloration syntaxique, +茅dition en ligne de commande, compl猫tement des noms de fichiers, aide en +ligne, s茅lection visuelle, etc. +Voir ":help vi_diff.txt" pour un r茅sum茅 des diff茅rences entre +.B Vim +et Vi. +.PP +Pendant l'ex茅cution de +.B Vim +\, une aide abondante est accessible au travers du syst猫me d'aide +en ligne, gr芒ce 脿 la commande ":help". +Voir la section AIDE EN LIGNE plus bas. +.PP +Le plus souvent +.B Vim +est d茅marr茅 pour 茅diter un unique fichier avec la commande +.PP + vim fichier +.PP +Plus g茅n茅ralement, +.B Vim +est lanc茅 avec : +.PP + vim [options] [listefichiers] +.PP +Si la listefichiers est omise, l'茅diteur d茅marre avec un tampon vide. +Autrement, l'une des quatre m茅thodes suivantes vous permettra de choisir +un ou plusieurs fichiers 脿 茅diter. +.TP 12 +fichier ... +Une liste de noms de fichiers. +Le premier sera le fichier courant et sera lu dans le tampon. +Le curseur sera plac茅 sur la premi猫re ligne du tampon. +Vous pouvez passer aux autres fichiers avec la commande ":next". +Pour 茅diter un fichier d茅butant par un tiret, faites pr茅c茅der la +liste de fichiers par "\-\-". +.TP +\- +Le fichier 脿 茅diter est lu sur l'entr茅e standard (stdin). Les commandes sont +lues depuis stderr, qui devrait 锚tre un terminal. +.TP +\-t {marqueur} +Le fichier 脿 茅diter et la position initiale du curseur d茅pendent +d'un "marqueur", qui est une sorte d'茅tiquette. +{marqueur} est recherch茅 dans le fichier des marqueurs, le fichier correspondant +devient le fichier courant et la commande associ茅e est ex茅cut茅e. +Principalement utile pour les programmes en C ; dans ce cas, {marqueur} +peut 锚tre le nom d'une fonction. +Au final, le fichier contenant cette fonction devient le fichier +courant et le curseur est plac茅 au d茅but de la fonction. +Voir ":help tag\-commands". +.TP +\-q [fichiererreurs] +D茅marre en mode Mise-au-point (QuickFix). +Le fichier [fichiererreurs] est lu et la premi猫re erreur est affich茅e. +Si [fichiererreurs] est omis, le nom du fichier est lu dans +l'option 'errorfile' ("AztecC.Err" par d茅faut sur Amiga, "errors.err" sur les +autres syst猫mes). +La commande ":cn" permet de sauter aux erreurs suivantes. +Voir ":help quickfix". +.PP +.B Vim +se comporte diff茅remment selon le nom de la commande (l'ex茅cutable peut +cependant 锚tre le m锚me fichier). +.TP 10 +vim +La fa莽on "normale", le comportement par d茅faut. +.TP +ex +D茅marre en mode Ex. +La commande ":vi" permet de passer en mode Normal. +Ce mode est 茅galement accessible avec l'argument "\-e". +.TP +view +D茅marre en mode Lecture-Seule. Vous 锚tes prot茅g茅 de l'茅criture accidentelle +des fichiers. Ce mode est 茅galement accessible avec l'argument "\-R". +.TP +gvim gview +La version graphique. +Ouvre une nouvelle fen锚tre. +脡galement accessible avec l'argument "\-g". +.TP +evim eview +La version graphique en mode D茅butant (easy). +Ouvre une nouvelle fen锚tre. +脡galement accessible avec l'argument "\-y". +.TP +rvim rview rgvim rgview +Comme ci-dessus, mais avec des restrictions. Il vous sera impossible de +lancer des commandes du shell, ou de suspendre +.B Vim. +脡galement accessible avec l'argument "\-Z". +.SH OPTIONS +Les options peuvent 锚tre sp茅cifi茅es dans n'importe quel ordre, +avant ou apr猫s les noms de fichiers. Les options sans arguments +peuvent 锚tre combin茅es apr猫s un unique tiret. +.TP 12 ++[num] +Place le curseur sur la ligne "num" dans le premier fichier. +Si "num" est omis, le curseur sera plac茅 sur la derni猫re ligne. +.TP ++/{motif} +Place le curseur sur la premi猫re occurrence de {motif} dans le premier fichier. +Voir ":help search\-pattern" pour conna卯tre les motifs de recherches +disponibles. +.TP ++{commande} +.TP +\-c {commande} +Ex茅cute {commande} apr猫s la lecture du premier fichier. +{commande} est interpr茅t茅e comme une commande Ex. +Si la {commande} contient des espaces, elle doit 锚tre entour茅e +de doubles-apostrophes (cela d茅pend du shell utilis茅). +Exemple : vim "+set si" main.c +.br +Note : vous pouvez utiliser jusqu'脿 10 commandes "+" ou "\-c". +.TP +\-S {fichier} +Source {fichier} apr猫s la lecture du premier fichier. +C'est 茅quivalent 脿 \-c "source {fichier}". +{fichier} ne peut pas d茅buter par un '\-'. +Si {fichier} est omis, "Session.vim" est utilis茅 (cela ne fonctionne que si +\-S est le dernier argument). +.TP +\-\-cmd {commande} +Comme "\-c", mais la commande est ex茅cut茅e juste avant de traiter les fichiers +vimrc. +Vous pouvez utiliser jusqu'脿 10 de ces commandes, ind茅pendamment des +commandes "\-c". +.TP +\-A +Si +.B Vim +a 茅t茅 compil茅 avec le support de la fonctionnalit茅 ARABIC pour l'茅dition de +fichiers de droite 脿 gauche et les claviers arabes, cette option lance +.B Vim +en mode Arabe, c.-脿-d. que l'option 'arabic' est activ茅e. +Sinon, un message d'erreur est 茅mis et +.B Vim +quitte. +.TP +\-b +Mode Binaire. +Active plusieurs options pour permettre l'茅dition +d'un fichier binaire ou ex茅cutable. +.TP +\-C +Compatible. Active l'option 'compatible'. +.B Vim +se comportera alors quasiment comme Vi, m锚me s'il existe un fichier .vimrc. +.TP +\-d +D茅marre en mode Diff. +Deux, trois ou quatre noms de fichiers doivent 锚tre sp茅cifi茅s. +.B Vim +ouvrira alors tous les fichiers et affichera leurs diff茅rences. +Fonctionne comme vimdiff(1). +.TP +\-d {p茅riph} +Ouvre {p茅riph} pour l'utiliser comme terminal. +Uniquement sur Amiga. +Exemple : +"\-d con:20/30/600/150". +.TP +\-D +Debogage. Passe en mode D茅bogage lors de l'ex茅cution de la premi猫re commande +d'un script. +.TP +\-e +D茅marre +.B Vim +en mode Ex, comme si l'ex茅cutable s'appelait "ex". +.TP +\-E +D茅marre +.B Vim +en mode Ex am茅lior茅, comme si l'ex茅cutable "exim" avait 茅t茅 invoqu茅. +.TP +\-f +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forke pas et ne se d茅tache pas du shell dans lequel il a 茅t茅 invoqu茅. +Sur Amiga, +.B Vim +n'est pas relanc茅 pour ouvrir une nouvelle fen锚tre. +Cette option est utile quand +.B Vim +est ex茅cut茅 par un programme qui attend la fin de la session d'茅dition +(par exemple mail). +Sur Amiga, les commandes ":sh" et ":!" ne fonctionneront pas. +.TP +\-\-nofork +Premier-plan (Foreground). Pour la version graphique, +.B Vim +ne forkera pas et ne se d茅tachera pas du shell dans lequel il a 茅t茅 lanc茅. +.TP +\-F +Si +.B Vim +a 茅t茅 compil茅 avec le support de la fonctionnalit茅 FKMAP pour l'茅dition de +fichiers de droite 脿 gauche et les claviers farsi, cette option lance +.B Vim +en mode Farsi, c.-脿-d. avec les options 'fkmap' et 'rightleft' activ茅es. +Sinon, un message d'erreur est 茅mis et +.B Vim +quitte. +.TP +\-g +Si +.B Vim +a 茅t茅 compil茅 avec le support de l'IHM graphique, cette option active +l'IHM graphique. Si le support n'a pas 茅t茅 compil茅, un message d'erreur +est 茅mis et +.B Vim +quitte. +.TP +\-h +Donne une aide succincte sur les arguments et les options de la ligne de +commande. Apr猫s cela, +.B Vim +quitte. +.TP +\-H +Si +.B Vim +a 茅t茅 compil茅 avec le support de la fonctionnalit茅 RIGHTLEFT pour l'茅dition de +fichiers de droite 脿 gauche et les claviers h茅breux, cette option lance +.B Vim +en mode H茅breu, c.-脿-d. avec les options 'hkmap' et 'rightleft' activ茅es. +Sinon, un message d'erreur est 茅mis et +.B Vim +quitte. +.TP +\-i {viminfo} +Lorsque l'utilisation d'un fichier viminfo est activ茅e, cette option indique +le nom de fichier 脿 utiliser 脿 la place de "~/.viminfo" par d茅faut. +Il est possible d'emp锚cher l'utilisation d'un fichier ".viminfo", en +sp茅cifiant le nom de fichier "NONE". +.TP +\-L +Comme \-r. +.TP +\-l +Mode Lisp. +Active les options 'lisp' et 'showmatch'. +.TP +\-m +Emp锚che la modification des fichiers. +D茅sactive l'option 'write'. +Vous pouvez toujours modifier le tampon, mais il vous sera impossible +d'茅crire le fichier. +.TP +\-M +N'autorise aucune modification. les options 'modifiable' et 'write' sont +d茅sactiv茅es, de sorte que les changements ne sont pas autoris茅s et que les +fichiers ne peuvent pas 锚tre 茅crits. Note : ces options peuvent 锚tre activ茅es +pour autoriser les modifications. +.TP +\-N +Mode Non-compatible. D茅sactive l'option 'compatible'. +Cela am茅liorera le comportement de +.B Vim +\, mais il sera moins conforme 脿 celui de Vi, m锚me s'il n'existe aucun +fichier ".vimrc". +.TP +\-n +N'utilise pas de fichier d'茅change (swapfile). +Le recouvrement apr猫s un plantage sera impossible. +Utile pour 茅diter un fichier sur un support tr猫s lent (disquette par ex.). +脡galement activable avec ":set uc=0". +Il est possible de l'annuler avec ":set uc=200". +.TP +\-nb +Devient un serveur d'茅dition pour NetBeans. Consulter la documentation 脿 ce +sujet pour davantage de d茅tails. +.TP +\-o[N] +Ouvre N fen锚tres les unes au-dessus des autres. +Quand N est omis, ouvre une fen锚tre pour chaque fichier. +.TP +\-O[N] +Ouvre N fen锚tres c么te 脿 c么te. +Quand N est omis, ouvre une fen锚tre pour chaque fichier fichier. +.TP +\-p[N] +Ouvre N onglets. +Quand N est omis, ouvre un onglet pour chaque fichier fichier. +.TP +\-R +Mode Lecture-Seule. +Active l'option 'readonly'. +Vous pouvez toujours 茅diter le tampon, mais il vous sera impossible de +d'茅craser accidentellement un fichier. +Si vous voulez 茅craser un fichier, ajoutez un point d'exclamation 脿 la commande +Ex, comme dans ":w!". +L'option \-R impose l'option \-n (voir ci-dessus). +L'option 'readonly' peut 锚tre d茅sactiv茅e avec ":set noro". +Voir ":help 'readonly'". +.TP +\-r +Donne la liste des fichiers d'茅change, avec des informations pour les utiliser +脿 des fins de recouvrement. +.TP +\-r {file} +Mode Recouvrement. +Utilise le fichier d'茅change pour r茅couvrer d'une session d'茅dition plant茅e. +Le fichier d'茅change est un fichier avec le m锚me nom que le fichier texte, +suivi du suffixe ".swp". +Voir ":help recovery". +.TP +\-s +Mode Silencieux. Disponible uniquement quand +.B Vim +est lanc茅 en tant que "ex" ou quand l'option "\-e" a 茅t茅 sp茅cifi茅e avant +l'option "\-s". +.TP +\-s {scriptEntr茅e} +Lit le fichier de script {scriptEntr茅e}. +Les caract猫res du fichier sont interpr茅t茅s comme si vous les tapiez. +La commande ":source! {scriptEntr茅e}" donne le m锚me r茅sultat. +Si la fin du fichier est atteinte avant que l'茅diteur quitte, les caract猫res +suivants sont lus depuis le clavier. +.TP +\-T {terminal} +Indique 脿 +.B Vim +le nom du terminal utilis茅. +Cela n'est requis que lorsque la d茅tection automatique 茅choue. +Le {terminal} devrait 锚tre connu de +.B Vim +(int茅gr茅) ou d茅fini dans le fichier termcap ou terminfo. +.TP +\-u {vimrc} +Utilise les commandes du fichier {vimrc} pour les initialisations. +Toutes les autres initialisations sont omises. +脌 utiliser pour 茅diter un type de fichiers particulier. +Cela permet aussi d'omettre toute initialisation en sp茅cifiant le nom de +fichier "NONE". +Voir ":help initialization" dans Vim pour davantage de d茅tails. +.TP +\-U {gvimrc} +Utilise les commandes du fichier {gvimrc} pour l'initialisation de l'IHM +graphique. +Toutes les autres initialisations graphiques sont omises. +Cela permet aussi d'omettre toute initialisation graphique en sp茅cifiant le nom +de fichier "NONE". +Voir ":help gui\-init" dans Vim pour davantage de d茅tails. +.TP +\-V[N] +Mode Verbeux. +Donne des messages 脿 propos des fichiers sourc茅s, ainsi que sur la lecture +et les 茅critures dans le fichier viminfo. le nombre optionnel N pr茅cise la +valeur de l'option 'verbose' (10 par d茅faut). +.TP +\-v +D茅marre +.B Vim +en mode Vi, comme si l'ex茅cutable s'appelait "vi". Cela n'a d'effet que si +l'ex茅cutable invoqu茅 est "ex". +.TP +\-w {scriptSortie} +Tous les caract猫res que vous tapez sont enregistr茅s dans le fichier +{scriptSortie}, jusqu'脿 ce que vous quittiez +.B Vim. +C'est utile quand vous voulez cr茅er un fichier de script 脿 utiliser avec +"vim \-s" ou ":source!". +Si le fichier {scriptSortie} existe, les caract猫res sont ajout茅s 脿 la fin. +.TP +\-W {scriptSortie} +Comme \-w, mais un fichier existant sera 茅cras茅. +.TP +\-x +Chiffre les fichiers lors de l'茅criture. Une cl茅 de chiffrement sera demand茅e. +.TP +\-X +Ne se connecte pas au serveur X. Acc茅l猫re le temps de d茅marrage dans un +terminal, mais le titre de la fen锚tre et le presse-papier seront inaccessibles. +.TP +\-y +D茅marre +.B Vim +en mode D茅butant (easy), comme si l'ex茅cutable s'appelait "evim" ou "eview". +Donne 脿 +.B Vim +un comportement plus proche des 茅diteurs 芦 cliquez-tapez 禄. +.TP +\-Z +Mode restreint. Fonctionne comme si l'ex茅cutable commen莽ait par la lettre 'r'. +.TP +\-\- +D茅limite la fin des options. +Les arguments qui suivent seront consid茅r茅s comme des noms de fichiers. +Cela permet d'茅diter des fichiers d茅butant par un '\-'. +.TP +\-\-echo\-wid +IHM graphique GTK uniquement : retourne la Window ID sur stdout. +.TP +\-\-help +Donne un message d'aide et quitte, comme "\-h". +.TP +\-\-literal +Prend les arguments de noms de fichiers litt茅ralement, sans 茅tendre les +jokers. N'a aucun effet sur Unix, o霉 le shell 茅tend les jokers. +.TP +\-\-noplugin +Ne charge pas les greffons. Implicite avec \-u NONE. +.TP +\-\-remote +Se connecte 脿 un serveur Vim et lui fait 茅diter les fichiers sp茅cifi茅s dans +le reste des arguments. Si aucun serveur n'est trouv茅, un avertissement est +茅mis et les fichiers sont 茅dit茅s dans le Vim courant. +.TP +\-\-remote\-expr {expr} +Se connecte 脿 un serveur Vim, y 茅value {expr} et affiche le r茅sultat sur la +sortie standard (stdout). +.TP +\-\-remote\-send {touches} +Se connecte 脿 un serveur Vim et y envoie {touches}. +.TP +\-\-remote\-silent +Comme \-\-remote, mais sans 茅mettre d'avertissement si aucun serveur n'est +trouv茅. +.TP +\-\-remote\-wait +Comme \-\-remote, mais Vim ne quitte pas tant que le fichier est en cours +d'茅dition. +.TP +\-\-remote\-wait\-silent +Comme \-\-remote\-wait, mais sans 茅mettre d'avertissement si aucun serveur n'est +trouv茅. +.TP +\-\-serverlist +Donne la liste des noms de tous les serveurs Vim disponibles. +.TP +\-\-servername {nom} +Utilise {nom} pour le nom de serveur. Ce nom est donn茅 au Vim courant, 脿 moins +qu'il ne soit utilis茅 avec un argument \-\-remote. Dans ce cas, il s'agit du nom +du serveur auquel se connecter. +.TP +\-\-socketid {id} +IHM graphique GTK+ uniquement : utilise le m茅canisme GtkPlug pour faire +fonctionner gvim dans une autre fen锚tre. +.TP +\-\-version +Affiche les informations sur la version puis quitte. +.SH AIDE EN LIGNE +Taper ":help" dans +.B Vim +pour commencer. +Taper ":help sujet" pour obtenir de l'aide sur un sujet pr茅cis. +Par exemple : ":help ZZ" pour consulter l'aide sur la commande "ZZ". +Utiliser <Tab> et CTRL\-D pour compl茅ter les sujets (":help +cmdline\-completion"). +Des marqueurs sont inclus dans l'aide et vous permettent de sauter d'un endroit +脿 un autre (comme des liens hypertextes, voir ":help"). +L'ensemble des fichiers de la documentation peut 锚tre consult茅 de cette +fa莽on, par exemple ":help syntax.txt". +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/doc/*.txt +Les fichiers de la documentation de +.B Vim. +Utiliser ":help doc\-file\-list" pour obtenir la liste compl猫te. +.TP +/usr/local/lib/vim/doc/tags +Le fichier des marqueurs utilis茅 pour trouver les informations dans les +fichiers de la documentation. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Initialisation de la syntaxe pour l'ensemble du syst猫me. +.TP +/usr/local/lib/vim/syntax/*.vim +Fichiers de syntaxe pour diff茅rents langages. +.TP +/usr/local/lib/vim/vimrc +Initialisation de +.B Vim +pour l'ensemble du syst猫me. +.TP +~/.vimrc +Initialisation de +.B Vim +de votre compte utilisateur. +.TP +/usr/local/lib/vim/gvimrc +Initialisation de gvim pour l'ensemble du syst猫me. +.TP +~/.gvimrc +Initialisation de gvim pour votre compte utilisateur. +.TP +/usr/local/lib/vim/optwin.vim +Script utilis茅 pour la commande ":options", une mani猫re pratique de consulter +et de modifier les options. +.TP +/usr/local/lib/vim/menu.vim +Initialisation des menus de gvim pour l'ensemble du syst猫me. +.TP +/usr/local/lib/vim/bugreport.vim +Script pour g茅n茅rer un rapport de bogue. Voir ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script pour d茅tecter le type d'un fichier d'apr猫s son nom. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script pour d茅tecter le type d'un fichier d'apr猫s son contenu. +Voir ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Fichiers utilis茅s pour l'impression PostScript. +.PP +Pour disposer d'informations r茅centes, consulter le site Internet de VIM : +.br +<URL:http://www.vim.org/> +.SH VOIR AUSSI +vimtutor(1) +.SH AUTEUR +La majeure partie de +.B Vim +a 茅t茅 茅crite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.br +.B Vim +est bas茅 sur Stevie, r茅alis茅 par Tim Thompson, +Tony Andrews et G.R. (Fred) Walter. +Toutefois, pratiquement rien du code original ne subsiste. +.SH BOGUES +Probablement. +Voir ":help todo" pour consulter la liste des probl猫mes connus. +.PP +NOTE : Remarquez que bon nombre de points, qui pourraient 锚tre consid茅r茅s comme +des bugs par certains, sont en fait dus 脿 une reproduction trop fid猫le +du comportement de Vi. Et si vous pensez que d'autres points sont des +bugs "parce que Vi le fait diff茅remment", vous devriez jeter un oeil +attentif au fichier vi_diff.txt (ou taper ":help vi_diff.txt" dans Vim). +Regardez aussi les options 'compatible' et 'coptions'. +.SH TRADUCTION +Cette page de manuel a 茅t茅 traduite par Richard Hitier. +<richard.hitier@dial.oleane.com> 2000-08-07. +.br +Cette page de manuel a 茅t茅 mise 脿 jour par David Blanchet. +<david.blanchet@free.fr> 2006-04-10. +Mise 脿 jour 2013-05-10, Dominique Pell茅 <dominique.pelle@gmail.com> diff --git a/runtime/doc/vim-it.1 b/runtime/doc/vim-it.1 new file mode 100644 index 0000000..8337ad9 --- /dev/null +++ b/runtime/doc/vim-it.1 @@ -0,0 +1,558 @@ +.TH VIM 1 "13 giugno 2022" +.SH NOME +vim \- VI Migliorato, un editor di testi per programmatori +.SH SINTASSI +.br +.B vim +[opzioni] [file ..] +.br +.B vim +[opzioni] \- +.br +.B vim +[opzioni] \-t tag +.br +.B vim +[opzioni] \-q [file_errori] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIZIONE +.B Vim +Un editore di testi, compatibile con, e migliore di, Vi. +Pu essere usato per editare qualsiasi file di testo. +Particolarmente utile per editare programmi. +.PP +Ci sono parecchi miglioramenti rispetto a Vi: undo multipli, finestre e buffer +multipli, evidenziazione sintattica, possibilit di modificare la riga di comando, +completamento nomi file, help in linea, selezione testi in Modo Visual, etc.. +Vedere ":help vi_diff.txt" per un sommario delle differenze fra +.B Vim +e Vi. +.PP +Mentre usate +.B Vim +potete ricevere molto aiuto dal sistema di help online, col comando +":help". +Vedere qui sotto la sezione AIUTO ONLINE. +.PP +Quasi sempre +.B Vim +viene invocato, per modificare un file, col comando +.PP + vim nome_file +.PP +Pi in generale +.B Vim +viene invocato con: +.PP + vim [opzioni] [lista_file] +.PP +Se lista_file non presente, l'editor inizia aprendo un buffer vuoto. +Altrimenti, una e una sola delle quattro maniere indicate qui sotto pu +essere usata per scegliere uno o pi file da modificare. +.TP 12 +nome_file .. +Una lista di nomi di file. +Il primo di questi sar il file corrente, e verr letto nel buffer. +Il cursore sar posizionato sulla prima linea del buffer. +Potete arrivare agli altri file col comando ":next". +Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla lista_file. +.TP +\- +Il file da editare letto dallo "stdin"- +I comandi sono letti da "stderr", che dovrebbe essere un terminale [tty]. +.TP +\-t {tag} +Il file da editare e la posizione iniziale del cursore dipendono da "tag", +una specie di "etichetta" a cui saltare. +{tag} viene cercata nel file "tags", e il file a essa associato diventa +quello corrente, ed il comando ad essa associato viene eseguito. +Di solito si usa per programmi C, nel qual caso {tag} potrebbe essere un +nome di funzione. +L'effetto che il file contenente quella funzione diventa il file corrente +e il cursore posizionato all'inizio della funzione. +Vedere ":help tag\-commands". +.TP +\-q [file_errori] +Inizia in Modo QuickFix [correzione veloce]. +Il file [file_errori] letto e il primo errore visualizzato. +Se [file_errori] non indicato, il suo nome ottenuto dal valore +dell'opzione 'errorfile' (che, se non specificata, vale "AztecC.Err" +per l'Amiga, "errors.err" su altri sistemi). +Si pu saltare all'errore successivo col comando ":cn". +Vedere ":help quickfix". +.PP +.B Vim +si comporta in modo diverso se invocato con nomi differenti (il programma +eseguibile "sottostante" pu essere sempre lo stesso). +.TP 10 +vim +Modo Normal, comportamento normale. +.TP +ex +Inizia in Modo "Ex". +Si pu passare in Modo Normal col comando ":vi". +Si pu invocare il Modo "Ex" anche con l'argomento "\-e". +.TP +view +Inizia in Modo Read-only (Sola Lettura). Non potete modificare i file. +Si pu invocare il Modo Read-only anche con l'argomento "\-R". +.TP +gvim gview +La versione GUI [Graphical User Interface]. +Apre una nuova finestra. +Si pu invocare il Modo GUI anche con l'argomento "\-g". +.TP +evim eview +La versione GUI in Modo Easy (semplificata). +Apre una nuova finestra. +Si pu invocare il Modo Easy anche con l'argomento "\-y". +.TP +rvim rview rgvim rgview +Come sopra, ma con restrizioni ai comandi. Non si potranno eseguire comandi +della shell o sospendere +.B Vim. +Si pu chiedere la stessa cosa anche con l'argomento "\-Z". +.SH OPZIONI +Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di file. +Opzioni che non hanno un argomento si possono specificare dietro a un solo "\-". +.TP 12 ++[numero] +Per il primo file il cursore sar posizionato sulla linea "numero". +Se "numero" manca, il cursore sar posizionato sull'ultima linea del file. +.TP ++/{espressione} +Per il primo file il cursore sar posizionato alla +prima occorrenza di {espressione}. +Vedere ":help search\-pattern" per come specificare l'espressione. +.TP ++{comando} +.TP +\-c {comando} +{comando} sar eseguito dopo che il primo file stato letto. +{comando} interpretato come un comando Ex. +Se il {comando} contiene spazi deve essere incluso fra doppi apici +(o altro delimitatore, a seconda della shell che si sta usando). +Esempio: vim "+set si" main.c +.br +Note: Si possono avere fino a 10 comandi "+" o "\-c". +.TP +\-S {file} +I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file. +Equivalente a \-c "source {file}". +{file} non pu avere un nome che inizia per '\-'. +Se {file} omesso si usa "Session.vim" (funziona solo se \-S l'ultimo +argomento specificato). +.TP +\-\-cmd {comando} +Come "\-c", ma il comando eseguito PRIMA +di eseguire qualsiasi file vimrc. +Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c". +.TP +\-A +Se +.B Vim + stato compilato con supporto ARABIC per editare file con orientamento +destra-sinistra e tastiera con mappatura araba, questa opzione inizia +.B Vim +in Modo Arabic, cio impostando 'arabic'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-b +Modo Binary (binario). +Vengono impostate alcune opzioni che permettono di modificare un file +binario o un programma eseguibile. +.TP +\-C +Compatibile. Imposta l'opzione 'compatible'. +In questo modo +.B Vim +ha quasi lo stesso comportamento di Vi, anche in presenza di un file .vimrc. +.TP +\-d +Inizia in Modo Diff [differenze]. +Dovrebbero esserci come argomenti due o tre o quattro nomi di file. +.B Vim +aprir tutti i file evidenziando le differenze fra gli stessi. +Funziona come vimdiff(1). +.TP +\-d {dispositivo} +Apre {dispositivo} per usarlo come terminale. +Solo per l'Amiga. +Esempio: +"\-d con:20/30/600/150". +.TP +\-D +Debugging. Vim si mette in Modo "debugging" a partire +dall'esecuzione del primo comando da uno script. +.TP +\-e +Eseguire +.B Vim +in Modo Ex, come se il programma eseguito sia "ex". +.TP +\-E +Eseguire +.B Vim +in Modo Ex migliorato, come se il programma eseguito sia "exim". +.TP +\-f +Direttamente [Foreground]. Per la versione GUI, +.B Vim +non crea [fork] una nuova finestra, indipendente dalla shell di invocazione. +Per l'Amiga, +.B Vim +non fatto ripartire per aprire una nuova finestra. +Opzione da usare quando +.B Vim + eseguito da un programma che attende la fine della +sessione di edit (ad es. mail). +Sull'Amiga i comandi ":sh" e ":!" non sono disponibili. +.TP +\-\-nofork +Direttamente [Foreground]. Per la versione GUI, +.B Vim +non crea [fork] una nuova finestra, indipendente dalla shell di invocazione. +.TP +\-F +Se +.B Vim + stato compilato con supporto FKMAP per editare file con orientamento +destra-sinistra e tastiera con mappatura Farsi, questa opzione inizia +.B Vim +in Modo Farsi, cio impostando 'fkmap' e 'rightleft'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-g +Se +.B Vim + stato compilato con supporto GUI, questa opzione chiede di usarla. +Se Vim stato compilato senza supporto GUI viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-h +Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim. +Subito dopo +.B Vim +esce. +.TP +\-H +Se +.B Vim + stato compilato col supporto RIGHTLEFT per editare file con orientamento +destra-sinistra e tastiera con mappatura Ebraica, questa opzione inizia +.B Vim +in Modo Ebraico, cio impostando 'hkmap' e 'rightleft'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-i {viminfo} +Se abilitato l'uso di un file viminfo, questa opzione indica il nome +del file da usare invece di quello predefinito "~/.viminfo". +Si pu anche evitare l'uso di un file .viminfo, dando come nome +"NONE". +.TP +\-L +Equivalente a \-r. +.TP +\-l +Modo Lisp. +Imposta le opzioni 'lisp' e 'showmatch'. +.TP +\-m +Inibisce modifica file. +Inibisce l'opzione 'write'. + ancora possibile modificare un buffer, ma non riscriverlo. +.TP +\-M +Modifiche non permesse. Le opzioni 'modifiable' e 'write' sono annullate, +in modo da impedire sia modifiche che riscritture. Da notare che queste +opzioni possono essere abilitate in seguito, permettendo cos modifiche. +.TP +\-N +Modo "Non-compatibile". Annulla l'opzione 'compatible'. +Cos +.B Vim +va un po' meglio, ma meno compatibile con Vi, anche in assenza di un +file .vimrc. +.TP +\-n +Inibisce l'uso di un file di swap. +Il recupero dopo una caduta di macchina diventa impossibile. +Utile per editare un file su un supporto molto lento (ad es. floppy). +Il comando ":set uc=0" ha lo stesso effetto. +Per abilitare il recupero usare ":set uc=200". +.TP +\-nb +Diviene un Editor server per NetBeans. Vedere la documentazione per dettagli. +.TP +\-o[N] +Apri N finestre in orizzontale. +Se N manca, apri una finestra per ciascun file. +.TP +\-O[N] +Apri N finestre, in verticale. +Se N manca, apri una finestra per ciascun file. +.TP +\-p[N] +Apri N pagine di linguette. +Quando N omesso, apri una pagine di linguette per ciascun file. +.TP +\-R +Modo Read-only (Sola Lettura). +Imposta l'opzione 'readonly'. +Si pu ancora modificare il buffer, ma il file protetto da una riscrittura +involontaria. +Se si vuole davvero riscrivere il file, occorre aggiungere un punto esclamativo +al comando Ex, come in ":w!". +L'opzione \-R implica anche l'opzione \-n (vedere sotto). +L'opzione 'readonly' pu essere annullata con ":set noro". +Vedere ":help 'readonly'". +.TP +\-r +Lista file di swap, e informazioni su come usarli per ripristinare file. +.TP +\-r {file} +Modo Recovery (ripristino). +Il file di swap usato per recuperare una sessione di edit finita male. +Il file di swap un file con lo stesso nome file del file di testo +editato, col suffisso ".swp". +Vedere ":help recovery". +.TP +\-s +Modo silenzioso. Solo quando invocato come "Ex" o quando l'opzione +"\-e" stata data prima dell'opzione "\-s". +.TP +\-s {scriptin} +Lo script file {scriptin} letto. +I caratteri nel file sono interpretati come se immessi da terminale. +Lo stesso risultato si pu ottenere col comando ":source! {scriptin}". +Se la fine del file di input viene raggiunta prima che Vim termini, +l'ulteriore input verr preso dalla tastiera. +.TP +\-T {terminale} +Dice a +.B Vim +quale tipo di terminale state usando. +Utile solo se il terminale non viene riconosciuto correttamente da Vim. +Dovrebbe essere un terminale noto a +.B Vim +(internamente) o definito nei file termcap o terminfo. +.TP +\-u {vimrc} +Usa i comandi nel file {vimrc} per inizializzazioni. +Tutte le altre inizializzazioni non sono eseguite. +Usate questa opzione per editare qualche file di tipo speciale. +Si possono anche omettere tutte le inizializzazioni dando come nome "NONE". +Vedere ":help initialization" da vim per ulteriori dettagli. +.TP +\-U {gvimrc} +Usa i comandi nel file {gvimrc} per inizializzazioni GUI. +Tutte le altre inizializzazioni GUI non sono eseguite. +Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE". +Vedere ":help gui-init" da vim per ulteriori dettagli. +.TP +\-V[N] +Verboso. Vim manda messaggi relativi ai file di script che esegue +e quando legge o scrive un file viminfo. Il numero opzionale N il valore +dell'opzione 'verbose'. Il valore predefinito 10. +.TP +\-v +Inizia +.B Vim +in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha +effetto solo quando Vim viene invocato con il nome "ex". +.TP +\-w {scriptout} +Ogni carattere immesso viene registrato nel file {scriptout}, +finch non si esce da +.B Vim. +Utile se si vuole creare uno script file da usare con "vim \-s" o +":source!". +Se il file {scriptout} esiste, quel che immettete viene aggiunto in fondo. +.TP +\-W {scriptout} +Come \-w, ma uno script file esistente viene sovrascritto. +.TP +\-x +Uso di cifratura nella scrittura dei file. Verr chiesta una chiave di cifratura. +.TP +\-X +Non connettersi al server X. Vim parte pi rapidamente, +ma il titolo della finestra e la clipboard non sono usati. +.TP +\-y +Eseguire +.B Vim +in Modo Easy (semplificato), come se l'eseguibile invocato sia "evim" o "eview". +Fa s che +.B Vim +si comporti come un editor che usa solo il mouse e i caratteri. +.TP +\-Z +Modo ristretto. Vim si comporta come se invocato con un nome che inizia per "r". +.TP +\-\- +Specifica la fine delle opzioni. +Argomenti specificati dopo questo sono considerati nomi file. +Si pu usare per editare un file il cui nome inizi per '-'. +.TP +\-\-clean +Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.). +Utile per verificare se un problema persiste invocando Vim "originale". +.TP +\-\-echo\-wid +Solo per GUI GTK: Visualizza Window ID su "stdout". +.TP +\-\-help +Vim d un messaggio ed esce, come con l'argomento "\-h". +.TP +\-\-literal +Considera i nomi passati come argomenti letterali, senza espandere metacaratteri. +Non ha effetto in Unix, dove la shell espande comunque i metacaratteri. +.TP +\-\-noplugin +Non caricare plugin. Implicito se si specifica \-u NONE. +.TP +\-\-remote +Connettersi a un server Vim e chiedere di editare i file elencati come altri +argomenti. Se non si trova un server viene dato un messaggio e i file sono +editati nel Vim corrente. +.TP +\-\-remote\-expr {expr} +Connettersi a un server Vim, valutare {expr} e stampare il risultato su "stdout". +.TP +\-\-remote\-send {chiavi} +Connettersi a un server Vim e spedirgli {chiavi}. +.TP +\-\-remote\-silent +Come \-\-remote, ma senza avvisare se non si trova un server. +.TP +\-\-remote-wait +Come \-\-remote, ma Vim non termina finch i file non sono stati editati. +.TP +\-\-remote\-wait\-silent +Come \-\-remote\-wait, ma senza avvisare se non si trova un server. +.TP +\-\-serverlist +Elenca i nomi di tutti i server Vim disponibili. +.TP +\-\-servername {nome} +Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato +con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi. +.TP +\-\-socketid {id} +Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra. +.TP +\-\-startuptime {nome_file} +Durante la fase iniziale, scrive messaggi di log al file {nome_file}. +.TP +\-\-version +Stampa la versione di Vim ed esci. +.SH AIUTO ONLINE +Battere ":help" in +.B Vim +per iniziare. +Battere ":help argomento" per ricevere aiuto su uno specifico argomento. +Per esempio: ":help ZZ" per ricevere aiuto sul comando "ZZ". +Usare <Tab> e CTRL\-D per completare gli argomenti (":help cmdline\-completion"). +Ci sono "tag" nei file di help per passare da un argomento a un altro +(simili a legami ipertestuali, vedere ":help"). +Tutti i file di documentazione possono essere navigati cos. Ad es.: +":help syntax.txt". +.SH FILE +.TP 15 +/usr/local/lib/vim/doc/*.txt +I file di documentazione di +.B Vim +. +Usare ":help doc\-file\-list" per avere la lista completa. +.TP +/usr/local/lib/vim/doc/tags +Il file di tags usato per trovare informazioni nei file di documentazione. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Inizializzazioni sintattiche a livello di sistema. +.TP +/usr/local/lib/vim/syntax/*.vim +File di colorazione sintattica per vari linguaggi. +.TP +/usr/local/lib/vim/vimrc +Inizializzazioni +.B Vim +a livello di sistema. +.TP +~/.vimrc +Inizializzazioni personali di +.B Vim +. +.TP +/usr/local/lib/vim/gvimrc +Inizializzazioni gvim a livello di sistema. +.TP +~/.gvimrc +Inizializzazioni personali di +.TP +/usr/local/lib/vim/optwin.vim +Script Vim usato dal comando ":options", da usare per visualizzare e impostare opzioni. +.TP +/usr/local/lib/vim/menu.vim +Inizializzazioni del men gvim a livello di sistema. +.TP +/usr/local/lib/vim/bugreport.vim +Script Vim per generare una segnalazione di errore. Vedere ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script Vim per determinare il tipo di un file dal suo nome. Vedere ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script Vim per determinare il tipo di un file dal suo contenuto. Vedere ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +File usati per stampa PostScript. +.PP +Per informazioni aggiornate [in inglese \- NdT] vedere la home page di Vim: +.br +<URL:http://www.vim.org/> +.SH VEDERE ANCHE +vimtutor(1) +.SH AUTORE +Buona parte di +.B Vim + stato scritto da Bram Moolenaar, con molto aiuto da parte di altri. +Vedere ":help credits" in +.B Vim. +.br +.B Vim + basato su Stevie, scritto da: Tim Thompson, +Tony Andrews e G.R. (Fred) Walter. +In verit, poco o nulla rimasto del loro codice originale. +.SH BACHI +Probabili. +Vedere ":help todo" per una lista di problemi noti. +.PP +Si noti che un certo numero di comportamenti che possono essere considerati errori +da qualcuno, sono in effetti causati da una riproduzione fin troppo fedele del +comportamento di Vi. Se si ritiene che altre cose siano errori "perch Vi si comporta +diversamente", si dia prima un'occhiata al file vi_diff.txt (o si immetta +:help vi_diff.txt da Vim). +Un'occhiata va data anche alle opzioni 'compatible' e 'cpoptions. diff --git a/runtime/doc/vim-it.UTF-8.1 b/runtime/doc/vim-it.UTF-8.1 new file mode 100644 index 0000000..5931d4b --- /dev/null +++ b/runtime/doc/vim-it.UTF-8.1 @@ -0,0 +1,558 @@ +.TH VIM 1 "13 giugno 2022" +.SH NOME +vim \- VI Migliorato, un editor di testi per programmatori +.SH SINTASSI +.br +.B vim +[opzioni] [file ..] +.br +.B vim +[opzioni] \- +.br +.B vim +[opzioni] \-t tag +.br +.B vim +[opzioni] \-q [file_errori] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIZIONE +.B Vim +Un editore di testi, compatibile con, e migliore di, Vi. +Pu貌 essere usato per editare qualsiasi file di testo. +Particolarmente utile per editare programmi. +.PP +Ci sono parecchi miglioramenti rispetto a Vi: undo multipli, finestre e buffer +multipli, evidenziazione sintattica, possibilit脿 di modificare la riga di comando, +completamento nomi file, help in linea, selezione testi in Modo Visual, etc.. +Vedere ":help vi_diff.txt" per un sommario delle differenze fra +.B Vim +e Vi. +.PP +Mentre usate +.B Vim +potete ricevere molto aiuto dal sistema di help online, col comando +":help". +Vedere qui sotto la sezione AIUTO ONLINE. +.PP +Quasi sempre +.B Vim +viene invocato, per modificare un file, col comando +.PP + vim nome_file +.PP +Pi霉 in generale +.B Vim +viene invocato con: +.PP + vim [opzioni] [lista_file] +.PP +Se lista_file non 猫 presente, l'editor inizia aprendo un buffer vuoto. +Altrimenti, una e una sola delle quattro maniere indicate qui sotto pu貌 +essere usata per scegliere uno o pi霉 file da modificare. +.TP 12 +nome_file .. +Una lista di nomi di file. +Il primo di questi sar脿 il file corrente, e verr脿 letto nel buffer. +Il cursore sar脿 posizionato sulla prima linea del buffer. +Potete arrivare agli altri file col comando ":next". +Per editare un file il cui nome inizia per "\-" premettete "\-\-" alla lista_file. +.TP +\- +Il file da editare 猫 letto dallo "stdin"- +I comandi sono letti da "stderr", che dovrebbe essere un terminale [tty]. +.TP +\-t {tag} +Il file da editare e la posizione iniziale del cursore dipendono da "tag", +una specie di "etichetta" a cui saltare. +{tag} viene cercata nel file "tags", e il file a essa associato diventa +quello corrente, ed il comando ad essa associato viene eseguito. +Di solito si usa per programmi C, nel qual caso {tag} potrebbe essere un +nome di funzione. +L'effetto 猫 che il file contenente quella funzione diventa il file corrente +e il cursore 猫 posizionato all'inizio della funzione. +Vedere ":help tag\-commands". +.TP +\-q [file_errori] +Inizia in Modo QuickFix [correzione veloce]. +Il file [file_errori] 猫 letto e il primo errore 猫 visualizzato. +Se [file_errori] non 猫 indicato, il suo nome 猫 ottenuto dal valore +dell'opzione 'errorfile' (che, se non specificata, vale "AztecC.Err" +per l'Amiga, "errors.err" su altri sistemi). +Si pu貌 saltare all'errore successivo col comando ":cn". +Vedere ":help quickfix". +.PP +.B Vim +si comporta in modo diverso se invocato con nomi differenti (il programma +eseguibile "sottostante" pu貌 essere sempre lo stesso). +.TP 10 +vim +Modo Normal, comportamento normale. +.TP +ex +Inizia in Modo "Ex". +Si pu貌 passare in Modo Normal col comando ":vi". +Si pu貌 invocare il Modo "Ex" anche con l'argomento "\-e". +.TP +view +Inizia in Modo Read-only (Sola Lettura). Non potete modificare i file. +Si pu貌 invocare il Modo Read-only anche con l'argomento "\-R". +.TP +gvim gview +La versione GUI [Graphical User Interface]. +Apre una nuova finestra. +Si pu貌 invocare il Modo GUI anche con l'argomento "\-g". +.TP +evim eview +La versione GUI in Modo Easy (semplificata). +Apre una nuova finestra. +Si pu貌 invocare il Modo Easy anche con l'argomento "\-y". +.TP +rvim rview rgvim rgview +Come sopra, ma con restrizioni ai comandi. Non si potranno eseguire comandi +della shell o sospendere +.B Vim. +Si pu貌 chiedere la stessa cosa anche con l'argomento "\-Z". +.SH OPZIONI +Le opzioni possono essere in un ordine qualsiasi, prima o dopo i nomi di file. +Opzioni che non hanno un argomento si possono specificare dietro a un solo "\-". +.TP 12 ++[numero] +Per il primo file il cursore sar脿 posizionato sulla linea "numero". +Se "numero" manca, il cursore sar脿 posizionato sull'ultima linea del file. +.TP ++/{espressione} +Per il primo file il cursore sar脿 posizionato alla +prima occorrenza di {espressione}. +Vedere ":help search\-pattern" per come specificare l'espressione. +.TP ++{comando} +.TP +\-c {comando} +{comando} sar脿 eseguito dopo che il primo file 猫 stato letto. +{comando} 猫 interpretato come un comando Ex. +Se il {comando} contiene spazi deve essere incluso fra doppi apici +(o altro delimitatore, a seconda della shell che si sta usando). +Esempio: vim "+set si" main.c +.br +Note: Si possono avere fino a 10 comandi "+" o "\-c". +.TP +\-S {file} +I comandi contenuti in {file} sono eseguiti dopo la lettura del primo file. +Equivalente a \-c "source {file}". +{file} non pu貌 avere un nome che inizia per '\-'. +Se {file} 猫 omesso si usa "Session.vim" (funziona solo se \-S 猫 l'ultimo +argomento specificato). +.TP +\-\-cmd {comando} +Come "\-c", ma il comando 猫 eseguito PRIMA +di eseguire qualsiasi file vimrc. +Si possono usare fino a 10 di questi comandi, indipendentemente dai comandi "\-c". +.TP +\-A +Se +.B Vim +猫 stato compilato con supporto ARABIC per editare file con orientamento +destra-sinistra e tastiera con mappatura araba, questa opzione inizia +.B Vim +in Modo Arabic, cio猫 impostando 'arabic'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-b +Modo Binary (binario). +Vengono impostate alcune opzioni che permettono di modificare un file +binario o un programma eseguibile. +.TP +\-C +Compatibile. Imposta l'opzione 'compatible'. +In questo modo +.B Vim +ha quasi lo stesso comportamento di Vi, anche in presenza di un file .vimrc. +.TP +\-d +Inizia in Modo Diff [differenze]. +Dovrebbero esserci come argomenti due o tre o quattro nomi di file. +.B Vim +aprir脿 tutti i file evidenziando le differenze fra gli stessi. +Funziona come vimdiff(1). +.TP +\-d {dispositivo} +Apre {dispositivo} per usarlo come terminale. +Solo per l'Amiga. +Esempio: +"\-d con:20/30/600/150". +.TP +\-D +Debugging. Vim si mette in Modo "debugging" a partire +dall'esecuzione del primo comando da uno script. +.TP +\-e +Eseguire +.B Vim +in Modo Ex, come se il programma eseguito sia "ex". +.TP +\-E +Eseguire +.B Vim +in Modo Ex migliorato, come se il programma eseguito sia "exim". +.TP +\-f +Direttamente [Foreground]. Per la versione GUI, +.B Vim +non crea [fork] una nuova finestra, indipendente dalla shell di invocazione. +Per l'Amiga, +.B Vim +non 猫 fatto ripartire per aprire una nuova finestra. +Opzione da usare quando +.B Vim +猫 eseguito da un programma che attende la fine della +sessione di edit (ad es. mail). +Sull'Amiga i comandi ":sh" e ":!" non sono disponibili. +.TP +\-\-nofork +Direttamente [Foreground]. Per la versione GUI, +.B Vim +non crea [fork] una nuova finestra, indipendente dalla shell di invocazione. +.TP +\-F +Se +.B Vim +猫 stato compilato con supporto FKMAP per editare file con orientamento +destra-sinistra e tastiera con mappatura Farsi, questa opzione inizia +.B Vim +in Modo Farsi, cio猫 impostando 'fkmap' e 'rightleft'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-g +Se +.B Vim +猫 stato compilato con supporto GUI, questa opzione chiede di usarla. +Se Vim 猫 stato compilato senza supporto GUI viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-h +Un po' di aiuto su opzioni e argomenti che si possono dare invocando Vim. +Subito dopo +.B Vim +esce. +.TP +\-H +Se +.B Vim +猫 stato compilato col supporto RIGHTLEFT per editare file con orientamento +destra-sinistra e tastiera con mappatura Ebraica, questa opzione inizia +.B Vim +in Modo Ebraico, cio猫 impostando 'hkmap' e 'rightleft'. +Altrimenti viene dato un messaggio di errore e +.B Vim +termina in modo anormale. +.TP +\-i {viminfo} +Se 猫 abilitato l'uso di un file viminfo, questa opzione indica il nome +del file da usare invece di quello predefinito "~/.viminfo". +Si pu貌 anche evitare l'uso di un file .viminfo, dando come nome +"NONE". +.TP +\-L +Equivalente a \-r. +.TP +\-l +Modo Lisp. +Imposta le opzioni 'lisp' e 'showmatch'. +.TP +\-m +Inibisce modifica file. +Inibisce l'opzione 'write'. +脠 ancora possibile modificare un buffer, ma non riscriverlo. +.TP +\-M +Modifiche non permesse. Le opzioni 'modifiable' e 'write' sono annullate, +in modo da impedire sia modifiche che riscritture. Da notare che queste +opzioni possono essere abilitate in seguito, permettendo cos矛 modifiche. +.TP +\-N +Modo "Non-compatibile". Annulla l'opzione 'compatible'. +Cos矛 +.B Vim +va un po' meglio, ma 猫 meno compatibile con Vi, anche in assenza di un +file .vimrc. +.TP +\-n +Inibisce l'uso di un file di swap. +Il recupero dopo una caduta di macchina diventa impossibile. +Utile per editare un file su un supporto molto lento (ad es. floppy). +Il comando ":set uc=0" ha lo stesso effetto. +Per abilitare il recupero usare ":set uc=200". +.TP +\-nb +Diviene un Editor server per NetBeans. Vedere la documentazione per dettagli. +.TP +\-o[N] +Apri N finestre in orizzontale. +Se N manca, apri una finestra per ciascun file. +.TP +\-O[N] +Apri N finestre, in verticale. +Se N manca, apri una finestra per ciascun file. +.TP +\-p[N] +Apri N pagine di linguette. +Quando N 猫 omesso, apri una pagine di linguette per ciascun file. +.TP +\-R +Modo Read-only (Sola Lettura). +Imposta l'opzione 'readonly'. +Si pu貌 ancora modificare il buffer, ma il file 猫 protetto da una riscrittura +involontaria. +Se si vuole davvero riscrivere il file, occorre aggiungere un punto esclamativo +al comando Ex, come in ":w!". +L'opzione \-R implica anche l'opzione \-n (vedere sotto). +L'opzione 'readonly' pu貌 essere annullata con ":set noro". +Vedere ":help 'readonly'". +.TP +\-r +Lista file di swap, e informazioni su come usarli per ripristinare file. +.TP +\-r {file} +Modo Recovery (ripristino). +Il file di swap 猫 usato per recuperare una sessione di edit finita male. +Il file di swap 猫 un file con lo stesso nome file del file di testo +editato, col suffisso ".swp". +Vedere ":help recovery". +.TP +\-s +Modo silenzioso. Solo quando invocato come "Ex" o quando l'opzione +"\-e" 猫 stata data prima dell'opzione "\-s". +.TP +\-s {scriptin} +Lo script file {scriptin} 猫 letto. +I caratteri nel file sono interpretati come se immessi da terminale. +Lo stesso risultato si pu貌 ottenere col comando ":source! {scriptin}". +Se la fine del file di input viene raggiunta prima che Vim termini, +l'ulteriore input verr脿 preso dalla tastiera. +.TP +\-T {terminale} +Dice a +.B Vim +quale tipo di terminale state usando. +Utile solo se il terminale non viene riconosciuto correttamente da Vim. +Dovrebbe essere un terminale noto a +.B Vim +(internamente) o definito nei file termcap o terminfo. +.TP +\-u {vimrc} +Usa i comandi nel file {vimrc} per inizializzazioni. +Tutte le altre inizializzazioni non sono eseguite. +Usate questa opzione per editare qualche file di tipo speciale. +Si possono anche omettere tutte le inizializzazioni dando come nome "NONE". +Vedere ":help initialization" da vim per ulteriori dettagli. +.TP +\-U {gvimrc} +Usa i comandi nel file {gvimrc} per inizializzazioni GUI. +Tutte le altre inizializzazioni GUI non sono eseguite. +Si possono anche omettere tutte le inizializzazioni GUI dando come nome "NONE". +Vedere ":help gui-init" da vim per ulteriori dettagli. +.TP +\-V[N] +Verboso. Vim manda messaggi relativi ai file di script che esegue +e quando legge o scrive un file viminfo. Il numero opzionale N 猫 il valore +dell'opzione 'verbose'. Il valore predefinito 猫 10. +.TP +\-v +Inizia +.B Vim +in Modo Vi, come se il programma eseguibile fosse "vi". Questo ha +effetto solo quando Vim viene invocato con il nome "ex". +.TP +\-w {scriptout} +Ogni carattere immesso viene registrato nel file {scriptout}, +finch茅 non si esce da +.B Vim. +Utile se si vuole creare uno script file da usare con "vim \-s" o +":source!". +Se il file {scriptout} esiste, quel che immettete viene aggiunto in fondo. +.TP +\-W {scriptout} +Come \-w, ma uno script file esistente viene sovrascritto. +.TP +\-x +Uso di cifratura nella scrittura dei file. Verr脿 chiesta una chiave di cifratura. +.TP +\-X +Non connettersi al server X. Vim parte pi霉 rapidamente, +ma il titolo della finestra e la clipboard non sono usati. +.TP +\-y +Eseguire +.B Vim +in Modo Easy (semplificato), come se l'eseguibile invocato sia "evim" o "eview". +Fa s矛 che +.B Vim +si comporti come un editor che usa solo il mouse e i caratteri. +.TP +\-Z +Modo ristretto. Vim si comporta come se invocato con un nome che inizia per "r". +.TP +\-\- +Specifica la fine delle opzioni. +Argomenti specificati dopo questo sono considerati nomi file. +Si pu貌 usare per editare un file il cui nome inizi per '-'. +.TP +\-\-clean +Richiede di non usare alcun file di personalizzazione (vimrc, plugin, etc.). +Utile per verificare se un problema persiste invocando Vim "originale". +.TP +\-\-echo\-wid +Solo per GUI GTK: Visualizza Window ID su "stdout". +.TP +\-\-help +Vim d脿 un messaggio ed esce, come con l'argomento "\-h". +.TP +\-\-literal +Considera i nomi passati come argomenti letterali, senza espandere metacaratteri. +Non ha effetto in Unix, dove la shell espande comunque i metacaratteri. +.TP +\-\-noplugin +Non caricare plugin. Implicito se si specifica \-u NONE. +.TP +\-\-remote +Connettersi a un server Vim e chiedere di editare i file elencati come altri +argomenti. Se non si trova un server viene dato un messaggio e i file sono +editati nel Vim corrente. +.TP +\-\-remote\-expr {expr} +Connettersi a un server Vim, valutare {expr} e stampare il risultato su "stdout". +.TP +\-\-remote\-send {chiavi} +Connettersi a un server Vim e spedirgli {chiavi}. +.TP +\-\-remote\-silent +Come \-\-remote, ma senza avvisare se non si trova un server. +.TP +\-\-remote-wait +Come \-\-remote, ma Vim non termina finch茅 i file non sono stati editati. +.TP +\-\-remote\-wait\-silent +Come \-\-remote\-wait, ma senza avvisare se non si trova un server. +.TP +\-\-serverlist +Elenca i nomi di tutti i server Vim disponibili. +.TP +\-\-servername {nome} +Usa {nome} come nome server. Usato per il Vim corrente, a meno che sia usato +con l'argomento \-\-remote, nel qual caso indica il server a cui connettersi. +.TP +\-\-socketid {id} +Solo per GUI GTK: Usa meccanismo GtkPlug per eseguire gvim in un'altra finestra. +.TP +\-\-startuptime {nome_file} +Durante la fase iniziale, scrive messaggi di log al file {nome_file}. +.TP +\-\-version +Stampa la versione di Vim ed esci. +.SH AIUTO ONLINE +Battere ":help" in +.B Vim +per iniziare. +Battere ":help argomento" per ricevere aiuto su uno specifico argomento. +Per esempio: ":help ZZ" per ricevere aiuto sul comando "ZZ". +Usare <Tab> e CTRL\-D per completare gli argomenti (":help cmdline\-completion"). +Ci sono "tag" nei file di help per passare da un argomento a un altro +(simili a legami ipertestuali, vedere ":help"). +Tutti i file di documentazione possono essere navigati cos矛. Ad es.: +":help syntax.txt". +.SH FILE +.TP 15 +/usr/local/lib/vim/doc/*.txt +I file di documentazione di +.B Vim +. +Usare ":help doc\-file\-list" per avere la lista completa. +.TP +/usr/local/lib/vim/doc/tags +Il file di tags usato per trovare informazioni nei file di documentazione. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Inizializzazioni sintattiche a livello di sistema. +.TP +/usr/local/lib/vim/syntax/*.vim +File di colorazione sintattica per vari linguaggi. +.TP +/usr/local/lib/vim/vimrc +Inizializzazioni +.B Vim +a livello di sistema. +.TP +~/.vimrc +Inizializzazioni personali di +.B Vim +. +.TP +/usr/local/lib/vim/gvimrc +Inizializzazioni gvim a livello di sistema. +.TP +~/.gvimrc +Inizializzazioni personali di +.TP +/usr/local/lib/vim/optwin.vim +Script Vim usato dal comando ":options", da usare per visualizzare e impostare opzioni. +.TP +/usr/local/lib/vim/menu.vim +Inizializzazioni del men霉 gvim a livello di sistema. +.TP +/usr/local/lib/vim/bugreport.vim +Script Vim per generare una segnalazione di errore. Vedere ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script Vim per determinare il tipo di un file dal suo nome. Vedere ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script Vim per determinare il tipo di un file dal suo contenuto. Vedere ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +File usati per stampa PostScript. +.PP +Per informazioni aggiornate [in inglese \- NdT] vedere la home page di Vim: +.br +<URL:http://www.vim.org/> +.SH VEDERE ANCHE +vimtutor(1) +.SH AUTORE +Buona parte di +.B Vim +猫 stato scritto da Bram Moolenaar, con molto aiuto da parte di altri. +Vedere ":help credits" in +.B Vim. +.br +.B Vim +猫 basato su Stevie, scritto da: Tim Thompson, +Tony Andrews e G.R. (Fred) Walter. +In verit脿, poco o nulla 猫 rimasto del loro codice originale. +.SH BACHI +Probabili. +Vedere ":help todo" per una lista di problemi noti. +.PP +Si noti che un certo numero di comportamenti che possono essere considerati errori +da qualcuno, sono in effetti causati da una riproduzione fin troppo fedele del +comportamento di Vi. Se si ritiene che altre cose siano errori "perch茅 Vi si comporta +diversamente", si dia prima un'occhiata al file vi_diff.txt (o si immetta +:help vi_diff.txt da Vim). +Un'occhiata va data anche alle opzioni 'compatible' e 'cpoptions. diff --git a/runtime/doc/vim-ja.UTF-8.1 b/runtime/doc/vim-ja.UTF-8.1 new file mode 100644 index 0000000..e18211e --- /dev/null +++ b/runtime/doc/vim-ja.UTF-8.1 @@ -0,0 +1,492 @@ +.TH VIM 1 "2021 Jun 13" +.SH 鍚嶅墠 +vim \- Vi IMproved, 銉椼儹銈般儵銉炪伄銉嗐偔銈广儓銈ㄣ儑銈c偪 +.SH 鏇稿紡 +.br +.B vim +[options] [file ..] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t tag +.br +.B vim +[options] \-q [errorfile] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH 瑾槑 +.B Vim +銇 Vi 浜掓彌銇儐銈偣銉堛偍銉囥偅銈裤仹銇欍 +銇┿伄銈堛亞銇ó椤炪伄銉椼儸銈ゃ兂銉嗐偔銈广儓銇с倐绶ㄩ泦銇с亶銇俱仚銆 +鐗广伀銆併儣銉偘銉┿儬銇法闆嗐伀鍔涖倰鐧烘彯銇椼伨銇欍 +.PP +Vi 銇銇忋伄鏀硅壇銇屽姞銇堛倝銈屻仸銇勩伨銇: +澶氭銈€兂銉夈偉銆併優銉儊銈︺偅銉炽儔銈︺併優銉儊銉愩儍銉曘偂銆佹鏂囧挤瑾胯〃绀恒併偝銉炪兂銉夈儵銈ゃ兂绶ㄩ泦銆併儠銈°偆銉悕瑁滃畬銆併儤銉儣銆併儞銈搞儱銈€儷閬告姙銆併仾銇┿仾銇┿ +.B Vim +銇 Vi 銇仌銇勩伀銇ゃ亜銇︺伄瑕佺磩銇 ":help vi_diff.txt" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.PP +.B Vim +銇疅琛屼腑銇 ":help" 銈炽優銉炽儔銇с儤銉儣銈掑紩銇忋亾銇ㄣ亴銇с亶銇俱仚銆 +涓嬭銆併偑銉炽儵銈ゃ兂銉樸儷銉椼伄闋呫倰鍙傜収銇椼仸銇忋仩銇曘亜銆 +.PP +.B Vim +銇銇倛銇嗐仾銈炽優銉炽儔銇ц捣鍕曘仹銇嶃伨銇欍 +.PP + vim file +.PP +姝g⒑銇浉寮忋伅娆°伄閫氥倞銇с仚: +.PP + vim [options] [filelist] +.PP +filelist 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆佺┖銇儛銉冦儠銈°亴闁嬨亱銈屻伨銇欍 +鎸囧畾銇椼仧鍫村悎銇佷互涓嬨伄鍥涖仱銇亞銇°仼銈屻亱涓銇ゃ伄鏂规硶銇с儠銈°偆銉亴闁嬨亱銈屻伨銇欍 +.TP 12 +file .. +銉曘偂銈ゃ儷銇儶銈广儓銆 +涓鐣洰銇儠銈°偆銉亴銈儸銉炽儓銉曘偂銈ゃ儷銇仾銈娿併儛銉冦儠銈°伀瑾伩杈笺伨銈屻伨銇欍 +銈兗銈姐儷銇併儛銉冦儠銈°伄涓琛岀洰銇疆銇嬨倢銇俱仚銆 +浠栥伄銉曘偂銈ゃ儷銈掕〃绀恒仚銈嬨伀銇 ":next" 銈炽優銉炽儔銈掍娇銇c仸銇忋仩銇曘亜銆 +銉曘偂銈ゃ儷鍚嶃亴銉銉冦偡銉ャ仹濮嬨伨銈嬨儠銈°偆銉倰闁嬨亸鍫村悎銇 +filelist 銇墠銇 "\-\-" 銈掓寚瀹氥仐銇︺亸銇犮仌銇勩 +.TP +\- +銉曘偂銈ゃ儷銇婧栧叆鍔涖亱銈夎銇胯炯銇俱倢銇俱仚銆傘偝銉炪兂銉夈伅妯欐簴銈ㄣ儵銉 +(tty銇嬨倝銇叆鍔涖伀銇仯銇︺亜銈嬨伅銇) 銇嬨倝瑾伩杈笺伨銈屻伨銇欍 +.TP +\-t {tag} +闁嬨亸銉曘偂銈ゃ儷銇ㄣ偒銉笺偨銉伄鍒濇湡浣嶇疆銇 "tag" 銇緷瀛樸仐銇俱仚銆俫oto label 銇竴绋仹銇欍 +tags 銉曘偂銈ゃ儷銇嬨倝 {tag} 銇屾绱€仌銈屻侀枹閫c仐銇熴儠銈°偆銉亴銈儸銉炽儓銉曘偂銈ゃ儷銇仾銈娿伨銇欍 +銇濄仐銇︺侀枹閫c仐銇熴偝銉炪兂銉夈亴瀹熻銇曘倢銇俱仚銆 +銇撱倢銇富銇 C 瑷瑾炪伄銉曘偂銈ゃ儷銈掗枊銇忋仺銇嶃伀浣裤倧銈屻伨銇欍 +銇濄伄鍫村悎 {tag} 銇枹鏁般仾銇┿倰鎸囧畾銇椼仸浣裤亜銇俱仚銆 +闁㈡暟銈掑惈銈撱仹銇勩倠銉曘偂銈ゃ儷銇岄枊銇嬨倢銆併仢銇枹鏁般伄鍏堥牠銇偒銉笺偨銉亴绉诲嫊銇欍倠銆併仺銇勩亞鍕曚綔銇仾銈娿伨銇欍 +瑭炽仐銇忋伅 ":help tag\-commands" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP +\-q [errorfile] +銈偆銉冦偗銉曘偅銉冦偗銈广儮銉笺儔銇ц捣鍕曘仐銇俱仚銆 +[errorfile] 銇寚瀹氥仐銇熴儠銈°偆銉亴瑾伩杈笺伨銈屻佹渶鍒濄伄銈ㄣ儵銉笺亴琛ㄧず銇曘倢銇俱仚銆 +[errorfile] 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆併偑銉椼偡銉с兂 'errorfile' 銇屼娇銈忋倢銇俱仚 +(鍒濇湡瑷畾銇丄miga 銇с伅 "AztecC.Err"銆併仢銇粬銇偡銈广儐銉犮仹銇 "errors.err" 銇с仚)銆 +":cn" 銈炽優銉炽儔銇ф銇偍銉┿兗銇偢銉c兂銉椼仹銇嶃伨銇欍 +瑭炽仐銇忋伅 ":help quickfix" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.PP +.B Vim +銇佽捣鍕曘仌銈屻仧銇ㄣ亶銇疅琛屻儠銈°偆銉伄鍚嶅墠銇倛銇c仸鍕曚綔銈掑銇堛伨銇 +(瀹熻銉曘偂銈ゃ儷銇疅浣撱亴鍚屻仒銇с亗銇c仸銈)銆 +.TP 10 +vim +"鏅" 銇捣鍕曘仐銇俱仚銆傛婧栥伄鐘舵厠銇с仚銆 +.TP +ex +Ex 銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +銉庛兗銉炪儷銉€兗銉夈伀鍒囥倞鏇裤亪銈嬨伀銇 ":vi" 銈炽優銉炽儔銈掍娇銇c仸銇忋仩銇曘亜銆 +寮曟暟銇 "\-e" 銈掓寚瀹氥仐銇熷牬鍚堛仺鍚屻仒銇с仚銆 +.TP +view +瑾伩杈笺伩灏傜敤銉€兗銉夈仹璧峰嫊銇椼伨銇欍傘儠銈°偆銉伄淇濆瓨銇屽埗闄愩仌銈屻伨銇欍 +寮曟暟銇 "\-R" 銈掓寚瀹氥仐銇熷牬鍚堛仺鍚屻仒銇с仚銆 +.TP +gvim gview +GUI 銉愩兗銈搞儳銉炽 +鏂般仐銇勩偊銈c兂銉夈偊銈掗枊銇勩仸璧峰嫊銇椼伨銇欍 +寮曟暟銇 "\-g" 銈掓寚瀹氥仐銇熷牬鍚堛仺鍚屻仒銇с仚銆 +.TP +evim eview +绨℃槗銉€兗銉夈伄 GUI 銉愩兗銈搞儳銉炽 +鏂般仐銇勩偊銈c兂銉夈偊銈掗枊銇勩仸璧峰嫊銇椼伨銇欍 +寮曟暟銇 "\-y" 銈掓寚瀹氥仐銇熷牬鍚堛仺鍚屻仒銇с仚銆 +.TP +rvim rview rgvim rgview +涓婅銇ㄥ悓銇樸仹銇欍亴銆佸埗闄愩儮銉笺儔銇ц捣鍕曘仐銇俱仚銆傘偡銈с儷銈炽優銉炽儔銈掑疅琛屻仐銇熴倞銆 +.B Vim +銈掋偟銈广儦銉炽儔銇椼仧銈娿仹銇嶃仾銇忋仾銈娿伨銇欍 +寮曟暟銇 "\-Z" 銈掓寚瀹氥仐銇熷牬鍚堛仺鍚屻仒銇с仚銆 +.SH 銈儣銈枫儳銉 +銉曘偂銈ゃ儷鍚嶃伄鍓嶃仹銈傚緦銈嶃仹銈傘佸ソ銇嶃仾闋嗙暘銇с偑銉椼偡銉с兂銈掓寚瀹氥仹銇嶃伨銇欍 +銉戙儵銉°兗銈裤倰蹇呰銇ㄣ仐銇亜寮曟暟銇佷竴銇ゃ伄銉銉冦偡銉ャ伀銇俱仺銈併仸鎸囧畾銇с亶銇俱仚銆 +.TP 12 ++[num] +涓鐣洰銇儠銈°偆銉伄 "num" 琛岀洰銇偒銉笺偨銉倰绉诲嫊銇椼伨銇欍 +"num" 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆佷竴琛岀洰銇偒銉笺偨銉亴绉诲嫊銇椼伨銇欍 +.TP ++/{pat} +涓鐣洰銇儠銈°偆銉伄銆佹渶鍒濄伀 {pat} 銇岃銇ゃ亱銇c仧琛屻伀銈兗銈姐儷銇岀Щ鍕曘仐銇俱仚銆 +妞滅储銉戙偪銉笺兂銇仱銇勩仸銇 ":help search\-pattern" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP ++{command} +.TP +\-c {command} +涓鐣洰銇儠銈°偆銉亴瑾伩杈笺伨銈屻仧寰屻伀 {command} 銇屽疅琛屻仌銈屻伨銇欍 +{command} 銇 Ex 銈炽優銉炽儔銇ㄣ仐銇﹁В閲堛仌銈屻伨銇欍 +{command} 銇┖鐧姐倰鍚倎銈嬪牬鍚堛伅銆併儉銉栥儷銈偐銉笺儓銇у洸銈撱仹銇忋仩銇曘亜 (銈枫偋銉伀渚濆瓨)銆 +渚: vim "+set si" main.c +.br +Note: "+" 銇 "\-c" 銇悎銈忋仜銇 10 鍊嬨伨銇ф寚瀹氥仹銇嶃伨銇欍 +.TP +\-S {file} +涓鐣洰銇儠銈°偆銉亴瑾伩杈笺伨銈屻仧寰屻伀 {file} 銇屽疅琛屻仌銈屻伨銇欍 +銇撱倢銇 \-c "source {file}" 銇ㄥ悓銇樺嫊浣溿仹銇欍 +{file} 銇厛闋亴 '\-' 銇牬鍚堛伅浣裤亪銇俱仜銈撱 +{file} 銇岀渷鐣ャ仌銈屻仧鍫村悎銇"Session.vim" 銇屼娇銈忋倢銇俱仚 +(銇熴仩銇 \-S 銇屾渶寰屻伄寮曟暟銇犮仯銇熷牬鍚堛伄銇)銆 +.TP +\-\-cmd {command} +"\-c" 銇ㄥ悓銇樸仹銇欍亴銆乿imrc 銈掑嚘鐞嗐仚銈嬪墠銇偝銉炪兂銉夈亴瀹熻銇曘倢銇俱仚銆 +銇撱倢銈夈伄銈炽優銉炽儔銇 "\-c" 銈炽優銉炽儔銇ㄣ伅鍒ャ伀銆10 鍊嬨伨銇ф寚瀹氥仹銇嶃伨銇欍 +.TP +\-A +銈€儵銉撱偄瑾炪亴銈点儩銉笺儓銇曘倢銇︺亜銇︺併偄銉┿儞銈㈣獮銈兗銉炪儍銉椼亴銇傘倠鍫村悎銇併偄銉┿儞銈㈣獮銉€兗銉夈仹璧峰嫊銇椼伨銇 ('arabic' 銇屻偑銉炽伀銇倞銇俱仚)銆 +鍙虫í鏇搞亶銇儠銈°偆銉倰绶ㄩ泦銇с亶銇俱仚銆 +銈点儩銉笺儓銇曘倢銇︺亜銇亜鍫村悎銇偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.TP +\-b +銉愩偆銉娿儶銉€兗銉夈 +銉愩偆銉娿儶銉曘偂銈ゃ儷銈掔法闆嗐仚銈嬨仧銈併伄銈儣銈枫儳銉炽亴銇勩亸銇ゃ亱瑷畾銇曘倢銇俱仚銆 +.TP +\-C +浜掓彌銉€兗銉夈'compatible' 銈儣銈枫儳銉炽亴銈兂銇仾銈娿伨銇欍 + .vimrc 銉曘偂銈ゃ儷銇湁鐒°伀闁€倧銈夈仛銆 +.B Vim +銇嫊浣溿亴 Vi 浜掓彌銇仾銈娿伨銇欍 +.TP +\-d +宸垎銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +2 鍊嬨亱銈 8 鍊嬨伄銉曘偂銈ゃ儷銈掑紩鏁般伀鎸囧畾銇椼仸銇忋仩銇曘亜銆 +鎸囧畾銇曘倢銇熴儠銈°偆銉亴闁嬨亱銈屻併仢銈屻倝銇儠銈°偆銉伄宸垎銇岃〃绀恒仌銈屻伨銇欍 +vimdiff(1) 銇ㄥ悓妲樸伄鍕曚綔銇с仚銆 +.TP +\-d {device} +{device} 銈掔鏈仺銇椼仸闁嬨亶銇俱仚銆 +Amiga 銇с伄銇夸娇銇勩伨銇欍 +渚: +"\-d con:20/30/600/150". +.TP +\-D +銉囥儛銉冦偘銆 +銈广偗銉儣銉堛伄鏈鍒濄伄銈炽優銉炽儔銇屽疅琛屻仌銈屻倠銇ㄣ亾銈嶃亱銈夈儑銉愩儍銈般儮銉笺儔銈掗枊濮嬨仐銇俱仚銆 +.TP +\-e +Ex 銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "ex" 銇牬鍚堛仺鍚屻仒銇с仚銆 +.TP +\-E +鏀硅壇鐗 Ex 銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "exim" 銇牬鍚堛仺鍚屻仒銇с仚銆 +.TP +\-f +銉曘偐銈€偘銉┿偊銉炽儔銆侴UI 銉愩兗銈搞儳銉炽仹銆併儣銉偦銈广倰銉曘偐銉笺偗銇椼仾銇忋仾銈娿伨銇欍 +Amiga 銇牬鍚堛伅銆佹柊銇椼亜銈︺偅銉炽儔銈︺仹鍐嶈捣鍕曘仐銇亸銇倞銇俱仚銆 +銉°兗銉偨銉曘儓銇仼銇嬨倝 +.B Vim +銈掕捣鍕曘仐銇︺佺法闆嗐亴绲傘倧銈嬨伨銇у緟姗熴仐銇熴亜銈堛亞銇牬鍚堛伀浣裤仯銇︺亸銇犮仌銇勩 +Amiga 銇с伅銆":sh" 銇 "!" 銈炽優銉炽儔銇鑳姐仐銇亸銇倞銇俱仚銆 +.TP +\-\-nofork +銉曘偐銈€偘銉┿偊銉炽儔銆侴UI 銉愩兗銈搞儳銉炽仹銆併儣銉偦銈广倰銉曘偐銉笺偗銇椼仾銇忋仾銈娿伨銇欍 +.TP +\-F +銉氥儷銈枫偄瑾炪亴銈点儩銉笺儓銇曘倢銇︺亜銇︺併儦銉偡銈㈣獮銈兗銉炪儍銉椼亴銇傘倠鍫村悎銇併儦銉偡銈㈣獮銉€兗銉夈仹璧峰嫊銇椼伨銇 ('fkmap' 銇 'rightleft' 銇屻偑銉炽伀銇倞銇俱仚)銆 +鍙虫í鏇搞亶銇儠銈°偆銉倰绶ㄩ泦銇с亶銇俱仚銆 +銈点儩銉笺儓銇曘倢銇︺亜銇亜鍫村悎銇偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.TP +\-g +GUI 銇屻偟銉濄兗銉堛仌銈屻仸銇勩倠鍫村悎銇丟UI 銇ц捣鍕曘仐銇俱仚銆 +銈点儩銉笺儓銇曘倢銇︺亜銇亜鍫村悎銇偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.TP +\-h +銈炽優銉炽儔銉┿偆銉冲紩鏁般倓銈儣銈枫儳銉炽伄銉樸儷銉椼倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.TP +\-H +銉樸儢銉┿偆瑾炪亴銈点儩銉笺儓銇曘倢銇︺亜銇︺併儤銉栥儵銈よ獮銈兗銉炪儍銉椼亴銇傘倠鍫村悎銇併儤銉栥儵銈よ獮銉€兗銉夈仹璧峰嫊銇椼伨銇 ('hkmap' 銇 'rightleft' 銇屻偑銉炽伀銇倞銇俱仚)銆 +鍙虫í鏇搞亶銇儠銈°偆銉倰绶ㄩ泦銇с亶銇俱仚銆 +銈点儩銉笺儓銇曘倢銇︺亜銇亜鍫村悎銇偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.TP +\-i {viminfo} +鍒濇湡瑷畾銇 "~/.viminfo" 銇唬銈忋倞銇乿iminfo 銉曘偂銈ゃ儷銈掕銇挎浉銇嶃仚銈嬮殯銇娇銇嗐儠銈°偆銉悕銈掓寚瀹氥仐銇俱仚銆 +"NONE" 銈掓寚瀹氥仚銈嬨仺銆.viminfo 銉曘偂銈ゃ儷銈掍娇銈忋仾銇勩倛銇嗐伀瑷畾銇с亶銇俱仚銆 +.TP +\-L +\-r 銇ㄥ悓銇樸仹銇欍 +.TP +\-l +lisp 銉€兗銉夈 +銈儣銈枫儳銉炽伄 'lisp' 銇 'showmatch' 銇屻偑銉炽伀銇倞銇俱仚銆 +.TP +\-m +銉曘偂銈ゃ儷銇鏇淬倰涓嶅彲鑳姐伀銇椼伨銇欍 +銈儣銈枫儳銉 'write' 銇屻偑銉曘伀銇倞銇俱仚銆 +銉愩儍銉曘偂銈掑鏇淬仚銈嬨亾銇ㄣ伅銇с亶銇俱仚銇屻併儠銈°偆銉倰淇濆瓨銇欍倠銇撱仺銇仹銇嶃伨銇涖倱銆 +.TP +\-M +澶夋洿銈掍笉鍙兘銇仐銇俱仚銆 +銈儣銈枫儳銉炽伄 'modifiable' 銇 'write' 銇屻偑銉曘伀銇倞銆併儠銈°偆銉伄澶夋洿銇ㄤ繚瀛樸亴銇с亶銇亸銇倞銇俱仚銆 +Note: 銇濄倢銈夈伄銈儣銈枫儳銉炽倰瑷畾銇欍倢銇板鏇淬仹銇嶃倠銈堛亞銇仾銈娿伨銇欍 +.TP +\-N +闈炰簰鎻涖儮銉笺儔銆'compatible' 銈儣銈枫儳銉炽亴銈儠銇仾銈娿伨銇欍 + .vimrc 銉曘偂銈ゃ儷銇湁鐒°伀闁€倧銈夈仛銆 +.B Vim +銇敼鑹仌銈屻仧姗熻兘銇屾湁鍔广伀銇倞銇俱仚銆俈i 銇ㄣ伄浜掓彌鎬с亴灏戙仐澶便倧銈屻伨銇欍 +.TP +\-n +銈广儻銉冦儣銉曘偂銈ゃ儷銈掍娇鐢ㄣ仐銇俱仜銈撱 +銈儵銉冦偡銉ャ仐銇︺倐銉偒銉愩儶銇с亶銇亸銇倞銇俱仚銆 +銉曘儹銉冦償銉笺儑銈c偣銈伄銈堛亞銇潪甯搞伀浣庨熴仾銉°儑銈c偄銇儠銈°偆銉倰瑾伩鏇搞亶銇欍倠銇ㄣ亶銇究鍒┿仹銇欍 +":set uc=0" 銇ㄨō瀹氥仐銇︺倐鍚屻仒銇с仚銆 +鎴汇仚銇伅 ":set uc=200" 銇ㄨō瀹氥仐銇︺亸銇犮仌銇勩 +.TP +\-nb +NetBeans 銇ㄦ帴缍氥仐銆併偍銉囥偅銈裤偟銉笺儛銉笺伀銇倞銇俱仚銆 +瑭炽仐銇忋伅銉樸儷銉椼倰鍙傜収銇椼仸銇忋仩銇曘亜銆 +.TP +\-o[N] +N 鍊嬨伄銈︺偅銉炽儔銈︺倰姘村钩鍒嗗壊銇ч枊銇嶃伨銇欍 +N 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆佸紩鏁般伄銉曘偂銈ゃ儷銈掑嬪垾銇偊銈c兂銉夈偊銇ч枊銇嶃伨銇欍 +.TP +\-O[N] +N 鍊嬨伄銈︺偅銉炽儔銈︺倰鍨傜洿鍒嗗壊銇ч枊銇嶃伨銇欍 +N 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆佸紩鏁般伄銉曘偂銈ゃ儷銈掑嬪垾銇偊銈c兂銉夈偊銇ч枊銇嶃伨銇欍 +.TP +\-p[N] +N 鍊嬨伄銈裤儢銉氥兗銈搞倰闁嬨亶銇俱仚銆 +N 銈掔渷鐣ャ仐銇熷牬鍚堛伅銆佸紩鏁般伄銉曘偂銈ゃ儷銈掑嬪垾銇偪銉栥儦銉笺偢銇ч枊銇嶃伨銇欍 +.TP +\-R +瑾伩杈笺伩灏傜敤銉€兗銉夈 +銈儣銈枫儳銉 'readonly' 銇屻偑銉炽伀銇倞銇俱仚銆 +銉愩儍銉曘偂銈掑鏇淬仚銈嬨亾銇ㄣ伅銇с亶銇俱仚銇屻侀枔閬曘仯銇︺儠銈°偆銉倰涓婃浉銇嶃仐銇︺仐銇俱亞銇倰闃层亹銇撱仺銇屻仹銇嶃伨銇欍 +銉曘偂銈ゃ儷銈掍繚瀛樸仐銇熴亜鍫村悎銇":w!" 銇倛銇嗐伀銆丒x 銈炽優銉炽儔銇劅鍢嗙銈掍粯銇戙仸銇忋仩銇曘亜銆 +\-R 銈儣銈枫儳銉炽伅 \-n 銈儣銈枫儳銉炽伄鍔规灉銈傚惈銈撱仹銇勩伨銇 (涓婅鍙傜収)銆 +銈儣銈枫儳銉 'readonly' 銇 ":set noro" 銇с偑銉曘伀銇с亶銇俱仚銆 +瑭炽仐銇忋伅 ":help 'readonly'" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP +\-r +銈广儻銉冦儣銉曘偂銈ゃ儷銇竴瑕с倰琛ㄧず銇椼伨銇欍傘儶銈儛銉伀闁€仚銈嬫儏鍫便倐琛ㄧず銇曘倢銇俱仚銆 +.TP +\-r {file} +銉偒銉愩儶銉€兗銉夈 +銈广儻銉冦儣銉曘偂銈ゃ儷銈掍娇銇c仸銆併偗銉┿儍銈枫儱銇椼仧绶ㄩ泦銈汇儍銈枫儳銉炽倰寰╂椿銇曘仜銇俱仚銆 +銈广儻銉冦儣銉曘偂銈ゃ儷銇併儠銈°偆銉悕銇 ".swp" 銈掑姞銇堛仧鍚嶅墠銇儠銈°偆銉仹銇欍 +瑭炽仐銇忋伅 ":help recovery" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP +\-s +銈点偆銉兂銉堛儮銉笺儔銆"ex" 銇ㄣ亜銇嗗悕鍓嶃仹璧峰嫊銇欍倠銇嬨"\-e" 銈儣銈枫儳銉炽伄寰屻仹 +"\-s" 銈儣銈枫儳銉炽亴鎸囧畾銇曘倢銇熷牬鍚堛伄銇裤 +.TP +\-s {scriptin} +{scriptin} 銈掋偣銈儶銉椼儓銉曘偂銈ゃ儷銇ㄣ仐銇﹁銇胯炯銇俱倢銇俱仚銆 +銉曘偂銈ゃ儷涓伄鏂囧瓧鍒椼伅銆佹墜銇у叆鍔涖仐銇熴仺銇嶃仺鍚屻仒銈堛亞銇嚘鐞嗐仌銈屻伨銇欍 +銇撱倢銇 ":source! {scriptin}" 銇ㄥ悓銇樺嫊浣溿仹銇欍 +銈ㄣ儑銈c偪銇岀祩浜嗐仚銈嬪墠銇儠銈°偆銉伄绲傘倧銈娿伨銇ц銇胯炯銈撱仩鍫村悎銆併仢銈屼互闄嶃伅銈兗銉溿兗銉夈亱銈夊叆鍔涖倰瑾伩杈笺伩銇俱仚銆 +.TP +\-T {terminal} +绔湯銇悕鍓嶃倰鎸囧畾銇椼伨銇欍 +绔湯銇岃嚜鍕曠殑銇獚璀樸仌銈屻仾銇勫牬鍚堛伀浣裤仯銇︺亸銇犮仌銇勩 +.B Vim +銇岀祫銇胯炯銇裤仹銈点儩銉笺儓銇椼仸銇勩倠鍚嶅墠銇嬨 +termcap 銇俱仧銇 terminfo 銉曘偂銈ゃ儷銇у畾缇┿仌銈屻仸銇勩倠鍚嶅墠銈掓寚瀹氥仐銇︺亸銇犮仌銇勩 +.TP +\-u {vimrc} +{vimrc} 銉曘偂銈ゃ儷銈掍娇銇c仸鍒濇湡鍖栥仐銇俱仚銆 +浠栥伄鍒濇湡鍖栧嚘鐞嗐伅銈广偔銉冦儣銇曘倢銇俱仚銆 +鐗规畩銇儠銈°偆銉倰绶ㄩ泦銇欍倠鍫村悎銇仼銇娇銇c仸銇忋仩銇曘亜銆 +銇欍伖銇︺伄鍒濇湡鍖栥倰銈广偔銉冦儣銇欍倠銇伅 "NONE" 銈掓寚瀹氥仐銇︺亸銇犮仌銇勩 +瑭炽仐銇忋伅 ":help initialization" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP +\-U {gvimrc} +{gvimrc} 銉曘偂銈ゃ儷銈掍娇銇c仸 GUI 銈掑垵鏈熷寲銇椼伨銇欍 +浠栥伄 GUI 銇垵鏈熷寲銇偣銈儍銉椼仌銈屻伨銇欍 +銇欍伖銇︺伄 GUI 銇垵鏈熷寲銈掋偣銈儍銉椼仚銈嬨伀銇 "NONE" 銈掓寚瀹氥仐銇︺亸銇犮仌銇勩 +瑭炽仐銇忋伅 ":help gui\-init" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.TP +\-V[N] +鍐楅暦銉€兗銉夈 +銈广偗銉儣銉堛儠銈°偆銉倰瀹熻銇椼仧銈 viminfo 銉曘偂銈ゃ儷銈掕銇挎浉銇嶃仚銈嬨仧銇炽伀銉°儍銈汇兗銈搞倰琛ㄧず銇椼伨銇欍 +N 銇寚瀹氥仐銇熸暟鍊ゃ亴 'verbose' 銇ō瀹氥仌銈屻伨銇欍 +鐪佺暐銇椼仧鍫村悎銇 10 銇仾銈娿伨銇欍 +.TP +\-v +Vi 銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "vi" 銇牬鍚堛仺鍚屻仒銇с仚銆 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "ex" 銇牬鍚堛仩銇戝姽鏋溿亴銇傘倞銇俱仚銆 +.TP +\-w {scriptout} +鍏ュ姏銇椼仧鏂囧瓧銈 {scriptout} 銇閷层仐銇俱仚銆 +"vim \-s" 銈 "source!" 銇у疅琛屻仚銈嬨仧銈併伄銈广偗銉儣銉堛儠銈°偆銉倰浣滄垚銇欍倠銇伀渚垮埄銇с仚銆 +{scriptout} 銉曘偂銈ゃ儷銇屻仚銇с伀瀛樺湪銇椼仧鍫村悎銇拷鍔犱繚瀛樸仌銈屻伨銇欍 +.TP +\-W {scriptout} +\-w 銇ㄥ悓銇樸仹銇欍亴銆併儠銈°偆銉亴銇欍仹銇瓨鍦ㄣ仐銇熷牬鍚堛伅涓婃浉銇嶃仌銈屻伨銇欍 +.TP +\-x +銉曘偂銈ゃ儷銈掓殫鍙峰寲銇椼仸鏇搞亶杈笺伩銇俱仚銆傛殫鍙峰寲銈兗銇叆鍔涖儣銉兂銉椼儓銇岃〃绀恒仌銈屻伨銇欍 +.TP +\-X +X 銈点兗銉愩兗銇ㄩ氫俊銇椼伨銇涖倱銆傜鏈仹銇捣鍕曟檪闁撱倰鐭亸銇с亶銇俱仚銆 +銇椼亱銇椼併偊銈c兂銉夈偊銈裤偆銉堛儷銇鏇淬倓銈儶銉冦儣銉溿兗銉夈伅浣裤亪銇亸銇倞銇俱仚銆 +.TP +\-y +绨℃槗銉€兗銉夈仹璧峰嫊銇椼伨銇欍 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "evim" 銈 "eview" 銇牬鍚堛仺鍚屻仒銇с仚銆 +.B Vim +銇嫊浣溿亴銉€兗銉夈儸銈广偍銉囥偅銈 (click-and-type editor) 銇倛銇嗐伀銇倞銇俱仚銆 +.TP +\-Z +鍒堕檺銉€兗銉夈 +瀹熻銉曘偂銈ゃ儷銇悕鍓嶃亴 "r" 銇у銇俱仯銇︺亜銈嬪牬鍚堛仺鍚屻仒銇с仚銆 +.TP +\-\- +銈儣銈枫儳銉虫寚瀹氥伄鏈熬銈掔ず銇欒鍙枫仹銇欍 +銇撱倢浠ラ檷銇紩鏁般伅銇欍伖銇︺儠銈°偆銉悕銇ㄣ仐銇︽壉銈忋倢銇俱仚銆 +銉曘偂銈ゃ儷鍚嶃亴 '\-' 銇у銇俱仯銇︺亜銈嬨儠銈°偆銉倰闁嬨亸銇ㄣ亶銇娇銇c仸銇忋仩銇曘亜銆 +.TP +\-\-clean +涓鍒囥伄鍊嬩汉瑷畾 (vimrc銆併儣銉┿偘銈ゃ兂銆併仢銇粬) 銈掍娇鐢ㄣ仐銇俱仜銈撱 +銇傘倠鍟忛銇屻偗銉兗銉炽仾 Vim 銈汇儍銉堛偄銉冦儣銇у啀鐝俱仚銈嬨亱銈掔⒑瑾嶃仚銈嬨伄銇湁鐢ㄣ仹銇欍 +.TP +\-\-echo\-wid +GTK GUI 銇伩: Window ID 銈掓婧栧嚭鍔涖伀鍑哄姏銇椼伨銇欍 +.TP +\-\-help +銉樸儷銉椼倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍"\-h" 銇ㄥ悓銇樸仹銇欍 +.TP +\-\-literal +寮曟暟銇儠銈°偆銉悕銈掋儶銉嗐儵銉枃瀛楀垪銇ㄣ仐銇︽壉銇勩伨銇欍傘儻銈ゃ儷銉夈偒銉笺儔銈掑睍闁嬨仐銇俱仜銈撱 +Unix 銇倛銇嗐伀銆併偡銈с儷銇屻儻銈ゃ儷銉夈偒銉笺儔銈掑睍闁嬨仚銈嬪牬鍚堛伅姗熻兘銇椼伨銇涖倱銆 +.TP +\-\-noplugin +銉椼儵銈般偆銉炽倰銉兗銉夈仐銇俱仜銈撱俓-u NONE 銇亾銇嫊浣溿倰鍚倱銇с亜銇俱仚銆 +.TP +\-\-remote +Vim 銈点兗銉愩兗銇ㄩ氫俊銇椼佸紩鏁般伀鎸囧畾銇曘倢銇熴儠銈°偆銉倰 Vim 銈点兗銉愩兗銇ч枊銇嶃伨銇欍 +銈点兗銉愩兗銇屽瓨鍦ㄣ仐銇亜鍫村悎銇併偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇曘倢銆佽捣鍕曚腑銇 Vim 銇с儠銈°偆銉亴闁嬨亱銈屻伨銇欍 +.TP +\-\-remote\-expr {expr} +Vim 銈点兗銉愩兗銇ㄩ氫俊銇椼亄expr} 銇笌銇堛倝銈屻仧寮忋倰 Vim 銈点兗銉愩兗銇у疅琛屻仐銆佺祼鏋溿倰妯欐簴鍑哄姏銇嚭鍔涖仐銇俱仚銆 +.TP +\-\-remote\-send {keys} +Vim 銈点兗銉愩兗銇ㄩ氫俊銇椼亄keys} 銇笌銇堛倝銈屻仧銈兗銈 Vim 銈点兗銉愩兗銇佷俊銇椼伨銇欍 +.TP +\-\-remote\-silent +\-\-remote 銇ㄥ悓銇樸仹銇欍亴銆併偟銉笺儛銉笺亴瀛樺湪銇椼仾銇忋仸銈傘偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼伨銇涖倱銆 +.TP +\-\-remote\-wait +\-\-remote 銇ㄥ悓銇樸仹銇欍亴銆併儠銈°偆銉亴闁嬨亱銈屻倠銇倰纰鸿獚銇с亶銈嬨伨銇у緟姗熴仐銇俱仚銆 +.TP +\-\-remote\-wait\-silent +\-\-remote\-wait 銇ㄥ悓銇樸仹銇欍亴銆併偟銉笺儛銉笺亴瀛樺湪銇椼仾銇忋仸銈傘偍銉┿兗銉°儍銈汇兗銈搞倰琛ㄧず銇椼伨銇涖倱銆 +.TP +\-\-serverlist +Vim 銈点兗銉愩兗銇竴瑕с倰琛ㄧず銇椼伨銇欍 +.TP +\-\-servername {name} +銈点兗銉愩兗銇悕鍓嶃倰 {name} 銇ō瀹氥仐銇俱仚銆 +\-\-remote 寮曟暟銈掓寚瀹氥仐銇亱銇c仧鍫村悎銇佽捣鍕曚腑銇 Vim 銇悕鍓嶃仺銇椼仸浣裤倧銈屻倠銇仹銆佸緦銇嬨倝銇濄伄鍚嶅墠銈掍娇銇c仸銈点兗銉愩兗閫氫俊銇с亶銇俱仚銆 +.TP +\-\-socketid {id} +GTK GUI 銇伩: GtkPlug 銉°偒銉嬨偤銉犮倰浣裤仯銇 gvim 銈掑垾銇偊銈c兂銉夈偊銇腑銇у疅琛屻仐銇俱仚銆 +.TP +\-\-startuptime {file} +璧峰嫊鍑︾悊銇枔銆佺祵閬庢檪闁撱伄銉°儍銈汇兗銈搞倰銉曘偂銈ゃ儷 {fname} 銇浉銇嶅嚭銇椼伨銇欍 +.TP +\-\-version +銉愩兗銈搞儳銉虫儏鍫便倰琛ㄧず銇椼仸绲備簡銇椼伨銇欍 +.SH 銈兂銉┿偆銉炽儤銉儣 +銉樸儷銉椼倰闁嬨亸銇伅銆 +.B Vim +銇腑銇 ":help" 銇ㄥ叆鍔涖仐銇︺亸銇犮仌銇勩 +":help 瑾裤伖銇熴亜闋呯洰" 銇ㄥ叆鍔涖仚銈屻伆銆佹寚瀹氥仐銇熼爡鐩伄銉樸儷銉椼亴琛ㄧず銇曘倢銇俱仚銆 +渚: "ZZ" 銈炽優銉炽儔銇儤銉儣銈掕〃绀恒仚銈嬨伀銇 ":help ZZ" 銇ㄥ叆鍔涖仐銇俱仚銆 +<Tab> 銈 CTRL\-D 銈掍娇銇c仸瑁滃畬銇欍倠銇撱仺銈傘仹銇嶃伨銇 +(":help cmdline\-completion" 鍙傜収)銆 +銉樸儷銉椼伀銇侀爡鐩亱銈夐爡鐩伕銈搞儯銉炽儣銇с亶銈嬨倛銇嗐伀銈裤偘銇屽煁銈佽炯銇俱倢銇︺亜銇俱仚 +(銉忋偆銉戙兗銉兂銈伄銈堛亞銇倐銇仹銇欍":help" 鍙傜収)銆 +銇欍伖銇︺伄銉樸儷銉椼儠銈°偆銉伅銇撱伄鏂规硶銇ч枊銇忋亾銇ㄣ亴銇с亶銇俱仚銆 +渚: ":help syntax.txt"銆 +.SH 銉曘偂銈ゃ儷 +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim +銇儤銉儣銉曘偂銈ゃ儷銆 +銉曘偂銈ゃ儷銇竴瑕с伅 ":help doc\-file\-list" 銇杓夈仌銈屻仸銇勩伨銇欍 +.TP +/usr/local/lib/vim/doc/tags +銉樸儷銉椼倰妞滅储銇欍倠銇熴倎銇 tags 銉曘偂銈ゃ儷銆 +.TP +/usr/local/lib/vim/syntax/syntax.vim +銈枫偣銉嗐儬銇鏂囧畾缇╁垵鏈熷寲銉曘偂銈ゃ儷銆 +.TP +/usr/local/lib/vim/syntax/*.vim +銇勩倣銇勩倣銇█瑾炵敤銇鏂囧畾缇┿儠銈°偆銉 +.TP +/usr/local/lib/vim/vimrc +銈枫偣銉嗐儬銇 +.B Vim +鍒濇湡鍖栥儠銈°偆銉 +.TP +~/.vimrc +銉︺兗銈躲兗銇 +.B Vim +鍒濇湡鍖栥儠銈°偆銉 +.TP +/usr/local/lib/vim/gvimrc +銈枫偣銉嗐儬銇 gvim 鍒濇湡鍖栥儠銈°偆銉 +.TP +~/.gvimrc +銉︺兗銈躲兗銇 gvim 鍒濇湡鍖栥儠銈°偆銉 +.TP +/usr/local/lib/vim/optwin.vim +":options" 銈炽優銉炽儔銇т娇銈忋倢銈嬨儠銈°偆銉 +銈儣銈枫儳銉炽倰琛ㄧず銇椼仧銈婅ō瀹氥仐銇熴倞銇с亶銇俱仚銆 +.TP +/usr/local/lib/vim/menu.vim +銈枫偣銉嗐儬銇儭銉嬨儱銉煎垵鏈熷寲銉曘偂銈ゃ儷銆俫vim 銇т娇銇勩伨銇欍 +.TP +/usr/local/lib/vim/bugreport.vim +銉愩偘銉儩銉笺儓銈掔敓鎴愩仚銈嬨偣銈儶銉椼儓銆":help bugs" 鍙傜収銆 +.TP +/usr/local/lib/vim/filetype.vim +銉曘偂銈ゃ儷鍚嶃亱銈夈儠銈°偆銉偪銈ゃ儣銈掑垽瀹氥仚銈嬨偣銈儶銉椼儓銆":help 'filetype'" 鍙傜収銆 +.TP +/usr/local/lib/vim/scripts.vim +銉曘偂銈ゃ儷銇唴瀹广亱銈夈儠銈°偆銉偪銈ゃ儣銈掑垽瀹氥仚銈嬨偣銈儶銉椼儓銆":help 'filetype'" 鍙傜収銆 +.TP +/usr/local/lib/vim/print/*.ps +PostScript 鍗板埛銇娇銈忋倢銈嬨儠銈°偆銉 +.PP +鏈鏂般伄鎯呭牨銇 VIM 銇儧銉笺儬銉氥兗銈搞倰鍙傜収銇椼仸銇忋仩銇曘亜: +.br +<URL:http://www.vim.org/> +.SH 闁㈤i爡鐩 +vimtutor(1) +.SH 钁楄 +.B Vim +銇伝銇ㄣ倱銇┿伄姗熻兘銇 Bram Moolenaar 銇岄枊鐧恒仐銆佸銇忋伄浜恒亴鍗斿姏銇椼伨銇椼仧銆 +":help credits" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.br +.B Vim +銇 Stevie 銈掑熀銇仐銇︺亜銇俱仚銆係tevie 銇 Tim Thompson銆乀ony Andrews銆 +G.R. (Fred) Walter 銇倛銇c仸闁嬬櫤銇曘倢銇俱仐銇熴 +銇熴仩銇椼併偑銉偢銉娿儷銇偝銉笺儔銇倐銇嗐伝銇ㄣ倱銇╂畫銇c仸銇勩伨銇涖倱銆 +.SH 銉愩偘 +鏃㈢煡銇儛銈般伅 ":help todo" 銇杓夈仌銈屻仸銇勩伨銇欍 +.PP +Vi 銇嫊浣溿倰蹇犲疅銇啀鐝俱仐銇熺祼鏋溿佸銇忋伄浜恒亴銉愩偘銇犮仺鎬濄亞銈堛亞銇鑳姐倐銇勩亸銇ゃ亱銇傘倞銇俱仚銆 +"銇撱伄鍕曚綔銇 Vi 銇ㄩ仌銇" 銇嬨倝銉愩偘銇犮仺鎬濄仯銇熷牬鍚堛伅銆 vi_diff.txt 銈掔⒑瑾嶃仐銇︺伩銇︺亸銇犮仌銇 +(銉曘偂銈ゃ儷銈掗枊銇忋亱銆 Vim 銇嬨倝 ":help vi_diff.txt" 銇ㄥ叆鍔)銆 +銈儣銈枫儳銉炽伄 'compatible' 銇 'cpoptions' 銈傜⒑瑾嶃仐銇︺亸銇犮仌銇勩 diff --git a/runtime/doc/vim-pl.1 b/runtime/doc/vim-pl.1 new file mode 100644 index 0000000..c1ec05f --- /dev/null +++ b/runtime/doc/vim-pl.1 @@ -0,0 +1,558 @@ +.TH VIM 1 "2006 kwi 11" +.SH NAME +vim \- Vi rozbudowany, edytor tekstu dla programisty +.SH SYNOPSIS +.br +.B vim +[opcje] [plik ..] +.br +.B vim +[opcje] \- +.br +.B vim +[opcje] \-t znacznik +.br +.B vim +[opcje] \-q [plik_b酬du] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH OPIS +.B Vim +jest edytorem tekstu kompatybilnym z Vi. Mo縠 by +u縴wany do edycji wszelkiego rodzaju plik體 tekstowych. +U縴teczny zw砤szcza przy edycji program體. +.PP +Posiada wiele usprawnie w por體naniu z Vi: wielopoziomowe cofanie zmian, +wiele okien i bufor體, pod秝ietlanie sk砤dni, edycja linii polece, +uzupe硁ianie nazw plik體, pomoc on-line, wizualna selekcja, itd. +Zobacz ":help vi_diff.txt" dla podsumowania r罂nic pomi阣zy +.B Vimem +i Vi. +.PP +W czasie korzystania z +.B Vima +mo縩a uzyska obszern pomoc z systemu pomocy on-line dzi阫i poleceniu ":help". +Zobacz rozdzia POMOC ON-LINE poni縠j. +.PP +Najcz甓ciej +.B Vim +jest uruchamiany do edycji pojedynczego pliku poleceniem +.PP + vim plik +.PP +Bardziej og髄nie +.B Vim +jest uruchamiany poprzez: +.PP + vim [opcje] [lista plik體] +.PP +Je秎i brak listy plik體 edytor rozpocznie z pustym buforem. W innym +wypadku istnieje dok砤dnie jedna z czterech mo縧iwo禼i by wybra jeden +lub wi阠ej plik體 do edycji. +.TP 12 +plik .. +Lista nazw plik體. +Pierwsza nazwa b阣zie nazw bie勘cego pliku, kt髍y zostanie wczytany +do bufora. Kursor zostanie umieszczony w pierwszym wierszu. Do +kolejnych plik體 mo縩a przej舵 dzi阫i poleceniu ":next". By otworzy +plik, kt髍ego nazwa zaczyna si od my秎nika nale縴 list plik體 +poprzedzi "\-\-". +.TP +\- +Plik do edycji jest wczytany ze standardowego wej禼ia. Polecenia s +odczytywane ze standardowego wyj禼ia b酬d體, kt髍ym powinien by +terminal (tty). +.TP +\-t {znacznik} +Plik do edycji i pocz眛kowa pozycja kursora zale縴 od "znacznika", +rodzaju etykiety goto. +{znacznika} szuka si w pliku tags, zwi眤any z nim plik staje si +plikiem bie勘cym i wykonuje si powi眤ane polecenie. +Zazwyczaj u縴wa si tego sposobu dla program體 w C, w kt髍ych wypadku +{znacznik} mo縠 by nazw funkcji. +W efekcie plik zawieraj眂y okre秎on funkcj staje si plikiem +bie勘cym a kursor jest umieszczony na pocz眛ku funkcji. +Zobacz ":help tag-commands". +.TP +\-q [plik_b酬d體] +Zacznij w trybie quickFix. +Plik [plik_b酬d體] zostaje zinterpretowany i poka縠 si pierwszy b潮d. +Je秎i brak opcji [plik_b酬d體] nazwa pliku zostanie pobrana z opcji +\&'errorfile' (domy秎nie "AztecC.Err" dla Amigi, "errros.err" dla innych +system體. +Do kolejnych b酬d體 mo縩a przeskoczy dzi阫i poleceniu ":cn". +Zobacz ":help quickfix". +.PP +W zale縩o禼i od wywo砤nia +.B Vim +zachowuje si inaczej (program mo縠 by ca硑 czas tym samym +plikiem). +.TP 10 +vim +"Normalny" spos骲, wszystko jest domy秎ne. +.TP +ex +Zacznij w trybie Ex. +Przejd do trybu Normalnego poleceniem ":vi". +Mo縩a tak縠 uruchomi poprzez argument "\-e". +.TP +view +Zacznij w trybie tylko do odczytu. W ten spos骲 b阣ziesz chroniony +przed zapisywaniem pliku. Mo縩a tak縠 uruchomi poprzez argument +"\-R". +.TP +gvim gview +Wersja GUI. +Uruchamia nowe okno. +Mo縩a tak縠 uruchomi poprzez argument "\-g". +.TP +evim eview +Wersja GUI w 砤twym trybie. +Uruchamia nowe okno. +Mo縩a tak縠 uruchomi poprzez argument "\-y". +.TP +rvim rview rgvim rgview +Podobnie jak powy縠j, ale z ograniczeniami. Nie b阣zie mo縩a uruchomi +polece pow硂ki lub zawiesi +.B Vima. +Mo縩a tak縠 uruchomi poprzez argument "\-Z". +.SH OPCJE +Opcje mo縩a poda w dowolnej kolejno禼i, przed lub po nazwach plik體. +Opcje bez argument體 mo縩a 潮czy po pojedynczym my秎niku. +.TP 12 ++[num] +W pierwszym pliku kursor zostanie umieszczony w wierszu "num". +Je秎i brak "num" kursor zostanie umieszczony w ostatnim wierszu. +.TP ++/{wz髍} +W pierwszym pliku kursor zostanie umieszczony na pierwszym wyst眕ieniu +{wz髍}. +Zobacz ":help search-pattern" by dowiedzie si jakie s mo縧iwe +wzorce wyszukiwania. +.TP ++{polecenie} +.TP +\-c {polecenie} +{polecenie} zostanie wykonane po tym jak wczyta si pierwszy plik. +{polecenie} jest interpretowane jako polecenie Ex. +Je秎i {poleceni} zawiera bia砮 znaki musi by umieszczone w podw骿nych +cudzys硂wach (zale縴 to od u縴wanej pow硂ki). +Przyk砤d: vim "+set si" main.c +.br +Uwaga: Mo縩a u縴 do 10 polece "+" lub "\-c". +.TP +\-S {plik} +{plik} zostanie zinterpretowany po wczytaniu pierwszego pliku. +Jest r體nowa縩e \-c "source {plik}". +{plik} nie mo縠 zaczyna si '\-'. +Je秎i nie podano {plik} zostanie u縴ty "Session.vim" (dzia砤 tylko +wtedy je秎i \-S jest ostatnim argumentem). +.TP +\-\-cmd {polecenie} +Podobne do "\-c", ale polecenie jest wykonywane tu przed +interpretacj jakiegokolwiek pliku vimrc. +Mo縩a u縴 do 10 takich polece, niezale縩ie od polece od "\-c" +.TP +\-A +Je秎i +.B Vim +zosta skompilowany ze wsparciem dla j陑yk體 arabskich (edycja od +prawej do lewej i arabska mapa klawiatury) ta opcja uruchamia +.B Vima +w trybie arabskim, np. ustawia si opcja 'arabic'. W innym wypadku +pojawi si komunikat b酬du i +.B Vim +zako馽zy dzia砤nie. +.TP +\-b +Tryb binarny. +Ustawi si kilka opcji, kt髍e umo縧iwi edycj plik體 binarnych lub +wykonywalnych. +.TP +\-C +Kompatybilny. Ustawia opcj 'compatible'. +W ten spos骲 +.B Vim +b阣zie zachowywa si jak Vi, nawet je秎i istnieje plik .vimrc. +.TP +\-d +Uruchom w trybie diff. +Powinno si u縴 dw骳h, trzech lub czterech nazwy plik體 jako argument體. +.B Vim +otworzy wszystkie te pliki i poka縠 r罂nice mi阣zy nimi. +Dzia砤 jak vimdiff(1). +.TP +\-d {urz眃zenie} +Otw髍z {urz眃zenie} by u縴wa jako terminal. +Tylko na Amidze. +Przyk砤d: +"\-d con:20/30/600/150". +.TP +\-D +Debugowanie. Przejd do trybu debugowanie wykonuj眂 pierwsze polecenie +ze skryptu. +.TP +\-e +Uruchom +.B Vima +w trybie Ex, dzia砤 tak samo jakby wywo砤no program jako "ex". +.TP +\-E +Uruchom +.B Vima +w ulepszonym trybie Ex, dzia砤 tak samo jakby wywo砤no program jako +"exim". +.TP +\-f +Pierszy plan. Dla wersji GUI. +.B Vim +nie nie oddzieli si od pow硂ki w jakiej zosta uruchomiony. Na Amidze +.B Vim +nie jest uruchomiony ponownie by otworzy nowe okno. +Opcja powinna by u縴ta kiedy +.B Vim +jest wywo硑wany przez program, kt髍y ma zaczeka na koniec sesji (np. +mail). +Na Amidze polecenia ":sh" i ":!" nie b阣 dzia砤. +.TP +\-\-nofork +Pierwszy plan. Dla wersji GUI. +.B Vim +nie oddzieli si od pow硂ki w jakiej zosta uruchomiony. +.TP +\-F +Je秎i Vim zosta skompilowany ze wsparciem FKMAP dla edycji tekst體 od +prawej do lewej i mapowania klawiatury Farsi, ta opcja uruchomi +.B Vima +w trybie Farsi, np. zostawi ustawione opcje 'fkmap' i 'rightleft'. +W innym wypadku pojawi si komunikat b酬du i +.B Vim +zako馽zy dzia砤nie. +.TP +\-g +Je秎i +.B Vim +zosta skompilowany ze wsparciem dla GUI ta opcja uruchomi GUI. +W innym wypadku pojawi si komunikat b酬du i +.B Vim +zako馽zy dzia砤nie. +.TP +\-h +Wy秝ietli kr髏k pomoc o argumentach linii polece i opcjach. Potem +.B Vim +zako馽zy dzia砤nie. +.TP +\-H +Je秎i +.B Vim +zosta skompilowany ze wsparciem RIGHTLEFT dla edycji od prawej do +lewej oraz ma mapowanie klawiatury dla hebrajskiego, ta opcja uruchomi +.B Vima +w trybie hebrajskim, np. ustawi opcje 'hkmap' i 'rightleft'. +W innym wypadku pojawi si komunikat b酬du i +.B Vim +zako馽zy dzia砤nie. +.TP +\-i {viminfo} +Kiedy +.B Vim +u縴wa pliku viminfo ta opcja wska縠 jakiego pliku u縴 zamiast +domy秎nego "~/.viminfo". +Mo縩a te omin辨 u縴cie pliku .viminfo przez podanie nazwy "NONE". +.TP +\-L +To samo co \-r. +.TP +\-l +Tryb Lisp. +Ustawia opcje 'lisp' i 'showmatch'. +.TP +\-m +Zmiana pliku jest niemo縧iwa. +Przestawia opcj 'write'. +Mo縩a zmienia zawarto舵 bufora, ale zapisanie pliku nie jest +mo縧iwe. +.TP +\-M +Opcje 'modifiable' i 'write' zostan wy潮czone, tak wi阠 zmiany +w pliku oraz ich zapisanie nie s mo縧iwe. Warto舵 tych opcji mo縩a +zmieni. +.TP +\-N +Tryb niekompatybilny. Przestawia opcj 'compatible'. Dzi阫i temu +.B Vim +b阣zie zachowywa si odrobin lepiej, ale mniej zgodnie z Vi nawet +je秎i nie istnieje plik .vimrc. +.TP +\-n +Nie powstanie plik wymiany. Odzyskanie pliku po wypadku nie b阣zie +mo縧iwe. +Wygodne je秎i instnieje potrzeba edycji na bardzo wolnym medium (np. +dyskietce). Ten cel mo縩a osi眊n辨 tak縠 przez ":set uc=0". Mo縩a +odwr骳i przez ":set uc=200". +.TP +\-nb +Uruchom jako serwer edytora dla NetBeans. Zobacz dokumentacj by +dowiedzie si wi阠ej. +.TP +\-o[N] +Otw髍z N okien w stosie. +Kiedy brak N, otw髍z jedno okno dla ka縟ego pliku. +.TP +\-O[N] +Otw髍z N okien obok siebie. +Kiedy brak N, otw髍z jedno okno dla ka縟ego pliku. +.TP +\-p[N] +Otw髍z N kart. +Kiedy brak N, otw髍z jedn kart dla ka縟ego pliku. +.TP +\-R +Tryb tylko do odczytu. +Zostanie ustawiona opcja 'readonly'. +Ca硑 czas mo縩a zmienia bufor, ale b阣zie istnia砤 blokada by chroni +przed przypadkowym zapisaniem pliku. +Je秎i chcesz zapisa plik dodaj wykrzyknik do polecenia Ex, np. ":w!". +Opcja \-R implikuje opcj \-n (zobacz poni縠j). +Opcja 'readonly' mo縠 zosta przestawiona poprzez ":set noro". +Zobacz ":help 'readonly'". +.TP +\-r +Wypisz list plik體 wymiany razem z informacjami o nich. +.TP +\-r {plik} +Tryb odzyskiwania danych. +Plik wymiany zostanie wykorzystany do odzyskania gwa硉ownie przerwanej sesji. +Plik wymiany to plik z tak sam nazw co plik oryginalny z dodanym ".swp". +Zobacz ":help recovery". +.TP +\-s +Tryb cichy. Rozpocz阾y tylko kiedy uruchomiony jako "Ex" lub opcja +"\-e" zosta砤 podana przed opcj "\-s". +.TP +\-s {skrypt} +Zostanie wczytany plik {skrypt}. +Znaki w pliku zostan zinterpretowane jakby by硑 wpisywane. +To samo mo縩a osi眊n辨 poprzez polecenie ":source! {skrypt}". +Je秎i osi眊ni阾o koniec pliku zanim edytor zako馽zy dzia砤nie, dalsze +znaki odczytywane s z klawiatury. +.TP +\-T {terminal} +Przekazuje +.B Vimowi +nazw terminalu jakiego u縴wasz. +Wymagane tylko wtedy je秎i nie dzia砤 automatycznie. +Powinien by to terminal znany +.B Vimowi +(builtin) lub zdefiniowany w plikach termcap lub terminfo. +.TP +\-u {vimrc} +U縴j polece z pliku {vimrc} w czasie uruchamiania. +Wszystkie inne mo縧iwe pliki uruchamiania zostan pomini阾e. +U縴waj do edytowania plik體 specjalnych. +Mo縩a pomin辨 tak縠 wszystkie mo縧iwe pliki uruchamiania poprzez +podanie nazwy "NONE". +Zobacz ":help initialization" by pozna wi阠ej szczeg蟪體. +.TP +\-U {gvimrc} +U縴j polece z pliku {gvimrc} w czasie uruchamiania GUI. +Wszystkie inne mo縧iwe pliki uruchamiania GUI zostan pomini阾e. +Mo縩a pomin辨 tak縠 wszystkie mo縧iwe pliki uruchamiania GUI poprzez +podanie nazwy "NONE". +Zobacz ":help gui-init" by pozna wi阠ej szczeg蟪體. +.TP +\-V[N] +Tryb gadatliwy. Wypisz wiadomo禼i o tym jaki pliki s wczytywane +i o informacjach pobieranych i dodawanych do pliku viminfo. Opcjonalny +argument N jest warto禼i 'verbose'. Domy秎nie 10. +.TP +\-v +Uruchom +.B Vima +w trybie Vi, tak jakby program by nazwany "vi". Ma znaczenie +tylko wtedy je秎i program nazwany jest "ex". +.TP +\-w {plik} +Wszystkie wci秐i阠ia klawiszy, a do zako馽zenia dzia砤nia programu, +s zapisywane w {plik} . +U縴teczne je秎i chce si stworzy skrypt do u縴cia z "vim \-s" lub +":source!". +Je秎i {plik} istnieje, znaki s dopisywane. +.TP +\-W {plik} +Podobnie do \-w, ale istniej眂y plik jest nadpisywany. +.TP +\-x +U縴j szyfrowania podczas zapisywania plik體. Zostaniesz poproszony +o podanie klucza. +.TP +\-X +Nie 潮cz z serwerem X. Skraca czas uruchamiania w terminalu, ale tytu +okna i schowek nie b阣 wykorzystywane. +.TP +\-y +Uruchom +.B Vima +w 砤twym trybie, tak jakby program zosta wywo砤ny "evim" lub "eview". +.B Vim +b阣zie zachowywa si bardziej jak edytor kliknij-i-wpisz. +.TP +\-Z +Tryb ograniczony. Zachowuje si jakby nazwa programu zaczyna砤 si od +"r". +.TP +\-\- +Oznacza koniec opcji. +Argumenty po tej opcji b阣 traktowane jak nazwy plik體. U縴wa si do +otwierania plik體, kt髍ych nazwy zaczynaj si od '\-'. +.TP +\-\-echo\-wid +Wy潮cznie GTK GUI: wypisz ID okna na standardowe wyj禼ie. +.TP +\-\-help +Wy秝ietl informacj o pomocy i zako馽zy, to samo co"\-h". +.TP +\-\-literal +Potraktuj nazwy plik體 dos硂wnie i nie rozwi眤uj kwantyfikator體. Nie +ma znaczenia na Uniksach gdzie pow硂ka rozwi眤uje kwantyfikatory. +.TP +\-\-noplugin +Pomi 砤dowanie wtyczek. Implikowane przy \-u NONE. +.TP +\-\-remote +Po潮cz si z serwerem Vima i edytuj w nim reszt plik體 podanych jako +argumenty. Je秎i nie znaleziono serwera zostanie zg硂szony b潮d a pliki zostan +otwarte w bie勘cym Vimie. +.TP +\-\-remote\-expr {wyra縠nie} +Po潮cz z serwerem Vima, rozwi笨 w nim {wyra縠nie} i wypisz rozwi眤anie +na standardowe wyj禼ie. +.TP +\-\-remote\-send {klawisze} +Po潮cz z serwerem Vima i wy秎ij do niego {klawisze}. +.TP +\-\-remote\-silent +Tak samo jak \-remote, ale bez ostrze縠nia kiedy nie znaleziono +serwera. +.TP +\-\-remote\-wait +Tak samo jak \-remote, ale Vim nie zako馽zy dop髃i pliki pozostan +otwarte. +.TP +\-\-remote\-wait\-silent +Tak samo jak \-\-remote\-wait, ale bez ostrze縠nie kiedy nie +znaleziono serwera. +.TP +\-\-serverlist +Wypisz nazwy wszystkich serwer體 Vima jakie mo縩a znale兼. +.TP +\-\-servername {nazwa} +U縴j {nazwa} jako nazwy serwera. Wykorzystane dla bie勘cego Vima o ile +nie po潮czone z argumentem \-\-remote, wtedy jest to nazwa serwera do +po潮czenia. +.TP +\-\-socketid {id} +Wy潮cznie GTK GUI: U縴j mechanizmu GtkPlug by uruchomi gvima w innym +oknie. +.TP +\-\-version +Wypisz informacj o wersji i zako馽z. +.SH POMOC ON-LINE +By rozpocz辨 wpisz ":help" w +.B Vimie +Wpisz ":help temat" by uzyska pomoc na okre秎ony temat. +Przyk砤d: ":help ZZ" by uzyska pomoc na temat polecenia "ZZ". +U縴j <Tab> i CTRL\-D aby uzupe硁i tematy (":help +cmdline\-completion"). W plikach pomocy istniej znaczniki by u砤twi +skakanie z jednego miejsca do innego (rodzaj link體 hipertekstowych, +zobacz ":help"). +Mo縩a w ten spos骲 zobaczy ca潮 dokumentacj, np. ":help syntax.txt". +.SH PLIKI +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentacja +.B Vima +U縴j ":help doc\-file\-list" aby uzyska pe硁 list. +.TP +/usr/local/lib/vim/doc/tags +Plik znacznik體 s硊縴 do znajdowania informacji w plikach dokumentacji. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Globalne uruchamianie pod秝ietlania sk砤dni. +.TP +/usr/local/lib/vim/syntax/*.vim +Pliki sk砤dni dla r罂nych j陑yk體. +.TP +/usr/local/lib/vim/vimrc +Globalny plik uruchamiania +.B Vima +.TP +~/.vimrc +Osobiste parametry uruchamiania +.B Vima +.TP +/usr/local/lib/vim/gvimrc +Globalne uruchamianie gvima. +.TP +~/.gvimrc +Osobiste parametry uruchamiania gvima. +.TP +/usr/local/lib/vim/optwin.vim +Skrypt u縴wany w poleceniu ":options", dobry spos骲 do przegl眃ania +i ustawiania opcji. +.TP +/usr/local/lib/vim/menu.vim +Globalne uruchamianie menu gvima. +.TP +/usr/local/lib/vim/bugreport.vim +Skrypt s硊勘cy do tworzenia raport體 o b酬dach. Zobacz ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Skrypt do wykrywania typu pliku wed硊g jego nazwy. Zobacz ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Skrypt do wykrywania typu pliku wed硊g jego zawarto禼i. Zobacz ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Pliku u縴wane do drukowania PostScriptu. +.PP +Naj秝ie縮ze wiadomo禼i na stronie +.B Vima: +.br +<URL:http://www.vim.org/> +.SH ZOBACZ TAK疎 +vimtutor(1) +.SH AUTOR +.B Vim +zosta napisany przez Brama Moolenaara z du勘 pomoc innych os骲. +Zobacz ":help credits" w +.B Vimie. +.br +.B Vim +bazuje na Steviem, nad kt髍ym pracowali: Tim Thompson, Tony Andrews +i G.R. (Fred) Walter. +Ma硂 ju zosta硂 z oryginalnego kodu. +.SH BJDY +Prawdopodobne. +Zobacz ":help todo" by pozna list znanych problem體. +.PP +Pami阾aj 縠 pewna ilo舵 problem體, kt髍e mog by uznawane przez +niekt髍ych ludzi za b酬dy s w rzeczywisto禼i spowodowane wierno禼i +w odtwarzaniu zachowania Vi. +Je秎i s眃zisz, 縠 inne rzeczy s b酬dami "poniewa Vi robi to +inaczej", powiniene przyjrze si bli縠j plikowi vi_diff.txt (lub +wpisa ":help vi_diff.txt" w Vimie). +Sprawd tak縠 opis opcji 'compatible' i 'cpoptions'. diff --git a/runtime/doc/vim-pl.UTF-8.1 b/runtime/doc/vim-pl.UTF-8.1 new file mode 100644 index 0000000..26c1b11 --- /dev/null +++ b/runtime/doc/vim-pl.UTF-8.1 @@ -0,0 +1,558 @@ +.TH VIM 1 "2006 kwi 11" +.SH NAME +vim \- Vi rozbudowany, edytor tekstu dla programisty +.SH SYNOPSIS +.br +.B vim +[opcje] [plik ..] +.br +.B vim +[opcje] \- +.br +.B vim +[opcje] \-t znacznik +.br +.B vim +[opcje] \-q [plik_b艂臋du] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH OPIS +.B Vim +jest edytorem tekstu kompatybilnym z Vi. Mo偶e by膰 +u偶ywany do edycji wszelkiego rodzaju plik贸w tekstowych. +U偶yteczny zw艂aszcza przy edycji program贸w. +.PP +Posiada wiele usprawnie艅 w por贸wnaniu z Vi: wielopoziomowe cofanie zmian, +wiele okien i bufor贸w, pod艣wietlanie sk艂adni, edycja linii polece艅, +uzupe艂nianie nazw plik贸w, pomoc on-line, wizualna selekcja, itd. +Zobacz ":help vi_diff.txt" dla podsumowania r贸偶nic pomi臋dzy +.B Vimem +i Vi. +.PP +W czasie korzystania z +.B Vima +mo偶na uzyska膰 obszern膮 pomoc z systemu pomocy on-line dzi臋ki poleceniu ":help". +Zobacz rozdzia艂 POMOC ON-LINE poni偶ej. +.PP +Najcz臋艣ciej +.B Vim +jest uruchamiany do edycji pojedynczego pliku poleceniem +.PP + vim plik +.PP +Bardziej og贸lnie +.B Vim +jest uruchamiany poprzez: +.PP + vim [opcje] [lista plik贸w] +.PP +Je艣li brak listy plik贸w edytor rozpocznie z pustym buforem. W innym +wypadku istnieje dok艂adnie jedna z czterech mo偶liwo艣ci by wybra膰 jeden +lub wi臋cej plik贸w do edycji. +.TP 12 +plik .. +Lista nazw plik贸w. +Pierwsza nazwa b臋dzie nazw膮 bie偶膮cego pliku, kt贸ry zostanie wczytany +do bufora. Kursor zostanie umieszczony w pierwszym wierszu. Do +kolejnych plik贸w mo偶na przej艣膰 dzi臋ki poleceniu ":next". By otworzy膰 +plik, kt贸rego nazwa zaczyna si臋 od my艣lnika nale偶y list臋 plik贸w +poprzedzi膰 "\-\-". +.TP +\- +Plik do edycji jest wczytany ze standardowego wej艣cia. Polecenia s膮 +odczytywane ze standardowego wyj艣cia b艂臋d贸w, kt贸rym powinien by膰 +terminal (tty). +.TP +\-t {znacznik} +Plik do edycji i pocz膮tkowa pozycja kursora zale偶y od "znacznika", +rodzaju etykiety goto. +{znacznika} szuka si臋 w pliku tags, zwi膮zany z nim plik staje si臋 +plikiem bie偶膮cym i wykonuje si臋 powi膮zane polecenie. +Zazwyczaj u偶ywa si臋 tego sposobu dla program贸w w C, w kt贸rych wypadku +{znacznik} mo偶e by膰 nazw膮 funkcji. +W efekcie plik zawieraj膮cy okre艣lon膮 funkcj臋 staje si臋 plikiem +bie偶膮cym a kursor jest umieszczony na pocz膮tku funkcji. +Zobacz ":help tag-commands". +.TP +\-q [plik_b艂臋d贸w] +Zacznij w trybie quickFix. +Plik [plik_b艂臋d贸w] zostaje zinterpretowany i poka偶e si臋 pierwszy b艂膮d. +Je艣li brak opcji [plik_b艂臋d贸w] nazwa pliku zostanie pobrana z opcji +\&'errorfile' (domy艣lnie "AztecC.Err" dla Amigi, "errros.err" dla innych +system贸w. +Do kolejnych b艂臋d贸w mo偶na przeskoczy膰 dzi臋ki poleceniu ":cn". +Zobacz ":help quickfix". +.PP +W zale偶no艣ci od wywo艂ania +.B Vim +zachowuje si臋 inaczej (program mo偶e by膰 ca艂y czas tym samym +plikiem). +.TP 10 +vim +"Normalny" spos贸b, wszystko jest domy艣lne. +.TP +ex +Zacznij w trybie Ex. +Przejd藕 do trybu Normalnego poleceniem ":vi". +Mo偶na tak偶e uruchomi膰 poprzez argument "\-e". +.TP +view +Zacznij w trybie tylko do odczytu. W ten spos贸b b臋dziesz chroniony +przed zapisywaniem pliku. Mo偶na tak偶e uruchomi膰 poprzez argument +"\-R". +.TP +gvim gview +Wersja GUI. +Uruchamia nowe okno. +Mo偶na tak偶e uruchomi膰 poprzez argument "\-g". +.TP +evim eview +Wersja GUI w 艂atwym trybie. +Uruchamia nowe okno. +Mo偶na tak偶e uruchomi膰 poprzez argument "\-y". +.TP +rvim rview rgvim rgview +Podobnie jak powy偶ej, ale z ograniczeniami. Nie b臋dzie mo偶na uruchomi膰 +polece艅 pow艂oki lub zawiesi膰 +.B Vima. +Mo偶na tak偶e uruchomi膰 poprzez argument "\-Z". +.SH OPCJE +Opcje mo偶na poda膰 w dowolnej kolejno艣ci, przed lub po nazwach plik贸w. +Opcje bez argument贸w mo偶na 艂膮czy膰 po pojedynczym my艣lniku. +.TP 12 ++[num] +W pierwszym pliku kursor zostanie umieszczony w wierszu "num". +Je艣li brak "num" kursor zostanie umieszczony w ostatnim wierszu. +.TP ++/{wz贸r} +W pierwszym pliku kursor zostanie umieszczony na pierwszym wyst膮pieniu +{wz贸r}. +Zobacz ":help search-pattern" by dowiedzie膰 si臋 jakie s膮 mo偶liwe +wzorce wyszukiwania. +.TP ++{polecenie} +.TP +\-c {polecenie} +{polecenie} zostanie wykonane po tym jak wczyta si臋 pierwszy plik. +{polecenie} jest interpretowane jako polecenie Ex. +Je艣li {poleceni} zawiera bia艂e znaki musi by膰 umieszczone w podw贸jnych +cudzys艂owach (zale偶y to od u偶ywanej pow艂oki). +Przyk艂ad: vim "+set si" main.c +.br +Uwaga: Mo偶na u偶y膰 do 10 polece艅 "+" lub "\-c". +.TP +\-S {plik} +{plik} zostanie zinterpretowany po wczytaniu pierwszego pliku. +Jest r贸wnowa偶ne \-c "source {plik}". +{plik} nie mo偶e zaczyna膰 si臋 '\-'. +Je艣li nie podano {plik} zostanie u偶yty "Session.vim" (dzia艂a tylko +wtedy je艣li \-S jest ostatnim argumentem). +.TP +\-\-cmd {polecenie} +Podobne do "\-c", ale polecenie jest wykonywane tu偶 przed +interpretacj膮 jakiegokolwiek pliku vimrc. +Mo偶na u偶y膰 do 10 takich polece艅, niezale偶nie od polece艅 od "\-c" +.TP +\-A +Je艣li +.B Vim +zosta艂 skompilowany ze wsparciem dla j臋zyk贸w arabskich (edycja od +prawej do lewej i arabska mapa klawiatury) ta opcja uruchamia +.B Vima +w trybie arabskim, np. ustawia si臋 opcja 'arabic'. W innym wypadku +pojawi si臋 komunikat b艂臋du i +.B Vim +zako艅czy dzia艂anie. +.TP +\-b +Tryb binarny. +Ustawi si臋 kilka opcji, kt贸re umo偶liwi膮 edycj臋 plik贸w binarnych lub +wykonywalnych. +.TP +\-C +Kompatybilny. Ustawia opcj臋 'compatible'. +W ten spos贸b +.B Vim +b臋dzie zachowywa艂 si臋 jak Vi, nawet je艣li istnieje plik .vimrc. +.TP +\-d +Uruchom w trybie diff. +Powinno si臋 u偶y膰 dw贸ch, trzech lub czterech nazwy plik贸w jako argument贸w. +.B Vim +otworzy wszystkie te pliki i poka偶e r贸偶nice mi臋dzy nimi. +Dzia艂a jak vimdiff(1). +.TP +\-d {urz膮dzenie} +Otw贸rz {urz膮dzenie} by u偶ywa膰 jako terminal. +Tylko na Amidze. +Przyk艂ad: +"\-d con:20/30/600/150". +.TP +\-D +Debugowanie. Przejd藕 do trybu debugowanie wykonuj膮c pierwsze polecenie +ze skryptu. +.TP +\-e +Uruchom +.B Vima +w trybie Ex, dzia艂a tak samo jakby wywo艂ano program jako "ex". +.TP +\-E +Uruchom +.B Vima +w ulepszonym trybie Ex, dzia艂a tak samo jakby wywo艂ano program jako +"exim". +.TP +\-f +Pierszy plan. Dla wersji GUI. +.B Vim +nie nie oddzieli si臋 od pow艂oki w jakiej zosta艂 uruchomiony. Na Amidze +.B Vim +nie jest uruchomiony ponownie by otworzy膰 nowe okno. +Opcja powinna by膰 u偶yta kiedy +.B Vim +jest wywo艂ywany przez program, kt贸ry ma zaczeka膰 na koniec sesji (np. +mail). +Na Amidze polecenia ":sh" i ":!" nie b臋d膮 dzia艂a膰. +.TP +\-\-nofork +Pierwszy plan. Dla wersji GUI. +.B Vim +nie oddzieli si臋 od pow艂oki w jakiej zosta艂 uruchomiony. +.TP +\-F +Je艣li Vim zosta艂 skompilowany ze wsparciem FKMAP dla edycji tekst贸w od +prawej do lewej i mapowania klawiatury Farsi, ta opcja uruchomi +.B Vima +w trybie Farsi, np. zostawi膮 ustawione opcje 'fkmap' i 'rightleft'. +W innym wypadku pojawi si臋 komunikat b艂臋du i +.B Vim +zako艅czy dzia艂anie. +.TP +\-g +Je艣li +.B Vim +zosta艂 skompilowany ze wsparciem dla GUI ta opcja uruchomi GUI. +W innym wypadku pojawi si臋 komunikat b艂臋du i +.B Vim +zako艅czy dzia艂anie. +.TP +\-h +Wy艣wietli kr贸tk膮 pomoc o argumentach linii polece艅 i opcjach. Potem +.B Vim +zako艅czy dzia艂anie. +.TP +\-H +Je艣li +.B Vim +zosta艂 skompilowany ze wsparciem RIGHTLEFT dla edycji od prawej do +lewej oraz ma mapowanie klawiatury dla hebrajskiego, ta opcja uruchomi +.B Vima +w trybie hebrajskim, np. ustawi opcje 'hkmap' i 'rightleft'. +W innym wypadku pojawi si臋 komunikat b艂臋du i +.B Vim +zako艅czy dzia艂anie. +.TP +\-i {viminfo} +Kiedy +.B Vim +u偶ywa pliku viminfo ta opcja wska偶e jakiego pliku u偶y膰 zamiast +domy艣lnego "~/.viminfo". +Mo偶na te偶 omin膮膰 u偶ycie pliku .viminfo przez podanie nazwy "NONE". +.TP +\-L +To samo co \-r. +.TP +\-l +Tryb Lisp. +Ustawia opcje 'lisp' i 'showmatch'. +.TP +\-m +Zmiana pliku jest niemo偶liwa. +Przestawia opcj臋 'write'. +Mo偶na zmienia膰 zawarto艣膰 bufora, ale zapisanie pliku nie jest +mo偶liwe. +.TP +\-M +Opcje 'modifiable' i 'write' zostan膮 wy艂膮czone, tak wi臋c zmiany +w pliku oraz ich zapisanie nie s膮 mo偶liwe. Warto艣膰 tych opcji mo偶na +zmieni膰. +.TP +\-N +Tryb niekompatybilny. Przestawia opcj臋 'compatible'. Dzi臋ki temu +.B Vim +b臋dzie zachowywa艂 si臋 odrobin臋 lepiej, ale mniej zgodnie z Vi nawet +je艣li nie istnieje plik .vimrc. +.TP +\-n +Nie powstanie plik wymiany. Odzyskanie pliku po wypadku nie b臋dzie +mo偶liwe. +Wygodne je艣li instnieje potrzeba edycji na bardzo wolnym medium (np. +dyskietce). Ten cel mo偶na osi膮gn膮膰 tak偶e przez ":set uc=0". Mo偶na +odwr贸ci膰 przez ":set uc=200". +.TP +\-nb +Uruchom jako serwer edytora dla NetBeans. Zobacz dokumentacj臋 by +dowiedzie膰 si臋 wi臋cej. +.TP +\-o[N] +Otw贸rz N okien w stosie. +Kiedy brak N, otw贸rz jedno okno dla ka偶dego pliku. +.TP +\-O[N] +Otw贸rz N okien obok siebie. +Kiedy brak N, otw贸rz jedno okno dla ka偶dego pliku. +.TP +\-p[N] +Otw贸rz N kart. +Kiedy brak N, otw贸rz jedn膮 kart臋 dla ka偶dego pliku. +.TP +\-R +Tryb tylko do odczytu. +Zostanie ustawiona opcja 'readonly'. +Ca艂y czas mo偶na zmienia膰 bufor, ale b臋dzie istnia艂a blokada by chroni膰 +przed przypadkowym zapisaniem pliku. +Je艣li chcesz zapisa膰 plik dodaj wykrzyknik do polecenia Ex, np. ":w!". +Opcja \-R implikuje opcj臋 \-n (zobacz poni偶ej). +Opcja 'readonly' mo偶e zosta膰 przestawiona poprzez ":set noro". +Zobacz ":help 'readonly'". +.TP +\-r +Wypisz list臋 plik贸w wymiany razem z informacjami o nich. +.TP +\-r {plik} +Tryb odzyskiwania danych. +Plik wymiany zostanie wykorzystany do odzyskania gwa艂townie przerwanej sesji. +Plik wymiany to plik z tak膮 sam膮 nazw膮 co plik oryginalny z dodanym ".swp". +Zobacz ":help recovery". +.TP +\-s +Tryb cichy. Rozpocz臋ty tylko kiedy uruchomiony jako "Ex" lub opcja +"\-e" zosta艂a podana przed opcj膮 "\-s". +.TP +\-s {skrypt} +Zostanie wczytany plik {skrypt}. +Znaki w pliku zostan膮 zinterpretowane jakby by艂y wpisywane. +To samo mo偶na osi膮gn膮膰 poprzez polecenie ":source! {skrypt}". +Je艣li osi膮gni臋to koniec pliku zanim edytor zako艅czy艂 dzia艂anie, dalsze +znaki odczytywane s膮 z klawiatury. +.TP +\-T {terminal} +Przekazuje +.B Vimowi +nazw臋 terminalu jakiego u偶ywasz. +Wymagane tylko wtedy je艣li nie dzia艂a automatycznie. +Powinien by膰 to terminal znany +.B Vimowi +(builtin) lub zdefiniowany w plikach termcap lub terminfo. +.TP +\-u {vimrc} +U偶yj polece艅 z pliku {vimrc} w czasie uruchamiania. +Wszystkie inne mo偶liwe pliki uruchamiania zostan膮 pomini臋te. +U偶ywaj do edytowania plik贸w specjalnych. +Mo偶na pomin膮膰 tak偶e wszystkie mo偶liwe pliki uruchamiania poprzez +podanie nazwy "NONE". +Zobacz ":help initialization" by pozna膰 wi臋cej szczeg贸艂贸w. +.TP +\-U {gvimrc} +U偶yj polece艅 z pliku {gvimrc} w czasie uruchamiania GUI. +Wszystkie inne mo偶liwe pliki uruchamiania GUI zostan膮 pomini臋te. +Mo偶na pomin膮膰 tak偶e wszystkie mo偶liwe pliki uruchamiania GUI poprzez +podanie nazwy "NONE". +Zobacz ":help gui-init" by pozna膰 wi臋cej szczeg贸艂贸w. +.TP +\-V[N] +Tryb gadatliwy. Wypisz wiadomo艣ci o tym jaki pliki s膮 wczytywane +i o informacjach pobieranych i dodawanych do pliku viminfo. Opcjonalny +argument N jest warto艣ci膮 'verbose'. Domy艣lnie 10. +.TP +\-v +Uruchom +.B Vima +w trybie Vi, tak jakby program by艂 nazwany "vi". Ma znaczenie +tylko wtedy je艣li program nazwany jest "ex". +.TP +\-w {plik} +Wszystkie wci艣ni臋cia klawiszy, a偶 do zako艅czenia dzia艂ania programu, +s膮 zapisywane w {plik} . +U偶yteczne je艣li chce si臋 stworzy膰 skrypt do u偶ycia z "vim \-s" lub +":source!". +Je艣li {plik} istnieje, znaki s膮 dopisywane. +.TP +\-W {plik} +Podobnie do \-w, ale istniej膮cy plik jest nadpisywany. +.TP +\-x +U偶yj szyfrowania podczas zapisywania plik贸w. Zostaniesz poproszony +o podanie klucza. +.TP +\-X +Nie 艂膮cz z serwerem X. Skraca czas uruchamiania w terminalu, ale tytu艂 +okna i schowek nie b臋d膮 wykorzystywane. +.TP +\-y +Uruchom +.B Vima +w 艂atwym trybie, tak jakby program zosta艂 wywo艂any "evim" lub "eview". +.B Vim +b臋dzie zachowywa艂 si臋 bardziej jak edytor kliknij-i-wpisz. +.TP +\-Z +Tryb ograniczony. Zachowuje si臋 jakby nazwa programu zaczyna艂a si臋 od +"r". +.TP +\-\- +Oznacza koniec opcji. +Argumenty po tej opcji b臋d膮 traktowane jak nazwy plik贸w. U偶ywa si臋 do +otwierania plik贸w, kt贸rych nazwy zaczynaj膮 si臋 od '\-'. +.TP +\-\-echo\-wid +Wy艂膮cznie GTK GUI: wypisz ID okna na standardowe wyj艣cie. +.TP +\-\-help +Wy艣wietl informacj臋 o pomocy i zako艅czy, to samo co"\-h". +.TP +\-\-literal +Potraktuj nazwy plik贸w dos艂ownie i nie rozwi膮zuj kwantyfikator贸w. Nie +ma znaczenia na Uniksach gdzie pow艂oka rozwi膮zuje kwantyfikatory. +.TP +\-\-noplugin +Pomi艅 艂adowanie wtyczek. Implikowane przy \-u NONE. +.TP +\-\-remote +Po艂膮cz si臋 z serwerem Vima i edytuj w nim reszt臋 plik贸w podanych jako +argumenty. Je艣li nie znaleziono serwera zostanie zg艂oszony b艂膮d a pliki zostan膮 +otwarte w bie偶膮cym Vimie. +.TP +\-\-remote\-expr {wyra偶enie} +Po艂膮cz z serwerem Vima, rozwi膮偶 w nim {wyra偶enie} i wypisz rozwi膮zanie +na standardowe wyj艣cie. +.TP +\-\-remote\-send {klawisze} +Po艂膮cz z serwerem Vima i wy艣lij do niego {klawisze}. +.TP +\-\-remote\-silent +Tak samo jak \-remote, ale bez ostrze偶enia kiedy nie znaleziono +serwera. +.TP +\-\-remote\-wait +Tak samo jak \-remote, ale Vim nie zako艅czy dop贸ki pliki pozostan膮 +otwarte. +.TP +\-\-remote\-wait\-silent +Tak samo jak \-\-remote\-wait, ale bez ostrze偶enie kiedy nie +znaleziono serwera. +.TP +\-\-serverlist +Wypisz nazwy wszystkich serwer贸w Vima jakie mo偶na znale藕膰. +.TP +\-\-servername {nazwa} +U偶yj {nazwa} jako nazwy serwera. Wykorzystane dla bie偶膮cego Vima o ile +nie po艂膮czone z argumentem \-\-remote, wtedy jest to nazwa serwera do +po艂膮czenia. +.TP +\-\-socketid {id} +Wy艂膮cznie GTK GUI: U偶yj mechanizmu GtkPlug by uruchomi膰 gvima w innym +oknie. +.TP +\-\-version +Wypisz informacj臋 o wersji i zako艅cz. +.SH POMOC ON-LINE +By rozpocz膮膰 wpisz ":help" w +.B Vimie +Wpisz ":help temat" by uzyska膰 pomoc na okre艣lony temat. +Przyk艂ad: ":help ZZ" by uzyska膰 pomoc na temat polecenia "ZZ". +U偶yj <Tab> i CTRL\-D aby uzupe艂ni膰 tematy (":help +cmdline\-completion"). W plikach pomocy istniej膮 znaczniki by u艂atwi膰 +skakanie z jednego miejsca do innego (rodzaj link贸w hipertekstowych, +zobacz ":help"). +Mo偶na w ten spos贸b zobaczy膰 ca艂膮 dokumentacj臋, np. ":help syntax.txt". +.SH PLIKI +.TP 15 +/usr/local/lib/vim/doc/*.txt +Dokumentacja +.B Vima +U偶yj ":help doc\-file\-list" aby uzyska膰 pe艂n膮 list臋. +.TP +/usr/local/lib/vim/doc/tags +Plik znacznik贸w s艂u偶y do znajdowania informacji w plikach dokumentacji. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Globalne uruchamianie pod艣wietlania sk艂adni. +.TP +/usr/local/lib/vim/syntax/*.vim +Pliki sk艂adni dla r贸偶nych j臋zyk贸w. +.TP +/usr/local/lib/vim/vimrc +Globalny plik uruchamiania +.B Vima +.TP +~/.vimrc +Osobiste parametry uruchamiania +.B Vima +.TP +/usr/local/lib/vim/gvimrc +Globalne uruchamianie gvima. +.TP +~/.gvimrc +Osobiste parametry uruchamiania gvima. +.TP +/usr/local/lib/vim/optwin.vim +Skrypt u偶ywany w poleceniu ":options", dobry spos贸b do przegl膮dania +i ustawiania opcji. +.TP +/usr/local/lib/vim/menu.vim +Globalne uruchamianie menu gvima. +.TP +/usr/local/lib/vim/bugreport.vim +Skrypt s艂u偶膮cy do tworzenia raport贸w o b艂臋dach. Zobacz ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Skrypt do wykrywania typu pliku wed艂ug jego nazwy. Zobacz ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Skrypt do wykrywania typu pliku wed艂ug jego zawarto艣ci. Zobacz ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Pliku u偶ywane do drukowania PostScriptu. +.PP +Naj艣wie偶sze wiadomo艣ci na stronie +.B Vima: +.br +<URL:http://www.vim.org/> +.SH ZOBACZ TAK呕E +vimtutor(1) +.SH AUTOR +.B Vim +zosta艂 napisany przez Brama Moolenaara z du偶膮 pomoc膮 innych os贸b. +Zobacz ":help credits" w +.B Vimie. +.br +.B Vim +bazuje na Steviem, nad kt贸rym pracowali: Tim Thompson, Tony Andrews +i G.R. (Fred) Walter. +Ma艂o ju偶 zosta艂o z oryginalnego kodu. +.SH B艁臉DY +Prawdopodobne. +Zobacz ":help todo" by pozna膰 list臋 znanych problem贸w. +.PP +Pami臋taj 偶e pewna ilo艣膰 problem贸w, kt贸re mog膮 by膰 uznawane przez +niekt贸rych ludzi za b艂臋dy s膮 w rzeczywisto艣ci spowodowane wierno艣ci膮 +w odtwarzaniu zachowania Vi. +Je艣li s膮dzisz, 偶e inne rzeczy s膮 b艂臋dami "poniewa偶 Vi robi to +inaczej", powiniene艣 przyjrze膰 si臋 bli偶ej plikowi vi_diff.txt (lub +wpisa膰 ":help vi_diff.txt" w Vimie). +Sprawd藕 tak偶e opis opcji 'compatible' i 'cpoptions'. diff --git a/runtime/doc/vim-ru.1 b/runtime/doc/vim-ru.1 new file mode 100644 index 0000000..dfcb3ec --- /dev/null +++ b/runtime/doc/vim-ru.1 @@ -0,0 +1,489 @@ +.TH VIM 1 "2002 Feb 22" +.SH 轫 +vim \- Vi IMproved (跆辙叟挝偈 Vi), 耘擞韵踪 遗牧嗽弦 奶 幸锨伊屯捎韵 +.SH 腼磲钿钺 篝蝻脶 +.br +.B vim +[颂擂蒥 [屏侍 ..] +.br +.B vim +[颂擂蒥 \- +.br +.B vim +[颂擂蒥 \-t 团运 +.br +.B vim +[颂擂蒥 \-q [屏侍 羡陕纤] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH 镳轶犷殄 +.B Vim +-- 耘擞韵踪 遗牧嗽弦, 下伊晕-酉淄庞陨唾 Vi. +镂 拖峙 沦载 捎邢特谙琢 奶 幸磷松 子湃 咨南 幸嫌韵窍 耘擞粤. +镉下盼蜗 衔 认蚁 奶 幸磷松 捎认奈偃 耘擞韵 幸锨伊屯. +.PP +鹣 右磷闻紊 Vi, +.B Vim +赏排 臀锨 沼献乓叟斡宰献廖墒: 臀锨纤伊晕裂 显团瘟 闲乓撩墒, +臀现庞宰盼蜗釉 纤衔 抡婆蚁, 邢挠着运 由卧了由恿, 幸磷肆 讼土文蜗 釉蚁松, +磷韵南邢涛盼膳 赏N 屏侍献, 子砸吓挝裂 有伊姿, 咨谡撂匚吓 踪呐膛紊 .. +笸. ":help vi_diff.txt" 奶 邢陶夼紊 邢涛锨 有捎肆 伊谔赊墒 团帜 +.B Vim + Vi. +.PP +飨 滓磐 伊孪再 +.B Vim +拖治 邢陶奚载 有伊姿 邢拖葚 由釉磐 子砸吓挝鲜 有伊姿 (讼土文 ":help"). +笸. 伊谀盘 "黧趄镥铑狁 箴蜥麟" 紊峙 邢 耘擞哉. +.PP +菖 子徘 +.B Vim +诹姓铀晾 奶 幸磷松 夏蜗窍 屏侍 幸 邢拖萆 讼土文 +.PP + vim 屏侍 +.PP + 下菖 咨呐 讼土文 诹姓铀 +.B Vim +踪翘涯稍 粤: +.PP + vim [颂擂蒥 [有捎纤 屏侍献] +.PP +逵躺 有捎纤 屏侍献 显诱杂宰张, 遗牧嗽弦 瘟尬T 伊孪哉 姓釉偻 抡婆蚁. + 幸显勺蜗 犹辙僚 赏 屏侍 南讨蜗 沦载 账邻廖 夏紊 哨 犹拍绽萆 夼再遥 有嫌下献: +.TP 12 +屏侍 .. +笮捎纤 赏N 屏侍献. +鹋易偈 屏侍 抡呐 下哐滋盼 了陨孜偻 诹且罩盼 抡婆. 胝矣弦 抡呐 邢团荩 + 信易鲜 釉蚁伺 抡婆伊. 湎釉招 囊涨赏 屏侍镣 拖峙 沦载 嫌蛰庞宰蹋 幸 +邢拖萆 讼土文 ":next". 下 幸磷稍 屏侍, 赏 讼韵蚁窍 瘟奚瘟旁友 由妥咸 +"呐粕" (-), 信遗 有捎讼 屏侍献 闻下认纳拖 邢釉磷稍 "--". +.TP +\- +媪侍 抡呐 幸限稍廖 哨 邢韵肆 釉廖牧以蜗窍 鬃夏. 胂土文 抡恼 愚稍僮猎赜 +哨 釉廖牧以蜗窍 邢韵肆 纳燎蜗釉伤 (stderr), 讼韵屹 南讨盼 沦载 +耘彝晌撂贤. +.TP +\-t {团运羮 +橥 屏侍 瘟蘖特瘟 邢谏蒙 苏矣弦 诹咨友 显 "团运", 邢认峙 瘟 团运 goto. +{团运羮 奢旁友 屏侍 团韵, 酉显着杂宰绽萆 屏侍 釉廖献稍友 了陨孜偻, +酉显着杂宰绽萘 讼土文 捎邢涛雅杂. +菖 子徘 捎邢特谡旁友 幸锨伊屯寥 瘟 掩偎 笊, 悄 {团运羮 拖峙 沦载 赏盼磐 +普嗡蒙. +媪侍, 酉呐抑凛墒 普嗡蒙, 釉廖献稍友 了陨孜偻, 苏矣弦 邢团萘旁友 瘟蘖滔 普嗡蒙. +笸. ":help tag-commands". +.TP +\-q [屏侍 羡陕纤] +盍蘖载 伊孪哉 遗稚团 沦釉蚁窍 捎幸磷膛紊. +鹨 茉贤 愚稍僮僚杂 [屏侍 羡陕纤] 信易裂 羡陕肆 踪紫纳杂 瘟 芩伊. +逵躺 [屏侍 羡陕纤] 闻 账邻廖, 赏 屏侍 屡遥杂 哨 谖赁盼裳 闲蒙 'errorfile' +(邢 胀咸蘖紊: "AztecC.Err" 奶 Amiga, "errors.err" 奶 囊涨扇 由釉磐). + 犹拍绽萆 羡陕肆 拖治 信遗试 邢 讼土文 ":cn". +笸. ":help quickfix". +.PP +.B Vim +着模 优卵 邢-伊谖贤 诹咨由拖釉 显 赏盼 讼土文 (捎邢涛雅唾 屏侍 拖峙 +沦载 夏紊 耘 峙). +.TP 10 +vim +"钕彝撂匚偈" 诹姓铀, 子 邢 胀咸蘖紊. +.TP +ex +姓铀 遗稚团 Ex. 涮 信遗认牧 蜗彝撂匚偈 遗稚 +闻下认纳拖 踪邢涛稍 讼土文 ":vi". 蚺稚 Ex 姿汤蘖旁 +粤酥 颂擂 "\-e". +.TP +view +姓铀 遗稚团 "韵特讼 奶 拊盼裳". 髻 抡呐耘 诹萆菖钨 显 犹辙潦蜗 诹猩由 +屏侍. 粝 峙 恿拖 拖治 幽盘猎 颂擂贤 "\-R". +.TP +gvim gview +髋矣裳 且疗赊庞松 晌耘移攀酉. 姓铀僚杂 蜗紫 纤闻. +粝 峙 恿拖 拖治 幽盘猎 幸 诹姓铀 颂擂贤 "\-g". +.TP +rvim rview rgvim rgview +肓 幸拍倌蛰膳 讼土文, 蜗 锨伊紊夼紊淹. 钆特谘 诹姓铀猎 讼土文 下咸限松 +商 幸上釉廖磷躺琢载 伊孪哉 +.B Vim. +魍庞韵 幸捎粤姿 "r" 拖治 捎邢特谙琢载 颂擂 "\-Z". +.SH 腱帼 +胩擂 拖钦 沦载 账邻廖 汤孪 邢已乃, 南 商 邢犹 赏N +屏侍献. 胩擂 屡 烈钦团卧献 拖钦 沦载 下吲纳闻钨 邢 夏紊 +呐粕酉. +.TP 12 ++[蜗团襗 + 信易贤 屏侍 苏矣弦 抡呐 邢团荩 瘟 釉蚁苏 账邻廖钨 蜗团蚁. +逵躺 "蜗团" 闻 账邻廖, 苏矣弦 抡呐 邢团荩 瘟 邢犹拍卫 釉蚁苏. +.TP ++/{哿绿衔} + 信易贤 屏侍 苏矣弦 抡呐 邢团荩 瘟 团釉 信易锨 酉仔聊盼裳 + 账邻廖钨 哿绿衔贤. 笸. ":help search-pattern" 奶 邢陶夼紊 +有捎肆 南姓釉赏偃 哿绿衔献. +.TP ++{讼土文羮 +.TP +\-c {讼土文羮 +{讼土文羮 捎邢涛雅杂 邢犹 诹且遮松 信易锨 屏侍 肆 讼土文 Ex. +逵躺 {讼土文羮 酉呐抑稍 幸下盘, 韵 衔 南讨瘟 沦载 诹颂擂盼 +淖鲜钨 肆踪匏 ( 诹咨由拖釉 显 捎邢特谡磐鲜 下咸限松). +鹨赏乓: vim "+set si" main.c +.br +鹨赏呸廖膳: 硐治 账邻僮猎 南 呐友陨 讼土文 "+" 商 "\-c". +.TP +\-\-cmd {讼土文羮 +肓 "\-c", 蜗 讼土文 捎邢涛雅杂 信遗 下伊孪运鲜 汤孪窍 屏侍 +瘟釉蚁潘 (vimrc). +硐治 账邻僮猎 南 呐友陨 粤松 讼土文, 闻诹咨由拖 显 讼躺夼釉琢 +讼土文 "\-c". +.TP +\-A +逵躺 +.B Vim +沦 酉乱廖 邢哪乓炙鲜 烈谅铀锨 掩偎 奶 幸磷松 屏侍献, +瘟乱廖钨 有伊琢 瘟膛紫, 邢哪乓炙鲜 烈谅铀鲜 颂磷闪哉屹, +茉显 颂擂 诹姓铀僚 +.B Vim + 烈谅铀贤 遗稚团, 姿汤夼挝鲜 闲蒙攀 'arabic'. 幸显勺蜗 +犹辙僚 +.B Vim +诹着役僚 伊孪哉 羡陕讼. +.TP +\-b +渥仙尬偈 遗稚. +鹨仙谧夏稍友 瘟釉蚁仕 闻讼韵屹 闲蒙, 呐塘垒扇 紫谕现蜗 幸磷苏 +淖仙尬锨 商 捎邢涛雅拖窍 屏侍. +.TP +\-C +蚺稚 酉淄庞陨拖釉. 魉汤蘖旁 闲蒙 'compatible'. +.B Vim +抡呐 伊孪粤载 邢拊 肆 Vi, 牧峙 庞躺 诱菖釉渍旁 屏侍 .vimrc. +.TP +\-d +蚺稚 邢捎肆 伊谔赊墒. +湎讨蜗 沦载 账邻廖 淖 商 砸 赏盼 屏侍. +.B Vim +显艘吓 子 屏侍 邢肆峙 伊谔赊裳 团帜 紊蜕 +(肆 vimdiff(1)). +.TP +\-d {沼砸鲜釉紫} +镌艘僭 {沼砸鲜釉紫} 奶 捎邢特谙琢紊 肆夼釉着 耘彝晌撂 (韵特讼 瘟 Amiga). +鹨赏乓: +"\-d con:20/30/600/150". +.TP +\-e +姓釉稍 +.B Vim + 遗稚团 Ex, 肆 抡脑 捎邢涛雅唾 屏侍 赏排 赏 "ex". +.TP +\-f +蚺稚 了陨孜锨 幸商现盼裳. 髋矣裳 +.B Vim + 且疗赊庞松 晌耘移攀酉 闻 抡呐 着宰稍赜 显颂擂猎赜 +显 诹姓釉勺叟 牛 下咸限松. 盍 刑猎葡彝 Amiga +.B Vim +闻 抡呐 酉谀磷猎 蜗紫 纤蜗. 显 颂擂 握治 捎邢特谙琢载, +讼悄 +.B Vim +诹姓铀僚杂 幸锨伊屯鲜, 讼韵伊 南讨瘟 帜猎 诹着役盼裳 +优廖恿 幸磷松 (瘟幸赏乓, 幸锨伊屯 奶 伊孪再 芴潘砸衔蜗 邢拊鲜). +盍 刑猎葡彝 Amiga 讼土文 ":sh" ":!" 闻 抡恼 伊孪粤载. +.TP +\-\-nofork +蚺稚 了陨孜锨 幸商现盼裳. 髋矣裳 +.B Vim + 且疗赊庞松 晌耘移攀酉 闻 抡呐 着宰稍赜 显颂擂猎赜 +显 诹姓釉勺叟 牛 下咸限松. +.TP +\-F +逵躺 +.B Vim +沦 酉乱廖 邢哪乓炙鲜 FKMAP 奶 幸磷松 耘擞粤 有伊琢 瘟膛紫 + 瘟釉蚁潘 颂磷闪哉屹 奶 掩偎 屏矣, 茉显 颂擂 诹姓铀僚 +.B Vim + 遗稚团 屏矣, 晌赁 窍紫已, 姿汤蓿挝偻 闲蒙淹 +\&'fkmap' 'rightleft'. + 幸显勺蜗 犹辙僚 +.B Vim +诹着役僚 伊孪哉 酉下菖紊磐 下 羡陕伺. +.TP +\-g +逵躺 +.B Vim +沦 酉乱廖 邢哪乓炙鲜 且疗赊庞讼窍 晌耘移攀恿, 茉显 颂擂 +姿汤蘖旁 且疗赊庞松 晌耘移攀. 幸显勺蜗 犹辙僚 +.B Vim +诹着役僚 伊孪哉 酉下菖紊磐 下 羡陕伺. +.TP +\-h +髻紫纳 艘猎苏 晌葡彝撩衫 下 烈钦团卧寥 颂擂寥 讼土文蜗 釉蚁松. +鹣犹 茉锨 +.B Vim +诹着役僚 伊孪哉. +.TP +\-H +逵躺 +.B Vim +沦 酉乱廖 邢哪乓炙鲜 幸磷松 耘擞粤 有伊琢 瘟膛紫 + 瘟釉蚁潘 颂磷闪哉屹 奶 勺疑粤, 茉显 颂擂 诹姓铀僚 +.B Vim + 遗稚团 勺疑粤, 晌赁 窍紫已, 姿汤蓿挝偻 闲蒙淹 'hkmap' 'rightleft'. + 幸显勺蜗 犹辙僚 +.B Vim +诹着役僚 伊孪哉 酉下菖紊磐 下 羡陕伺. +.TP +\-i {viminfo} +逵躺 捎邢特谡旁友 屏侍 viminfo, 韵 茉显 颂擂 诹牧T 赏 粤讼窍 屏侍 (淄庞韵 +"~/.viminfo" 邢 胀咸蘖紊). 硐治 粤酥 哨屡至载 捎邢特谙琢紊 屏侍 viminfo +姓裕 账邻廖裳 赏盼 "NONE". +.TP +\-L +粝 峙, 拊 \-r. +.TP +\-l +蚺稚 Lisp. 魉汤蘖涝友 闲蒙 'lisp' 'showmatch'. +.TP +\-m +橼团闻紊 屏侍献 诹幸泡盼. 鹨 茉贤 显颂擂僚杂 闲蒙 'write', 邢茉贤 +诹猩迂 屏侍献 釉廖献稍友 闻紫谕现蜗. +.TP +\-N +蚺稚 闻邢涛鲜 酉淄庞陨拖釉. 镌颂擂僚杂 'compatible'. +.B Vim +抡呐 伊孪粤载 陶捋, 蜗 闻 抡呐 邢涛嫌载 酉淄庞陨 Vi, 牧峙 庞躺 +显诱杂宰张 屏侍 用盼烈裳 瘟釉蚁潘 (.vimrc). +.TP +\-n +钆 捎邢特谙琢载 幼闲-屏侍. 飨佑粤蜗滋盼膳 幸 勇吓 伊孪耘 抡呐 闻紫谕现蜗. +跄下蜗 奶 幸磷松 屏侍 瘟 限盼 团奶盼蜗 蜗由耘膛 (瘟幸赏乓, 巧滤贤 纳铀). +粝 峙 恿拖 拖治 幽盘猎 讼土文鲜 ":set uc=0". 镌团瘟 -- ":set uc=200". +.TP +\-o[N] +镌艘僭 N 纤衔, 伊谀盘N钨 邢 窍疑谙卧撂. 逵躺 N 闻 账邻廖, 韵 显艘僮僚杂 +邢 夏蜗驼 纤握 瘟 肆帜偈 屏侍. +.TP +\-O[N] +镌艘僭 N 纤衔, 伊谀盘N钨 邢 着以伤撂. 逵躺 N 闻 账邻廖, 韵 显艘僮僚杂 +邢 夏蜗驼 纤握 瘟 肆帜偈 屏侍. +.TP +\-R +蚺稚 "韵特讼 奶 拊盼裳". 魉汤蘖旁友 闲蒙 'readonly'. +媪侍 抡婆遗 南釉招盼 奶 遗牧嗽梢献廖裳, 蜗 徘 讼猩 瘟 纳铀 闻特谘 +犹辙潦蜗 信遗诹猩恿载. 涮 酉纫廖盼裳 屏侍 闻下认纳拖 南铝咨载 紫铀躺昧耘特钨 +谖了 酉显着杂宰绽菖 讼土文 Ex (瘟幸赏乓, ":w!"). +胩擂 "\-R" 邢囊邻胀抛僚 粤酥, 拊 捎邢特谡旁友 颂擂 "\-n" (油. 踪叟). +镄蒙 'readonly' 拖峙 沦载 踪颂擂盼 邢 讼土文 ":set noro". +笸. ":help 'readonly'". +.TP +\-r +髻着釉 有捎纤 幼闲-屏侍献 晌葡彝撩衫 下 扇 捎邢特谙琢紊 奶 紫佑粤蜗滋盼裳 邢犹 勇涎. +.TP +\-r {屏侍} +蚺稚 紫佑粤蜗滋盼裳. +涮 紫佑粤蜗滋盼裳 邢犹 勇涎 抡呐 捎邢特谙琢 幼闲-屏侍. +笞闲-屏侍 赏排 韵 峙 赏, 拊 耘擞韵踪 屏侍, 蜗 南铝滋盼膳 伊盂梢盼裳 ".swp". +笸. ":help recovery". +.TP +\-s +羯壬 遗稚. 粝特讼 幸 诹姓铀 肆 "Ex" 商 庞躺 信遗 "\-s" 账邻廖 颂擂 "\-e". +.TP +\-s {scriptin} +筠稍僮僚杂 屏侍 用盼烈裳 {scriptin}. 鹨 茉贤, 酉呐抑赏吓 屏侍 紫有疑紊土旁友 + 咨呐 讼土文, 肆 庞躺 沦 衔 沦躺 瘟乱廖 瘟 讼斡咸. +粝 峙 恿拖 南釉汕僚杂 讼土文鲜 ":source! {scriptin}". +逵躺 讼闻 屏侍 愚稍僮僚杂 南 诹着役盼裳 伊孪再 遗牧嗽弦, 韵 牧特闻售磐 +鬃夏 嫌蛰庞宰萄旁友 颂磷闪哉屹. +.TP +\-T {terminal} +笙下萘旁 +.B Vim +陨 捎邢特谡磐锨 耘彝晌撂. 钆下认纳拖 韵特讼 耘 由哉撩裳, 讼悄 +磷韵土陨夼铀吓 闲遗呐膛紊 耘彝晌撂 闻 伊孪粤旁. 橥 耘彝晌撂 南讨蜗 沦载 +哨着釉蜗 +.B Vim +(子砸吓蜗 闻窍) 商 闲遗呐膛蜗 屏侍寥 termcap 商 terminfo. +.TP +\-u {vimrc} +橛邢特谙琢载 讼土文 哨 屏侍 用盼烈裳 {vimrc} 奶 瘟釉蚁仕. +饔 嫌粤特钨 屏侍 瘟釉蚁潘 幸闲沼肆涝友. +跄下蜗 奶 遗牧嗽梢献廖裳 有琶闪特钨 陨邢 屏侍献. +下 哨屡至载 捎邢特谙琢紊 用盼烈膳 瘟釉蚁潘 紫下菖, 拖治 捎邢特谙琢载 +赏 "NONE". 笸. ":help initialization". +.TP +\-U {gvimrc} +橛邢特谙琢载 讼土文 哨 屏侍 用盼烈裳 {gvimrc} 奶 瘟釉蚁仕 且疗赊庞讼窍 +晌耘移攀恿. +饔 嫌粤特钨 屏侍 瘟釉蚁潘 奶 且疗赊庞讼窍 晌耘移攀恿 幸闲沼肆涝友. +下 哨屡至载 捎邢特谙琢紊 用盼烈膳 瘟釉蚁潘 且疗赊庞讼窍 晌耘移攀恿 紫下菖, +拖治 捎邢特谙琢载 赏 "NONE". 笸. ":help gui-init". +.TP +\-V +"庀淘躺踪" 遗稚. 髻紫纳载 酉下菖紊 韵, 肆松 屏侍 奚粤涝友, +拊盼缮-诹猩由 屏侍 viminfo. +.TP +\-v +姓釉稍 +.B Vim + 遗稚团 Vi, 肆 抡脑 捎邢涛雅唾 屏侍 赏排 赏 "vi". 橥排 油儆 韵特讼 庞躺 +捎邢涛雅唾 屏侍 赏排 赏 "ex". +.TP +\-w {scriptout} +饔 由妥咸, 鬃拍N钨 颂磷闪哉屹 仔滔载 南 拖团卧 诹着役盼裳 伊孪再, +诹猩淤琢涝友 屏侍 {scriptout}. +跄下蜗 韵 犹辙僚, 讼悄 踪 认陨耘 酉谀猎 屏侍 用盼烈裳 奶 邢犹拍绽菖窍 +捎邢特谙琢紊 "vim \-s" 商 ":source!". 逵躺 屏侍 {scriptout} 罩 诱菖釉渍旁, +韵 蜗踪 由妥咸 抡恼 南铝滋牙杂 讼闻 屏侍. +.TP +\-W {scriptout} +肓 "\-w", 蜗 罩 诱菖釉渍垒墒 屏侍 抡呐 信遗诹猩恿. +.TP +\-x +埔献猎 诹猩淤琢磐倥 屏侍. 庹呐 踪牧蜗 幸汕塘叟紊 鬃庞陨 辛蚁特. +.TP +\-X +钆 邢乃汤蘖载友 X-优易乓. 跤讼已旁 诹且遮苏 瘟 讼斡咸, 蜗 呐塘旁 闻紫谕现钨 +捎邢特谙琢紊 诹窍滔姿 纤瘟 抡婆伊 下团瘟. +.TP +\-Z +锴伊紊夼挝偈 遗稚. 蛄孪粤旁 粤 峙, 肆 幸锨伊屯, 瘟奚瘟垒膳友 "r". +.TP +\-\- +胂闻 颂擂攀. 饔 嫌粤特钨 烈钦团卧 伊佑土砸勺晾杂 肆 赏盼 屏侍献. +硐峙 沦载 捎邢特谙琢蜗 奶 幸磷松 屏侍献, 赏盼 讼韵屹 瘟奚瘟涝友 呐粕恿. +.TP +\-\-help +髻着釉 艘猎苏 有伊姿 诹着役稍 伊孪哉. 粝 峙, 拊 "\-h". +.TP +\-\-version +髻着釉 晌葡彝撩衫 着矣缮 幸锨伊屯 诹着役稍 伊孪哉. +.TP +\-\-remote +鹣乃汤奚载友 优易乓 Vim 诹釉磷稍 徘 幸磷稍 屏侍, 账邻廖钨 +邢犹拍绽萆 烈钦团卧寥. 逵躺 优易乓 闻 瘟誓盼, 踪紫纳杂 幸拍招遗帜盼膳, + 屏侍 幸磷言友 团釉蜗 讼猩 Vim. +.TP +\-\-remote\-expr {踪伊峙紊舽 +鹣乃汤奚载友 优易乓 Vim 踪奚犹稍 瘟 危 账邻廖蜗 {踪伊峙紊舽. +蚺谡特粤 踪奚犹盼裳 抡呐 踪着呐 邢韵 釉廖牧以蜗窍 踪紫牧 (stdout). +.TP +\-\-remote\-send {颂擂蓕 +鹣乃汤奚载友 优易乓 Vim 信遗牧载 磐 账邻廖钨 {颂擂蓕. +.TP +\-\-remote\-silent +肓 "\-\-remote", 蜗 屡 踪紫牧 幸拍招遗帜盼裳, 庞躺 优易乓 闻 瘟誓盼. +.TP +\-\-remote\-wait +肓 "\-\-remote", 蜗 Vim 闻 抡呐 诹着役猎 伊孪哉 南 耘 邢, 邢肆 闻 抡呐 +踪邢涛盼 幸磷肆 子湃 屏侍献. +.TP +\-\-remote\-wait\-silent +肓 "\-\-remote\-wait", 蜗 屡 踪紫牧 幸拍招遗帜盼裳, 庞躺 优易乓 闻 瘟誓盼. +.TP +\-\-serverlist +髻着釉 有捎纤 子湃 南釉招钨 优易乓献 Vim. +.TP +\-\-servername {赏複 +橛邢特谙琢载 账邻廖蜗 {赏複 肆夼釉着 赏盼 优易乓. 逵躺 颂擂 +"\-\-remote" 闻 账邻廖, 韵 {赏複 幸捎琢勺僚杂 牧挝鲜 讼猩 Vim, + 幸显勺蜗 犹辙僚 账邻僮僚 瘟 赏 优易乓, 讼韵蚁驼 犹拍张 +邢乃汤奚载友. +.TP +\-\-socketid {id} +粝特讼 奶 且疗赊庞讼窍 晌耘移攀恿 GTK: 捎邢特谙琢载 团攘紊谕 GtkPlug 奶 +诹姓铀 gvim 显呐特蜗 纤闻. +.TP +\-\-echo\-wid +粝特讼 奶 且疗赊庞讼窍 晌耘移攀恿 GTK: 踪着釉 赡盼陨粕肆韵 纤瘟 (Window ID) + 邢韵 釉廖牧以蜗窍 踪紫牧 (stdout). +.SH 黧趄镥铑狁 箴蜥麟 +涮 瘟蘖塘, 瘟屡疑耘 讼土文 ":help". +髯拍稍 ":help 耘土", 拊下 邢陶奚载 有伊姿 邢 讼嗡遗晕鲜 耘团. +盍幸赏乓, 讼土文 ":help ZZ" 踪着呐 晌葡彝撩衫 讼土文 "ZZ". +橛邢特谡试 <Tab> CTRL-D 奶 磷韵土陨夼铀锨 南邢涛盼裳 +瘟谧廖墒 耘 (":help cmdline-completion"). +涮 沦釉蚁窍 信遗团菖紊 邢 有伊紫尬伤 捎邢特谡涝友 团运 (拊-韵 +滓夏 巧信以潘釉献偃 佑偬纤, 油. ":help"). 袅松 下伊谙 拖治 +幸嫌土砸勺猎 子 屏侍 有伊姿, 瘟幸赏乓 ":help syntax.txt". +.SH 驷觎 +.TP 15 +/usr/local/lib/vim/doc/*.txt +媪侍 有伊紫尬伤 +.B Vim. +笸. ":help doc-file-list" 奶 邢陶夼紊 邢涛锨 有捎肆. +.TP +/usr/local/lib/vim/doc/tags +媪侍 团韵, 捎邢特谡磐偈 奶 邢捎肆 晌葡彝撩缮 屏侍寥 有伊姿. +.TP +/usr/local/lib/vim/syntax/syntax.vim +笊釉磐钨 瘟釉蚁仕 由卧了由恿. +.TP +/usr/local/lib/vim/syntax/*.vim +媪侍 由卧了由恿 奶 伊谖偃 掩偎献. +.TP +/usr/local/lib/vim/vimrc +笊釉磐钨 瘟釉蚁仕 +.B Vim. +.TP +/usr/local/lib/vim/gvimrc +笊釉磐钨 瘟釉蚁仕 且疗赊庞讼窍 晌耘移攀恿. +.TP +/usr/local/lib/vim/optwin.vim +竺盼烈墒, 捎邢特谡磐偈 幸 踪邢涛盼缮 讼土文 ":options". +柘蚁凵 有嫌下 幸嫌土砸勺猎 哨团窝载 瘟釉蚁仕. +.TP +/usr/local/lib/vim/menu.vim +笊釉磐钨 瘟釉蚁仕 团卫 奶 gvim. +.TP +/usr/local/lib/vim/bugreport.vim +竺盼烈墒 奶 酉谀廖裳 显蓿粤 下 下瘟艺峙挝偃 翘浪寥. 笸. ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +竺盼烈墒 奶 闲遗呐膛紊 陨辛 屏侍 邢 赏盼. 笸. ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +竺盼烈墒 奶 闲遗呐膛紊 陨辛 屏侍 邢 酉呐抑赏贤. 笸. ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +媪侍 奶 信蘖陨 PostScript. +.PP +庀膛 幼胖裂 晌葡彝撩裳 -- 瘟 恿试 VIM: +.br +<URL:http://www.vim.org/> +.SH 箜雉蜷 翎膂 +vimtutor(1) +.SH 狩麸蝙 +庀特哿 蘖釉 +.B Vim +酉谀廖 庖镣贤 硐咸盼亮蚁 (Bram Moolenaar), 讼韵蚁驼 邢拖橇旁 锨蚁臀吓 +讼躺夼釉紫 汤呐. 笸. ":help credits" +.B Vim. +.br +.B Vim +铝谏艺旁友 瘟 讼呐 遗牧嗽弦 Stevie, 瘟猩恿挝锨 羯拖 粝托酉蜗 (Tim Thompson), +粝紊 囊烙贤 (Tony Andrews) . . (嬉拍贤) 跸淘乓贤 (G.R. (Fred) Walter). +锬瘟讼, 瘟釉涎菖 滓磐 Vim 邢拊 闻 嫌粤滔迂 紊夼窍 显 捎韵疑夼铀锨 讼牧 +徘 幸拍叟釉着挝伤. +.br +蛘佑肆 滔肆躺诹蒙 +.B Vim +踪邢涛雅杂 伊退寥 幸吓嗽 "蛘魃", +油. <URL:http://sourceforge.net/projects/ruvim/>. +.SH 珈嚯 +笏弦排 子徘 庞载. +笸. ":help todo" -- 有捎纤 哨着釉钨 幸下膛. +.PP +团陨, 拊 臀锨膳 着萆, 讼韵屹 愚稍晾杂 翘浪镣, 瘟 恿拖 呐膛 +炎萄涝友 遗谡特粤韵 犹邵讼 邢涛锨 紫有蚁哨着呐紊 邢着呐紊 Vi. +逵躺 踪 恼土旁, 拊 拊-韵 炎萄旁友 羡陕讼 韵特讼 邢韵驼, 拊 +"Vi 呐塘旁 茉 邢-囊涨贤", 孜赏猎盘匚 幸限稍潦耘 屏侍 vi_diff.txt +(商 瘟屡疑耘 ":help vi_diff.txt" Vim) 捎邢特谡试 闲蒙 'compatible' + 'cpoptions'. diff --git a/runtime/doc/vim-ru.UTF-8.1 b/runtime/doc/vim-ru.UTF-8.1 new file mode 100644 index 0000000..ef52721 --- /dev/null +++ b/runtime/doc/vim-ru.UTF-8.1 @@ -0,0 +1,489 @@ +.TH VIM 1 "2002 Feb 22" +.SH 袠袦携 +vim \- Vi IMproved (校谢褍褔褕械薪薪褘泄 Vi), 褌械泻褋褌芯胁褘泄 褉械写邪泻褌芯褉 写谢褟 锌褉芯谐褉邪屑屑懈褋褌芯胁 +.SH 袣袨袦袗袧袛袧袗携 小孝袪袨袣袗 +.br +.B vim +[泻谢褞褔懈] [褎邪泄谢 ..] +.br +.B vim +[泻谢褞褔懈] \- +.br +.B vim +[泻谢褞褔懈] \-t 屑械褌泻邪 +.br +.B vim +[泻谢褞褔懈] \-q [褎邪泄谢 芯褕懈斜芯泻] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH 袨袩袠小袗袧袠袝 +.B Vim +-- 褌械泻褋褌芯胁褘泄 褉械写邪泻褌芯褉, 芯斜褉邪褌薪芯-褋芯胁屑械褋褌懈屑褘泄 褋 Vi. +袨薪 屑芯卸械褌 斜褘褌褜 懈褋锌芯谢褜蟹芯胁邪薪 写谢褟 锌褉邪胁泻懈 胁褋械褏 胁懈写芯胁 锌褉芯褋褌芯谐芯 褌械泻褋褌邪. +袨褋芯斜械薪薪芯 芯薪 褏芯褉芯褕 写谢褟 锌褉邪胁泻懈 懈褋褏芯写薪褘褏 褌械泻褋褌芯胁 锌褉芯谐褉邪屑屑. +.PP +袩芯 褋褉邪胁薪械薪懈褞 褋 Vi, +.B Vim +懈屑械械褌 屑薪芯谐芯 褍褋芯胁械褉褕械薪褋褌胁芯胁邪薪懈泄: 屑薪芯谐芯泻褉邪褌薪邪褟 芯褌屑械薪邪 芯锌械褉邪褑懈泄, +屑薪芯卸械褋褌胁械薪薪芯褋褌褜 芯泻芯薪 懈 斜褍褎械褉芯胁, 锌芯写褋胁械褌泻邪 褋懈薪褌邪泻褋懈褋邪, 锌褉邪胁泻邪 泻芯屑邪薪写薪芯泄 褋褌褉芯泻懈, +邪胁褌芯写芯锌芯谢薪械薪懈械 懈屑褢薪 褎邪泄谢芯胁, 胁褋褌褉芯械薪薪邪褟 褋锌褉邪胁泻邪, 胁懈蟹褍邪谢褜薪芯械 胁褘写械谢械薪懈械 懈 褌.锌. +小屑. ":help vi_diff.txt" 写谢褟 锌芯谢褍褔械薪懈褟 锌芯谢薪芯谐芯 褋锌懈褋泻邪 褉邪蟹谢懈褔懈泄 屑械卸写褍 +.B Vim +懈 Vi. +.PP +袙芯 胁褉械屑褟 褉邪斜芯褌褘 胁 +.B Vim +屑芯卸薪芯 锌芯谢褍褔懈褌褜 褋锌褉邪胁泻褍 褋 锌芯屑芯褖褜褞 褋懈褋褌械屑褘 胁褋褌褉芯械薪薪芯泄 褋锌褉邪胁泻懈 (泻芯屑邪薪写邪 ":help"). +小屑. 褉邪蟹写械谢 "袙小孝袪袨袝袧袧袗携 小袩袪袗袙袣袗" 薪懈卸械 锌芯 褌械泻褋褌褍. +.PP +效邪褖械 胁褋械谐芯 +.B Vim +蟹邪锌褍褋泻邪褞褌 写谢褟 锌褉邪胁泻懈 芯写薪芯谐芯 褎邪泄谢邪 锌褉懈 锌芯屑芯褖懈 泻芯屑邪薪写褘 +.PP + vim 褎邪泄谢 +.PP +袙 芯斜褖械屑 胁懈写械 泻芯屑邪薪写邪 蟹邪锌褍褋泻邪 +.B Vim +胁褘谐谢褟写懈褌 褌邪泻: +.PP + vim [泻谢褞褔懈] [褋锌懈褋芯泻 褎邪泄谢芯胁] +.PP +袝褋谢懈 褋锌懈褋芯泻 褎邪泄谢芯胁 芯褌褋褍褌褋褌胁褍械褌, 褉械写邪泻褌芯褉 薪邪褔薪褢褌 褉邪斜芯褌褍 褋 锌褍褋褌褘屑 斜褍褎械褉芯屑. +袙 锌褉芯褌懈胁薪芯屑 褋谢褍褔邪械 懈屑褟 褎邪泄谢邪 写芯谢卸薪芯 斜褘褌褜 褍泻邪蟹邪薪芯 芯写薪懈屑 懈蟹 褋谢械写褍褞褖懈褏 褔械褌褘褉褢褏 褋锌芯褋芯斜芯胁: +.TP 12 +褎邪泄谢 .. +小锌懈褋芯泻 懈屑褢薪 褎邪泄谢芯胁. +袩械褉胁褘泄 褎邪泄谢 斜褍写械褌 芯斜褗褟胁谢械薪 邪泻褌懈胁薪褘屑 懈 蟹邪谐褉褍卸械薪 胁 斜褍褎械褉. 袣褍褉褋芯褉 斜褍写械褌 锌芯屑械褖褢薪 +胁 锌械褉胁芯泄 褋褌褉芯泻械 斜褍褎械褉邪. 袛芯褋褌褍锌 泻 写褉褍谐懈屑 褎邪泄谢邪屑 屑芯卸械褌 斜褘褌褜 芯褋褍褖械褋褌胁谢褢薪 锌褉懈 +锌芯屑芯褖懈 泻芯屑邪薪写褘 ":next". 效褌芯斜褘 锌褉邪胁懈褌褜 褎邪泄谢, 懈屑褟 泻芯褌芯褉芯谐芯 薪邪褔懈薪邪械褌褋褟 褋 褋懈屑胁芯谢邪 +"写械褎懈褋" (-), 锌械褉械写 褋锌懈褋泻芯屑 褎邪泄谢芯胁 薪械芯斜褏芯写懈屑芯 锌芯褋褌邪胁懈褌褜 "--". +.TP +\- +肖邪泄谢 斜褍写械褌 锌褉芯褔懈褌邪薪 懈蟹 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪. 袣芯屑邪薪写褘 斜褍写褍褌 褋褔懈褌褘胁邪褌褜褋褟 +懈蟹 褋褌邪薪写邪褉褌薪芯谐芯 锌芯褌芯泻邪 写懈邪谐薪芯褋褌懈泻懈 (stderr), 泻芯褌芯褉褘泄 写芯谢卸械薪 斜褘褌褜 +褌械褉屑懈薪邪谢芯屑. +.TP +\-t {屑械褌泻邪} +袠屑褟 褎邪泄谢邪 懈 薪邪褔邪谢褜薪邪褟 锌芯蟹懈褑懈褟 泻褍褉褋芯褉邪 蟹邪胁懈褋褟褌 芯褌 "屑械褌泻懈", 锌芯褏芯卸械泄 薪邪 屑械褌泻褍 goto. +{屑械褌泻邪} 懈褖械褌褋褟 胁 褎邪泄谢械 屑械褌芯泻, 褋芯芯褌胁械褌褋褌胁褍褞褖懈泄 褎邪泄谢 褋褌邪薪芯胁懈褌褋褟 邪泻褌懈胁薪褘屑, 邪 +褋芯芯褌胁械褌褋褌胁褍褞褖邪褟 泻芯屑邪薪写邪 懈褋锌芯谢薪褟械褌褋褟. +效邪褖械 胁褋械谐芯 懈褋锌芯谢褜蟹褍械褌褋褟 胁 锌褉芯谐褉邪屑屑邪褏 薪邪 褟蟹褘泻械 小懈, 谐写械 {屑械褌泻邪} 屑芯卸械褌 斜褘褌褜 懈屑械薪械屑 +褎褍薪泻褑懈懈. +肖邪泄谢, 褋芯写械褉卸邪褖懈泄 褎褍薪泻褑懈褞, 褋褌邪薪芯胁懈褌褋褟 邪泻褌懈胁薪褘屑, 邪 泻褍褉褋芯褉 锌芯屑械褖邪械褌褋褟 胁 薪邪褔邪谢芯 褎褍薪泻褑懈懈. +小屑. ":help tag-commands". +.TP +\-q [褎邪泄谢 芯褕懈斜芯泻] +袧邪褔邪褌褜 褉邪斜芯褌褍 胁 褉械卸懈屑械 斜褘褋褌褉芯谐芯 懈褋锌褉邪胁谢械薪懈褟. +袩褉懈 褝褌芯屑 褋褔懈褌褘胁邪械褌褋褟 [褎邪泄谢 芯褕懈斜芯泻] 懈 锌械褉胁邪褟 芯褕懈斜泻邪 胁褘胁芯写懈褌褋褟 薪邪 褝泻褉邪薪. +袝褋谢懈 [褎邪泄谢 芯褕懈斜芯泻] 薪械 褍泻邪蟹邪薪, 懈屑褟 褎邪泄谢邪 斜械褉褢褌褋褟 懈蟹 蟹薪邪褔械薪懈褟 芯锌褑懈懈 'errorfile' +(锌芯 褍屑芯谢褔邪薪懈褞: "AztecC.Err" 写谢褟 Amiga, "errors.err" 写谢褟 写褉褍谐懈褏 褋懈褋褌械屑). +袣 褋谢械写褍褞褖懈屑 芯褕懈斜泻邪屑 屑芯卸薪芯 锌械褉械泄褌懈 锌芯 泻芯屑邪薪写械 ":cn". +小屑. ":help quickfix". +.PP +.B Vim +胁械写褢褌 褋械斜褟 锌芯-褉邪蟹薪芯屑褍 胁 蟹邪胁懈褋懈屑芯褋褌懈 芯褌 懈屑械薪懈 泻芯屑邪薪写褘 (懈褋锌芯谢薪褟械屑褘泄 褎邪泄谢 屑芯卸械褌 +斜褘褌褜 芯写薪懈屑 懈 褌械屑 卸械). +.TP 10 +vim +"袧芯褉屑邪谢褜薪褘泄" 蟹邪锌褍褋泻, 胁褋褢 锌芯 褍屑芯谢褔邪薪懈褞. +.TP +ex +袟邪锌褍褋泻 胁 褉械卸懈屑械 Ex. 袛谢褟 锌械褉械褏芯写邪 胁 薪芯褉屑邪谢褜薪褘泄 褉械卸懈屑 +薪械芯斜褏芯写懈屑芯 胁褘锌芯谢薪懈褌褜 泻芯屑邪薪写褍 ":vi". 袪械卸懈屑 Ex 胁泻谢褞褔邪械褌 +褌邪泻卸械 泻谢褞褔 "\-e". +.TP +view +袟邪锌褍褋泻 胁 褉械卸懈屑械 "褌芯谢褜泻芯 写谢褟 褔褌械薪懈褟". 袙褘 斜褍写械褌械 蟹邪褖懈褖械薪褘 芯褌 褋谢褍褔邪泄薪芯泄 蟹邪锌懈褋懈 +褎邪泄谢邪. 孝芯 卸械 褋邪屑芯械 屑芯卸薪芯 褋写械谢邪褌褜 泻谢褞褔芯屑 "\-R". +.TP +gvim gview +袙械褉褋懈褟 褋 谐褉邪褎懈褔械褋泻懈屑 懈薪褌械褉褎械泄褋芯屑. 袟邪锌褍褋泻邪械褌褋褟 胁 薪芯胁芯屑 芯泻薪械. +孝芯 卸械 褋邪屑芯械 屑芯卸薪芯 褋写械谢邪褌褜 锌褉懈 蟹邪锌褍褋泻械 褋 泻谢褞褔芯屑 "\-g". +.TP +rvim rview rgvim rgview +袣邪泻 懈 锌褉械写褘写褍褖懈械 泻芯屑邪薪写褘, 薪芯 褋 芯谐褉邪薪懈褔械薪懈褟屑懈. 袧械谢褜蟹褟 蟹邪锌褍褋泻邪褌褜 泻芯屑邪薪写褘 芯斜芯谢芯褔泻懈 +懈谢懈 锌褉懈芯褋褌邪薪邪胁谢懈胁邪褌褜 褉邪斜芯褌褍 +.B Vim. +袙屑械褋褌芯 锌褉懈褋褌邪胁泻懈 "r" 屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 泻谢褞褔 "\-Z". +.SH 袣袥挟效袠 +袣谢褞褔懈 屑芯谐褍褌 斜褘褌褜 褍泻邪蟹邪薪褘 胁 谢褞斜芯屑 锌芯褉褟写泻械, 写芯 懈谢懈 锌芯褋谢械 懈屑褢薪 +褎邪泄谢芯胁. 袣谢褞褔懈 斜械蟹 邪褉谐褍屑械薪褌芯胁 屑芯谐褍褌 斜褘褌褜 芯斜褗械写懈薪械薪褘 锌芯写 芯写薪懈屑 +写械褎懈褋芯屑. +.TP 12 ++[薪芯屑械褉] +袙 锌械褉胁芯屑 褎邪泄谢械 泻褍褉褋芯褉 斜褍写械褌 锌芯屑械褖褢薪 薪邪 褋褌褉芯泻褍 褋 褍泻邪蟹邪薪薪褘屑 薪芯屑械褉芯屑. +袝褋谢懈 "薪芯屑械褉" 薪械 褍泻邪蟹邪薪, 泻褍褉褋芯褉 斜褍写械褌 锌芯屑械褖褢薪 薪邪 锌芯褋谢械写薪褞褞 褋褌褉芯泻褍. +.TP ++/{褕邪斜谢芯薪} +袙 锌械褉胁芯屑 褎邪泄谢械 泻褍褉褋芯褉 斜褍写械褌 锌芯屑械褖褢薪 薪邪 屑械褋褌芯 锌械褉胁芯谐芯 褋芯胁锌邪写械薪懈褟 +褋 褍泻邪蟹邪薪薪褘屑 褕邪斜谢芯薪芯屑. 小屑. ":help search-pattern" 写谢褟 锌芯谢褍褔械薪懈褟 +褋锌懈褋泻邪 写芯锌褍褋褌懈屑褘褏 褕邪斜谢芯薪芯胁. +.TP ++{泻芯屑邪薪写邪} +.TP +\-c {泻芯屑邪薪写邪} +{泻芯屑邪薪写邪} 懈褋锌芯谢薪褟械褌褋褟 锌芯褋谢械 蟹邪谐褉褍蟹泻懈 锌械褉胁芯谐芯 褎邪泄谢邪 泻邪泻 泻芯屑邪薪写邪 Ex. +袝褋谢懈 {泻芯屑邪薪写邪} 褋芯写械褉卸懈褌 锌褉芯斜械谢褘, 褌芯 芯薪邪 写芯谢卸薪邪 斜褘褌褜 蟹邪泻谢褞褔械薪邪 胁 +写胁芯泄薪褘械 泻邪胁褘褔泻懈 (胁 蟹邪胁懈褋懈屑芯褋褌懈 芯褌 懈褋锌芯谢褜蟹褍械屑芯泄 芯斜芯谢芯褔泻懈). +袩褉懈屑械褉: vim "+set si" main.c +.br +袩褉懈屑械褔邪薪懈械: 袦芯卸薪芯 褍泻邪蟹褘胁邪褌褜 写芯 写械褋褟褌懈 泻芯屑邪薪写 "+" 懈谢懈 "\-c". +.TP +\-\-cmd {泻芯屑邪薪写邪} +袣邪泻 "\-c", 薪芯 泻芯屑邪薪写邪 懈褋锌芯谢薪褟械褌褋褟 锌械褉械写 芯斜褉邪斜芯褌泻芯泄 谢褞斜芯谐芯 褎邪泄谢邪 +薪邪褋褌褉芯械泻 (vimrc). +袦芯卸薪芯 褍泻邪蟹褘胁邪褌褜 写芯 写械褋褟褌懈 褌邪泻懈褏 泻芯屑邪薪写, 薪械蟹邪胁懈褋懈屑芯 芯褌 泻芯谢懈褔械褋褌胁邪 +泻芯屑邪薪写 "\-c". +.TP +\-A +袝褋谢懈 +.B Vim +斜褘谢 褋芯斜褉邪薪 褋 锌芯写写械褉卸泻芯泄 邪褉邪斜褋泻芯谐芯 褟蟹褘泻邪 写谢褟 锌褉邪胁泻懈 褎邪泄谢芯胁, +薪邪斜褉邪薪薪褘褏 褋锌褉邪胁邪 薪邪谢械胁芯, 懈 褋 锌芯写写械褉卸泻芯泄 邪褉邪斜褋泻芯泄 泻谢邪胁懈邪褌褍褉褘, +褝褌芯褌 泻谢褞褔 蟹邪锌褍褋泻邪械褌 +.B Vim +胁 邪褉邪斜褋泻芯屑 褉械卸懈屑械, 褋 胁泻谢褞褔械薪薪芯泄 芯锌褑懈械泄 'arabic'. 袙 锌褉芯褌懈胁薪芯屑 +褋谢褍褔邪械 +.B Vim +蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 褋 芯褕懈斜泻芯泄. +.TP +\-b +袛胁芯懈褔薪褘泄 褉械卸懈屑. +袩褉芯懈蟹胁芯写懈褌褋褟 薪邪褋褌褉芯泄泻邪 薪械泻芯褌芯褉褘褏 芯锌褑懈泄, 写械谢邪褞褖懈褏 胁芯蟹屑芯卸薪芯泄 锌褉邪胁泻褍 +写胁芯懈褔薪芯谐芯 懈谢懈 懈褋锌芯谢薪褟械屑芯谐芯 褎邪泄谢邪. +.TP +\-C +袪械卸懈屑 褋芯胁屑械褋褌懈屑芯褋褌懈. 袙泻谢褞褔邪械褌 芯锌褑懈褞 'compatible'. +.B Vim +斜褍写械褌 褉邪斜芯褌邪褌褜 锌芯褔褌懈 泻邪泻 Vi, 写邪卸械 械褋谢懈 褋褍褖械褋褌胁褍械褌 褎邪泄谢 .vimrc. +.TP +\-d +袪械卸懈屑 锌芯懈褋泻邪 褉邪蟹谢懈褔懈泄. +袛芯谢卸薪芯 斜褘褌褜 褍泻邪蟹邪薪芯 写胁邪 懈谢懈 褌褉懈 懈屑械薪懈 褎邪泄谢邪. +.B Vim +芯褌泻褉芯械褌 胁褋械 褎邪泄谢褘 懈 锌芯泻邪卸械褌 褉邪蟹谢懈褔懈褟 屑械卸写褍 薪懈屑懈 +(泻邪泻 vimdiff(1)). +.TP +\-d {褍褋褌褉芯泄褋褌胁芯} +袨褌泻褉褘褌褜 {褍褋褌褉芯泄褋褌胁芯} 写谢褟 懈褋锌芯谢褜蟹芯胁邪薪懈褟 胁 泻邪褔械褋褌胁械 褌械褉屑懈薪邪谢邪 (褌芯谢褜泻芯 薪邪 Amiga). +袩褉懈屑械褉: +"\-d con:20/30/600/150". +.TP +\-e +袟邪锌褍褋褌懈褌褜 +.B Vim +胁 褉械卸懈屑械 Ex, 泻邪泻 斜褍写褌芯 懈褋锌芯谢薪褟械屑褘泄 褎邪泄谢 懈屑械械褌 懈屑褟 "ex". +.TP +\-f +袪械卸懈屑 邪泻褌懈胁薪芯谐芯 锌褉懈谢芯卸械薪懈褟. 袙械褉褋懈褟 +.B Vim +褋 谐褉邪褎懈褔械褋泻懈屑 懈薪褌械褉褎械泄褋芯屑 薪械 斜褍写械褌 胁械褌胁懈褌褜褋褟 懈 芯褌泻谢褞褔邪褌褜褋褟 +芯褌 蟹邪锌褍褋褌懈胁褕械泄 械褢 芯斜芯谢芯褔泻懈. 袧邪 锌谢邪褌褎芯褉屑械 Amiga +.B Vim +薪械 斜褍写械褌 褋芯蟹写邪胁邪褌褜 薪芯胁芯械 芯泻薪芯. 协褌芯褌 泻谢褞褔 薪褍卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜, +泻芯谐写邪 +.B Vim +蟹邪锌褍褋泻邪械褌褋褟 锌褉芯谐褉邪屑屑芯泄, 泻芯褌芯褉邪褟 写芯谢卸薪邪 卸写邪褌褜 蟹邪胁械褉褕械薪懈褟 +褋械邪薪褋邪 锌褉邪胁泻懈 (薪邪锌褉懈屑械褉, 锌褉芯谐褉邪屑屑邪 写谢褟 褉邪斜芯褌褘 褋 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌芯泄). +袧邪 锌谢邪褌褎芯褉屑械 Amiga 泻芯屑邪薪写褘 ":sh" 懈 ":!" 薪械 斜褍写褍褌 褉邪斜芯褌邪褌褜. +.TP +\-\-nofork +袪械卸懈屑 邪泻褌懈胁薪芯谐芯 锌褉懈谢芯卸械薪懈褟. 袙械褉褋懈褟 +.B Vim +褋 谐褉邪褎懈褔械褋泻懈屑 懈薪褌械褉褎械泄褋芯屑 薪械 斜褍写械褌 胁械褌胁懈褌褜褋褟 懈 芯褌泻谢褞褔邪褌褜褋褟 +芯褌 蟹邪锌褍褋褌懈胁褕械泄 械褢 芯斜芯谢芯褔泻懈. +.TP +\-F +袝褋谢懈 +.B Vim +斜褘谢 褋芯斜褉邪薪 褋 锌芯写写械褉卸泻芯泄 FKMAP 写谢褟 锌褉邪胁泻懈 褌械泻褋褌邪 褋锌褉邪胁邪 薪邪谢械胁芯 +懈 薪邪褋褌褉芯械泻 泻谢邪胁懈邪褌褍褉褘 写谢褟 褟蟹褘泻邪 褎邪褉褋懈, 褝褌芯褌 泻谢褞褔 蟹邪锌褍褋泻邪械褌 +.B Vim +胁 褉械卸懈屑械 褎邪褉褋懈, 懈薪邪褔械 谐芯胁芯褉褟, 褋 胁泻谢褞褔褢薪薪褘屑懈 芯锌褑懈褟屑懈 +\&'fkmap' 懈 'rightleft'. +袙 锌褉芯褌懈胁薪芯屑 褋谢褍褔邪械 +.B Vim +蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 褋 褋芯芯斜褖械薪懈械屑 芯斜 芯褕懈斜泻械. +.TP +\-g +袝褋谢懈 +.B Vim +斜褘谢 褋芯斜褉邪薪 褋 锌芯写写械褉卸泻芯泄 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪, 褝褌芯褌 泻谢褞褔 +胁泻谢褞褔邪械褌 谐褉邪褎懈褔械褋泻懈泄 懈薪褌械褉褎械泄褋. 袙 锌褉芯褌懈胁薪芯屑 褋谢褍褔邪械 +.B Vim +蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 褋 褋芯芯斜褖械薪懈械屑 芯斜 芯褕懈斜泻械. +.TP +\-h +袙褘胁芯写懈褌 泻褉邪褌泻褍褞 懈薪褎芯褉屑邪褑懈褞 芯斜 邪褉谐褍屑械薪褌邪褏 懈 泻谢褞褔邪褏 泻芯屑邪薪写薪芯泄 褋褌褉芯泻懈. +袩芯褋谢械 褝褌芯谐芯 +.B Vim +蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍. +.TP +\-H +袝褋谢懈 +.B Vim +斜褘谢 褋芯斜褉邪薪 褋 锌芯写写械褉卸泻芯泄 锌褉邪胁泻懈 褌械泻褋褌邪 褋锌褉邪胁邪 薪邪谢械胁芯 +懈 薪邪褋褌褉芯械泻 泻谢邪胁懈邪褌褍褉褘 写谢褟 懈胁褉懈褌邪, 褝褌芯褌 泻谢褞褔 蟹邪锌褍褋泻邪械褌 +.B Vim +胁 褉械卸懈屑械 懈胁褉懈褌邪, 懈薪邪褔械 谐芯胁芯褉褟, 褋 胁泻谢褞褔褢薪薪褘屑懈 芯锌褑懈褟屑懈 'hkmap' 懈 'rightleft'. +袙 锌褉芯褌懈胁薪芯屑 褋谢褍褔邪械 +.B Vim +蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 褋 褋芯芯斜褖械薪懈械屑 芯斜 芯褕懈斜泻械. +.TP +\-i {viminfo} +袝褋谢懈 懈褋锌芯谢褜蟹褍械褌褋褟 褎邪泄谢 viminfo, 褌芯 褝褌芯褌 泻谢褞褔 蟹邪写邪褢褌 懈屑褟 褌邪泻芯谐芯 褎邪泄谢邪 (胁屑械褋褌芯 +"~/.viminfo" 锌芯 褍屑芯谢褔邪薪懈褞). 袦芯卸薪芯 褌邪泻卸械 懈蟹斜械卸邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟 褎邪泄谢邪 viminfo +锌褍褌褢屑 褍泻邪蟹邪薪懈褟 懈屑械薪懈 "NONE". +.TP +\-L +孝芯 卸械, 褔褌芯 懈 \-r. +.TP +\-l +袪械卸懈屑 Lisp. 袙泻谢褞褔邪褞褌褋褟 芯锌褑懈懈 'lisp' 懈 'showmatch'. +.TP +\-m +袠蟹屑械薪械薪懈械 褎邪泄谢芯胁 蟹邪锌褉械褖械薪芯. 袩褉懈 褝褌芯屑 芯褌泻谢褞褔邪械褌褋褟 芯锌褑懈褟 'write', 锌芯褝褌芯屑褍 +蟹邪锌懈褋褜 褎邪泄谢芯胁 褋褌邪薪芯胁懈褌褋褟 薪械胁芯蟹屑芯卸薪芯泄. +.TP +\-N +袪械卸懈屑 薪械锌芯谢薪芯泄 褋芯胁屑械褋褌懈屑芯褋褌懈. 袨褌泻谢褞褔邪械褌褋褟 'compatible'. +.B Vim +斜褍写械褌 褉邪斜芯褌邪褌褜 谢褍褔褕械, 薪芯 薪械 斜褍写械褌 锌芯谢薪芯褋褌褜褞 褋芯胁屑械褋褌懈屑 褋 Vi, 写邪卸械 械褋谢懈 +芯褌褋褍褌褋褌胁褍械褌 褎邪泄谢 褋褑械薪邪褉懈褟 薪邪褋褌褉芯械泻 (.vimrc). +.TP +\-n +袧械 懈褋锌芯谢褜蟹芯胁邪褌褜 褋胁芯锌-褎邪泄谢. 袙芯褋褋褌邪薪芯胁谢械薪懈械 锌褉懈 褋斜芯械 胁 褉邪斜芯褌械 斜褍写械褌 薪械胁芯蟹屑芯卸薪芯. +校写芯斜薪芯 写谢褟 锌褉邪胁泻懈 褎邪泄谢邪 薪邪 芯褔械薪褜 屑械写谢械薪薪芯屑 薪芯褋懈褌械谢械 (薪邪锌褉懈屑械褉, 谐懈斜泻芯屑 写懈褋泻械). +孝芯 卸械 褋邪屑芯械 屑芯卸薪芯 褋写械谢邪褌褜 泻芯屑邪薪写芯泄 ":set uc=0". 袨褌屑械薪邪 -- ":set uc=200". +.TP +\-o[N] +袨褌泻褉褘褌褜 N 芯泻芯薪, 褉邪蟹写械谢褢薪薪褘褏 锌芯 谐芯褉懈蟹芯薪褌邪谢懈. 袝褋谢懈 N 薪械 褍泻邪蟹邪薪芯, 褌芯 芯褌泻褉褘胁邪械褌褋褟 +锌芯 芯写薪芯屑褍 芯泻薪褍 薪邪 泻邪卸写褘泄 褎邪泄谢. +.TP +\-O[N] +袨褌泻褉褘褌褜 N 芯泻芯薪, 褉邪蟹写械谢褢薪薪褘褏 锌芯 胁械褉褌懈泻邪谢懈. 袝褋谢懈 N 薪械 褍泻邪蟹邪薪芯, 褌芯 芯褌泻褉褘胁邪械褌褋褟 +锌芯 芯写薪芯屑褍 芯泻薪褍 薪邪 泻邪卸写褘泄 褎邪泄谢. +.TP +\-R +袪械卸懈屑 "褌芯谢褜泻芯 写谢褟 褔褌械薪懈褟". 袙泻谢褞褔邪械褌褋褟 芯锌褑懈褟 'readonly'. +肖邪泄谢 胁 斜褍褎械褉械 写芯褋褌褍锌械薪 写谢褟 褉械写邪泻褌懈褉芯胁邪薪懈褟, 薪芯 械谐芯 泻芯锌懈褞 薪邪 写懈褋泻械 薪械谢褜蟹褟 +褋谢褍褔邪泄薪芯 锌械褉械蟹邪锌懈褋邪褌褜. 袛谢褟 褋芯褏褉邪薪械薪懈褟 褎邪泄谢邪 薪械芯斜褏芯写懈屑芯 写芯斜邪胁懈褌褜 胁芯褋泻谢懈褑邪褌械谢褜薪褘泄 +蟹薪邪泻 泻 褋芯芯褌胁械褌褋褌胁褍褞褖械泄 泻芯屑邪薪写械 Ex (薪邪锌褉懈屑械褉, ":w!"). +袣谢褞褔 "\-R" 锌芯写褉邪蟹褍屑械胁邪械褌 褌邪泻卸械, 褔褌芯 懈褋锌芯谢褜蟹褍械褌褋褟 懈 泻谢褞褔 "\-n" (褋屑. 胁褘褕械). +袨锌褑懈褟 'readonly' 屑芯卸械褌 斜褘褌褜 胁褘泻谢褞褔械薪邪 锌芯 泻芯屑邪薪写械 ":set noro". +小屑. ":help 'readonly'". +.TP +\-r +袙褘胁械褋褌懈 褋锌懈褋芯泻 褋胁芯锌-褎邪泄谢芯胁 懈 懈薪褎芯褉屑邪褑懈褞 芯斜 懈褏 懈褋锌芯谢褜蟹芯胁邪薪懈懈 写谢褟 胁芯褋褋褌邪薪芯胁谢械薪懈褟 锌芯褋谢械 褋斜芯褟. +.TP +\-r {褎邪泄谢} +袪械卸懈屑 胁芯褋褋褌邪薪芯胁谢械薪懈褟. +袛谢褟 胁芯褋褋褌邪薪芯胁谢械薪懈褟 锌芯褋谢械 褋斜芯褟 斜褍写械褌 懈褋锌芯谢褜蟹芯胁邪薪 褋胁芯锌-褎邪泄谢. +小胁芯锌-褎邪泄谢 懈屑械械褌 褌芯 卸械 懈屑褟, 褔褌芯 懈 褌械泻褋褌芯胁褘泄 褎邪泄谢, 薪芯 褋 写芯斜邪胁谢械薪懈械屑 褉邪褋褕懈褉械薪懈褟 ".swp". +小屑. ":help recovery". +.TP +\-s +孝懈褏懈泄 褉械卸懈屑. 孝芯谢褜泻芯 锌褉懈 蟹邪锌褍褋泻械 泻邪泻 "Ex" 懈谢懈 械褋谢懈 锌械褉械写 "\-s" 褍泻邪蟹邪薪 泻谢褞褔 "\-e". +.TP +\-s {scriptin} +小褔懈褌褘胁邪械褌褋褟 褎邪泄谢 褋褑械薪邪褉懈褟 {scriptin}. 袩褉懈 褝褌芯屑, 褋芯写械褉卸懈屑芯械 褎邪泄谢邪 胁芯褋锌褉懈薪懈屑邪械褌褋褟 +胁 胁懈写械 泻芯屑邪薪写, 泻邪泻 械褋谢懈 斜褘 芯薪懈 斜褘谢懈 薪邪斜褉邪薪褘 薪邪 泻芯薪褋芯谢懈. +孝芯 卸械 褋邪屑芯械 写芯褋褌懈谐邪械褌褋褟 泻芯屑邪薪写芯泄 ":source! {scriptin}". +袝褋谢懈 泻芯薪械褑 褎邪泄谢邪 褋褔懈褌褘胁邪械褌褋褟 写芯 蟹邪胁械褉褕械薪懈褟 褉邪斜芯褌褘 褉械写邪泻褌芯褉邪, 褌芯 胁 写邪谢褜薪械泄褕械屑 +胁胁芯写 芯褋褍褖械褋褌胁谢褟械褌褋褟 褋 泻谢邪胁懈邪褌褍褉褘. +.TP +\-T {terminal} +小芯芯斜褖邪械褌 +.B Vim +褌懈锌 懈褋锌芯谢褜蟹褍械屑芯谐芯 褌械褉屑懈薪邪谢邪. 袧械芯斜褏芯写懈屑芯 褌芯谢褜泻芯 胁 褌械褏 褋懈褌褍邪褑懈褟褏, 泻芯谐写邪 +邪胁褌芯屑邪褌懈褔械褋泻芯械 芯锌褉械写械谢械薪懈械 褌械褉屑懈薪邪谢邪 薪械 褉邪斜芯褌邪械褌. 袠屑褟 褌械褉屑懈薪邪谢邪 写芯谢卸薪芯 斜褘褌褜 +懈蟹胁械褋褌薪芯 +.B Vim +(胁褋褌褉芯械薪芯 胁 薪械谐芯) 懈谢懈 芯锌褉械写械谢械薪芯 胁 褎邪泄谢邪褏 termcap 懈谢懈 terminfo. +.TP +\-u {vimrc} +袠褋锌芯谢褜蟹芯胁邪褌褜 泻芯屑邪薪写褘 懈蟹 褎邪泄谢邪 褋褑械薪邪褉懈褟 {vimrc} 写谢褟 薪邪褋褌褉芯泄泻懈. +袙褋械 芯褋褌邪谢褜薪褘械 褎邪泄谢褘 薪邪褋褌褉芯械泻 锌褉芯锌褍褋泻邪褞褌褋褟. +校写芯斜薪芯 写谢褟 褉械写邪泻褌懈褉芯胁邪薪懈褟 褋锌械褑懈邪谢褜薪褘褏 褌懈锌芯胁 褎邪泄谢芯胁. +效褌芯斜褘 懈蟹斜械卸邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟 褋褑械薪邪褉懈械胁 薪邪褋褌褉芯械泻 胁芯芯斜褖械, 屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 +懈屑褟 "NONE". 小屑. ":help initialization". +.TP +\-U {gvimrc} +袠褋锌芯谢褜蟹芯胁邪褌褜 泻芯屑邪薪写褘 懈蟹 褎邪泄谢邪 褋褑械薪邪褉懈褟 {gvimrc} 写谢褟 薪邪褋褌褉芯泄泻懈 谐褉邪褎懈褔械褋泻芯谐芯 +懈薪褌械褉褎械泄褋邪. +袙褋械 芯褋褌邪谢褜薪褘械 褎邪泄谢褘 薪邪褋褌褉芯械泻 写谢褟 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪 锌褉芯锌褍褋泻邪褞褌褋褟. +效褌芯斜褘 懈蟹斜械卸邪褌褜 懈褋锌芯谢褜蟹芯胁邪薪懈褟 褋褑械薪邪褉懈械胁 薪邪褋褌褉芯械泻 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪 胁芯芯斜褖械, +屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 懈屑褟 "NONE". 小屑. ":help gui-init". +.TP +\-V +"袘芯谢褌谢懈胁褘泄" 褉械卸懈屑. 袙褘胁芯写懈褌褜 褋芯芯斜褖械薪懈褟 芯 褌芯屑, 泻邪泻懈械 褎邪泄谢褘 褔懈褌邪褞褌褋褟, 懈 芯 +褔褌械薪懈懈-蟹邪锌懈褋懈 褎邪泄谢邪 viminfo. +.TP +\-v +袟邪锌褍褋褌懈褌褜 +.B Vim +胁 褉械卸懈屑械 Vi, 泻邪泻 斜褍写褌芯 懈褋锌芯谢薪褟械屑褘泄 褎邪泄谢 懈屑械械褌 懈屑褟 "vi". 袠屑械械褌 褋屑褘褋谢 褌芯谢褜泻芯 械褋谢懈 +懈褋锌芯谢薪褟械屑褘泄 褎邪泄谢 懈屑械械褌 懈屑褟 "ex". +.TP +\-w {scriptout} +袙褋械 褋懈屑胁芯谢褘, 胁胁械写褢薪薪褘械 褋 泻谢邪胁懈邪褌褍褉褘 胁锌谢芯褌褜 写芯 屑芯屑械薪褌邪 蟹邪胁械褉褕械薪懈褟 褉邪斜芯褌褘, +蟹邪锌懈褋褘胁邪褞褌褋褟 胁 褎邪泄谢 {scriptout}. +校写芯斜薪芯 胁 褌芯屑 褋谢褍褔邪械, 泻芯谐写邪 胁褘 褏芯褌懈褌械 褋芯蟹写邪褌褜 褎邪泄谢 褋褑械薪邪褉懈褟 写谢褟 锌芯褋谢械写褍褞褖械谐芯 +懈褋锌芯谢褜蟹芯胁邪薪懈褟 褋 "vim \-s" 懈谢懈 ":source!". 袝褋谢懈 褎邪泄谢 {scriptout} 褍卸械 褋褍褖械褋褌胁褍械褌, +褌芯 薪芯胁褘械 褋懈屑胁芯谢褘 斜褍写褍褌 写芯斜邪胁谢褟褞褌褋褟 胁 泻芯薪械褑 褎邪泄谢邪. +.TP +\-W {scriptout} +袣邪泻 "\-w", 薪芯 褍卸械 褋褍褖械褋褌胁褍褞褖懈泄 褎邪泄谢 斜褍写械褌 锌械褉械蟹邪锌懈褋邪薪. +.TP +\-x +楔懈褎褉芯胁邪褌褜 蟹邪锌懈褋褘胁邪械屑褘械 褎邪泄谢褘. 袘褍写械褌 胁褘写邪薪芯 锌褉懈谐谢邪褕械薪懈械 胁胁械褋褌懈 锌邪褉芯谢褜. +.TP +\-X +袧械 锌芯写泻谢褞褔邪褌褜褋褟 泻 X-褋械褉胁械褉褍. 校褋泻芯褉褟械褌 蟹邪谐褉褍蟹泻褍 薪邪 泻芯薪褋芯谢懈, 薪芯 写械谢邪械褌 薪械胁芯蟹屑芯卸薪褘屑 +懈褋锌芯谢褜蟹芯胁邪薪懈械 蟹邪谐芯谢芯胁泻邪 芯泻薪邪 懈 斜褍褎械褉邪 芯斜屑械薪邪. +.TP +\-Z +袨谐褉邪薪懈褔械薪薪褘泄 褉械卸懈屑. 袪邪斜芯褌邪械褌 褌邪泻 卸械, 泻邪泻 懈 锌褉芯谐褉邪屑屑褘, 薪邪褔懈薪邪褞褖懈械褋褟 褋 "r". +.TP +\-\- +袣芯薪械褑 泻谢褞褔械泄. 袙褋械 芯褋褌邪谢褜薪褘械 邪褉谐褍屑械薪褌褘 褉邪褋褋屑邪褌褉懈胁邪褞褌褋褟 泻邪泻 懈屑械薪邪 褎邪泄谢芯胁. +袦芯卸械褌 斜褘褌褜 懈褋锌芯谢褜蟹芯胁邪薪芯 写谢褟 锌褉邪胁泻懈 褎邪泄谢芯胁, 懈屑械薪邪 泻芯褌芯褉褘褏 薪邪褔懈薪邪褞褌褋褟 褋 写械褎懈褋邪. +.TP +\-\-help +袙褘胁械褋褌懈 泻褉邪褌泻褍褞 褋锌褉邪胁泻褍 懈 蟹邪胁械褉褕懈褌褜 褉邪斜芯褌褍. 孝芯 卸械, 褔褌芯 懈 "\-h". +.TP +\-\-version +袙褘胁械褋褌懈 懈薪褎芯褉屑邪褑懈褞 芯 胁械褉褋懈懈 锌褉芯谐褉邪屑屑褘 懈 蟹邪胁械褉褕懈褌褜 褉邪斜芯褌褍. +.TP +\-\-remote +袩芯写泻谢褞褔懈褌褜褋褟 泻 褋械褉胁械褉褍 Vim 懈 蟹邪褋褌邪胁懈褌褜 械谐芯 锌褉邪胁懈褌褜 褎邪泄谢褘, 褍泻邪蟹邪薪薪褘械 胁 +锌芯褋谢械写褍褞褖懈褏 邪褉谐褍屑械薪褌邪褏. 袝褋谢懈 褋械褉胁械褉 薪械 薪邪泄写械薪, 胁褘胁芯写懈褌褋褟 锌褉械写褍锌褉械卸写械薪懈械, +邪 褎邪泄谢褘 锌褉邪胁褟褌褋褟 胁 屑械褋褌薪芯泄 泻芯锌懈懈 Vim. +.TP +\-\-remote\-expr {胁褘褉邪卸械薪懈械} +袩芯写泻谢褞褔懈褌褜褋褟 泻 褋械褉胁械褉褍 Vim 懈 胁褘褔懈褋谢懈褌褜 薪邪 薪褢屑 褍泻邪蟹邪薪薪芯械 {胁褘褉邪卸械薪懈械}. +袪械蟹褍谢褜褌邪褌 胁褘褔懈褋谢械薪懈褟 斜褍写械褌 胁褘胁械写械薪 胁 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁褘胁芯写邪 (stdout). +.TP +\-\-remote\-send {泻谢褞褔懈} +袩芯写泻谢褞褔懈褌褜褋褟 泻 褋械褉胁械褉褍 Vim 懈 锌械褉械写邪褌褜 械屑褍 褍泻邪蟹邪薪薪褘械 {泻谢褞褔懈}. +.TP +\-\-remote\-silent +袣邪泻 "\-\-remote", 薪芯 斜械蟹 胁褘胁芯写邪 锌褉械写褍锌褉械卸写械薪懈褟, 械褋谢懈 褋械褉胁械褉 薪械 薪邪泄写械薪. +.TP +\-\-remote\-wait +袣邪泻 "\-\-remote", 薪芯 Vim 薪械 斜褍写械褌 蟹邪胁械褉褕邪褌褜 褉邪斜芯褌褍 写芯 褌械褏 锌芯褉, 锌芯泻邪 薪械 斜褍写械褌 +胁褘锌芯谢薪械薪邪 锌褉邪胁泻邪 胁褋械褏 褎邪泄谢芯胁. +.TP +\-\-remote\-wait\-silent +袣邪泻 "\-\-remote\-wait", 薪芯 斜械蟹 胁褘胁芯写邪 锌褉械写褍锌褉械卸写械薪懈褟, 械褋谢懈 褋械褉胁械褉 薪械 薪邪泄写械薪. +.TP +\-\-serverlist +袙褘胁械褋褌懈 褋锌懈褋芯泻 胁褋械褏 写芯褋褌褍锌薪褘褏 褋械褉胁械褉芯胁 Vim. +.TP +\-\-servername {懈屑褟} +袠褋锌芯谢褜蟹芯胁邪褌褜 褍泻邪蟹邪薪薪芯械 {懈屑褟} 胁 泻邪褔械褋褌胁械 懈屑械薪懈 褋械褉胁械褉邪. 袝褋谢懈 泻谢褞褔 +"\-\-remote" 薪械 褍泻邪蟹邪薪, 褌芯 {懈屑褟} 锌褉懈褋胁邪懈胁邪械褌褋褟 写邪薪薪芯泄 泻芯锌懈懈 Vim, +胁 锌褉芯褌懈胁薪芯屑 褋谢褍褔邪械 褍泻邪蟹褘胁邪械褌 薪邪 懈屑褟 褋械褉胁械褉邪, 泻 泻芯褌芯褉芯屑褍 褋谢械写褍械褌 +锌芯写泻谢褞褔懈褌褜褋褟. +.TP +\-\-socketid {id} +孝芯谢褜泻芯 写谢褟 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪 GTK: 懈褋锌芯谢褜蟹芯胁邪褌褜 屑械褏邪薪懈蟹屑 GtkPlug 写谢褟 +蟹邪锌褍褋泻邪 gvim 胁 芯褌写械谢褜薪芯屑 芯泻薪械. +.TP +\-\-echo\-wid +孝芯谢褜泻芯 写谢褟 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪 GTK: 胁褘胁械褋褌懈 懈写械薪褌懈褎懈泻邪褌芯褉 芯泻薪邪 (Window ID) +胁 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁褘胁芯写邪 (stdout). +.SH 袙小孝袪袨袝袧袧袗携 小袩袪袗袙袣袗 +袛谢褟 薪邪褔邪谢邪, 薪邪斜械褉懈褌械 泻芯屑邪薪写褍 ":help". +袙胁械写懈褌械 ":help 褌械屑邪", 褔褌芯斜褘 锌芯谢褍褔懈褌褜 褋锌褉邪胁泻褍 锌芯 泻芯薪泻褉械褌薪芯泄 褌械屑械. +袧邪锌褉懈屑械褉, 泻芯屑邪薪写邪 ":help ZZ" 胁褘胁械写械褌 懈薪褎芯褉屑邪褑懈褞 芯 泻芯屑邪薪写械 "ZZ". +袠褋锌芯谢褜蟹褍泄褌械 <Tab> 懈 CTRL-D 写谢褟 邪胁褌芯屑邪褌懈褔械褋泻芯谐芯 写芯锌芯谢薪械薪懈褟 +薪邪蟹胁邪薪懈泄 褌械屑 (":help cmdline-completion"). +袛谢褟 斜褘褋褌褉芯谐芯 锌械褉械屑械褖械薪懈褟 锌芯 褋锌褉邪胁芯褔薪懈泻褍 懈褋锌芯谢褜蟹褍褞褌褋褟 屑械褌泻懈 (褔褌芯-褌芯 +胁褉芯写械 谐懈锌械褉褌械泻褋褌芯胁褘褏 褋褋褘谢芯泻, 褋屑. ":help"). 孝邪泻懈屑 芯斜褉邪蟹芯屑 屑芯卸薪芯 +锌褉芯褋屑邪褌褉懈胁邪褌褜 胁褋械 褎邪泄谢褘 褋锌褉邪胁泻懈, 薪邪锌褉懈屑械褉 ":help syntax.txt". +.SH 肖袗袡袥蝎 +.TP 15 +/usr/local/lib/vim/doc/*.txt +肖邪泄谢褘 褋锌褉邪胁芯褔薪懈泻邪 +.B Vim. +小屑. ":help doc-file-list" 写谢褟 锌芯谢褍褔械薪懈褟 锌芯谢薪芯谐芯 褋锌懈褋泻邪. +.TP +/usr/local/lib/vim/doc/tags +肖邪泄谢 屑械褌芯泻, 懈褋锌芯谢褜蟹褍械屑褘泄 写谢褟 锌芯懈褋泻邪 懈薪褎芯褉屑邪褑懈懈 胁 褎邪泄谢邪褏 褋锌褉邪胁泻懈. +.TP +/usr/local/lib/vim/syntax/syntax.vim +小懈褋褌械屑薪褘械 薪邪褋褌褉芯泄泻懈 褋懈薪褌邪泻褋懈褋邪. +.TP +/usr/local/lib/vim/syntax/*.vim +肖邪泄谢褘 褋懈薪褌邪泻褋懈褋邪 写谢褟 褉邪蟹薪褘褏 褟蟹褘泻芯胁. +.TP +/usr/local/lib/vim/vimrc +小懈褋褌械屑薪褘械 薪邪褋褌褉芯泄泻懈 +.B Vim. +.TP +/usr/local/lib/vim/gvimrc +小懈褋褌械屑薪褘泄 薪邪褋褌褉芯泄泻懈 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪. +.TP +/usr/local/lib/vim/optwin.vim +小褑械薪邪褉懈泄, 懈褋锌芯谢褜蟹褍械屑褘泄 锌褉懈 胁褘锌芯谢薪械薪懈懈 泻芯屑邪薪写褘 ":options". +啸芯褉芯褕懈泄 褋锌芯褋芯斜 锌褉芯褋屑邪褌褉懈胁邪褌褜 懈 懈蟹屑械薪褟褌褜 薪邪褋褌褉芯泄泻懈. +.TP +/usr/local/lib/vim/menu.vim +小懈褋褌械屑薪褘械 薪邪褋褌褉芯泄泻懈 屑械薪褞 写谢褟 gvim. +.TP +/usr/local/lib/vim/bugreport.vim +小褑械薪邪褉懈泄 写谢褟 褋芯蟹写邪薪懈褟 芯褌褔褢褌邪 芯斜 芯斜薪邪褉褍卸械薪薪褘褏 谐谢褞泻邪褏. 小屑. ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +小褑械薪邪褉懈泄 写谢褟 芯锌褉械写械谢械薪懈褟 褌懈锌邪 褎邪泄谢邪 锌芯 懈屑械薪懈. 小屑. ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +小褑械薪邪褉懈泄 写谢褟 芯锌褉械写械谢械薪懈褟 褌懈锌邪 褎邪泄谢邪 锌芯 褋芯写械褉卸懈屑芯屑褍. 小屑. ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +肖邪泄谢褘 写谢褟 锌械褔邪褌懈 PostScript. +.PP +袘芯谢械械 褋胁械卸邪褟 懈薪褎芯褉屑邪褑懈褟 -- 薪邪 褋邪泄褌械 VIM: +.br +<URL:http://www.vim.org/> +.SH 小袦袨孝袪袠 孝袗袣袞袝 +vimtutor(1) +.SH 袗袙孝袨袪蝎 +袘芯谢褜褕邪褟 褔邪褋褌褜 +.B Vim +褋芯蟹写邪薪邪 袘褉邪屑芯屑 袦芯芯谢械薪邪邪褉芯屑 (Bram Moolenaar), 泻芯褌芯褉芯屑褍 锌芯屑芯谐邪械褌 芯谐褉芯屑薪芯械 +泻芯谢懈褔械褋褌胁芯 谢褞写械泄. 小屑. ":help credits" 胁 +.B Vim. +.br +.B Vim +斜邪蟹懈褉褍械褌褋褟 薪邪 泻芯写械 褉械写邪泻褌芯褉邪 Stevie, 薪邪锌懈褋邪薪薪芯谐芯 孝懈屑芯屑 孝芯屑锌褋芯薪芯屑 (Tim Thompson), +孝芯薪懈 协薪写褉褞褋芯屑 (Tony Andrews) 懈 袚. 袪. (肖褉械写芯屑) 校芯谢褌械褉芯屑 (G.R. (Fred) Walter). +袨写薪邪泻芯, 胁 薪邪褋褌芯褟褖械械 胁褉械屑褟 胁 Vim 锌芯褔褌懈 薪械 芯褋褌邪谢芯褋褜 薪懈褔械谐芯 芯褌 懈褋褌芯褉懈褔械褋泻芯谐芯 泻芯写邪 +械谐芯 锌褉械写褕械褋褌胁械薪薪懈泻邪. +.br +袪褍褋褋泻邪褟 谢芯泻邪谢懈蟹邪褑懈褟 +.B Vim +胁褘锌芯谢薪褟械褌褋褟 胁 褉邪屑泻邪褏 锌褉芯械泻褌邪 "袪褍袙懈屑", +褋屑. <URL:http://sourceforge.net/projects/ruvim/>. +.SH 袚袥挟袣袠 +小泻芯褉械械 胁褋械谐芯 械褋褌褜. +小屑. ":help todo" -- 褋锌懈褋芯泻 懈蟹胁械褋褌薪褘褏 锌褉芯斜谢械屑. +.PP +袟邪屑械褌懈屑, 褔褌芯 屑薪芯谐懈械 胁械褖懈, 泻芯褌芯褉褘械 褋褔懈褌邪褞褌褋褟 谐谢褞泻邪屑懈, 薪邪 褋邪屑芯屑 写械谢械 +褟胁谢褟褞褌褋褟 褉械蟹褍谢褜褌邪褌芯屑 褋谢懈褕泻芯屑 锌芯谢薪芯谐芯 胁芯褋锌褉芯懈蟹胁械写械薪懈褟 锌芯胁械写械薪懈褟 Vi. +袝褋谢懈 胁褘 写褍屑邪械褌械, 褔褌芯 褔褌芯-褌芯 褟胁谢褟械褌褋褟 芯褕懈斜泻芯泄 褌芯谢褜泻芯 锌芯褌芯屑褍, 褔褌芯 +"Vi 写械谢邪械褌 褝褌芯 锌芯-写褉褍谐芯屑褍", 胁薪懈屑邪褌械谢褜薪芯 锌褉芯褔懈褌邪泄褌械 褎邪泄谢 vi_diff.txt +(懈谢懈 薪邪斜械褉懈褌械 ":help vi_diff.txt" 胁 Vim) 懈 懈褋锌芯谢褜蟹褍泄褌械 芯锌褑懈懈 'compatible' +懈 'cpoptions'. diff --git a/runtime/doc/vim-tr.1 b/runtime/doc/vim-tr.1 new file mode 100644 index 0000000..0872810 --- /dev/null +++ b/runtime/doc/vim-tr.1 @@ -0,0 +1,544 @@ +.TH VIM 1 "11 Nisan 2006" +.SH AD +vim \- Vi IMproved, bir programc齨齨 metin d鼁enleyicisi +.SH 諾ET +.br +.B vim +[se鏴nekler] [dosya ..] +.br +.B vim +[se鏴nekler] \- +.br +.B vim +[se鏴nekler] \-t etiket +.br +.B vim +[se鏴nekler] \-q [hatadosyas齗 +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH TANIM +.B Vim, +Vi ile yukar齳a do餽u uyumlu olan bir metin d鼁enleyicisidir. +Her t黵 d鼁 metni d鼁enlemede kullan齦abilir. +謟ellikle programlar d鼁enlemede yararl齞齬. +.PP +Vi 鼁erine yap齦m bir鏾k geli⺶irme ve iyile⺶irmeyi i鏴rir: +莖k d鼁eyli geri alma, 鏾klu pencereler ve arabellekler, s鰖dizim vurgulama, +komut sat齬 d鼁enleme, dosya ad tamamlama, 鏴vrimi鏸 yard齧, g鰎sel se鏸m vb. +.B Vim +ve Vi aras齨daki de餴㱮kliklerin bir 鰖eti i鏸n ":help vi_diff.txt" +dosyas齨a bir g鰖 at齨. +.PP +.B Vim'i +鏰lt齬齬ken gerekli olan yard齧齨 鏾饀 鏴vrimi鏸 yard齧 sisteminden elde +edilebilir. Bunun i鏸n ":help" komutunu kullanabilirsiniz. +A瘕da 荅VR軲萸 YARDIM b鰈黰黱e bak齨. +.PP +Genelde +.B Vim +tek bir dosyay d鼁enlemek i鏸n ⺷ komutla 鏰lt齬齦齬: +.PP + vim dosya +.PP +Biraz daha a鏰cak olursak: +.PP + vim [se鏴nekler] [dosyalistesi] +.PP +E餰r dosya listesi sa餷anmamsa d鼁enleyici bo bir arabellek a鏰r. +Bunun d齨da a瘕daki d鰎t se鏴nekten bir tanesi de bir veya birden 鏾k +dosyay d鼁enlemek i鏸n kullan齦abilir. +.TP 12 +dosya .. +Dosya adlar齨齨 bir listesi. +Bunlardan ilki ekrana getirilip arabelle餰 y黭lenir. +輒le arabelle餴n ilk sat齬齨da konumland齬齦齬. +Di餰r dosyalara ":next" komutu ile ge鏴bilirsiniz. +Ad tire ile baayan bir dosyay d鼁enlemek i鏸n dosya listesinin bana +"\-\-" koyun. +.TP +\- +D鼁enlenecek dosya stdin'den okunur. Komutlar bir tty olmas gereken +stderr'den okunur. +.TP +\-t {etiket} +D鼁enlenecek dosya ve bu dosyan齨 baang imle konumu bir "etiket"e +dayan齬, bir t黵 b齬akt齨齴 konumu belirten bir ayra gibi. +Etiket dosyas齨da {etiket} aran齬, ili⺧in dosya ⺷ anki dosya olur ve +ili⺧in komut 鏰lt齬齦齬. +Bu genelde C programlar i鏸n kullan齦齬, {etiket} bu durumda bir iev +olabilir. +Bunun sonucunda bu ievi i鏴ren dosya o anki dosya olur ve imle bu +ievin baang齝齨a konumland齬齦齬. +Ek bilgi i鏸n: ":help tag\-commands". +.TP +\-q [hatadosyas齗 +H齴l d鼁elt kipinde baat +[hatadosyas齗 okunur ve ilk hata g鰎黱t黮enir. +E餰r [hatadosyas齗 sa餷anmazsa dosya ad 'errorfile' se鏴ne餴nden al齨齬 +(鰊tan齧l olarak Amiga i鏸n "AztecC.Err", di餰r sistemlerde "errors.err"). +Sonraki hatalara ":cn" komutu ile ge鏸lebilir. +Ek bilgi i鏸n: ":help quickfix". +.PP +.B Vim +girilen komutun ad齨a g鰎e de餴㱮k bi鏸mde davran齬 (鏰lt齬齦abilir h鈒 +ayn dosya olarak kalabilir). +.TP 10 +vim +"Normal" kip, standart 鏰lma bi鏸mi. +.TP +ex +Ex kipinde baat. +"\-e" de餴⺧eni ile de baat齦abilir. +Normal kipe ":vi" komutu ile ge鏸lebilir. +.TP +view +Saltokunur kipte baat. Bu kipte dosya yaz齧齨a izin verilmez. +"\-R" de餴⺧eni ile de baat齦abilir. +.TP +gvim gview +Grafik arabirim s黵黰. +Yeni bir pencere a鏰r. +"\-g" de餴⺧eni ile de baat齦abilir. +.TP +evim eview +Kolay kipte baat齦an grafik arabirim s黵黰. +Yeni bir pencere a鏰r. +"\-y" de餴⺧eni ile de baat齦abilir. +.TP +rvim rview rgvim rgview +Yukar齞aki ile ayn, ancak s齨齬lamalar i鏴rir. Kabuk komutlar +鏰lt齬齦amaz veya +.B Vim +ask齳a al齨amaz. +"\-Z" de餴⺧eni ile de baat齦abilir. +.SH SE荅NEKLER +Se鏴nekler bir s齬a g鰖etmeksizin dosya adlar齨dan 鰊ce veya sonra +kullan齦abilir. +Herhangi bir de餴⺧en i鏴rmeyen se鏴nekler bir tirenin ard齨da s齬alanabilir. +.TP 12 ++[num] +輑k dosya i鏸n imle "num" sat齬齨da konumland齬齦acakt齬. +E餰r "num" eksikse imle en son sat齬da baar. +.TP ++/{dizge} +輑k dosya i鏸n imle {dizgi}'nin ilk eeesinin oldu饀 sat齬da +konumland齬齦acakt齬. +Kullan齦abilir arama dizgileri i鏸n ":help search\-pattern" yaz齨. +.TP ++{komut} +.TP +\-c {komut} +輑k dosya okunduktan sonra {komut} 鏰lt齬齦齬. +{komut} bir Ex komutu olarak ietilir. +E餰r {komut} bouk i鏴riyorsa 鏸ft t齬nak i鏴risine al齨mal齞齬 (bu +kullan齦an kabu餫 ba餷齞齬). +謗nek: vim "+set si" main.c +.br +Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz. +.TP +\-S {dosya} +輑k dosya okunduktan sonra {dosya} kaynak al齨齬. +\-c "source {dosya}" bu komutun e㩳e餰ridir. +{dosya}, '\-' ile baayamaz. +E餰r {dosya} sa餷anmazsa "Session.vim" kullan齦齬 (yaln齴ca \-S son +de餴⺧en olarak kullan齦d齨da i㧐 yarar). +.TP +\-\-cmd {komut} +"\-c" komutu gibi, ancak komut herhangi bir vimrc dosyas齨 ietmeden +鰊ce 鏰lt齬齦齬. +"\-c" komutundan ba瘕ms齴 olarak bu komutlardan 10 taneye kadar +鏰lt齬abilirsiniz. +.TP +\-A +E餰r +.B Vim +sa餯an sola yaz齦an dosyalar ve Arap鏰 klavye dizilimini kullanabilmesi i鏸n +ARAP茿 deste餴 ile derlenmi㧐 bu se鏴nek +.B Vim'i +Arap鏰 kipinde baat齬 ('arabic' se鏴ne餴 a琮l齬). Aksi durumda +.B Vim +hata verip 琮kar. +.TP +\-b +輐ili kip. +Bir 鏰lt齬齦abiliri veya ikili dosyay d鼁enlemeye olanacak sa餷ayacak +birka se鏴nek ayarlan齬. +.TP +\-C +Uyumlu kip. 'compatible' se鏴ne餴ni ayarlar. +Bu kipte +.B Vim +bir .vimrc dosyas var olsa bile genelde Vi gibi davran齬. +.TP +\-d +Karla⺶齬ma kipinde baat. +Bir, iki,  veya d鰎t adet dosya ad de餴⺧eni olmal齞齬. +.B Vim +b黷黱 dosyalar yan yana a鏰r ve aralar齨daki de餴㱮klikleri g鰏terir. +vimdiff(1) gibi 鏰l齬. +.TP +\-d {ayg齮} +{ayg齮}' bir u鏱irim olarak kullanmak i鏸n a鏰r. +Yaln齴ca Amiga'da 鏰l齬. +謗nek: +"\-d con:20/30/600/150". +.TP +\-D +Hata ay齥lama kipi. Bir beti餴n ilk komutunu 鏰lt齬齬ken hata ay齥lama +kipine ge鏴r. +.TP +\-e +.B Vim'i +Ex kipinde baat齬, "ex" 鏰lt齬齦abiliri ile ayn ievi g鰎黵. +.TP +\-E +.B Vim'i +geli⺶irilmi Ex kipinde baat齬, "exim" 鏰lt齬齦abiliri ile ayn +ievi g鰎黵. +.TP +\-f +謓plan. Grafik arabirim s黵黰 i鏸n +.B Vim +baad kabuktan ayr齦mayacak ve kendisini 鏰tallamayacakt齬. +Amiga'da, +.B Vim +yeni bir pencere a鏼ak i鏸n yeniden baat齦maz. +Bu se鏴nek +.B Vim +d鼁enleme oturumunun bitmesini bekleyecek bir program taraf齨dan +baat齦d齨da kullan齦mal齞齬 (鰎n. mail). +Amiga'da ":sh" ve ":!" komutlar 鏰lmayacakt齬. +.TP +\-\-nofork +謓plan. Grafik arabirim s黵黰 i鏸n +.B Vim +baad kabuktan ayr齦mayacak ve kendisini 鏰tallamayacakt齬. +.TP +\-F +E餰r +.B Vim +sa餯an sola yaz齦an dosyalar ve Fars鏰 klavye dizilimini kullanabilmesi i鏸n +FKMAP deste餴 ile derlenmi⺳e, bu se鏴nek +.B Vim'i +Fars鏰 kipinde baat齬 ('fkmap' ve 'rightleft' se鏴nekleri a琮l齬). +Aksi durumda +.B Vim +hata verip 琮kar. +.TP +\-g +E餰r +.B Vim +grafik arabirim deste餴 ile derlenmi⺳e bu se鏴nek grafik arabirimi 鏰lt齬齬. +E餰r grafik arabirim deste餴 eklenmemi⺳e +.B Vim +hata verir ve 琮kar. +.TP +\-h +Komut sat齬 de餴⺧enleri ve se鏴nekleri 鼁erine biraz yard齧 sa餷ar. +Bu komuttan sonra +.B Vim +琮kar. +.TP +\-H +E餰r +.B Vim +sa餯an sola yaz齦an dosyalar ve 輇ranca klavye dizilimini kullanabilmesi i鏸n +RIGHTLEFT deste餴 ile derlenmi⺳e, bu se鏴nek +.B Vim'i +輇ranca kipinde baat齬 ('hkmap' ve 'rightleft' se鏴nekleri a琮l齬). +Aksi durumda +.B Vim +hata verir ve 琮kar. +.TP +\-i {viminfo} +謓tan齧l "~/.viminfo" dosyas yerine kullan齦acak olan viminfo dosyas齨 +belirtmek i鏸n kullan齦齬. +Bu komut ayn zamanda viminfo kullan齧齨 atlamak i鏸n de kullan齦abilir. +Bunun i鏸n dosya ad yerine "NONE" vermeniz yeterlidir. +.TP +\-L +\-r ile ayn. +.TP +\-l +Lisp kipi. +Bu de餴⺧en 'lisp' ve 'showmatch' se鏴neklerini a鏰r. +.TP +\-m +Dosya yazma se鏴ne餴 kapal齞齬. +\'write' se鏴ne餴ni s齠齬lar. +Arabelle餴 h鈒 de餴⺶irebilirsiniz, ancak dosyay yazmak olanakl de餴ldir. +.TP +\-M +De餴㱮kliklere izin verilmez. 'modifiable' ve 'write' se鏴nekleri kapat齦齬, +b鰕lece de餴㱮klik yap齦amaz ve dosyalar yaz齦amaz. +Bu se鏴nekleri yeniden a琮p de餴㱮klik yapmay etkinle⺶irebilirsiniz. +.TP +\-N +Uyumsuz kip. 'no-compatible' se鏴ne餴ni s齠齬lar. +Bu se鏴nekle birlikte +.B Vim +biraz daha d鼁g黱ce 鏰l齬, ancak bir .vimrc dosyas olmamas齨a ra餸en +Vi ile daha az uyumludur. +.TP +\-n +Bir takas dosyas kullan齦maz. +泅kme sonras kurtarma olanakl olmayacakt齬. +E餰r 鏾k yava bir ortamda dosya 鏰l齳orsan齴 (鰎n. disket) yararl olabilir. +":set uc=0" ile de yap齦abilir. +Geri almak i鏸n ":set uc=200" yap齨. +.TP +\-nb +NetBeans i鏸n bir d鼁enleyici sunucusu olur. Ayr齨t齦ar i鏸n belgelere bak齨. +.TP +\-o[N] +N say齞a pencereyi 黶t 黶te a鏰r. +N verilmezse, her dosya i鏸n bir pencere a鏰r. +.TP +\-O[N] +N say齞a pencereyi yan yana a鏰r. +N verilmezse, her dosya i鏸n bir pencere a鏰r. +.TP +\-p[N] +N say齞a sekme a鏰r. +N verilmezse, her dosya i鏸n bir sekme a鏰r. +.TP +\-R +Saltokunur kip. +\'readonly' se鏴ne餴 a琮l齬. +Arabelle餴 h鈒 de餴⺶irebilirsiniz, ancak yanll齥la dosyan齨 鼁erine +yazmaktan sizi korur. +Dosyan齨 鼁erine yazmak istemiyorsan齴, Ex komutuna bir 黱lem imi ekleyin, +鰎n. ":w!". +\-R se鏴ne餴 ayn zamanda \-n se鏴ne餴ni de uygular (yukar齞a bak齨). +\'readonly' se鏴ne餴 ":set noro" ile s齠齬lanabilir. +Ek bilgi i鏸n: ":help 'readonly'". +.TP +\-r +Takas dosyalar齨 i鏴rdikleri kurtarma bilgilerini g鰏terecek bi鏸mde listeler. +.TP +\-r {dosya} +Kurtarma kipi. +泅km bir d鼁enleme oturumunu takas dosyas齨 kullanarak kurtar齬. +Takas dosyas dosya ile ayn ada iye olup sonuna ".swp" eklenmi⺶ir. +Ek bilgi i鏸n: ":help recovery". +.TP +\-s +Sessiz kip. Yaln齴ca "Ex" olarak baat齦d齨da veya "\-e" se鏴ne餴 +"\-s" se鏴ne餴nden 鰊ce verildi餴nde 鏰l齬. +.TP +\-s {betikgir} +{betikgir} betik dosyas okunur. +Dosyadaki karakterler onlar siz girmi⺳iniz gibi kabul edilir. +Ayn齭 ":source! {betikgir}" komutu ile de ger鏴kle⺶irilebilir. +E餰r dosyan齨 sonuna d鼁enleyici 琮kmadan 鰊ce gelinirse, sonraki karakterler +klavyeden okunur. +.TP +\-T {u鏱irim} +.B Vim'e +kulland齨齴 u鏱irimin ad齨 s鰕ler. +Yaln齴ca kendili餴nden okunamazsa gereklidir. +.B Vim'in +tan齞 bir u鏱irim olmal齞齬 veya termcap veya terminfo dosyas齨da +tan齧l olmal齞齬. +.TP +\-u {vimrc} +輑klendirme i鏸n {vimrc} dosyas齨daki komutlar kullan. +Di餰r t黰 ilklendirmeler atlan齬. +Bunu 鰖el t黵de dosyalar d鼁enlemek i鏸n kullan齨. +Dosya ad olarak "NONE" verilirse t黰 鰖elle⺶irmeler atlan齬. +Ek bilgi i鏸n vim i鏸nde ":help initialization" b鰈黰黱e bak齨. +.TP +\-U {gvimrc} +Grafik arabirim ilklendirmesi i鏸n {gvimrc} dosyas齨daki komutlara bak齨. +Di餰r t黰 grafik arabirim ilklendirmeleri atlan齬. +Dosya ad olarak "NONE" verilirse t黰 鰖elle⺶irmeler atlan齬. +Ek bilgi i鏸n vim i鏸nde ":help gui\-init" b鰈黰黱e bak齨. +.TP +\-V[N] +S鰖l anlat齧. Hangi dosyalar齨 kaynak al齨d齨 ve viminfo dosyas齨dan +nelerin okundu饀nu yazd齬齬. 'verbose' i鏸n iste餰 ba餷 N se鏴ne餴 +kullan齦abilir. 謓tan齧l say 10'dur. +.TP +\-v +.B Vim'i +"vi" yazarak baat齬m gibi Vi kipinde baat齬. Bu yaln齴ca +鏰lt齬齦abilir "ex" oldu饀nda bir i㧐 yarar. +.TP +\-w {betik琮k} +Girdi餴niz t黰 karakterler siz +.B Vim'den +琮kana de餴n {betik琮k} dosyas齨da saklan齬. +Bu "vim \-s" veya ":source" komutu ile kullan齦acak bir betik yaratmaya yarar. +E餰r {betik琮k} dosyas varsa karakterler dosyaya eklenir. +.TP +\-W {betik琮k} +\-w gibi, ancak var olan bir dosyan齨 鼁erine yazar. +.TP +\-x +Dosya yazarken 㱮freleme kullan齬. Bir 㱮fre girmeniz istenecektir. +.TP +\-X +X sunucusuna ba餷anmaz. Vim'in u鏱irimde baama s黵esini azalt齬 ancak pencere ba +ve pano kullan齦amaz. +.TP +\-y +.B Vim'i +"evim" veya "eview" yazarak baat齬m gibi kolay kipte baat齬. +.B Vim'i +di餰r t齥la ve yaz d鼁enleyicileri gibi 鏰lt齬齬. +.TP +\-Z +K齭齮l kip. Program "r" yazarak baat齦m gibi davran齬. +.TP +\-\- +Se鏴neklerin bitti餴ni belirtir. +Bundan sonraki de餴⺧enler art齥 bir dosya ad olarak ietilir. +Ayn zamanda '\-' ile baayan bir dosyay tan齮mak i鏸n de kullan齦abilir. +.TP +\-\-echo\-wid +Yaln齴ca GTK grafik arabirimi: Pencere numaras齨 stdout'a yank齦a. +.TP +\-\-help +Yard齧 iletisini yazd齬齬 ve 琮kar, "\-h" gibi. +.TP +\-\-literal +Dosya ad de餴⺧enlerini ger鏴k anlamda iet, joker karakterlerini +genietme. Bunun kabu饀n karakterleri kendili餴nden genietti餴 Unix'te +bir etkisi bulunmamaktad齬. +.TP +\-\-noplugin +Eklentileri y黭leme. "\-u NONE" da ayn ievi g鰎黵. +.TP +\-\-remote +Bir Vim sunucusuna ba餷an ve geri kalan de餴⺧enlerde belirtilen dosyalar +d鼁enle. E餰r bir sunucu bulunamazsa bir uyar verilir ve dosyalar ⺷ anki +Vim'de d鼁enlenir. +.TP +\-\-remote\-expr {ifade} +Bir Vim sunucusuna ba餷an ve {ifade}'yi de餰rlendirip sonucu stdout'a yazd齬. +.TP +\-\-remote\-send {anahtarlar} +Bir Vim sunucusuna ba餷an ve ona {anahtarlar} g鰊der. +.TP +\-\-remote\-silent +\-\-remote gibi, ancak bir sunucu bulunamazsa uyar vermez. +.TP +\-\-remote\-wait +\-\-remote gibi, ancak Vim dosyalar d鼁enlenene kadar 琮kmaz. +.TP +\-\-remote\-wait\-silent +\-\-remote\-wait gibi, ancak bir sunucu bulunamazsa uyar vermez. +.TP +\-\-serverlist +Bulunabilecek b黷黱 Vim sunucular齨 listeler. +.TP +\-\-servername {ad} +{ad}' bir sunucu ad olarak kullan齬. Bir \-\-remote de餴⺧eni ve +ba餷anaca瘕 sunucunun ad ile kullan齦mad s黵ece ⺷ anki Vim i鏸n +kullan齦齬. +.TP +\-\-socketid {id} +Yaln齴ca GTK grafik arabirimi: GtkPlug mekanizmas齨 kullanarak gvim'i ba⺧a +bir pencerede 鏰lt齬. +.TP +\-\-version +S黵黰 bilgisini yazd齬齬 ve 琮kar. +.SH 荅VR軲萸 YARDIM +.B Vim +i鏸nde ":help" yazarak baay齨. +Belirli bir konu 鼁erine yard齧 almak i鏸n ":help subject" yaz齨. +謗ne餴n: "ZZ" komutu 鼁erine bilgi almak i鏸n ":help ZZ" yaz齨. +<Tab> ve CTRL-D kullanarak konular tamamlay齨 (":help cmdline\-completion"). +Bir konumdan di餰rini atlamak i鏸n etiketler mevcuttur (bir t黵 k鰌r gibi), +ek bilgi i鏸n ":help"). +T黰 belgelendirmeyi bu bi鏸mde okuyabilirsiniz, 鰎ne餴n: ":help syntax.txt". +":help syntax.txt". +.SH DOSYALAR +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim +belgelendirme dosyalar. +T黰 listeyi g鰎mek i鏸n ":help doc\-file\-list" yaz齨. +.TP +/usr/local/lib/vim/doc/tags +Belgelendirme i鏸nde veri bulmak i鏸n kullan齦an etiketler dosyas. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Sistem geneli s鰖dizim ilklendirmeleri. +.TP +/usr/local/lib/vim/syntax/*.vim +Programlama dilleri i鏸n s鰖dizim dosyalar. +.TP +/usr/local/lib/vim/vimrc +Sistem geneli +.B Vim +ilklendirmeleri. +.TP +~/.vimrc +Sizin ki㱮sel +.B Vim +ilklendirmeleriniz. +.TP +/usr/local/lib/vim/gvimrc +Sistem geneli gvim ilklendirmeleri. +.TP +~/.gvimrc +Sizin ki㱮sel gvim ilklendirmeleriniz. +.TP +/usr/local/lib/vim/optwin.vim +":options" komutu i鏸n kullan齦an betik, g鰎sel se鏴nek ayarlar. +.TP +/usr/local/lib/vim/menu.vim +gvim i鏸n sistem geneli men ilklendirmeleri. +.TP +/usr/local/lib/vim/bugreport.vim +Hata raporu olu⺶urmak i鏸n kullan齦an betik. Ek bilgi i鏸n: ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Dosya t黵黱 ad齨dan tan齳an betik. Ek bilgi i鏸n: ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Dosya t黵黱 i鏴ri餴nden tan齳an betik. Ek bilgi i鏸n: ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +PostScript yazd齬mas i鏸n kullan齦an dosyalar. +.PP +En g黱cel bilgiler i鏸n V軲 ana sayfas齨 ziyaret edin: +.br +<URL:http://www.vim.org/> +.SH AYRICA BAKINIZ +vimtutor(1) +.SH YAZAR +.B Vim'in +b鼀黭 鏾饀nlu饀 Bram Moolenaar taraf齨dan ba⺧alar齨齨 kayda de餰r +yard齧lar齳la yaz齦mt齬. +Ek bilgi i鏸n +.B Vim +i鏸nde ":help credits" yaz齨. +.br +.B Vim +Stevie tabanl齞齬, yazarlar: Tim Thompson, +Tony Andrews ve G.R. (Fred) Walter. +Orijinal koddan geriye pek bir 㧐y kalmad齨 s鰕lemek yanl olmaz. +.SH HATALAR +Bilinen hatalar齨 bir listesi i鏸n ":help todo" yaz齨. +.PP +Unutmay齨 ki, ba⺧alar taraf齨dan hata olarak de餰rlendirilebilecek konular齨 +bir 鏾饀 Vi'nin davranlar齨a sad齥 kal齨mas nedeniyle vard齬. Yine de +baz 㧐ylerin "Vi bunu de餴㱮k bi鏸mde yap齳or" diye hata olabilece餴ni +d黱鼀orsan齴, "vi_diff.txt" dosyas齨 dikkatle okuyun (veya Vim i鏸nde +:help vi_diff.txt yaz齨. +Ek olarak 'compatible' ve 'cpoptions' se鏴neklerine de bakabilirsiniz. diff --git a/runtime/doc/vim-tr.UTF-8.1 b/runtime/doc/vim-tr.UTF-8.1 new file mode 100644 index 0000000..0ce771b --- /dev/null +++ b/runtime/doc/vim-tr.UTF-8.1 @@ -0,0 +1,544 @@ +.TH VIM 1 "11 Nisan 2006" +.SH AD +vim \- Vi IMproved, bir programc谋n谋n metin d眉zenleyicisi +.SH 脰ZET +.br +.B vim +[se莽enekler] [dosya ..] +.br +.B vim +[se莽enekler] \- +.br +.B vim +[se莽enekler] \-t etiket +.br +.B vim +[se莽enekler] \-q [hatadosyas谋] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH TANIM +.B Vim, +Vi ile yukar谋ya do臒ru uyumlu olan bir metin d眉zenleyicisidir. +Her t眉r d眉z metni d眉zenlemede kullan谋labilir. +脰zellikle programlar谋 d眉zenlemede yararl谋d谋r. +.PP +Vi 眉zerine yap谋lm谋艧 bir莽ok geli艧tirme ve iyile艧tirmeyi i莽erir: +脟ok d眉zeyli geri alma, 莽oklu pencereler ve arabellekler, s枚zdizim vurgulama, +komut sat谋r谋 d眉zenleme, dosya ad谋 tamamlama, 莽evrimi莽i yard谋m, g枚rsel se莽im vb. +.B Vim +ve Vi aras谋ndaki de臒i艧ikliklerin bir 枚zeti i莽in ":help vi_diff.txt" +dosyas谋na bir g枚z at谋n. +.PP +.B Vim'i +莽al谋艧t谋r谋rken gerekli olan yard谋m谋n 莽o臒u 莽evrimi莽i yard谋m sisteminden elde +edilebilir. Bunun i莽in ":help" komutunu kullanabilirsiniz. +A艧a臒谋da 脟EVR陌M陌脟陌 YARDIM b枚l眉m眉ne bak谋n. +.PP +Genelde +.B Vim +tek bir dosyay谋 d眉zenlemek i莽in 艧u komutla 莽al谋艧t谋r谋l谋r: +.PP + vim dosya +.PP +Biraz daha a莽acak olursak: +.PP + vim [se莽enekler] [dosyalistesi] +.PP +E臒er dosya listesi sa臒lanmam谋艧sa d眉zenleyici bo艧 bir arabellek a莽ar. +Bunun d谋艧谋nda a艧a臒谋daki d枚rt se莽enekten bir tanesi de bir veya birden 莽ok +dosyay谋 d眉zenlemek i莽in kullan谋labilir. +.TP 12 +dosya .. +Dosya adlar谋n谋n bir listesi. +Bunlardan ilki ekrana getirilip arabelle臒e y眉klenir. +陌mle莽 arabelle臒in ilk sat谋r谋nda konumland谋r谋l谋r. +Di臒er dosyalara ":next" komutu ile ge莽ebilirsiniz. +Ad谋 tire ile ba艧layan bir dosyay谋 d眉zenlemek i莽in dosya listesinin ba艧谋na +"\-\-" koyun. +.TP +\- +D眉zenlenecek dosya stdin'den okunur. Komutlar bir tty olmas谋 gereken +stderr'den okunur. +.TP +\-t {etiket} +D眉zenlenecek dosya ve bu dosyan谋n ba艧lang谋莽 imle莽 konumu bir "etiket"e +dayan谋r, bir t眉r b谋rakt谋臒谋n谋z konumu belirten bir ayra莽 gibi. +Etiket dosyas谋nda {etiket} aran谋r, ili艧kin dosya 艧u anki dosya olur ve +ili艧kin komut 莽al谋艧t谋r谋l谋r. +Bu genelde C programlar谋 i莽in kullan谋l谋r, {etiket} bu durumda bir i艧lev +olabilir. +Bunun sonucunda bu i艧levi i莽eren dosya o anki dosya olur ve imle莽 bu +i艧levin ba艧lang谋c谋na konumland谋r谋l谋r. +Ek bilgi i莽in: ":help tag\-commands". +.TP +\-q [hatadosyas谋] +H谋zl谋 d眉zelt kipinde ba艧lat +[hatadosyas谋] okunur ve ilk hata g枚r眉nt眉lenir. +E臒er [hatadosyas谋] sa臒lanmazsa dosya ad谋 'errorfile' se莽ene臒inden al谋n谋r +(枚ntan谋ml谋 olarak Amiga i莽in "AztecC.Err", di臒er sistemlerde "errors.err"). +Sonraki hatalara ":cn" komutu ile ge莽ilebilir. +Ek bilgi i莽in: ":help quickfix". +.PP +.B Vim +girilen komutun ad谋na g枚re de臒i艧ik bi莽imde davran谋r (莽al谋艧t谋r谋labilir h芒l芒 +ayn谋 dosya olarak kalabilir). +.TP 10 +vim +"Normal" kip, standart 莽al谋艧ma bi莽imi. +.TP +ex +Ex kipinde ba艧lat. +"\-e" de臒i艧keni ile de ba艧lat谋labilir. +Normal kipe ":vi" komutu ile ge莽ilebilir. +.TP +view +Saltokunur kipte ba艧lat. Bu kipte dosya yaz谋m谋na izin verilmez. +"\-R" de臒i艧keni ile de ba艧lat谋labilir. +.TP +gvim gview +Grafik arabirim s眉r眉m眉. +Yeni bir pencere a莽ar. +"\-g" de臒i艧keni ile de ba艧lat谋labilir. +.TP +evim eview +Kolay kipte ba艧lat谋lan grafik arabirim s眉r眉m眉. +Yeni bir pencere a莽ar. +"\-y" de臒i艧keni ile de ba艧lat谋labilir. +.TP +rvim rview rgvim rgview +Yukar谋daki ile ayn谋, ancak s谋n谋rlamalar i莽erir. Kabuk komutlar谋 +莽al谋艧t谋r谋lamaz veya +.B Vim +ask谋ya al谋namaz. +"\-Z" de臒i艧keni ile de ba艧lat谋labilir. +.SH SE脟ENEKLER +Se莽enekler bir s谋ra g枚zetmeksizin dosya adlar谋ndan 枚nce veya sonra +kullan谋labilir. +Herhangi bir de臒i艧ken i莽ermeyen se莽enekler bir tirenin ard谋nda s谋ralanabilir. +.TP 12 ++[num] +陌lk dosya i莽in imle莽 "num" sat谋r谋nda konumland谋r谋lacakt谋r. +E臒er "num" eksikse imle莽 en son sat谋rda ba艧lar. +.TP ++/{dizge} +陌lk dosya i莽in imle莽 {dizgi}'nin ilk e艧le艧mesinin oldu臒u sat谋rda +konumland谋r谋lacakt谋r. +Kullan谋labilir arama dizgileri i莽in ":help search\-pattern" yaz谋n. +.TP ++{komut} +.TP +\-c {komut} +陌lk dosya okunduktan sonra {komut} 莽al谋艧t谋r谋l谋r. +{komut} bir Ex komutu olarak i艧letilir. +E臒er {komut} bo艧luk i莽eriyorsa 莽ift t谋rnak i莽erisine al谋nmal谋d谋r (bu +kullan谋lan kabu臒a ba臒l谋d谋r). +脰rnek: vim "+set si" main.c +.br +Not: 10 taneye kadar "+" veya "\-c" komutu kullanabilirsiniz. +.TP +\-S {dosya} +陌lk dosya okunduktan sonra {dosya} kaynak al谋n谋r. +\-c "source {dosya}" bu komutun e艧de臒eridir. +{dosya}, '\-' ile ba艧layamaz. +E臒er {dosya} sa臒lanmazsa "Session.vim" kullan谋l谋r (yaln谋zca \-S son +de臒i艧ken olarak kullan谋ld谋臒谋nda i艧e yarar). +.TP +\-\-cmd {komut} +"\-c" komutu gibi, ancak komut herhangi bir vimrc dosyas谋n谋 i艧letmeden +枚nce 莽al谋艧t谋r谋l谋r. +"\-c" komutundan ba臒谋ms谋z olarak bu komutlardan 10 taneye kadar +莽al谋艧t谋rabilirsiniz. +.TP +\-A +E臒er +.B Vim +sa臒dan sola yaz谋lan dosyalar谋 ve Arap莽a klavye dizilimini kullanabilmesi i莽in +ARAP脟A deste臒i ile derlenmi艧e bu se莽enek +.B Vim'i +Arap莽a kipinde ba艧lat谋r ('arabic' se莽ene臒i a莽谋l谋r). Aksi durumda +.B Vim +hata verip 莽谋kar. +.TP +\-b +陌kili kip. +Bir 莽al谋艧t谋r谋labiliri veya ikili dosyay谋 d眉zenlemeye olanacak sa臒layacak +birka莽 se莽enek ayarlan谋r. +.TP +\-C +Uyumlu kip. 'compatible' se莽ene臒ini ayarlar. +Bu kipte +.B Vim +bir .vimrc dosyas谋 var olsa bile genelde Vi gibi davran谋r. +.TP +\-d +Kar艧谋la艧t谋rma kipinde ba艧lat. +Bir, iki, 眉莽 veya d枚rt adet dosya ad谋 de臒i艧keni olmal谋d谋r. +.B Vim +b眉t眉n dosyalar谋 yan yana a莽ar ve aralar谋ndaki de臒i艧iklikleri g枚sterir. +vimdiff(1) gibi 莽al谋艧谋r. +.TP +\-d {ayg谋t} +{ayg谋t}'谋 bir u莽birim olarak kullanmak i莽in a莽ar. +Yaln谋zca Amiga'da 莽al谋艧谋r. +脰rnek: +"\-d con:20/30/600/150". +.TP +\-D +Hata ay谋klama kipi. Bir beti臒in ilk komutunu 莽al谋艧t谋r谋rken hata ay谋klama +kipine ge莽er. +.TP +\-e +.B Vim'i +Ex kipinde ba艧lat谋r, "ex" 莽al谋艧t谋r谋labiliri ile ayn谋 i艧levi g枚r眉r. +.TP +\-E +.B Vim'i +geli艧tirilmi艧 Ex kipinde ba艧lat谋r, "exim" 莽al谋艧t谋r谋labiliri ile ayn谋 +i艧levi g枚r眉r. +.TP +\-f +脰nplan. Grafik arabirim s眉r眉m眉 i莽in +.B Vim +ba艧lad谋臒谋 kabuktan ayr谋lmayacak ve kendisini 莽atallamayacakt谋r. +Amiga'da, +.B Vim +yeni bir pencere a莽mak i莽in yeniden ba艧lat谋lmaz. +Bu se莽enek +.B Vim +d眉zenleme oturumunun bitmesini bekleyecek bir program taraf谋ndan +ba艧lat谋ld谋臒谋nda kullan谋lmal谋d谋r (枚rn. mail). +Amiga'da ":sh" ve ":!" komutlar谋 莽al谋艧mayacakt谋r. +.TP +\-\-nofork +脰nplan. Grafik arabirim s眉r眉m眉 i莽in +.B Vim +ba艧lad谋臒谋 kabuktan ayr谋lmayacak ve kendisini 莽atallamayacakt谋r. +.TP +\-F +E臒er +.B Vim +sa臒dan sola yaz谋lan dosyalar谋 ve Fars莽a klavye dizilimini kullanabilmesi i莽in +FKMAP deste臒i ile derlenmi艧se, bu se莽enek +.B Vim'i +Fars莽a kipinde ba艧lat谋r ('fkmap' ve 'rightleft' se莽enekleri a莽谋l谋r). +Aksi durumda +.B Vim +hata verip 莽谋kar. +.TP +\-g +E臒er +.B Vim +grafik arabirim deste臒i ile derlenmi艧se bu se莽enek grafik arabirimi 莽al谋艧t谋r谋r. +E臒er grafik arabirim deste臒i eklenmemi艧se +.B Vim +hata verir ve 莽谋kar. +.TP +\-h +Komut sat谋r谋 de臒i艧kenleri ve se莽enekleri 眉zerine biraz yard谋m sa臒lar. +Bu komuttan sonra +.B Vim +莽谋kar. +.TP +\-H +E臒er +.B Vim +sa臒dan sola yaz谋lan dosyalar谋 ve 陌branca klavye dizilimini kullanabilmesi i莽in +RIGHTLEFT deste臒i ile derlenmi艧se, bu se莽enek +.B Vim'i +陌branca kipinde ba艧lat谋r ('hkmap' ve 'rightleft' se莽enekleri a莽谋l谋r). +Aksi durumda +.B Vim +hata verir ve 莽谋kar. +.TP +\-i {viminfo} +脰ntan谋ml谋 "~/.viminfo" dosyas谋 yerine kullan谋lacak olan viminfo dosyas谋n谋 +belirtmek i莽in kullan谋l谋r. +Bu komut ayn谋 zamanda viminfo kullan谋m谋n谋 atlamak i莽in de kullan谋labilir. +Bunun i莽in dosya ad谋 yerine "NONE" vermeniz yeterlidir. +.TP +\-L +\-r ile ayn谋. +.TP +\-l +Lisp kipi. +Bu de臒i艧ken 'lisp' ve 'showmatch' se莽eneklerini a莽ar. +.TP +\-m +Dosya yazma se莽ene臒i kapal谋d谋r. +\'write' se莽ene臒ini s谋f谋rlar. +Arabelle臒i h芒l芒 de臒i艧tirebilirsiniz, ancak dosyay谋 yazmak olanakl谋 de臒ildir. +.TP +\-M +De臒i艧ikliklere izin verilmez. 'modifiable' ve 'write' se莽enekleri kapat谋l谋r, +b枚ylece de臒i艧iklik yap谋lamaz ve dosyalar yaz谋lamaz. +Bu se莽enekleri yeniden a莽谋p de臒i艧iklik yapmay谋 etkinle艧tirebilirsiniz. +.TP +\-N +Uyumsuz kip. 'no-compatible' se莽ene臒ini s谋f谋rlar. +Bu se莽enekle birlikte +.B Vim +biraz daha d眉zg眉nce 莽al谋艧谋r, ancak bir .vimrc dosyas谋 olmamas谋na ra臒men +Vi ile daha az uyumludur. +.TP +\-n +Bir takas dosyas谋 kullan谋lmaz. +脟枚kme sonras谋 kurtarma olanakl谋 olmayacakt谋r. +E臒er 莽ok yava艧 bir ortamda dosya 莽al谋艧谋yorsan谋z (枚rn. disket) yararl谋 olabilir. +":set uc=0" ile de yap谋labilir. +Geri almak i莽in ":set uc=200" yap谋n. +.TP +\-nb +NetBeans i莽in bir d眉zenleyici sunucusu olur. Ayr谋nt谋lar i莽in belgelere bak谋n. +.TP +\-o[N] +N say谋da pencereyi 眉st 眉ste a莽ar. +N verilmezse, her dosya i莽in bir pencere a莽ar. +.TP +\-O[N] +N say谋da pencereyi yan yana a莽ar. +N verilmezse, her dosya i莽in bir pencere a莽ar. +.TP +\-p[N] +N say谋da sekme a莽ar. +N verilmezse, her dosya i莽in bir sekme a莽ar. +.TP +\-R +Saltokunur kip. +\'readonly' se莽ene臒i a莽谋l谋r. +Arabelle臒i h芒l芒 de臒i艧tirebilirsiniz, ancak yanl谋艧l谋kla dosyan谋n 眉zerine +yazmaktan sizi korur. +Dosyan谋n 眉zerine yazmak istemiyorsan谋z, Ex komutuna bir 眉nlem imi ekleyin, +枚rn. ":w!". +\-R se莽ene臒i ayn谋 zamanda \-n se莽ene臒ini de uygular (yukar谋da bak谋n). +\'readonly' se莽ene臒i ":set noro" ile s谋f谋rlanabilir. +Ek bilgi i莽in: ":help 'readonly'". +.TP +\-r +Takas dosyalar谋n谋 i莽erdikleri kurtarma bilgilerini g枚sterecek bi莽imde listeler. +.TP +\-r {dosya} +Kurtarma kipi. +脟枚km眉艧 bir d眉zenleme oturumunu takas dosyas谋n谋 kullanarak kurtar谋r. +Takas dosyas谋 dosya ile ayn谋 ada iye olup sonuna ".swp" eklenmi艧tir. +Ek bilgi i莽in: ":help recovery". +.TP +\-s +Sessiz kip. Yaln谋zca "Ex" olarak ba艧lat谋ld谋臒谋nda veya "\-e" se莽ene臒i +"\-s" se莽ene臒inden 枚nce verildi臒inde 莽al谋艧谋r. +.TP +\-s {betikgir} +{betikgir} betik dosyas谋 okunur. +Dosyadaki karakterler onlar谋 siz girmi艧siniz gibi kabul edilir. +Ayn谋s谋 ":source! {betikgir}" komutu ile de ger莽ekle艧tirilebilir. +E臒er dosyan谋n sonuna d眉zenleyici 莽谋kmadan 枚nce gelinirse, sonraki karakterler +klavyeden okunur. +.TP +\-T {u莽birim} +.B Vim'e +kulland谋臒谋n谋z u莽birimin ad谋n谋 s枚yler. +Yaln谋zca kendili臒inden okunamazsa gereklidir. +.B Vim'in +tan谋d谋臒谋 bir u莽birim olmal谋d谋r veya termcap veya terminfo dosyas谋nda +tan谋ml谋 olmal谋d谋r. +.TP +\-u {vimrc} +陌lklendirme i莽in {vimrc} dosyas谋ndaki komutlar谋 kullan. +Di臒er t眉m ilklendirmeler atlan谋r. +Bunu 枚zel t眉rde dosyalar谋 d眉zenlemek i莽in kullan谋n. +Dosya ad谋 olarak "NONE" verilirse t眉m 枚zelle艧tirmeler atlan谋r. +Ek bilgi i莽in vim i莽inde ":help initialization" b枚l眉m眉ne bak谋n. +.TP +\-U {gvimrc} +Grafik arabirim ilklendirmesi i莽in {gvimrc} dosyas谋ndaki komutlara bak谋n. +Di臒er t眉m grafik arabirim ilklendirmeleri atlan谋r. +Dosya ad谋 olarak "NONE" verilirse t眉m 枚zelle艧tirmeler atlan谋r. +Ek bilgi i莽in vim i莽inde ":help gui\-init" b枚l眉m眉ne bak谋n. +.TP +\-V[N] +S枚zl眉 anlat谋m. Hangi dosyalar谋n kaynak al谋nd谋臒谋n谋 ve viminfo dosyas谋ndan +nelerin okundu臒unu yazd谋r谋r. 'verbose' i莽in iste臒e ba臒l谋 N se莽ene臒i +kullan谋labilir. 脰ntan谋ml谋 say谋 10'dur. +.TP +\-v +.B Vim'i +"vi" yazarak ba艧lat谋rm谋艧 gibi Vi kipinde ba艧lat谋r. Bu yaln谋zca +莽al谋艧t谋r谋labilir "ex" oldu臒unda bir i艧e yarar. +.TP +\-w {betik莽谋k} +Girdi臒iniz t眉m karakterler siz +.B Vim'den +莽谋kana de臒in {betik莽谋k} dosyas谋nda saklan谋r. +Bu "vim \-s" veya ":source" komutu ile kullan谋lacak bir betik yaratmaya yarar. +E臒er {betik莽谋k} dosyas谋 varsa karakterler dosyaya eklenir. +.TP +\-W {betik莽谋k} +\-w gibi, ancak var olan bir dosyan谋n 眉zerine yazar. +.TP +\-x +Dosya yazarken 艧ifreleme kullan谋r. Bir 艧ifre girmeniz istenecektir. +.TP +\-X +X sunucusuna ba臒lanmaz. Vim'in u莽birimde ba艧lama s眉resini azalt谋r ancak pencere ba艧l谋臒谋 +ve pano kullan谋lamaz. +.TP +\-y +.B Vim'i +"evim" veya "eview" yazarak ba艧lat谋rm谋艧 gibi kolay kipte ba艧lat谋r. +.B Vim'i +di臒er t谋kla ve yaz d眉zenleyicileri gibi 莽al谋艧t谋r谋r. +.TP +\-Z +K谋s谋tl谋 kip. Program "r" yazarak ba艧lat谋lm谋艧 gibi davran谋r. +.TP +\-\- +Se莽eneklerin bitti臒ini belirtir. +Bundan sonraki de臒i艧kenler art谋k bir dosya ad谋 olarak i艧letilir. +Ayn谋 zamanda '\-' ile ba艧layan bir dosyay谋 tan谋tmak i莽in de kullan谋labilir. +.TP +\-\-echo\-wid +Yaln谋zca GTK grafik arabirimi: Pencere numaras谋n谋 stdout'a yank谋la. +.TP +\-\-help +Yard谋m iletisini yazd谋r谋r ve 莽谋kar, "\-h" gibi. +.TP +\-\-literal +Dosya ad谋 de臒i艧kenlerini ger莽ek anlamda i艧let, joker karakterlerini +geni艧letme. Bunun kabu臒un karakterleri kendili臒inden geni艧letti臒i Unix'te +bir etkisi bulunmamaktad谋r. +.TP +\-\-noplugin +Eklentileri y眉kleme. "\-u NONE" da ayn谋 i艧levi g枚r眉r. +.TP +\-\-remote +Bir Vim sunucusuna ba臒lan ve geri kalan de臒i艧kenlerde belirtilen dosyalar谋 +d眉zenle. E臒er bir sunucu bulunamazsa bir uyar谋 verilir ve dosyalar 艧u anki +Vim'de d眉zenlenir. +.TP +\-\-remote\-expr {ifade} +Bir Vim sunucusuna ba臒lan ve {ifade}'yi de臒erlendirip sonucu stdout'a yazd谋r. +.TP +\-\-remote\-send {anahtarlar} +Bir Vim sunucusuna ba臒lan ve ona {anahtarlar} g枚nder. +.TP +\-\-remote\-silent +\-\-remote gibi, ancak bir sunucu bulunamazsa uyar谋 vermez. +.TP +\-\-remote\-wait +\-\-remote gibi, ancak Vim dosyalar d眉zenlenene kadar 莽谋kmaz. +.TP +\-\-remote\-wait\-silent +\-\-remote\-wait gibi, ancak bir sunucu bulunamazsa uyar谋 vermez. +.TP +\-\-serverlist +Bulunabilecek b眉t眉n Vim sunucular谋n谋 listeler. +.TP +\-\-servername {ad} +{ad}'谋 bir sunucu ad谋 olarak kullan谋r. Bir \-\-remote de臒i艧keni ve +ba臒lanaca臒谋 sunucunun ad谋 ile kullan谋lmad谋臒谋 s眉rece 艧u anki Vim i莽in +kullan谋l谋r. +.TP +\-\-socketid {id} +Yaln谋zca GTK grafik arabirimi: GtkPlug mekanizmas谋n谋 kullanarak gvim'i ba艧ka +bir pencerede 莽al谋艧t谋r. +.TP +\-\-version +S眉r眉m bilgisini yazd谋r谋r ve 莽谋kar. +.SH 脟EVR陌M陌脟陌 YARDIM +.B Vim +i莽inde ":help" yazarak ba艧lay谋n. +Belirli bir konu 眉zerine yard谋m almak i莽in ":help subject" yaz谋n. +脰rne臒in: "ZZ" komutu 眉zerine bilgi almak i莽in ":help ZZ" yaz谋n. +<Tab> ve CTRL-D kullanarak konular谋 tamamlay谋n (":help cmdline\-completion"). +Bir konumdan di臒erini atlamak i莽in etiketler mevcuttur (bir t眉r k枚pr眉 gibi), +ek bilgi i莽in ":help"). +T眉m belgelendirmeyi bu bi莽imde okuyabilirsiniz, 枚rne臒in: ":help syntax.txt". +":help syntax.txt". +.SH DOSYALAR +.TP 15 +/usr/local/lib/vim/doc/*.txt +.B Vim +belgelendirme dosyalar谋. +T眉m listeyi g枚rmek i莽in ":help doc\-file\-list" yaz谋n. +.TP +/usr/local/lib/vim/doc/tags +Belgelendirme i莽inde veri bulmak i莽in kullan谋lan etiketler dosyas谋. +.TP +/usr/local/lib/vim/syntax/syntax.vim +Sistem geneli s枚zdizim ilklendirmeleri. +.TP +/usr/local/lib/vim/syntax/*.vim +Programlama dilleri i莽in s枚zdizim dosyalar谋. +.TP +/usr/local/lib/vim/vimrc +Sistem geneli +.B Vim +ilklendirmeleri. +.TP +~/.vimrc +Sizin ki艧isel +.B Vim +ilklendirmeleriniz. +.TP +/usr/local/lib/vim/gvimrc +Sistem geneli gvim ilklendirmeleri. +.TP +~/.gvimrc +Sizin ki艧isel gvim ilklendirmeleriniz. +.TP +/usr/local/lib/vim/optwin.vim +":options" komutu i莽in kullan谋lan betik, g枚rsel se莽enek ayarlar谋. +.TP +/usr/local/lib/vim/menu.vim +gvim i莽in sistem geneli men眉 ilklendirmeleri. +.TP +/usr/local/lib/vim/bugreport.vim +Hata raporu olu艧turmak i莽in kullan谋lan betik. Ek bilgi i莽in: ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Dosya t眉r眉n眉 ad谋ndan tan谋yan betik. Ek bilgi i莽in: ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Dosya t眉r眉n眉 i莽eri臒inden tan谋yan betik. Ek bilgi i莽in: ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +PostScript yazd谋rmas谋 i莽in kullan谋lan dosyalar. +.PP +En g眉ncel bilgiler i莽in V陌M ana sayfas谋n谋 ziyaret edin: +.br +<URL:http://www.vim.org/> +.SH AYRICA BAKINIZ +vimtutor(1) +.SH YAZAR +.B Vim'in +b眉y眉k 莽o臒unlu臒u Bram Moolenaar taraf谋ndan ba艧kalar谋n谋n kayda de臒er +yard谋mlar谋yla yaz谋lm谋艧t谋r. +Ek bilgi i莽in +.B Vim +i莽inde ":help credits" yaz谋n. +.br +.B Vim +Stevie tabanl谋d谋r, yazarlar谋: Tim Thompson, +Tony Andrews ve G.R. (Fred) Walter. +Orijinal koddan geriye pek bir 艧ey kalmad谋臒谋n谋 s枚ylemek yanl谋艧 olmaz. +.SH HATALAR +Bilinen hatalar谋n bir listesi i莽in ":help todo" yaz谋n. +.PP +Unutmay谋n ki, ba艧kalar谋 taraf谋ndan hata olarak de臒erlendirilebilecek konular谋n +bir 莽o臒u Vi'nin davran谋艧lar谋na sad谋k kal谋nmas谋 nedeniyle vard谋r. Yine de +baz谋 艧eylerin "Vi bunu de臒i艧ik bi莽imde yap谋yor" diye hata olabilece臒ini +d眉艧眉n眉yorsan谋z, "vi_diff.txt" dosyas谋n谋 dikkatle okuyun (veya Vim i莽inde +:help vi_diff.txt yaz谋n. +Ek olarak 'compatible' ve 'cpoptions' se莽eneklerine de bakabilirsiniz. diff --git a/runtime/doc/vim.1 b/runtime/doc/vim.1 new file mode 100644 index 0000000..5613dd4 --- /dev/null +++ b/runtime/doc/vim.1 @@ -0,0 +1,558 @@ +.TH VIM 1 "2021 Jun 13" +.SH NAME +vim \- Vi IMproved, a programmer's text editor +.SH SYNOPSIS +.br +.B vim +[options] [file ..] +.br +.B vim +[options] \- +.br +.B vim +[options] \-t tag +.br +.B vim +[options] \-q [errorfile] +.PP +.br +.B ex +.br +.B view +.br +.B gvim +.B gview +.B evim +.B eview +.br +.B rvim +.B rview +.B rgvim +.B rgview +.SH DESCRIPTION +.B Vim +is a text editor that is upwards compatible to Vi. +It can be used to edit all kinds of plain text. +It is especially useful for editing programs. +.PP +There are a lot of enhancements above Vi: multi level undo, +multi windows and buffers, syntax highlighting, command line +editing, filename completion, on-line help, visual selection, etc.. +See ":help vi_diff.txt" for a summary of the differences between +.B Vim +and Vi. +.PP +While running +.B Vim +a lot of help can be obtained from the on-line help system, with the ":help" +command. +See the ON-LINE HELP section below. +.PP +Most often +.B Vim +is started to edit a single file with the command +.PP + vim file +.PP +More generally +.B Vim +is started with: +.PP + vim [options] [filelist] +.PP +If the filelist is missing, the editor will start with an empty buffer. +Otherwise exactly one out of the following four may be used to choose one or +more files to be edited. +.TP 12 +file .. +A list of filenames. +The first one will be the current file and read into the buffer. +The cursor will be positioned on the first line of the buffer. +You can get to the other files with the ":next" command. +To edit a file that starts with a dash, precede the filelist with "\-\-". +.TP +\- +The file to edit is read from stdin. Commands are read from stderr, which +should be a tty. +.TP +\-t {tag} +The file to edit and the initial cursor position depends on a "tag", a sort +of goto label. +{tag} is looked up in the tags file, the associated file becomes the current +file and the associated command is executed. +Mostly this is used for C programs, in which case {tag} could be a function +name. +The effect is that the file containing that function becomes the current file +and the cursor is positioned on the start of the function. +See ":help tag\-commands". +.TP +\-q [errorfile] +Start in quickFix mode. +The file [errorfile] is read and the first error is displayed. +If [errorfile] is omitted, the filename is obtained from the 'errorfile' +option (defaults to "AztecC.Err" for the Amiga, "errors.err" on other +systems). +Further errors can be jumped to with the ":cn" command. +See ":help quickfix". +.PP +.B Vim +behaves differently, depending on the name of the command (the executable may +still be the same file). +.TP 10 +vim +The "normal" way, everything is default. +.TP +ex +Start in Ex mode. +Go to Normal mode with the ":vi" command. +Can also be done with the "\-e" argument. +.TP +view +Start in read-only mode. You will be protected from writing the files. +Can also be done with the "\-R" argument. +.TP +gvim gview +The GUI version. +Starts a new window. +Can also be done with the "\-g" argument. +.TP +evim eview +The GUI version in easy mode. +Starts a new window. +Can also be done with the "\-y" argument. +.TP +rvim rview rgvim rgview +Like the above, but with restrictions. It will not be possible to start shell +commands, or suspend +.B Vim. +Can also be done with the "\-Z" argument. +.SH OPTIONS +The options may be given in any order, before or after filenames. +Options without an argument can be combined after a single dash. +.TP 12 ++[num] +For the first file the cursor will be positioned on line "num". +If "num" is missing, the cursor will be positioned on the last line. +.TP ++/{pat} +For the first file the cursor will be positioned in the line with the +first occurrence of {pat}. +See ":help search\-pattern" for the available search patterns. +.TP ++{command} +.TP +\-c {command} +{command} will be executed after the first file has been read. +{command} is interpreted as an Ex command. +If the {command} contains spaces it must be enclosed in double quotes (this +depends on the shell that is used). +Example: vim "+set si" main.c +.br +Note: You can use up to 10 "+" or "\-c" commands. +.TP +\-S {file} +{file} will be sourced after the first file has been read. +This is equivalent to \-c "source {file}". +{file} cannot start with '\-'. +If {file} is omitted "Session.vim" is used (only works when \-S is the last +argument). +.TP +\-\-cmd {command} +Like using "\-c", but the command is executed just before +processing any vimrc file. +You can use up to 10 of these commands, independently from "\-c" commands. +.TP +\-A +If +.B Vim +has been compiled with ARABIC support for editing right-to-left +oriented files and Arabic keyboard mapping, this option starts +.B Vim +in Arabic mode, i.e. 'arabic' is set. Otherwise an error +message is given and +.B Vim +aborts. +.TP +\-b +Binary mode. +A few options will be set that makes it possible to edit a binary or +executable file. +.TP +\-C +Compatible. Set the 'compatible' option. +This will make +.B Vim +behave mostly like Vi, even though a .vimrc file exists. +.TP +\-d +Start in diff mode. +There should between two to eight file name arguments. +.B Vim +will open all the files and show differences between them. +Works like vimdiff(1). +.TP +\-d {device} +Open {device} for use as a terminal. +Only on the Amiga. +Example: +"\-d con:20/30/600/150". +.TP +\-D +Debugging. Go to debugging mode when executing the first command from a +script. +.TP +\-e +Start +.B Vim +in Ex mode, just like the executable was called "ex". +.TP +\-E +Start +.B Vim +in improved Ex mode, just like the executable was called "exim". +.TP +\-f +Foreground. For the GUI version, +.B Vim +will not fork and detach from the shell it was started in. +On the Amiga, +.B Vim +is not restarted to open a new window. +This option should be used when +.B Vim +is executed by a program that will wait for the edit +session to finish (e.g. mail). +On the Amiga the ":sh" and ":!" commands will not work. +.TP +\-\-nofork +Foreground. For the GUI version, +.B Vim +will not fork and detach from the shell it was started in. +.TP +\-F +If +.B Vim +has been compiled with FKMAP support for editing right-to-left +oriented files and Farsi keyboard mapping, this option starts +.B Vim +in Farsi mode, i.e. 'fkmap' and 'rightleft' are set. +Otherwise an error message is given and +.B Vim +aborts. +.TP +\-g +If +.B Vim +has been compiled with GUI support, this option enables the GUI. +If no GUI support was compiled in, an error message is given and +.B Vim +aborts. +.TP +\-h +Give a bit of help about the command line arguments and options. +After this +.B Vim +exits. +.TP +\-H +If +.B Vim +has been compiled with RIGHTLEFT support for editing right-to-left +oriented files and Hebrew keyboard mapping, this option starts +.B Vim +in Hebrew mode, i.e. 'hkmap' and 'rightleft' are set. +Otherwise an error message is given and +.B Vim +aborts. +.TP +\-i {viminfo} +Specifies the filename to use when reading or writing the viminfo file, +instead of the default "~/.viminfo". +This can also be used to skip the use of the .viminfo file, by giving the name +"NONE". +.TP +\-L +Same as \-r. +.TP +\-l +Lisp mode. +Sets the 'lisp' and 'showmatch' options on. +.TP +\-m +Modifying files is disabled. +Resets the 'write' option. +You can still modify the buffer, but writing a file is not possible. +.TP +\-M +Modifications not allowed. The 'modifiable' and 'write' options will be unset, +so that changes are not allowed and files can not be written. Note that these +options can be set to enable making modifications. +.TP +\-N +No-compatible mode. Resets the 'compatible' option. +This will make +.B Vim +behave a bit better, but less Vi compatible, even though a .vimrc file does +not exist. +.TP +\-n +No swap file will be used. +Recovery after a crash will be impossible. +Handy if you want to edit a file on a very slow medium (e.g. floppy). +Can also be done with ":set uc=0". +Can be undone with ":set uc=200". +.TP +\-nb +Become an editor server for NetBeans. See the docs for details. +.TP +\-o[N] +Open N windows stacked. +When N is omitted, open one window for each file. +.TP +\-O[N] +Open N windows side by side. +When N is omitted, open one window for each file. +.TP +\-p[N] +Open N tab pages. +When N is omitted, open one tab page for each file. +.TP +\-R +Read-only mode. +The 'readonly' option will be set. +You can still edit the buffer, but will be prevented from accidentally +overwriting a file. +If you do want to overwrite a file, add an exclamation mark to the Ex command, +as in ":w!". +The \-R option also implies the \-n option (see above). +The 'readonly' option can be reset with ":set noro". +See ":help 'readonly'". +.TP +\-r +List swap files, with information about using them for recovery. +.TP +\-r {file} +Recovery mode. +The swap file is used to recover a crashed editing session. +The swap file is a file with the same filename as the text file with ".swp" +appended. +See ":help recovery". +.TP +\-s +Silent mode. Only when started as "Ex" or when the "\-e" option was given +before the "\-s" option. +.TP +\-s {scriptin} +The script file {scriptin} is read. +The characters in the file are interpreted as if you had typed them. +The same can be done with the command ":source! {scriptin}". +If the end of the file is reached before the editor exits, further characters +are read from the keyboard. +.TP +\-T {terminal} +Tells +.B Vim +the name of the terminal you are using. +Only required when the automatic way doesn't work. +Should be a terminal known to +.B Vim +(builtin) or defined in the termcap or terminfo file. +.TP +\-u {vimrc} +Use the commands in the file {vimrc} for initializations. +All the other initializations are skipped. +Use this to edit a special kind of files. +It can also be used to skip all initializations by giving the name "NONE". +See ":help initialization" within vim for more details. +.TP +\-U {gvimrc} +Use the commands in the file {gvimrc} for GUI initializations. +All the other GUI initializations are skipped. +It can also be used to skip all GUI initializations by giving the name "NONE". +See ":help gui\-init" within vim for more details. +.TP +\-V[N] +Verbose. Give messages about which files are sourced and for reading and +writing a viminfo file. The optional number N is the value for 'verbose'. +Default is 10. +.TP +\-v +Start +.B Vim +in Vi mode, just like the executable was called "vi". This only has effect +when the executable is called "ex". +.TP +\-w {scriptout} +All the characters that you type are recorded in the file +{scriptout}, until you exit +.B Vim. +This is useful if you want to create a script file to be used with "vim \-s" or +":source!". +If the {scriptout} file exists, characters are appended. +.TP +\-W {scriptout} +Like \-w, but an existing file is overwritten. +.TP +\-x +Use encryption when writing files. Will prompt for a crypt key. +.TP +\-X +Don't connect to the X server. Shortens startup time in a terminal, but the +window title and clipboard will not be used. +.TP +\-y +Start +.B Vim +in easy mode, just like the executable was called "evim" or "eview". +Makes +.B Vim +behave like a click-and-type editor. +.TP +\-Z +Restricted mode. Works like the executable starts with "r". +.TP +\-\- +Denotes the end of the options. +Arguments after this will be handled as a file name. +This can be used to edit a filename that starts with a '\-'. +.TP +\-\-clean +Do not use any personal configuration (vimrc, plugins, etc.). Useful to see if +a problem reproduces with a clean Vim setup. +.TP +\-\-echo\-wid +GTK GUI only: Echo the Window ID on stdout. +.TP +\-\-help +Give a help message and exit, just like "\-h". +.TP +\-\-literal +Take file name arguments literally, do not expand wildcards. This has no +effect on Unix where the shell expands wildcards. +.TP +\-\-noplugin +Skip loading plugins. Implied by \-u NONE. +.TP +\-\-remote +Connect to a Vim server and make it edit the files given in the rest of the +arguments. If no server is found a warning is given and the files are edited +in the current Vim. +.TP +\-\-remote\-expr {expr} +Connect to a Vim server, evaluate {expr} in it and print the result on stdout. +.TP +\-\-remote\-send {keys} +Connect to a Vim server and send {keys} to it. +.TP +\-\-remote\-silent +As \-\-remote, but without the warning when no server is found. +.TP +\-\-remote\-wait +As \-\-remote, but Vim does not exit until the files have been edited. +.TP +\-\-remote\-wait\-silent +As \-\-remote\-wait, but without the warning when no server is found. +.TP +\-\-serverlist +List the names of all Vim servers that can be found. +.TP +\-\-servername {name} +Use {name} as the server name. Used for the current Vim, unless used with a +\-\-remote argument, then it's the name of the server to connect to. +.TP +\-\-socketid {id} +GTK GUI only: Use the GtkPlug mechanism to run gvim in another window. +.TP +\-\-startuptime {file} +During startup write timing messages to the file {fname}. +.TP +\-\-version +Print version information and exit. +.SH ON-LINE HELP +Type ":help" in +.B Vim +to get started. +Type ":help subject" to get help on a specific subject. +For example: ":help ZZ" to get help for the "ZZ" command. +Use <Tab> and CTRL-D to complete subjects (":help cmdline\-completion"). +Tags are present to jump from one place to another (sort of hypertext links, +see ":help"). +All documentation files can be viewed in this way, for example +":help syntax.txt". +.SH FILES +.TP 15 +/usr/local/lib/vim/doc/*.txt +The +.B Vim +documentation files. +Use ":help doc\-file\-list" to get the complete list. +.TP +/usr/local/lib/vim/doc/tags +The tags file used for finding information in the documentation files. +.TP +/usr/local/lib/vim/syntax/syntax.vim +System wide syntax initializations. +.TP +/usr/local/lib/vim/syntax/*.vim +Syntax files for various languages. +.TP +/usr/local/lib/vim/vimrc +System wide +.B Vim +initializations. +.TP +~/.vimrc +Your personal +.B Vim +initializations. +.TP +/usr/local/lib/vim/gvimrc +System wide gvim initializations. +.TP +~/.gvimrc +Your personal gvim initializations. +.TP +/usr/local/lib/vim/optwin.vim +Script used for the ":options" command, a nice way to view and set options. +.TP +/usr/local/lib/vim/menu.vim +System wide menu initializations for gvim. +.TP +/usr/local/lib/vim/bugreport.vim +Script to generate a bug report. See ":help bugs". +.TP +/usr/local/lib/vim/filetype.vim +Script to detect the type of a file by its name. See ":help 'filetype'". +.TP +/usr/local/lib/vim/scripts.vim +Script to detect the type of a file by its contents. See ":help 'filetype'". +.TP +/usr/local/lib/vim/print/*.ps +Files used for PostScript printing. +.PP +For recent info read the VIM home page: +.br +<URL:http://www.vim.org/> +.SH SEE ALSO +vimtutor(1) +.SH AUTHOR +Most of +.B Vim +was made by Bram Moolenaar, with a lot of help from others. +See ":help credits" in +.B Vim. +.br +.B Vim +is based on Stevie, worked on by: Tim Thompson, +Tony Andrews and G.R. (Fred) Walter. +Although hardly any of the original code remains. +.SH BUGS +Probably. +See ":help todo" for a list of known problems. +.PP +Note that a number of things that may be regarded as bugs by some, are in fact +caused by a too-faithful reproduction of Vi's behaviour. +And if you think other things are bugs "because Vi does it differently", +you should take a closer look at the vi_diff.txt file (or type :help +vi_diff.txt when in Vim). +Also have a look at the 'compatible' and 'cpoptions' options. diff --git a/runtime/doc/vim.man b/runtime/doc/vim.man new file mode 100644 index 0000000..cc6a9bc --- /dev/null +++ b/runtime/doc/vim.man @@ -0,0 +1,435 @@ +VIM(1) General Commands Manual VIM(1) + + + +NAME + vim - Vi IMproved, a programmer's text editor + +SYNOPSIS + vim [options] [file ..] + vim [options] - + vim [options] -t tag + vim [options] -q [errorfile] + + ex + view + gvim gview evim eview + rvim rview rgvim rgview + +DESCRIPTION + Vim is a text editor that is upwards compatible to Vi. It can be used + to edit all kinds of plain text. It is especially useful for editing + programs. + + There are a lot of enhancements above Vi: multi level undo, multi win鈥 + dows and buffers, syntax highlighting, command line editing, filename + completion, on-line help, visual selection, etc.. See ":help + vi_diff.txt" for a summary of the differences between Vim and Vi. + + While running Vim a lot of help can be obtained from the on-line help + system, with the ":help" command. See the ON-LINE HELP section below. + + Most often Vim is started to edit a single file with the command + + vim file + + More generally Vim is started with: + + vim [options] [filelist] + + If the filelist is missing, the editor will start with an empty buffer. + Otherwise exactly one out of the following four may be used to choose + one or more files to be edited. + + file .. A list of filenames. The first one will be the current + file and read into the buffer. The cursor will be posi鈥 + tioned on the first line of the buffer. You can get to the + other files with the ":next" command. To edit a file that + starts with a dash, precede the filelist with "--". + + - The file to edit is read from stdin. Commands are read + from stderr, which should be a tty. + + -t {tag} The file to edit and the initial cursor position depends on + a "tag", a sort of goto label. {tag} is looked up in the + tags file, the associated file becomes the current file and + the associated command is executed. Mostly this is used + for C programs, in which case {tag} could be a function + name. The effect is that the file containing that function + becomes the current file and the cursor is positioned on + the start of the function. See ":help tag-commands". + + -q [errorfile] + Start in quickFix mode. The file [errorfile] is read and + the first error is displayed. If [errorfile] is omitted, + the filename is obtained from the 'errorfile' option (de鈥 + faults to "AztecC.Err" for the Amiga, "errors.err" on other + systems). Further errors can be jumped to with the ":cn" + command. See ":help quickfix". + + Vim behaves differently, depending on the name of the command (the exe鈥 + cutable may still be the same file). + + vim The "normal" way, everything is default. + + ex Start in Ex mode. Go to Normal mode with the ":vi" command. + Can also be done with the "-e" argument. + + view Start in read-only mode. You will be protected from writing + the files. Can also be done with the "-R" argument. + + gvim gview + The GUI version. Starts a new window. Can also be done with + the "-g" argument. + + evim eview + The GUI version in easy mode. Starts a new window. Can also + be done with the "-y" argument. + + rvim rview rgvim rgview + Like the above, but with restrictions. It will not be possi鈥 + ble to start shell commands, or suspend Vim. Can also be + done with the "-Z" argument. + +OPTIONS + The options may be given in any order, before or after filenames. Op鈥 + tions without an argument can be combined after a single dash. + + +[num] For the first file the cursor will be positioned on line + "num". If "num" is missing, the cursor will be positioned + on the last line. + + +/{pat} For the first file the cursor will be positioned in the + line with the first occurrence of {pat}. See ":help + search-pattern" for the available search patterns. + + +{command} + + -c {command} + {command} will be executed after the first file has been + read. {command} is interpreted as an Ex command. If the + {command} contains spaces it must be enclosed in double + quotes (this depends on the shell that is used). Example: + vim "+set si" main.c + Note: You can use up to 10 "+" or "-c" commands. + + -S {file} {file} will be sourced after the first file has been read. + This is equivalent to -c "source {file}". {file} cannot + start with '-'. If {file} is omitted "Session.vim" is used + (only works when -S is the last argument). + + --cmd {command} + Like using "-c", but the command is executed just before + processing any vimrc file. You can use up to 10 of these + commands, independently from "-c" commands. + + -A If Vim has been compiled with ARABIC support for editing + right-to-left oriented files and Arabic keyboard mapping, + this option starts Vim in Arabic mode, i.e. 'arabic' is + set. Otherwise an error message is given and Vim aborts. + + -b Binary mode. A few options will be set that makes it pos鈥 + sible to edit a binary or executable file. + + -C Compatible. Set the 'compatible' option. This will make + Vim behave mostly like Vi, even though a .vimrc file ex鈥 + ists. + + -d Start in diff mode. There should between two to eight file + name arguments. Vim will open all the files and show dif鈥 + ferences between them. Works like vimdiff(1). + + -d {device} Open {device} for use as a terminal. Only on the Amiga. + Example: "-d con:20/30/600/150". + + -D Debugging. Go to debugging mode when executing the first + command from a script. + + -e Start Vim in Ex mode, just like the executable was called + "ex". + + -E Start Vim in improved Ex mode, just like the executable was + called "exim". + + -f Foreground. For the GUI version, Vim will not fork and de鈥 + tach from the shell it was started in. On the Amiga, Vim + is not restarted to open a new window. This option should + be used when Vim is executed by a program that will wait + for the edit session to finish (e.g. mail). On the Amiga + the ":sh" and ":!" commands will not work. + + --nofork Foreground. For the GUI version, Vim will not fork and de鈥 + tach from the shell it was started in. + + -F If Vim has been compiled with FKMAP support for editing + right-to-left oriented files and Farsi keyboard mapping, + this option starts Vim in Farsi mode, i.e. 'fkmap' and + 'rightleft' are set. Otherwise an error message is given + and Vim aborts. + + -g If Vim has been compiled with GUI support, this option en鈥 + ables the GUI. If no GUI support was compiled in, an error + message is given and Vim aborts. + + -h Give a bit of help about the command line arguments and op鈥 + tions. After this Vim exits. + + -H If Vim has been compiled with RIGHTLEFT support for editing + right-to-left oriented files and Hebrew keyboard mapping, + this option starts Vim in Hebrew mode, i.e. 'hkmap' and + 'rightleft' are set. Otherwise an error message is given + and Vim aborts. + + -i {viminfo} + Specifies the filename to use when reading or writing the + viminfo file, instead of the default "~/.viminfo". This + can also be used to skip the use of the .viminfo file, by + giving the name "NONE". + + -L Same as -r. + + -l Lisp mode. Sets the 'lisp' and 'showmatch' options on. + + -m Modifying files is disabled. Resets the 'write' option. + You can still modify the buffer, but writing a file is not + possible. + + -M Modifications not allowed. The 'modifiable' and 'write' + options will be unset, so that changes are not allowed and + files can not be written. Note that these options can be + set to enable making modifications. + + -N No-compatible mode. Resets the 'compatible' option. This + will make Vim behave a bit better, but less Vi compatible, + even though a .vimrc file does not exist. + + -n No swap file will be used. Recovery after a crash will be + impossible. Handy if you want to edit a file on a very + slow medium (e.g. floppy). Can also be done with ":set + uc=0". Can be undone with ":set uc=200". + + -nb Become an editor server for NetBeans. See the docs for de鈥 + tails. + + -o[N] Open N windows stacked. When N is omitted, open one window + for each file. + + -O[N] Open N windows side by side. When N is omitted, open one + window for each file. + + -p[N] Open N tab pages. When N is omitted, open one tab page for + each file. + + -R Read-only mode. The 'readonly' option will be set. You + can still edit the buffer, but will be prevented from acci鈥 + dentally overwriting a file. If you do want to overwrite a + file, add an exclamation mark to the Ex command, as in + ":w!". The -R option also implies the -n option (see + above). The 'readonly' option can be reset with ":set + noro". See ":help 'readonly'". + + -r List swap files, with information about using them for re鈥 + covery. + + -r {file} Recovery mode. The swap file is used to recover a crashed + editing session. The swap file is a file with the same + filename as the text file with ".swp" appended. See ":help + recovery". + + -s Silent mode. Only when started as "Ex" or when the "-e" + option was given before the "-s" option. + + -s {scriptin} + The script file {scriptin} is read. The characters in the + file are interpreted as if you had typed them. The same + can be done with the command ":source! {scriptin}". If the + end of the file is reached before the editor exits, further + characters are read from the keyboard. + + -T {terminal} + Tells Vim the name of the terminal you are using. Only re鈥 + quired when the automatic way doesn't work. Should be a + terminal known to Vim (builtin) or defined in the termcap + or terminfo file. + + -u {vimrc} Use the commands in the file {vimrc} for initializations. + All the other initializations are skipped. Use this to + edit a special kind of files. It can also be used to skip + all initializations by giving the name "NONE". See ":help + initialization" within vim for more details. + + -U {gvimrc} Use the commands in the file {gvimrc} for GUI initializa鈥 + tions. All the other GUI initializations are skipped. It + can also be used to skip all GUI initializations by giving + the name "NONE". See ":help gui-init" within vim for more + details. + + -V[N] Verbose. Give messages about which files are sourced and + for reading and writing a viminfo file. The optional num鈥 + ber N is the value for 'verbose'. Default is 10. + + -v Start Vim in Vi mode, just like the executable was called + "vi". This only has effect when the executable is called + "ex". + + -w {scriptout} + All the characters that you type are recorded in the file + {scriptout}, until you exit Vim. This is useful if you + want to create a script file to be used with "vim -s" or + ":source!". If the {scriptout} file exists, characters are + appended. + + -W {scriptout} + Like -w, but an existing file is overwritten. + + -x Use encryption when writing files. Will prompt for a crypt + key. + + -X Don't connect to the X server. Shortens startup time in a + terminal, but the window title and clipboard will not be + used. + + -y Start Vim in easy mode, just like the executable was called + "evim" or "eview". Makes Vim behave like a click-and-type + editor. + + -Z Restricted mode. Works like the executable starts with + "r". + + -- Denotes the end of the options. Arguments after this will + be handled as a file name. This can be used to edit a + filename that starts with a '-'. + + --clean Do not use any personal configuration (vimrc, plugins, + etc.). Useful to see if a problem reproduces with a clean + Vim setup. + + --echo-wid GTK GUI only: Echo the Window ID on stdout. + + --help Give a help message and exit, just like "-h". + + --literal Take file name arguments literally, do not expand wild鈥 + cards. This has no effect on Unix where the shell expands + wildcards. + + --noplugin Skip loading plugins. Implied by -u NONE. + + --remote Connect to a Vim server and make it edit the files given in + the rest of the arguments. If no server is found a warning + is given and the files are edited in the current Vim. + + --remote-expr {expr} + Connect to a Vim server, evaluate {expr} in it and print + the result on stdout. + + --remote-send {keys} + Connect to a Vim server and send {keys} to it. + + --remote-silent + As --remote, but without the warning when no server is + found. + + --remote-wait + As --remote, but Vim does not exit until the files have + been edited. + + --remote-wait-silent + As --remote-wait, but without the warning when no server is + found. + + --serverlist + List the names of all Vim servers that can be found. + + --servername {name} + Use {name} as the server name. Used for the current Vim, + unless used with a --remote argument, then it's the name of + the server to connect to. + + --socketid {id} + GTK GUI only: Use the GtkPlug mechanism to run gvim in an鈥 + other window. + + --startuptime {file} + During startup write timing messages to the file {fname}. + + --version Print version information and exit. + +ON-LINE HELP + Type ":help" in Vim to get started. Type ":help subject" to get help + on a specific subject. For example: ":help ZZ" to get help for the + "ZZ" command. Use <Tab> and CTRL-D to complete subjects (":help cmd鈥 + line-completion"). Tags are present to jump from one place to another + (sort of hypertext links, see ":help"). All documentation files can be + viewed in this way, for example ":help syntax.txt". + +FILES + /usr/local/lib/vim/doc/*.txt + The Vim documentation files. Use ":help doc-file-list" + to get the complete list. + + /usr/local/lib/vim/doc/tags + The tags file used for finding information in the docu鈥 + mentation files. + + /usr/local/lib/vim/syntax/syntax.vim + System wide syntax initializations. + + /usr/local/lib/vim/syntax/*.vim + Syntax files for various languages. + + /usr/local/lib/vim/vimrc + System wide Vim initializations. + + ~/.vimrc Your personal Vim initializations. + + /usr/local/lib/vim/gvimrc + System wide gvim initializations. + + ~/.gvimrc Your personal gvim initializations. + + /usr/local/lib/vim/optwin.vim + Script used for the ":options" command, a nice way to + view and set options. + + /usr/local/lib/vim/menu.vim + System wide menu initializations for gvim. + + /usr/local/lib/vim/bugreport.vim + Script to generate a bug report. See ":help bugs". + + /usr/local/lib/vim/filetype.vim + Script to detect the type of a file by its name. See + ":help 'filetype'". + + /usr/local/lib/vim/scripts.vim + Script to detect the type of a file by its contents. + See ":help 'filetype'". + + /usr/local/lib/vim/print/*.ps + Files used for PostScript printing. + + For recent info read the VIM home page: + <URL:http://www.vim.org/> + +SEE ALSO + vimtutor(1) + +AUTHOR + Most of Vim was made by Bram Moolenaar, with a lot of help from others. + See ":help credits" in Vim. + Vim is based on Stevie, worked on by: Tim Thompson, Tony Andrews and + G.R. (Fred) Walter. Although hardly any of the original code remains. + +BUGS + Probably. See ":help todo" for a list of known problems. + + Note that a number of things that may be regarded as bugs by some, are + in fact caused by a too-faithful reproduction of Vi's behaviour. And + if you think other things are bugs "because Vi does it differently", + you should take a closer look at the vi_diff.txt file (or type :help + vi_diff.txt when in Vim). Also have a look at the 'compatible' and + 'cpoptions' options. + + + + 2021 Jun 13 VIM(1) diff --git a/runtime/doc/vim.man.info b/runtime/doc/vim.man.info new file mode 100755 index 0000000..133f9a0 Binary files /dev/null and b/runtime/doc/vim.man.info differ diff --git a/runtime/doc/vim2html.pl b/runtime/doc/vim2html.pl new file mode 100644 index 0000000..eddfb3a --- /dev/null +++ b/runtime/doc/vim2html.pl @@ -0,0 +1,238 @@ +#!/usr/bin/env perl + +# converts vim documentation to simple html +# Sirtaj Singh Kang (taj@kde.org) + +# Sun Feb 24 14:49:17 CET 2002 + +use strict; +use warnings; +use vars qw/%url $date/; + +%url = (); +# 30.11.23, Restorer: +# This command does not work in OS Windows. +# The "date" command in Windows is different from its counterpart in UNIX-like systems. +# The closest analog is the "date /t" command, but how it would work in UNIX, +# I don't know. I've corrected it as best I can. I don't know Perl. +#$date = `date`; +#chop $date; +my ($year) = 1900 + (localtime())[5]; +my ($month) = 1 + (localtime())[4]; +my ($day) = (localtime())[3]; +#$date = localtime(); # outputs like this Fri Nov 3 00:56:59 2023 + +sub maplink +{ + my $tag = shift; + if( exists $url{ $tag } ){ + return $url{ $tag }; + } else { + #warn "Unknown hyperlink target: $tag\n"; + $tag =~ s/\.txt//; + $tag =~ s/</</g; + $tag =~ s/>/>/g; + return "<code class=\"badlink\">$tag</code>"; + } +} + +sub readTagFile +{ + my($tagfile) = @_; + my( $tag, $file, $name ); + + open(TAGS,"$tagfile") || die "can't read tags\n"; + + while( <TAGS> ) { + next unless /^(\S+)\s+(\S+)\s+/; + + $tag = $1; + my $label = $tag; + ($file= $2) =~ s/.txt$/.html/g; + $label =~ s/\.txt//; + + $url{ $tag } = "<a href=\"$file#".escurl($tag)."\">".esctext($label)."</a>"; + } + close( TAGS ); +} + +sub esctext +{ + my $text = shift; + $text =~ s/&/&/g; + $text =~ s/</</g; + $text =~ s/>/>/g; + return $text; +} + +sub escurl +{ + my $url = shift; + $url =~ s/"/%22/g; + $url =~ s/~/%7E/g; + $url =~ s/</%3C/g; + $url =~ s/>/%3E/g; + $url =~ s/=/%20/g; + $url =~ s/#/%23/g; + $url =~ s/\//%2F/g; + + return $url; +} + +sub vim2html +{ + my( $infile ) = @_; + my( $outfile ); + + open(IN, "$infile" ) || die "Couldn't read from $infile: $!.\n"; + + ($outfile = $infile) =~ s:.*/::g; + $outfile =~ s/\.txt$//g; + + open( OUT, ">$outfile.html" ) + || die "Couldn't write to $outfile.html: $!.\n"; + my $head = uc( $outfile ); + + print OUT<<EOF; +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>VIM: $outfile + + + +

$head

+
+EOF
+
+	my $inexample = 0;
+	while(  ) {
+		chop;
+		if ( /^\s*[-=]+\s*$/ ) {
+			print OUT "

";
+			next;
+		}
+
+		# examples
+		elsif( /^>$/ || /\s>$/ ) {
+			$inexample = 1;
+			chop;
+		}
+		elsif ( $inexample && /^([<\S])/ ) {
+			$inexample = 0;
+			$_ = $' if $1 eq "<";
+		}
+
+		s/\s+$//g;
+
+		# Various vim highlights. note that < and > have already been escaped
+		# so that HTML doesn't get screwed up.
+
+		my @out = ();
+		#		print "Text: $_\n";
+		LOOP:
+		foreach my $token ( split /((?:\|[^\|]+\|)|(?:\*[^\*]+\*))/ ) {
+			if ( $token =~ /^\|([^\|]+)\|/ ) {
+				# link
+				push( @out, "|".maplink( $1 )."|" );
+				next LOOP;
+			}
+			elsif ( $token =~ /^\*([^\*]+)\*/ ) {
+				# target
+				push( @out,
+					"\*".esctext($1)."<\/a>\*<\/b>");
+				next LOOP;
+			}
+
+			$_ = esctext($token);
+			s/CTRL-(\w+)/CTRL-$1<\/code>/g;
+			# parameter <...>
+			s/<(.*?)>/<$1><\/code>/g;
+
+			# parameter {...}
+			s/\{([^}]*)\}/{$1}<\/code>/g;
+
+			# parameter [...]
+			s/\[(range|line|count|offset|cmd|[-+]?num)\]/\[$1\]<\/code>/g;
+			# note
+			s/(Note:?)/$1<\/code>/gi;
+
+			# local heading
+			s/^(.*)\~$/$1<\/code>/g;
+			push( @out, $_ );
+		}
+
+		$_ = join( "", @out );
+
+		if( $inexample == 2 ) {
+			print OUT "$_\n";
+		} else {
+			print OUT $_,"\n";
+		}
+
+		$inexample = 2 if $inexample == 1;
+	}
+	print OUT<
+

Generated by vim2html on $day.$month.$year

+ + +EOF + +} + +sub usage +{ +die< +EOF +} + + +sub writeCSS +{ + open( CSS, ">vim-stylesheet.css" ) || die "Couldn't write stylesheet: $!\n"; + print CSS< + echo "hello" # comment +- Using a backslash for line continuation is hardly ever needed: > + echo "hello " + .. yourName + .. ", how are you?" +- White space is required in many places to improve readability. +- Assign values without `:let` *E1126* , declare variables with `:var`: > + var count = 0 + count += 3 +- Constants can be declared with `:final` and `:const`: > + final matches = [] # add to the list later + const names = ['Betty', 'Peter'] # cannot be changed +- `:final` cannot be used as an abbreviation of `:finally`. +- Variables and functions are script-local by default. +- Functions are declared with argument types and return type: > + def CallMe(count: number, message: string): bool +- Call functions without `:call`: > + writefile(['done'], 'file.txt') +- You cannot use old Ex commands: + `:Print` + `:append` + `:change` + `:d` directly followed by 'd' or 'p'. + `:insert` + `:k` + `:mode` + `:open` + `:s` with only flags + `:t` + `:xit` +- Some commands, especially those used for flow control, cannot be shortened. + E.g., `:throw` cannot be written as `:th`. *vim9-no-shorten* +- You cannot use curly-braces names. +- A range before a command must be prefixed with a colon: > + :%s/this/that +- Executing a register with "@r" does not work, you can prepend a colon or use + `:exe`: > + :exe @a +- Unless mentioned specifically, the highest |scriptversion| is used. +- When defining an expression mapping, the expression will be evaluated in the + context of the script where it was defined. +- When indexing a string the index is counted in characters, not bytes: + |vim9-string-index| +- Some possibly unexpected differences: |vim9-gotchas|. + + +Comments starting with # ~ + +In legacy Vim script comments start with double quote. In Vim9 script +comments start with #. > + # declarations + var count = 0 # number of occurrences + +The reason is that a double quote can also be the start of a string. In many +places, especially halfway through an expression with a line break, it's hard +to tell what the meaning is, since both a string and a comment can be followed +by arbitrary text. To avoid confusion only # comments are recognized. This +is the same as in shell scripts and Python programs. + +In Vi # is a command to list text with numbers. In Vim9 script you can use +`:number` for that. > + :101 number + +To improve readability there must be a space between a command and the # +that starts a comment: > + var name = value # comment + var name = value# error! +< *E1170* +Do not start a comment with #{, it looks like the legacy dictionary literal +and produces an error where this might be confusing. #{{ or #{{{ are OK, +these can be used to start a fold. + +When starting to read a script file Vim doesn't know it is |Vim9| script until +the `vim9script` command is found. Until that point you would need to use +legacy comments: > + " legacy comment + vim9script + # Vim9 comment + +That looks ugly, better put `vim9script` in the very first line: > + vim9script + # Vim9 comment + +In legacy Vim script # is also used for the alternate file name. In Vim9 +script you need to use %% instead. Instead of ## use %%% (stands for all +arguments). + + +Vim9 functions ~ + *E1099* +A function defined with `:def` is compiled. Execution is many times faster, +often 10 to 100 times. + +Many errors are already found when compiling, before the function is executed. +The syntax is strict, to enforce code that is easy to read and understand. + +Compilation is done when any of these is encountered: +- the first time the function is called +- when the `:defcompile` command is encountered in the script after the + function was defined +- `:disassemble` is used for the function. +- a function that is compiled calls the function or uses it as a function + reference (so that the argument and return types can be checked) + *E1091* *E1191* +If compilation fails it is not tried again on the next call, instead this +error is given: "E1091: Function is not compiled: {name}". +Compilation will fail when encountering a user command that has not been +created yet. In this case you can call `execute()` to invoke it at runtime. > + def MyFunc() + execute('DefinedLater') + enddef + +`:def` has no options like `:function` does: "range", "abort", "dict" or +"closure". A `:def` function always aborts on an error (unless `:silent!` was +used for the command or the error was caught a `:try` block), does not get a +range passed, cannot be a "dict" function, and can always be a closure. + *vim9-no-dict-function* +You can use a Vim9 Class (|Vim9-class|) instead of a "dict function". +You can also pass the dictionary explicitly: > + def DictFunc(self: dict, arg: string) + echo self[arg] + enddef + var ad = {item: 'value', func: DictFunc} + ad.func(ad, 'item') + +You can call a legacy dict function though: > + func Legacy() dict + echo self.value + endfunc + def CallLegacy() + 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. + *E1106* +Arguments are accessed by name, without "a:", just like any other language. +There is no "a:" dictionary or "a:000" list. + *vim9-variable-arguments* *E1055* *E1160* *E1180* +Variable arguments are defined as the last argument, with a name and have a +list type, similar to TypeScript. For example, a list of numbers: > + def MyFunc(...itemlist: list) + for item in itemlist + ... + +When a function argument is optional (it has a default value) passing `v:none` +as the argument results in using the default value. This is useful when you +want to specify a value for an argument that comes after an argument that +should use its default value. Example: > + def MyFunc(one = 'one', last = 'last') + ... + enddef + MyFunc(v:none, 'LAST') # first argument uses default value 'one' +< + *vim9-ignored-argument* *E1181* +The argument "_" (an underscore) can be used to ignore the argument. This is +most useful in callbacks where you don't need it, but do need to give an +argument to match the call. E.g. when using map() two arguments are passed, +the key and the value, to ignore the key: > + map(numberList, (_, v) => v * 2) +There is no error for using the "_" argument multiple times. No type needs to +be given. + + +Functions and variables are script-local by default ~ + *vim9-scopes* +When using `:function` or `:def` to specify a new function at the script level +in a Vim9 script, the function is local to the script. Like prefixing "s:" in +legacy script. To define a global function or variable the "g:" prefix must +be used. For functions in a script that is to be imported and in an autoload +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* +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 +argument, pass the function reference itself: > + def Outer() + def Inner() + echo 'inner' + enddef + var Fok = function(Inner) # OK + var Fbad = function('Inner') # does not work + +Detail: this is because "Inner" will actually become a function reference to a +function with a generated name. + +It is not possible to define a script-local function in a function. You can +define a local function and assign it to a script-local Funcref (it must have +been declared at the script level). It is possible to define a global +function by using the "g:" prefix. + +When referring to a function and no "s:" or "g:" prefix is used, Vim will +search for the function: +- in the function scope, in block scopes +- in the script scope + +Imported functions are found with the prefix from the `:import` command. + +Since a script-local function reference can be used without "s:" the name must +start with an upper case letter even when using the "s:" prefix. In legacy +script "s:funcref" could be used, because it could not be referred to with +"funcref". In Vim9 script it can, therefore "s:Funcref" must be used to avoid +that the name interferes with builtin functions. + *vim9-s-namespace* *E1268* +The use of the "s:" prefix is not supported at the Vim9 script level. All +functions and variables without a prefix are script-local. + +In :def functions the use of "s:" depends on the script: Script-local +variables and functions in a legacy script do use "s:", while in a Vim9 script +they do not use "s:". This matches what you see in the rest of the file. + +In legacy functions the use of "s:" for script items is required, as before. +No matter if the script is Vim9 or legacy. + +In all cases the function must be defined before used. That is when it is +called, when `:defcompile` causes it to be compiled, or when code that calls +it is being compiled (to figure out the return type). + +The result is that functions and variables without a namespace can usually be +found in the script, either defined there or imported. Global functions and +variables could be defined anywhere (good luck finding out where! You can +often see where it was last set using |:verbose|). + *E1102* +Global functions can still be defined and deleted at nearly any time. In +Vim9 script script-local functions are defined once when the script is sourced +and cannot be deleted or replaced by itself (it can be by reloading the +script). + +When compiling a function and a function call is encountered for a function +that is not (yet) defined, the |FuncUndefined| autocommand is not triggered. +You can use an autoload function if needed, or call a legacy function and have +|FuncUndefined| triggered there. + + +Reloading a Vim9 script clears functions and variables by default ~ + *vim9-reload* *E1149* *E1150* +When loading a legacy Vim script a second time nothing is removed, the +commands will replace existing variables and functions, create new ones, and +leave removed things hanging around. + +When loading a Vim9 script a second time all existing script-local functions +and variables are deleted, thus you start with a clean slate. This is useful +if you are developing a plugin and want to try a new version. If you renamed +something you don't have to worry about the old name still hanging around. + +If you do want to keep items, use: > + vim9script noclear + +You want to use this in scripts that use a `finish` command to bail out at +some point when loaded again. E.g. when a buffer local option is set to a +function, the function does not need to be defined more than once: > + vim9script noclear + setlocal completefunc=SomeFunc + if exists('*SomeFunc') + finish + endif + def SomeFunc() + .... + + +Variable declarations with :var, :final and :const ~ + *vim9-declaration* *:var* *E1079* + *E1017* *E1020* *E1054* *E1087* *E1124* +Local variables need to be declared with `:var`. Local constants need to be +declared with `:final` or `:const`. We refer to both as "variables" in this +section. + +Variables can be local to a script, function or code block: > + vim9script + var script_var = 123 + def SomeFunc() + var func_var = script_var + if cond + var block_var = func_var + ... + +The variables are only visible in the block where they are defined and nested +blocks. Once the block ends the variable is no longer accessible: > + if cond + var inner = 5 + else + var inner = 0 + endif + echo inner # Error! + +The declaration must be done earlier: > + var inner: number + if cond + inner = 5 + else + inner = 0 + endif + echo inner + +Although this is shorter and faster for simple values: > + var inner = 0 + if cond + inner = 5 + endif + echo inner +< *E1025* *E1128* +To intentionally hide a variable from code that follows, a block can be +used: > + { + var temp = 'temp' + ... + } + echo temp # Error! + +This is especially useful in a user command: > + command -range Rename { + var save = @a + @a = 'some expression' + echo 'do something with ' .. @a + @a = save + } + +And with autocommands: > + au BufWritePre *.go { + var save = winsaveview() + silent! exe ':%! some formatting command' + winrestview(save) + } + +Although using a :def function probably works better. + + *E1022* *E1103* *E1130* *E1131* *E1133* + *E1134* +Declaring a variable with a type but without an initializer will initialize to +false (for bool), empty (for string, list, dict, etc.) or zero (for number, +any, etc.). This matters especially when using the "any" type, the value will +default to the number zero. For example, when declaring a list, items can be +added: > + var myList: list + myList->add(7) + +Initializing a variable to a null value, e.g. `null_list`, differs from not +initializing the variable. This throws an error: > + var myList = null_list + myList->add(7) # E1130: Cannot add to null list + +< *E1016* *E1052* *E1066* +In Vim9 script `:let` cannot be used. An existing variable is assigned to +without any command. The same for global, window, tab, buffer and Vim +variables, because they are not really declared. Those can also be deleted +with `:unlet`. + *E1065* +You cannot use `:va` to declare a variable, it must be written with the full +name `:var`. Just to make sure it is easy to read. + *E1178* +`:lockvar` does not work on local variables. Use `:const` and `:final` +instead. + +The `exists()` and `exists_compiled()` functions do not work on local variables +or arguments. + *E1006* *E1041* *E1167* *E1168* *E1213* +Variables, functions and function arguments cannot shadow previously defined +or imported variables and functions in the same script file. +Variables may shadow Ex commands, rename the variable if needed. + +Global variables must be prefixed with "g:", also at the script level. > + vim9script + var script_local = 'text' + g:global = 'value' + var Funcref = g:ThatFunction + +Global functions must be prefixed with "g:": > + vim9script + def g:GlobalFunc(): string + return 'text' + enddef + echo g:GlobalFunc() +The "g:" prefix is not needed for auto-load functions. + + *vim9-function-defined-later* +Although global functions can be called without the "g:" prefix, they must +exist when compiled. By adding the "g:" prefix the function can be defined +later. Example: > + def CallPluginFunc() + if exists('g:loaded_plugin') + g:PluginFunc() + endif + enddef + +If you do it like this, you get an error at compile time that "PluginFunc" +does not exist, even when "g:loaded_plugin" does not exist: > + def CallPluginFunc() + if exists('g:loaded_plugin') + PluginFunc() # Error - function not found + endif + enddef + +You can use exists_compiled() to avoid the error, but then the function would +not be called, even when "g:loaded_plugin" is defined later: > + def CallPluginFunc() + if exists_compiled('g:loaded_plugin') + PluginFunc() # Function may never be called + endif + enddef + +Since `&opt = value` is now assigning a value to option "opt", ":&" cannot be +used to repeat a `:substitute` command. + *vim9-unpack-ignore* +For an unpack assignment the underscore can be used to ignore a list item, +similar to how a function argument can be ignored: > + [a, _, c] = theList +To ignore any remaining items: > + [a, b; _] = longList +< *E1163* *E1080* +Declaring more than one variable at a time, using the unpack notation, is +possible. Each variable can have a type or infer it from the value: > + var [v1: number, v2] = GetValues() +Use this only when there is a list with values, declaring one variable per +line is much easier to read and change later. + + +Constants ~ + *vim9-const* *vim9-final* +How constants work varies between languages. Some consider a variable that +can't be assigned another value a constant. JavaScript is an example. Others +also make the value immutable, thus when a constant uses a list, the list +cannot be changed. In Vim9 we can use both. + *E1021* *E1307* +`:const` is used for making both the variable and the value a constant. Use +this for composite structures that you want to make sure will not be modified. +Example: > + const myList = [1, 2] + myList = [3, 4] # Error! + myList[0] = 9 # Error! + myList->add(3) # Error! +< *:final* *E1125* +`:final` is used for making only the variable a constant, the value can be +changed. This is well known from Java. Example: > + final myList = [1, 2] + myList = [3, 4] # Error! + myList[0] = 9 # OK + myList->add(3) # OK + +It is common to write constants as ALL_CAPS, but you don't have to. + +The constant only applies to the value itself, not what it refers to. > + final females = ["Mary"] + const NAMES = [["John", "Peter"], females] + NAMES[0] = ["Jack"] # Error! + NAMES[0][0] = "Jack" # Error! + NAMES[1] = ["Emma"] # Error! + NAMES[1][0] = "Emma" # OK, now females[0] == "Emma" + + +Omitting :call and :eval ~ + *E1190* +Functions can be called without `:call`: > + writefile(lines, 'file') +Using `:call` is still possible, but this is discouraged. + +A method call without `eval` is possible, so long as the start is an +identifier or can't be an Ex command. For a function either "(" or "->" must +be following, without a line break. Examples: > + myList->add(123) + g:myList->add(123) + [1, 2, 3]->Process() + {a: 1, b: 2}->Process() + "foobar"->Process() + ("foobar")->Process() + 'foobar'->Process() + ('foobar')->Process() + +In the rare case there is ambiguity between a function name and an Ex command, +prepend ":" to make clear you want to use the Ex command. For example, there +is both the `:substitute` command and the `substitute()` function. When the +line starts with `substitute(` this will use the function. Prepend a colon to +use the command instead: > + :substitute(pattern (replacement ( + +If the expression starts with "!" this is interpreted as a shell command, not +negation of a condition. Thus this is a shell command: > + !shellCommand->something +Put the expression in parentheses to use the "!" for negation: > + (!expression)->Method() + +Note that while variables need to be defined before they can be used, +functions can be called before being defined. This is required to allow +for cyclic dependencies between functions. It is slightly less efficient, +since the function has to be looked up by name. And a typo in the function +name will only be found when the function is called. + + +Omitting function() ~ + +A user defined function can be used as a function reference in an expression +without `function()`. The argument types and return type will then be checked. +The function must already have been defined. > + + var Funcref = MyFunction + +When using `function()` the resulting type is "func", a function with any +number of arguments and any return type (including void). The function can be +defined later if the argument is in quotes. + + +Lambda using => instead of -> ~ + *vim9-lambda* +In legacy script there can be confusion between using "->" for a method call +and for a lambda. Also, when a "{" is found the parser needs to figure out if +it is the start of a lambda or a dictionary, which is now more complicated +because of the use of argument types. + +To avoid these problems Vim9 script uses a different syntax for a lambda, +which is similar to JavaScript: > + var Lambda = (arg) => expression + var Lambda = (arg): type => expression +< *E1157* +No line break is allowed in the arguments of a lambda up to and including the +"=>" (so that Vim can tell the difference between an expression in parentheses +and lambda arguments). This is OK: > + filter(list, (k, v) => + v > 0) +This does not work: > + filter(list, (k, v) + => v > 0) +This also does not work: > + filter(list, (k, + v) => v > 0) +But you can use a backslash to concatenate the lines before parsing: > + filter(list, (k, + \ v) + \ => v > 0) +< *vim9-lambda-arguments* *E1172* +In legacy script a lambda could be called with any number of extra arguments, +there was no way to warn for not using them. In Vim9 script the number of +arguments must match. If you do want to accept any arguments, or any further +arguments, use "..._", which makes the function accept +|vim9-variable-arguments|. Example: > + var Callback = (..._) => 'anything' + echo Callback(1, 2, 3) # displays "anything" + +< *inline-function* *E1171* +Additionally, a lambda can contain statements in {}: > + var Lambda = (arg) => { + g:was_called = 'yes' + return expression + } +This can be useful for a timer, for example: > + var count = 0 + var timer = timer_start(500, (_) => { + count += 1 + echom 'Handler called ' .. count + }, {repeat: 3}) + +The ending "}" must be at the start of a line. It can be followed by other +characters, e.g.: > + var d = mapnew(dict, (k, v): string => { + return 'value' + }) +No command can follow the "{", only a comment can be used there. + + *command-block* *E1026* +The block can also be used for defining a user command. Inside the block Vim9 +syntax will be used. + +If the statements include a dictionary, its closing bracket must not be +written at the start of a line. Otherwise, it would be parsed as the end of +the block. This does not work: > + command NewCommand { + g:mydict = { + 'key': 'value', + } # ERROR: will be recognized as the end of the block + } +Put the '}' after the last item to avoid this: > + command NewCommand { + g:mydict = { + 'key': 'value' } + } + +Rationale: The "}" cannot be after a command because it would require parsing +the commands to find it. For consistency with that no command can follow the +"{". Unfortunately this means using "() => { command }" does not work, line +breaks are always required. + + *vim9-curly* +To avoid the "{" of a dictionary literal to be recognized as a statement block +wrap it in parentheses: > + var Lambda = (arg) => ({key: 42}) + +Also when confused with the start of a command block: > + ({ + key: value + })->method() + + +Automatic line continuation ~ + *vim9-line-continuation* *E1097* +In many cases it is obvious that an expression continues on the next line. In +those cases there is no need to prefix the line with a backslash (see +|line-continuation|). For example, when a list spans multiple lines: > + var mylist = [ + 'one', + 'two', + ] +And when a dict spans multiple lines: > + var mydict = { + one: 1, + two: 2, + } +With a function call: > + var result = Func( + arg1, + arg2 + ) + +For binary operators in expressions not in [], {} or () a line break is +possible just before or after the operator. For example: > + var text = lead + .. middle + .. end + var total = start + + end - + correction + var result = positive + ? PosFunc(arg) + : NegFunc(arg) + +For a method call using "->" and a member using a dot, a line break is allowed +before it: > + var result = GetBuilder() + ->BuilderSetWidth(333) + ->BuilderSetHeight(777) + ->BuilderBuild() + var result = MyDict + .member + +For commands that have an argument that is a list of commands, the | character +at the start of the line indicates line continuation: > + autocmd BufNewFile *.match if condition + | echo 'match' + | endif + +Note that this means that in heredoc the first line cannot start with a bar: > + var lines =<< trim END + | this doesn't work + END +Either use an empty line at the start or do not use heredoc. Or temporarily +add the "C" flag to 'cpoptions': > + set cpo+=C + var lines =<< trim END + | this works + END + set cpo-=C +If the heredoc is inside a function 'cpoptions' must be set before :def and +restored after the :enddef. + +In places where line continuation with a backslash is still needed, such as +splitting up a long Ex command, comments can start with '#\ ': > + syn region Text + \ start='foo' + #\ comment + \ end='bar' +Like with legacy script '"\ ' is used. This is also needed when line +continuation is used without a backslash and a line starts with a bar: > + au CursorHold * echom 'BEFORE bar' + #\ some comment + | echom 'AFTER bar' +< + *E1050* +To make it possible for the operator at the start of the line to be +recognized, it is required to put a colon before a range. This example will +add "start" and "print": > + var result = start + + print +Like this: > + var result = start + print + +This will assign "start" and print a line: > + var result = start + :+ print + +After the range an Ex command must follow. Without the colon you can call a +function without `:call`, but after a range you do need it: > + MyFunc() + :% call MyFunc() + +Note that the colon is not required for the |+cmd| argument: > + edit +6 fname + +It is also possible to split a function header over multiple lines, in between +arguments: > + def MyFunc( + text: string, + separator = '-' + ): string + +Since a continuation line cannot be easily recognized the parsing of commands +has been made stricter. E.g., because of the error in the first line, the +second line is seen as a separate command: > + popup_create(some invalid expression, { + exit_cb: Func}) +Now "exit_cb: Func})" is actually a valid command: save any changes to the +file "_cb: Func})" and exit. To avoid this kind of mistake in Vim9 script +there must be white space between most command names and the argument. +*E1144* + +However, the argument of a command that is a command won't be recognized. For +example, after "windo echo expr" a line break inside "expr" will not be seen. + + +Notes: +- "enddef" cannot be used at the start of a continuation line, it ends the + current function. +- No line break is allowed in the LHS of an assignment. Specifically when + unpacking a list |:let-unpack|. This is OK: > + [var1, var2] = + Func() +< This does not work: > + [var1, + var2] = + Func() +- No line break is allowed in between arguments of an `:echo`, `:execute` and + similar commands. This is OK: > + echo [1, + 2] [3, + 4] +< This does not work: > + echo [1, 2] + [3, 4] +- In some cases it is difficult for Vim to parse a command, especially when + commands are used as an argument to another command, such as `:windo`. In + those cases the line continuation with a backslash has to be used. + + +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! + var name =234 # Error! +There must be white space before and after the "=": > + var name = 234 # OK +White space must also be put before the # that starts a comment after a +command: > + var name = 234# Error! + var name = 234 # OK + +White space is required around most operators. + +White space is required in a sublist (list slice) around the ":", except at +the start and end: > + otherlist = mylist[v : count] # v:count has a different meaning + otherlist = mylist[:] # make a copy of the List + otherlist = mylist[v :] + otherlist = mylist[: v] + +White space is not allowed: +- Between a function name and the "(": > + Func (arg) # Error! + Func + \ (arg) # Error! + Func + (arg) # Error! + Func(arg) # OK + Func( + arg) # OK + Func( + arg # OK + ) +< *E1205* +White space is not allowed in a `:set` command between the option name and a +following "&", "!", "<", "=", "+=", "-=" or "^=". + + +No curly braces expansion ~ + +|curly-braces-names| cannot be used. + + +Command modifiers are not ignored ~ + *E1176* +Using a command modifier for a command that does not use it gives an error. + *E1082* +Also, using a command modifier without a following command is now an error. + + +Dictionary literals ~ + *vim9-literal-dict* *E1014* +Traditionally Vim has supported dictionary literals with a {} syntax: > + let dict = {'key': value} + +Later it became clear that using a simple text key is very common, thus +literal dictionaries were introduced in a backwards compatible way: > + let dict = #{key: value} + +However, this #{} syntax is unlike any existing language. As it turns out +that using a literal key is much more common than using an expression, and +considering that JavaScript uses this syntax, using the {} form for dictionary +literals is considered a much more useful syntax. In Vim9 script the {} form +uses literal keys: > + var dict = {key: value} + +This works for alphanumeric characters, underscore and dash. If you want to +use another character, use a single or double quoted string: > + var dict = {'key with space': value} + var dict = {"key\twith\ttabs": value} + var dict = {'': value} # empty key +< *E1139* +In case the key needs to be an expression, square brackets can be used, just +like in JavaScript: > + var dict = {["key" .. nr]: value} + +The key type can be string, number, bool or float. Other types result in an +error. Without using [] the value is used as a string, keeping leading zeros. +An expression given with [] is evaluated and then converted to a string. +Leading zeros will then be dropped: > + var dict = {000123: 'without', [000456]: 'with'} + echo dict + {'456': 'with', '000123': 'without'} +A float only works inside [] because the dot is not accepted otherwise: > + var dict = {[00.013]: 'float'} + echo dict + {'0.013': 'float'} + + +No :xit, :t, :k, :append, :change or :insert ~ + *E1100* +These commands are too easily confused with local variable names. +Instead of `:x` or `:xit` you can use `:exit`. +Instead of `:t` you can use `:copy`. +Instead of `:k` you can use `:mark`. + + +Comparators ~ + +The 'ignorecase' option is not used for comparators that use strings. +Thus "=~" works like "=~#". + +"is" and "isnot" (|expr-is| and |expr-isnot|) when used on strings now return +false. In legacy script they just compare the strings, in |Vim9| script they +check identity, and strings are copied when used, thus two strings are never +the same (this might change someday if strings are not copied but reference +counted). + + +Abort after error ~ + +In legacy script, when an error is encountered, Vim continues to execute +following lines. This can lead to a long sequence of errors and need to type +CTRL-C to stop it. In Vim9 script execution of commands stops at the first +error. Example: > + vim9script + var x = does-not-exist + echo 'not executed' + + +For loop ~ + *E1254* +The loop variable must not be declared yet: > + var i = 1 + for i in [1, 2, 3] # Error! + +It is possible to use a global variable though: > + g:i = 1 + for g:i in [1, 2, 3] + echo g:i + endfor + +Legacy Vim script has some tricks to make a for loop over a list handle +deleting items at the current or previous item. In Vim9 script it just uses +the index, if items are deleted then items in the list will be skipped. +Example legacy script: > + let l = [1, 2, 3, 4] + for i in l + echo i + call remove(l, index(l, i)) + endfor +Would echo: + 1 + 2 + 3 + 4 +In compiled Vim9 script you get: + 1 + 3 +Generally, you should not change the list that is iterated over. Make a copy +first if needed. +When looping over a list of lists, the nested lists can be changed. The loop +variable is "final", it cannot be changed but what its value can be changed. + *E1306* +The depth of loops, :for and :while loops added together, cannot exceed 10. + + +Conditions and expressions ~ + *vim9-boolean* +Conditions and expressions are mostly working like they do in other languages. +Some values are different from legacy Vim script: + value legacy Vim script Vim9 script ~ + 0 falsy falsy + 1 truthy truthy + 99 truthy Error! + "0" falsy Error! + "99" truthy Error! + "text" falsy Error! + +For the "??" operator and when using "!" then there is no error, every value +is either falsy or truthy. This is mostly like JavaScript, except that an +empty list and dict is falsy: + + type truthy when ~ + bool true, v:true or 1 + number non-zero + float non-zero + string non-empty + blob non-empty + list non-empty (different from JavaScript) + dictionary non-empty (different from JavaScript) + func when there is a function name + 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) + +The boolean operators "||" and "&&" expect the values to be boolean, zero or +one: > + 1 || false == true + 0 || 1 == true + 0 || false == false + 1 && true == true + 0 && 1 == false + 8 || 0 Error! + 'yes' && 0 Error! + [] || 99 Error! + +When using "!" for inverting, there is no error for using any type and the +result is a boolean. "!!" can be used to turn any value into boolean: > + !'yes' == false + !![] == false + !![1, 2, 3] == true + +When using "`.."` for string concatenation arguments of simple types are +always converted to string: > + 'hello ' .. 123 == 'hello 123' + 'hello ' .. v:true == 'hello true' + +Simple types are Number, Float, Special and Bool. For other types |string()| +should be used. + *false* *true* *null* *null_blob* *null_channel* + *null_class* *null_dict* *null_function* *null_job* + *null_list* *null_object* *null_partial* *null_string* + *E1034* +In Vim9 script one can use the following predefined values: > + true + false + null + null_blob + null_channel + null_class + null_dict + null_function + null_job + null_list + null_object + null_partial + null_string +`true` is the same as `v:true`, `false` the same as `v:false`, `null` the same +as `v:null`. + +While `null` has the type "special", the other "null_" values have the type +indicated by their name. Quite often a null value is handled the same as an +empty value, but not always. The values can be useful to clear a script-local +variable, since they cannot be deleted with `:unlet`. E.g.: > + var theJob = job_start(...) + # let the job do its work + theJob = null_job + +The values can also be useful as the default value for an argument: > + def MyFunc(b: blob = null_blob) + # Note: compare against null, not null_blob, + # to distinguish the default value from an empty blob. + if b == null + # b argument was not given +See |null-compare| for more information about testing against null. + +It is possible to compare `null` with any value, this will not give a type +error. However, comparing `null` with a number, float or bool will always +result in `false`. This is different from legacy script, where comparing +`null` with zero or `false` would return `true`. + *vim9-false-true* +When converting a boolean to a string `false` and `true` are used, not +`v:false` and `v:true` like in legacy script. `v:none` has no `none` +replacement, it has no equivalent in other languages. + *vim9-string-index* +Indexing a string with [idx] or taking a slice with [idx : idx] uses character +indexes instead of byte indexes. Composing characters are included. +Example: > + echo 'b谩r'[1] +In legacy script this results in the character 0xc3 (an illegal byte), in Vim9 +script this results in the string '谩'. +A negative index is counting from the end, "[-1]" is the last character. +To exclude the last character use |slice()|. +To count composing characters separately use |strcharpart()|. +If the index is out of range then an empty string results. + +In legacy script "++var" and "--var" would be silently accepted and have no +effect. This is an error in Vim9 script. + +Numbers starting with zero are not considered to be octal, only numbers +starting with "0o" are octal: "0o744". |scriptversion-4| + + +What to watch out for ~ + *vim9-gotchas* +Vim9 was designed to be closer to often used programming languages, but at the +same time tries to support the legacy Vim commands. Some compromises had to +be made. Here is a summary of what might be unexpected. + +Ex command ranges need to be prefixed with a colon. > + -> legacy Vim: shifts the previous line to the right + ->func() Vim9: method call in a continuation line + :-> Vim9: shifts the previous line to the right + + %s/a/b legacy Vim: substitute on all lines + x = alongname + % another Vim9: modulo operator in a continuation line + :%s/a/b Vim9: substitute on all lines + 't legacy Vim: jump to mark t + 'text'->func() Vim9: method call + :'t Vim9: jump to mark t + +Some Ex commands can be confused with assignments in Vim9 script: > + g:name = value # assignment + :g:pattern:cmd # :global command + +To avoid confusion between a `:global` or `:substitute` command and an +expression or assignment, a few separators cannot be used when these commands +are abbreviated to a single character: ':', '-' and '.'. > + g:pattern:cmd # invalid command - ERROR + s:pattern:repl # invalid command - ERROR + g-pattern-cmd # invalid command - ERROR + s-pattern-repl # invalid command - ERROR + g.pattern.cmd # invalid command - ERROR + s.pattern.repl # invalid command - ERROR + +Also, there cannot be a space between the command and the separator: > + g /pattern/cmd # invalid command - ERROR + s /pattern/repl # invalid command - ERROR + +Functions defined with `:def` compile the whole function. Legacy functions +can bail out, and the following lines are not parsed: > + func Maybe() + if !has('feature') + return + endif + use-feature + endfunc +Vim9 functions are compiled as a whole: > + def Maybe() + if !has('feature') + return + endif + use-feature # May give a compilation error + enddef +For a workaround, split it in two functions: > + func Maybe() + if has('feature') + call MaybeInner() + endif + endfunc + if has('feature') + def MaybeInner() + use-feature + enddef + endif +Or put the unsupported code inside an `if` with a constant expression that +evaluates to false: > + def Maybe() + if has('feature') + use-feature + endif + enddef +The `exists_compiled()` function can also be used for this. + *vim9-user-command* +Another side effect of compiling a function is that the presence of a user +command is checked at compile time. If the user command is defined later an +error will result. This works: > + command -nargs=1 MyCommand echom + def Works() + MyCommand 123 + enddef +This will give an error for "MyCommand" not being defined: > + def Works() + command -nargs=1 MyCommand echom + MyCommand 123 + enddef +A workaround is to invoke the command indirectly with `:execute`: > + def Works() + command -nargs=1 MyCommand echom + execute 'MyCommand 123' + enddef + +Note that for unrecognized commands there is no check for "|" and a following +command. This will give an error for missing `endif`: > + def Maybe() + if has('feature') | use-feature | endif + enddef + +Other differences ~ + +Patterns are used like 'magic' is set, unless explicitly overruled. +The 'edcompatible' option value is not used. +The 'gdefault' option value is not used. + +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 + + *:++* *:--* +The ++ and -- commands have been added. They are very similar to adding or +subtracting one: > + ++var + var += 1 + --var + var -= 1 + +Using ++var or --var in an expression is not supported yet. + +============================================================================== + +3. New style functions *fast-functions* + + *:def* *E1028* +: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* + 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* + {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 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. + + It is possible to nest `:def` inside another `:def` or + `:function` up to about 50 levels deep. + *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. + + *:enddef* *E1057* *E1152* *E1173* +:enddef End of a function defined with `:def`. It should be on + a line by its own. + +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. + + *:defc* *:defcompile* +:defc[ompile] Compile functions defined in the current script that + were not compiled yet. + This will report any errors found during compilation. + This excludes functions defined inside a class. + +:defc[ompile] {func} +:defc[ompile] debug {func} +:defc[ompile] profile {func} + 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 + compile a function or method in a class. + {func} call 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. + +:disa[ssemble] profile {func} + Like `:disassemble` but with the instructions used for + profiling. + +:disa[ssemble] debug {func} + Like `:disassemble` but with the instructions used for + debugging. + +Limitations ~ + +Local variables will not be visible to string evaluation. For example: > + def MapList(): list + var list = ['aa', 'bb', 'cc', 'dd'] + return range(1, 2)->map('list[v:val]') + enddef + +The map argument is a string expression, which is evaluated without the +function scope. Instead, use a lambda: > + def MapList(): list + var list = ['aa', 'bb', 'cc', 'dd'] + return range(1, 2)->map((_, v) => list[v]) + enddef + +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` + enddef + +Closures defined in a loop will share the same context. For example: > + 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] +< *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 + enddef + + 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 + +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 + }) + } + 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. + + +Converting a function from legacy to Vim9 ~ + *convert_legacy_function_to_vim9* +These are the most changes that need to be made to convert a legacy function +to a Vim9 function: + +- 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 ". + + For example, a legacy function: > + func MyFunc(text) + " function body + endfunc +< Becomes: > + def MyFunc(text: string): number + # function body + enddef + +- 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' + ] + + +Calling a 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: > + vim9script + def MyFoldFunc(): any + ... compute fold level for line v:lnum + return level + enddef + set foldexpr=s:MyFoldFunc() + +============================================================================== + +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}> + job + channel + func + func: {type} + func({type}, ...) + func({type}, ...): {type} + void + +Not supported yet: + tuple + +These types can be used in declarations, but no simple value will actually +have the "void" type. Trying to use a void (e.g. a function without a +return value) results in error *E1031* *E1186* . + +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. + *vim9-func-declaration* *E1005* *E1007* +A partial and function can be declared in more or less specific ways: +func any kind of function reference, no type + checking for arguments or return value +func: void any number and type of arguments, no return + value +func: {type} any number and type of arguments with specific + return type + +func() function with no argument, does not return a + value +func(): void same +func(): {type} function with no argument and return type + +func({type}) function with argument type, does not return + a value +func({type}): {type} function with argument type and return type +func(?{type}) function with type of optional argument, does + not return a value +func(...list<{type}>) function with type of list for variable number + of arguments, does not return a value +func({type}, ?{type}, ...list<{type}>): {type} + function with: + - type of mandatory argument + - type of optional argument + - type of list for variable number of + arguments + - return type + +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. +{not implemented yet} + +And classes and interfaces can be used as types: > + :class MyClass + :var mine: MyClass + + :interface MyInterface + :var mine: MyInterface + + :class MyTemplate + :var mine: MyTemplate + :var mine: MyTemplate + + :class MyInterface + :var mine: MyInterface + :var mine: MyInterface +{not implemented yet} + + +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 +string to a number. + +If a type is given where it is not expected you can get *E1272* . + +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). + +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) + enddef + def Bar(x: bool, y: bool) + enddef + var funclist = [Foo, Bar] + echo funclist->typename() +Results in: + list + +For script-local variables in Vim9 script the type is checked, also when the +variable was declared in a legacy function. + +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 + +If the type is not declared then it is allowed to change: > + [1, 2, 3]->extend(['x']) # result: [1, 2, 3, 'x'] + +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 + + +Stricter 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.: > + echo 123 == '123' +< 1 ~ +With an accidental space: > + echo 123 == ' 123' +< 0 ~ + *E1206* *E1210* *E1212* +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* + +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. + +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* *E1238* *E1250* *E1251* *E1252* *E1256* + *E1297* *E1298* *E1301* +Types are checked for most builtin functions to make it easier to spot +mistakes. + +Categories of variables, defaults and null handling ~ + *variable-categories* *null-variables* +There are categories of variables: + primitive number, float, boolean + container string, blob, list, dict + 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|. + +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|. + +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: > + var j1: job + var j2: job = null_job + var j3 = null_job + +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. + + *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: > + vim9script + def F(arg: list = null_list) + if arg == null + echo "null" + else + echo printf("not null, %sempty", empty(arg) ? '' : 'not ') + endif + 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. + + *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 +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 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 d2: dict = {} == null_dict != null + +NOTE: the specialized variables, like job, default to null value and have no +corresponding empty value. + +============================================================================== + +5. Namespace, Import and Export + *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 +script is imported in another script, these exported items can then be used in +that script. All the other items remain script-local in the exporting script +and cannot be accessed by the importing script. + +This mechanism exists for writing a script that can be sourced (imported) by +other scripts, while making sure these other scripts only have access to what +you want them to. This also avoids using the global namespace, which has a +risk of name collisions. For example when you have two plugins with similar +functionality. + +You can cheat by using the global namespace explicitly. That should be done +only for things that really are global. + + +Namespace ~ + *vim9-namespace* +To recognize a file that can be imported the `vim9script` statement must +appear as the first statement in the file (see |vim9-mix| for an exception). +It tells Vim to interpret the script in its own namespace, instead of the +global namespace. If a file starts with: > + vim9script + var myvar = 'yes' +Then "myvar" will only exist in this file. While without `vim9script` it would +be available as `g:myvar` from any other script and function. + *E1101* +The variables at the file level are very much like the script-local "s:" +variables in legacy Vim script, but the "s:" is omitted. And they cannot be +deleted. + +In Vim9 script the global "g:" namespace can still be used as before. And the +"w:", "b:" and "t:" namespaces. These have in common that variables are not +declared, have no specific type and they can be deleted. *E1304* + +A side effect of `:vim9script` is that the 'cpoptions' option is set to the +Vim default value, like with: > + :set cpo&vim +One of the effects is that |line-continuation| is always enabled. +The original value of 'cpoptions' is restored at the end of the script, while +flags added or removed in the script are also added to or removed from the +original value to get the same effect. The order of flags may change. +In the |vimrc| file sourced on startup this does not happen. + + *vim9-mix* +There is one way to use both legacy and Vim9 syntax in one script file: > + " comments may go here + if !has('vim9script') + " legacy script commands go here + finish + endif + vim9script + # Vim9 script commands go here +This allows for writing a script that takes advantage of the Vim9 script +syntax if possible, but will also work on a Vim version without it. + +This can only work in two ways: +1. The "if" statement evaluates to false, the commands up to `endif` are + skipped and `vim9script` is then the first command actually executed. +2. The "if" statement evaluates to true, the commands up to `endif` are + executed and `finish` bails out before reaching `vim9script`. + + +Export ~ + *:export* *:exp* +Exporting an item can be written as: > + export const EXPORTED_CONST = 1234 + export var someValue = ... + export final someValue = ... + export const someValue = ... + export def MyFunc() ... + export class MyClass ... + export interface MyClass ... +< *E1043* *E1044* +As this suggests, only constants, variables, `:def` functions and classes can +be exported. + + *E1042* +`:export` can only be used in Vim9 script, at the script level. + + +Import ~ + *:import* *:imp* *E1094* *E1047* *E1262* + *E1048* *E1049* *E1053* *E1071* *E1088* *E1236* +The exported items can be imported in another script. The import syntax has +two forms. The simple form: > + import {filename} +< +Where {filename} is an expression that must evaluate to a string. In this +form the filename should end in ".vim" and the portion before ".vim" will +become the script local name of the namespace. For example: > + import "myscript.vim" +< +This makes each exported item in "myscript.vim" available as "myscript.item". + *:import-as* *E1257* *E1261* +In case the name is long or ambiguous, this form can be used to specify +another name: > + import {longfilename} as {name} +< +In this form {name} becomes a specific script local name for the imported +namespace. Therefore {name} must consist of letters, digits and '_', like +|internal-variables|. The {longfilename} expression must evaluate to any +filename. For example: > + import "thatscript.vim.v2" as that +< *E1060* *E1258* *E1259* *E1260* +Then you can use "that.item", etc. You are free to choose the name "that". +Use something that will be recognized as referring to the imported script. +Avoid command names, command modifiers and builtin function names, because the +name will shadow them. It's better not to start the name with a capital +letter, since it can then also shadow global user commands and functions. +Also, you cannot use the name for something else in the script, such as a +function or variable name. + +In case the dot in the name is undesired, a local reference can be made for a +function: > + var LongFunc = that.LongFuncName + +This also works for constants: > + const MAXLEN = that.MAX_LEN_OF_NAME + +This does not work for variables, since the value would be copied once and +when changing the variable the copy will change, not the original variable. +You will need to use the full name, with the dot. + +`:import` can not be used in a function. Imported items are intended to exist +at the script level and only imported once. + +The script name after `import` can be: +- A relative path, starting "." or "..". This finds a file relative to the + location of the script file itself. This is useful to split up a large + plugin into several files. +- An absolute path, starting with "/" on Unix or "D:/" on MS-Windows. This + will rarely be used. +- A path not being relative or absolute. This will be found in the + "import" subdirectories of 'runtimepath' entries. The name will usually be + longer and unique, to avoid loading the wrong file. + Note that "after/import" is not used. + +If the name does not end in ".vim" then the use of "as name" is required. + +Once a vim9 script file has been imported, the result is cached and used the +next time the same script is imported. It will not be read again. + +It is not allowed to import the same script twice, also when using two +different "as" names. + +When using the imported name the dot and the item name must be in the same +line, there can be no line break: > + echo that. + name # Error! + echo that + .name # Error! +< *import-map* +When you've imported a function from one script into a vim9 script you can +refer to the imported function in a mapping by prefixing it with ||: > + noremap ,a :call name.Function() + +When the mapping is defined "name." will be replaced with and the +script ID of the imported script. +An even simpler solution is using ||: > + noremap ,a name.Function() + +Note that this does not work for variables, only for functions. + + *import-legacy* *legacy-import* +`:import` can also be used in legacy Vim script. The imported namespace still +becomes script-local, even when the "s:" prefix is not given. For example: > + import "myfile.vim" + call s:myfile.MyFunc() + +And using the "as name" form: > + import "otherfile.vim9script" as that + call s:that.OtherFunc() + +However, the namespace cannot be resolved on its own: > + import "that.vim" + echo s:that + " ERROR: E1060: Expected dot after name: s:that +< +This also affects the use of || in the legacy mapping context. Since +|| is only a valid prefix for a function and NOT for a namespace, you +cannot use it to scope a function in a script local namespace. Instead of +prefixing the function with || you should use||. For example: +> + noremap ,a :call s:that.OtherFunc() +< + *:import-cycle* +The `import` commands are executed when encountered. If script A imports +script B, and B (directly or indirectly) imports A, this will be skipped over. +At this point items in A after "import B" will not have been processed and +defined yet. Therefore cyclic imports can exist and not result in an error +directly, but may result in an error for items in A after "import B" not being +defined. This does not apply to autoload imports, see the next section. + + +Importing an autoload script ~ + *vim9-autoload* *import-autoload* +For optimal startup speed, loading scripts should be postponed until they are +actually needed. Using the autoload mechanism is recommended: + *E1264* +1. In the plugin define user commands, functions and/or mappings that refer to + items imported from an autoload script. > + import autoload 'for/search.vim' + command -nargs=1 SearchForStuff search.Stuff() + +< This goes in .../plugin/anyname.vim. "anyname.vim" can be freely chosen. + The "SearchForStuff" command is now available to the user. + + The "autoload" argument to `:import` means that the script is not loaded + until one of the items is actually used. The script will be found under + the "autoload" directory in 'runtimepath' instead of the "import" + directory. Alternatively a relative or absolute name can be used, see + below. + +2. In the autoload script put the bulk of the code. > + vim9script + export def Stuff(arg: string) + ... + +< This goes in .../autoload/for/search.vim. + + Putting the "search.vim" script under the "/autoload/for/" directory has + the effect that "for#search#" will be prefixed to every exported item. The + prefix is obtained from the file name, as you would to manually in a + legacy autoload script. Thus the exported function can be found with + "for#search#Stuff", but you would normally use `import autoload` and not + use the prefix (which has the side effect of loading the autoload script + when compiling a function that encounters this name). + + You can split up the functionality and import other scripts from the + autoload script as you like. This way you can share code between plugins. + +Searching for the autoload script in all entries in 'runtimepath' can be a bit +slow. If the plugin knows where the script is located, quite often a relative +path can be used. This avoids the search and should be quite a bit faster. +Another advantage is that the script name does not need to be unique. An +absolute path is also possible. Examples: > + import autoload '../lib/implement.vim' + import autoload MyScriptsDir .. '/lib/implement.vim' + +For defining a mapping that uses the imported autoload script the special key +|| is useful. It allows for a command in a mapping to use the +script context of where the mapping was defined. + +When compiling a `:def` function and a function in an autoload script is +encountered, the script is not loaded until the `:def` function is called. +This also means you get any errors only at runtime, since the argument and +return types are not known yet. If you would use the name with '#' characters +then the autoload script IS loaded. + +Be careful to not refer to an item in an autoload script that does trigger +loading it unintentionally. For example, when setting an option that takes a +function name, make sure to use a string, not a function reference: > + import autoload 'qftf.vim' + &quickfixtextfunc = 'qftf.Func' # autoload script NOT loaded + &quickfixtextfunc = qftf.Func # autoload script IS loaded +On the other hand, it can be useful to load the script early, at a time when +any errors should be given. + +For testing the |test_override()| function can be used to have the +`import autoload` load the script right away, so that the items and types can +be checked without waiting for them to be actually used: > + test_override('autoload', 1) +Reset it later with: > + test_override('autoload', 0) +Or: > + test_override('ALL', 0) + + +============================================================================== + +6. Classes and interfaces *vim9-classes* + +In legacy script a Dictionary could be used as a kind-of object, by adding +members that are functions. However, this is quite inefficient and requires +the writer to do the work of making sure all the objects have the right +members. See |Dictionary-function|. + +In |Vim9| script you can have classes, objects and interfaces like in most +popular object-oriented programming languages. Since this is a lot of +functionality it is located in a separate help file: |vim9class.txt|. + + +============================================================================== + +9. Rationale *vim9-rationale* + +The :def command ~ + +Plugin writers have asked for much faster Vim script. Investigations have +shown that keeping the existing semantics of function calls make this close to +impossible, because of the overhead involved with calling a function, setting +up the local function scope and executing lines. There are many details that +need to be handled, such as error messages and exceptions. The need to create +a dictionary for a: and l: scopes, the a:000 list and several others add too +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. + +Using "def" to define a function comes from Python. Other languages use +"function" which clashes with legacy Vim script. + + +Type checking ~ + +When compiling lines of Vim commands into instructions as much as possible +should be done at compile time. Postponing it to runtime makes the execution +slower and means mistakes are found only later. For example, when +encountering the "+" character and compiling this into a generic add +instruction, at runtime the instruction would have to inspect the type of the +arguments and decide what kind of addition to do. And when the type is +dictionary throw an error. If the types are known to be numbers then an "add +number" instruction can be used, which is faster. The error can be given at +compile time, no error handling is needed at runtime, since adding two numbers +cannot fail. + +The syntax for types, using for compound types, is similar to Java. It +is easy to understand and widely used. The type names are what were used in +Vim before, with some additions such as "void" and "bool". + + +Removing clutter and weirdness ~ + +Once decided that `:def` functions have different syntax than legacy functions, +we are free to add improvements to make the code more familiar for users who +know popular programming languages. In other words: remove weird things that +only Vim does. + +We can also remove clutter, mainly things that were done to make Vim script +backwards compatible with the good old Vi commands. + +Examples: +- Drop `:call` for calling a function and `:eval` for evaluating an + expression. +- Drop using a leading backslash for line continuation, automatically figure + out where an expression ends. + +However, this does require that some things need to change: +- Comments start with # instead of ", to avoid confusing them with strings. + This is good anyway, it is also used by several popular languages. +- Ex command ranges need to be prefixed with a colon, to avoid confusion with + expressions (single quote can be a string or a mark, "/" can be divide or a + search command, etc.). + +Goal is to limit the differences. A good criteria is that when the old syntax +is accidentally used you are very likely to get an error message. + + +Syntax and semantics from popular languages ~ + +Script writers have complained that the Vim script syntax is unexpectedly +different from what they are used to. To reduce this complaint popular +languages are used as an example. At the same time, we do not want to abandon +the well-known parts of legacy Vim script. + +For many things TypeScript is followed. It's a recent language that is +gaining popularity and has similarities with Vim script. It also has a +mix of static typing (a variable always has a known value type) and dynamic +typing (a variable can have different types, this changes at runtime). Since +legacy Vim script is dynamically typed and a lot of existing functionality +(esp. builtin functions) depends on that, while static typing allows for much +faster execution, we need to have this mix in Vim9 script. + +There is no intention to completely match TypeScript syntax and semantics. We +just want to take those parts that we can use for Vim and we expect Vim users +will be happy with. TypeScript is a complex language with its own history, +advantages and disadvantages. To get an idea of the disadvantages read the +book: "JavaScript: The Good Parts". Or find the article "TypeScript: the good +parts" and read the "Things to avoid" section. + +People familiar with other languages (Java, Python, etc.) will also find +things in TypeScript that they do not like or do not understand. We'll try to +avoid those things. + +Specific items from TypeScript we avoid: +- Overloading "+", using it both for addition and string concatenation. This + goes against legacy Vim script and often leads to mistakes. For that reason + we will keep using ".." for string concatenation. Lua also uses ".." this + way. And it allows for conversion to string for more values. +- TypeScript can use an expression like "99 || 'yes'" in a condition, but + cannot assign the value to a boolean. That is inconsistent and can be + annoying. Vim recognizes an expression with && or || and allows using the + result as a bool. The |falsy-operator| was added for the mechanism to use a + default value. +- TypeScript considers an empty string as Falsy, but an empty list or dict as + Truthy. That is inconsistent. In Vim an empty list and dict are also + Falsy. +- TypeScript has various "Readonly" types, which have limited usefulness, + since a type cast can remove the immutable nature. Vim locks the value, + which is more flexible, but is only checked at runtime. +- TypeScript has a complicated "import" statement that does not match how the + Vim import mechanism works. A much simpler mechanism is used instead, which + matches that the imported script is only sourced once. + + +Declarations ~ + +Legacy Vim script uses `:let` for every assignment, while in Vim9 declarations +are used. That is different, thus it's good to use a different command: +`:var`. This is used in many languages. The semantics might be slightly +different, but it's easily recognized as a declaration. + +Using `:const` for constants is common, but the semantics varies. Some +languages only make the variable immutable, others also make the value +immutable. Since "final" is well known from Java for only making the variable +immutable we decided to use that. And then `:const` can be used for making +both immutable. This was also used in legacy Vim script and the meaning is +almost the same. + +What we end up with is very similar to Dart: > + :var name # mutable variable and value + :final name # immutable variable, mutable value + :const name # immutable variable and value + +Since legacy and Vim9 script will be mixed and global variables will be +shared, optional type checking is desirable. Also, type inference will avoid +the need for specifying the type in many cases. The TypeScript syntax fits +best for adding types to declarations: > + var name: string # string type is specified + ... + name = 'John' + const greeting = 'hello' # string type is inferred + +This is how we put types in a declaration: > + var mylist: list + final mylist: list = ['foo'] + def Func(arg1: number, arg2: string): bool + +Two alternatives were considered: +1. Put the type before the name, like Dart: > + var list mylist + final list mylist = ['foo'] + def Func(number arg1, string arg2) bool +2. Put the type after the variable name, but do not use a colon, like Go: > + var mylist list + final mylist list = ['foo'] + def Func(arg1 number, arg2 string) bool + +The first is more familiar for anyone used to C or Java. The second one +doesn't really have an advantage over the first, so let's discard the second. + +Since we use type inference the type can be left out when it can be inferred +from the value. This means that after `var` we don't know if a type or a name +follows. That makes parsing harder, not only for Vim but also for humans. +Also, it will not be allowed to use a variable name that could be a type name, +using `var string string` is too confusing. + +The chosen syntax, using a colon to separate the name from the type, adds +punctuation, but it actually makes it easier to recognize the parts of a +declaration. + + +Expressions ~ + +Expression evaluation was already close to what other languages are doing. +Some details are unexpected and can be improved. For example a boolean +condition would accept a string, convert it to a number and check if the +number is non-zero. This is unexpected and often leads to mistakes, since +text not starting with a number would be converted to zero, which is +considered false. Thus using a string for a condition would often not give an +error and be considered false. That is confusing. + +In Vim9 type checking is stricter to avoid mistakes. Where a condition is +used, e.g. with the `:if` command and the `||` operator, only boolean-like +values are accepted: + true: `true`, `v:true`, `1`, `0 < 9` + false: `false`, `v:false`, `0`, `0 > 9` +Note that the number zero is false and the number one is true. This is more +permissive than most other languages. It was done because many builtin +functions return these values, and changing that causes more problems than it +solves. After using this for a while it turned out to work well. + +If you have any type of value and want to use it as a boolean, use the `!!` +operator: + true: `!!'text'` `!![99]` `!!{'x': 1}` `!!99` + false: `!!''` `!![]` `!!{}` + +From a language like JavaScript we have this handy construct: > + GetName() || 'unknown' +However, this conflicts with only allowing a boolean for a condition. +Therefore the "??" operator was added: > + GetName() ?? 'unknown' +Here you can explicitly express your intention to use the value as-is and not +result in a boolean. This is called the |falsy-operator|. + + +Import and Export ~ + +A problem of legacy Vim script is that by default all functions and variables +are global. It is possible to make them script-local, but then they are not +available in other scripts. This defies the concept of a package that only +exports selected items and keeps the rest local. + +In Vim9 script a mechanism very similar to the JavaScript import and export +mechanism is supported. It is a variant to the existing `:source` command +that works like one would expect: +- Instead of making everything global by default, everything is script-local, + some of these are exported. +- When importing a script the symbols that are imported are explicitly listed, + avoiding name conflicts and failures if functionality is added later. +- The mechanism allows for writing a big, long script with a very clear API: + the exported functions, variables and classes. +- By using relative paths loading can be much faster for an import inside of a + package, no need to search many directories. +- Once an import has been used, its items are cached and loading it again is + not needed. +- The Vim-specific use of "s:" to make things script-local can be dropped. + +When sourcing a Vim9 script (from a Vim9 or legacy script), only the items +defined globally can be used, not the exported items. Alternatives +considered: +- All the exported items become available as script-local items. This makes + it uncontrollable what items get defined and likely soon leads to trouble. +- Use the exported items and make them global. Disadvantage is that it's then + not possible to avoid name clashes in the global namespace. +- Completely disallow sourcing a Vim9 script, require using `:import`. That + makes it difficult to use scripts for testing, or sourcing them from the + command line to try them out. +Note that you CAN also use `:import` in legacy Vim script, see above. + + +Compiling functions early ~ + +Functions are compiled when called or when `:defcompile` is used. Why not +compile them early, so that syntax and type errors are reported early? + +The functions can't be compiled right away when encountered, because there may +be forward references to functions defined later. Consider defining functions +A, B and C, where A calls B, B calls C, and C calls A again. It's impossible +to reorder the functions to avoid forward references. + +An alternative would be to first scan through the file to locate items and +figure out their type, so that forward references are found, and only then +execute the script and compile the functions. This means the script has to be +parsed twice, which is slower, and some conditions at the script level, such +as checking if a feature is supported, are hard to use. An attempt was made +to see if it works, but it turned out to be impossible to make work well. + +It would be possible to compile all the functions at the end of the script. +The drawback is that if a function never gets called, the overhead of +compiling it counts anyway. Since startup speed is very important, in most +cases it's better to do it later and accept that syntax and type errors are +only reported then. In case these errors should be found early, e.g. when +testing, a `:defcompile` command at the end of the script will help out. + + +Why not use an existing embedded language? ~ + +Vim supports interfaces to Perl, Python, Lua, Tcl and a few others. But +these interfaces have never become widely used, for various reasons. When +Vim9 was designed a decision was made to make these interfaces lower priority +and concentrate on Vim script. + +Still, plugin writers may find other languages more familiar, want to use +existing libraries or see a performance benefit. We encourage plugin authors +to write code in any language and run it as an external process, using jobs +and channels. We can try to make this easier somehow. + +Using an external tool also has disadvantages. An alternative is to convert +the tool into Vim script. For that to be possible without too much +translation, and keeping the code fast at the same time, the constructs of the +tool need to be supported. Since most languages support classes the lack of +support for classes in Vim is then a problem. + + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt new file mode 100644 index 0000000..6e94e84 --- /dev/null +++ b/runtime/doc/vim9class.txt @@ -0,0 +1,1170 @@ +*vim9class.txt* For Vim version 9.1. Last change: 2024 Jan 06 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Vim9 classes, objects, interfaces, types and enums. *vim9-class* + +1. Overview |Vim9-class-overview| +2. A simple class |Vim9-simple-class| +3. Class variables and methods |Vim9-class-member| +4. Using an abstract class |Vim9-abstract-class| +5. Using an interface |Vim9-using-interface| +6. More class details |Vim9-class| +7. Type definition |Vim9-type| +8. Enum |Vim9-enum| + +9. Rationale +10. To be done later + +============================================================================== + +1. Overview *Vim9-class-overview* + +The fancy term is "object-oriented programming". You can find lots of study +material on this subject. Here we document what |Vim9| script provides, +assuming you know the basics already. Added are helpful hints about how to +use this functionality effectively. Vim9 classes and objects cannot be used +in legacy Vim scripts and legacy functions. + +The basic item is an object: +- An object stores state. It contains one or more variables that can each + have a value. +- An object provides functions that use and manipulate its state. These + functions are invoked "on the object", which is what sets it apart from the + traditional separation of data and code that manipulates the data. +- An object has a well defined interface, with typed member variables and + methods. +- Objects are created from a class and all objects have the same interface. + This does not change at runtime, it is not dynamic. + +An object can only be created by a class. A class provides: +- A new() method, the constructor, which returns an object for the class. + This method is invoked on the class name: MyClass.new(). +- State shared by all objects of the class: class variables (class members). +- A hierarchy of classes, with super-classes and sub-classes, inheritance. + +An interface is used to specify properties of an object: +- An object can declare several interfaces that it implements. +- Different objects implementing the same interface can be used the same way. + +The class hierarchy allows for single inheritance. Otherwise interfaces are +to be used where needed. + + +Class modeling ~ + +You can model classes any way you like. Keep in mind what you are building, +don't try to model the real world. This can be confusing, especially because +teachers use real-world objects to explain class relations and you might think +your model should therefore reflect the real world. It doesn't! The model +should match your purpose. + +Keep in mind that composition (an object contains other objects) is often +better than inheritance (an object extends another object). Don't waste time +trying to find the optimal class model. Or waste time discussing whether a +square is a rectangle or that a rectangle is a square. It doesn't matter. + + +============================================================================== + +2. A simple class *Vim9-simple-class* + +Let's start with a simple example: a class that stores a text position (see +below for how to do this more efficiently): > + + class TextPosition + var lnum: number + var col: number + + def new(lnum: number, col: number) + this.lnum = lnum + this.col = col + enddef + + def SetLnum(lnum: number) + this.lnum = lnum + enddef + + def SetCol(col: number) + this.col = col + enddef + + def SetPosition(lnum: number, col: number) + this.lnum = lnum + this.col = col + enddef + endclass +< *object* *Object* +You can create an object from this class with the new() method: > + + var pos = TextPosition.new(1, 1) +< +The object variables "lnum" and "col" can be accessed directly: > + + echo $'The text position is ({pos.lnum}, {pos.col})' +< *E1317* *E1327* *:this* +If you have been using other object-oriented languages you will notice that in +Vim, within a class definition, the declared object members are consistently +referred to with the "this." prefix. This is different from languages like +Java and TypeScript. The naming convention makes the object members easy to +spot. Also, when a variable does not have the "this." prefix you know it is +not an object variable. + *E1411* +From outside the class definition, access an object's methods and variables by +using the object name followed by a dot following by the member: > + + pos.lnum + pos.SetCol(10) +< + *E1405* *E1406* +A class name cannot be used as an expression. A class name cannot be used in +the left-hand-side of an assignment. + + +Object variable write access ~ + *read-only-variable* +Now try to change an object variable directly: > + + pos.lnum = 9 +< *E1335* +This will give you an error! That is because by default object variables can +be read but not set. That's why the TextPosition class provides a method for +it: > + + pos.SetLnum(9) + +Allowing to read but not set an object variable is the most common and safest +way. Most often there is no problem using a value, while setting a value may +have side effects that need to be taken care of. In this case, the SetLnum() +method could check if the line number is valid and either give an error or use +the closest valid value. + *:public* *public-variable* *E1331* +If you don't care about side effects and want to allow the object variable to +be changed at any time, you can make it public: > + + public var lnum: number + public var col: number + +Now you don't need the SetLnum(), SetCol() and SetPosition() methods, setting +"pos.lnum" directly above will no longer give an error. + *E1326* +If you try to set an object variable that doesn't exist you get an error: > + pos.other = 9 +< E1326: Member not found on object "TextPosition": other ~ + + *E1376* +A object variable cannot be accessed using the class name. + +Protected variables ~ + *protected-variable* *E1332* *E1333* +On the other hand, if you do not want the object variables to be read directly +from outside the class or its sub-classes, you can make them protected. This +is done by prefixing an underscore to the name: > + + var _lnum: number + var _col: number + +Now you need to provide methods to get the value of the protected variables. +These are commonly called getters. We recommend using a name that starts with +"Get": > + + def GetLnum(): number + return this._lnum + enddef + + def GetCol(): number + return this._col + enddef + +This example isn't very useful, the variables might as well have been public. +It does become useful if you check the value. For example, restrict the line +number to the total number of lines: > + + def GetLnum(): number + if this._lnum > this._lineCount + return this._lineCount + endif + return this._lnum + enddef +< +Protected methods ~ + *protected-method* *E1366* +If you want object methods to be accessible only from other methods of the +same class and not used from outside the class, then you can make them +protected. This is done by prefixing the method name with an underscore: > + + class SomeClass + def _Foo(): number + return 10 + enddef + def Bar(): number + return this._Foo() + enddef + endclass +< +Accessing a protected method outside the class will result in an error (using +the above class): > + + var a = SomeClass.new() + a._Foo() +< +Simplifying the new() method ~ + *new()* *constructor* +See also |default-constructor| and |multiple-constructors|. + +Many constructors take values for the object variables. Thus you very often +see this pattern: > + + class SomeClass + var lnum: number + var col: number + + def new(lnum: number, col: number) + this.lnum = lnum + this.col = col + enddef + endclass +< + *E1390* +Not only is this text you need to write, it also has the type of each +variable twice. Since this is so common a shorter way to write new() is +provided: > + + def new(this.lnum, this.col) + enddef + +The semantics are easy to understand: Providing the object variable name, +including "this.", as the argument to new() means the value provided in the +new() call is assigned to that object variable. This mechanism comes from the +Dart language. + +Putting together this way of using new() and making the variables public +results in a much shorter class definition than what we started with: > + + class TextPosition + public var lnum: number + public var col: number + + def new(this.lnum, this.col) + enddef + + def SetPosition(lnum: number, col: number) + this.lnum = lnum + this.col = col + enddef + endclass + +The sequence of constructing a new object is: +1. Memory is allocated and cleared. All values are zero/false/empty. +2. For each declared object variable that has an initializer, the expression + is evaluated and assigned to the variable. This happens in the sequence + the variables are declared in the class. +3. Arguments in the new() method in the "this.name" form are assigned. +4. The body of the new() method is executed. + +If the class extends a parent class, the same thing happens. In the second +step the object variables of the parent class are initialized first. There is +no need to call "super()" or "new()" on the parent. + + *E1365* +When defining the new() method the return type should not be specified. It +always returns an object of the class. + + *E1386* +When invoking an object method, the method name should be preceded by the +object variable name. An object method cannot be invoked using the class +name. + +============================================================================== + +3. Class Variables and Methods *Vim9-class-member* + + *:static* *E1337* *E1338* *E1368* +Class members are declared with "static". They are used by the name without a +prefix in the class where they are defined: > + + class OtherThing + var size: number + static var totalSize: number + + def new(this.size) + totalSize += this.size + enddef + endclass +< *E1340* *E1341* +Since the name is used as-is, shadowing the name by a method argument name +or local variable name is not allowed. + + *E1374* *E1375* *E1384* *E1385* +To access a class member outside of the class where it is defined, the class +name prefix must be used. A class member cannot be accessed using an object. + +Just like object members the access can be made protected by using an +underscore as the first character in the name, and it can be made public by +prefixing "public": > + + class OtherThing + static var total: number # anybody can read, only class can write + static var _sum: number # only class can read and write + public static var result: number # anybody can read and write + endclass +< + *class-method* +Class methods are also declared with "static". They can use the class +variables but they have no access to the object variables, they cannot use the +"this" keyword: +> + class OtherThing + var size: number + static var totalSize: number + + # Clear the total size and return the value it had before. + static def ClearTotalSize(): number + var prev = totalSize + totalSize = 0 + return prev + enddef + endclass + +Inside the class the class method can be called by name directly, outside the +class the class name must be prefixed: `OtherThing.ClearTotalSize()`. To use +a class method from a parent class in a child class, the class name must be +prefixed. + +Just like object methods the access can be made protected by using an +underscore as the first character in the method name: > + + class OtherThing + static def _Foo() + echo "Foo" + enddef + def Bar() + _Foo() + enddef + endclass +< + *E1370* +Note that constructors cannot be declared as "static". They are called like a +static but execute as an object method; they have access to "this". + +To access the class methods and class variables of a super class in an +extended class, the class name prefix should be used just as from anywhere +outside of the defining class: > + + vim9script + class Vehicle + static var nextID: number = 1000 + static def GetID(): number + nextID += 1 + return nextID + enddef + endclass + class Car extends Vehicle + var myID: number + def new() + this.myID = Vehicle.GetID() + enddef + endclass +< +Class variables and methods are not inherited by a child class. A child class +can declare a static variable or a method with the same name as the one in the +super class. Depending on the class where the member is used the +corresponding class member will be used. The type of the class member in a +child class can be different from that in the super class. + +The double underscore (__) prefix for a class or object method name is +reserved for future use. + + *object-final-variable* *E1409* +The |:final| keyword can be used to make a class or object variable a +constant. Examples: > + + class A + final v1 = [1, 2] # final object variable + public final v2 = {x: 1} # final object variable + static final v3 = 'abc' # final class variable + public static final v4 = 0z10 # final class variable + endclass +< +A final variable can be changed only from a constructor function. Example: > + + class A + final v1: list + def new() + this.v1 = [1, 2] + enddef + endclass + var a = A.new() + echo a.v1 +< +Note that the value of a final variable can be changed. Example: > + + class A + public final v1 = [1, 2] + endclass + var a = A.new() + a.v1[0] = 6 # OK + a.v1->add(3) # OK + a.v1 = [3, 4] # Error +< + *E1408* +Final variables are not supported in an interface. A class or object method +cannot be final. + + *object-const-variable* +The |:const| keyword can be used to make a class or object variable and the +value a constant. Examples: > + + class A + const v1 = [1, 2] # const object variable + public const v2 = {x: 1} # const object variable + static const v3 = 'abc' # const class variable + public static const v4 = 0z10 # const class variable + endclass +< +A const variable can be changed only from a constructor function. Example: > + + class A + const v1: list + def new() + this.v1 = [1, 2] + enddef + endclass + var a = A.new() + echo a.v1 +< +A const variable and its value cannot be changed. Example: > + + class A + public const v1 = [1, 2] + endclass + var a = A.new() + a.v1[0] = 6 # Error + a.v1->add(3) # Error + a.v1 = [3, 4] # Error +< + *E1410* +Const variables are not supported in an interface. A class or object method +cannot be a const. + +============================================================================== + +4. Using an abstract class *Vim9-abstract-class* + +An abstract class forms the base for at least one sub-class. In the class +model one often finds that a few classes have the same properties that can be +shared, but a class with these properties does not have enough state to create +an object from. A sub-class must extend the abstract class and add the +missing state and/or methods before it can be used to create objects for. + +For example, a Shape class could store a color and thickness. You cannot +create a Shape object, it is missing the information about what kind of shape +it is. The Shape class functions as the base for a Square and a Triangle +class, for which objects can be created. Example: > + + abstract class Shape + var color = Color.Black + var thickness = 10 + endclass + + class Square extends Shape + var size: number + + def new(this.size) + enddef + endclass + + class Triangle extends Shape + var base: number + var height: number + + def new(this.base, this.height) + enddef + endclass +< +An abstract class is defined the same way as a normal class, except that it +does not have any new() method. *E1359* + + *abstract-method* *E1371* *E1372* +An abstract method can be defined in an abstract class by using the "abstract" +prefix when defining the method: > + + abstract class Shape + abstract def Draw() + endclass +< +A static method in an abstract class cannot be an abstract method. + + *E1373* +A non-abstract class extending the abstract class must implement all the +abstract methods. The signature (arguments, argument types and return type) +must be exactly the same. If the return type of a method is a class, then +that class or one of its subclasses can be used in the extended method. + +============================================================================== + +5. Using an interface *Vim9-using-interface* + +The example above with Shape, Square and Triangle can be made more useful if +we add a method to compute the surface of the object. For that we create the +interface called HasSurface, which specifies one method Surface() that returns +a number. This example extends the one above: > + + abstract class Shape + var color = Color.Black + var thickness = 10 + endclass + + interface HasSurface + def Surface(): number + endinterface + + class Square extends Shape implements HasSurface + var size: number + + def new(this.size) + enddef + + def Surface(): number + return this.size * this.size + enddef + endclass + + class Triangle extends Shape implements HasSurface + var base: number + var height: number + + def new(this.base, this.height) + enddef + + def Surface(): number + return this.base * this.height / 2 + enddef + endclass +< + *E1348* *E1349* *E1367* *E1382* *E1383* +If a class declares to implement an interface, all the items specified in the +interface must appear in the class, with the same types. + +The interface name can be used as a type: > + + var shapes: list = [ + Square.new(12), + Triangle.new(8, 15), + ] + for shape in shapes + echo $'the surface is {shape.Surface()}' + endfor +< + *E1378* *E1379* *E1380* *E1387* +An interface can contain only object methods and read-only object variables. +An interface cannot contain read-write or protected object variables, +protected object methods, class variables and class methods. + +An interface can extend another interface using "extends". The sub-interface +inherits all the instance variables and methods from the super interface. + +============================================================================== + +6. More class details *Vim9-class* *Class* *class* + +Defining a class ~ + *:class* *:endclass* *:abstract* +A class is defined between `:class` and `:endclass`. The whole class is +defined in one script file. It is not possible to add to a class later. + +A class can only be defined in a |Vim9| script file. *E1316* +A class cannot be defined inside a function. + +It is possible to define more than one class in a script file. Although it +usually is better to export only one main class. It can be useful to define +types, enums and helper classes though. + +The `:abstract` keyword may be prefixed and `:export` may be used. That gives +these variants: > + + class ClassName + endclass + + export class ClassName + endclass + + abstract class ClassName + endclass + + export abstract class ClassName + endclass +< + *E1314* +The class name should be CamelCased. It must start with an uppercase letter. +That avoids clashing with builtin types. + *E1315* +After the class name these optional items can be used. Each can appear only +once. They can appear in any order, although this order is recommended: > + extends ClassName + implements InterfaceName, OtherInterface + specifies SomeInterface +< *E1355* *E1369* +Each variable and method name can be used only once. It is not possible to +define a method with the same name and different type of arguments. It is not +possible to use a public and protected member variable with the same name. An +object variable name used in a super class cannot be reused in a child class. + + +Object Variable Initialization ~ + +If the type of a variable is not explicitly specified in a class, then it is +set to "any" during class definition. When an object is instantiated from the +class, then the type of the variable is set. + +The following reserved keyword names cannot be used as an object or class +variable name: "super", "this", "true", "false", "null", "null_blob", +"null_dict", "null_function", "null_list", "null_partial", "null_string", +"null_channel" and "null_job". + +Extending a class ~ + *extends* +A class can extend one other class. *E1352* *E1353* *E1354* +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). + + *E1356* *E1357* *E1358* +Object methods of the base class can be overruled. The signature (arguments, +argument types and return type) must be exactly the same. If the return type +of a method is a class, then that class or one of its subclasses can be used +in the extended method. The method of the base class can be called by +prefixing "super.". + + *E1377* +The access level of a method (public or protected) in a child class should be +the same as the super class. + +Other object methods of the base class are taken over by the child class. + +Class methods, including methods starting with "new", can be overruled, like +with object methods. The method on the base class can be called by prefixing +the name of the class (for class methods) or "super.". + +Unlike other languages, the constructor of the base class does not need to be +invoked. In fact, it cannot be invoked. If some initialization from the base +class also needs to be done in a child class, put it in an object method and +call that method from every constructor(). + +If the base class did not specify a new() method then one was automatically +created. This method will not be taken over by the child class. The child +class can define its own new() method, or, if there isn't one, a new() method +will be added automatically. + + +A class implementing an interface ~ + *implements* *E1346* *E1347* *E1389* +A class can implement one or more interfaces. The "implements" keyword can +only appear once *E1350* . Multiple interfaces can be specified, separated by +commas. Each interface name can appear only once. *E1351* + + +A class defining an interface ~ + *specifies* +A class can declare its interface, the object variables and methods, with a +named interface. This avoids the need for separately specifying the +interface, which is often done in many languages, especially Java. + + +Items in a class ~ + *E1318* *E1325* *E1388* +Inside a class, in between `:class` and `:endclass`, these items can appear: +- An object variable declaration: > + var _protectedVariableName: memberType + var readonlyVariableName: memberType + public var readwriteVariableName: memberType +- A class variable declaration: > + static var _protectedClassVariableName: memberType + static var readonlyClassVariableName: memberType + public static var readwriteClassVariableName: memberType +- A constructor method: > + def new(arguments) + def newName(arguments) +- A class method: > + static def SomeMethod(arguments) + static def _ProtectedMethod(arguments) +- An object method: > + def SomeMethod(arguments) + def _ProtectedMethod(arguments) + +For the object variable the type must be specified. The best way is to do +this explicitly with ": {type}". For simple types you can also use an +initializer, such as "= 123", and Vim will see that the type is a number. +Avoid doing this for more complex types and when the type will be incomplete. +For example: > + var nameList = [] +This specifies a list, but the item type is unknown. Better use: > + var nameList: list +The initialization isn't needed, the list is empty by default. + *E1330* +Some types cannot be used, such as "void", "null" and "v:none". + + +Defining an interface ~ + *Interface* *:interface* *:endinterface* +An interface is defined between `:interface` and `:endinterface`. It may be +prefixed with `:export`: > + + interface InterfaceName + endinterface + + export interface InterfaceName + endinterface +< *E1344* +An interface can declare object variables, just like in a class but without +any initializer. + *E1345* +An interface can declare methods with `:def`, including the arguments and +return type, but without the body and without `:enddef`. Example: > + + interface HasSurface + var size: number + def Surface(): number + endinterface + +An interface name must start with an uppercase letter. *E1343* +The "Has" prefix can be used to make it easier to guess this is an interface +name, with a hint about what it provides. +An interface can only be defined in a |Vim9| script file. *E1342* +An interface cannot "implement" another interface but it can "extend" another +interface. *E1381* + + +null object ~ + +When a variable is declared to have the type of an object, but it is not +initialized, the value is null. When trying to use this null object Vim often +does not know what class was supposed to be used. Vim then cannot check if +a variable name is correct and you will get a "Using a null object" error, +even when the variable name is invalid. *E1360* *E1362* + + +Default constructor ~ + *default-constructor* +In case you define a class without a new() method, one will be automatically +defined. This default constructor will have arguments for all the object +variables, in the order they were specified. Thus if your class looks like: > + + class AutoNew + var name: string + var age: number + var gender: Gender + endclass + +Then the default constructor will be: > + + def new(this.name = v:none, this.age = v:none, this.gender = v:none) + enddef + +The "= v:none" default values make the arguments optional. Thus you can also +call `new()` without any arguments. No assignment will happen and the default +value for the object variables will be used. This is a more useful example, +with default values: > + + class TextPosition + var lnum: number = 1 + var col: number = 1 + endclass + +If you want the constructor to have mandatory arguments, you need to write it +yourself. For example, if for the AutoNew class above you insist on getting +the name, you can define the constructor like this: > + + def new(this.name, this.age = v:none, this.gender = v:none) + enddef +< +When using the default new() method, if the order of the object variables in +the class is changed later, then all the callers of the default new() method +need to change. To avoid this, the new() method can be explicitly defined +without any arguments. + + *E1328* +Note that you cannot use another default value than "v:none" here. If you +want to initialize the object variables, do it where they are declared. This +way you only need to look in one place for the default values. + +All object variables will be used in the default constructor, including +protected access ones. + +If the class extends another one, the object variables of that class will come +first. + + +Multiple constructors ~ + *multiple-constructors* +Normally a class has just one new() constructor. In case you find that the +constructor is often called with the same arguments you may want to simplify +your code by putting those arguments into a second constructor method. For +example, if you tend to use the color black a lot: > + + def new(this.garment, this.color, this.size) + enddef + ... + var pants = new(Garment.pants, Color.black, "XL") + var shirt = new(Garment.shirt, Color.black, "XL") + var shoes = new(Garment.shoes, Color.black, "45") + +Instead of repeating the color every time you can add a constructor that +includes it: > + + def newBlack(this.garment, this.size) + this.color = Color.black + enddef + ... + var pants = newBlack(Garment.pants, "XL") + var shirt = newBlack(Garment.shirt, "XL") + var shoes = newBlack(Garment.shoes, "9.5") + +Note that the method name must start with "new". If there is no method called +"new()" then the default constructor is added, even though there are other +constructor methods. + + +============================================================================== + +7. Type definition *typealias* *Vim9-type* *:type* + + *E1393* *E1395* *E1396* *E1397* *E1398* +A type definition is giving a name to a type specification. This is also +known as a "type alias". The type alias can be used wherever a built-in type +can be used. Example: > + + type ListOfStrings = list + var s: ListOfStrings = ['a', 'b'] + + def ProcessStr(str: ListOfStrings): ListOfStrings + return str + enddef + echo ProcessStr(s) +< + *E1394* +A type alias name must start with an upper case character. Only existing +types can be aliased. + + *E1399* +A type alias can be created only at the script level and not inside a +function. A type alias can be exported and used across scripts. + + *E1400* *E1401* *E1402* *E1403* *E1407* +A type alias cannot be used as an expression. A type alias cannot be used in +the left-hand-side of an assignment. + +For a type alias name, the |typename()| function returns the type that is +aliased: > + + type ListOfStudents = list> + echo typename(ListOfStudents) + typealias>> +< +============================================================================== + +8. Enum *Vim9-enum* *:enum* *:endenum* + +{not implemented yet} + +An enum is a type that can have one of a list of values. Example: > + + :enum Color + White + Red + Green + Blue + Black + :endenum + + +============================================================================== + +9. Rationale + +Most of the choices for |Vim9| classes come from popular and recently +developed languages, such as Java, TypeScript and Dart. The syntax has been +made to fit with the way Vim script works, such as using `endclass` instead of +using curly braces around the whole class. + +Some common constructs of object-oriented languages were chosen very long ago +when this kind of programming was still new, and later found to be +sub-optimal. By this time those constructs were widely used and changing them +was not an option. In Vim we do have the freedom to make different choices, +since classes are completely new. We can make the syntax simpler and more +consistent than what "old" languages use. Without diverting too much, it +should still mostly look like what you know from existing languages. + +Some recently developed languages add all kinds of fancy features that we +don't need for Vim. But some have nice ideas that we do want to use. +Thus we end up with a base of what is common in popular languages, dropping +what looks like a bad idea, and adding some nice features that are easy to +understand. + +The main rules we use to make decisions: +- Keep it simple. +- No surprises, mostly do what other languages are doing. +- Avoid mistakes from the past. +- Avoid the need for the script writer to consult the help to understand how + things work, most things should be obvious. +- Keep it consistent. +- Aim at an average size plugin, not at a huge project. + + +Using new() for the constructor ~ + +Many languages use the class name for the constructor method. A disadvantage +is that quite often this is a long name. And when changing the class name all +constructor methods need to be renamed. Not a big deal, but still a +disadvantage. + +Other languages, such as TypeScript, use a specific name, such as +"constructor()". That seems better. However, using "new" or "new()" to +create a new object has no obvious relation with "constructor()". + +For |Vim9| script using the same method name for all constructors seemed like +the right choice, and by calling it new() the relation between the caller and +the method being called is obvious. + + +No overloading of the constructor ~ + +In Vim script, both legacy and |Vim9| script, there is no overloading of +methods. That means it is not possible to use the same method name with +different types of arguments. Therefore there also is only one new() +constructor. + +With |Vim9| script it would be possible to support overloading, since +arguments are typed. However, this gets complicated very quickly. Looking at +a new() call one has to inspect the types of the arguments to know which of +several new() methods is actually being called. And that can require +inspecting quite a bit of code. For example, if one of the arguments is the +return value of a method, you need to find that method to see what type it is +returning. + +Instead, every constructor has to have a different name, starting with "new". +That way multiple constructors with different arguments are possible, while it +is very easy to see which constructor is being used. And the type of +arguments can be properly checked. + + +No overloading of methods ~ + +Same reasoning as for the constructor: It is often not obvious what type +arguments have, which would make it difficult to figure out what method is +actually being called. Better just give the methods a different name, then +type checking will make sure it works as you intended. This rules out +polymorphism, which we don't really need anyway. + + +Single inheritance and interfaces ~ + +Some languages support multiple inheritance. Although that can be useful in +some cases, it makes the rules of how a class works quite complicated. +Instead, using interfaces to declare what is supported is much simpler. The +very popular Java language does it this way, and it should be good enough for +Vim. The "keep it simple" rule applies here. + +Explicitly declaring that a class supports an interface makes it easy to see +what a class is intended for. It also makes it possible to do proper type +checking. When an interface is changed any class that declares to implement +it will be checked if that change was also changed. The mechanism to assume a +class implements an interface just because the methods happen to match is +brittle and leads to obscure problems, let's not do that. + + +Using "this.variable" everywhere ~ + +The object variables in various programming languages can often be accessed in +different ways, depending on the location. Sometimes "this." has to be +prepended to avoid ambiguity. They are usually declared without "this.". +That is quite inconsistent and sometimes confusing. + +A very common issue is that in the constructor the arguments use the same name +as the object variable. Then for these variables "this." needs to be prefixed +in the body, while for other variables this is not needed and often omitted. +This leads to a mix of variables with and without "this.", which is +inconsistent. + +For |Vim9| classes the "this." prefix is always used for declared methods and +variables. Simple and consistent. When looking at the code inside a class +it's also directly clear which variable references are object variables and +which aren't. + + +Using class variables ~ + +Using "static variable" to declare a class variable is very common, nothing +new here. In |Vim9| script these can be accessed directly by their name. +Very much like how a script-local variable can be used in a method. Since +object variables are always accessed with "this." prepended, it's also quickly +clear what kind of variable it is. + +TypeScript prepends the class name before the class variable name, also inside +the class. This has two problems: The class name can be rather long, taking +up quite a bit of space, and when the class is renamed all these places need +to be changed too. + + +Declaring object and class variables ~ + +The main choice is whether to use "var" as with variable declarations. +TypeScript does not use it: > + class Point { + x: number; + y = 0; + } + +Following that Vim object variables could be declared like this: > + class Point + this.x: number + this.y = 0 + endclass + +Some users pointed out that this looks more like an assignment than a +declaration. Adding "var" and omitting "this." changes that: > + class Point + var x: number + var y = 0 + endclass + +We also need to be able to declare class variables using the "static" keyword. +There we can also choose to leave out "var": > + class Point + var x: number + static count = 0 + endclass + +Or do use it, before "static": > + class Point + var x: number + var static count = 0 + endclass + +Or after "static": > + class Point + var x: number + static var count = 0 + endclass + +This is more in line with "static def Func()". + +There is no clear preference whether to use "var" or not. The two main +reasons to leave it out are: +1. TypeScript and other popular languages do not use it. +2. Less clutter. + +However, it is more common for languages to reuse their general variable and +function declaration syntax for class/object variables and methods. Vim9 also +reuses the general function declaration syntax for methods. So, for the sake +of consistency, we require "var" in these declarations. + + +Using "ClassName.new()" to construct an object ~ + +Many languages use the "new" operator to create an object, which is actually +kind of strange, since the constructor is defined as a method with arguments, +not a command. TypeScript also has the "new" keyword, but the method is +called "constructor()", it is hard to see the relation between the two. + +In |Vim9| script the constructor method is called new(), and it is invoked as +new(), simple and straightforward. Other languages use "new ClassName()", +while there is no ClassName() method, it's a method by another name in the +class called ClassName. Quite confusing. + + +Vim9class access modes ~ + *vim9-access-modes* +The variable access modes, and their meaning, supported by Vim9class are + |public-variable| read and write from anywhere + |read-only-variable| read from anywhere, write from inside the + class and sub-classes + |protected-variable| read and write from inside the class and + sub-classes + +The method access modes are similar, but without the read-only mode. + + +Default read access to object variables ~ + +Some users will remark that the access rules for object variables are +asymmetric. Well, that is intentional. Changing a value is a very different +action than reading a value. The read operation has no side effects, it can +be done any number of times without affecting the object. Changing the value +can have many side effects, and even have a ripple effect, affecting other +objects. + +When adding object variables one usually doesn't think much about this, just +get the type right. And normally the values are set in the new() method. +Therefore defaulting to read access only "just works" in most cases. And when +directly writing you get an error, which makes you wonder if you actually want +to allow that. This helps writing code with fewer mistakes. + + +Making object variables protected with an underscore ~ + +When an object variable is protected, it can only be read and changed inside +the class (and in sub-classes), then it cannot be used outside of the class. +Prepending an underscore is a simple way to make that visible. Various +programming languages have this as a recommendation. + +In case you change your mind and want to make the object variable accessible +outside of the class, you will have to remove the underscore everywhere. +Since the name only appears in the class (and sub-classes) they will be easy +to find and change. + +The other way around is much harder: you can easily prepend an underscore to +the object variable inside the class to make it protected, but any usage +elsewhere you will have to track down and change. You may have to make it a +"set" method call. This reflects the real world problem that taking away +access requires work to be done for all places where that access exists. + +An alternative would have been using the "protected" keyword, just like +"public" changes the access in the other direction. Well, that's just to +reduce the number of keywords. + + +No private object variables ~ + +Some languages provide several ways to control access to object variables. +The most known is "protected", and the meaning varies from language to +language. Others are "shared", "private", "package" and even "friend". + +These rules make life more difficult. That can be justified in projects where +many people work on the same, complex code where it is easy to make mistakes. +Especially when refactoring or other changes to the class model. + +The Vim scripts are expected to be used in a plugin, with just one person or a +small team working on it. Complex rules then only make it more complicated, +the extra safety provided by the rules isn't really needed. Let's just keep +it simple and not specify access details. + + +============================================================================== + +10. To be done later + +Can a newSomething() constructor invoke another constructor? If yes, what are +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: +- For testing: Mock mechanism + +An important class to be provided is "Promise". Since Vim is single +threaded, connecting asynchronous operations is a natural way of allowing +plugins to do their work without blocking the user. It's a uniform way to +invoke callbacks and handle timeouts and errors. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vimdiff-da.1 b/runtime/doc/vimdiff-da.1 new file mode 100644 index 0000000..194bce2 --- /dev/null +++ b/runtime/doc/vimdiff-da.1 @@ -0,0 +1,50 @@ +.TH VIMDIFF 1 "30. marts 2001" +.SH NAVN +vimdiff \- rediger to, tre eller fire version af en fil med Vim, +og vis forskellene +.SH SYNOPSIS +.br +.B vimdiff +[tilvalg] fil1 fil2 [fil3 [fil4]] +.PP +.B gvimdiff +.SH BESKRIVELSE +.B Vimdiff +starter +.B Vim +p to (eller tre eller fire) filer. +Hver fil f錼 sit eget vindue. +Forskellene mellem filerne fremh鎣es. +Det er en fin m錮e til at inspicere 鎛dringer og til at flytte 鎛dringer fra +en version til en anden version af den samme fil. +.PP +Se vim(1) for detaljer om selve Vim. +.PP +N錼 den startes som +.B gvimdiff +, s starter den GUI'en, hvis den er tilg鎛gelig. +.PP +I hvert vindue s鎡tes 'diff'-valgmuligheden, som f錼 forskellene +til at blive fremh鎣et. +.br +\'wrap'- og 'scrollbind'-valgmulighederne s鎡tes for at f teksten til +at se godt ud. +.br +\'foldmethod'-valgmuligheden s鎡tes til "diff", hvilket l鎔ger omr錮er af +linjer uden 鎛dringer i en sammenfoldning. 'foldcolumn' s鎡tes til to, +for at g鴕e det lettere at se sammenfoldningerne og 錬ne eller lukke dem. +.SH TILVALG +Lodrette opdelinger bruges til at opstille linjerne, som hvis "\-O"-argumentet +blev brugt. +Brug "\-o"-argumentet, for i stedet at bruge vandrette opdelinger. +.PP +Se vim(1) for alle andre argumenter. +.SH SE OGS +vim(1) +.SH FORFATTER +Det meste af +.B Vim +blev lavet af Bram Moolenaar, med en masse hj鎙p fra andre. +Se ":help credits" i +.B Vim\c +\&. \ No newline at end of file diff --git a/runtime/doc/vimdiff-da.UTF-8.1 b/runtime/doc/vimdiff-da.UTF-8.1 new file mode 100644 index 0000000..e8373a8 --- /dev/null +++ b/runtime/doc/vimdiff-da.UTF-8.1 @@ -0,0 +1,50 @@ +.TH VIMDIFF 1 "30. marts 2001" +.SH NAVN +vimdiff \- rediger to, tre eller fire version af en fil med Vim, +og vis forskellene +.SH SYNOPSIS +.br +.B vimdiff +[tilvalg] fil1 fil2 [fil3 [fil4]] +.PP +.B gvimdiff +.SH BESKRIVELSE +.B Vimdiff +starter +.B Vim +p氓 to (eller tre eller fire) filer. +Hver fil f氓r sit eget vindue. +Forskellene mellem filerne fremh忙ves. +Det er en fin m氓de til at inspicere 忙ndringer og til at flytte 忙ndringer fra +en version til en anden version af den samme fil. +.PP +Se vim(1) for detaljer om selve Vim. +.PP +N氓r den startes som +.B gvimdiff +, s氓 starter den GUI'en, hvis den er tilg忙ngelig. +.PP +I hvert vindue s忙ttes 'diff'-valgmuligheden, som f氓r forskellene +til at blive fremh忙vet. +.br +\'wrap'- og 'scrollbind'-valgmulighederne s忙ttes for at f氓 teksten til +at se godt ud. +.br +\'foldmethod'-valgmuligheden s忙ttes til "diff", hvilket l忙gger omr氓der af +linjer uden 忙ndringer i en sammenfoldning. 'foldcolumn' s忙ttes til to, +for at g酶re det lettere at se sammenfoldningerne og 氓bne eller lukke dem. +.SH TILVALG +Lodrette opdelinger bruges til at opstille linjerne, som hvis "\-O"-argumentet +blev brugt. +Brug "\-o"-argumentet, for i stedet at bruge vandrette opdelinger. +.PP +Se vim(1) for alle andre argumenter. +.SH SE OGS脜 +vim(1) +.SH FORFATTER +Det meste af +.B Vim +blev lavet af Bram Moolenaar, med en masse hj忙lp fra andre. +Se ":help credits" i +.B Vim\c +\&. diff --git a/runtime/doc/vimdiff-fr.1 b/runtime/doc/vimdiff-fr.1 new file mode 100644 index 0000000..67a64e3 --- /dev/null +++ b/runtime/doc/vimdiff-fr.1 @@ -0,0 +1,54 @@ +.TH VIMDIFF 1 "30 mars 2001" +.SH NOM +vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et +affiche leurs diff閞ences +.SH SYNOPSIS +.br +.B vimdiff +[options] fichier1 fichier2 [fichier3 [fichier4]] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +d閙arre +.B Vim +avec deux (ou trois ou quatre) fichiers. +Chaque fichier est ouvert dans sa propre fen阾re. +Les diff閞ences entre ces fichiers sont mises en surbrillance. +C'est un outil tr鑣 pratique pour visualiser et reporter les +changements entre deux versions d'un m阭e fichier. +.PP +Consulter vim(1) pour des informations sur l'閐iteur Vim lui-m阭e. +.PP +Si +.B gvimdiff +est invoqu, l'IHM graphique est d閙arr閑 quand elle est disponible. +.PP +L'option 'diff' est activ閑 dans chacune des fen阾res, ce qui provoque la mise +en surbrillance des diff閞ences. +.br +Les options 'wrap' et 'scrollbind' sont activ閑s pour donner un aspect +agr閍ble au texte. +.br +L'option 'foldmethod' est fix閑 "diff", ce qui replie les lignes cons閏utives +identiques. 'foldcolumn' est fix 2 pour trouver les replis rapidement et +les ouvrir ou les fermer facilement. +.SH ARGUMENTS +La fen阾re de Vim est partag閑 verticalement afin d'afficher les lignes +correspondantes les unes en face des autres, comme si l'argument "\-O" 閠ait +sp閏ifi. Utilisez l'argument "\-o" pour obtenir un partage horizontal la +place. +.PP +Pour conna顃re les autres arguments disponibles, consultez vim(1). +.SH VOIR AUSSI +vim(1) +.SH AUTEUR +La majeure partie de +.B Vim +a 閠 閏rite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a 閠 traduite par David Blanchet + 2005-03-12. +Mise jour 2012-05-06, Dominique Pell diff --git a/runtime/doc/vimdiff-fr.UTF-8.1 b/runtime/doc/vimdiff-fr.UTF-8.1 new file mode 100644 index 0000000..3b44a3d --- /dev/null +++ b/runtime/doc/vimdiff-fr.UTF-8.1 @@ -0,0 +1,54 @@ +.TH VIMDIFF 1 "30 mars 2001" +.SH NOM +vimdiff \- ouvre deux, trois ou quatre versions d'un fichier dans Vim et +affiche leurs diff茅rences +.SH SYNOPSIS +.br +.B vimdiff +[options] fichier1 fichier2 [fichier3 [fichier4]] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +d茅marre +.B Vim +avec deux (ou trois ou quatre) fichiers. +Chaque fichier est ouvert dans sa propre fen锚tre. +Les diff茅rences entre ces fichiers sont mises en surbrillance. +C'est un outil tr猫s pratique pour visualiser et reporter les +changements entre deux versions d'un m锚me fichier. +.PP +Consulter vim(1) pour des informations sur l'茅diteur Vim lui-m锚me. +.PP +Si +.B gvimdiff +est invoqu茅, l'IHM graphique est d茅marr茅e quand elle est disponible. +.PP +L'option 'diff' est activ茅e dans chacune des fen锚tres, ce qui provoque la mise +en surbrillance des diff茅rences. +.br +Les options 'wrap' et 'scrollbind' sont activ茅es pour donner un aspect +agr茅able au texte. +.br +L'option 'foldmethod' est fix茅e 脿 "diff", ce qui replie les lignes cons茅cutives +identiques. 'foldcolumn' est fix茅 脿 2 pour trouver les replis rapidement et +les ouvrir ou les fermer facilement. +.SH ARGUMENTS +La fen锚tre de Vim est partag茅e verticalement afin d'afficher les lignes +correspondantes les unes en face des autres, comme si l'argument "\-O" 茅tait +sp茅cifi茅. Utilisez l'argument "\-o" pour obtenir un partage horizontal 脿 la +place. +.PP +Pour conna卯tre les autres arguments disponibles, consultez vim(1). +.SH VOIR AUSSI +vim(1) +.SH AUTEUR +La majeure partie de +.B Vim +a 茅t茅 茅crite par Bram Moolenaar, avec l'aide de nombreux autres contributeurs. +Voir ":help credits" dans +.B Vim. +.SH TRADUCTION +Cette page de manuel a 茅t茅 traduite par David Blanchet + 2005-03-12. +Mise 脿 jour 2012-05-06, Dominique Pell茅 diff --git a/runtime/doc/vimdiff-it.1 b/runtime/doc/vimdiff-it.1 new file mode 100644 index 0000000..836ccbe --- /dev/null +++ b/runtime/doc/vimdiff-it.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "30 marzo 2001" +.SH NOME +vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze +.SH SINTASSI +.br +.B vimdiff +[opzioni] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]] +.PP +.B gvimdiff +.SH DESCRIZIONE +.B Vimdiff +inizia +.B Vim +per due e fino a otto file. +Ogni file ha una sua finestra. +Le differenze fra file sono evidenziate. + una maniera elegante per controllare modifiche e applicare modifiche +a qualche altra versione dello stesso file. +.PP +Vedere vim(1) per dettagli su Vim in s. +.PP +Se iniziato con +.B gvimdiff +la GUI sar utilizzata, se disponibile. +.PP +In ogni finestra l'opzione 'diff' impostata, in modo da evidenziare le +differenze fra le versioni +.br +Le opzioni 'wrap' e 'scrollbind' sono impostate per favorire la visibilit del testo. +.br +L'opzione 'foldmethod' impostata al valore "diff", che mette i gruppi di +linee uguali fra i diversi file in una piegatura. 'foldcolumn' impostato +a due per poter facilmente visualizzare le piegature, aprirle e chiuderle. +.SH OPZIONI +Lo schermo diviso verticalmente, come quando si usa l'opzione "\-O". +Per dividerlo orizzontalmente, usare invece l'opzione "\-o". +.PP +Per tutti gli altri argomenti, vedere vim(1). +.SH VEDERE ANCHE +vim(1) +.SH AUTORE +Buona parte di +.B Vim + stato scritto da Bram Moolenaar, con molto aiuto da parte di altri. +Vedere ":help credits" in +.B Vim. diff --git a/runtime/doc/vimdiff-it.UTF-8.1 b/runtime/doc/vimdiff-it.UTF-8.1 new file mode 100644 index 0000000..ebcf8ac --- /dev/null +++ b/runtime/doc/vimdiff-it.UTF-8.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "30 marzo 2001" +.SH NOME +vimdiff \- modifica da due, fino a otto versioni di un file con Vim, visualizzando le differenze +.SH SINTASSI +.br +.B vimdiff +[opzioni] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]] +.PP +.B gvimdiff +.SH DESCRIZIONE +.B Vimdiff +inizia +.B Vim +per due e fino a otto file. +Ogni file ha una sua finestra. +Le differenze fra file sono evidenziate. +脠 una maniera elegante per controllare modifiche e applicare modifiche +a qualche altra versione dello stesso file. +.PP +Vedere vim(1) per dettagli su Vim in s茅. +.PP +Se iniziato con +.B gvimdiff +la GUI sar脿 utilizzata, se disponibile. +.PP +In ogni finestra l'opzione 'diff' 猫 impostata, in modo da evidenziare le +differenze fra le versioni +.br +Le opzioni 'wrap' e 'scrollbind' sono impostate per favorire la visibilit脿 del testo. +.br +L'opzione 'foldmethod' 猫 impostata al valore "diff", che mette i gruppi di +linee uguali fra i diversi file in una piegatura. 'foldcolumn' 猫 impostato +a due per poter facilmente visualizzare le piegature, aprirle e chiuderle. +.SH OPZIONI +Lo schermo 猫 diviso verticalmente, come quando si usa l'opzione "\-O". +Per dividerlo orizzontalmente, usare invece l'opzione "\-o". +.PP +Per tutti gli altri argomenti, vedere vim(1). +.SH VEDERE ANCHE +vim(1) +.SH AUTORE +Buona parte di +.B Vim +猫 stato scritto da Bram Moolenaar, con molto aiuto da parte di altri. +Vedere ":help credits" in +.B Vim. diff --git a/runtime/doc/vimdiff-ja.UTF-8.1 b/runtime/doc/vimdiff-ja.UTF-8.1 new file mode 100644 index 0000000..b9324ee --- /dev/null +++ b/runtime/doc/vimdiff-ja.UTF-8.1 @@ -0,0 +1,39 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH 鍚嶅墠 +vimdiff \- 2 鍊嬨亱銈 8 鍊嬨伄銉曘偂銈ゃ儷銈 Vim 銇ч枊銇勩仸銆併仢銇樊鍒嗐倰琛ㄧず銇欍倠 +.SH 鏇稿紡 +.br +.B vimdiff +[options] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]] +.PP +.B gvimdiff +.SH 瑾槑 +.B Vimdiff +銇2 鍊嬨亱銈 8 鍊嬨伄銉曘偂銈ゃ儷銈 +.B Vim +銇ч枊銇嶃伨銇欍 +銉曘偂銈ゃ儷銇嬪垾銇偊銈c兂銉夈偊銇ч枊銇嬨倢銆佸樊鍒嗐亴寮疯琛ㄧず銇曘倢銇俱仚銆 +鍚屻仒銉曘偂銈ゃ儷銇垾銇儛銉笺偢銉с兂闁撱仹銆佸鏇淬倰纰鸿獚銇椼仧銈娿佸鏇淬倰绉诲嫊銇椼仧銈娿仚銈嬨伄銇岀啊鍗樸伀銇倞銇俱仚銆 +.PP +Vim 銇仱銇勩仸銇┏绱般伅 vim(1) 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.PP +.B gvimdiff +銇ㄣ亜銇嗗悕鍓嶃仹璧峰嫊銇曘倢銇熷牬鍚堛伅 GUI 銇ц捣鍕曘仐銇俱仚銆 +.PP +宸垎銈掑挤瑾胯〃绀恒仚銈嬨仧銈併伀銆併仢銈屻仦銈屻伄銈︺偅銉炽儔銈︺伄 'diff' 銈儣銈枫儳銉炽亴銈兂銇ō瀹氥仌銈屻伨銇欍 +.br +銉嗐偔銈广儓銈掕銈勩仚銇忋仚銈嬨仧銈併伀銆併偑銉椼偡銉с兂銇 'wrap' 銇 'scrollbind' 銈傘偑銉炽伀瑷畾銇曘倢銇俱仚銆 +.br + 'foldmethod' 銈儣銈枫儳銉炽伅 "diff" 銇ō瀹氥仌銈屻佸鏇淬仌銈屻仸銇勩仾銇勮銇姌銈婄暢銇俱倢銇俱仚銆 +鎶樸倞鐣炽伩銇⒑瑾嶃仺闁嬮枆銇岀啊鍗樸伀銇с亶銈嬨倛銇嗐伀銆'foldcolumn' 銇 2 銇ō瀹氥仌銈屻伨銇欍 +.SH 銈儣銈枫儳銉 +琛屻倰涓︺伖銇﹁〃绀恒仚銈嬨仧銈併伀銆"\-O" 寮曟暟銈掍娇銇c仧銇ㄣ亶銇倛銇嗐伀銆併偊銈c兂銉夈偊銇瀭鐩村垎鍓层仌銈屻伨銇欍 +銈︺偅銉炽儔銈︺倰姘村钩鍒嗗壊銇椼仧銇勫牬鍚堛伅 "\-o" 寮曟暟銈掍娇銇c仸銇忋仩銇曘亜銆 +.PP +銇濄伄浠栥伄寮曟暟銇仱銇勩仸銇 vim(1) 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 +.SH 闁㈤i爡鐩 +vim(1) +.SH 钁楄 +.B Vim +銇伝銇ㄣ倱銇┿伄姗熻兘銇 Bram Moolenaar 銇岄枊鐧恒仐銆佸銇忋伄浜恒亴鍗斿姏銇椼伨銇椼仧銆 +":help credits" 銈掑弬鐓с仐銇︺亸銇犮仌銇勩 diff --git a/runtime/doc/vimdiff-pl.1 b/runtime/doc/vimdiff-pl.1 new file mode 100644 index 0000000..5332f78 --- /dev/null +++ b/runtime/doc/vimdiff-pl.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "2001 Mar 30" +.SH NAZWA +vimdiff \- edytuj dwie, trzy lub cztery wersje pliku w Vimie i zobacz r罂nice +.SH SYNOPSIS +.br +.B vimdiff +[opcje] plik1 plik2 [plik3 [plik4]] +.PP +.B gvimdiff +.SH OPIS +.B Vimdiff +uruchomi +.B Vima +z dwoma (trzema lub czterema plikami), ka縟y z nich we w砤snym oknie. +R罂nice mi阣zy plikami zostan pod秝ietlone. +Jest to dobry spos骲 by przeanalizowa r罂nice i przenie舵 zmiany z jednej +wersji pliku do innej. +.PP +Zobacz vim(1) by pozna wi阠ej szczeg蟪體 o samym Vimie. +.PP +Kiedy uruchomiony jako +.B gvimdiff +zostanie uruchomione GUI (je秎i dost阷ne). +.PP +W ka縟ym oknie zostanie ustawiona opcja 'diff', kt髍a spowoduje +pod秝ietlenie r罂nic. +.br +Opcje 'wrap' i 'scrollbind' zostan ustawione by tekst si +wygodnie przegl眃a硂. +.br +Opcja 'foldmethod' zostanie ustawiona na "diff", dzi阫i czemu +niezmienione linie zostan zwini阾e. 'foldcolumn' b阣zie r體ne 2 aby +砤two wyszukiwa, otwiera i zamyka zwini阠ia. +.SH OPCJE +Pionowy podzia zostanie u縴ty do wyr體nania linii, tak jakby u縴to +opcji "\-O". Aby uzyska poziomy podzia u縴j opcji "\-o". +.PP +Aby pozna inne opcje zobacz vim(1). +.SH ZOBACZ TAK疎 +vim(1) +.SH AUTOR +Wi阫szo舵 +.B Vima +zosta砤 napisana przez Brama Moolenaara przy pomocy wielu innych os骲. +Zobacz ":help credits w +.B Vimie. diff --git a/runtime/doc/vimdiff-pl.UTF-8.1 b/runtime/doc/vimdiff-pl.UTF-8.1 new file mode 100644 index 0000000..d66fdc9 --- /dev/null +++ b/runtime/doc/vimdiff-pl.UTF-8.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "2001 Mar 30" +.SH NAZWA +vimdiff \- edytuj dwie, trzy lub cztery wersje pliku w Vimie i zobacz r贸偶nice +.SH SYNOPSIS +.br +.B vimdiff +[opcje] plik1 plik2 [plik3 [plik4]] +.PP +.B gvimdiff +.SH OPIS +.B Vimdiff +uruchomi +.B Vima +z dwoma (trzema lub czterema plikami), ka偶dy z nich we w艂asnym oknie. +R贸偶nice mi臋dzy plikami zostan膮 pod艣wietlone. +Jest to dobry spos贸b by przeanalizowa膰 r贸偶nice i przenie艣膰 zmiany z jednej +wersji pliku do innej. +.PP +Zobacz vim(1) by pozna膰 wi臋cej szczeg贸艂贸w o samym Vimie. +.PP +Kiedy uruchomiony jako +.B gvimdiff +zostanie uruchomione GUI (je艣li dost臋pne). +.PP +W ka偶dym oknie zostanie ustawiona opcja 'diff', kt贸ra spowoduje +pod艣wietlenie r贸偶nic. +.br +Opcje 'wrap' i 'scrollbind' zostan膮 ustawione by tekst si臋 +wygodnie przegl膮da艂o. +.br +Opcja 'foldmethod' zostanie ustawiona na "diff", dzi臋ki czemu +niezmienione linie zostan膮 zwini臋te. 'foldcolumn' b臋dzie r贸wne 2 aby +艂atwo wyszukiwa膰, otwiera膰 i zamyka膰 zwini臋cia. +.SH OPCJE +Pionowy podzia艂 zostanie u偶yty do wyr贸wnania linii, tak jakby u偶yto +opcji "\-O". Aby uzyska膰 poziomy podzia艂 u偶yj opcji "\-o". +.PP +Aby pozna膰 inne opcje zobacz vim(1). +.SH ZOBACZ TAK呕E +vim(1) +.SH AUTOR +Wi臋kszo艣膰 +.B Vima +zosta艂a napisana przez Brama Moolenaara przy pomocy wielu innych os贸b. +Zobacz ":help credits w +.B Vimie. diff --git a/runtime/doc/vimdiff-ru.1 b/runtime/doc/vimdiff-ru.1 new file mode 100644 index 0000000..3855367 --- /dev/null +++ b/runtime/doc/vimdiff-ru.1 @@ -0,0 +1,50 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH 轫 +vimdiff \- 邢谧咸雅 遗牧嗽梢献猎 淖 商 砸 着矣缮 屏侍 邢拖葚 Vim + 显下伊峙紊磐 伊谔赊墒. +.SH 腼磲钿钺 篝蝻脶 +.br +.B vimdiff +[颂擂蒥 屏侍1 屏侍2 [屏侍3] +.PP +.B gvimdiff +.SH 镳轶犷殄 +胂土文 +.B vimdiff +诹且罩僚 +.B Vim +淖 (商 砸) 屏侍. 肓帜偈 屏侍 显艘僮僚杂 酉掠宰盼蜗 纤闻. +蛄谔赊裳 团帜 屏侍镣 显下伊至涝友 邢拖葚 邢挠着运 由卧了由恿. + 讼土文 邢谧咸雅 瘟翘涯蜗 显下伊至载 孜庞N钨 哨团闻紊 信遗蜗由载 +伊谔赊晾萆庞 埔燎团卧 哨 夏蜗 着矣缮 屏侍 囊涨绽. +.PP +鹣囊下闻 Vim 油. 瘟 釉伊紊门 有伊紫尬伤 vim(1). +.PP +鹨 诹姓铀 邢拖葚 讼土文 +.B gvimdiff +遗牧嗽弦 诹姓铀僚杂 遗稚团 且疗赊庞讼窍 晌耘移攀恿, 庞躺 茉 紫谕现蜗. +.PP + 肆帜贤 纤闻 姿汤蘖旁友 闲蒙 'diff', 拊 邢谧咸雅 捎邢特谙琢载 邢挠着运 +由卧了由恿 奶 显下伊峙紊 伊谔赊墒 团帜 屏侍镣. +.br +涮 仗辙叟紊 伊孪再 屏侍镣 遗稚团 显下伊峙紊 显躺奚 粤酥 姿汤蘖涝友 +闲蒙 'wrap' 'scrollbind'. +.br +赁盼膳 闲蒙 'foldmethod' 沼粤瘟滋勺僚杂 伊孜偻 "diff", 拊 邢谧咸雅 +幸言猎 铀塘乃 下塘釉 耘擞粤, 讼韵屹 闻 显躺蘖涝友 伊谔赊钨 着矣裳 屏侍. +赁盼膳 闲蒙 'foldcolumn' 沼粤瘟滋勺僚杂 伊孜偻 2, 拊下 沦滔 幸陷 +瘟认纳载, 显艘僮猎 诹艘僮猎 粤松 铀塘乃. +.SH 腱帼 瘐箅 +涮 踪伊孜勺廖裳 釉蚁 团帜 纤瘟蜕 捎邢特谡旁友 着以伤撂匚吓 伊谀盘盼膳 纤衔, +肆 庞躺 沦 捎邢特谙琢逃 颂擂 "\-O". 涮 韵窍, 拊下 捎邢特谙琢载 伊谀盘盼膳 +纤衔 邢 窍疑谙卧撂, 犹拍张 账邻猎 讼土文蜗 釉蚁伺 颂擂 "\-o". +.PP +镉粤特钨 颂擂 讼土文蜗 釉蚁松 伊佑土砸勺晾杂 瘟 釉伊紊门 有伊紫尬伤 vim(1). +.SH 箜雉蜷 翎膂 +vim(1) +.SH 狩麸蝙 +庀特哿 蘖釉 +.B Vim +酉谀廖 庖镣贤 硐咸盼亮蚁 (Bram Moolenaar), 讼韵蚁驼 邢拖橇旁 锨蚁臀吓 +讼躺夼釉紫 汤呐. 笸. ":help credits" +.B Vim. diff --git a/runtime/doc/vimdiff-ru.UTF-8.1 b/runtime/doc/vimdiff-ru.UTF-8.1 new file mode 100644 index 0000000..2f17e9c --- /dev/null +++ b/runtime/doc/vimdiff-ru.UTF-8.1 @@ -0,0 +1,50 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH 袠袦携 +vimdiff \- 锌芯蟹胁芯谢褟械褌 褉械写邪泻褌懈褉芯胁邪褌褜 写胁械 懈谢懈 褌褉懈 胁械褉褋懈懈 褎邪泄谢邪 褋 锌芯屑芯褖褜褞 Vim +褋 芯褌芯斜褉邪卸械薪懈械屑 褉邪蟹谢懈褔懈泄. +.SH 袣袨袦袗袧袛袧袗携 小孝袪袨袣袗 +.br +.B vimdiff +[泻谢褞褔懈] 褎邪泄谢1 褎邪泄谢2 [褎邪泄谢3] +.PP +.B gvimdiff +.SH 袨袩袠小袗袧袠袝 +袣芯屑邪薪写邪 +.B vimdiff +蟹邪谐褉褍卸邪械褌 胁 +.B Vim +写胁邪 (懈谢懈 褌褉懈) 褎邪泄谢邪. 袣邪卸写褘泄 褎邪泄谢 芯褌泻褉褘胁邪械褌褋褟 胁 褋芯斜褋褌胁械薪薪芯屑 芯泻薪械. +袪邪蟹谢懈褔懈褟 屑械卸写褍 褎邪泄谢邪屑懈 芯褌芯斜褉邪卸邪褞褌褋褟 褋 锌芯屑芯褖褜褞 锌芯写褋胁械褌泻懈 褋懈薪褌邪泻褋懈褋邪. +协褌邪 泻芯屑邪薪写邪 锌芯蟹胁芯谢褟械褌 薪邪谐谢褟写薪芯 芯褌芯斜褉邪卸邪褌褜 胁薪械褋褢薪薪褘械 懈蟹屑械薪械薪懈褟 懈 锌械褉械薪芯褋懈褌褜 +褉邪蟹谢懈褔邪褞褖懈械褋褟 褎褉邪谐屑械薪褌褘 懈蟹 芯写薪芯泄 胁械褉褋懈懈 褎邪泄谢邪 胁 写褉褍谐褍褞. +.PP +袩芯写褉芯斜薪械械 芯 Vim 褋屑. 薪邪 褋褌褉邪薪懈褑械 褋锌褉邪胁芯褔薪懈泻邪 vim(1). +.PP +袩褉懈 蟹邪锌褍褋泻械 褋 锌芯屑芯褖褜褞 泻芯屑邪薪写褘 +.B gvimdiff +褉械写邪泻褌芯褉 蟹邪锌褍褋泻邪械褌褋褟 胁 褉械卸懈屑械 谐褉邪褎懈褔械褋泻芯谐芯 懈薪褌械褉褎械泄褋邪, 械褋谢懈 褝褌芯 胁芯蟹屑芯卸薪芯. +.PP +袙 泻邪卸写芯屑 芯泻薪械 胁泻谢褞褔邪械褌褋褟 芯锌褑懈褟 'diff', 褔褌芯 锌芯蟹胁芯谢褟械褌 懈褋锌芯谢褜蟹芯胁邪褌褜 锌芯写褋胁械褌泻褍 +褋懈薪褌邪泻褋懈褋邪 写谢褟 芯褌芯斜褉邪卸械薪懈褟 褉邪蟹谢懈褔懈泄 屑械卸写褍 褎邪泄谢邪屑懈. +.br +袛谢褟 褍谢褍褔褕械薪懈褟 褉邪斜芯褌褘 褋 褎邪泄谢邪屑懈 胁 褉械卸懈屑械 芯褌芯斜褉邪卸械薪懈褟 芯褌谢懈褔懈泄 褌邪泻卸械 胁泻谢褞褔邪褞褌褋褟 +芯锌褑懈懈 'wrap' 懈 'scrollbind'. +.br +袟薪邪褔械薪懈械 芯锌褑懈懈 'foldmethod' 褍褋褌邪薪邪胁谢懈胁邪械褌褋褟 褉邪胁薪褘屑 "diff", 褔褌芯 锌芯蟹胁芯谢褟械褌 +锌褉褟褌邪褌褜 胁 褋泻谢邪写泻褍 芯斜谢邪褋褌懈 褌械泻褋褌邪, 泻芯褌芯褉褘械 薪械 芯褌谢懈褔邪褞褌褋褟 胁 褉邪蟹谢懈褔薪褘褏 胁械褉褋懈褟褏 褎邪泄谢邪. +袟薪邪褔械薪懈械 芯锌褑懈懈 'foldcolumn' 褍褋褌邪薪邪胁谢懈胁邪械褌褋褟 褉邪胁薪褘屑 2, 褔褌芯斜褘 斜褘谢芯 锌褉芯褖械 +薪邪褏芯写懈褌褜, 芯褌泻褉褘胁邪褌褜 懈 蟹邪泻褉褘胁邪褌褜 褌邪泻懈械 褋泻谢邪写泻懈. +.SH 袣袥挟效袠 袟袗袩校小袣袗 +袛谢褟 胁褘褉邪胁薪懈胁邪薪懈褟 褋褌褉芯泻 屑械卸写褍 芯泻薪邪屑懈 懈褋锌芯谢褜蟹褍械褌褋褟 胁械褉褌懈泻邪谢褜薪芯械 褉邪蟹写械谢械薪懈械 芯泻芯薪, +泻邪泻 械褋谢懈 斜褘 懈褋锌芯谢褜蟹芯胁邪谢褋褟 泻谢褞褔 "\-O". 袛谢褟 褌芯谐芯, 褔褌芯斜褘 懈褋锌芯谢褜蟹芯胁邪褌褜 褉邪蟹写械谢械薪懈械 +芯泻芯薪 锌芯 谐芯褉懈蟹芯薪褌邪谢懈, 褋谢械写褍械褌 褍泻邪蟹邪褌褜 胁 泻芯屑邪薪写薪芯泄 褋褌褉芯泻械 泻谢褞褔 "\-o". +.PP +袨褋褌邪谢褜薪褘械 泻谢褞褔懈 泻芯屑邪薪写薪芯泄 褋褌褉芯泻懈 褉邪褋褋屑邪褌褉懈胁邪褞褌褋褟 薪邪 褋褌褉邪薪懈褑械 褋锌褉邪胁芯褔薪懈泻邪 vim(1). +.SH 小袦袨孝袪袠 孝袗袣袞袝 +vim(1) +.SH 袗袙孝袨袪蝎 +袘芯谢褜褕邪褟 褔邪褋褌褜 +.B Vim +褋芯蟹写邪薪邪 袘褉邪屑芯屑 袦芯芯谢械薪邪邪褉芯屑 (Bram Moolenaar), 泻芯褌芯褉芯屑褍 锌芯屑芯谐邪械褌 芯谐褉芯屑薪芯械 +泻芯谢懈褔械褋褌胁芯 谢褞写械泄. 小屑. ":help credits" 胁 +.B Vim. diff --git a/runtime/doc/vimdiff-tr.1 b/runtime/doc/vimdiff-tr.1 new file mode 100644 index 0000000..aee79a7 --- /dev/null +++ b/runtime/doc/vimdiff-tr.1 @@ -0,0 +1,45 @@ +.TH VIMDIFF 1 "30 Mart 2001" +.SH AD +vimdiff \- bir dosyan齨 d鰎t adede kadar s黵黰lerini Vim ile d鼁enle +ve ayr齧lar齨 g鰏ter +.SH 諾ET +.br +.B vimdiff +[se鏴nekler] dosya1 dosya2 [dosya3 [dosya4]] +.PP +.B gvimdiff +.SH TANIM +.B Vimdiff, +.B Vim +i鏸nde iki ( veya d鰎t) dosyay a鏰r. +Her dosya ayr pencerelerde a琮l齬. +Dosyalar aras齨daki ayr齧lar vurgulan齬. +B鰕lece de餴㱮klikler kolayca denetlenebilir ve ayn dosyan齨 ba⺧a bir +s黵黰黱e kolayl齥la aktar齦abilir. +.PP +Vim hakk齨da ek bilgi i鏸n: vim(1) +.PP +.B gvimdiff +olarak baat齦齬sa varsa grafik arabirim a琮l齬. +.PP +Her pencerede 'diff' se鏴ne餴 a琮l齬, b鰕lece de餴㱮klikler vurgulan齬. +.br +\'wrap' ve 'scrollbind' se鏴nekleri metnin d鼁g黱 g鰎黱mesi i鏸n a琮l齬. +.br +\'foldmethod' se鏴ne餴 "diff"e, ayarlan齬, b鰕lece sat齬 aral齥lar +k齰r齦齬. 'foldcolumn' se鏴ne餴 k齰齬malar kolay ayr齧lama ve a琮p kapama +i鏸n iki olarak ayarlan齬. +.SH SE荅NEKLER +Sat齬lar hizalama i鏸n "\-O" se鏴ne餴 kullan齦m鏰s齨a dikey b鰈黱t黮er +i鏸nde g鰎黱t黮enir. +Yatay b鰈黱t黮er kullanmak i鏸n "\-o" kullan齨. +Di餰r t黰 de餴⺧enler i鏸n: vim(1). +.SH AYRICA BAKINIZ +vim(1) +.SH YAZAR +.B Vim'in +b鼀黭 鏾饀nlu饀 Bram Moolenaar taraf齨dan ba⺧alar齨齨 kayda de餰r +yard齧lar齳la yaz齦mt齬. +Ek bilgi i鏸n +.B Vim +i鏸nde ":help credits" yaz齨. diff --git a/runtime/doc/vimdiff-tr.UTF-8.1 b/runtime/doc/vimdiff-tr.UTF-8.1 new file mode 100644 index 0000000..45f4c58 --- /dev/null +++ b/runtime/doc/vimdiff-tr.UTF-8.1 @@ -0,0 +1,45 @@ +.TH VIMDIFF 1 "30 Mart 2001" +.SH AD +vimdiff \- bir dosyan谋n d枚rt adede kadar s眉r眉mlerini Vim ile d眉zenle +ve ayr谋mlar谋n谋 g枚ster +.SH 脰ZET +.br +.B vimdiff +[se莽enekler] dosya1 dosya2 [dosya3 [dosya4]] +.PP +.B gvimdiff +.SH TANIM +.B Vimdiff, +.B Vim +i莽inde iki (眉莽 veya d枚rt) dosyay谋 a莽ar. +Her dosya ayr谋 pencerelerde a莽谋l谋r. +Dosyalar aras谋ndaki ayr谋mlar vurgulan谋r. +B枚ylece de臒i艧iklikler kolayca denetlenebilir ve ayn谋 dosyan谋n ba艧ka bir +s眉r眉m眉ne kolayl谋kla aktar谋labilir. +.PP +Vim hakk谋nda ek bilgi i莽in: vim(1) +.PP +.B gvimdiff +olarak ba艧lat谋l谋rsa varsa grafik arabirim a莽谋l谋r. +.PP +Her pencerede 'diff' se莽ene臒i a莽谋l谋r, b枚ylece de臒i艧iklikler vurgulan谋r. +.br +\'wrap' ve 'scrollbind' se莽enekleri metnin d眉zg眉n g枚r眉nmesi i莽in a莽谋l谋r. +.br +\'foldmethod' se莽ene臒i "diff"e, ayarlan谋r, b枚ylece sat谋r aral谋klar谋 +k谋vr谋l谋r. 'foldcolumn' se莽ene臒i k谋v谋rmalar谋 kolay ayr谋mlama ve a莽谋p kapama +i莽in iki olarak ayarlan谋r. +.SH SE脟ENEKLER +Sat谋rlar hizalama i莽in "\-O" se莽ene臒i kullan谋lm谋艧莽as谋na dikey b枚l眉nt眉ler +i莽inde g枚r眉nt眉lenir. +Yatay b枚l眉nt眉ler kullanmak i莽in "\-o" kullan谋n. +Di臒er t眉m de臒i艧kenler i莽in: vim(1). +.SH AYRICA BAKINIZ +vim(1) +.SH YAZAR +.B Vim'in +b眉y眉k 莽o臒unlu臒u Bram Moolenaar taraf谋ndan ba艧kalar谋n谋n kayda de臒er +yard谋mlar谋yla yaz谋lm谋艧t谋r. +Ek bilgi i莽in +.B Vim +i莽inde ":help credits" yaz谋n. diff --git a/runtime/doc/vimdiff.1 b/runtime/doc/vimdiff.1 new file mode 100644 index 0000000..ddcb30f --- /dev/null +++ b/runtime/doc/vimdiff.1 @@ -0,0 +1,46 @@ +.TH VIMDIFF 1 "2001 March 30" +.SH NAME +vimdiff \- edit between two and eight versions of a file with Vim and show differences +.SH SYNOPSIS +.br +.B vimdiff +[options] file1 file2 [file3 [file4 [file5 [file6 [file7 [file8]]]]]] +.PP +.B gvimdiff +.SH DESCRIPTION +.B Vimdiff +starts +.B Vim +on two up to eight files. +Each file gets its own window. +The differences between the files are highlighted. +This is a nice way to inspect changes and to move changes from one version +to another version of the same file. +.PP +See vim(1) for details about Vim itself. +.PP +When started as +.B gvimdiff +the GUI will be started, if available. +.PP +In each window the 'diff' option will be set, which causes the differences +to be highlighted. +.br +The 'wrap' and 'scrollbind' options are set to make the text look good. +.br +The 'foldmethod' option is set to "diff", which puts ranges of lines without +changes in a fold. 'foldcolumn' is set to two to make it easy to spot the +folds and open or close them. +.SH OPTIONS +Vertical splits are used to align the lines, as if the "\-O" argument was used. +To use horizontal splits instead, use the "\-o" argument. +.PP +For all other arguments see vim(1). +.SH SEE ALSO +vim(1) +.SH AUTHOR +Most of +.B Vim +was made by Bram Moolenaar, with a lot of help from others. +See ":help credits" in +.B Vim. diff --git a/runtime/doc/vimdiff.man b/runtime/doc/vimdiff.man new file mode 100644 index 0000000..a053e6a --- /dev/null +++ b/runtime/doc/vimdiff.man @@ -0,0 +1,47 @@ +VIMDIFF(1) General Commands Manual VIMDIFF(1) + + + +NAME + vimdiff - edit between two and eight versions of a file with Vim and + show differences + +SYNOPSIS + vimdiff [options] file1 file2 [file3 [file4 [file5 [file6 [file7 + [file8]]]]]] + + gvimdiff + +DESCRIPTION + Vimdiff starts Vim on two up to eight files. Each file gets its own + window. The differences between the files are highlighted. This is a + nice way to inspect changes and to move changes from one version to an鈥 + other version of the same file. + + See vim(1) for details about Vim itself. + + When started as gvimdiff the GUI will be started, if available. + + In each window the 'diff' option will be set, which causes the differ鈥 + ences to be highlighted. + The 'wrap' and 'scrollbind' options are set to make the text look good. + The 'foldmethod' option is set to "diff", which puts ranges of lines + without changes in a fold. 'foldcolumn' is set to two to make it easy + to spot the folds and open or close them. + +OPTIONS + Vertical splits are used to align the lines, as if the "-O" argument + was used. To use horizontal splits instead, use the "-o" argument. + + For all other arguments see vim(1). + +SEE ALSO + vim(1) + +AUTHOR + Most of Vim was made by Bram Moolenaar, with a lot of help from others. + See ":help credits" in Vim. + + + + 2001 March 30 VIMDIFF(1) diff --git a/runtime/doc/vimtutor-da.1 b/runtime/doc/vimtutor-da.1 new file mode 100644 index 0000000..ec8cde0 --- /dev/null +++ b/runtime/doc/vimtutor-da.1 @@ -0,0 +1,53 @@ +.TH VIMTUTOR 1 "2. april 2001" +.SH NAVN +vimtutor \- Vim-vejledningen +.SH SYNOPSIS +.br +.B vimtutor [\-g] [sprog] +.SH BESKRIVELSE +.B Vimtutor +starter +.B Vim\c +-vejledningen. +Det kopierer f鴕st vejledningsfilen, s den kan 鎛dres uden at 鎛dre +den originale fil. +.PP +.B Vimtutor +er nyttig til personer der vil l鎟e deres f鴕ste +.B Vim\c +-kommandoer. +.PP +Det valgfrie argument \-g starter vimtutor med gvim fremfor vim, hvis +GUI-versionen af vim er tilg鎛gelig, ellers bruges Vim hvis ikke gvim findes. +.PP +Det valgfrie [sprog]-argument er navnet p et sprog, p 2 bogstaver, s錽om +"da" eller "fi". +Hvis [sprog]-argumentet mangler, bruges sproget fra den nuv鎟ende lokalitet. +Hvis der findes er en vejledning p dette sprog, s bruges den. +Ellers bruges den engelske version. +.PP +.B Vim +startes altid i Vi-kompatibel tilstand. +.SH FILER +.TP 15 +/usr/local/lib/vim/tutor/tutor[.sprog] +.B Vimtutor\c +-tekstfilerne. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Vim-scriptet som bruges til at kopiere +.B Vimtutor\c +-tekstfilen. +.SH FORFATTER +.B Vimtutor +blev oprindeligt skrevet til Vi af Michael C. Pierce og Robert K. Ware, +Colorado School of Mines med ideer af Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu. +.br +Den blev 鎛dret til +.B Vim +af Bram Moolenaar. +Overs鎡ternes navne kan ses i tutor-filerne. +.SH SE OGS +vim(1) diff --git a/runtime/doc/vimtutor-da.UTF-8.1 b/runtime/doc/vimtutor-da.UTF-8.1 new file mode 100644 index 0000000..feb7ea3 --- /dev/null +++ b/runtime/doc/vimtutor-da.UTF-8.1 @@ -0,0 +1,53 @@ +.TH VIMTUTOR 1 "2. april 2001" +.SH NAVN +vimtutor \- Vim-vejledningen +.SH SYNOPSIS +.br +.B vimtutor [\-g] [sprog] +.SH BESKRIVELSE +.B Vimtutor +starter +.B Vim\c +-vejledningen. +Det kopierer f酶rst vejledningsfilen, s氓 den kan 忙ndres uden at 忙ndre +den originale fil. +.PP +.B Vimtutor +er nyttig til personer der vil l忙re deres f酶rste +.B Vim\c +-kommandoer. +.PP +Det valgfrie argument \-g starter vimtutor med gvim fremfor vim, hvis +GUI-versionen af vim er tilg忙ngelig, ellers bruges Vim hvis ikke gvim findes. +.PP +Det valgfrie [sprog]-argument er navnet p氓 et sprog, p氓 2 bogstaver, s氓som +"da" eller "fi". +Hvis [sprog]-argumentet mangler, bruges sproget fra den nuv忙rende lokalitet. +Hvis der findes er en vejledning p氓 dette sprog, s氓 bruges den. +Ellers bruges den engelske version. +.PP +.B Vim +startes altid i Vi-kompatibel tilstand. +.SH FILER +.TP 15 +/usr/local/lib/vim/tutor/tutor[.sprog] +.B Vimtutor\c +-tekstfilerne. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Vim-scriptet som bruges til at kopiere +.B Vimtutor\c +-tekstfilen. +.SH FORFATTER +.B Vimtutor +blev oprindeligt skrevet til Vi af Michael C. Pierce og Robert K. Ware, +Colorado School of Mines med ideer af Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu. +.br +Den blev 忙ndret til +.B Vim +af Bram Moolenaar. +Overs忙tternes navne kan ses i tutor-filerne. +.SH SE OGS脜 +vim(1) diff --git a/runtime/doc/vimtutor-fr.1 b/runtime/doc/vimtutor-fr.1 new file mode 100644 index 0000000..06e03fb --- /dev/null +++ b/runtime/doc/vimtutor-fr.1 @@ -0,0 +1,60 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [\-g] [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans alt閞er le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premi鑢es commandes +.B Vim +\. +.PP +L'argument optionnel \-g lance vimtutor avec gvim plut魌 qu'avec vim, si l'IHM +graphique de vim est disponible, ou le lance avec vim si gvim n'est pas +disponible. +.PP +L'argument optionnel [langue] est le nom d'une langue, sp閏ifi閑 par son +symbole deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la r間ion linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est propos. Sinon, c'est la version anglaise +qui est propos閑. +.PP +.B Vim +est toujours lanc en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilis pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a 閠 閏rit l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des id閑s 閙ises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a 閠 modifi pour +.B Vim +par Bram Moolenaar. +Pour conna顃re le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a 閠 traduite par David Blanchet + 2004-12-27. +Mise jour 2012-05-06, Dominique Pell diff --git a/runtime/doc/vimtutor-fr.UTF-8.1 b/runtime/doc/vimtutor-fr.UTF-8.1 new file mode 100644 index 0000000..f47f840 --- /dev/null +++ b/runtime/doc/vimtutor-fr.UTF-8.1 @@ -0,0 +1,60 @@ +.TH VIMTUTOR 1 "2 avril 2001" +.SH NAME +vimtutor \- tutoriel Vim +.SH SYNOPSIS +.br +.B vimtutor [\-g] [langue] +.SH DESCRIPTION +.B Vimtutor +lance le tutoriel +.B Vim +\. +Il copie d'abord le fichier du tutoriel, afin que vous puissiez le modifier +sans alt茅rer le fichier original. +.PP +.B Vimtutor +est utile pour les personnes souhaitant apprendre leurs premi猫res commandes +.B Vim +\. +.PP +L'argument optionnel \-g lance vimtutor avec gvim plut么t qu'avec vim, si l'IHM +graphique de vim est disponible, ou le lance avec vim si gvim n'est pas +disponible. +.PP +L'argument optionnel [langue] est le nom d'une langue, sp茅cifi茅e par son +symbole 脿 deux lettres, tels que "it" ou "es". Si l'argument [langue] est omis, +la langue de la r茅gion linguistique actuelle sera retenue. Si le tutoriel est +disponible dans cette langue, il est propos茅. Sinon, c'est la version anglaise +qui est propos茅e. +.PP +.B Vim +est toujours lanc茅 en mode Compatible Vi. +.SH FICHIERS +.TP 15 +/usr/local/lib/vim/tutor/tutor[.langue] +Les fichiers textes de +.B Vimtutor +\. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Le script Vim utilis茅 pour copier les fichiers texte de +.B Vimtutor +\. +.SH AUTEUR +.B Vimtutor +a 茅t茅 茅crit 脿 l'origine pour Vi par Michael C. Pierce et Robert K. Ware, de la +Colorado School of Mines, en reprenant des id茅es 茅mises par Charles Smith, de +la Colorado State University. +E-mail : bware@mines.colorado.edu. +.br +Il a 茅t茅 modifi茅 pour +.B Vim +par Bram Moolenaar. +Pour conna卯tre le nom des traducteurs, consultez les fichiers textes du +tutoriel. +.SH VOIR AUSSI +vim(1) +.SH TRADUCTION +Cette page de manuel a 茅t茅 traduite par David Blanchet + 2004-12-27. +Mise 脿 jour 2012-05-06, Dominique Pell茅 diff --git a/runtime/doc/vimtutor-it.1 b/runtime/doc/vimtutor-it.1 new file mode 100644 index 0000000..f521134 --- /dev/null +++ b/runtime/doc/vimtutor-it.1 @@ -0,0 +1,57 @@ +.TH VIMTUTOR 1 "2 aprile 2001" +.SH NOME +vimtutor \- Un breve corso introduttivo a Vim +.SH SINTASSI +.br +.B vimtutor [\-g] [lingua] +.SH DESCRIZIONE +.B Vimtutor +inizia il +.B Vim +tutor (un breve corso introduttivo a Vim). +Viene utilizzata una copia del file di lavoro, che pu cos essere modificato +a piacere senza alterare il file usato come modello. +.PP +Il comando +.B Vimtutor + utile a chi voglia imparare i primi comandi di +.B Vim +. +.PP +L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la +versione GUI di vim disponibile; altrimenti viene utilizzato Vim. +.PP +L'argomento opzionale [lingua] l'abbreviazione di due lettere del nome +di una lingua, per esempio "it" oppure "es". +Se l'argomento [lingua] non viene specificato, si utilizza la lingua "locale" +del computer. +Se la versione in tale lingua del "tutor" non disponibile, +verr usata la versione inglese. +.PP +.B Vim + sempre iniziato in Modo compatibile con Vi. +.SH FILE +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +I file di testo per +.B Vimtutor +. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Lo script di Vim usato per copiare il file di testo +.B Vimtutor +. +.SH AUTORE +Il corso introduttivo +.B Vimtutor + stato scritto in origine per Vi da Michael C. Pierce e Robert K. Ware, +Colorado School of Mines, usando idee fornite da Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu (non pi valido). +.br + stato modificato per +.B Vim +da Bram Moolenaar. +Per i nomi dei traduttori, vedere i file nelle rispettive lingue. +.SH VEDERE ANCHE +vim(1) diff --git a/runtime/doc/vimtutor-it.UTF-8.1 b/runtime/doc/vimtutor-it.UTF-8.1 new file mode 100644 index 0000000..49747d4 --- /dev/null +++ b/runtime/doc/vimtutor-it.UTF-8.1 @@ -0,0 +1,57 @@ +.TH VIMTUTOR 1 "2 aprile 2001" +.SH NOME +vimtutor \- Un breve corso introduttivo a Vim +.SH SINTASSI +.br +.B vimtutor [\-g] [lingua] +.SH DESCRIZIONE +.B Vimtutor +inizia il +.B Vim +tutor (un breve corso introduttivo a Vim). +Viene utilizzata una copia del file di lavoro, che pu貌 cos矛 essere modificato +a piacere senza alterare il file usato come modello. +.PP +Il comando +.B Vimtutor +猫 utile a chi voglia imparare i primi comandi di +.B Vim +. +.PP +L'argomento opzionale \-g inizia vimtutor usando gvim invece che vim, se la +versione GUI di vim 猫 disponibile; altrimenti viene utilizzato Vim. +.PP +L'argomento opzionale [lingua] 猫 l'abbreviazione di due lettere del nome +di una lingua, per esempio "it" oppure "es". +Se l'argomento [lingua] non viene specificato, si utilizza la lingua "locale" +del computer. +Se la versione in tale lingua del "tutor" non 猫 disponibile, +verr脿 usata la versione inglese. +.PP +.B Vim +猫 sempre iniziato in Modo compatibile con Vi. +.SH FILE +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +I file di testo per +.B Vimtutor +. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Lo script di Vim usato per copiare il file di testo +.B Vimtutor +. +.SH AUTORE +Il corso introduttivo +.B Vimtutor +猫 stato scritto in origine per Vi da Michael C. Pierce e Robert K. Ware, +Colorado School of Mines, usando idee fornite da Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu (non pi霉 valido). +.br +脠 stato modificato per +.B Vim +da Bram Moolenaar. +Per i nomi dei traduttori, vedere i file nelle rispettive lingue. +.SH VEDERE ANCHE +vim(1) diff --git a/runtime/doc/vimtutor-ja.UTF-8.1 b/runtime/doc/vimtutor-ja.UTF-8.1 new file mode 100644 index 0000000..2e4f69d --- /dev/null +++ b/runtime/doc/vimtutor-ja.UTF-8.1 @@ -0,0 +1,44 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 鍚嶅墠 +vimtutor \- Vim 銉併儱銉笺儓銉偄銉 +.SH 鏇稿紡 +.br +.B vimtutor [\-g] [language] +.SH 瑾槑 +.B Vim +銇儊銉ャ兗銉堛儶銈€儷銈掕捣鍕曘仐銇俱仚銆 +婕旂繏銉曘偂銈ゃ儷銇偝銉斻兗銈掍娇銇c仸瀹熸柦銇欍倠銇仹銆併偑銉偢銉娿儷銇紨缈掋儠銈°偆銉倰澹娿仐銇︺仐銇俱亞蹇冮厤銇亗銈娿伨銇涖倱銆 +.PP +.B Vim +銈掑垵銈併仸瀛︺伓浜哄悜銇戙伄銉併儱銉笺儓銉偄銉仹銇欍 +.PP +寮曟暟銇 \-g 銈掓寚瀹氥仚銈嬨仺 GUI 鐗堛伄 vim 銇屽埄鐢ㄥ彲鑳姐仹銇傘倢銇 vim 銇с伅銇亸 gvim +銈掍娇銇c仸 vimtutor 銇岄枊濮嬨仐銇俱仚銆俫vim 銇岃銇ゃ亱銈夈仾銇勩仺銇嶃伅 Vim 銇屼娇鐢ㄣ仌銈屻伨銇欍 +.PP +[language] 寮曟暟銇 "ja" 銈 "es" 銇仼銇簩鏂囧瓧銇█瑾炲悕銇с仚銆 +[language] 寮曟暟銈掔渷鐣ャ仐銇熷牬鍚堛伅銉偙銉笺儷銇█瑾炪亴浣裤倧銈屻伨銇欍 +缈昏ǔ銇曘倢銇熸紨缈掋儠銈°偆銉亴銇傘倠鍫村悎銇併仢銇儠銈°偆銉亴浣裤倧銈屻伨銇欍 +銇亜鍫村悎銇嫳瑾炪伄銉曘偂銈ゃ儷銇屼娇銈忋倢銇俱仚銆 +.PP +.B Vim +銇 Vi 浜掓彌銉€兗銉夈仹璧峰嫊銇曘倢銇俱仚銆 +.SH 銉曘偂銈ゃ儷 +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +.B Vimtutor +銇紨缈掋儠銈°偆銉 +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +婕旂繏銉曘偂銈ゃ儷銈掋偝銉斻兗銇欍倠銇熴倎銇 Vim 銈广偗銉儣銉堛 +.SH 钁楄 +.B Vimtutor +銇丆olorado State University 銇 Charles Smith 銇偄銈ゃ儑銈€倰鍩恒伀銆 +Colorado School of Mines 銇 Michael C. Pierce 銇 Robert K. Ware +銇浮鍚嶃伀銈堛仯銇 Vi 鍚戙亼銇綔鎴愩仌銈屻仧銈傘伄銈掑熀銇仐銇︺亜銇俱仚銆 +E-mail: bware@mines.colorado.edu (鐝惧湪銇劇鍔). +.br +.B Vim +銇悎銈忋仜銇 Bram Moolenaar 銇屽鏇淬倰鍔犮亪銇俱仐銇熴 +缈昏ǔ鑰呫伄鍚嶅墠銇紨缈掋儠銈°偆銉倰鍙傜収銇椼仸銇忋仩銇曘亜銆 +.SH 闁㈤i爡鐩 +vim(1) diff --git a/runtime/doc/vimtutor-pl.1 b/runtime/doc/vimtutor-pl.1 new file mode 100644 index 0000000..e603ca5 --- /dev/null +++ b/runtime/doc/vimtutor-pl.1 @@ -0,0 +1,51 @@ +.TH VIMTUTOR 1 "2001 Kwi 2" +.SH NAZWA +vimtutor \- nauczyciel Vima +.SH SYNOPSIS +.br +.B vimtutor -g [j陑yk] +.SH OPIS +.B Vimtutor +uruchamia nauczyciela +.B Vima. +Najpierw kopiuje w砤禼iwy plik, dzi阫i temu mo縩a go zmienia bez obaw +utraty tre禼i. +.PP +.B Vimtutor +przyda si ludziom, kt髍zy chc si nauczy pierwszych polece +.B Vima +.PP +Opcjonalny argument \-g uruchamia vimtutor w gvimie a nie w Vimie je秎i +graficzna wersja Vima jest dost阷na, je秎i nie zostanie uruchomiony Vim. +.PP +Opcjonalny argument [j陑yk] jest dwu literowym kodem j陑yka, tak jak +"it" lub "es". +Je秎i brak argumentu [j陑yk] zostanie u縴ty j陑yk bie勘cej +lokalizacji. +Je秎i nauczyciel w tym j陑yku jest dost阷ny, zostanie u縴ty \- w innym +wypadku zostanie wykorzystana wersja angielska. +.PP +.B Vim +jest uruchamiany zawsze w trybie kompatybilno禼i z Vi +.SH PLIKI +.TP 15 +/usr/local/lib/vim/tutor/tutor[.j陑yk] +Tekstowe pliki +.B Vimtutora. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Skrypt Vima u縴wany do kopiowania pliku +.B Vimtutora. +.SH AUTOR +.B Vimtutor +zosta pocz眛kowo napisany dla Vi przez Michaela C. Pierce'a +i Roberta K. Ware'a z Colorado School of Mines zainspirowani przez +Charlesa Smitha z Colorado State University. +E-mail: bware@mines.colorado.edu +.br +Zmodyfikowany na potrzeby +.B Vima +przez Brama Moolenaara. +Nazwiska t硊maczy w plikach. +.SH ZOBACZ TAK疎 +vim(1) diff --git a/runtime/doc/vimtutor-pl.UTF-8.1 b/runtime/doc/vimtutor-pl.UTF-8.1 new file mode 100644 index 0000000..199fcd0 --- /dev/null +++ b/runtime/doc/vimtutor-pl.UTF-8.1 @@ -0,0 +1,51 @@ +.TH VIMTUTOR 1 "2001 Kwi 2" +.SH NAZWA +vimtutor \- nauczyciel Vima +.SH SYNOPSIS +.br +.B vimtutor -g [j臋zyk] +.SH OPIS +.B Vimtutor +uruchamia nauczyciela +.B Vima. +Najpierw kopiuje w艂a艣ciwy plik, dzi臋ki temu mo偶na go zmienia膰 bez obaw +utraty tre艣ci. +.PP +.B Vimtutor +przyda si臋 ludziom, kt贸rzy chc膮 si臋 nauczy膰 pierwszych polece艅 +.B Vima +.PP +Opcjonalny argument \-g uruchamia vimtutor w gvimie a nie w Vimie je艣li +graficzna wersja Vima jest dost臋pna, je艣li nie zostanie uruchomiony Vim. +.PP +Opcjonalny argument [j臋zyk] jest dwu literowym kodem j臋zyka, tak jak +"it" lub "es". +Je艣li brak argumentu [j臋zyk] zostanie u偶yty j臋zyk bie偶膮cej +lokalizacji. +Je艣li nauczyciel w tym j臋zyku jest dost臋pny, zostanie u偶yty \- w innym +wypadku zostanie wykorzystana wersja angielska. +.PP +.B Vim +jest uruchamiany zawsze w trybie kompatybilno艣ci z Vi +.SH PLIKI +.TP 15 +/usr/local/lib/vim/tutor/tutor[.j臋zyk] +Tekstowe pliki +.B Vimtutora. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +Skrypt Vima u偶ywany do kopiowania pliku +.B Vimtutora. +.SH AUTOR +.B Vimtutor +zosta艂 pocz膮tkowo napisany dla Vi przez Michaela C. Pierce'a +i Roberta K. Ware'a z Colorado School of Mines zainspirowani przez +Charlesa Smitha z Colorado State University. +E-mail: bware@mines.colorado.edu +.br +Zmodyfikowany na potrzeby +.B Vima +przez Brama Moolenaara. +Nazwiska t艂umaczy w plikach. +.SH ZOBACZ TAK呕E +vim(1) diff --git a/runtime/doc/vimtutor-ru.1 b/runtime/doc/vimtutor-ru.1 new file mode 100644 index 0000000..fa3c5d9 --- /dev/null +++ b/runtime/doc/vimtutor-ru.1 @@ -0,0 +1,51 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 轫 +vimtutor \- 辙怕紊 邢 Vim +.SH 腼磲钿钺 篝蝻脶 +.br +.B vimtutor [掩偎] +.SH 镳轶犷殄 +胂土文 +.B vimtutor +诹姓铀僚 辙怕紊 邢 +.B Vim. +鹨 茉贤 游赁撂 幸仙尤夏稍 酉谀廖膳 讼猩 屏侍 辙怕紊肆, +拊下 徘 拖治 沦滔 遗牧嗽梢献猎 屡 闲劣盼裳 邢耘已载 捎认奈偈 屏侍. +.PP +鹨锨伊屯 +.B vimtutor +邢膛谖 奶 蜗咨匏献, 峙塘垒扇 瘟辙稍赜 恿唾 嫌蜗孜偻 讼土文镣 +.B Vim. +.PP +钆下掩猎盘匚偈 辛伊团砸 [掩偎] 幸拍釉磷萄旁 酉孪 淖杖由妥咸匚偈 讼 掩偎, +瘟幸赏乓 "ru" 商 "it". +逵躺 辛伊团砸 [掩偎] 闻 账邻廖, 韵 捎邢特谡旁友 掩偎 了陨孜鲜 瘟釉涎萆 +拖团卧 滔肆躺. 逵躺 辙怕紊 瘟 茉贤 掩偎 闻 诱菖釉渍旁, 韵 邢 胀咸蘖紊 +捎邢特谡旁友 辙怕紊 瘟 廖翘墒铀贤 掩偎. +.PP +鹨 伊孪耘 辙怕紊讼 +.B Vim +子徘牧 诹姓铀僚杂 遗稚团 酉淄庞陨拖釉 Vi. +.SH 驷觎 +.TP 15 +/usr/local/lib/vim/tutor/tutor[.掩偎] +襞擞 辙怕紊肆 +.B vimtutor. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +竺盼烈墒 Vim, 讼韵屹 捎邢特谡旁友 奶 酉谀廖裳 伊孪夼 +讼猩 耘擞粤 辙怕紊肆 +.B vimtutor. +.SH 狩麸蝙 +.B Vimtutor +沦 仔乓踪 瘟猩恿 奶 Vi 砹仕滔 . 鹕矣贤 (Michael C. Pierce) +蛳屡以贤 . 踯 (Robert K. Ware) 哨 Colorado School of Mines 邢 +赡排 姨刳 笸稍 (Charles Smith) 哨 Colorado State University. +E-mail: bware@mines.colorado.edu. +.br +餍嫌膛挠宰缮 辙怕紊 沦 南伊孪粤 奶 捎邢特谙琢紊 +.B Vim +庖镣贤 硐咸盼亮蚁 (Bram Moolenaar). +橥盼 信遗紫霓伤献 辙怕紊肆 招贤晌晾杂 酉显着杂宰绽萆 屏侍寥. +.SH 箜雉蜷 翎膂 +vim(1) diff --git a/runtime/doc/vimtutor-ru.UTF-8.1 b/runtime/doc/vimtutor-ru.UTF-8.1 new file mode 100644 index 0000000..6b1ba90 --- /dev/null +++ b/runtime/doc/vimtutor-ru.UTF-8.1 @@ -0,0 +1,51 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH 袠袦携 +vimtutor \- 褍褔械斜薪懈泻 锌芯 Vim +.SH 袣袨袦袗袧袛袧袗携 小孝袪袨袣袗 +.br +.B vimtutor [褟蟹褘泻] +.SH 袨袩袠小袗袧袠袝 +袣芯屑邪薪写邪 +.B vimtutor +蟹邪锌褍褋泻邪械褌 褍褔械斜薪懈泻 锌芯 +.B Vim. +袩褉懈 褝褌芯屑 褋薪邪褔邪谢邪 锌褉芯懈褋褏芯写懈褌 褋芯蟹写邪薪懈械 泻芯锌懈懈 褎邪泄谢邪 褍褔械斜薪懈泻邪, +褔褌芯斜褘 械谐芯 屑芯卸薪芯 斜褘谢芯 褉械写邪泻褌懈褉芯胁邪褌褜 斜械蟹 芯锌邪褋械薪懈褟 锌芯褌械褉褟褌褜 懈褋褏芯写薪褘泄 褎邪泄谢. +.PP +袩褉芯谐褉邪屑屑邪 +.B vimtutor +锌芯谢械蟹薪邪 写谢褟 薪芯胁懈褔泻芯胁, 卸械谢邪褞褖懈褏 薪邪褍褔懈褌褜褋褟 褋邪屑褘屑 芯褋薪芯胁薪褘屑 泻芯屑邪薪写邪屑 +.B Vim. +.PP +袧械芯斜褟蟹邪褌械谢褜薪褘泄 锌邪褉邪屑械褌褉 [褟蟹褘泻] 锌褉械写褋褌邪胁谢褟械褌 褋芯斜芯泄 写胁褍褏褋懈屑胁芯谢褜薪褘泄 泻芯写 褟蟹褘泻邪, +薪邪锌褉懈屑械褉 "ru" 懈谢懈 "it". +袝褋谢懈 锌邪褉邪屑械褌褉 [褟蟹褘泻] 薪械 褍泻邪蟹邪薪, 褌芯 懈褋锌芯谢褜蟹褍械褌褋褟 褟蟹褘泻 邪泻褌懈胁薪芯泄 胁 薪邪褋褌芯褟褖懈泄 +屑芯屑械薪褌 谢芯泻邪谢懈. 袝褋谢懈 褍褔械斜薪懈泻 薪邪 褝褌芯屑 褟蟹褘泻械 薪械 褋褍褖械褋褌胁褍械褌, 褌芯 锌芯 褍屑芯谢褔邪薪懈褞 +懈褋锌芯谢褜蟹褍械褌褋褟 褍褔械斜薪懈泻 薪邪 邪薪谐谢懈泄褋泻芯屑 褟蟹褘泻械. +.PP +袩褉懈 褉邪斜芯褌械 褋 褍褔械斜薪懈泻芯屑 +.B Vim +胁褋械谐写邪 蟹邪锌褍褋泻邪械褌褋褟 胁 褉械卸懈屑械 褋芯胁屑械褋褌懈屑芯褋褌懈 褋 Vi. +.SH 肖袗袡袥蝎 +.TP 15 +/usr/local/lib/vim/tutor/tutor[.褟蟹褘泻] +孝械泻褋褌 褍褔械斜薪懈泻邪 +.B vimtutor. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +小褑械薪邪褉懈泄 Vim, 泻芯褌芯褉褘泄 懈褋锌芯谢褜蟹褍械褌褋褟 写谢褟 褋芯蟹写邪薪懈褟 褉邪斜芯褔械泄 +泻芯锌懈懈 褌械泻褋褌邪 褍褔械斜薪懈泻邪 +.B vimtutor. +.SH 袗袙孝袨袪蝎 +.B Vimtutor +斜褘谢 胁锌械褉胁褘械 薪邪锌懈褋邪薪 写谢褟 Vi 袦邪泄泻谢芯屑 袣. 袩懈褉褋芯屑 (Michael C. Pierce) 懈 +袪芯斜械褉褌芯屑 袣. 校褝邪 (Robert K. Ware) 懈蟹 Colorado School of Mines 锌芯 +懈写械械 效邪褉谢褜蟹邪 小屑懈褌邪 (Charles Smith) 懈蟹 Colorado State University. +E-mail: bware@mines.colorado.edu. +.br +袙锌芯褋谢械写褋褌胁懈懈 褍褔械斜薪懈泻 斜褘谢 写芯褉邪斜芯褌邪薪 写谢褟 懈褋锌芯谢褜蟹芯胁邪薪懈褟 胁 +.B Vim +袘褉邪屑芯屑 袦芯芯谢械薪邪邪褉芯屑 (Bram Moolenaar). +袠屑械薪邪 锌械褉械胁芯写褔懈泻芯胁 褍褔械斜薪懈泻邪 褍锌芯屑懈薪邪褞褌褋褟 胁 褋芯芯褌胁械褌褋褌胁褍褞褖懈褏 褎邪泄谢邪褏. +.SH 小袦袨孝袪袠 孝袗袣袞袝 +vim(1) diff --git a/runtime/doc/vimtutor-tr.1 b/runtime/doc/vimtutor-tr.1 new file mode 100644 index 0000000..42f01d8 --- /dev/null +++ b/runtime/doc/vimtutor-tr.1 @@ -0,0 +1,50 @@ +.TH VIMTUTOR 1 "2 Nisan 2001" +.SH AD +vimtutor \- Vim e餴tmeni +.SH 諾ET +.br +.B vimtutor [\-g] [dil] +.SH TANIM +.B Vimtutor, +.B Vim +e餴tmenini baat齬. +謓ce orijinal e餴tmen dosyas齨齨 bir kopyas齨 al齬, b鰕lece bir de餴㱮kli餰 +u餽amadan de餴⺶irilebilir. +.PP +.B Vimtutor +ilk +.B Vim +komutlar齨 鲳renmek isteyen ki㱮ler i鏸n yararl齞齬. +.PP +輘te餰 ba餷 \-g de餴⺧eni vimtutor'u vim yerine e餰r y黭l ise gvim ile +baat齬. Y黭l de餴lse a鏼ak i鏸n Vim kullan齦齬. +.PP +輘te餰 ba餷 [dil] de餴⺧eni iki harfli dil kodunu belirtir, 鰎ne餴n "tr" +veya "es". E餰r [dil] de餴⺧eni verilmemi⺳e mevcut yerelle⺶irme +kullan齦齬. +E餰r bu dilde bir e餴tmen varsa kullan齦齬. +Yoksa 輓gilizce s黵黰 kullan齦acakt齬. +.PP +.B Vim +her zaman Vi uyumlu kipte baat齦齬. +.SH DOSYALAR +.TP 15 +/usr/local/lib/vim/tutor/tutor[.dil] +.B Vimtutor +metin dosyalar. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +.B Vimtutor +metin dosyas齨 kopyalamak i鏸n kullan齦an betik. +.SH YAZAR +.B Vimtutor +ilk olarak Vi i鏸n Michael C. Pierce ve Robert K. Ware, +Colorado School of Mines taraf齨dan, Colorado State University'den Charles +Smith'in verdi餴 fikirler kullan齦arak yaz齦d. +E-posta: bware@mines.colorado.edu. +.br +.B Vim +uyarlamas Bram Moolenaar taraf齨dan yap齦d. +莈virmenlerin adlar i鏸n e餴tmen dosyalar齨a bak齨. +.SH AYRICA BAKINIz +vim(1) diff --git a/runtime/doc/vimtutor-tr.UTF-8.1 b/runtime/doc/vimtutor-tr.UTF-8.1 new file mode 100644 index 0000000..de906f2 --- /dev/null +++ b/runtime/doc/vimtutor-tr.UTF-8.1 @@ -0,0 +1,50 @@ +.TH VIMTUTOR 1 "2 Nisan 2001" +.SH AD +vimtutor \- Vim e臒itmeni +.SH 脰ZET +.br +.B vimtutor [\-g] [dil] +.SH TANIM +.B Vimtutor, +.B Vim +e臒itmenini ba艧lat谋r. +脰nce orijinal e臒itmen dosyas谋n谋n bir kopyas谋n谋 al谋r, b枚ylece bir de臒i艧ikli臒e +u臒ramadan de臒i艧tirilebilir. +.PP +.B Vimtutor +ilk +.B Vim +komutlar谋n谋 枚臒renmek isteyen ki艧iler i莽in yararl谋d谋r. +.PP +陌ste臒e ba臒l谋 \-g de臒i艧keni vimtutor'u vim yerine e臒er y眉kl眉 ise gvim ile +ba艧lat谋r. Y眉kl眉 de臒ilse a莽mak i莽in Vim kullan谋l谋r. +.PP +陌ste臒e ba臒l谋 [dil] de臒i艧keni iki harfli dil kodunu belirtir, 枚rne臒in "tr" +veya "es". E臒er [dil] de臒i艧keni verilmemi艧se mevcut yerelle艧tirme +kullan谋l谋r. +E臒er bu dilde bir e臒itmen varsa kullan谋l谋r. +Yoksa 陌ngilizce s眉r眉m kullan谋lacakt谋r. +.PP +.B Vim +her zaman Vi uyumlu kipte ba艧lat谋l谋r. +.SH DOSYALAR +.TP 15 +/usr/local/lib/vim/tutor/tutor[.dil] +.B Vimtutor +metin dosyalar谋. +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +.B Vimtutor +metin dosyas谋n谋 kopyalamak i莽in kullan谋lan betik. +.SH YAZAR +.B Vimtutor +ilk olarak Vi i莽in Michael C. Pierce ve Robert K. Ware, +Colorado School of Mines taraf谋ndan, Colorado State University'den Charles +Smith'in verdi臒i fikirler kullan谋larak yaz谋ld谋. +E-posta: bware@mines.colorado.edu. +.br +.B Vim +uyarlamas谋 Bram Moolenaar taraf谋ndan yap谋ld谋. +脟evirmenlerin adlar谋 i莽in e臒itmen dosyalar谋na bak谋n. +.SH AYRICA BAKINIz +vim(1) diff --git a/runtime/doc/vimtutor.1 b/runtime/doc/vimtutor.1 new file mode 100644 index 0000000..ec2d85a --- /dev/null +++ b/runtime/doc/vimtutor.1 @@ -0,0 +1,57 @@ +.TH VIMTUTOR 1 "2001 April 2" +.SH NAME +vimtutor \- the Vim tutor +.SH SYNOPSIS +.br +.B vimtutor [\-g] [language] +.SH DESCRIPTION +.B Vimtutor +starts the +.B Vim +tutor. +It copies the tutor file first, so that it can be modified without changing +the original file. +.PP +The +.B Vimtutor +is useful for people that want to learn their first +.B Vim +commands. +.PP +The optional argument \-g starts vimtutor with gvim rather than vim, if the +GUI version of vim is available, or falls back to Vim if gvim is not found. +.PP +The optional [language] argument is the two-letter name of a language, like +"it" or "es". +If the [language] argument is missing, the language of the current locale will +be used. +If a tutor in this language is available, it will be used. +Otherwise the English version will be used. +.PP +.B Vim +is always started in Vi compatible mode. +.SH FILES +.TP 15 +/usr/local/lib/vim/tutor/tutor[.language] +The +.B Vimtutor +text file(s). +.TP 15 +/usr/local/lib/vim/tutor/tutor.vim +The Vim script used to copy the +.B Vimtutor +text file. +.SH AUTHOR +The +.B Vimtutor +was originally written for Vi by Michael C. Pierce and Robert K. Ware, +Colorado School of Mines using ideas supplied by Charles Smith, +Colorado State University. +E-mail: bware@mines.colorado.edu (now invalid). +.br +It was modified for +.B Vim +by Bram Moolenaar. +For the names of the translators see the tutor files. +.SH SEE ALSO +vim(1) diff --git a/runtime/doc/vimtutor.man b/runtime/doc/vimtutor.man new file mode 100644 index 0000000..76f6471 --- /dev/null +++ b/runtime/doc/vimtutor.man @@ -0,0 +1,50 @@ +VIMTUTOR(1) General Commands Manual VIMTUTOR(1) + + + +NAME + vimtutor - the Vim tutor + +SYNOPSIS + vimtutor [-g] [language] + +DESCRIPTION + Vimtutor starts the Vim tutor. It copies the tutor file first, so that + it can be modified without changing the original file. + + The Vimtutor is useful for people that want to learn their first Vim + commands. + + The optional argument -g starts vimtutor with gvim rather than vim, if + the GUI version of vim is available, or falls back to Vim if gvim is + not found. + + The optional [language] argument is the two-letter name of a language, + like "it" or "es". If the [language] argument is missing, the language + of the current locale will be used. If a tutor in this language is + available, it will be used. Otherwise the English version will be + used. + + Vim is always started in Vi compatible mode. + +FILES + /usr/local/lib/vim/tutor/tutor[.language] + The Vimtutor text file(s). + + /usr/local/lib/vim/tutor/tutor.vim + The Vim script used to copy the Vimtutor text file. + +AUTHOR + The Vimtutor was originally written for Vi by Michael C. Pierce and + Robert K. Ware, Colorado School of Mines using ideas supplied by + Charles Smith, Colorado State University. E-mail: bware@mines.col鈥 + orado.edu (now invalid). + It was modified for Vim by Bram Moolenaar. For the names of the trans鈥 + lators see the tutor files. + +SEE ALSO + vim(1) + + + + 2001 April 2 VIMTUTOR(1) diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt new file mode 100644 index 0000000..3f48915 --- /dev/null +++ b/runtime/doc/visual.txt @@ -0,0 +1,561 @@ +*visual.txt* For Vim version 9.1. Last change: 2023 Sep 19 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Visual mode *Visual* *Visual-mode* *visual-mode* + +Visual mode is a flexible and easy way to select a piece of text for an +operator. It is the only way to select a block of text. + +This is introduced in section |04.4| of the user manual. + +1. Using Visual mode |visual-use| +2. Starting and stopping Visual mode |visual-start| +3. Changing the Visual area |visual-change| +4. Operating on the Visual area |visual-operators| +5. Blockwise operators |blockwise-operators| +6. Repeating |visual-repeat| +7. Examples |visual-examples| +8. Select mode |Select-mode| + +{Since Vim 7.4.200 the |+visual| feature is always included} + +============================================================================== +1. Using Visual mode *visual-use* + +Using Visual mode consists of three parts: +1. Mark the start of the text with "v", "V" or CTRL-V. + The character under the cursor will be used as the start. +2. Move to the end of the text. + The text from the start of the Visual mode up to and including the + character under the cursor is highlighted. +3. Type an operator command. + The highlighted characters will be operated upon. + +The 'highlight' option can be used to set the display mode to use for +highlighting in Visual mode. +The 'virtualedit' option can be used to allow positioning the cursor to +positions where there is no actual character. + +The highlighted text normally includes the character under the cursor. +However, when the 'selection' option is set to "exclusive" and the cursor is +after the Visual area, the character under the cursor is not included. + +With "v" the text before the start position and after the end position will +not be highlighted. However, all uppercase and non-alpha operators, except +"~" and "U", will work on whole lines anyway. See the list of operators +below. + + *visual-block* +With CTRL-V (blockwise Visual mode) the highlighted text will be a rectangle +between start position and the cursor. However, some operators work on whole +lines anyway (see the list below). The change and substitute operators will +delete the highlighted text and then start insertion at the top left +position. + +============================================================================== +2. Starting and stopping Visual mode *visual-start* + + *v* *characterwise-visual* +[count]v Start Visual mode per character. + With [count] select the same number of characters or + lines as used for the last Visual operation, but at + the current cursor position, multiplied by [count]. + When the previous Visual operation was on a block both + the width and height of the block are multiplied by + [count]. + When there was no previous Visual operation [count] + characters are selected. This is like moving the + cursor right N * [count] characters. One less when + 'selection' is not "exclusive". + + *V* *linewise-visual* +[count]V Start Visual mode linewise. + With [count] select the same number of lines as used + for the last Visual operation, but at the current + cursor position, multiplied by [count]. When there + was no previous Visual operation [count] lines are + selected. + + *CTRL-V* *blockwise-visual* +[count]CTRL-V Start Visual mode blockwise. Note: Under Windows + CTRL-V could be mapped to paste text, it doesn't work + to start Visual mode then, see |CTRL-V-alternative|. + [count] is used as with `v` above. + +If you use , click the left mouse button or use any command that +does a jump to another buffer while in Visual mode, the highlighting stops +and no text is affected. Also when you hit "v" in characterwise Visual mode, +"CTRL-V" in blockwise Visual mode or "V" in linewise Visual mode. If you hit +CTRL-Z the highlighting stops and the editor is suspended or a new shell is +started |CTRL-Z|. + + new mode after typing: *v_v* *v_CTRL-V* *v_V* +old mode "v" "CTRL-V" "V" ~ + +Normal Visual blockwise Visual linewise Visual +Visual Normal blockwise Visual linewise Visual +blockwise Visual Visual Normal linewise Visual +linewise Visual Visual blockwise Visual Normal + + *gv* *v_gv* *reselect-Visual* +gv Start Visual mode with the same area as the previous + area and the same mode. + In Visual mode the current and the previous Visual + area are exchanged. + After using "p" or "P" in Visual mode the text that + was put will be selected. + + *gn* *v_gn* +gn Search forward for the last used search pattern, like + with `n`, and start Visual mode to select the match. + If the cursor is on the match, visually selects it. + If an operator is pending, operates on the match. + E.g., "dgn" deletes the text of the next match. + If Visual mode is active, extends the selection + until the end of the next match. + 'wrapscan' applies. + Note: Unlike `n` the search direction does not depend + on the previous search command. + + *gN* *v_gN* +gN Like |gn| but searches backward, like with `N`. + + ** + Set the current cursor position. If Visual mode is + active it is stopped. Only when 'mouse' option + contains 'n' or 'a'. If the position is within 'so' + lines from the last line on the screen the text is + scrolled up. If the position is within 'so' lines from + the first line on the screen the text is scrolled + down. + + ** + Start Visual mode if it is not active. The text from + the cursor position to the position of the click is + highlighted. If Visual mode was already active move + the start or end of the highlighted text, whichever + is closest, to the position of the click. Only when + 'mouse' option contains 'n' or 'a'. + + Note: when 'mousemodel' is set to "popup", + has to be used instead of . + + ** + This works like a , if it is not at + the same position as . In an older version + of xterm you won't see the selected area until the + button is released, unless there is access to the + display where the xterm is running (via the DISPLAY + environment variable or the -display argument). Only + when 'mouse' option contains 'n' or 'a'. + + Internal mouse code, used for clicking on the status + line to focus a window. NM stands for non-mappable. + You cannot use these, but they might show up in some + places. + +If Visual mode is not active and the "v", "V" or CTRL-V is preceded with a +count, the size of the previously highlighted area is used for a start. You +can then move the end of the highlighted area and give an operator. The type +of the old area is used (character, line or blockwise). +- Linewise Visual mode: The number of lines is multiplied with the count. +- Blockwise Visual mode: The number of lines and columns is multiplied with + the count. +- Normal Visual mode within one line: The number of characters is multiplied + with the count. +- Normal Visual mode with several lines: The number of lines is multiplied + with the count, in the last line the same number of characters is used as + in the last line in the previously highlighted area. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the area will be +extended to the rightmost column of the longest line. + +If you want to highlight exactly the same area as the last time, you can use +"gv" |gv| |v_gv|. + + *v_* + In Visual mode: Stop Visual mode. + + *v_CTRL-C* +CTRL-C In Visual mode: Stop Visual mode. When insert mode is + pending (the mode message shows + "-- (insert) VISUAL --"), it is also stopped. + On MS-Windows, you may need to press CTRL-Break + |dos-CTRL-Break|. + +============================================================================== +3. Changing the Visual area *visual-change* + + *v_o* +o Go to Other end of highlighted text: The current + cursor position becomes the start of the highlighted + text and the cursor is moved to the other end of the + highlighted text. The highlighted area remains the + same. + + *v_O* +O Go to Other end of highlighted text. This is like + "o", but in Visual block mode the cursor moves to the + other corner in the same line. When the corner is at + a character that occupies more than one position on + the screen (e.g., a ), the highlighted text may + change. + + *v_$* +When the "$" command is used with blockwise Visual mode, the right end of the +highlighted text will be determined by the longest highlighted line. This +stops when a motion command is used that does not move straight up or down. + +For moving the end of the block many commands can be used, but you cannot +use Ex commands, commands that make changes or abandon the file. Commands +(starting with) ".", "&", CTRL-^, "Z", CTRL-], CTRL-T, CTRL-R, CTRL-I +and CTRL-O cause a beep and Visual mode continues. + +When switching to another window on the same buffer, the cursor position in +that window is adjusted, so that the same Visual area is still selected. This +is especially useful to view the start of the Visual area in one window, and +the end in another. You can then use (or when +'mousemodel' is "popup") to drag either end of the Visual area. + +============================================================================== +4. Operating on the Visual area *visual-operators* + +The operators that can be used are: + ~ switch case |v_~| + d delete |v_d| + c change (4) |v_c| + y yank |v_y| + > shift right (4) |v_>| + < shift left (4) |v_<| + ! filter through external command (1) |v_!| + = filter through 'equalprg' option command (1) |v_=| + gq format lines to 'textwidth' length (1) |v_gq| + +The objects that can be used are: + aw a word (with white space) |v_aw| + iw inner word |v_iw| + aW a WORD (with white space) |v_aW| + iW inner WORD |v_iW| + as a sentence (with white space) |v_as| + is inner sentence |v_is| + ap a paragraph (with white space) |v_ap| + ip inner paragraph |v_ip| + ab a () block (with parentheses) |v_ab| + ib inner () block |v_ib| + aB a {} block (with braces) |v_aB| + iB inner {} block |v_iB| + at a block (with tags) |v_at| + it inner block |v_it| + a< a <> block (with <>) |v_a<| + i< inner <> block |v_i<| + a[ a [] block (with []) |v_a[| + i[ inner [] block |v_i[| + a" a double quoted string (with quotes) |v_aquote| + i" inner double quoted string |v_iquote| + a' a single quoted string (with quotes) |v_a'| + i' inner simple quoted string |v_i'| + a` a string in backticks (with backticks) |v_a`| + i` inner string in backticks |v_i`| + +Additionally the following commands can be used: + : start Ex command for highlighted lines (1) |v_:| + r change (4) |v_r| + s change |v_s| + C change (2)(4) |v_C| + S change (2) |v_S| + R change (2) |v_R| + x delete |v_x| + D delete (3) |v_D| + X delete (2) |v_X| + Y yank (2) |v_Y| + p put |v_p| + P put without overwriting registers |v_P| + J join (1) |v_J| + U make uppercase |v_U| + u make lowercase |v_u| + ^] find tag |v_CTRL-]| + I block insert |v_b_I| + A block append |v_b_A| + +(1): Always whole lines, see |:visual_example|. +(2): Whole lines when not using CTRL-V. +(3): Whole lines when not using CTRL-V, delete until the end of the line when + using CTRL-V. +(4): When using CTRL-V operates on the block only. + +Note that the ":vmap" command can be used to specifically map keys in Visual +mode. For example, if you would like the "/" command not to extend the Visual +area, but instead take the highlighted text and search for that: > + :vmap / y/" +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions'.) + +If you want to give a register name using the """ command, do this just before +typing the operator character: "v{move-around}"xd". + +If you want to give a count to the command, do this just before typing the +operator character: "v{move-around}3>" (move lines 3 indents to the right). + + *{move-around}* +The {move-around} is any sequence of movement commands. Note the difference +with {motion}, which is only ONE movement command. + +Another way to operate on the Visual area is using the |/\%V| item in a +pattern. For example, to replace all '(' in the Visual area with '#': > + + :'<,'>s/\%V(/#/g + +Note that the "'<,'>" will appear automatically when you press ":" in Visual +mode. + +============================================================================== +5. Blockwise operators *blockwise-operators* + +Reminder: Use 'virtualedit' to be able to select blocks that start or end +after the end of a line or halfway a tab. + +Visual-block Insert *v_b_I* +With a blockwise selection, I{string} will insert {string} at the start +of block on every line of the block, provided that the line extends into the +block. Thus lines that are short will remain unmodified. TABs are split to +retain visual columns. Works only for adding text to a line, not for +deletions. See |v_b_I_example|. + +Visual-block Append *v_b_A* +With a blockwise selection, A{string} will append {string} to the end of +block on every line of the block. There is some differing behavior where the +block RHS is not straight, due to different line lengths: + +1. Block was created with $ + In this case the string is appended to the end of each line. +2. Block was created with {move-around} + In this case the string is appended to the end of the block on each line, + and whitespace is inserted to pad to the end-of-block column. +See |v_b_A_example|. +Note: "I" and "A" behave differently for lines that don't extend into the +selected block. This was done intentionally, so that you can do it the way +you want. +Works only for adding text to a line, not for deletions. + +Visual-block change *v_b_c* +All selected text in the block will be replaced by the same text string. When +using "c" the selected text is deleted and Insert mode started. You can then +enter text (without a line break). When you hit , the same string is +inserted in all previously selected lines. + +Visual-block Change *v_b_C* +Like using "c", but the selection is extended until the end of the line for +all lines. + + *v_b_<* +Visual-block Shift *v_b_>* +The block is shifted by 'shiftwidth'. The RHS of the block is irrelevant. The +LHS of the block determines the point from which to apply a right shift, and +padding includes TABs optimally according to 'ts' and 'et'. The LHS of the +block determines the point up to which to shift left. +See |v_b_>_example|. +See |v_b_<_example|. + +Visual-block Replace *v_b_r* +Every screen char in the highlighted region is replaced with the same char, ie +TABs are split and the virtual whitespace is replaced, maintaining screen +layout. +See |v_b_r_example|. + + +============================================================================== +6. Repeating *visual-repeat* + +When repeating a Visual mode operator, the operator will be applied to the +same amount of text as the last time: +- Linewise Visual mode: The same number of lines. +- Blockwise Visual mode: The same number of lines and columns. +- Normal Visual mode within one line: The same number of characters. +- Normal Visual mode with several lines: The same number of lines, in the + last line the same number of characters as in the last line the last time. +The start of the text is the Cursor position. If the "$" command was used as +one of the last commands to extend the highlighted text, the repeating will +be applied up to the rightmost column of the longest line. Any count passed +to the `.` command is not used. + + +============================================================================== +7. Examples *visual-examples* + + *:visual_example* +Currently the ":" command works on whole lines only. When you select part of +a line, doing something like ":!date" will replace the whole line. If you +want only part of the line to be replaced you will have to make a mapping for +it. In a future release ":" may work on partial lines. + +Here is an example, to replace the selected text with the output of "date": > + :vmap _a `>a`!!datekJJ + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +What this does is: + stop Visual mode +`> go to the end of the Visual area +a break the line after the Visual area +`< jump to the start of the Visual area +i break the line before the Visual area +!!date filter the Visual text through date +kJJ Join the lines back together + + *visual-search* +Here is an idea for a mapping that makes it possible to do a search for the +selected text: > + :vmap X y/" + +(In the <> notation |<>|, when typing it you should type it literally; you +need to remove the 'B' and '<' flags from 'cpoptions') + +Note that special characters (like '.' and '*') will cause problems. + +Visual-block Examples *blockwise-examples* +With the following text, I will indicate the commands to produce the block and +the results below. In all cases, the cursor begins on the 'a' in the first +line of the test text. +The following modeline settings are assumed ":ts=8:sw=4:". + +It will be helpful to +:set hls +/ +where is a real TAB. This helps visualise the operations. + +The test text is: + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +1. fo3jISTRING *v_b_I_example* + +abcdefghijklmnSTRINGopqrstuvwxyz +abc STRING defghijklmnopqrstuvwxyz +abcdef ghi STRING jklmnopqrstuvwxyz +abcdefghijklmnSTRINGopqrstuvwxyz + +2. fo3j$ASTRING *v_b_A_example* + +abcdefghijklmnopqrstuvwxyzSTRING +abc defghijklmnopqrstuvwxyzSTRING +abcdef ghi jklmnopqrstuvwxyzSTRING +abcdefghijklmnopqrstuvwxyzSTRING + +3. fo3j3l<.. *v_b_<_example* + +abcdefghijklmnopqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmnopqrstuvwxyz + +4. fo3j>.. *v_b_>_example* + +abcdefghijklmn opqrstuvwxyz +abc defghijklmnopqrstuvwxyz +abcdef ghi jklmnopqrstuvwxyz +abcdefghijklmn opqrstuvwxyz + +5. fo5l3jrX *v_b_r_example* + +abcdefghijklmnXXXXXXuvwxyz +abc XXXXXXhijklmnopqrstuvwxyz +abcdef ghi XXXXXX jklmnopqrstuvwxyz +abcdefghijklmnXXXXXXuvwxyz + +============================================================================== +8. Select mode *Select* *Select-mode* + +Select mode looks like Visual mode, but the commands accepted are quite +different. This resembles the selection mode in Microsoft Windows. +When the 'showmode' option is set, "-- SELECT --" is shown in the last line. + +Entering Select mode: +- Using the mouse to select an area, and 'selectmode' contains "mouse". + 'mouse' must also contain a flag for the current mode. +- Using a non-printable movement command, with the Shift key pressed, and + 'selectmode' contains "key". For example: and . 'keymodel' + must also contain "startsel". +- Using "v", "V" or CTRL-V command, and 'selectmode' contains "cmd". +- Using "gh", "gH" or "g_CTRL-H" command in Normal mode. +- From Visual mode, press CTRL-G. *v_CTRL-G* + +Commands in Select mode: +- Printable characters, and cause the selection to be deleted, and + Vim enters Insert mode. The typed character is inserted. +- Non-printable movement commands, with the Shift key pressed, extend the + selection. 'keymodel' must include "startsel". +- Non-printable movement commands, with the Shift key NOT pressed, stop Select + mode. 'keymodel' must include "stopsel". +- ESC stops Select mode. +- CTRL-O switches to Visual mode for the duration of one command. *v_CTRL-O* +- CTRL-G switches to Visual mode. +- CTRL-R {register} selects the register to be used for the text that is + deleted when typing text. *v_CTRL-R* + Unless you specify the "_" (black hole) register, the unnamed register is + also overwritten. + + +Otherwise, typed characters are handled as in Visual mode. + +When using an operator in Select mode, and the selection is linewise, the +selected lines are operated upon, but like in characterwise selection. For +example, when a whole line is deleted, it can later be pasted halfway a line. + + +Mappings and menus in Select mode. *Select-mode-mapping* + +When mappings and menus are defined with the |:vmap| or |:vmenu| command they +work both in Visual mode and in Select mode. When these are used in Select +mode Vim automatically switches to Visual mode, so that the same behavior as +in Visual mode is effective. If you don't want this use |:xmap| or |:smap|. + +One particular edge case: > + :vnoremap +This ends Visual mode when in Visual mode, but in Select mode it does not +work, because Select mode is restored after executing the mapped keys. You +need to use: > + :snoremap +< +Users will expect printable characters to replace the selected area. +Therefore avoid mapping printable characters in Select mode. Or use +|:sunmap| after |:map| and |:vmap| to remove it for Select mode. + +After the mapping or menu finishes, the selection is enabled again and Select +mode entered, unless the selected area was deleted, another buffer became +the current one or the window layout was changed. + +When a character was typed that causes the selection to be deleted and Insert +mode started, Insert mode mappings are applied to this character. This may +cause some confusion, because it means Insert mode mappings apply to a +character typed in Select mode. Language mappings apply as well. + + *gV* *v_gV* +gV Avoid the automatic reselection of the Visual area + after a Select mode mapping or menu has finished. + Put this just before the end of the mapping or menu. + At least it should be after any operations on the + selection. + + *gh* +gh Start Select mode, characterwise. This is like "v", + but starts Select mode instead of Visual mode. + Mnemonic: "get highlighted". + + *gH* +gH Start Select mode, linewise. This is like "V", + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + *g_CTRL-H* +g CTRL-H Start Select mode, blockwise. This is like CTRL-V, + but starts Select mode instead of Visual mode. + Mnemonic: "get Highlighted". + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt new file mode 100644 index 0000000..8064748 --- /dev/null +++ b/runtime/doc/windows.txt @@ -0,0 +1,1440 @@ +*windows.txt* For Vim version 9.1. Last change: 2022 Nov 27 + + + VIM REFERENCE MANUAL by Bram Moolenaar + + +Editing with multiple windows and buffers. *windows* *buffers* + +The commands which have been added to use multiple windows and buffers are +explained here. Additionally, there are explanations for commands that work +differently when used in combination with more than one window. + +The basics are explained in chapter 7 and 8 of the user manual |usr_07.txt| +|usr_08.txt|. + +1. Introduction |windows-intro| +2. Starting Vim |windows-starting| +3. Opening and closing a window |opening-window| +4. Moving cursor to other windows |window-move-cursor| +5. Moving windows around |window-moving| +6. Window resizing |window-resize| +7. Argument and buffer list commands |buffer-list| +8. Do a command in all buffers or windows |list-repeat| +9. Tag or file name under the cursor |window-tag| +10. The preview window |preview-window| +11. Using hidden buffers |buffer-hidden| +12. Special kinds of buffers |special-buffers| + +{not able to use multiple windows when the |+windows| feature was disabled at +compile time} + +============================================================================== +1. Introduction *windows-intro* *window* + +Summary: + A buffer is the in-memory text of a file. + A window is a viewport on a buffer. + A tab page is a collection of windows. + +A window is a viewport onto a buffer. You can use multiple windows on one +buffer, or several windows on different buffers. + +A buffer is a file loaded into memory for editing. The original file remains +unchanged until you write the buffer to the file. + +A buffer can be in one of three states: + + *active-buffer* +active: The buffer is displayed in a window. If there is a file for this + buffer, it has been read into the buffer. The buffer may have been + modified since then and thus be different from the file. + *hidden-buffer* +hidden: The buffer is not displayed. If there is a file for this buffer, it + has been read into the buffer. Otherwise it's the same as an active + buffer, you just can't see it. + *inactive-buffer* +inactive: The buffer is not displayed and does not contain anything. Options + for the buffer are remembered if the file was once loaded. It can + contain marks from the |viminfo| file. But the buffer doesn't + contain text. + +In a table: + +state displayed loaded ":buffers" ~ + in window shows ~ +active yes yes 'a' +hidden no yes 'h' +inactive no no ' ' + +Note: All CTRL-W commands can also be executed with |:wincmd|, for those +places where a Normal mode command can't be used or is inconvenient. + +The main Vim window can hold several split windows. There are also tab pages +|tab-page|, each of which can hold multiple windows. + *window-ID* *winid* *windowid* +Each window has a unique identifier called the window ID. This identifier +will not change within a Vim session. The |win_getid()| and |win_id2tabwin()| +functions can be used to convert between the window/tab number and the +identifier. There is also the window number, which may change whenever +windows are opened or closed, see |winnr()|. +The window number is only valid in one specific tab. The window ID is valid +across tabs. For most functions that take a window ID or a window number, the +window number only applies to the current tab, while the window ID can refer +to a window in any tab. + +Each buffer has a unique number and the number will not change within a Vim +session. The |bufnr()| and |bufname()| functions can be used to convert +between a buffer name and the buffer number. + +============================================================================== +2. Starting Vim *windows-starting* + +By default, Vim starts with one window, just like Vi. + +The "-o" and "-O" arguments to Vim can be used to open a window for each file +in the argument list. The "-o" argument will split the windows horizontally; +the "-O" argument will split the windows vertically. If both "-o" and "-O" +are given, the last one encountered will be used to determine the split +orientation. For example, this will open three windows, split horizontally: > + vim -o file1 file2 file3 + +"-oN", where N is a decimal number, opens N windows split horizontally. If +there are more file names than windows, only N windows are opened and some +files do not get a window. If there are more windows than file names, the +last few windows will be editing empty buffers. Similarly, "-ON" opens N +windows split vertically, with the same restrictions. + +If there are many file names, the windows will become very small. You might +want to set the 'winheight' and/or 'winwidth' options to create a workable +situation. + +Buf/Win Enter/Leave |autocommand|s are not executed when opening the new +windows and reading the files, that's only done when they are really entered. + + *status-line* +A status line will be used to separate windows. The 'laststatus' option tells +when the last window also has a status line: + 'laststatus' = 0 never 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. + +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 to +bold characters. If no highlighting is used for the status line ("sn"), the +'^' character is used for the current window, and '=' for other windows. If +the mouse is supported and enabled with the 'mouse' option, a status line can +be dragged to resize windows. + +Note: If you expect your status line to be in reverse video and it isn't, +check if the 'highlight' option contains "si". In version 3.0, this meant to +invert the status line. Now it should be "sr", reverse the status line, as +"si" now stands for italic! If italic is not available on your terminal, the +status line is inverted anyway; you will only see this problem on terminals +that have termcap codes for italics. + + *filler-lines* +The lines after the last buffer line in a window are called filler lines. By +default, these lines start with a tilde (~) character. The 'eob' item in the +'fillchars' option can be used to change this character. By default, these +characters are highlighted as NonText (|hl-NonText|). The EndOfBuffer +highlight group (|hl-EndOfBuffer|) can be used to change the highlighting of +the filler characters. + +============================================================================== +3. Opening and closing a window *opening-window* + +CTRL-W s *CTRL-W_s* +CTRL-W S *CTRL-W_S* +CTRL-W CTRL-S *CTRL-W_CTRL-S* +:[N]sp[lit] [++opt] [+cmd] [file] *:sp* *:split* + Split current window in two. The result is two viewports on + the same file. + + Make the new window N high (default is to use half the height + of the current window). Reduces the current window height to + create room (and others, if the 'equalalways' option is set, + 'eadirection' isn't "hor", and one of them is higher than the + current or the new window). + + If [file] is given it will be edited in the new window. If it + is not loaded in any buffer, it will be read. Else the new + window will use the already loaded buffer. + + Note: CTRL-S does not work on all terminals and might block + further input, use CTRL-Q to get going again. + Also see |++opt| and |+cmd|. + *E242* *E1159* + Be careful when splitting a window in an autocommand, it may + mess up the window layout if this happens while making other + window layout changes. + +CTRL-W CTRL-V *CTRL-W_CTRL-V* +CTRL-W v *CTRL-W_v* +:[N]vs[plit] [++opt] [+cmd] [file] *:vs* *:vsplit* + Like |:split|, but split vertically. The windows will be + spread out horizontally if + 1. a width was not specified, + 2. 'equalalways' is set, + 3. 'eadirection' isn't "ver", and + 4. one of the other windows is wider than the current or new + window. + If N was given make the new window N columns wide, if + possible. + Note: In other places CTRL-Q does the same as CTRL-V, but here + it doesn't! + +CTRL-W n *CTRL-W_n* +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"). + 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 + 'fileformat' of the current buffer is used. This can be + overridden with the |++opt| argument. + Autocommands are executed in this order: + 1. WinLeave for the current window + 2. WinEnter for the new window + 3. BufLeave for the current buffer + 4. BufEnter for the new buffer + This behaves like a ":split" first, and then an ":enew" + command. + +:[N]new [++opt] [+cmd] {file} +:[N]sp[lit] [++opt] [+cmd] {file} *:split_f* + Create a new window and start editing file {file} in it. This + behaves almost like a ":split" first, and then an ":edit" + command, but the alternate file name in the original window is + set to {file}. + If [+cmd] is given, execute the command when the file has been + loaded |+cmd|. + Also see |++opt|. + 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). + +:[N]vne[w] [++opt] [+cmd] [file] *:vne* *:vnew* + Like |:new|, but split vertically. If 'equalalways' is set + and 'eadirection' isn't "ver" the windows will be spread out + horizontally, unless a width was specified. + +:[N]sv[iew] [++opt] [+cmd] [file] *:sv* *:sview* *splitview* + Same as ":split", but set 'readonly' option for this buffer. + +:[N]sf[ind] [++opt] [+cmd] {file} *:sf* *:sfi* *:sfind* *splitfind* + Same as ":split", but search for {file} in 'path' like in + |:find|. Doesn't split if {file} is not found. + +CTRL-W CTRL-^ *CTRL-W_CTRL-^* *CTRL-W_^* +CTRL-W ^ Split the current window in two and edit the alternate file. + When a count N is given, split the current window and edit + buffer N. Similar to ":sp #" and ":sp #N", but it allows the + other buffer to be unnamed. This command matches the behavior + of |CTRL-^|, except that it splits a window first. + + *CTRL-W_:* +CTRL-W : Does the same as typing |:| - enter a command line. Useful in a + terminal window, where all Vim commands must be preceded with + CTRL-W or 'termwinkey'. + +Note that the 'splitbelow' and 'splitright' options influence where a new +window will appear. + *E36* +Creating a window will fail if there is not enough room. Every window needs +at least one screen line and column, sometimes more. Options 'winminheight' +and 'winminwidth' are relevant. + + *:vert* *:vertical* +:vert[ical] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will be split vertically. For `vertical wincmd =` windows + will be equalized only vertically. + Doesn't work for |:execute| and |:normal|. + + *:hor* *:horizontal* +:hor[izontal] {cmd} + Execute {cmd}. Currently only makes a difference for + `horizontal wincmd =`, which will equalize windows only + horizontally. + +:lefta[bove] {cmd} *:lefta* *:leftabove* +:abo[veleft] {cmd} *:abo* *:aboveleft* + Execute {cmd}. If it contains a command that splits a window, + it will be opened left (vertical split) or above (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + Doesn't work for |:execute| and |:normal|. + +:rightb[elow] {cmd} *:rightb* *:rightbelow* +:bel[owright] {cmd} *:bel* *:belowright* + Execute {cmd}. If it contains a command that splits a window, + it will be opened right (vertical split) or below (horizontal + split) the current window. Overrules 'splitbelow' and + 'splitright'. + Doesn't work for |:execute| and |:normal|. + + *:topleft* *E442* +:to[pleft] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the top and occupy the full width of the Vim + window. When the split is vertical the window appears at the + far left and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. + + *:bo* *:botright* +:bo[tright] {cmd} + Execute {cmd}. If it contains a command that splits a window, + it will appear at the bottom and occupy the full width of the + Vim window. When the split is vertical the window appears at + the far right and occupies the full height of the Vim window. + Doesn't work for |:execute| and |:normal|. + +These command modifiers can be combined to make a vertically split window +occupy the full height. Example: > + :vertical topleft split tags +Opens a vertically split, full-height window on the "tags" file at the far +left of the Vim window. + + +Closing a window +---------------- + +:q[uit] +:{count}q[uit] *:count_quit* +CTRL-W q *CTRL-W_q* +CTRL-W CTRL-Q *CTRL-W_CTRL-Q* + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + *edit-window* + When quitting the last edit window (not counting help or + preview windows), exit Vim. + + When 'hidden' is set, and there is only one window for the + current buffer, it becomes hidden. When 'hidden' is not set, + and there is only one window for the current buffer, and the + buffer was changed, the command fails. + + (Note: CTRL-Q does not work on all terminals). + + If [count] is greater than the last window number the last + window will be closed: > + :1quit " quit the first window + :$quit " quit the last window + :9quit " quit the last window + " if there are fewer than 9 windows opened + :-quit " quit the previous window + :+quit " quit the next window + :+2quit " quit the second next window +< + When closing a help window, and this is not the only window, + Vim will try to restore the previous window layout, see + |:helpclose|. + +:q[uit]! +:{count}q[uit]! + Without {count}: Quit the current window. If {count} is + given quit the {count} window. + + If this was the last window for a buffer, any changes to that + buffer are lost. When quitting the last window (not counting + help windows), exit Vim. The contents of the buffer are lost, + even when 'hidden' is set. + +:clo[se][!] +:{count}clo[se][!] +CTRL-W c *CTRL-W_c* *:clo* *:close* + Without {count}: Close the current window. If {count} is + given close the {count} window. + + When the 'hidden' option is set, or when the buffer was + changed and the [!] is used, the buffer becomes hidden (unless + there is another window editing it). + + When there is only one |edit-window| in the current tab page + and there is another tab page, this closes the current tab + page. |tab-page|. + + This command fails when: *E444* + - There is only one window on the screen. + - When 'hidden' is not set, [!] is not used, the buffer has + changes, and there is no other window on this buffer. + Changes to the buffer are not written and won't get lost, so + this is a "safe" command. + +CTRL-W CTRL-C *CTRL-W_CTRL-C* + You might have expected that CTRL-W CTRL-C closes the current + window, but that does not work, because the CTRL-C cancels the + command. + + *:hide* +:hid[e] +:{count}hid[e] + Without {count}: Quit the current window, unless it is the + last window on the screen. + If {count} is given quit the {count} window. + + The buffer becomes hidden (unless there is another window + editing it or 'bufhidden' is "unload", "delete" or "wipe"). + If the window is the last one in the current tab page the tab + page is closed. |tab-page| + + The value of 'hidden' is irrelevant for this command. Changes + to the buffer are not written and won't get lost, so this is a + "safe" command. + +:hid[e] {cmd} Execute {cmd} with 'hidden' is set. The previous value of + 'hidden' is restored after {cmd} has been executed. + Example: > + :hide edit Makefile +< This will edit "Makefile", and hide the current buffer if it + has any changes. + +:on[ly][!] +:{count}on[ly][!] +CTRL-W o *CTRL-W_o* *E445* +CTRL-W CTRL-O *CTRL-W_CTRL-O* *:on* *:only* + Make the current window the only one on the screen. All other + windows are closed. For {count} see the `:quit` command + above |:count_quit|. + + When the 'hidden' option is set, all buffers in closed windows + become hidden. + + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + +============================================================================== +4. Moving cursor to other windows *window-move-cursor* + +CTRL-W *CTRL-W_* +CTRL-W CTRL-J *CTRL-W_CTRL-J* *CTRL-W_j* +CTRL-W j Move cursor to Nth window below current one. Uses the cursor + position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-K *CTRL-W_CTRL-K* *CTRL-W_k* +CTRL-W k Move cursor to Nth window above current one. Uses the cursor + position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-H *CTRL-W_CTRL-H* +CTRL-W *CTRL-W_* *CTRL-W_h* +CTRL-W h Move cursor to Nth window left of current one. Uses the + cursor position to select between alternatives. + +CTRL-W *CTRL-W_* +CTRL-W CTRL-L *CTRL-W_CTRL-L* *CTRL-W_l* +CTRL-W l Move cursor to Nth window right of current one. Uses the + cursor position to select between alternatives. + +CTRL-W w *CTRL-W_w* *CTRL-W_CTRL-W* +CTRL-W CTRL-W Without count: move cursor to window below/right of the + current one. If there is no window below or right, go to + top-left window. + With count: go to Nth window (windows are numbered from + top-left to bottom-right). To obtain the window number see + |bufwinnr()| and |winnr()|. When N is larger than the number + of windows go to the last window. + + *CTRL-W_W* +CTRL-W W Without count: move cursor to window above/left of current + one. If there is no window above or left, go to bottom-right + window. With count: go to Nth window, like with CTRL-W w. + +CTRL-W t *CTRL-W_t* *CTRL-W_CTRL-T* +CTRL-W CTRL-T Move cursor to top-left window. + +CTRL-W b *CTRL-W_b* *CTRL-W_CTRL-B* +CTRL-W CTRL-B Move cursor to bottom-right window. + +CTRL-W p *CTRL-W_p* *CTRL-W_CTRL-P* +CTRL-W CTRL-P Go to previous (last accessed) window. + + *CTRL-W_P* *E441* +CTRL-W P Go to preview window. When there is no preview window this is + an error. + {not available when compiled without the |+quickfix| feature} + +If Visual mode is active and the new window is not for the same buffer, the +Visual mode is ended. If the window is on the same buffer, the cursor +position is set to keep the same Visual area selected. + + *:winc* *:wincmd* +These commands can also be executed with ":wincmd": + +:[count]winc[md] {arg} + Like executing CTRL-W [count] {arg}. Example: > + :wincmd j +< Moves to the window below the current one. + This command is useful when a Normal mode cannot be used (for + the |CursorHold| autocommand event). Or when a Normal mode + command is inconvenient. + The count can also be a window number. Example: > + :exe nr .. "wincmd w" +< This goes to window "nr". + +============================================================================== +5. Moving windows around *window-moving* + +CTRL-W r *CTRL-W_r* *CTRL-W_CTRL-R* *E443* +CTRL-W CTRL-R Rotate windows downwards/rightwards. The first window becomes + the second one, the second one becomes the third one, etc. + The last window becomes the first window. The cursor remains + in the same window. + This only works within the row or column of windows that the + current window is in. + + *CTRL-W_R* +CTRL-W R Rotate windows upwards/leftwards. The second window becomes + the first one, the third one becomes the second one, etc. The + first window becomes the last window. The cursor remains in + the same window. + This only works within the row or column of windows that the + 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. + 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 + exchange is only done in the row or column of windows that the + current window is in. + +The following commands can be used to change the window layout. For example, +when there are two vertically split windows, CTRL-W K will change that in +horizontally split windows. CTRL-W H does it the other way around. + + *CTRL-W_K* +CTRL-W K Move the current window to be at the very top, using the full + width of the screen. This works like closing the current + window and then creating another one with ":topleft split", + except that the current window contents is used for the new + window. + + *CTRL-W_J* +CTRL-W J Move the current window to be at the very bottom, using the + full width of the screen. This works like closing the current + window and then creating another one with ":botright split", + except that the current window contents is used for the new + window. + + *CTRL-W_H* +CTRL-W H Move the current window to be at the far left, using the + full height of the screen. This works like closing the + current window and then creating another one with + `:vert topleft split`, except that the current window contents + is used for the new window. + + *CTRL-W_L* +CTRL-W L Move the current window to be at the far right, using the full + height of the screen. This works like closing the + current window and then creating another one with + `:vert botright split`, except that the current window + contents is used for the new window. + + *CTRL-W_T* +CTRL-W T Move the current window to a new tab page. This fails if + there is only one window in the current tab page. + When a count is specified the new tab page will be opened + before the tab page with this index. Otherwise it comes after + the current tab page. + +============================================================================== +6. Window resizing *window-resize* + + *CTRL-W_=* +CTRL-W = Make all windows (almost) equally high and wide, but use + 'winheight' and 'winwidth' for the current window. + Windows with 'winfixheight' set keep their height and windows + with 'winfixwidth' set keep their width. + To equalize only vertically (make window equally high) use + `vertical wincmd =`. + To equalize only horizontally (make window equally wide) use + `horizontal wincmd =`. + +:res[ize] -N *:res* *:resize* *CTRL-W_-* +CTRL-W - Decrease current window height by N (default 1). + If used after |:vertical|: decrease width by N. + +:res[ize] +N *CTRL-W_+* +CTRL-W + Increase current window height by N (default 1). + If used after |:vertical|: increase width by N. + +:res[ize] [N] +CTRL-W CTRL-_ *CTRL-W_CTRL-_* *CTRL-W__* +CTRL-W _ Set current window height to N (default: highest possible). + +:{winnr}res[ize] [+-]N + Like `:resize` above, but apply the size to window {winnr} + instead of the current window. + +z{nr} Set current window height to {nr}. + + *CTRL-W_<* +CTRL-W < Decrease current window width by N (default 1). + + *CTRL-W_>* +CTRL-W > Increase current window width by N (default 1). + +:vert[ical] res[ize] [N] *:vertical-resize* *CTRL-W_bar* +CTRL-W | Set current window width to N (default: widest possible). + +You can also resize a window by dragging a status line up or down with the +mouse. Or by dragging a vertical separator line left or right. This only +works if the version of Vim that is being used supports the mouse and the +'mouse' option has been set to enable it. + +The option 'winheight' ('wh') is used to set the minimal window height of the +current window. This option is used each time another window becomes the +current window. If the option is '0', it is disabled. Set 'winheight' to a +very large value, e.g., '9999', to make the current window always fill all +available space. Set it to a reasonable value, e.g., '10', to make editing in +the current window comfortable. + +The equivalent 'winwidth' ('wiw') option is used to set the minimal width of +the current window. + +When the option 'equalalways' ('ea') is set, all the windows are automatically +made the same size after splitting or closing a window. If you don't set this +option, splitting a window will reduce the size of the current window and +leave the other windows the same. When closing a window, the extra lines are +given to the window above it. + +The 'eadirection' option limits the direction in which the 'equalalways' +option is applied. The default "both" resizes in both directions. When the +value is "ver" only the heights of windows are equalized. Use this when you +have manually resized a vertically split window and want to keep this width. +Likewise, "hor" causes only the widths of windows to be equalized. + +The option 'cmdheight' ('ch') is used to set the height of the command-line. +If you are annoyed by the |hit-enter| prompt for long messages, set this +option to 2 or 3. + +If there is only one window, resizing that window will also change the command +line height. If there are several windows, resizing the current window will +also change the height of the window below it (and sometimes the window above +it). + +The minimal height and width of a window is set with 'winminheight' and +'winminwidth'. These are hard values, a window will never become smaller. + + +WinScrolled and WinResized autocommands ~ + *win-scrolled-resized* +If you want to get notified of changes in window sizes, the |WinResized| +autocommand event can be used. +If you want to get notified of text in windows scrolling vertically or +horizontally, the |WinScrolled| autocommand event can be used. This will also +trigger in window size changes. +Exception: the events will not be triggered when the text scrolls for +'incsearch'. + *WinResized-event* +The |WinResized| event is triggered after updating the display, several +windows may have changed size then. A list of the IDs of windows that changed +since last time is provided in the v:event.windows variable, for example: + [1003, 1006] + *WinScrolled-event* +The |WinScrolled| event is triggered after |WinResized|, and also if a window +was scrolled. That can be vertically (the text at the top of the window +changed) or horizontally (when 'wrap' is off or when the first displayed part +of the first line changes). Note that |WinScrolled| will trigger many more +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): + { + 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}, + } + +Note that the "all" entry has the absolute values of the individual windows +accumulated. + +If you need more information about what changed, or you want to "debounce" the +events (not handle every event to avoid doing too much work), you may want to +use the `winlayout()` and `getwininfo()` functions. + +|WinScrolled| and |WinResized| do not trigger when the first autocommand is +added, only after the first scroll or resize. They may trigger when switching +to another tab page. + +The commands executed are expected to not cause window size or scroll changes. +If this happens anyway, the event will trigger again very soon. In other +words: Just before triggering the event, the current sizes and scroll +positions are stored and used to decide whether there was a change. + *E1312* +It is not allowed to change the window layout here (split, close or move +windows). + +============================================================================== +7. Argument and buffer list commands *buffer-list* + + args list buffer list meaning ~ +1. :[N]argument [N] 11. :[N]buffer [N] to arg/buf N +2. :[N]next [file ..] 12. :[N]bnext [N] to Nth next arg/buf +3. :[N]Next [N] 13. :[N]bNext [N] to Nth previous arg/buf +4. :[N]previous [N] 14. :[N]bprevious [N] to Nth previous arg/buf +5. :rewind / :first 15. :brewind / :bfirst to first arg/buf +6. :last 16. :blast to last arg/buf +7. :all 17. :ball edit all args/buffers + 18. :unhide edit all loaded buffers + 19. :[N]bmod [N] to Nth modified buf + + split & args list split & buffer list meaning ~ +21. :[N]sargument [N] 31. :[N]sbuffer [N] split + to arg/buf N +22. :[N]snext [file ..] 32. :[N]sbnext [N] split + to Nth next arg/buf +23. :[N]sNext [N] 33. :[N]sbNext [N] split + to Nth previous arg/buf +24. :[N]sprevious [N] 34. :[N]sbprevious [N] split + to Nth previous arg/buf +25. :srewind / :sfirst 35. :sbrewind / :sbfirst split + to first arg/buf +26. :slast 36. :sblast split + to last arg/buf +27. :sall 37. :sball edit all args/buffers + 38. :sunhide edit all loaded buffers + 39. :[N]sbmod [N] split + to Nth modified buf + +40. :args list of arguments +41. :buffers list of buffers + +The meaning of [N] depends on the command: + [N] is the number of buffers to go forward/backward on 2/12/22/32, + 3/13/23/33, and 4/14/24/34 + [N] is an argument number, defaulting to current argument, for 1 and 21 + [N] is a buffer number, defaulting to current buffer, for 11 and 31 + [N] is a count for 19 and 39 + +Note: ":next" is an exception, because it must accept a list of file names +for compatibility with Vi. + + +The argument list and multiple windows +-------------------------------------- + +The current position in the argument list can be different for each window. +Remember that when doing ":e file", the position in the argument list stays +the same, but you are not editing the file at that position. To indicate +this, the file message (and the title, if you have one) shows +"(file (N) of M)", where "(N)" is the current position in the file list, and +"M" the number of files in the file list. + +All the entries in the argument list are added to the buffer list. Thus, you +can also get to them with the buffer list commands, like ":bnext". + +:[N]al[l][!] [N] *:al* *:all* *:sal* *:sall* +:[N]sal[l][!] [N] + Rearrange the screen to open one window for each argument. + All other windows are closed. When a count is given, this is + the maximum number of windows to open. + With the |:tab| modifier open a tab page for each argument. + When there are more arguments than 'tabpagemax' further ones + become split windows in the last tab page. + When the 'hidden' option is set, all buffers in closed windows + become hidden. + When 'hidden' is not set, and the 'autowrite' option is set, + modified buffers are written. Otherwise, windows that have + buffers that are modified are not removed, unless the [!] is + given, then they become hidden. But modified buffers are + never abandoned, so changes cannot get lost. + [N] is the maximum number of windows to open. 'winheight' + also limits the number of windows opened ('winwidth' if + |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + If autocommands change the window layout while this command is + busy an error will be given. *E249* + +:[N]sa[rgument][!] [++opt] [+cmd] [N] *:sa* *:sargument* + Short for ":split | argument [N]": split window and go to Nth + argument. But when there is no such argument, the window is + not split. Also see |++opt| and |+cmd|. + +:[N]sn[ext][!] [++opt] [+cmd] [file ..] *:sn* *:snext* + Short for ":split | [N]next": split window and go to Nth next + argument. But when there is no next file, the window is not + split. Also see |++opt| and |+cmd|. + +:[N]spr[evious][!] [++opt] [+cmd] [N] *:spr* *:sprevious* +:[N]sN[ext][!] [++opt] [+cmd] [N] *:sN* *:sNext* + Short for ":split | [N]Next": split window and go to Nth + previous argument. But when there is no previous file, the + window is not split. Also see |++opt| and |+cmd|. + + *:sre* *:srewind* +:sre[wind][!] [++opt] [+cmd] + Short for ":split | rewind": split window and go to first + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:sfir* *:sfirst* +:sfir[st] [++opt] [+cmd] + Same as ":srewind". + + *:sla* *:slast* +:sla[st][!] [++opt] [+cmd] + Short for ":split | last": split window and go to last + argument. But when there is no argument list, the window is + not split. Also see |++opt| and |+cmd|. + + *:dr* *:drop* +:dr[op] [++opt] [+cmd] {file} .. + Edit the first {file} in a window. + - If the file is already open in a window change to that + window. + - If the file is not open in a window edit the file in the + current window. If the current buffer can't be |abandon|ed, + the window is split first. + - Windows that are not in the argument list or are not full + width will be closed if possible. + The |argument-list| is set, like with the |:next| command. + The purpose of this command is that it can be used from a + program that wants Vim to edit another file, e.g., a debugger. + When using the |:tab| modifier each argument is opened in a + tab page. The last window is used if it's empty. + Also see |++opt| and |+cmd|. + +============================================================================== +8. Do a command in all buffers or windows *list-repeat* + + *:windo* +:[range]windo {cmd} Execute {cmd} in each window or if [range] is given + only in windows for which the window number lies in + the [range]. It works like doing this: > + CTRL-W t + :{cmd} + CTRL-W w + :{cmd} + etc. +< This only operates in the current tab page. + When an error is detected on one window, further + windows will not be visited. + The last window (or where an error occurred) becomes + the current window. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not open or close windows or reorder them. + + Also see |:tabdo|, |:argdo|, |:bufdo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| + + *:bufdo* +:[range]bufdo[!] {cmd} Execute {cmd} in each buffer in the buffer list or if + [range] is given only for buffers for which their + buffer number is in the [range]. It works like doing + this: > + :bfirst + :{cmd} + :bnext + :{cmd} + etc. +< When the current file can't be |abandon|ed and the [!] + is not present, the command fails. + When an error is detected on one buffer, further + buffers will not be visited. + Unlisted buffers are skipped. + The last buffer (or where an error occurred) becomes + the current buffer. + {cmd} can contain '|' to concatenate several commands. + {cmd} must not delete buffers or add buffers to the + buffer list. + Note: While this command is executing, the Syntax + autocommand event is disabled by adding it to + 'eventignore'. This considerably speeds up editing + each buffer. + + Also see |:tabdo|, |:argdo|, |:windo|, |:cdo|, |:ldo|, + |:cfdo| and |:lfdo| + +Examples: > + + :windo set nolist foldcolumn=0 | normal! zn + +This resets the 'list' option and disables folding in all windows. > + + :bufdo set fileencoding= | update + +This resets the 'fileencoding' in each buffer and writes it if this changed +the buffer. The result is that all buffers will use the 'encoding' encoding +(if conversion succeeds). + +============================================================================== +9. Tag or file name under the cursor *window-tag* + + *:sta* *:stag* +:sta[g][!] [tagname] + Does ":tag[!] [tagname]" and splits the window for the found + tag. 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. + + *CTRL-W_g]* +CTRL-W g ] Split current window in two. Use identifier under cursor as a + tag and perform ":tselect" on it in the new upper window. + In Visual mode uses the Visually selected text as a tag. + Make new window N high. + + *CTRL-W_g_CTRL-]* +CTRL-W g CTRL-] Split current window in two. Use identifier under cursor as a + tag and perform ":tjump" on it in the new upper window. + In Visual mode uses the Visually selected text as a tag. + Make new window N high. + +CTRL-W f *CTRL-W_f* *CTRL-W_CTRL-F* +CTRL-W CTRL-F Split current window in two. Edit file name under cursor. + Like ":split gf", but window isn't split if the file does not + exist. + Uses the 'path' variable as a list of directory names where to + look for the file. Also the path for current file is + used to search for the file name. + If the name is a hypertext link that looks like + "type://machine/path", only "/path" is used. + If a count is given, the count'th matching file is edited. + +CTRL-W F *CTRL-W_F* + Split current window in two. Edit file name under cursor and + jump to the line number following the file name. See |gF| for + details on how the line number is obtained. + +CTRL-W gf *CTRL-W_gf* + Open a new tab page and edit the file name under the cursor. + Like "tab split" and "gf", but the new tab page isn't created + if the file does not exist. + +CTRL-W gF *CTRL-W_gF* + Open a new tab page and edit the file name under the cursor + and jump to the line number following the file name. Like + "tab split" and "gF", but the new tab page isn't created if + the file does not exist. + +CTRL-W gt *CTRL-W_gt* + Go to next tab page, same as `gt`. + +CTRL-W gT *CTRL-W_gT* + Go to previous tab page, same as `gT`. + +Also see |CTRL-W_CTRL-I|: open window for an included file that includes +the keyword under the cursor. + +============================================================================== +10. The preview window *preview-window* + +The preview window is a special window to show (preview) another file. It is +normally a small window used to show an include file or definition of a +function. +{not available when compiled without the |+quickfix| feature} + +There can be only one preview window (per tab page). It is created with one +of the commands below. The 'previewheight' option can be set to specify the +height of the preview window when it's opened. The 'previewwindow' option is +set in the preview window to be able to recognize it. The 'winfixheight' +option is set to have it keep the same height when opening/closing other +windows. + *preview-popup* +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: + height maximum height of the popup + width maximum width of the popup + highlight highlight group of the popup (default is Pmenu) +Example: > + :set previewpopup=height:10,width:60 + +A few peculiarities: +- If the file is in a buffer already, it will be re-used. This will allow for + editing the file while it's visible in the popup window. +- No ATTENTION dialog will be used, since you can't edit the file in the popup + window. However, if you later open the same buffer in a normal window, you + may not notice it's edited elsewhere. And when then using ":edit" to + trigger the ATTENTION and responding "A" for Abort, the preview window will + become empty. + + *:pta* *:ptag* +:pta[g][!] [tagname] + Does ":tag[!] [tagname]" and shows the found tag in a + "Preview" window without changing the current buffer or cursor + position. If a "Preview" window already exists, it is re-used + (like a help window is). If a new one is opened, + 'previewheight' is used for the height of the window. See + also |:tag|. + See below for an example. |CursorHold-example| + Small difference from |:tag|: When [tagname] is equal to the + already displayed tag, the position in the matching tag list + is not reset. This makes the CursorHold example work after a + |:ptnext|. + +CTRL-W z *CTRL-W_z* +CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* +:pc[lose][!] Close any "Preview" window currently open. When the 'hidden' + option is set, or when the buffer was changed and the [!] is + used, the buffer becomes hidden (unless there is another + window editing it). The command fails if any "Preview" buffer + cannot be closed. See also |:close|. + + *:pp* *:ppop* +:[count]pp[op][!] + Does ":[count]pop[!]" in the preview window. See |:pop| and + |:ptag|. + +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. + +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. + + *:ped* *:pedit* +:ped[it][!] [++opt] [+cmd] {file} + Edit {file} in the preview window. The preview window is + opened like with |:ptag|. The current window and cursor + position isn't changed. Useful example: > + :pedit +/fputc /usr/include/stdio.h +< + *:ps* *:psearch* +:[range]ps[earch][!] [count] [/]pattern[/] + Works like |:ijump| but shows the found match in the preview + window. The preview window is opened like with |:ptag|. The + current window and cursor position isn't changed. Useful + example: > + :psearch popen +< Like with the |:ptag| command, you can use this to + automatically show information about the word under the + cursor. This is less clever than using |:ptag|, but you don't + need a tags file and it will also find matches in system + include files. Example: > + :au! CursorHold *.[ch] ++nested exe "silent! psearch " .. expand("") +< Warning: This can be slow. + +Example *CursorHold-example* > + + :au! CursorHold *.[ch] ++nested exe "silent! ptag " .. expand("") + +This will cause a ":ptag" to be executed for the keyword under the cursor, +when the cursor hasn't moved for the time set with 'updatetime'. The "nested" +makes other autocommands be executed, so that syntax highlighting works in the +preview window. The "silent!" avoids an error message when the tag could not +be found. Also see |CursorHold|. To disable this again: > + + :au! CursorHold + +A nice addition is to highlight the found tag, avoid the ":ptag" when there +is no word under the cursor, and a few other things: > + + :au! CursorHold *.[ch] ++nested call PreviewWord() + :func PreviewWord() + : if &previewwindow " don't do this in the preview window + : return + : endif + : let w = expand("") " get the word under cursor + : if w =~ '\a' " if the word contains a letter + : + : " Delete any existing highlight before showing another tag + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : match none " delete existing highlight + : wincmd p " back to old window + : endif + : + : " Try displaying a matching tag for the word under the cursor + : try + : exe "ptag " .. w + : catch + : return + : endtry + : + : silent! wincmd P " jump to preview window + : if &previewwindow " if we really get there... + : if has("folding") + : silent! .foldopen " don't want a closed fold + : endif + : call search("$", "b") " to end of previous line + : let w = substitute(w, '\\', '\\\\', "") + : call search('\<\V' .. w .. '\>') " position cursor on match + : " Add a match highlight to the word at this position + : hi previewWord term=bold ctermbg=green guibg=green + : exe 'match previewWord "\%' .. line(".") .. 'l\%' .. col(".") .. 'c\k*"' + : wincmd p " back to old window + : endif + : endif + :endfun + +============================================================================== +11. Using hidden buffers *buffer-hidden* + +A hidden buffer is not displayed in a window, but is still loaded into memory. +This makes it possible to jump from file to file, without the need to read or +write the file every time you get another buffer in a window. + + *:buffer-!* +If the option 'hidden' ('hid') is set, abandoned buffers are kept for all +commands that start editing another file: ":edit", ":next", ":tag", etc. The +commands that move through the buffer list sometimes make the current buffer +hidden although the 'hidden' option is not set. This happens when a buffer is +modified, but is forced (with '!') to be removed from a window, and +'autowrite' is off or the buffer can't be written. + +You can make a hidden buffer not hidden by starting to edit it with any +command, or by deleting it with the ":bdelete" command. + +The 'hidden' is global, it is used for all buffers. The 'bufhidden' option +can be used to make an exception for a specific buffer. It can take these +values: + Use the value of 'hidden'. + hide Hide this buffer, also when 'hidden' is not set. + unload Don't hide but unload this buffer, also when 'hidden' + is set. + delete Delete the buffer. + + *hidden-quit* +When you try to quit Vim while there is a hidden, modified buffer, you will +get an error message and Vim will make that buffer the current buffer. You +can then decide to write this buffer (":wq") or quit without writing (":q!"). +Be careful: there may be more hidden, modified buffers! + +A buffer can also be unlisted. This means it exists, but it is not in the +list of buffers. |unlisted-buffer| + + +:files[!] [flags] *:files* +:buffers[!] [flags] *:buffers* *:ls* +:ls[!] [flags] + Show all buffers. Example: + + 1 #h "/test/text" line 1 ~ + 2u "asdf" line 0 ~ + 3 %a + "version.c" line 1 ~ + + When the [!] is included the list will show unlisted buffers + (the term "unlisted" is a bit confusing then...). + + Each buffer has a unique number. That number will not change, + thus you can always go to a specific buffer with ":buffer N" + 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 + For a |terminal-window| buffer the status is used. + + Indicators (chars in the same column are mutually exclusive): + u an unlisted buffer (only displayed when [!] is used) + |unlisted-buffer| + % the buffer in the current window + # the alternate buffer for ":e #" and CTRL-^ + a an active buffer: it is loaded and visible + h a hidden buffer: It is loaded, but currently not + displayed in a window |hidden-buffer| + - a buffer with 'modifiable' off + = a readonly buffer + R a terminal buffer with a running job + F a terminal buffer with a finished job + ? a terminal buffer without a job: `:terminal NONE` + + a modified buffer + x a buffer with read errors + + [flags] can be a combination of the following characters, + which restrict the buffers to be listed: + + modified buffers + - buffers with 'modifiable' off + = readonly buffers + a active buffers + u unlisted buffers (overrides the "!") + h hidden buffers + x buffers with a read error + % current buffer + # alternate buffer + R terminal buffers with a running job + F terminal buffers with a finished job + ? terminal buffers without a job: `:terminal NONE` + t show time last used and sort buffers + Combining flags means they are "and"ed together, e.g.: + h+ hidden buffers which are modified + a+ active buffers which are modified + + When using |:filter| the pattern is matched against the + displayed buffer name, e.g.: > + filter /\.vim/ ls +< + *:bad* *:badd* +:bad[d] [+lnum] {fname} + Add file name {fname} to the buffer list, without loading it, + if it wasn't listed yet. If the buffer was previously + deleted, not wiped, it will be made listed again. + If "lnum" is specified, the cursor will be positioned at that + line when the buffer is first entered. Note that other + commands after the + will be ignored. + + *:balt* +:balt [+lnum] {fname} + Like `:badd` and also set the alternate file for the current + window to {fname}. + +:[N]bd[elete][!] *:bd* *:bdel* *:bdelete* *E516* +: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. + 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: > + :.,$-bdelete " delete buffers from the current one to + " last but one + :%bdelete " delete all buffers +< + +:bdelete[!] {bufname} *E93* *E94* + Like ":bdelete[!] [N]", but buffer given by name, see + |{bufname}|. + +:bdelete[!] N1 N2 ... + Do ":bdelete[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:N,Mbdelete[!] Do ":bdelete[!]" for all buffers in the range N to M + |inclusive|. + +:[N]bw[ipeout][!] *:bw* *:bwipe* *:bwipeout* *E517* +:bw[ipeout][!] {bufname} +:N,Mbw[ipeout][!] +:bw[ipeout][!] N1 N2 ... + Like |:bdelete|, but really delete the buffer. Everything + related to the buffer is lost. All marks in this buffer + become invalid, option settings are lost, etc. Don't use this + unless you know what you are doing. Examples: > + :.+,$bwipeout " wipe out all buffers after the current + " one + :%bwipeout " wipe out all buffers +< + +:[N]bun[load][!] *:bun* *:bunload* *E515* +:bun[load][!] [N] + Unload buffer [N] (default: current buffer). The memory + allocated for this buffer will be freed. The buffer remains + in the buffer list. + If the buffer was changed, this fails, unless when [!] is + specified, in which case the changes are lost. + 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. + +:bunload[!] {bufname} + Like ":bunload[!] [N]", but buffer given by name. + Also see |{bufname}|. + +:N,Mbunload[!] Do ":bunload[!]" for all buffers in the range N to M + |inclusive|. + +:bunload[!] N1 N2 ... + Do ":bunload[!]" for buffer N1, N2, etc. The arguments can be + buffer numbers or buffer names (but not buffer names that are + a number). Insert a backslash before a space in a buffer + name. + +:[N]b[uffer][!] [+cmd] [N] *:b* *:bu* *:buf* *:buffer* *E86* + Edit buffer [N] from the buffer list. If [N] is not given, + the current buffer remains being edited. See |:buffer-!| for + [!]. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + The notation with single quotes does not work here, + `:buf 12'345'` uses 12'345 as a buffer name. + Also see |+cmd|. + +:[N]b[uffer][!] [+cmd] {bufname} *{bufname}* + Edit buffer for {bufname} from the buffer list. A partial + name also works, so long as it is unique in the list of + buffers. + Note that a buffer whose name is a number cannot be referenced + by that name; use the buffer number instead. + Insert a backslash before a space in a buffer name. + See |:buffer-!| for [!]. + This will also edit a buffer that is not in the buffer list, + without setting the 'buflisted' flag. + Also see |+cmd|. + +:[N]sb[uffer] [+cmd] [N] *:sb* *:sbuffer* + Split window and edit buffer [N] from the buffer list. If [N] + is not given, the current buffer is edited. Respects the + "useopen" setting of 'switchbuf' when splitting. This will + also edit a buffer that is not in the buffer list, without + setting the 'buflisted' flag. + Also see |+cmd|. + +:[N]sb[uffer] [+cmd] {bufname} + Split window and edit buffer for |{bufname}| from the buffer + list. This will also edit a buffer that is not in the buffer + list, without setting the 'buflisted' flag. + Note: If what you want to do is split the buffer, make a copy + under another name, you can do it this way: > + :w foobar | sp # +< Also see |+cmd|. + +:[N]bn[ext][!] [+cmd] [N] *:bn* *:bnext* *E87* + Go to [N]th next buffer in buffer list. [N] defaults to one. + Wraps around the end of the buffer list. + See |:buffer-!| for [!]. + Also see |+cmd|. + If you are in a help buffer, this takes you to the next help + 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. + + *:sbn* *:sbnext* +:[N]sbn[ext] [+cmd] [N] + Split window and go to [N]th next buffer in buffer list. + Wraps around the end of the buffer list. Uses 'switchbuf' + Also see |+cmd|. + +:[N]bN[ext][!] [+cmd] [N] *:bN* *:bNext* *:bp* *:bprevious* *E88* +:[N]bp[revious][!] [+cmd] [N] + Go to [N]th previous buffer in buffer list. [N] defaults to + one. Wraps around the start of the buffer list. + See |:buffer-!| for [!] and 'switchbuf'. + Also see |+cmd|. + +:[N]sbN[ext] [+cmd] [N] *:sbN* *:sbNext* *:sbp* *:sbprevious* +:[N]sbp[revious] [+cmd] [N] + Split window and go to [N]th previous buffer in buffer list. + Wraps around the start of the buffer list. + Uses 'switchbuf'. + Also see |+cmd|. + +:br[ewind][!] [+cmd] *:br* *:bre* *:brewind* + Go to first buffer in buffer list. If the buffer list is + empty, go to the first unlisted buffer. + See |:buffer-!| for [!]. + +:bf[irst] [+cmd] *:bf* *:bfirst* + Same as |:brewind|. + Also see |+cmd|. + +:sbr[ewind] [+cmd] *:sbr* *:sbrewind* + Split window and go to first buffer in buffer list. If the + buffer list is empty, go to the first unlisted buffer. + Respects the 'switchbuf' option. + Also see |+cmd|. + +:sbf[irst] [+cmd] *:sbf* *:sbfirst* + Same as ":sbrewind". + +:bl[ast][!] [+cmd] *:bl* *:blast* + Go to last buffer in buffer list. If the buffer list is + empty, go to the last unlisted buffer. + See |:buffer-!| for [!]. + +:sbl[ast] [+cmd] *:sbl* *:sblast* + Split window and go to last buffer in buffer list. If the + buffer list is empty, go to the last unlisted buffer. + Respects 'switchbuf' option. + +:[N]bm[odified][!] [+cmd] [N] *:bm* *:bmodified* *E84* + Go to [N]th next modified buffer. Note: this command also + finds unlisted buffers. If there is no modified buffer the + command fails. + +:[N]sbm[odified] [+cmd] [N] *:sbm* *:sbmodified* + Split window and go to [N]th next modified buffer. + Respects 'switchbuf' option. + Note: this command also finds buffers not in the buffer list. + +:[N]unh[ide] [N] *:unh* *:unhide* *:sun* *:sunhide* +:[N]sun[hide] [N] + Rearrange the screen to open one window for each loaded buffer + in the buffer list. When a count is given, this is the + maximum number of windows to open. + +:[N]ba[ll] [N] *:ba* *:ball* *:sba* *:sball* +:[N]sba[ll] [N] Rearrange the screen to open one window for each buffer in + the buffer list. When a count is given, this is the maximum + number of windows to open. 'winheight' also limits the number + of windows opened ('winwidth' if |:vertical| was prepended). + Buf/Win Enter/Leave autocommands are not executed for the new + windows here, that's only done when they are really entered. + When the |:tab| modifier is used new windows are opened in a + new tab, up to 'tabpagemax'. + +Note: All the commands above that start editing another buffer, keep the +'readonly' flag as it was. This differs from the ":edit" command, which sets +the 'readonly' flag each time the file is read. + +============================================================================== +12. Special kinds of buffers *special-buffers* + +Instead of containing the text of a file, buffers can also be used for other +purposes. A few options can be set to change the behavior of a buffer: + 'bufhidden' what happens when the buffer is no longer displayed + in a window. + 'buftype' what kind of a buffer this is + 'swapfile' whether the buffer will have a swap file + 'buflisted' buffer shows up in the buffer list + +A few useful kinds of a buffer: + +quickfix Used to contain the error list or the location list. See + |:cwindow| and |:lwindow|. This command sets the 'buftype' + option to "quickfix". You are not supposed to change this! + 'swapfile' is off. + +help Contains a help file. Will only be created with the |:help| + command. The flag that indicates a help buffer is internal + and can't be changed. The 'buflisted' option will be reset + for a help buffer. + +terminal A terminal window buffer, see |terminal|. The contents cannot + be read or changed until the job ends. + +directory Displays directory contents. Can be used by a file explorer + plugin. The buffer is created with these settings: > + :setlocal buftype=nowrite + :setlocal bufhidden=delete + :setlocal noswapfile +< The buffer name is the name of the directory and is adjusted + when using the |:cd| command. + + *scratch-buffer* +scratch Contains text that can be discarded at any time. It is kept + when closing the window, it must be deleted explicitly. + Settings: > + :setlocal buftype=nofile + :setlocal bufhidden=hide + :setlocal noswapfile +< The buffer name can be used to identify the buffer, if you + give it a meaningful name. + + *unlisted-buffer* +unlisted The buffer is not in the buffer list. It is not used for + normal editing, but to show a help file, remember a file name + or marks. The ":bdelete" command will also set this option, + thus it doesn't completely delete the buffer. Settings: > + :setlocal nobuflisted +< + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/workshop.txt b/runtime/doc/workshop.txt new file mode 100644 index 0000000..9ec30da --- /dev/null +++ b/runtime/doc/workshop.txt @@ -0,0 +1,14 @@ +*workshop.txt* For Vim version 9.1. Last change: 2019 Jan 17 + + + VIM REFERENCE MANUAL by Gordon Prieur + + +Sun Visual WorkShop Features *workshop* *workshop-support* + +The support for WorkShop was removed in patch 8.1.0763 in January 2019. +The product has not been available for a long time and has been replaced by +|NetBeans|. + + + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/xxd-fr.1 b/runtime/doc/xxd-fr.1 new file mode 100644 index 0000000..7aa3ff1 --- /dev/null +++ b/runtime/doc/xxd-fr.1 @@ -0,0 +1,396 @@ +.TH XXD 1 "ao鹴 1996" "Page de manuel pour xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.\" French translation by David Blanchet 2005-03 +.SH NOM +.I xxd +\- convertit en repr閟entation hexad閏imale et inversement. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [fichier_entree [fichier_sortie]] +.br +.B xxd +\-r[evert] [options] [fichier_entree [fichier_sortie]] +.SH DESCRIPTION +.I xxd +cr閑 un fichier contenant la repr閟entation hexad閏imale d'un fichier +binaire ou de l'entr閑 standard. +Il peut 間alement convertir un fichier de codes hexad閏imaux en un fichier +binaire. +Comme +.BR uuencode (1) +et +.BR uudecode (1) +il permet la transmission de donn閑s binaires dans une repr閟entation ASCII +compatible avec le courrier 閘ectronique, mais a l'avantage de d閏oder la +sortie standard. +De plus, il peut 阾re utilis pour appliquer des rustines des fichiers +binaires. +.SH OPTIONS +Si aucun +.I fichier_entree +n'est sp閏ifi, l'entr閑 standard est utilis閑. +Si +.I fichier_entree +correspond au caract鑢e +.RB '\-' +\, l'entr閑 standard est employ閑 comme source des donn閑s en entr閑. +Si aucun +.I fichier_sortie +n'est sp閏ifi (ou qu'un caract鑢e +.RB '\-' +est donn sa place), le r閟ultat est envoy sur la sortie standard. +.PP +NOTE : un analyseur paresseux est utilis. Il ne v閞ifie pas au-del de la +premi鑢e lettre de l'option, moins que cette derni鑢e ne requiert un +param鑤re. +L'espace entre l'option et son param鑤re est optionnel. +Les param鑤res des options peuvent 阾re sp閏ifi閟 en notation d閏imale, +hexad閏imale ou octale. +Ainsi +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +et +.B \-cols 8 +sont tous 閝uivalents. +.TP +.IR \-a " | " \-autoskip +active la fonctionnalit "autoskip" : le caract鑢e '*' remplace les lignes +d'octets nuls. D閟activ閑 par d閒aut. +.TP +.IR \-b " | " \-bits +Convertit en binaires plut魌 qu'en hexad閏imal. +Cette option 閏rit les octets comme une s閝uence de "1" et de "0" au lieu +d'une conversion en hexad閏imal traditionnel. Chaque ligne est pr閏閐閑 par un +num閞o de ligne en hexad閏imal et suivie de la repr閟entation ASCII (ou +EBCDIC) correspondante. Les options \-p, \-i ne fonctionnent pas dans ce +mode. +.TP +.IR "\-c cols " | " \-cols cols" +place +.RI < cols > +octets par ligne. 16 par d閒aut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. +.TP +.IR \-E " | " \-EBCDIC +Passe le codage des caract鑢es de la colonne de droite de ASCII EBCDIC. +Cela ne change pas la repr閟entation hexad閏imale. Cette option est sans effet +quand elle est utilis閑 avec \-r, \-p or \-i. +.TP +.IR "\-g octets " | " \-groupsize octets" +Regroupe les octets (deux chiffres hexad閏imaux ou huit chiffres binaires) +par groupe de +.RI < octets > +\, s閜ar閟 par des espaces blancs. Sp閏ifiez +.I \-g 0 +pour supprimer le regroupement. +.RI < octets > +vaut 2 par d閒aut dans le mode normal et \fI1\fP en +repr閟entation binaire. Le regroupement ne s'applique pas aux styles +Postscript et Include. +.TP +.IR \-h " | " \-help +Affiche un r閟um des commandes disponibles et quitte. Aucune conversion n'est +effectu閑. +.TP +.IR \-i " | " \-include +produit une sortie dans le style #include (fichier C inclure). La d閒inition +compl鑤e d'un tableau statique est 閏rite et est nomm閑 d'apr鑣 le fichier +d'origine, moins que xxd lise depuis l'entr閑 standard. +.TP +.IR "\-l long " | " \-len long" +Arr阾e apr鑣 l'閏riture de +.RI < long > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Produit une conversion continue dans le style Postscript (postscript continuous +hexdump style). +蒰alement connu sous le nom de conversion brute (plain hexdump style). +.TP +.IR \-r " | " \-revert +Op閞ation inverse : convertit un fichier hexad閏imal en un fichier binaire (ou +applique une rustine un fichier binaire). +Si l'閏riture n'a pas lieu sur la sortie standard, xxd 閏rit dans le fichier +qu'il produit sans le tronquer. Utilisez la combinaison +.I \-r \-p +pour lire de l'hexad閏imal brut sans information sur le num閞o des lignes et +sans format de colonnes particulier. Des espaces blancs et coupures de lignes +suppl閙entaires sont autoris閟 n'importe quel endroit. +.TP +.I \-seek d閏alage +Utilis apr鑣 l'option +.IR \-r : +inverse la conversion en ajoutant +.RI < d閏alage > +aux positions dans le fichier donn閑s dans le code hexad閏imal. +.TP +.I \-s [+][\-]d閏alage +D閎ute au +.RI < d閏alage > +absolu ou relatif dans fichier_entree. +\fI+ \fRindique que le d閏alage est relatif la position courante dans +l'entr閑 standard (sans effet si la lecture n'a pas lieu sur l'entr閑 +standard). \fI\- \fRindique un d閏alage en caract鑢es depuis la fin de +l'entr閑 (utilis avec \fI+\fR, d閟igne la position avant la position +actuelle de l'entr閑 standard). +Sans l'option \-s, xxd d閙arre la position courante du fichier. +.TP +.I \-u +Utilise des chiffres hexad閏imaux majuscules. La casse par d閒aut est +minuscule. +.TP +.IR \-v " | " \-version +Affiche la version de xxd. +.SH MISE EN GARDE +.I xxd \-r +effectue des op閞ations internes un peu obscures lors de l'関aluation +des informations sur les num閞os de lignes. Si le fichier de sortie est +adressable, alors les num閞os de lignes au d閎ut de chaque ligne d'hexad閏imal +peuvent 阾re d閟ordonn閑s, des lignes peuvent manquer ou se chevaucher. Dans +ces cas, xxd utilisera lseek(2) pour d閠erminer la prochaine position. Si le +fichier n'est pas adressable, seuls les vides sont autoris閟, et ils seront +combl閟 par des octets nuls. +.PP +.I xxd \-r +ne g閚鑢e aucune erreur lors de l'analyse. Les probl鑝es sont pass閟 +silencieusement. +.PP +Lors de l'閐ition de la repr閟entation hexad閏imale, veuillez noter que +.I xxd \-r +ignore tout ce qui se trouve sur la ligne apr鑣 avoir lu suffisamment de +donn閑s hexad閏imales (voir l'option \-c). Cela signifie 間alement que les +modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignor閑s. La +conversion inverse de donn閑s hexad閏imales brutes (postscript) avec xxd \-r +\-p ne d閜end pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui +ressemble une paire de chiffres hexad閏imaux est interpr閠. +.PP +Remarquez la diff閞ence entre +.br +\fI% xxd \-i fichier\fR +.br +et +.br +\fI% xxd \-i < fichier\fR +.PP +.I xxd \-s \+seek +peut diff閞er de +.IR "xxd \-s seek" , +car lseek(2) est utilis pour revenir en arri鑢e . Le '+' fait une +diff閞ence quand la source des donn閑s est l'entr閑 standard et si la position +dans le fichier de l'entr閑 standard n'est pas au d閎ut du fichier lorsque xxd +est d閙arr et qu'il re鏾it ses donn閑s. +L'exemple suivant peut vous aider comprendre (ou bien vous perdre davantage +encore !)... +.PP +Remettre l'entr閑 standard au d閜art avant de lire ; n閏essaire car 'cat' a +d閖 lu jusqu' la fin de l'entr閑 standard. +.br +\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR +.PP +Convertir partir de la position 0x480 (= 1024 + 128) du fichier. +Le symbole '+' signifie "relativement la position actuelle', ainsi 128 est +ajout aux 1024 octets comptabilis閟 pour dd. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > +donnees_hexa' < fichier\fR +.PP +Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > +donnees_hexa' < fichier\fR +.PP +Toutefois, cette situation est peu fr閝uente et l'utilisation de '+' est +rarement requise. L'auteur pr閒鑢e surveiller les effets de xxd avec strace(1) +ou truss(1) quand \-s est employ. +.SH EXEMPLES +Afficher la totalit du +.B fichier +sauf les trois premi鑢es lignes (0x30 octets en hexad閏imal). +.br +\fI% xxd \-s 0x30 fichier\fR +.PP +afficher les trois derni鑢es lignes (0x30 octets en hexad閏imal) du +.B fichier +\. +.br +\fI% xxd \-s \-0x30 fichier\fR +.PP +.br +Afficher 120 octets convertis en continu, avec 20 octets par ligne. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR +.br +2e54482058584420312022616ffb742031393936 +.br +22202250616765206465206d616e75656c20706f +.br +757220787864220a2e5c220a2e5c222032317374 +.br +204d617920313939360a2e5c22204d616e207061 +.br +676520617574686f723a0a2e5c2220202020546f +.br +6e79204e7567656e74203c746f6e79407363746e +.br +204e7567656e74203c746f6e79407363746e7567 +.br +2e54482058584420312022417567757374203139 +.PP +Convertir les 120 premiers octets de cette page de manuel avec 12 octets par +ligne. +.br +\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a +.br +000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P +.br +0000018: 6167 6520 6465 206d 616e 7565 age de manue +.br +0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". +.br +0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st +.br +000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\\ +.br +0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a +.br +0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" +.br +0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen +.br +000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR +.PP +Patcher la date dans le fichier xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR +.br +\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +Cr閑r un fichier de 65537 octets tous nuls (0x00), +sauf le dernier qui vaut 'A' (0x41 en hexad閏imal). +.br +\fI% echo '010000: 41' | xxd \-r \> fichier\fR +.PP +.br +Convertir le fichier de l'exemple pr閏閐ent avec la fonctionnalit "autoskip". +.br +\fI% xxd \-a \-c 12 fichier\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Cr閑r un fichier d'un octet, contenant seulement le caract鑢e 'A'. +Le nombre apr鑣 '\-r \-s' s'ajoute aux num閞os de lignes trouv閑s dans le +fichier ; les octets initiaux sont supprim閟. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR +.PP +Utiliser xxd comme filtre dans un 閐iteur tel que +.B vim(1) +pour convertir une zone comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd\fR +.PP +Utiliser xxd comme filtre dans un 閐iteur tel que +.B vim(1) +pour r閏up閞er une conversion binaire comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Utiliser xxd comme filtre dans un 閐iteur tel que +.B vim(1) +pour r閏up閞er une ligne convertie. Placez le curseur sur la ligne et tapez : +.br +\fI!!xxd \-r\fR +.PP +Lire des caract鑢es depuis une connexion s閞ie : +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.SH VALEURS DE RETOUR +Les erreurs suivantes sont rapport閑s : +.TP +0 +aucune erreur ne s'est produit. +.TP +\-1 +op閞ation non support閑 ( +.I xxd \-r \-i +reste impossible). +.TP +1 +erreur lors de l'analyse des options. +.TP +2 +probl鑝e avec le fichier d'entr閑. +.TP +3 +probl鑝e avec le fichier de sortie. +.TP +4, 5 +la position sp閏ifi閑 n'est pas atteignable. +.SH VOIR AUSSI +uuencode(1), uudecode(1), patch(1) +.SH AVERTISSEMENTS +L'閠ranget de cet outil refl鑤e celle du cerveau de ses cr閍teurs. +Utilisez cet outil vos risques et p閞ils. Dupliquez vos fichiers. +Surveillez l'outil. Devenez un gourou. +.SH VERSION +Cette page de manuel documente la version 1.7 de xxd. +.SH AUTEUR +(c) 1990-1997 par Juergen Weigert +.br + +.LP +"Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me." +.PP +Distribution libre en citant l'auteur, +.br +gagnez de l'argent, pensez moi, +.br +perdez de l'argent, oubliez-moi. +.PP +Page de manuel d閎ut閑 par Tony Nugent +.br + +.br +Modifications mineures par Bram Moolenaar. +蒬it par Juergen Weigert. +.SH TRADUCTION +Cette page de manuel a 閠 traduite par David Blanchet + 2004-12-24. +Mise jour 2013-05-10, Dominique Pell diff --git a/runtime/doc/xxd-fr.UTF-8.1 b/runtime/doc/xxd-fr.UTF-8.1 new file mode 100644 index 0000000..9c4c4c9 --- /dev/null +++ b/runtime/doc/xxd-fr.UTF-8.1 @@ -0,0 +1,396 @@ +.TH XXD 1 "ao没t 1996" "Page de manuel pour xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.\" French translation by David Blanchet 2005-03 +.SH NOM +.I xxd +\- convertit en repr茅sentation hexad茅cimale et inversement. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [fichier_entree [fichier_sortie]] +.br +.B xxd +\-r[evert] [options] [fichier_entree [fichier_sortie]] +.SH DESCRIPTION +.I xxd +cr茅e un fichier contenant la repr茅sentation hexad茅cimale d'un fichier +binaire ou de l'entr茅e standard. +Il peut 茅galement convertir un fichier de codes hexad茅cimaux en un fichier +binaire. +Comme +.BR uuencode (1) +et +.BR uudecode (1) +il permet la transmission de donn茅es binaires dans une repr茅sentation ASCII +compatible avec le courrier 茅lectronique, mais a l'avantage de d茅coder la +sortie standard. +De plus, il peut 锚tre utilis茅 pour appliquer des rustines 脿 des fichiers +binaires. +.SH OPTIONS +Si aucun +.I fichier_entree +n'est sp茅cifi茅, l'entr茅e standard est utilis茅e. +Si +.I fichier_entree +correspond au caract猫re +.RB '\-' +\, l'entr茅e standard est employ茅e comme source des donn茅es en entr茅e. +Si aucun +.I fichier_sortie +n'est sp茅cifi茅 (ou qu'un caract猫re +.RB '\-' +est donn茅 脿 sa place), le r茅sultat est envoy茅 sur la sortie standard. +.PP +NOTE : un analyseur paresseux est utilis茅. Il ne v茅rifie pas au-del脿 de la +premi猫re lettre de l'option, 脿 moins que cette derni猫re ne requiert un +param猫tre. +L'espace entre l'option et son param猫tre est optionnel. +Les param猫tres des options peuvent 锚tre sp茅cifi茅s en notation d茅cimale, +hexad茅cimale ou octale. +Ainsi +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +et +.B \-cols 8 +sont tous 茅quivalents. +.TP +.IR \-a " | " \-autoskip +active la fonctionnalit茅 "autoskip" : le caract猫re '*' remplace les lignes +d'octets nuls. D茅sactiv茅e par d茅faut. +.TP +.IR \-b " | " \-bits +Convertit en binaires plut么t qu'en hexad茅cimal. +Cette option 茅crit les octets comme une s茅quence de "1" et de "0" au lieu +d'une conversion en hexad茅cimal traditionnel. Chaque ligne est pr茅c茅d茅e par un +num茅ro de ligne en hexad茅cimal et suivie de la repr茅sentation ASCII (ou +EBCDIC) correspondante. Les options \-p, \-i ne fonctionnent pas dans ce +mode. +.TP +.IR "\-c cols " | " \-cols cols" +place +.RI < cols > +octets par ligne. 16 par d茅faut (\-i : 12, \-ps : 30, \-b : 6). Maximum 256. +.TP +.IR \-E " | " \-EBCDIC +Passe le codage des caract猫res de la colonne de droite de ASCII 脿 EBCDIC. +Cela ne change pas la repr茅sentation hexad茅cimale. Cette option est sans effet +quand elle est utilis茅e avec \-r, \-p or \-i. +.TP +.IR "\-g octets " | " \-groupsize octets" +Regroupe les octets (deux chiffres hexad茅cimaux ou huit chiffres binaires) +par groupe de +.RI < octets > +\, s茅par茅s par des espaces blancs. Sp茅cifiez +.I \-g 0 +pour supprimer le regroupement. +.RI < octets > +vaut 2 par d茅faut dans le mode normal et \fI1\fP en +repr茅sentation binaire. Le regroupement ne s'applique pas aux styles +Postscript et Include. +.TP +.IR \-h " | " \-help +Affiche un r茅sum茅 des commandes disponibles et quitte. Aucune conversion n'est +effectu茅e. +.TP +.IR \-i " | " \-include +produit une sortie dans le style #include (fichier C 脿 inclure). La d茅finition +compl猫te d'un tableau statique est 茅crite et est nomm茅e d'apr猫s le fichier +d'origine, 脿 moins que xxd lise depuis l'entr茅e standard. +.TP +.IR "\-l long " | " \-len long" +Arr锚te apr猫s l'茅criture de +.RI < long > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Produit une conversion continue dans le style Postscript (postscript continuous +hexdump style). +脡galement connu sous le nom de 芦 conversion brute 禄 (plain hexdump style). +.TP +.IR \-r " | " \-revert +Op茅ration inverse : convertit un fichier hexad茅cimal en un fichier binaire (ou +applique une rustine 脿 un fichier binaire). +Si l'茅criture n'a pas lieu sur la sortie standard, xxd 茅crit dans le fichier +qu'il produit sans le tronquer. Utilisez la combinaison +.I \-r \-p +pour lire de l'hexad茅cimal brut sans information sur le num茅ro des lignes et +sans format de colonnes particulier. Des espaces blancs et coupures de lignes +suppl茅mentaires sont autoris茅s 脿 n'importe quel endroit. +.TP +.I \-seek d茅calage +Utilis茅 apr猫s l'option +.IR \-r : +inverse la conversion en ajoutant +.RI < d茅calage > +aux positions dans le fichier donn茅es dans le code hexad茅cimal. +.TP +.I \-s [+][\-]d茅calage +D茅bute au +.RI < d茅calage > +absolu ou relatif dans fichier_entree. +\fI+ \fRindique que le d茅calage est relatif 脿 la position courante dans +l'entr茅e standard (sans effet si la lecture n'a pas lieu sur l'entr茅e +standard). \fI\- \fRindique un d茅calage en caract猫res depuis la fin de +l'entr茅e (utilis茅 avec \fI+\fR, d茅signe la position avant la position +actuelle de l'entr茅e standard). +Sans l'option \-s, xxd d茅marre 脿 la position courante du fichier. +.TP +.I \-u +Utilise des chiffres hexad茅cimaux majuscules. La casse par d茅faut est +minuscule. +.TP +.IR \-v " | " \-version +Affiche la version de xxd. +.SH MISE EN GARDE +.I xxd \-r +effectue des op茅rations internes un peu obscures lors de l'茅valuation +des informations sur les num茅ros de lignes. Si le fichier de sortie est +adressable, alors les num茅ros de lignes au d茅but de chaque ligne d'hexad茅cimal +peuvent 锚tre d茅sordonn茅es, des lignes peuvent manquer ou se chevaucher. Dans +ces cas, xxd utilisera lseek(2) pour d茅terminer la prochaine position. Si le +fichier n'est pas adressable, seuls les vides sont autoris茅s, et ils seront +combl茅s par des octets nuls. +.PP +.I xxd \-r +ne g茅n猫re aucune erreur lors de l'analyse. Les probl猫mes sont pass茅s +silencieusement. +.PP +Lors de l'茅dition de la repr茅sentation hexad茅cimale, veuillez noter que +.I xxd \-r +ignore tout ce qui se trouve sur la ligne apr猫s avoir lu suffisamment de +donn茅es hexad茅cimales (voir l'option \-c). Cela signifie 茅galement que les +modifications dans la colonne ASCII (ou EBCDIC) sont toujours ignor茅es. La +conversion inverse de donn茅es hexad茅cimales brutes (postscript) avec xxd \-r +\-p ne d茅pend pas d'un nombre correct de colonnes. Dans ce cas, tout ce qui +ressemble 脿 une paire de chiffres hexad茅cimaux est interpr茅t茅. +.PP +Remarquez la diff茅rence entre +.br +\fI% xxd \-i fichier\fR +.br +et +.br +\fI% xxd \-i < fichier\fR +.PP +.I xxd \-s \+seek +peut diff茅rer de +.IR "xxd \-s seek" , +car lseek(2) est utilis茅 pour 芦 revenir en arri猫re 禄. Le '+' fait une +diff茅rence quand la source des donn茅es est l'entr茅e standard et si la position +dans le fichier de l'entr茅e standard n'est pas au d茅but du fichier lorsque xxd +est d茅marr茅 et qu'il re莽oit ses donn茅es. +L'exemple suivant peut vous aider 脿 comprendre (ou bien vous perdre davantage +encore !)... +.PP +Remettre l'entr茅e standard au d茅part avant de lire ; n茅cessaire car 'cat' a +d茅j脿 lu jusqu'脿 la fin de l'entr茅e standard. +.br +\fI% sh \-c 'cat > donnees_binaires; xxd \-s 0 > donnees_hexa' < fichier\fR +.PP +Convertir 脿 partir de la position 0x480 (= 1024 + 128) du fichier. +Le symbole '+' signifie "relativement 脿 la position actuelle', ainsi 128 est +ajout茅 aux 1024 octets comptabilis茅s pour dd. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +128 > +donnees_hexa' < fichier\fR +.PP +Convertir de fichier depuis la position 0x100 (= 1024 \- 768) du fichier. +.br +\fI% sh \-c 'dd of=donnees_binaires bs=1k count=1; xxd \-s +\-768 > +donnees_hexa' < fichier\fR +.PP +Toutefois, cette situation est peu fr茅quente et l'utilisation de '+' est +rarement requise. L'auteur pr茅f猫re surveiller les effets de xxd avec strace(1) +ou truss(1) quand \-s est employ茅. +.SH EXEMPLES +Afficher la totalit茅 du +.B fichier +sauf les trois premi猫res lignes (0x30 octets en hexad茅cimal). +.br +\fI% xxd \-s 0x30 fichier\fR +.PP +afficher les trois derni猫res lignes (0x30 octets en hexad茅cimal) du +.B fichier +\. +.br +\fI% xxd \-s \-0x30 fichier\fR +.PP +.br +Afficher 120 octets convertis en continu, avec 20 octets par ligne. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd\-fr.1\fR +.br +2e54482058584420312022616ffb742031393936 +.br +22202250616765206465206d616e75656c20706f +.br +757220787864220a2e5c220a2e5c222032317374 +.br +204d617920313939360a2e5c22204d616e207061 +.br +676520617574686f723a0a2e5c2220202020546f +.br +6e79204e7567656e74203c746f6e79407363746e +.br +204e7567656e74203c746f6e79407363746e7567 +.br +2e54482058584420312022417567757374203139 +.PP +Convertir les 120 premiers octets de cette page de manuel avec 12 octets par +ligne. +.br +\fI% xxd \-l 120 \-c 12 xxd\-fr.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2261 .TH XXD 1 "a +.br +000000c: 6ffb 7420 3139 3936 2220 2250 o.t 1996" "P +.br +0000018: 6167 6520 6465 206d 616e 7565 age de manue +.br +0000024: 6c20 706f 7572 2078 7864 220a l pour xxd". +.br +0000030: 2e5c 220a 2e5c 2220 3231 7374 .\"..\" 21st +.br +000003c: 204d 6179 2031 3939 360a 2e5c May 1996..\\ +.br +0000048: 2220 4d61 6e20 7061 6765 2061 " Man page a +.br +0000054: 7574 686f 723a 0a2e 5c22 2020 uthor:..\" +.br +0000060: 2020 546f 6e79 204e 7567 656e Tony Nugen +.br +000006c: 7420 3c74 6f6e 7940 7363 746e t fichier_sortie\fR +.PP +Patcher la date dans le fichier xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd\-fr.1\fR +.br +\fI% xxd \-s 0x38 \-l 13 \-c 13 xxd\-fr.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +Cr茅er un fichier de 65537 octets tous nuls (0x00), +sauf le dernier qui vaut 'A' (0x41 en hexad茅cimal). +.br +\fI% echo '010000: 41' | xxd \-r \> fichier\fR +.PP +.br +Convertir le fichier de l'exemple pr茅c茅dent avec la fonctionnalit茅 "autoskip". +.br +\fI% xxd \-a \-c 12 fichier\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Cr茅er un fichier d'un octet, contenant seulement le caract猫re 'A'. +Le nombre apr猫s '\-r \-s' s'ajoute aux num茅ros de lignes trouv茅es dans le +fichier ; les octets initiaux sont supprim茅s. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> fichier\fR +.PP +Utiliser xxd comme filtre dans un 茅diteur tel que +.B vim(1) +pour convertir une zone comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd\fR +.PP +Utiliser xxd comme filtre dans un 茅diteur tel que +.B vim(1) +pour r茅cup茅rer une conversion binaire comprise entre les marques 'a' et 'z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Utiliser xxd comme filtre dans un 茅diteur tel que +.B vim(1) +pour r茅cup茅rer une ligne convertie. Placez le curseur sur la ligne et tapez : +.br +\fI!!xxd \-r\fR +.PP +Lire des caract猫res depuis une connexion s茅rie : +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.SH VALEURS DE RETOUR +Les erreurs suivantes sont rapport茅es : +.TP +0 +aucune erreur ne s'est produit. +.TP +\-1 +op茅ration non support茅e ( +.I xxd \-r \-i +reste impossible). +.TP +1 +erreur lors de l'analyse des options. +.TP +2 +probl猫me avec le fichier d'entr茅e. +.TP +3 +probl猫me avec le fichier de sortie. +.TP +4, 5 +la position sp茅cifi茅e n'est pas atteignable. +.SH VOIR AUSSI +uuencode(1), uudecode(1), patch(1) +.SH AVERTISSEMENTS +L'茅tranget茅 de cet outil refl猫te celle du cerveau de ses cr茅ateurs. +Utilisez cet outil 脿 vos risques et p茅rils. Dupliquez vos fichiers. +Surveillez l'outil. Devenez un gourou. +.SH VERSION +Cette page de manuel documente la version 1.7 de xxd. +.SH AUTEUR +(c) 1990-1997 par Juergen Weigert +.br + +.LP +"Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me." +.PP +Distribution libre en citant l'auteur, +.br +gagnez de l'argent, pensez 脿 moi, +.br +perdez de l'argent, oubliez-moi. +.PP +Page de manuel d茅but茅e par Tony Nugent +.br + +.br +Modifications mineures par Bram Moolenaar. +脡dit茅 par Juergen Weigert. +.SH TRADUCTION +Cette page de manuel a 茅t茅 traduite par David Blanchet + 2004-12-24. +Mise 脿 jour 2013-05-10, Dominique Pell茅 diff --git a/runtime/doc/xxd-it.1 b/runtime/doc/xxd-it.1 new file mode 100644 index 0000000..9311ed5 --- /dev/null +++ b/runtime/doc/xxd-it.1 @@ -0,0 +1,407 @@ +.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd" +.\" +.\" 21 Maggio 1996 +.\" Autore della pagina di manuale: +.\" Tony Nugent +.\" Modificato da Bram Moolenaar +.SH NOME +.I xxd +\- Produce lista esadecimale da un file binario o viceversa. +.SH SINTASSI +.B xxd +\-h[elp] +.br +.B xxd +[opzioni] [input_file [output_file]] +.br +.B xxd +\-r[evert] [opzioni] [input_file [output_file]] +.SH DESCRIZIONE +.I xxd +crea un'immagine esadecimale di un dato file o dello `standard input'. +Pu anche ricostruire da un'immagine esadecimale il file binario originale. +Come +.BR uuencode (1) +e +.BR uudecode (1) +permette di trasmettere dati binari in una rappresentazione ASCII `a prova +di email', ma ha anche il vantaggio di poter decodificare sullo `standard output'. +Inoltre, pu essere usato per effettuare delle modifiche (patch) a file binari. +.SH OPZIONI +Se non si specifica un +.I input_file +il programma legge dallo `standard input'. +Se +.I input_file + specificato come il carattere +.RB \` \- ' +, l'input letto dallo `standard input'. +Se non si specifica un +.I output_file +(o si mette al suo posto il carattere +.RB \` \- ' +), i risultati sono inviati allo `standard output'. +.PP +Si noti che la scansione dei caratteri "pigra", e non controlla oltre la prima +lettera di un'opzione, a meno che l'opzione sia seguita da un parametro. +Gli spazi fra una singola lettera di opzione e il relativo parametro sono facoltativi. +I parametri delle opzioni possono essere specificati usando la notazione +decimale, esadecimale oppure ottale. +Pertanto +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +e +.B \-cols 8 +sono tutte notazioni equivalenti fra loro. +.PP +.TP +.IR \-a " | " \-autoskip +Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off. +.TP +.IR \-b " | " \-bits +Richiesta di un'immagine binaria (cifre binarie), invece che esadecimale. +Quest'opzione scrive un byte come otto cifre "1" e "0" invece di usare i +numeri esadecimali. Ogni riga preceduta da un indirizzo in esadecimale e +seguita da una decodifica ASCII (o EBCDIC). Le opzioni \-p, \-i, +specificabili dalla riga comando, non funzionano in questo modo. +.TP +.IR "\-c colonne " | " \-cols colonne" +In ogni riga sono formattate +.RI < colonne > +colonne. Valore di default 16 (\-i: 12, \-ps: 30, \-b: 6). +Non c' un valore massimo per \-ps; se si specifica 0 viene scritta un'unica lunga riga di output. +.TP +.IR \-C " | " \-capitalize +Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa \-i. +.TP +.IR \-E " | " \-EBCDIC +Cambia la codifica della colonna di destra da ASCII a EBCDIC. +Questo non modifica la rappresentazione esadecimale. Non ha senso +specificare quest'opzione in combinazione con \-r, \-p o \-i. +.TP +.IR \-e +Considera la lista esadecimale come avente codifica `little-endian'. +Quest'opzione tratta i gruppi di byte come parole in codifica `little-endian'. +Il raggruppamento di default dei byte a 4 a 4 pu essere cambiato usando +.RI "" \-g . +Quest'opzione si applica solo alla lista esadecimale, Lasciando inalterata +la rappresentazione ASCII (or EBCDIC). +Le opzioni della riga di comando +\-r, \-p, \-i non funzionano in questa modalit. +.TP +.IR "\-g numero " | " \-groupsize numero" +Separa ogni gruppo di +.RI < numero > +byte in output (di due caratteri esadecimali o otto caratteri binari ognuno) con uno spazio bianco. +Specificando +.I \-g 0 +i byte di output non sono separati da alcuno spazio. +.RI < Numero "> ha come valore di default " 2 +in modalit normale [esadecimale], \fI4\fP in modalit `little-endian' e \fI1\fP in modalit binaria. +Il raggruppamento non si applica agli stili `PostScript' e `include'. +.TP +.IR \-h " | " \-help +Stampa un sommario dei comandi disponibili ed esce. Non viene fatto null'altro. +.TP +.IR \-i " | " \-include +L'output un file `include' in C. Viene preparata la definizione completa del +vettore (col nome del file di input), tranne quando xxd legga dallo `standard input'. +.TP +.IR "\-l numero " | " \-len numero" +Il programma esce dopo aver scritto +.RI < numero > +byte. +.TP +.I "\-n nome " | " \-name nome" +Specifica il nome del vettore in output quando si usa \-i. Il vettore viene chiamato +\fInome\fP e la sua lunghezza viene chiamata \fInome\fP_len. +.TP +.I \-o incremento +Aggiunge +.RI < incremento > +alla posizione visualizzata dei byte del file. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +L'output nello stile di un dump esadecimale continuo sotto postscript. +Noto anche come stile esadecimale semplice. +.TP +.IR \-r " | " \-revert +Ricostruisce: converte (o mette una patch) da immagine esadecimale, a file binario. +Se non scrive sullo `standard output', xxd scrive nel file di output in maniera +continua, senza interruzioni. Usare la combinazione +.I \-r \-p +per leggere un dump in stile esadecimale semplice, senza l'informazione del numero +di riga e senza un particolare tracciato di colonna. Spazi o righe vuote +possono essere presenti dappertutto [e vengono ignorati]. Usare la combinazione +.I \-r \-b +per leggere un dump binario, invece che un dump esadecimale. +.TP +.IR \-R " "[quando] +Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi +lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a +distinguere i caratteri stampabili da quelli non stampabili. +.I quando +pu assumere i valori +.BR never ", " always ", o " auto . +Quando la variabile d'ambiente +.BR $NO_COLOR + impostata, la colorazione viene disabilitata. +.TP +.I \-seek distanza +Usato con l'opzione +.IR \-r : +(ricostruzione), +.RI < distanza > +viene aggiunta alla posizione nel file trovata nella immagine esadecimale. +.TP +.I \-s [+][\-]seek +Inizia a +.RI < seek > +byte assoluti (o relativi) di distanza all'interno di input_file. +\fI+ \fRindica che il `seek' relativo alla posizione corrente nel file `standard input' +(non significativo quando non si legge da `standard input'). \fI\- \fRindica che il +`seek' dovrebbe posizionarsi al numero specificato di caratteri dalla fine dell'input +(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 \-u +Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole. +.TP +.IR \-v " | " \-version +Visualizza la stringa contenente la versione del programma. +.SH ATTENZIONE +.PP +.I xxd \-r + capace di operare "magie" nell'utilizzare l'informazione "numero di riga". +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. +.PP +.I xxd \-r +non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati. +.PP +Nel modificare immagini esadecimali, si tenga conto che +.I xxd \-r +salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali +(vedere opzione \-c). Ci implica pure che le modifiche alle colonne di caratteri +stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine +esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali interpretata [e utilizzata]. +.PP +Notare la differenza fra +.br +\fI% xxd \-i file\fR +.br +e +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +pu comportarsi in modo diverso da +.IR "xxd \-s seek" , +perch lseek(2) usata per tornare indietro nel file di input. Il '+' +fa differenza se il file di input lo `standard input', e se la posizione nel +file di `standard input' non all'inizio del file quando xxd eseguito, e riceve input. +I seguenti esempi possono contribuire a chiarire il concetto (o ad oscurarlo!)... +.PP +Riavvolge lo `standard input' prima di leggere; necessario perch `cat' +ha gi letto lo stesso file fino alla fine dello `standard input'. +.br +\fI% sh \-c "cat > copia_normale; xxd \-s 0 > copia_esadecimale" < file\fR +.PP +Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi. +Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128' +si aggiunge a 1k (1024) dove `dd' si era fermato. +.br +\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale" < file\fR +.PP +Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti. +.br +\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file +.PP +Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai. +L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s. +.SH ESEMPI +.PP +.br +Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di +.BR file . +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +Stampa 3 righe (0x30 byte in esadecimale) alla fine di +.BR file . +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Stampa 120 byte come immagine esadecimale continua con 20 byte per riga. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR +.br + +.br +Modificare (patch) la data nel file xxd.1 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +Creare un file di 65537 byte tutto a 0x00, +tranne l'ultimo carattere che una 'A' (esadecimale 0x41). +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +Stampa una immagine esadecimale del file di cui sopra con opzione autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Creare un file di 1 byte che contiene il solo carattere 'A'. +Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file; +in pratica, i byte precedenti non sono stampati. +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ottenere l'immagine esadecimale della parte di file fra i marcatori `a' e `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ricostruire un pezzo di file binario da un'immagine esadecimale fra i marcatori `a' e `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ricostruire una sola riga di file binario da un'immagine esadecimale. Portare il cursore sopra la riga e battere: +.br +\fI!!xxd \-r\fR +.PP +Leggere singoli caratteri da una linea seriale +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH CODICI DI RITORNO +Il programma pu restituire questi codici di errore: +.TP +0 +nessun errore rilevato. +.TP +\-1 +operazione non supportata +\%(\c +.I xxd \-r \-i +non ancora possible). +.TP +1 +errore durante la scansione parametri. +.TP +2 +problemi con il file di input. +.TP +3 +problemi con il file di output. +.TP +4,5 +posizione `seek' specificata non raggiungibile all'interno del file. +.SH VEDERE ANCHE +uuencode(1), uudecode(1), patch(1) +.br +.SH AVVERTIMENTI +La stranezza dello strumento rispecchia la mente del suo creatore. +Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago. +.br +.SH VERSIONE +Questa pagina di manuale documenta la versione 1.7 di xxd. +.SH AUTORE +.br +(c) 1990-1997 Juergen Weigert +.br + +.LP +Distribuite liberamente ed attribuitemi il credito, +.br +fate soldi e condivideteli con me +.br +perdete soldi e non venite a chiederli a me. +.PP +Pagina di manuale iniziata da Tony Nugent +.br + +.br +Piccole modifiche di Bram Moolenaar. +Modificato da Juergen Weigert. +.PP diff --git a/runtime/doc/xxd-it.UTF-8.1 b/runtime/doc/xxd-it.UTF-8.1 new file mode 100644 index 0000000..66df3ff --- /dev/null +++ b/runtime/doc/xxd-it.UTF-8.1 @@ -0,0 +1,407 @@ +.TH XXD 1 "Agosto 1996" "Pagina di manuale per xxd" +.\" +.\" 21 Maggio 1996 +.\" Autore della pagina di manuale: +.\" Tony Nugent +.\" Modificato da Bram Moolenaar +.SH NOME +.I xxd +\- Produce lista esadecimale da un file binario o viceversa. +.SH SINTASSI +.B xxd +\-h[elp] +.br +.B xxd +[opzioni] [input_file [output_file]] +.br +.B xxd +\-r[evert] [opzioni] [input_file [output_file]] +.SH DESCRIZIONE +.I xxd +crea un'immagine esadecimale di un dato file o dello `standard input'. +Pu貌 anche ricostruire da un'immagine esadecimale il file binario originale. +Come +.BR uuencode (1) +e +.BR uudecode (1) +permette di trasmettere dati binari in una rappresentazione ASCII `a prova +di email', ma ha anche il vantaggio di poter decodificare sullo `standard output'. +Inoltre, pu貌 essere usato per effettuare delle modifiche (patch) a file binari. +.SH OPZIONI +Se non si specifica un +.I input_file +il programma legge dallo `standard input'. +Se +.I input_file +猫 specificato come il carattere +.RB \` \- ' +, l'input 猫 letto dallo `standard input'. +Se non si specifica un +.I output_file +(o si mette al suo posto il carattere +.RB \` \- ' +), i risultati sono inviati allo `standard output'. +.PP +Si noti che la scansione dei caratteri 猫 "pigra", e non controlla oltre la prima +lettera di un'opzione, a meno che l'opzione sia seguita da un parametro. +Gli spazi fra una singola lettera di opzione e il relativo parametro sono facoltativi. +I parametri delle opzioni possono essere specificati usando la notazione +decimale, esadecimale oppure ottale. +Pertanto +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +e +.B \-cols 8 +sono tutte notazioni equivalenti fra loro. +.PP +.TP +.IR \-a " | " \-autoskip +Richiesta di omissione: Un singolo '*' rimpiazza righe a zeri binari. Default: off. +.TP +.IR \-b " | " \-bits +Richiesta di un'immagine binaria (cifre binarie), invece che esadecimale. +Quest'opzione scrive un byte come otto cifre "1" e "0" invece di usare i +numeri esadecimali. Ogni riga 猫 preceduta da un indirizzo in esadecimale e +seguita da una decodifica ASCII (o EBCDIC). Le opzioni \-p, \-i, +specificabili dalla riga comando, non funzionano in questo modo. +.TP +.IR "\-c colonne " | " \-cols colonne" +In ogni riga sono formattate +.RI < colonne > +colonne. Valore di default 16 (\-i: 12, \-ps: 30, \-b: 6). +Non c'猫 un valore massimo per \-ps; se si specifica 0 viene scritta un'unica lunga riga di output. +.TP +.IR \-C " | " \-capitalize +Mette in maiuscolo i nomi di variabili nello stile delle `include' C, se si usa \-i. +.TP +.IR \-E " | " \-EBCDIC +Cambia la codifica della colonna di destra da ASCII a EBCDIC. +Questo non modifica la rappresentazione esadecimale. Non ha senso +specificare quest'opzione in combinazione con \-r, \-p o \-i. +.TP +.IR \-e +Considera la lista esadecimale come avente codifica `little-endian'. +Quest'opzione tratta i gruppi di byte come parole in codifica `little-endian'. +Il raggruppamento di default dei byte a 4 a 4 pu貌 essere cambiato usando +.RI "" \-g . +Quest'opzione si applica solo alla lista esadecimale, Lasciando inalterata +la rappresentazione ASCII (or EBCDIC). +Le opzioni della riga di comando +\-r, \-p, \-i non funzionano in questa modalit脿. +.TP +.IR "\-g numero " | " \-groupsize numero" +Separa ogni gruppo di +.RI < numero > +byte in output (di due caratteri esadecimali o otto caratteri binari ognuno) con uno spazio bianco. +Specificando +.I \-g 0 +i byte di output non sono separati da alcuno spazio. +.RI < Numero "> ha come valore di default " 2 +in modalit脿 normale [esadecimale], \fI4\fP in modalit脿 `little-endian' e \fI1\fP in modalit脿 binaria. +Il raggruppamento non si applica agli stili `PostScript' e `include'. +.TP +.IR \-h " | " \-help +Stampa un sommario dei comandi disponibili ed esce. Non viene fatto null'altro. +.TP +.IR \-i " | " \-include +L'output 猫 un file `include' in C. Viene preparata la definizione completa del +vettore (col nome del file di input), tranne quando xxd legga dallo `standard input'. +.TP +.IR "\-l numero " | " \-len numero" +Il programma esce dopo aver scritto +.RI < numero > +byte. +.TP +.I "\-n nome " | " \-name nome" +Specifica il nome del vettore in output quando si usa \-i. Il vettore viene chiamato +\fInome\fP e la sua lunghezza viene chiamata \fInome\fP_len. +.TP +.I \-o incremento +Aggiunge +.RI < incremento > +alla posizione visualizzata dei byte del file. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +L'output 猫 nello stile di un dump esadecimale continuo sotto postscript. +Noto anche come stile esadecimale semplice. +.TP +.IR \-r " | " \-revert +Ricostruisce: converte (o mette una patch) da immagine esadecimale, a file binario. +Se non scrive sullo `standard output', xxd scrive nel file di output in maniera +continua, senza interruzioni. Usare la combinazione +.I \-r \-p +per leggere un dump in stile esadecimale semplice, senza l'informazione del numero +di riga e senza un particolare tracciato di colonna. Spazi o righe vuote +possono essere presenti dappertutto [e vengono ignorati]. Usare la combinazione +.I \-r \-b +per leggere un dump binario, invece che un dump esadecimale. +.TP +.IR \-R " "[quando] +Nell'output i valori esadecimali e i caratteri corrispondenti hanno entrambi +lo stesso colore, a seconda del valore esadecimale. Utile soprattutto a +distinguere i caratteri stampabili da quelli non stampabili. +.I quando +pu貌 assumere i valori +.BR never ", " always ", o " auto . +Quando la variabile d'ambiente +.BR $NO_COLOR +猫 impostata, la colorazione viene disabilitata. +.TP +.I \-seek distanza +Usato con l'opzione +.IR \-r : +(ricostruzione), +.RI < distanza > +viene aggiunta alla posizione nel file trovata nella immagine esadecimale. +.TP +.I \-s [+][\-]seek +Inizia a +.RI < seek > +byte assoluti (o relativi) di distanza all'interno di input_file. +\fI+ \fRindica che il `seek' 猫 relativo alla posizione corrente nel file `standard input' +(non significativo quando non si legge da `standard input'). \fI\- \fRindica che il +`seek' dovrebbe posizionarsi al numero specificato di caratteri dalla fine dell'input +(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 \-u +Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole. +.TP +.IR \-v " | " \-version +Visualizza la stringa contenente la versione del programma. +.SH ATTENZIONE +.PP +.I xxd \-r +猫 capace di operare "magie" nell'utilizzare l'informazione "numero di riga". +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. +.PP +.I xxd \-r +non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati. +.PP +Nel modificare immagini esadecimali, si tenga conto che +.I xxd \-r +salta il resto della riga, dopo aver letto i caratteri contenenti dati esadecimali +(vedere opzione \-c). Ci貌 implica pure che le modifiche alle colonne di caratteri +stampabili ASCII (o EBCDIC) sono sempre ignorate. La ricostruzione da un file immagine +esadecimale in stile semplice (postscript) con xxd \-r \-p non dipende dal numero corretto di colonne. In questo caso, qualsiasi cosa assomigli a una coppia di cifre esadecimali 猫 interpretata [e utilizzata]. +.PP +Notare la differenza fra +.br +\fI% xxd \-i file\fR +.br +e +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +pu貌 comportarsi in modo diverso da +.IR "xxd \-s seek" , +perch茅 lseek(2) 猫 usata per tornare indietro nel file di input. Il '+' +fa differenza se il file di input 猫 lo `standard input', e se la posizione nel +file di `standard input' non 猫 all'inizio del file quando xxd 猫 eseguito, e riceve input. +I seguenti esempi possono contribuire a chiarire il concetto (o ad oscurarlo!)... +.PP +Riavvolge lo `standard input' prima di leggere; necessario perch茅 `cat' +ha gi脿 letto lo stesso file fino alla fine dello `standard input'. +.br +\fI% sh \-c "cat > copia_normale; xxd \-s 0 > copia_esadecimale" < file\fR +.PP +Stampa immagine esadecimale dalla posizione file 0x480 (=1024+128) in poi. +Il segno `+' vuol dire "rispetto alla posizione corrente", quindi il `128' +si aggiunge a 1k (1024) dove `dd' si era fermato. +.br +\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +128 > esadecimale" < file\fR +.PP +Immagine esadecimale dalla posizione 0x100 (=1024\-768 ) del file in avanti. +.br +\fI% sh \-c "dd of=normale bs=1k count=1; xxd \-s +\-768 > esadecimale" < file +.PP +Comunque, questo capita raramente, e l'uso del `+' non serve quasi mai. +L'autore preferisce monitorare il comportamento di xxd con strace(1) o truss(1), quando si usa l'opzione \-s. +.SH ESEMPI +.PP +.br +Stampa tutto tranne le prime tre righe (0x30 byte in esadecimale) di +.BR file . +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +Stampa 3 righe (0x30 byte in esadecimale) alla fine di +.BR file . +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Stampa 120 byte come immagine esadecimale continua con 20 byte per riga. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +Stampa i primi 120 byte della pagina di manuale xxd.1 a 12 byte per riga. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR +.br + +.br +Modificare (patch) la data nel file xxd.1 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +Creare un file di 65537 byte tutto a 0x00, +tranne l'ultimo carattere che 猫 una 'A' (esadecimale 0x41). +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +Stampa una immagine esadecimale del file di cui sopra con opzione autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Creare un file di 1 byte che contiene il solo carattere 'A'. +Il numero dopo '\-r \-s' viene aggiunto a quello trovato nel file; +in pratica, i byte precedenti non sono stampati. +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ottenere l'immagine esadecimale della parte di file fra i marcatori `a' e `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ricostruire un pezzo di file binario da un'immagine esadecimale fra i marcatori `a' e `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Usare xxd come filtro all'interno di un editor come +.B vim(1) +per ricostruire una sola riga di file binario da un'immagine esadecimale. Portare il cursore sopra la riga e battere: +.br +\fI!!xxd \-r\fR +.PP +Leggere singoli caratteri da una linea seriale +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH CODICI DI RITORNO +Il programma pu貌 restituire questi codici di errore: +.TP +0 +nessun errore rilevato. +.TP +\-1 +operazione non supportata +\%(\c +.I xxd \-r \-i +non ancora possible). +.TP +1 +errore durante la scansione parametri. +.TP +2 +problemi con il file di input. +.TP +3 +problemi con il file di output. +.TP +4,5 +posizione `seek' specificata non raggiungibile all'interno del file. +.SH VEDERE ANCHE +uuencode(1), uudecode(1), patch(1) +.br +.SH AVVERTIMENTI +La stranezza dello strumento rispecchia la mente del suo creatore. +Usate a vostro rischio e pericolo. Copiate i file. Tracciate l'esecuzione. Diventate un mago. +.br +.SH VERSIONE +Questa pagina di manuale documenta la versione 1.7 di xxd. +.SH AUTORE +.br +(c) 1990-1997 Juergen Weigert +.br + +.LP +Distribuite liberamente ed attribuitemi il credito, +.br +fate soldi e condivideteli con me +.br +perdete soldi e non venite a chiederli a me. +.PP +Pagina di manuale iniziata da Tony Nugent +.br + +.br +Piccole modifiche di Bram Moolenaar. +Modificato da Juergen Weigert. +.PP diff --git a/runtime/doc/xxd-ja.UTF-8.1 b/runtime/doc/xxd-ja.UTF-8.1 new file mode 100644 index 0000000..dabc477 --- /dev/null +++ b/runtime/doc/xxd-ja.UTF-8.1 @@ -0,0 +1,395 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH 鍚嶅墠 +.I xxd +\- 16 閫层儉銉炽儣銈掍綔鎴愩仐銇熴倞銆佸厓銇埢銇椼仧銈娿 +.SH 鏇稿紡 +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH 瑾槑 +銉曘偂銈ゃ儷銈勬婧栧叆鍔涖亱銈 16 閫层儉銉炽儣銈掍綔鎴愩仐銇俱仚銆 +16 閫层儉銉炽儣銇嬨倝鍏冦伄銉愩偆銉娿儶銇埢銇欍亾銇ㄣ倐銇с亶銇俱仚銆 +.BR uuencode (1) +銈 +.BR uudecode (1) +銇倛銇嗐伀銆併儛銈ゃ儕銉儑銉笺偪銈掋併儭銉笺儷銇布銈婁粯銇戝彲鑳姐仾 ASCII 褰㈠紡銇鎻涖仹銇嶃仧銈娿佹婧栧嚭鍔涖伀鍑哄姏銇欍倠銇撱仺銈傘仹銇嶃伨銇欍 +銇曘倝銇併儛銈ゃ儕銉儠銈°偆銉伀銉戙儍銉併倰褰撱仸銈嬨仺銇勩亞浣裤亜鏂广倐銇с亶銇俱仚銆 +.SH 銈儣銈枫儳銉 +.I infile +銈掓寚瀹氥仐銇亱銇c仧鍫村悎銇佹婧栧叆鍔涖亴瑾伩杈笺伨銈屻伨銇欍 +.I infile +銇 +.RB \` \- ' +銈掓寚瀹氥仐銇熷牬鍚堛倐銆佹婧栧叆鍔涖亱銈夎銇胯炯銇俱倢銇俱仚銆 +.I outfile +銈掓寚瀹氥仐銇亱銇c仧 (銇俱仧銇 +.RB \` \- ' +銈掓寚瀹氥仐銇) 鍫村悎銇佹婧栧嚭鍔涖伀鍑哄姏銇曘倢銇俱仚銆 +.PP +寮曟暟銇В閲堝嚘鐞嗐伅閬╁綋銇伄銇ф敞鎰忋仐銇︺亸銇犮仌銇勩 +銉戙儵銉°兗銈裤倰鍙栥倝銇亜寮曟暟銇渶鍒濄伄涓鏂囧瓧銇犮亼銉併偋銉冦偗銇曘倢銇俱仚銆 +寮曟暟銇枃瀛椼仺銉戙儵銉°兗銈裤伄闁撱伄銈广儦銉笺偣銇渷鐣ュ彲鑳姐仹銇欍 +銉戙儵銉°兗銈裤伅 10 閫叉暟銆16 閫叉暟銆8 閫叉暟銇ф寚瀹氥仹銇嶃伨銇欍 +.BR \-c8 +銆 +.BR "\-c 8" +銆 +.B \-c 010 +銆 +.B \-cols 8 +銇仚銇广仸鍚屻仒鎰忓懗銇с仚銆 +.PP +.TP +.IR \-a " | " \-autoskip +銈兗銉堛偣銈儍銉: 閫g稓銇椼仧 nul 琛屻倰涓銇ゃ伄 '*' 銇х疆銇嶆彌銇堛倠銆 +.TP +.IR \-b " | " \-bits +銉撱儍銉 (2閫叉暟) 銉銉炽儣銆 +1 銈偗銉嗐儍銉堛亴 "1" 銇 "0" 銇 8 鏂囧瓧銇у嚭鍔涖仌銈屻伨銇欍 +鍚勮銇闋伀銇 16 閫叉暟銇鐣彿銇岃〃绀恒仌銈屻伨銇欍 +琛屾湯銇伅 ASCII (銇俱仧銇 EBCDIC) 銇ц〃銇椼仧鍫村悎銇枃瀛椼亴琛ㄧず銇曘倢銇俱仚銆 +銇撱伄銉€兗銉夈仹銇 \-p銆乗-i 銇鑳姐仐銇俱仜銈撱 +.TP +.IR \-e +銉儓銉偍銉炽儑銈c偄銉炽伄 16 閫层儉銉炽儣銇垏銈婃浛銇堛倠銆 +銇撱伄銈儣銈枫儳銉炽伅銆併儛銈ゃ儓銇偘銉兗銉椼倰銉儓銉偍銉炽儑銈c偄銉炽伄銉愩偆銉堥爢銇儻銉笺儔銇ㄣ仐銇︽壉銇勩伨銇欍 +妯欐簴銇偘銉兗銉斻兂銈般伅 4 銉愩偆銉堛仹銇欍亴銆 +.RI "" \-g +銈掍娇銇嗐亾銇ㄣ仹澶夋洿鍙兘銇с仚銆 +銇撱伄銈儣銈枫儳銉炽伅 16 閫层儉銉炽儣銇伩銇仼鐢ㄣ仌銈屻丄SCII (銇傘倠銇勩伅 EBCDIC) +琛ㄧず銇鏇淬仌銈屻伨銇涖倱銆 +銇撱伄銉€兗銉夈仹銇 \-r銆乗-p銆乗-i 銇鑳姐仐銇俱仜銈撱 +.TP +.IR "\-c cols " | " \-cols cols" +涓琛 +.RI < cols > +銈偗銉嗐儍銉堛仹鍑哄姏銇欍倠銆傛婧栬ō瀹氥伅 16 (\-i: 12, \-ps: 30, \-b: 6)銆傛渶澶 256銆 +\-ps 銇伅鏈澶уゃ亴銇傘倞銇俱仜銈撱 \-ps 浠樸亶銇牬鍚堛0 銈掓寚瀹氥仚銈嬨仺鍗樹竴銇暦銇勮銇у嚭鍔涖仌銈屻伨銇欍 +.TP +.IR \-C " | " \-capitalize +\-i 銈掍娇鐢ㄣ仐銇熼殯銇丆 銈ゃ兂銈儷銉笺儔銉曘偂銈ゃ儷褰㈠紡銇鏁板悕銈掑ぇ鏂囧瓧銇仚銈嬨 +.TP +.IR \-E " | " \-EBCDIC +鍙崇銇嚭鍔涖仌銈屻倠鏂囧瓧銇偍銉炽偝銉笺儑銈c兂銈般倰 ASCII 銇嬨倝 EBCDIC 銇鏇淬仚銈嬨 +16 閫层儉銉炽儣銇嚭鍔涘舰寮忋伅澶夋洿銇曘倢銇俱仜銈撱 +\-r銆乗-p銆乗-i 銇屽悓鏅傘伀鎸囧畾銇曘倢銇熷牬鍚堛伅浣曘伄鍔规灉銈傘亗銈娿伨銇涖倱銆 +.TP +.IR "\-g bytes " | " \-groupsize bytes" +鍑哄姏銈 +.RI < bytes > +銉愩偆銉 (2 鏂囧瓧銇 16 閫叉暟銆併伨銇熴伅 8 鏂囧瓧銇 2 閫叉暟) 銇斻仺銇偣銉氥兗銈广仹鍖哄垏銈娿伨銇欍 +鍖哄垏銈夈仛銇嚭鍔涖仚銈嬨伀銇 +.I \-g 0 +銈掓寚瀹氥仐銇︺亸銇犮仌銇勩 +.RI < Bytes > +銇婧栬ō瀹氥伅 \fI2\fP 銇с併儶銉堛儷銈ㄣ兂銉囥偅銈€兂銉€兗銉夈伄鍫村悎銇 \fI4\fP 銆 +2 閫层儉銉炽儣銇牬鍚堛伅 \fI1\fP 銇с仚銆 +銉濄偣銉堛偣銈儶銉椼儓褰㈠紡銈勩偆銉炽偗銉兗銉夊舰寮忋仹鍑哄姏銇欍倠銇ㄣ亶銇併亾銇偑銉椼偡銉с兂銇娇銈忋倢銇俱仜銈撱 +.TP +.IR \-h " | " \-help +銈炽優銉炽儔銇鏄庛倰鍑哄姏銇椼仸绲備簡銇欍倠銆傚鎻涖伅瀹熻銇曘倢銇俱仜銈撱 +.TP +.IR \-i " | " \-include +C 銈ゃ兂銈儷銉笺儔銉曘偂銈ゃ儷褰㈠紡銇у嚭鍔涖仚銈嬨 +鍏ュ姏銉曘偂銈ゃ儷銇悕鍓嶃亴浠樸亼銈夈倢銇熼潤鐨勯厤鍒椼伄瀹氱京銇屽嚭鍔涖仌銈屻伨銇欍 +妯欐簴鍏ュ姏銇牬鍚堛伅瀹氱京銇腑韬仩銇戝嚭鍔涖仌銈屻伨銇欍 +.TP +.IR "\-l len " | " \-len len" +.RI < len > +銈偗銉嗐儍銉堛仩銇戝嚭鍔涖仚銈嬨 +.TP +.I "\-n name " | " \-name name" +\-i 銇屼娇銈忋倢銇熴仺銇嶃伀澶夋暟鍚嶃伄鍑哄姏銈掍笂鏇搞亶銇欍倠銆 +閰嶅垪銇 \fIname\fP 銇ㄥ悕浠樸亼銈夈倢銆侀暦銇曘伅 \fIname\fP_len 銇ㄥ悕浠樸亼銈夈倢銇俱仚銆 +.TP +.I \-o offset +琛ㄧず銇曘倢銈嬨儠銈°偆銉綅缃伀 +.RI < offset > +銈掑姞绠椼仚銈嬨 +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +銉濄偣銉堛偣銈儶銉椼儓褰㈠紡銇 16 閫层儉銉炽儣銈掑嚭鍔涖仚銈嬨傚垾鍚 銉椼儸銉笺兂 16 閫层儉銉炽儣銆 +.TP +.IR \-r " | " \-revert +鍏冦伀鎴汇仚: 16 閫层儉銉炽儣銇嬨倝銉愩偆銉娿儶褰㈠紡銇鎻 (銇俱仧銇儜銉冦儊) 銇椼伨銇欍 +銉曘偂銈ゃ儷銇稿嚭鍔涖仚銈嬪牬鍚堛佸嚭鍔涘厛銇儠銈°偆銉伅鍒囥倞瑭般倎銇曘倢銇俱仜銈撱 +琛岀暘鍙枫倓鐗瑰畾銇浉寮忋亴銇亜銉椼儸銉笺兂 16 閫层儉銉炽儣銈掕銇胯炯銈鍫村悎銇 +.I \-r \-p +銇祫銇垮悎銈忋仜銈掍娇銇c仸銇忋仩銇曘亜銆傜┖鐧姐仺鏀硅銇劇瑕栥仌銈屻伨銇欍 +16 閫层儉銉炽儣銇唬銈忋倞銇儞銉冦儓銉銉炽儣銈掕銇胯炯銈銇伅銆 +.I \-r \-b +銇祫銇垮悎銈忋仜銈掍娇銇c仸銇忋仩銇曘亜銆 +.TP +.IR \-R " " when +16 閫层伄鍊ゃ伀鍩恒仴銇勩仸銆16 閫层伄鍊ゃ仺銇濄伄鍊ゃ伄涓℃柟銇屽悓銇樿壊銇с偒銉┿兗琛ㄧず銇曘倢銈嬨 +銇熴亜銇︺亜銇佽〃绀哄彲鑳芥枃瀛椼仺闈炶〃绀哄彲鑳芥枃瀛椼倰鍖哄垾銇欍倠銇伀鏈夌敤銇с仚銆 +.I \fIwhen\fP +銇 +.BR never ", " always ", 銇傘倠銇勩伅 " auto +銇亜銇氥倢銇嬨仹銇欍 +.BR $NO_COLOR +鐠板澶夋暟銇岃ō瀹氥仌銈屻仸銇勩倠銇ㄣ亶銇併偒銉┿兗琛ㄧず銇劇鍔瑰寲銇曘倢銇俱仚銆 +.TP +.I \-seek offset +.IR \-r +銇緦銇т娇銈忋倢銇熷牬鍚: 16 閫层儉銉炽儣銈掑嚭鍔涖仚銈嬨儠銈°偆銉伄浣嶇疆銇 +.RI < offset > +銈掑姞銇堛倠銆 +.TP +.I \-s [+][\-]seek +infile 銇 +.RI < seek > +銉愩偆銉堢洰 (绲跺浣嶇疆銆併伨銇熴伅鐩稿浣嶇疆) 銇嬨倝闁嬪銇欍倠銆 +\fI+ \fR銇佺従鍦ㄣ伄妯欐簴鍏ュ姏銇綅缃亱銈夌浉瀵剧殑銇綅缃倰绀恒仐銇俱仚 +(妯欐簴鍏ュ姏銇嬨倝瑾伩杈笺個銇ㄣ亶銇伩鎰忓懗銇屻亗銈娿伨銇)銆 +\fI\- \fR銇佸叆鍔涖伄绲傘倧銈娿亱銈夈伄鏂囧瓧鏁般倰绀恒仐銇俱仚 +(\fI+\fR 銇ㄥ悓鏅傘伀鎸囧畾銇椼仧鍫村悎銇佺従鍦ㄣ伄妯欐簴鍏ュ姏銇綅缃亱銈夋墜鍓嶃伄浣嶇疆銈掔ず銇椼伨銇)銆 +\-s 寮曟暟銈掓寚瀹氥仐銇亱銇c仧鍫村悎銇佺従鍦ㄣ伄銉曘偂銈ゃ儷浣嶇疆銇嬨倝闁嬪銇曘倢銇俱仚銆 +.TP +.I \-u +16 閫叉暟銇〃瑷樸伀澶ф枃瀛椼倰浣裤亜銇俱仚銆傛寚瀹氥亴銇亜鍫村悎銇皬鏂囧瓧銇у嚭鍔涖仌銈屻伨銇欍 +.TP +.IR \-v " | " \-version +銉愩兗銈搞儳銉炽倰琛ㄧず銇椼伨銇欍 +.SH 璀﹀憡 +.PP +.I xxd \-r +銇с伅琛岀暘鍙枫伄瑭曚尽銇枹銇椼仸銇殫榛欍伄銉兗銉亴銇勩亸銇ゃ亱銇傘倞銇俱仚銆 +鍑哄姏銉曘偂銈ゃ儷銇屻偡銉笺偗鍙兘銇倝銆佸悇琛屻伄琛岀暘鍙枫亴闋嗙暘閫氥倞銇甫銈撱仹銇亸銇︺倐妲嬨亜銇俱仜銈撱 +浣嶇疆銇岄銈撱仹銇勩仸銈傞噸銇仯銇︺亜銇︺倐澶т笀澶仹銇欍 +銇濄伄鍫村悎銆佹銇綅缃伀绉诲嫊銇欍倠銇熴倎銇 lseek(2) 銇屼娇銈忋倢銇俱仚銆 +鍑哄姏銉曘偂銈ゃ儷銇屻偡銉笺偗涓嶅彲銇倝銆併岄殭闁撱嶃仩銇戙亴鍑︾悊鍙兘銇с仚銆 +闅欓枔銇 null 銉愩偆銉堛仹鍩嬨倎銈夈倢銇俱仚銆 +.PP +.I xxd \-r +銇笉姝c仾鍏ュ姏銈掋偍銉┿兗銇仐銇俱仜銈撱傘偞銉熴伅闈欍亱銇銇块銇般仌銈屻伨銇欍 +.PP +16 閫层儉銉炽儣銈掔法闆嗐仚銈嬨仺銇嶃伅娉ㄦ剰銇屽繀瑕併仹銇欍 +.I xxd \-r +銇繀瑕併仾妗 (\-c 寮曟暟鍙傜収) 銇犮亼 16 閫层儑銉笺偪銈掕銇胯炯銈撱仹銆佽銇畫銈娿倰鐒¤銇椼伨銇欍 +銇ゃ伨銈娿丄SCII (銇俱仧銇 EBCDIC) 銈掔ず銇椼仸銇勩倠鍒椼伕銇鏇淬伅鐒¤銇曘倢銇俱仚銆 +xxd \-r \-p 銇с儣銉兗銉冲舰寮 (銉濄偣銉堛偣銈儶銉椼儓褰㈠紡) 銇 16 閫层儉銉炽儣銈掑厓銇埢銇欏牬鍚堛伅銆佸垪銇暟銇奖闊裤仐銇俱仜銈撱 +2 妗併伄 16 閫叉暟銇ㄨ獚璀樸仹銇嶃倠銈傘伄銇仚銇广仸澶夋彌銇曘倢銇俱仚銆 +.PP +\fI% xxd \-i file\fR +.br +銇 +.br +\fI% xxd \-i < file\fR +.br +銇祼鏋溿伅閬曘亜銇俱仚銆傛敞鎰忋仐銇︺亸銇犮仌銇勩 +.PP +.I xxd \-s +seek +銇 +.IR "xxd \-s seek" , +銇仌銇勩伅銆乴seek(2) 銈掍娇銇c仸鍏ュ姏銈 "宸汇亶鎴汇仚" 銇嬨仼銇嗐亱銇с仚銆'+' 銇屾剰鍛炽倰鎸併仱銇伅銆佸叆鍔涖亴妯欐簴鍏ュ姏銇с亁xd +銇岃捣鍕曘仌銈屻仧銇ㄣ亶銇婧栧叆鍔涖伄銉曘偂銈ゃ儷浣嶇疆銇屻儠銈°偆銉伄鍏堥牠銇с伅銇亱銇c仧鍫村悎銇с仚銆 +浠ヤ笅銇緥銇屽垎銇嬨倞銈勩仚銇勩亱銈傘仐銈屻伨銇涖倱 (銈傘仯銇ㄦ贩涔便仚銈嬨亱銈!): +.PP +`cat' 銇屾棦銇婧栧叆鍔涖倰绲傘倧銈娿伨銇ц銈撱仹銇勩倠銇仹銆佽銈鍓嶃伀妯欐簴鍏ュ姏銈掑坊銇嶆埢銇欏繀瑕併亴銇傘倠銆 +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR +.PP +銉曘偂銈ゃ儷浣嶇疆 0x480 (=1024+128) 鍓嶆柟銇嬨倝 16 閫层儉銉炽儣銇欍倠銆 +`+' 銇 銆岀従鍦ㄥ湴銇嬨倝銇浉瀵句綅缃嶃倰鎰忓懗銇欍倠銇仹銆乨d 銇 1k 鍑︾悊銇椼仧寰屻亱銈夈併仌銈夈伀 `128' 閫层倎銇俱仚銆 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR +.PP +銉曘偂銈ゃ儷浣嶇疆 0x100 (=1024\-768) 銇嬨倝 16 閫层儉銉炽儣銇欍倠銆 +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR +.PP +銇撱伄銈堛亞銇娇銇勬柟銇亗銇俱倞銇椼伨銇涖倱銇椼乣+' 銈掍娇銇嗐亾銇ㄣ倐銇汇仺銈撱仼銇亜銇с仐銈囥亞銆 +\-s 銈掍娇銇嗐仺銇嶃伅銇勩仱銇с倐銆乻trace(1) 銈 truss(1) 銈掍娇銇c仸銆亁xd 銇儘銇嶃倰銉併偋銉冦偗銇欍倠銇撱仺銈掋亰鍕с倎銇椼伨銇欍 +.SH 渚 +.PP +.br +.BR 銉曘偂銈ゃ儷 +銇渶鍒濄伄涓夎 (16 閫叉暟銇 0x30 銉愩偆銉) 浠ラ檷銈掑嚭鍔涖仚銈嬨 +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +.BR 銉曘偂銈ゃ儷 +銇渶寰屻亱銈変笁琛 (16 閫叉暟銇 0x30 銉愩偆銉) 銈掑嚭鍔涖仚銈嬨 +.br +\fI% xxd \-s \-0x30 file\fR +.PP +.br +120 銉愩偆銉堛倰銆佸钩鏂 16 閫层儉銉炽儣褰㈠紡銇т竴琛屻伀 20 銈偗銉嗐儍銉堛仛銇ゅ嚭鍔涖仚銈嬨 +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +銇撱伄 man 銉氥兗銈搞伄鍏堥牠銇嬨倝 120 銉愩偆銉堛倰涓琛屻伀 12 銈偗銉嗐儍銉堛仛銇 16 閫层儉銉炽儣銇欍倠銆 +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR +.br + +.br +xxd.1 銇棩浠樸倰淇銇欍倠銆 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +涓韩銇屻仚銇广仸 0x00 銇 65537 銉愩偆銉堛伄銉曘偂銈ゃ儷銈掍綔鎴愩仚銈嬨 +銇熴仩銇椼佹渶寰屻伄銉愩偆銉堛仩銇戙伅 'A' (hex 0x41)銆 +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +浣滄垚銇椼仧銉曘偂銈ゃ儷銈掋偑銉笺儓銈广偔銉冦儣銈掍娇銇c仸 16 閫层儉銉炽儣銇欍倠銆 +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +涓鏂囧瓧銇 'A' 銇嬨倝銇倠 1 銉愩偆銉堛伄銉曘偂銈ゃ儷銈掍綔鎴愩仚銈嬨 + '\-r \-s' 銇緦銇寚瀹氥仐銇熸暟鍊ゃ亴銉曘偂銈ゃ儷涓伄琛岀暘鍙枫伀鍔犵畻銇曘倢銆佺祼鏋溿佷綑瑷堛仾銉愩偆銉堛亴椋涖伆銇曘倢銈嬨 +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +.B vim(1) +銇腑銇嬨倝 xxd 銈掋儠銈c儷銈裤仺銇椼仸瀹熻銇椼 +銉炪兗銈仌銈屻仧 `a' 銇嬨倝 `z' 銇俱仹銇牁鍩熴倰 16 閫层儉銉炽儣銇欍倠銆 +.br +\fI:'a,'z!xxd\fR +.PP +.B vim(1) +銇腑銇嬨倝 xxd 銈掋儠銈c儷銈裤仺銇椼仸瀹熻銇椼 +銉炪兗銈仌銈屻仧 `a' 銇嬨倝 `z' 銇俱仹銇牁鍩熴倰銉愩偆銉娿儶銇埢銇欍 +.br +\fI:'a,'z!xxd \-r\fR +.PP +.B vim(1) +銇腑銇嬨倝 xxd 銈掋儠銈c儷銈裤仺銇椼仸瀹熻銇椼16 閫层儉銉炽儣銇曘倢銇熻銈掑厓銇埢銇欍 +鎴汇仐銇熴亜琛屻伀銈兗銈姐儷銈掔Щ鍕曘仐銇: +.br +\fI!!xxd \-r\fR +.PP +銈枫儶銈€儷琛屻亱銈変竴鏂囧瓧瑾伩杈笺個 +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH 杩斻倞鍊 +浠ヤ笅銇偍銉┿兗鍊ゃ亴杩斻倞銇俱仚: +.TP +0 +銈ㄣ儵銉笺仾銇椼 +.TP +\-1 +鎿嶄綔銇屻偟銉濄兗銉堛仌銈屻仸銇勩仾銇 +\%(\c +.I \%xxd \-r \-i +銇伨銇犱笉鍙仹銇)銆 +.TP +1 +寮曟暟銇В閲堛伀闁€仚銈嬨偍銉┿兗銆 +.TP +2 +鍏ュ姏銉曘偂銈ゃ儷銇枹銇欍倠鍟忛銆 +.TP +3 +鍑哄姏銉曘偂銈ゃ儷銇枹銇欍倠鍟忛銆 +.TP +4,5 +鎸囧畾銇曘倢銇熶綅缃伕銈枫兗銈仹銇嶃仾銇嬨仯銇熴 +.SH 闁㈤i爡鐩 +uuencode(1), uudecode(1), patch(1) +.br +.SH 璀﹀憡 +銇撱伄濂囧銇儎銉笺儷銇綔鑰呫亴浣裤亜銈勩仚銇勩倛銇嗐伀浣溿倝銈屻仸銇勩伨銇欍 +鑷繁璨换銇т娇銇c仸銇忋仩銇曘亜銆傘儠銈°偆銉倰銈炽償銉笺仐銆併仢銈屻倰瑾裤伖銆併偊銈c偠銉笺儔銇熴倢銆 +.br +.SH 銉愩兗銈搞儳銉 +銇撱伄銉炪儖銉ャ偄銉伅 xxd 銉愩兗銈搞儳銉 1.7 銇仱銇勩仸瑾槑銇椼仸銇勩伨銇欍 +.SH 钁楄 +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +绉併伄鍔熺妇銇ㄣ仐銇﹁嚜鐢便伀閰嶅竷銇椼仸銇忋仩銇曘亜銆 +.br +鍎层亱銇c仧銈夋暀銇堛仸銇忋仩銇曘亜銆 +.br +鎼嶃仐銇︺倐鐭ャ倞銇俱仜銈撱 +.PP +銉炪儖銉ャ偄銉伅 Tony Nugent +.br + +.br +銇倛銇c仸鏇搞亱銈屻 +Bram Moolenaar 銇屽皯銇楀鏇淬倰鍔犮亪銆 +Juergen Weigert 銇岀法闆嗐仐銇俱仐銇熴 +.PP diff --git a/runtime/doc/xxd-pl.1 b/runtime/doc/xxd-pl.1 new file mode 100644 index 0000000..877b7e4 --- /dev/null +++ b/runtime/doc/xxd-pl.1 @@ -0,0 +1,389 @@ +.TH XXD 1 "Sierpie 1996" "Strona podr阠znika dla xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAZWA +.I xxd +\- zrzut pliku do hex lub odwrotnie +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[opcje] [plik_we [plik_wy]] +.br +.B xxd +\-r[evert] [opcje] [plik_we [plik_wy]] +.SH OPIS +.I xxd +tworzy zrzut heksowy podanego pliku lub standardowego wej禼ia. +Mo縠 tak縠 przetworzy zrzut heksowy z powrotem do oryginalnej, +binarnej formy. +Podobnie jak +.BR uuencode (1) +i +.BR uudecode (1) +pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie +ASCII, ale ma zalety dekodowania na standardowe wyj禼ie. +Ponadto mo縩a go u縴 do binarnego 砤tania plik體. +.SH OPCJE +Je秎i nie podano +.I plik_we +xxd czyta ze standardowego wej禼ia. +Je秎i okre秎ono +.I plik_we +jako znak +.RB \` \- ' +wtedy dane wej禼iowe czytane s ze standardowego wej禼ia. +Je秎i nie podano +.I plik_wy +(lub podano jako +.RB \` \- ' +), wyniki s wysy砤ne na standardowe wyj禼ie. +.PP +Pami阾aj, 縠 u縴ty zosta "leniwy" parser, kt髍y nie sprawdza wi阠ej +ni pierwszej litery opcji (o ile ta nie zosta砤 obdarzona +parametrem). Spacje mi阣zy jedno literowymi opcjami i ich parametrami +s opcjonalne. Parametry opcji mog by okre秎one w notacji dziesi阾nej, +heksadecymalej lub oktalnej. +St眃 +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +i +.B \-cols 8 +s sobie r體nowa縩e. +.PP +.TP +.IR \-a " | " \-autoskip +prze潮cza autoskip: pojedyncza '*' zast阷uje linie nul. Domy秎nie +wy潮czone. +.TP +.IR \-b " | " \-bits +Prze潮cza do zrzutu bitowego (cyfr binarnych) zamiast heksowego. +Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego +zrzutu heksowego. Ka縟a linia jest poprzedzona przez +heksadecymalny numer linii a po nim jego reprezentacj w ascii (lub +ebcdic). Opcje linii polece \-p, \-i nie dzia砤j w tym +trybie. +.TP +.IR "\-c cols " | " \-cols cols" +formatuje liczb +.RI < cols > +oktet體 na wiersz. Domy秎nie 16 (\-i: 12, \-ps: 30, \-b: 6). Maks. +256. +.TP +.IR \-E " | "\-EBCDIC +zmienia kodowanie znak體 w prawej kolumnie z ASCII na EBCDIC. +Nie zmienia prezentacji heksadecymalej. Opcja nie dzia砤 w po潮czeniu +z \-r, \-p lub \-i. +.TP +.IR "\-g bajt體 " | " \-groupsize bajt體" +oddziela wyj禼ie ka縟ych +.RI < bajt體 > +bajt體 (dwa heksowe znaki lub osiem cyfr binarnych ka縟e) przez bia硑 +znak. +Okre秎 +.I \-g 0 +by wy潮czy grupowanie. +.RI < Bajt體 "> domy秎nie jest " 2 +w trybie normalnym i \fI1\fP w trybie bit體. +Grupowanie nie dzia砤 w trybie postscriptu lub w潮czania. +.TP +.IR \-h " | " \-help +wypisuje podsumowanie dost阷nych polece i ko馽zy dzia砤nie. Nie +zostaje przeprowadzony 縜den zrzut. +.TP +.IR \-i " | " \-include +wyj禼ie w stylu w潮czania pliku w C. Zostaje zapisana kompletna +statyczna tablica definicji (nazwana wed硊g pliku wej禼ia), o ile xxd +nie czyta ze standardowego wej禼ia. +.TP +.IR "\-l len " | "\-len len" +zako馽z po wypisaniu +.RI < len > +oktet體. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +wyj禼ie w postcriptowym ci眊硑m stylu zrzutu heksowego. Znany tak縠 +jako zwyk硑 zrzut heksowy. +.TP +.IR \-r " | " \-revert +odwr箧 operacj: przekonwertuj (lub za砤taj) zrzut heksowy w binark. +Je秎i nie zapisuje na standardowe wyj禼ie, xxd zapisze plik wyj禼iowy +bez obcinania go. U縴j kombinacji +.I \-r \-p +by odczyta zwyk硑 zrzut heksadecymalny bez numer體 linii +i okre秎onego uk砤du kolumn. Dodatkowe bia砮 znaki i 砤manie wierszy +s wsz阣zie dozwolone. +.TP +.I \-seek offset +Kiedy u縴ty po +.IR \-r : +odwraca z +.RI < offset > +dodanym do pozycji w pliku odnalezionym w zrzucie heksowym. +.TP +.I \-s [+][\-]seek +zaczyna na +.RI < seek > +bajt體 bezwgl阣nego (lub wzgl阣nego) offsetu pliku wej禼iowego. +\fI+ \fRwskazuje, 縠 seek jest wzgl阣ne do bie勘cej pozycji pliku (bez +znaczenia je秎i nie wczytuje ze standardowego wej禼ia). \fI\- \fRwskazuje +縠 seek powinno by o tyle znak體 od ko馽a wej禼ia (lub je秎i +po潮czone z \fI+\fR: przed bie勘c pozycj pliku na standardowym +wej禼iu). +Bez opcji \-s xxd zaczyna od bie勘cej pozycji w pliku. +.TP +.I \-u +u縴j wielkich liter w znakach heksowych. Domy秎nie s ma砮 znaki. +.TP +.IR \-v " | " \-version +pokazuje wersj programu. +.SH OSTRZE疎NIA +.PP +.I xxd \-r +potrafi okre秎i numery linii. Je秎i plik wyj禼ia jest mo縧iwy do +przeszukania wtedy numery linii na pocz眛ku wiersza zrzutu heksowego +mog by nie po kolei, mo縠 brakowa wierszy lub nak砤da si na +siebie. W takich wypadkach xxd u縴je lseek(2) by znale兼 nast阷n +pozycj. Je秎i plik wyj禼iowy nie jest mo縧iwy do przeszukania mo縧iwe +s tylko przerwy, kt髍e zostan wype硁ione bajtami null. +.PP +.I xxd \-r +nigdy nie podaje b酬d體 analizy. ieci s po cichu ignorowane. +.PP +W czasie edycji zrzut體 heksowych, prosz zauwa縴 縠 +.I xxd \-r +pomija wszystko w linii wej禼ia po odczytaniu wystarczaj眂ej ilo禼i +kolumn danych heksadecymalnych (zobacz opcj \-c). Oznacza to tak縠, +縠 zmiany w drukowanych kolumnach ascii (lub ebcdic) s zawsze +ignorowane. Odwr骳enie zwyk砮go (lub postscriptowego) stylu zrzutu +poprzez xxd \-r \-p nie zale縴 od kolejno禼i kolumn. Tutaj cokolwiek +co wygl眃a jak para znak體 heks jest interpretowane. +.PP +Zauwa r罂nic mi阣zy +.br +\fI% xxd \-i plik\fR +.br +i +.br +\fI% xxd \-i < plik\fR +.PP +.I xxd \-s \+seek +mo縠 by r罂ne od +.IR "xxd \-s seek" , +poniewa lseek(2) jest u縴ty do "przewini阠ie" wej禼ia. '+' stanowi +r罂nic je秎i 紃骴砮m wej禼ia jest standardowe wej禼ie i je秎i pozycja +w pliku ze standardowego wej禼ia nie jest pocz眛kiem pliku w chwili +uruchomienia xxd. Nast阷uj眂e przyk砤dy mog wyja秐i (lub bardziej +zmyli!)... +.PP +Przewi standardowe wej禼ie przed przeczytaniem; potrzebne poniewa +`cat' ju odczyta do ko馽a standardowego wej禼ia. +.br +\fI% sh \-c 'cat > zwyk砤_kopia; xxd \-s 0 > hex_kopia' < plik\fR +.PP +Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w prz骴. +Znak `+' oznacza "wzgl阣ny wobec bie勘cej pozycji", st眃 `128' dodaje +do 1k gdzie zako馽zy dd. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file\fR +.PP +Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file\fR +.PP +Jakkolwiek, jest to rzadka sytuacja i u縴cie `+' jest rzadko +potrzebne. +Autor woli monitorowa dzia砤nie xxd przy pomocy strace(1) lub truss(1) kiedy \-s jest u縴te. +.SH PRZYKDY +.PP +.br +Wypisz wszystko z wyj眛kiem pierwszych trzech linii (heksowe 0x30 bajt體) +.B pliku +\. +.br +\fI% xxd \-s 0x30 plik\fR +.PP +.br +Wypisz trzy linie (heksowe 0x30 bajt體) z ko馽a +.B pliku +\. +.br +\fI% xxd \-s \-0x30 plik\fR +.PP +.br +Wypisz 120 bajt體 jako ci眊硑 zrzut heksowy z 20 oktetami na lini. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +Zrzut heksowy z pierwszymi 120 bajtami tej strony podr阠znika z 12 +oktetami na lini. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 plik_wy\fR +.br + +.br +Podmie dat w pliku xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +Utw髍z plik o 65537 bajtach, wszystkich r體nych 0x00, +z wyj眛kiem ostatniego, kt髍y ma by 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> plik\fR +.PP +.br +Zrzut heksowy tego pliku z autoskipem. +.br +\fI% xxd \-a \-c 12 plik\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Utw髍z jedno bajtowy plik zawieraj眂y pojedncz liter 'A'. +Liczba po '\-r \-s' dodaje numery linii znalezione w pliku; +w efekcie poprzedzaj眂e bajty s ukryte. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> plik\fR +.PP +U縴j xxd jako filtra wewn眛rz edytora takiego jak +.B vim(1) +aby uzyska zrzut heksowy zakresu mi阣zy markerami `a' i `z'. +.br +\fI:'a,'z!xxd\fR +.PP +U縴j xxd jako filtra wewn眛rz edytora takiego jak +.B vim(1) +by odzyska binarny zrzut heksowy zakresu pomi阣zy markerami `a' +i `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +U縴j xxd jako filtra wewn眛rz edytora takiego jak +.B vim(1) +by odzyska jedn lini zrzutu heksowego. Przejd z kursorem na lini +i wpisz: +.br +\fI!!xxd \-r\fR +.PP +Odczytaj pojednycze znaki z portu szeregowego +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "ZWRACANE WARTOI" +Zwracane s nast阷uj眂e warto禼i b酬d體: +.TP +0 +nie znaleziono b酬d體. +.TP +\-1 +operacja nie jest wspierana ( +.I xxd \-r \-i +ca硑 czas niemo縧iwa). +.TP +1 +b潮d w czasie analizowania opcji. +.TP +2 +problemy z plikiem wej禼iowym. +.TP +3 +problemy z plikiem wyj禼iowym. +.TP +4,5 +勘dana pozycja jest nieosi眊alna. +.SH "ZOBACZ TAK疎" +uuencode(1), uudecode(1), patch(1) +.br +.SH OSTRZE疎NIA +Dziwaczno舵 narz阣zi dor體nuje dziwaczno禼i m髗gu tw髍cy. +U縴waj wy潮cznie na w砤sn odpowiedzialno舵. Kopiuj pliki. Analizuj +je. Sta si czarodziejem. +.br +.SH WERSJA +Strona podr阠znika opisuje xxd w wersji 1.7 +.SH AUTOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Kopiuj do woli i podaj moje dane, +.br +zarabiaj pieni眃ze i dziel si ze mn, +.br +tra pieni眃ze i nie miej do mnie pretensji. +.PP +Strona podr阠znika zapocz眛kowana przez Tony'ego Nugenta +.br + +.br +Ma砮 zmiany: Bram Moolenaar. +Redakcja: Juergen Weigert. +.PP diff --git a/runtime/doc/xxd-pl.UTF-8.1 b/runtime/doc/xxd-pl.UTF-8.1 new file mode 100644 index 0000000..a28dd63 --- /dev/null +++ b/runtime/doc/xxd-pl.UTF-8.1 @@ -0,0 +1,389 @@ +.TH XXD 1 "Sierpie艅 1996" "Strona podr臋cznika dla xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAZWA +.I xxd +\- zrzut pliku do hex lub odwrotnie +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[opcje] [plik_we [plik_wy]] +.br +.B xxd +\-r[evert] [opcje] [plik_we [plik_wy]] +.SH OPIS +.I xxd +tworzy zrzut heksowy podanego pliku lub standardowego wej艣cia. +Mo偶e tak偶e przetworzy膰 zrzut heksowy z powrotem do oryginalnej, +binarnej formy. +Podobnie jak +.BR uuencode (1) +i +.BR uudecode (1) +pozwala na przekazanie danych binarnych w bezpiecznej w poczcie formie +ASCII, ale ma zalety dekodowania na standardowe wyj艣cie. +Ponadto mo偶na go u偶y膰 do binarnego 艂atania plik贸w. +.SH OPCJE +Je艣li nie podano +.I plik_we +xxd czyta ze standardowego wej艣cia. +Je艣li okre艣lono +.I plik_we +jako znak +.RB \` \- ' +wtedy dane wej艣ciowe czytane s膮 ze standardowego wej艣cia. +Je艣li nie podano +.I plik_wy +(lub podano jako +.RB \` \- ' +), wyniki s膮 wysy艂ane na standardowe wyj艣cie. +.PP +Pami臋taj, 偶e u偶yty zosta艂 "leniwy" parser, kt贸ry nie sprawdza wi臋cej +ni偶 pierwszej litery opcji (o ile ta nie zosta艂a obdarzona +parametrem). Spacje mi臋dzy jedno literowymi opcjami i ich parametrami +s膮 opcjonalne. Parametry opcji mog膮 by膰 okre艣lone w notacji dziesi臋tnej, +heksadecymalej lub oktalnej. +St膮d +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +i +.B \-cols 8 +s膮 sobie r贸wnowa偶ne. +.PP +.TP +.IR \-a " | " \-autoskip +prze艂膮cza autoskip: pojedyncza '*' zast臋puje linie nul. Domy艣lnie +wy艂膮czone. +.TP +.IR \-b " | " \-bits +Prze艂膮cza do zrzutu bitowego (cyfr binarnych) zamiast heksowego. +Opcja ta zapisuje oktety jako osiem cyfr 1 lub 0 zamiast normalnego +zrzutu heksowego. Ka偶da linia jest poprzedzona przez +heksadecymalny numer linii a po nim jego reprezentacj膮 w ascii (lub +ebcdic). Opcje linii polece艅 \-p, \-i nie dzia艂aj膮 w tym +trybie. +.TP +.IR "\-c cols " | " \-cols cols" +formatuje liczb臋 +.RI < cols > +oktet贸w na wiersz. Domy艣lnie 16 (\-i: 12, \-ps: 30, \-b: 6). Maks. +256. +.TP +.IR \-E " | "\-EBCDIC +zmienia kodowanie znak贸w w prawej kolumnie z ASCII na EBCDIC. +Nie zmienia prezentacji heksadecymalej. Opcja nie dzia艂a w po艂膮czeniu +z \-r, \-p lub \-i. +.TP +.IR "\-g bajt贸w " | " \-groupsize bajt贸w" +oddziela wyj艣cie ka偶dych +.RI < bajt贸w > +bajt贸w (dwa heksowe znaki lub osiem cyfr binarnych ka偶de) przez bia艂y +znak. +Okre艣l +.I \-g 0 +by wy艂膮czy膰 grupowanie. +.RI < Bajt贸w "> domy艣lnie jest " 2 +w trybie normalnym i \fI1\fP w trybie bit贸w. +Grupowanie nie dzia艂a w trybie postscriptu lub w艂膮czania. +.TP +.IR \-h " | " \-help +wypisuje podsumowanie dost臋pnych polece艅 i ko艅czy dzia艂anie. Nie +zostaje przeprowadzony 偶aden zrzut. +.TP +.IR \-i " | " \-include +wyj艣cie w stylu w艂膮czania pliku w C. Zostaje zapisana kompletna +statyczna tablica definicji (nazwana wed艂ug pliku wej艣cia), o ile xxd +nie czyta ze standardowego wej艣cia. +.TP +.IR "\-l len " | "\-len len" +zako艅cz po wypisaniu +.RI < len > +oktet贸w. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +wyj艣cie w postcriptowym ci膮g艂ym stylu zrzutu heksowego. Znany tak偶e +jako zwyk艂y zrzut heksowy. +.TP +.IR \-r " | " \-revert +odwr贸膰 operacj臋: przekonwertuj (lub za艂ataj) zrzut heksowy w binark臋. +Je艣li nie zapisuje na standardowe wyj艣cie, xxd zapisze plik wyj艣ciowy +bez obcinania go. U偶yj kombinacji +.I \-r \-p +by odczyta膰 zwyk艂y zrzut heksadecymalny bez numer贸w linii +i okre艣lonego uk艂adu kolumn. Dodatkowe bia艂e znaki i 艂amanie wierszy +s膮 wsz臋dzie dozwolone. +.TP +.I \-seek offset +Kiedy u偶yty po +.IR \-r : +odwraca z +.RI < offset > +dodanym do pozycji w pliku odnalezionym w zrzucie heksowym. +.TP +.I \-s [+][\-]seek +zaczyna na +.RI < seek > +bajt贸w bezwgl臋dnego (lub wzgl臋dnego) offsetu pliku wej艣ciowego. +\fI+ \fRwskazuje, 偶e seek jest wzgl臋dne do bie偶膮cej pozycji pliku (bez +znaczenia je艣li nie wczytuje ze standardowego wej艣cia). \fI\- \fRwskazuje +偶e seek powinno by膰 o tyle znak贸w od ko艅ca wej艣cia (lub je艣li +po艂膮czone z \fI+\fR: przed bie偶膮c膮 pozycj膮 pliku na standardowym +wej艣ciu). +Bez opcji \-s xxd zaczyna od bie偶膮cej pozycji w pliku. +.TP +.I \-u +u偶yj wielkich liter w znakach heksowych. Domy艣lnie s膮 ma艂e znaki. +.TP +.IR \-v " | " \-version +pokazuje wersj臋 programu. +.SH OSTRZE呕ENIA +.PP +.I xxd \-r +potrafi okre艣li膰 numery linii. Je艣li plik wyj艣cia jest mo偶liwy do +przeszukania wtedy numery linii na pocz膮tku wiersza zrzutu heksowego +mog膮 by膰 nie po kolei, mo偶e brakowa膰 wierszy lub nak艂ada膰 si臋 na +siebie. W takich wypadkach xxd u偶yje lseek(2) by znale藕膰 nast臋pn膮 +pozycj臋. Je艣li plik wyj艣ciowy nie jest mo偶liwy do przeszukania mo偶liwe +s膮 tylko przerwy, kt贸re zostan膮 wype艂nione bajtami null. +.PP +.I xxd \-r +nigdy nie podaje b艂臋d贸w analizy. 艢mieci s膮 po cichu ignorowane. +.PP +W czasie edycji zrzut贸w heksowych, prosz臋 zauwa偶y膰 偶e +.I xxd \-r +pomija wszystko w linii wej艣cia po odczytaniu wystarczaj膮cej ilo艣ci +kolumn danych heksadecymalnych (zobacz opcj臋 \-c). Oznacza to tak偶e, +偶e zmiany w drukowanych kolumnach ascii (lub ebcdic) s膮 zawsze +ignorowane. Odwr贸cenie zwyk艂ego (lub postscriptowego) stylu zrzutu +poprzez xxd \-r \-p nie zale偶y od kolejno艣ci kolumn. Tutaj cokolwiek +co wygl膮da jak para znak贸w heks jest interpretowane. +.PP +Zauwa偶 r贸偶nic臋 mi臋dzy +.br +\fI% xxd \-i plik\fR +.br +i +.br +\fI% xxd \-i < plik\fR +.PP +.I xxd \-s \+seek +mo偶e by膰 r贸偶ne od +.IR "xxd \-s seek" , +poniewa偶 lseek(2) jest u偶yty do "przewini臋cie" wej艣cia. '+' stanowi +r贸偶nic臋 je艣li 藕r贸d艂em wej艣cia jest standardowe wej艣cie i je艣li pozycja +w pliku ze standardowego wej艣cia nie jest pocz膮tkiem pliku w chwili +uruchomienia xxd. Nast臋puj膮ce przyk艂ady mog膮 wyja艣ni膰 (lub bardziej +zmyli膰!)... +.PP +Przewi艅 standardowe wej艣cie przed przeczytaniem; potrzebne poniewa偶 +`cat' ju偶 odczyta艂 do ko艅ca standardowego wej艣cia. +.br +\fI% sh \-c 'cat > zwyk艂a_kopia; xxd \-s 0 > hex_kopia' < plik\fR +.PP +Zrzut heksowy od pozycji pliku 0x480 (=1024+128) w prz贸d. +Znak `+' oznacza "wzgl臋dny wobec bie偶膮cej pozycji", st膮d `128' dodaje +do 1k gdzie zako艅czy艂 dd. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file\fR +.PP +Zrzut heksowy od pozycji pliku 0x100 ( = 1024\-768) dalej. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file\fR +.PP +Jakkolwiek, jest to rzadka sytuacja i u偶ycie `+' jest rzadko +potrzebne. +Autor woli monitorowa膰 dzia艂anie xxd przy pomocy strace(1) lub truss(1) kiedy \-s jest u偶yte. +.SH PRZYK艁ADY +.PP +.br +Wypisz wszystko z wyj膮tkiem pierwszych trzech linii (heksowe 0x30 bajt贸w) +.B pliku +\. +.br +\fI% xxd \-s 0x30 plik\fR +.PP +.br +Wypisz trzy linie (heksowe 0x30 bajt贸w) z ko艅ca +.B pliku +\. +.br +\fI% xxd \-s \-0x30 plik\fR +.PP +.br +Wypisz 120 bajt贸w jako ci膮g艂y zrzut heksowy z 20 oktetami na lini臋. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +Zrzut heksowy z pierwszymi 120 bajtami tej strony podr臋cznika z 12 +oktetami na lini臋. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 plik_wy\fR +.br + +.br +Podmie艅 dat臋 w pliku xxd.1 +.br +\fI% echo '0000037: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +Utw贸rz plik o 65537 bajtach, wszystkich r贸wnych 0x00, +z wyj膮tkiem ostatniego, kt贸ry ma by膰 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> plik\fR +.PP +.br +Zrzut heksowy tego pliku z autoskipem. +.br +\fI% xxd \-a \-c 12 plik\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Utw贸rz jedno bajtowy plik zawieraj膮cy pojedncz膮 liter臋 'A'. +Liczba po '\-r \-s' dodaje numery linii znalezione w pliku; +w efekcie poprzedzaj膮ce bajty s膮 ukryte. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> plik\fR +.PP +U偶yj xxd jako filtra wewn膮trz edytora takiego jak +.B vim(1) +aby uzyska膰 zrzut heksowy zakresu mi臋dzy markerami `a' i `z'. +.br +\fI:'a,'z!xxd\fR +.PP +U偶yj xxd jako filtra wewn膮trz edytora takiego jak +.B vim(1) +by odzyska膰 binarny zrzut heksowy zakresu pomi臋dzy markerami `a' +i `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +U偶yj xxd jako filtra wewn膮trz edytora takiego jak +.B vim(1) +by odzyska膰 jedn膮 lini臋 zrzutu heksowego. Przejd藕 z kursorem na lini臋 +i wpisz: +.br +\fI!!xxd \-r\fR +.PP +Odczytaj pojednycze znaki z portu szeregowego +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "ZWRACANE WARTO艢CI" +Zwracane s膮 nast臋puj膮ce warto艣ci b艂臋d贸w: +.TP +0 +nie znaleziono b艂臋d贸w. +.TP +\-1 +operacja nie jest wspierana ( +.I xxd \-r \-i +ca艂y czas niemo偶liwa). +.TP +1 +b艂膮d w czasie analizowania opcji. +.TP +2 +problemy z plikiem wej艣ciowym. +.TP +3 +problemy z plikiem wyj艣ciowym. +.TP +4,5 +偶膮dana pozycja jest nieosi膮galna. +.SH "ZOBACZ TAK呕E" +uuencode(1), uudecode(1), patch(1) +.br +.SH OSTRZE呕ENIA +Dziwaczno艣膰 narz臋dzi dor贸wnuje dziwaczno艣ci m贸zgu tw贸rcy. +U偶ywaj wy艂膮cznie na w艂asn膮 odpowiedzialno艣膰. Kopiuj pliki. Analizuj +je. Sta艅 si臋 czarodziejem. +.br +.SH WERSJA +Strona podr臋cznika opisuje xxd w wersji 1.7 +.SH AUTOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Kopiuj do woli i podaj moje dane, +.br +zarabiaj pieni膮dze i dziel si臋 ze mn膮, +.br +tra膰 pieni膮dze i nie miej do mnie pretensji. +.PP +Strona podr臋cznika zapocz膮tkowana przez Tony'ego Nugenta +.br + +.br +Ma艂e zmiany: Bram Moolenaar. +Redakcja: Juergen Weigert. +.PP diff --git a/runtime/doc/xxd-ru.1 b/runtime/doc/xxd-ru.1 new file mode 100644 index 0000000..8f32432 --- /dev/null +++ b/runtime/doc/xxd-ru.1 @@ -0,0 +1,408 @@ +.TH XXD 1 "August 1996" "笤伊紊昧 man 奶 xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH 轫 +.I xxd +\- 酉谀粒 幸拍釉磷膛紊 屏侍 咨呐 叟釉瘟拿猎乓赊钨 讼南 商 踪邢涛雅 +下伊晕吓 幸畔乱邻献廖膳. +.SH 腼磲钿钺 篝蝻脶 +.B xxd +\-h[elp] +.br +.B xxd +[颂擂蒥 [兹夏蜗蔩屏侍 [踪认奈鲜_屏侍]] +.br +.B xxd +\-r[evert] [颂擂蒥 [兹夏蜗蔩屏侍 [踪认奈鲜_屏侍]] +.SH 镳轶犷殄 +.I xxd +酉谀粒 幸拍釉磷膛紊 账邻廖蜗窍 屏侍 商 牧挝偃, 幸限稍廖钨 哨 邢韵肆 +釉廖牧以蜗窍 鬃夏, 咨呐 叟釉瘟拿猎乓赊钨 讼南.  讼土文 粤酥 拖峙 +踪邢涛稍 下伊晕吓 幸畔乱邻献廖膳 诹牧挝偃 叟釉瘟拿猎乓赊钨蜕 讼牧蜕 牧挝偃 + 捎认奈偈 律瘟椅偈 葡彝猎. +鹣南挛 讼土文镣 +.BR uuencode(1) + +.BR uudecode(1), +衔 邢谧咸雅 踪邢涛言 幸畔乱邻献廖膳 律瘟椅偃 牧挝偃 ASCII-讼, +讼韵屹 拖治 信遗牧琢载 邢 芴潘砸衔蜗 邢拊, 夏瘟讼, 邢蜕拖 茉锨, 幸锨伊屯 +xxd 邢谧咸雅 踪邢涛言 呐讼纳蚁琢紊 邢韵 釉廖牧以蜗窍 踪紫牧, + 粤酥 拖峙 幸赏盼言赜 奶 酉谀廖裳 诹刑猎纤 奶 律瘟椅偃 屏侍献. +.SH 腱帼 瘐箅 +逵躺 +.I 兹夏蜗蔩屏侍 +闻 诹牧, 韵 酉显着杂宰绽萆 牧挝倥 奚粤涝友 哨 邢韵肆 釉廖牧以蜗窍 鬃夏. + 犹辙僚, 庞躺 肆夼釉着 +.I 兹夏蜗窍_屏侍 +捎邢特谡旁友 由妥咸 +.RB \` \- ', +捎韵尬伤贤 牧挝偃 粤酥 踪釉招僚 邢韵 釉廖牧以蜗窍 鬃夏. + 韵 犹辙僚, 庞躺 闻 账邻廖 +.I 踪认奈鲜_屏侍 +(商 淄庞韵 闻窍 捎邢特谡旁友 由妥咸 +.RB \` \- ' +), 遗谡特粤 幸畔乱邻献廖裳 瘟幸磷萄旁友 邢韵 釉廖牧以蜗窍 踪紫牧. +.PP +锫伊陨耘 孜赏廖膳, 拊 捎邢特谡旁友 "膛紊踪" 撂窍疑酝 伊诼弦 颂擂攀, 讼韵屹 闻 +幸献乓雅 孪膛 夏蜗 抡俗 颂擂, 庞躺 茉贤 颂擂 闻 捎邢特谡旁友 辛伊团砸. +鹨下盘 团帜 拍晌釉着挝偻 由妥咸贤 颂擂 酉显着杂宰绽萆 辛伊团砸贤 闻 炎萄涝友 +下掩猎盘匚偻. 鹆伊团砸 颂擂攀 拖钦 沦载 诹牧钨 捎邢特谙琢紊磐 呐友陨尬锨, +叟釉瘟拿猎乓赊蜗窍 商 紫迂团疑尬锨 葡彝猎. +袅松 下伊谙, 颂擂 +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 + +.B \-cols 8 +炎萄涝友 伊孜馅瘟尬偻. +.PP +.TP +.IR \-a " | " \-autoskip +魉汤蘖旁 磷韵土陨夼铀墒 幸闲沼: 淄庞韵 邢犹拍献猎盘匚嫌陨 +握膛踪 釉蚁 捎邢特谡旁友 夏晌限钨 由妥咸 '*'. 鹣 胀咸蘖紊 +闻 幸赏盼雅杂. +.TP +.IR \-b " | " \-bits +魍庞韵 叟釉瘟拿猎乓赊蜗窍 讼牧 捎邢特谡涝友 律再 (淖仙尬倥 蒙埔). +鹨 捎邢特谙琢紊 茉锨 颂擂 淄庞韵 下俎蜗窍 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 +纤耘韵 捎邢特谡涝友 瘟孪屹 哨 紫迂蜕 由妥咸献 "1" "0". 肓帜裂 釉蚁肆 +幸拍琢已旁友 蜗团蚁 釉蚁松 叟釉瘟拿猎乓赊蜗 咨呐, 诹着役僚杂 由妥咸匚偻 +幸拍釉磷膛紊磐 ( 咨呐 ascii 商 ebcdic). 胩擂 \-p, \-i 茉贤 遗稚团 +闻 伊孪粤涝. +.TP +.IR "\-c 讼 " | " \-cols 讼" +牧T 讼躺夼釉紫 纤耘韵 +.RI < 讼 >, +讼韵蚁 踪紫纳杂 瘟 肆帜鲜 釉蚁伺. 鹣 胀咸蘖紊 捎邢特谡旁友 谖赁盼膳 16 +(\-i: 12, \-ps: 30, \-b: 6). +砹擞赏撂匚 南姓釉赏吓 谖赁盼膳: 256. +.TP +.IR \-E " | " \-EBCDIC +橼团窝旁 有嫌下 讼纳蚁琢紊 由妥咸献 幸磷鲜 讼滔嗡 ASCII 瘟 EBCDIC. 显 颂擂 +闻 哨团窝旁 叟釉瘟拿猎乓赊蜗 幸拍釉磷膛紊. 淞挝偈 颂擂 闻 赏排 油儆塘, +庞躺 捎邢特谡涝友 颂擂 \-r, \-p 商 \-i. +.TP +.IR "\-g 铝试 " | " \-groupsize 铝试" +鹣谧咸雅 踪邢涛言 且招猩蚁姿 账邻廖蜗窍 讼躺夼釉琢 +.RI < 铝试献 > +(淖 叟釉瘟拿猎乓赊钨 蒙埔 商 紫优拓 律韵), 显呐萄 且招匈 囊涨 显 囊涨 幸下盘镣. +赁盼膳 +.I \-g 0 +幸赏盼雅杂 奶 显肆诹 显 捎邢特谙琢紊 且招猩蚁姿. +鹣 胀咸蘖紊 捎邢特谡旁友 谖赁盼膳 +.RI < 铝试 "> 伊孜吓 " 2 + 下俎蜗 遗稚团 \fI1\fP 律韵紫 遗稚团. 缫招猩蚁姿 闻 幸赏盼雅杂 + 遗稚土 postscript include. +.TP +.IR \-h " | " \-help +髻紫纳 有伊姿 邢 南釉招钨 颂擂镣 讼土文蜗 釉蚁松 诹着役僚 伊孪哉 幸锨伊屯. +笙谀廖膳 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 闻 踪邢涛雅杂. +.TP +.IR \-i " | " \-include +鹣谧咸雅 酉谀磷猎 踪紫 釉商 邢乃汤蘖磐偃 诹窍滔紫尬偃 屏侍献 掩偎 C. +髻紫 酉呐抑稍 邢涛厦盼蜗 闲遗呐膛紊 釉猎赊庞讼窍 土佑勺 牧挝偃, 赏 讼韵蚁窍 +酉显着杂宰张 赏盼 兹夏蜗窍 屏侍, 庞躺 xxd 闻 愚稍僮僚 牧挝倥 哨 邢韵肆 釉廖牧以蜗窍 +鬃夏. +.TP +.IR "\-l 奶晌 " | " \-len 奶晌" +着役僚 伊孪哉 邢犹 诹猩由 诹牧挝锨 辛伊团砸 +.RI < 奶晌 > +讼躺夼釉琢 纤耘韵. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +橛邢特谡旁 闻幸乓僮钨 葡彝猎 踪紫牧 叟釉瘟拿猎乓赊蜗窍 讼牧, +哨着釉钨 肆 "幸嫌韵" 釉商 商 釉商 "postscript". +.TP +.IR \-r " | " \-revert +橼团窝旁 油儆 闲乓撩缮 瘟 幸显勺闲咸现钨: 邢谧咸雅 踪邢涛言 幸畔乱邻献廖膳 +叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 律瘟椅偈 讼 (商 幸赏盼言 遗谡特粤 肆夼釉着 诹刑猎). +逵躺 踪紫 幸仙尤夏稍 闻 邢韵 釉廖牧以蜗窍 踪紫牧, 韵 xxd 踪邢涛雅 南铝滋盼膳 讼牧 + 酉显着杂宰绽菖驼 屏侍. 鹨 捎邢特谙琢紊 讼吐晌撩缮 颂擂攀 +.I \-r \-p +幸仙尤夏稍 拊盼膳 "幸嫌韵窍" 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 屡 捎邢特谙琢紊 +晌葡彝撩缮 蜗团伊 釉蚁 肆讼窍-躺孪 有琶闪特蜗窍 伊铀蚁 讼滔蜗. 鹨下盘 + 由妥咸 蜗紫 釉蚁松 拖钦 子砸呸猎赜 汤孪 团釉 捎认奈偃 牧挝偃. +.TP +.I \-seek 油泡盼膳 +鹨 捎邢特谙琢紊 邢犹 颂擂 +.I \-r +: 南铝滋言 账邻廖蜗 +.RI < 油泡盼膳 > + 屏侍献偻 邢谏蒙淹, 下瘟艺峙挝偻 捎认奈偃 牧挝偃. +.TP +.I \-s [\+][\-]seek +盍奚瘟旁 伊孪哉 账邻廖蜗窍 谅酉汤晕锨 (商 显蜗由耘特蜗窍) +.RI < 油泡盼裳 > + 铝试寥 紫 兹夏蜗蚠屏侍. +\fI\+ \fR账邻僮僚, 拊 油泡盼膳 炎萄旁友 显蜗由耘特钨 邢 显蜗叟紊 + 耘苏菖 屏侍献鲜 邢谏蒙 邢韵伺 釉廖牧以蜗窍 鬃夏 (屡佑唾犹盼蜗, 庞躺 拊盼膳 +幸仙尤夏稍 闻 哨 邢韵肆 釉廖牧以蜗窍 鬃夏). \fI\- \fR账邻僮僚, 拊 南讨蜗 沦载 幸限稍廖 +账邻廖蜗 讼躺夼釉紫 由妥咸献 显 讼蚊 鬃夏 (躺孪, 庞躺 酉夼粤旁友 \fI \+ \fR: +信遗 耘苏菖 邢谏蒙 屏侍 邢韵伺 釉廖牧以蜗窍 鬃夏). +逵躺 颂擂 \-s 闻 捎邢特谡旁友, 韵 xxd 瘟奚瘟旁 伊孪哉 显 耘苏菖 邢谏蒙 屏侍. +.TP +.I \-u +橛邢特谡旁 叟釉瘟拿猎乓赊钨 蒙埔 着胰闻 遗巧釉遗. 鹣 胀咸蘖紊 捎邢特谡涝友 蒙埔 +紊治磐 遗巧釉遗 由妥咸献. +.TP +.IR \-v " | " \-version +镌下伊至旁 晌葡彝撩衫 着矣缮 幸锨伊屯. +.SH 痫澉镤铢 脶眍 +.PP +.I xxd \-r +下塘牧旁 子砸吓挝偻 晌耘烫潘韵 奶 伊有馅瘟琢紊 晌葡彝撩缮 蜗团伊 釉蚁. +逵躺 紫谕现盼 邢捎 邢 兹夏蜗驼 屏侍, 韵 蜗团伊 釉蚁 瘟蘖膛 肆帜鲜 釉蚁松 +叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 拖钦 沦载 闻招弦涯限盼钨蜕, 闻讼韵屹 釉蚁松 拖钦 +沦载 幸闲蛰盼 商 信遗优肆载友 囊涨 囊涨贤. 茉扇 犹辙裂 xxd 捎邢特谡旁 +lseek(2) 奶 信遗认牧 犹拍绽菖 邢谏蒙. 逵躺 邢捎 邢 兹夏蜗驼 屏侍 +闻紫谕现盼, 韵 南姓釉赏 韵特讼 幸闲沼松 釉蚁, 讼韵屹 诹邢涛牙杂 握膛踪蜕 +铝试镣. +.PP +.I xxd \-r +紊讼悄 闻 踪紫纳 酉下菖紊 下 羡陕肆. 碚酉 幸闲沼肆旁友 拖剔. +.PP +鹨 遗牧嗽梢献廖缮 叟釉瘟拿猎乓赊钨 幸拍釉磷膛紊 律瘟椅偃 屏侍献 下伊萘试 +孜赏廖膳, 拊 +.I xxd \-r +幸闲沼肆旁 釉蚁伺 鬃夏 汤沦 牧挝倥 邢犹 幸限耘紊 南釉猎限蜗窍 讼躺夼釉琢 +讼滔蜗 叟釉瘟拿猎乓赊钨 牧挝偃 (油. 颂擂 \-c).  馅瘟蘖旁, 拊 哨团闻紊, +孜庞盼钨 讼滔嗡 信蘖晕偻 由妥咸镣 ascii (商 ebcdic), 子徘牧 汕蜗疑艺涝友. +鹨 下伊晕贤 幸畔乱邻献廖缮 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 釉商 +postscript 邢拖葚 讼土文 xxd \-r \-p 讼躺夼釉紫 讼滔蜗 闻 辙稍僮僚杂. + 茉贤 犹辙僚 伊有馅瘟涝友 子 由妥咸, 讼韵屹 邢认稚 瘟 辛屹 叟釉瘟拿猎乓赊钨 蒙埔. +.PP +锫伊陨耘 孜赏廖膳 瘟 伊谔赊膳 团帜 讼土文镣 +.PP +\fI% xxd \-i 屏侍\fR +.PP + +.PP +\fI% xxd \-i \< 屏侍\fR +.PP +胂土文 +.I xxd \-s \+seek +拖峙 显躺蘖载友 显 +.I xxd \-s seek, +邢铀咸厮 奶 韵窍, 拊下 "显拖粤载" 牧挝倥 瘟 兹夏 瘟诹, 捎邢特谡旁友 踪谙 lseek(2). +鹨 捎邢特谙琢紊 `+' 邢着呐紊 抡呐 显躺蘖载友, 庞躺 兹夏钨 牧挝倥 +邢釉招晾 邢韵肆 釉廖牧以蜗窍 鬃夏, 邢谏蒙 屏侍 釉廖牧以蜗窍 鬃夏 闻 瘟认纳杂 + 瘟蘖膛 屏侍 韵驼 拖团卧, 讼悄 幸锨伊屯 xxd 诹姓菖瘟 幸捎哉辛旁 拊盼衫 鬃夏. +钌峙犹拍绽萆 幸赏乓 邢拖钦 幸涎游稍 (商 泡 孪特叟 诹姓粤载!) 由哉撩衫... +.PP +镌拖运 瘟诹 邢韵肆 釉廖牧以蜗窍 鬃夏; 闻下认纳拖, 邢铀咸厮 'cat' 罩 踪邢涛商 +拊盼膳 南 讼蚊 邢韵肆 釉廖牧以蜗窍 鬃夏: +.PP +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +髻紫 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 显 邢谏蒙 屏侍 0x480 +(= 1024+128). +笊妥咸 `+' 馅瘟蘖旁 "显蜗由耘特蜗 耘苏菖 邢谏蒙", 粤松 下伊谙 `128' 南铝滋雅杂 + 信易贤 松滔铝试, 悄 诹着役僚 伊孪哉 dd: +.PP +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +髻紫 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 显 邢谏蒙 屏侍 0x100 +(= 1024-768): +.PP +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP + 韵 峙 滓磐, 犹拍张 诹团陨载, 拊 邢南挛倥 由哉撩缮 子砸呸晾杂 南紫特蜗 遗乃, +粤 拊 由妥咸 `+' 下俎蜗 闻 捎邢特谡旁友. 嶙韵 幸拍邢奚粤旁 瘟绿滥猎 诹 伊孪韵 +xxd 邢拖葚 strace(1) 商 truss(1) 耘 犹辙裂, 讼悄 幸赏盼雅杂 颂擂 +\-s. +.SH 痱轫弪 +.PP +.br +髻着釉 子, 艘贤 信易偃 砸H 釉蚁 (0x30 铝试献) 屏侍 +.B file +: +.PP +\fI% xxd \-s 0x30 file +.PP +.br +髻着釉 砸 釉蚁松 (0x30 铝试献) 显 讼蚊 屏侍 +.B file +: +.PP +\fI% xxd \-s \-0x30 file +.PP +.br +髻着釉 120 铝试献 咨呐 闻幸乓僮蜗窍 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 +邢 20 纤耘韵 釉蚁伺: +.PP +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br +.PP +.br +髻着釉 信易倥 120 铝试献 茉鲜 釉伊紊觅 有伊紫尬伤 邢 12 纤耘韵 釉蚁伺: +.PP +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent 踪认奈鲜_屏侍\fR +.br +.PP +.br +团紊载 牧哉 屏侍 xxd.1: +.PP +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +笙谀猎 65537-铝试钨 屏侍, 子 铝试 讼韵蚁窍 赏爬 谖赁盼膳 +0x00, 艘贤 邢犹拍闻窍 铝试, 讼韵屹 南讨盼 赏旁 谖赁盼膳 'A' +(0x41): +.PP +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +笙谀猎 叟釉瘟拿猎乓赊蜗 幸拍釉磷膛紊 茉锨 屏侍 +捎邢特谙琢紊磐 磷韵土陨夼铀锨 幸闲沼肆: +.PP +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +笙谀猎 1-铝试钨 屏侍, 酉呐抑凛墒 由妥咸 'A'. +犹 邢犹 '\-r \-s' 南铝滋雅杂 蜗团伊 釉蚁, 瘟誓盼钨 屏侍; +晌赁 窍紫已, 幸拍叟釉渍垒膳 铝试 幸闲沼肆涝友: +.PP +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +xxd 拖治 捎邢特谙琢载 肆夼釉着 粕特砸 遗牧嗽弦, 瘟幸赏乓 +.B vim(1), +拊下 酉谀猎 叟釉瘟拿猎乓赊蜗 幸拍釉磷膛紊 下塘釉 团帜 +显团运镣 `a' `z': +.PP +\fI:'a,'z!xxd\fR +.PP +髻 拖峙耘 捎邢特谙琢载 xxd 肆夼釉着 粕特砸 遗牧嗽弦, 瘟幸赏乓 +.B vim(1), +奶 紫佑粤蜗滋盼裳 牧挝偃 哨 叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊 +团帜 显团运镣 `a' `z': +.PP +\fI:'a,'z!xxd \-r\fR +.PP +髻 拖峙耘 捎邢特谙琢载 xxd 肆夼釉着 粕特砸 遗牧嗽弦, 瘟幸赏乓 +.B vim(1), +奶 紫佑粤蜗滋盼裳 牧挝偃 哨 拍晌釉着挝鲜 釉蚁松 +叟釉瘟拿猎乓赊蜗窍 幸拍釉磷膛紊. 鹣团釉稍 苏矣弦 酉显着杂宰绽菡 釉蚁苏 + 瘟屡疑耘 +.PP +\fI!!xxd \-r\fR +.PP +下 幸限稍猎 拍晌釉着挝偈 由妥咸 哨 肆瘟塘 幼掩: +.PP +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH 黠蜥屙 狺孱轳 +鹨锨伊屯 xxd 诹着役僚 伊孪哉 酉 犹拍绽萆蜕 谖赁盼裳蜕: +.TP +0 +镗陕松 闻 下瘟艺峙钨. +.TP +\-1 +镄乓撩裳 闻 邢哪乓稚琢旁友 (踪邢涛盼膳 +.I xxd \-r \-i +邢肆 闻紫谕现蜗). +.TP +1 +镗陕肆 幸 伊诼弦 颂擂攀 讼土文蜗 釉蚁松. +.TP +2 +鹨下膛唾 紫 兹夏蜗 屏侍. +.TP +3 +鹨下膛唾 踪认奈贤 屏侍. +.TP +4,5 +雠塘耘特瘟 邢谏蒙 邢捎肆 闻南釉芍赏. +.SH 箜雉蜷 翎膂 +uuencode(1), uudecode(1), patch(1) +.br +.SH 痱邃躔蝈鲣孱殄 +笤伊挝嫌载 茉鲜 幸锨伊屯 酉显着杂宰张 嫌下盼蜗釉淹 拖谇 牛 酉谀猎盘. +橛邢特谡试 牛 瘟 幼鲜 釉伊 疑铀. 胂猩艺试 屏侍, 显犹胖勺潦耘 +踪谙踪, 釉廖献稍庞 紫疼怕紊讼. +.br +.SH 麇蝮轳 + 釉伊紊昧 有伊紫尬伤 南苏团卧梢张 xxd 着矣缮 1.7. +.SH 狩麸 +.br +(c) 1990-1997 嘁桥 髁是乓 (Juergen Weigert) +.br + +.LP +髻 拖峙耘 幼下夏蜗 伊有蚁釉伊窝载 幸锨伊屯 酉 佑偬讼 瘟 团窝. +.br +逵躺 捎邢特谙琢紊 茉鲜 幸锨伊屯 幸晌庞滔 琢 肆讼-韵 南认, +邢呐躺耘迂 酉 臀鲜. +.br +逵躺 踪 邢耘已躺 呐呜巧, 韵 哉 闻 幸赊M. +.PP +鹋易偈 琢疑廖 釉伊紊觅 有伊紫尬伤 瘟猩恿 粝紊 盍闹盼韵 (Tony Nugent) +.br + +.br +钆孪特凵 哨团闻紊 孜庞盼 庖镣贤 硐咸盼亮蚁 (Bram Moolenaar). +笤伊紊昧 显遗牧嗽梢献廖 嘁桥蜗 髁是乓韵 (Juergen Weigert). +.PP diff --git a/runtime/doc/xxd-ru.UTF-8.1 b/runtime/doc/xxd-ru.UTF-8.1 new file mode 100644 index 0000000..4a41d66 --- /dev/null +++ b/runtime/doc/xxd-ru.UTF-8.1 @@ -0,0 +1,408 @@ +.TH XXD 1 "August 1996" "小褌褉邪薪懈褑邪 man 写谢褟 xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH 袠袦携 +.I xxd +\- 褋芯蟹写邪褢褌 锌褉械写褋褌邪胁谢械薪懈械 褎邪泄谢邪 胁 胁懈写械 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘褏 泻芯写芯胁 懈谢懈 胁褘锌芯谢薪褟械褌 +芯斜褉邪褌薪芯械 锌褉械芯斜褉邪蟹芯胁邪薪懈械. +.SH 袣袨袦袗袧袛袧袗携 小孝袪袨袣袗 +.B xxd +\-h[elp] +.br +.B xxd +[泻谢褞褔懈] [胁褏芯写薪芯泄_褎邪泄谢 [胁褘褏芯写薪芯泄_褎邪泄谢]] +.br +.B xxd +\-r[evert] [泻谢褞褔懈] [胁褏芯写薪芯泄_褎邪泄谢 [胁褘褏芯写薪芯泄_褎邪泄谢]] +.SH 袨袩袠小袗袧袠袝 +.I xxd +褋芯蟹写邪褢褌 锌褉械写褋褌邪胁谢械薪懈械 褍泻邪蟹邪薪薪芯谐芯 褎邪泄谢邪 懈谢懈 写邪薪薪褘褏, 锌褉芯褔懈褌邪薪薪褘褏 懈蟹 锌芯褌芯泻邪 +褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪, 胁 胁懈写械 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘褏 泻芯写芯胁. 协褌邪 泻芯屑邪薪写邪 褌邪泻卸械 屑芯卸械褌 +胁褘锌芯谢薪懈褌褜 芯斜褉邪褌薪芯械 锌褉械芯斜褉邪蟹芯胁邪薪懈械 蟹邪写邪薪薪褘褏 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘屑懈 泻芯写邪屑懈 写邪薪薪褘褏 +胁 懈褋褏芯写薪褘泄 斜懈薪邪褉薪褘泄 褎芯褉屑邪褌. +袩芯写芯斜薪芯 泻芯屑邪薪写邪屑 +.BR uuencode(1) +懈 +.BR uudecode(1), +芯薪邪 锌芯蟹胁芯谢褟械褌 胁褘锌芯谢薪褟褌褜 锌褉械芯斜褉邪蟹芯胁邪薪懈械 斜懈薪邪褉薪褘褏 写邪薪薪褘褏 胁 ASCII-泻芯写, +泻芯褌芯褉褘泄 屑芯卸薪芯 锌械褉械写邪胁邪褌褜 锌芯 褝谢械泻褌褉芯薪薪芯泄 锌芯褔褌械, 芯写薪邪泻芯, 锌芯屑懈屑芯 褝褌芯谐芯, 锌褉芯谐褉邪屑屑邪 +xxd 锌芯蟹胁芯谢褟械褌 胁褘锌芯谢薪褟褌褜 写械泻芯写懈褉芯胁邪薪懈械 胁 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁褘胁芯写邪, +邪 褌邪泻卸械 屑芯卸械褌 锌褉懈屑械薪褟褌褜褋褟 写谢褟 褋芯蟹写邪薪懈褟 蟹邪锌谢邪褌芯泻 写谢褟 斜懈薪邪褉薪褘褏 褎邪泄谢芯胁. +.SH 袣袥挟效袠 袟袗袩校小袣袗 +袝褋谢懈 +.I 胁褏芯写薪芯泄_褎邪泄谢 +薪械 蟹邪写邪薪, 褌芯 褋芯芯褌胁械褌褋褌胁褍褞褖懈械 写邪薪薪褘械 褔懈褌邪褞褌褋褟 懈蟹 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪. +袙 褋谢褍褔邪械, 械褋谢懈 胁 泻邪褔械褋褌胁械 +.I 胁褏芯写薪芯谐芯_褎邪泄谢邪 +懈褋锌芯谢褜蟹褍械褌褋褟 褋懈屑胁芯谢 +.RB \` \- ', +懈褋褌芯褔薪懈泻芯屑 写邪薪薪褘褏 褌邪泻卸械 胁褘褋褌褍锌邪械褌 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪. +袙 褌芯屑 褋谢褍褔邪械, 械褋谢懈 薪械 褍泻邪蟹邪薪 +.I 胁褘褏芯写薪芯泄_褎邪泄谢 +(懈谢懈 胁屑械褋褌芯 薪械谐芯 懈褋锌芯谢褜蟹褍械褌褋褟 褋懈屑胁芯谢 +.RB \` \- ' +), 褉械蟹褍谢褜褌邪褌 锌褉械芯斜褉邪蟹芯胁邪薪懈褟 薪邪锌褉邪胁谢褟械褌褋褟 胁 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁褘胁芯写邪. +.PP +袨斜褉邪褌懈褌械 胁薪懈屑邪薪懈械, 褔褌芯 懈褋锌芯谢褜蟹褍械褌褋褟 "谢械薪懈胁褘泄" 邪谢谐芯褉懈褌屑 褉邪蟹斜芯褉邪 泻谢褞褔械泄, 泻芯褌芯褉褘泄 薪械 +锌褉芯胁械褉褟械褌 斜芯谢械械 芯写薪芯泄 斜褍泻胁褘 泻谢褞褔邪, 械褋谢懈 胁 褝褌芯屑 泻谢褞褔械 薪械 懈褋锌芯谢褜蟹褍械褌褋褟 锌邪褉邪屑械褌褉. +袩褉芯斜械谢褘 屑械卸写褍 械写懈薪褋褌胁械薪薪褘屑 褋懈屑胁芯谢芯屑 泻谢褞褔邪 懈 褋芯芯褌胁械褌褋褌胁褍褞褖懈屑 锌邪褉邪屑械褌褉芯屑 薪械 褟胁谢褟褞褌褋褟 +芯斜褟蟹邪褌械谢褜薪褘屑懈. 袩邪褉邪屑械褌褉褘 泻谢褞褔械泄 屑芯谐褍褌 斜褘褌褜 蟹邪写邪薪褘 褋 懈褋锌芯谢褜蟹芯胁邪薪懈械屑 写械褋褟褌懈褔薪芯谐芯, +褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 懈谢懈 胁芯褋褜屑械褉懈褔薪芯谐芯 褎芯褉屑邪褌邪. +孝邪泻懈屑 芯斜褉邪蟹芯屑, 泻谢褞褔懈 +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +懈 +.B \-cols 8 +褟胁谢褟褞褌褋褟 褉邪胁薪芯蟹薪邪褔薪褘屑懈. +.PP +.TP +.IR \-a " | " \-autoskip +袙泻谢褞褔邪械褌 邪胁褌芯屑邪褌懈褔械褋泻懈泄 锌褉芯锌褍褋泻: 胁屑械褋褌芯 锌芯褋谢械写芯胁邪褌械谢褜薪芯褋褌懈 +薪褍谢械胁褘褏 褋褌褉芯泻 懈褋锌芯谢褜蟹褍械褌褋褟 芯写懈薪芯褔薪褘泄 褋懈屑胁芯谢 '*'. 袩芯 褍屑芯谢褔邪薪懈褞 +薪械 锌褉懈屑械薪褟械褌褋褟. +.TP +.IR \-b " | " \-bits +袙屑械褋褌芯 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 泻芯写邪 懈褋锌芯谢褜蟹褍褞褌褋褟 斜懈褌褘 (写胁芯懈褔薪褘械 褑懈褎褉褘). +袩褉懈 懈褋锌芯谢褜蟹芯胁邪薪懈懈 褝褌芯谐芯 泻谢褞褔邪 胁屑械褋褌芯 芯斜褘褔薪芯谐芯 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 +芯泻褌械褌芯胁 懈褋锌芯谢褜蟹褍褞褌褋褟 薪邪斜芯褉褘 懈蟹 胁芯褋褜屑懈 褋懈屑胁芯谢芯胁 "1" 懈 "0". 袣邪卸写邪褟 褋褌褉芯泻邪 +锌褉械写胁邪褉褟械褌褋褟 薪芯屑械褉芯屑 褋褌褉芯泻懈 胁 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯屑 胁懈写械, 邪 蟹邪胁械褉褕邪械褌褋褟 褋懈屑胁芯谢褜薪褘屑 +锌褉械写褋褌邪胁谢械薪懈械屑 (胁 胁懈写械 ascii 懈谢懈 ebcdic). 袣谢褞褔懈 \-p, \-i 胁 褝褌芯屑 褉械卸懈屑械 +薪械 褉邪斜芯褌邪褞褌. +.TP +.IR "\-c 泻芯谢 " | " \-cols 泻芯谢" +袟邪写邪褢褌 泻芯谢懈褔械褋褌胁芯 芯泻褌械褌芯胁 +.RI < 泻芯谢 >, +泻芯褌芯褉芯械 胁褘胁芯写懈褌褋褟 薪邪 泻邪卸写芯泄 褋褌褉芯泻械. 袩芯 褍屑芯谢褔邪薪懈褞 懈褋锌芯谢褜蟹褍械褌褋褟 蟹薪邪褔械薪懈械 16 +(\-i: 12, \-ps: 30, \-b: 6). +袦邪泻褋懈屑邪谢褜薪芯 写芯锌褍褋褌懈屑芯械 蟹薪邪褔械薪懈械: 256. +.TP +.IR \-E " | " \-EBCDIC +袠蟹屑械薪褟械褌 褋锌芯褋芯斜 泻芯写懈褉芯胁邪薪懈褟 褋懈屑胁芯谢芯胁 胁 锌褉邪胁芯泄 泻芯谢芯薪泻械 褋 ASCII 薪邪 EBCDIC. 协褌芯褌 泻谢褞褔 +薪械 懈蟹屑械薪褟械褌 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯械 锌褉械写褋褌邪胁谢械薪懈械. 袛邪薪薪褘泄 泻谢褞褔 薪械 懈屑械械褌 褋屑褘褋谢邪, +械褋谢懈 懈褋锌芯谢褜蟹褍褞褌褋褟 泻谢褞褔懈 \-r, \-p 懈谢懈 \-i. +.TP +.IR "\-g 斜邪泄褌 " | " \-groupsize 斜邪泄褌" +袩芯蟹胁芯谢褟械褌 胁褘锌芯谢薪褟褌褜 谐褉褍锌锌懈褉芯胁泻褍 褍泻邪蟹邪薪薪芯谐芯 泻芯谢懈褔械褋褌胁邪 +.RI < 斜邪泄褌芯胁 > +(写胁械 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘械 褑懈褎褉褘 懈谢懈 胁芯褋械屑褜 斜懈褌芯胁), 芯褌写械谢褟褟 谐褉褍锌锌褘 写褉褍谐 芯褌 写褉褍谐邪 锌褉芯斜械谢邪屑懈. +袟薪邪褔械薪懈械 +.I \-g 0 +锌褉懈屑械薪褟械褌褋褟 写谢褟 芯褌泻邪蟹邪 芯褌 懈褋锌芯谢褜蟹芯胁邪薪懈褟 谐褉褍锌锌懈褉芯胁泻懈. +袩芯 褍屑芯谢褔邪薪懈褞 懈褋锌芯谢褜蟹褍械褌褋褟 蟹薪邪褔械薪懈械 +.RI < 斜邪泄褌 "> 褉邪胁薪芯械 " 2 +胁 芯斜褘褔薪芯屑 褉械卸懈屑械 懈 \fI1\fP 胁 斜懈褌芯胁芯屑 褉械卸懈屑械. 袚褉褍锌锌懈褉芯胁泻邪 薪械 锌褉懈屑械薪褟械褌褋褟 +胁 褉械卸懈屑邪褏 postscript 懈 include. +.TP +.IR \-h " | " \-help +袙褘胁芯写懈褌 褋锌褉邪胁泻褍 锌芯 写芯褋褌褍锌薪褘屑 泻谢褞褔邪屑 泻芯屑邪薪写薪芯泄 褋褌褉芯泻懈 懈 蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 锌褉芯谐褉邪屑屑褘. +小芯蟹写邪薪懈械 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 薪械 胁褘锌芯谢薪褟械褌褋褟. +.TP +.IR \-i " | " \-include +袩芯蟹胁芯谢褟械褌 褋芯蟹写邪胁邪褌褜 胁褘胁芯写 胁 褋褌懈谢械 锌芯写泻谢褞褔邪械屑褘褏 蟹邪谐芯谢芯胁芯褔薪褘褏 褎邪泄谢芯胁 褟蟹褘泻邪 C. +袙褘胁芯写 褋芯写械褉卸懈褌 锌芯谢薪芯褑械薪薪芯械 芯锌褉械写械谢械薪懈械 褋褌邪褌懈褔械褋泻芯谐芯 屑邪褋褋懈胁邪 写邪薪薪褘褏, 懈屑褟 泻芯褌芯褉芯谐芯 +褋芯芯褌胁械褌褋褌胁褍械褌 懈屑械薪懈 胁褏芯写薪芯谐芯 褎邪泄谢邪, 械褋谢懈 xxd 薪械 褋褔懈褌褘胁邪械褌 写邪薪薪褘械 懈蟹 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 +胁胁芯写邪. +.TP +.IR "\-l 写谢懈薪邪 " | " \-len 写谢懈薪邪" +袟邪胁械褉褕邪械褌 褉邪斜芯褌褍 锌芯褋谢械 蟹邪锌懈褋懈 蟹邪写邪薪薪芯谐芯 胁 锌邪褉邪屑械褌褉械 +.RI < 写谢懈薪邪 > +泻芯谢懈褔械褋褌胁邪 芯泻褌械褌芯胁. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +袠褋锌芯谢褜蟹褍械褌 薪械锌褉械褉褘胁薪褘泄 褎芯褉屑邪褌 胁褘胁芯写邪 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 泻芯写邪, +懈蟹胁械褋褌薪褘泄 泻邪泻 "锌褉芯褋褌芯泄" 褋褌懈谢褜 懈谢懈 褋褌懈谢褜 "postscript". +.TP +.IR \-r " | " \-revert +袠蟹屑械薪褟械褌 褋屑褘褋谢 芯锌械褉邪褑懈懈 薪邪 锌褉芯褌懈胁芯锌芯谢芯卸薪褘泄: 锌芯蟹胁芯谢褟械褌 胁褘锌芯谢薪褟褌褜 锌褉械芯斜褉邪蟹芯胁邪薪懈械 +褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 胁 斜懈薪邪褉薪褘泄 泻芯写 (懈谢懈 锌褉懈屑械薪褟褌褜 褉械蟹褍谢褜褌邪褌 胁 泻邪褔械褋褌胁械 蟹邪锌谢邪褌褘). +袝褋谢懈 胁褘胁芯写 锌褉芯懈褋褏芯写懈褌 薪械 胁 锌芯褌芯泻 褋褌邪薪写邪褉褌薪芯谐芯 胁褘胁芯写邪, 褌芯 xxd 胁褘锌芯谢薪褟械褌 写芯斜邪胁谢械薪懈械 泻芯写邪 +泻 褋芯芯褌胁械褌褋褌胁褍褞褖械屑褍 褎邪泄谢褍. 袩褉懈 懈褋锌芯谢褜蟹芯胁邪薪懈懈 泻芯屑斜懈薪邪褑懈懈 泻谢褞褔械泄 +.I \-r \-p +锌褉芯懈褋褏芯写懈褌 褔褌械薪懈械 "锌褉芯褋褌芯谐芯" 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 斜械蟹 懈褋锌芯谢褜蟹芯胁邪薪懈褟 +懈薪褎芯褉屑邪褑懈懈 芯 薪芯屑械褉邪褏 褋褌褉芯泻 懈 泻邪泻芯谐芯-谢懈斜芯 褋锌械褑懈邪谢褜薪芯谐芯 褉邪褋泻褉芯褟 泻芯谢芯薪芯泻. 袩褉芯斜械谢褘 +懈 褋懈屑胁芯谢褘 薪芯胁芯泄 褋褌褉芯泻懈 屑芯谐褍褌 胁褋褌褉械褔邪褌褜褋褟 胁 谢褞斜芯屑 屑械褋褌械 懈褋褏芯写薪褘褏 写邪薪薪褘褏. +.TP +.I \-seek 褋屑械褖械薪懈械 +袩褉懈 懈褋锌芯谢褜蟹芯胁邪薪懈懈 锌芯褋谢械 泻谢褞褔邪 +.I \-r +: 写芯斜邪胁谢褟褌褜 褍泻邪蟹邪薪薪芯械 +.RI < 褋屑械褖械薪懈械 > +泻 褎邪泄谢芯胁褘屑 锌芯蟹懈褑懈褟屑, 芯斜薪邪褉褍卸械薪薪褘屑 胁 懈褋褏芯写薪褘褏 写邪薪薪褘褏. +.TP +.I \-s [\+][\-]seek +袧邪褔懈薪邪械褌 褉邪斜芯褌褍 褋 褍泻邪蟹邪薪薪芯谐芯 邪斜褋芯谢褞褌薪芯谐芯 (懈谢懈 芯褌薪芯褋懈褌械谢褜薪芯谐芯) +.RI < 褋屑械褖械薪懈褟 > +胁 斜邪泄褌邪褏 胁芯 胁褏芯写薪芯屑_褎邪泄谢械. +\fI\+ \fR褍泻邪蟹褘胁邪械褌, 褔褌芯 褋屑械褖械薪懈械 褟胁谢褟械褌褋褟 芯褌薪芯褋懈褌械谢褜薪褘屑 锌芯 芯褌薪芯褕械薪懈褞 +泻 褌械泻褍褖械泄 褎邪泄谢芯胁芯泄 锌芯蟹懈褑懈懈 胁 锌芯褌芯泻械 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪 (斜械褋褋屑褘褋谢械薪薪芯, 械褋谢懈 褔褌械薪懈械 +锌褉芯懈褋褏芯写懈褌 薪械 懈蟹 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪). \fI\- \fR褍泻邪蟹褘胁邪械褌, 褔褌芯 写芯谢卸薪芯 斜褘褌褜 锌褉芯褔懈褌邪薪芯 +褍泻邪蟹邪薪薪芯械 泻芯谢懈褔械褋褌胁芯 褋懈屑胁芯谢芯胁 芯褌 泻芯薪褑邪 胁胁芯写邪 (谢懈斜芯, 械褋谢懈 褋芯褔械褌邪械褌褋褟 褋 \fI \+ \fR: +锌械褉械写 褌械泻褍褖械泄 锌芯蟹懈褑懈懈 褎邪泄谢邪 胁 锌芯褌芯泻械 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪). +袝褋谢懈 泻谢褞褔 \-s 薪械 懈褋锌芯谢褜蟹褍械褌褋褟, 褌芯 xxd 薪邪褔懈薪邪械褌 褉邪斜芯褌褍 芯褌 褌械泻褍褖械泄 锌芯蟹懈褑懈懈 胁 褎邪泄谢械. +.TP +.I \-u +袠褋锌芯谢褜蟹褍械褌 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘械 褑懈褎褉褘 胁 胁械褉褏薪械屑 褉械谐懈褋褌褉械. 袩芯 褍屑芯谢褔邪薪懈褞 懈褋锌芯谢褜蟹褍褞褌褋褟 褑懈褎褉褘 胁 +薪懈卸薪械屑 褉械谐懈褋褌褉械 褋懈屑胁芯谢芯胁. +.TP +.IR \-v " | " \-version +袨褌芯斜褉邪卸邪械褌 懈薪褎芯褉屑邪褑懈褞 芯 胁械褉褋懈懈 锌褉芯谐褉邪屑屑褘. +.SH 袩袨袛袙袨袛袧蝎袝 袣袗袦袧袠 +.PP +.I xxd \-r +芯斜谢邪写邪械褌 胁褋褌褉芯械薪薪褘屑 懈薪褌械谢谢械泻褌芯屑 写谢褟 褉邪褋锌芯蟹薪邪胁邪薪懈褟 懈薪褎芯褉屑邪褑懈懈 芯 薪芯屑械褉邪褏 褋褌褉芯泻. +袝褋谢懈 胁芯蟹屑芯卸械薪 锌芯懈褋泻 锌芯 胁褏芯写薪芯屑褍 褎邪泄谢褍, 褌芯 薪芯屑械褉邪 褋褌褉芯泻 胁 薪邪褔邪谢械 泻邪卸写芯泄 褋褌褉芯泻懈 +褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 屑芯谐褍褌 斜褘褌褜 薪械褍锌芯褉褟写芯褔械薪薪褘屑懈, 薪械泻芯褌芯褉褘械 褋褌褉芯泻懈 屑芯谐褍褌 +斜褘褌褜 锌褉芯锌褍褖械薪褘 懈谢懈 锌械褉械褋械泻邪褌褜褋褟 写褉褍谐 褋 写褉褍谐芯屑. 袙 褝褌懈褏 褋谢褍褔邪褟褏 xxd 懈褋锌芯谢褜蟹褍械褌 +lseek(2) 写谢褟 锌械褉械褏芯写邪 泻 褋谢械写褍褞褖械泄 锌芯蟹懈褑懈懈. 袝褋谢懈 锌芯懈褋泻 锌芯 胁褏芯写薪芯屑褍 褎邪泄谢褍 +薪械胁芯蟹屑芯卸械薪, 褌芯 写芯锌褍褋褌懈屑褘 褌芯谢褜泻芯 锌褉芯锌褍褋泻懈 褋褌褉芯泻, 泻芯褌芯褉褘械 蟹邪锌芯谢薪褟褞褌褋褟 薪褍谢械胁褘屑懈 +斜邪泄褌邪屑懈. +.PP +.I xxd \-r +薪懈泻芯谐写邪 薪械 胁褘胁芯写懈褌 褋芯芯斜褖械薪懈泄 芯斜 芯褕懈斜泻邪褏. 袦褍褋芯褉 锌褉芯锌褍褋泻邪械褌褋褟 屑芯谢褔邪. +.PP +袩褉懈 褉械写邪泻褌懈褉芯胁邪薪懈懈 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘褏 锌褉械写褋褌邪胁谢械薪懈泄 斜懈薪邪褉薪褘褏 褎邪泄谢芯胁 芯斜褉邪褖邪泄褌械 +胁薪懈屑邪薪懈械, 褔褌芯 +.I xxd \-r +锌褉芯锌褍褋泻邪械褌 胁 褋褌褉芯泻械 胁胁芯写邪 谢褞斜褘械 写邪薪薪褘械 锌芯褋谢械 锌褉芯褔褌械薪懈褟 写芯褋褌邪褌芯褔薪芯谐芯 泻芯谢懈褔械褋褌胁邪 +泻芯谢芯薪芯泻 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘褏 写邪薪薪褘褏 (褋屑. 泻谢褞褔 \-c). 协褌芯 芯蟹薪邪褔邪械褌, 褔褌芯 懈蟹屑械薪械薪懈褟, +胁薪械褋械薪薪褘械 胁 泻芯谢芯薪泻懈 褋 锌械褔邪褌薪褘屑懈 褋懈屑胁芯谢邪屑懈 ascii (懈谢懈 ebcdic), 胁褋械谐写邪 懈谐薪芯褉懈褉褍褞褌褋褟. +袩褉懈 芯斜褉邪褌薪芯屑 锌褉械芯斜褉邪蟹芯胁邪薪懈懈 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 胁 褋褌懈谢械 +postscript 褋 锌芯屑芯褖褜褞 泻芯屑邪薪写褘 xxd \-r \-p 泻芯谢懈褔械褋褌胁芯 泻芯谢芯薪芯泻 薪械 褍褔懈褌褘胁邪械褌褋褟. +袙 褝褌芯屑 褋谢褍褔邪械 褉邪褋锌芯蟹薪邪褞褌褋褟 胁褋械 褋懈屑胁芯谢褘, 泻芯褌芯褉褘械 锌芯褏芯卸懈 薪邪 锌邪褉褘 褕械褋褌薪邪写褑邪褌械褉懈褔薪褘褏 褑懈褎褉. +.PP +袨斜褉邪褌懈褌械 胁薪懈屑邪薪懈械 薪邪 褉邪蟹谢懈褔懈械 屑械卸写褍 泻芯屑邪薪写邪屑懈 +.PP +\fI% xxd \-i 褎邪泄谢\fR +.PP +懈 +.PP +\fI% xxd \-i \< 褎邪泄谢\fR +.PP +袣芯屑邪薪写邪 +.I xxd \-s \+seek +屑芯卸械褌 芯褌谢懈褔邪褌褜褋褟 芯褌 +.I xxd \-s seek, +锌芯褋泻芯谢褜泻褍 写谢褟 褌芯谐芯, 褔褌芯斜褘 "芯褌屑芯褌邪褌褜" 写邪薪薪褘械 薪邪 胁褏芯写械 薪邪蟹邪写, 懈褋锌芯谢褜蟹褍械褌褋褟 胁褘蟹芯胁 lseek(2). +袩褉懈 懈褋锌芯谢褜蟹芯胁邪薪懈懈 `+' 锌芯胁械写械薪懈械 斜褍写械褌 芯褌谢懈褔邪褌褜褋褟, 械褋谢懈 胁褏芯写薪褘械 写邪薪薪褘械 +锌芯褋褌褍锌邪褞褌 褋 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪, 邪 锌芯蟹懈褑懈褟 胁 褎邪泄谢械 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪 薪械 薪邪褏芯写懈褌褋褟 +胁 薪邪褔邪谢械 褎邪泄谢邪 泻 褌芯屑褍 屑芯屑械薪褌褍, 泻芯谐写邪 锌褉芯谐褉邪屑屑邪 xxd 蟹邪锌褍褖械薪邪 懈 锌褉懈褋褌褍锌邪械褌 泻 褔褌械薪懈褞 胁胁芯写邪. +袧懈卸械褋谢械写褍褞褖懈械 锌褉懈屑械褉褘 锌芯屑芯谐褍褌 锌褉芯褟褋薪懈褌褜 (懈谢懈 械褖褢 斜芯谢褜褕械 蟹邪锌褍褌邪褌褜!) 褋懈褌褍邪褑懈褞... +.PP +袨褌屑芯褌泻邪 薪邪蟹邪写 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪; 薪械芯斜褏芯写懈屑芯, 锌芯褋泻芯谢褜泻褍 'cat' 褍卸械 胁褘锌芯谢薪懈谢邪 +褔褌械薪懈械 写芯 泻芯薪褑邪 锌芯褌芯泻邪 褋褌邪薪写邪褉褌薪芯谐芯 胁胁芯写邪: +.PP +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +袙褘胁芯写 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 芯褌 锌芯蟹懈褑懈懈 胁 褎邪泄谢械 0x480 +(= 1024+128). +小懈屑胁芯谢 `+' 芯蟹薪邪褔邪械褌 "芯褌薪芯褋懈褌械谢褜薪芯 褌械泻褍褖械泄 锌芯蟹懈褑懈懈", 褌邪泻懈屑 芯斜褉邪蟹芯屑 `128' 写芯斜邪胁谢褟械褌褋褟 +泻 锌械褉胁芯屑褍 泻懈谢芯斜邪泄褌褍, 谐写械 蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 dd: +.PP +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +袙褘胁芯写 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 芯褌 锌芯蟹懈褑懈懈 胁 褎邪泄谢械 0x100 +(= 1024-768): +.PP +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +袙 褌芯 卸械 胁褉械屑褟, 褋谢械写褍械褌 蟹邪屑械褌懈褌褜, 褔褌芯 锌芯写芯斜薪褘械 褋懈褌褍邪褑懈懈 胁褋褌褉械褔邪褞褌褋褟 写芯胁芯谢褜薪芯 褉械写泻芯, +褌邪泻 褔褌芯 褋懈屑胁芯谢 `+' 芯斜褘褔薪芯 薪械 懈褋锌芯谢褜蟹褍械褌褋褟. 袗胁褌芯褉 锌褉械写锌芯褔懈褌邪械褌 薪邪斜谢褞写邪褌褜 蟹邪 褉邪斜芯褌芯泄 +xxd 褋 锌芯屑芯褖褜褞 strace(1) 懈谢懈 truss(1) 胁 褌械褏 褋谢褍褔邪褟褏, 泻芯谐写邪 锌褉懈屑械薪褟械褌褋褟 泻谢褞褔 +\-s. +.SH 袩袪袠袦袝袪蝎 +.PP +.br +袙褘胁械褋褌懈 胁褋褢, 泻褉芯屑械 锌械褉胁褘褏 褌褉褢褏 褋褌褉芯泻 (0x30 斜邪泄褌芯胁) 褎邪泄谢邪 +.B file +: +.PP +\fI% xxd \-s 0x30 file +.PP +.br +袙褘胁械褋褌懈 褌褉懈 褋褌褉芯泻懈 (0x30 斜邪泄褌芯胁) 芯褌 泻芯薪褑邪 褎邪泄谢邪 +.B file +: +.PP +\fI% xxd \-s \-0x30 file +.PP +.br +袙褘胁械褋褌懈 120 斜邪泄褌芯胁 胁 胁懈写械 薪械锌褉械褉褘胁薪芯谐芯 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 +锌芯 20 芯泻褌械褌芯胁 胁 褋褌褉芯泻械: +.PP +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br +.PP +.br +袙褘胁械褋褌懈 锌械褉胁褘械 120 斜邪泄褌芯胁 褝褌芯泄 褋褌褉邪薪懈褑褘 褋锌褉邪胁芯褔薪懈泻邪 锌芯 12 芯泻褌械褌芯胁 胁 褋褌褉芯泻械: +.PP +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent 胁褘褏芯写薪芯泄_褎邪泄谢\fR +.br +.PP +.br +袟邪屑械薪懈褌褜 写邪褌褍 胁 褎邪泄谢械 xxd.1: +.PP +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +小芯蟹写邪褌褜 65537-斜邪泄褌薪褘泄 褎邪泄谢, 胁褋械 斜邪泄褌褘 泻芯褌芯褉芯谐芯 懈屑械褞褌 蟹薪邪褔械薪懈械 +0x00, 泻褉芯屑械 锌芯褋谢械写薪械谐芯 斜邪泄褌邪, 泻芯褌芯褉褘泄 写芯谢卸械薪 懈屑械褌褜 蟹薪邪褔械薪懈械 'A' +(0x41): +.PP +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +小芯蟹写邪褌褜 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯械 锌褉械写褋褌邪胁谢械薪懈械 褝褌芯谐芯 褎邪泄谢邪 褋 +懈褋锌芯谢褜蟹芯胁邪薪懈械屑 邪胁褌芯屑邪褌懈褔械褋泻芯谐芯 锌褉芯锌褍褋泻邪: +.PP +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +小芯蟹写邪褌褜 1-斜邪泄褌薪褘泄 褎邪泄谢, 褋芯写械褉卸邪褖懈泄 褋懈屑胁芯谢 'A'. +效懈褋谢芯 锌芯褋谢械 '\-r \-s' 写芯斜邪胁谢褟械褌褋褟 泻 薪芯屑械褉邪屑 褋褌褉芯泻, 薪邪泄写械薪薪褘屑 胁 褎邪泄谢械; +懈薪邪褔械 谐芯胁芯褉褟, 锌褉械写褕械褋褌胁褍褞褖懈械 斜邪泄褌褘 锌褉芯锌褍褋泻邪褞褌褋褟: +.PP +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +xxd 屑芯卸薪芯 懈褋锌芯谢褜蟹芯胁邪褌褜 胁 泻邪褔械褋褌胁械 褎懈谢褜褌褉邪 胁 褉械写邪泻褌芯褉械, 薪邪锌褉懈屑械褉 胁 +.B vim(1), +褔褌芯斜褘 褋芯蟹写邪褌褜 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯械 锌褉械写褋褌邪胁谢械薪懈械 芯斜谢邪褋褌懈 屑械卸写褍 +芯褌屑械褌泻邪屑懈 `a' 懈 `z': +.PP +\fI:'a,'z!xxd\fR +.PP +袙褘 屑芯卸械褌械 懈褋锌芯谢褜蟹芯胁邪褌褜 xxd 胁 泻邪褔械褋褌胁械 褎懈谢褜褌褉邪 胁 褉械写邪泻褌芯褉械, 薪邪锌褉懈屑械褉 胁 +.B vim(1), +写谢褟 胁芯褋褋褌邪薪芯胁谢械薪懈褟 写邪薪薪褘褏 懈蟹 褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟 +屑械卸写褍 芯褌屑械褌泻邪屑懈 `a' 懈 `z': +.PP +\fI:'a,'z!xxd \-r\fR +.PP +袙褘 屑芯卸械褌械 懈褋锌芯谢褜蟹芯胁邪褌褜 xxd 胁 泻邪褔械褋褌胁械 褎懈谢褜褌褉邪 胁 褉械写邪泻褌芯褉械, 薪邪锌褉懈屑械褉 胁 +.B vim(1), +写谢褟 胁芯褋褋褌邪薪芯胁谢械薪懈褟 写邪薪薪褘褏 懈蟹 械写懈薪褋褌胁械薪薪芯泄 褋褌褉芯泻懈 +褕械褋褌薪邪写褑邪褌械褉懈褔薪芯谐芯 锌褉械写褋褌邪胁谢械薪懈褟. 袩芯屑械褋褌懈褌械 泻褍褉褋芯褉 胁 褋芯芯褌胁械褌褋褌胁褍褞褖褍褞 褋褌褉芯泻褍 +懈 薪邪斜械褉懈褌械 +.PP +\fI!!xxd \-r\fR +.PP +效褌芯斜褘 锌褉芯褔懈褌邪褌褜 械写懈薪褋褌胁械薪薪褘泄 褋懈屑胁芯谢 懈蟹 泻邪薪邪谢邪 褋胁褟蟹懈: +.PP +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH 袙袨袟袙袪袗些袗袝袦蝎袝 袟袧袗效袝袧袠携 +袩褉芯谐褉邪屑屑邪 xxd 蟹邪胁械褉褕邪械褌 褉邪斜芯褌褍 褋芯 褋谢械写褍褞褖懈屑懈 蟹薪邪褔械薪懈褟屑懈: +.TP +0 +袨褕懈斜泻懈 薪械 芯斜薪邪褉褍卸械薪褘. +.TP +\-1 +袨锌械褉邪褑懈褟 薪械 锌芯写写械褉卸懈胁邪械褌褋褟 (胁褘锌芯谢薪械薪懈械 +.I xxd \-r \-i +锌芯泻邪 薪械胁芯蟹屑芯卸薪芯). +.TP +1 +袨褕懈斜泻邪 锌褉懈 褉邪蟹斜芯褉械 泻谢褞褔械泄 泻芯屑邪薪写薪芯泄 褋褌褉芯泻懈. +.TP +2 +袩褉芯斜谢械屑褘 胁芯 胁褏芯写薪芯屑 褎邪泄谢械. +.TP +3 +袩褉芯斜谢械屑褘 胁 胁褘褏芯写薪芯屑 褎邪泄谢械. +.TP +4,5 +袞械谢邪褌械谢褜薪邪褟 锌芯蟹懈褑懈褟 锌芯懈褋泻邪 薪械写芯褋褌懈卸懈屑邪. +.SH 小袦袨孝袪袠 孝袗袣袞袝 +uuencode(1), uudecode(1), patch(1) +.br +.SH 袩袪袝袛校袩袪袝袞袛袝袧袠袝 +小褌褉邪薪薪芯褋褌褜 褝褌芯泄 锌褉芯谐褉邪屑屑褘 褋芯芯褌胁械褌褋褌胁褍械褌 芯褋芯斜械薪薪芯褋褌褟屑 屑芯蟹谐邪 械褢 褋芯蟹写邪褌械谢褟. +袠褋锌芯谢褜蟹褍泄褌械 械褢 薪邪 褋胁芯泄 褋褌褉邪褏 懈 褉懈褋泻. 袣芯锌懈褉褍泄褌械 褎邪泄谢褘, 芯褌褋谢械卸懈胁邪泄褌械 +胁褘蟹芯胁褘, 褋褌邪薪芯胁懈褌械褋褜 胁芯谢褕械斜薪懈泻芯屑. +.br +.SH 袙袝袪小袠携 +协褌邪 褋褌褉邪薪懈褑邪 褋锌褉邪胁芯褔薪懈泻邪 写芯泻褍屑械薪褌懈褉褍械褌 xxd 胁械褉褋懈懈 1.7. +.SH 袗袙孝袨袪 +.br +(c) 1990-1997 挟褉谐械薪 袙邪泄谐械褉褌 (Juergen Weigert) +.br + +.LP +袙褘 屑芯卸械褌械 褋胁芯斜芯写薪芯 褉邪褋锌褉芯褋褌褉邪薪褟褌褜 锌褉芯谐褉邪屑屑褍 褋芯 褋褋褘谢泻芯泄 薪邪 屑械薪褟. +.br +袝褋谢懈 懈褋锌芯谢褜蟹芯胁邪薪懈械 褝褌芯泄 锌褉芯谐褉邪屑屑褘 锌褉懈薪械褋谢芯 胁邪屑 泻邪泻芯泄-褌芯 写芯褏芯写, +锌芯写械谢懈褌械褋褜 褋芯 屑薪芯泄. +.br +袝褋谢懈 胁褘 锌芯褌械褉褟谢懈 写械薪褜谐懈, 褌芯 褟 褌褍褌 薪械 锌褉懈褔褢屑. +.PP +袩械褉胁褘泄 胁邪褉懈邪薪褌 褋褌褉邪薪懈褑褘 褋锌褉邪胁芯褔薪懈泻邪 薪邪锌懈褋邪薪 孝芯薪懈 袧邪写卸械薪褌芯屑 (Tony Nugent) +.br + +.br +袧械斜芯谢褜褕懈械 懈蟹屑械薪械薪懈褟 胁薪械褋械薪褘 袘褉邪屑芯屑 袦芯芯谢械薪邪邪褉芯屑 (Bram Moolenaar). +小褌褉邪薪懈褑邪 芯褌褉械写邪泻褌懈褉芯胁邪薪邪 挟褉谐械薪芯屑 袙邪泄谐械褉褌芯屑 (Juergen Weigert). +.PP diff --git a/runtime/doc/xxd.1 b/runtime/doc/xxd.1 new file mode 100644 index 0000000..f5a7c65 --- /dev/null +++ b/runtime/doc/xxd.1 @@ -0,0 +1,407 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hex dump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode (1) +and +.BR uudecode (1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +Toggle autoskip: A single '*' replaces NUL-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hex dump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexadecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ASCII (or EBCDIC) representation. The command line switches +\-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +Format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +No maximum for \-ps. With \-ps, 0 results in one long line of output. +.TP +.IR \-C " | " \-capitalize +Capitalize variable names in C include file style, when using \-i. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR \-e +Switch to little-endian hex dump. +This option treats byte groups as words in little-endian byte order. +The default grouping of 4 bytes may be changed using +.RI "" \-g . +This option only applies to the hex dump, leaving the ASCII (or EBCDIC) +representation unchanged. +The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +Separate the output of every +.RI < bytes > +bytes (two hex characters or eight bit digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode, \fI4\fP in little-endian mode and \fI1\fP in bits mode. +Grouping does not apply to PostScript or include style. +.TP +.IR \-h " | " \-help +Print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +Output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +Stop after writing +.RI < len > +octets. +.TP +.I "\-n name " | " \-name name" +Override the variable name output when \-i is used. The array is named +\fIname\fP and the length is named \fIname\fP_len. +.TP +.I \-o offset +Add +.RI < offset > +to the displayed file position. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +Output in PostScript continuous hex dump style. Also known as plain hex dump +style. +.TP +.IR \-r " | " \-revert +Reverse operation: convert (or patch) hex dump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional whitespace and line breaks are allowed +anywhere. Use the combination +.I \-r \-b +to read a bits dump instead of a hex dump. +.TP +.IR \-R " " when +In output the hex-value and the value are both colored with the same color +depending on the hex-value. Mostly helping to differentiate printable and +non-printable characters. +.I \fIwhen\fP +is +.BR never ", " always ", or " auto . +When the +.BR $NO_COLOR +environment variable is set, colorization will be disabled. +.TP +.I \-seek offset +When used after +.IR \-r : +revert with +.RI < offset > +added to file positions found in hex dump. +.TP +.I \-s [+][\-]seek +Start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +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 \-u +Use upper-case hex letters. Default is lower-case. +.TP +.IR \-v " | " \-version +Show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some built-in magic while evaluating line number information. +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. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hex dumps, please note that +.I 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) columns are always ignored. Reverting a plain (or PostScript) style +hex dump with xxd \-r \-p does not depend on the correct number of columns. Here, anything that looks like a pair of hex digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i < file\fR +.PP +.I xxd \-s +seek +may be different from +.IR "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 help to clarify (or further confuse!): +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fR +.PP +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. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fR +.PP +Hex dump from file position 0x100 (=1024\-768) onwards. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fR +.PP +However, this is a rare situation and the use of `+' is rarely needed. +The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.BR file . +.br +\fI% xxd \-s 0x30 file\fR +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.BR file . +.br +\fI% xxd \-s \-0x30 file\fR +.PP +.br +Print 120 bytes as a continuous hex dump with 20 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e54482058584420312022417567757374203139 +.br +39362220224d616e75616c207061676520666f72 +.br +20787864220a2e5c220a2e5c222032317374204d +.br +617920313939360a2e5c22204d616e2070616765 +.br +20617574686f723a0a2e5c2220202020546f6e79 +.br +204e7567656e74203c746f6e79407363746e7567 +.br + +.br +Hex dump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +.br +000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +.br +0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +.br +0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +.br +0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +.br +000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +.br +0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +.br +0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +.br +0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +.br +000006c: 3c74 6f6e 7940 7363 746e 7567 output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo "0000037: 3574 68" | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x36 \-l 13 \-c 13 xxd.1\fR +.br +0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo "010000: 41" | xxd \-r > file\fR +.PP +.br +Hex dump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the line numbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hex dump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hex dump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hex dump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported +\%(\c +.I \%xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tool's weirdness matches its creator's brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man new file mode 100644 index 0000000..56b69b4 --- /dev/null +++ b/runtime/doc/xxd.man @@ -0,0 +1,283 @@ +XXD(1) General Commands Manual XXD(1) + + + +NAME + xxd - make a hex dump or do the reverse. + +SYNOPSIS + xxd -h[elp] + xxd [options] [infile [outfile]] + xxd -r[evert] [options] [infile [outfile]] + +DESCRIPTION + xxd creates a hex dump of a given file or standard input. It can also + convert a hex dump back to its original binary form. Like uuencode(1) + and uudecode(1) it allows the transmission of binary data in a `mail- + safe' ASCII representation, but has the advantage of decoding to stan鈥 + dard output. Moreover, it can be used to perform binary file patching. + +OPTIONS + If no infile is given, standard input is read. If infile is specified + as a `-' character, then input is taken from standard input. If no + outfile is given (or a `-' character is in its place), results are sent + to standard output. + + Note that a "lazy" parser is used which does not check for more than + the first option letter, unless the option is followed by a parameter. + Spaces between a single option letter and its parameter are optional. + Parameters to options can be specified in decimal, hexadecimal or octal + notation. Thus -c8, -c 8, -c 010 and -cols 8 are all equivalent. + + -a | -autoskip + Toggle autoskip: A single '*' replaces NUL-lines. Default off. + + -b | -bits + Switch to bits (binary digits) dump, rather than hex dump. This + option writes octets as eight digits "1"s and "0"s instead of a + normal hexadecimal dump. Each line is preceded by a line number + in hexadecimal and followed by an ASCII (or EBCDIC) representa鈥 + tion. The command line switches -p, -i do not work with this + mode. + + -c cols | -cols cols + Format octets per line. Default 16 (-i: 12, -ps: 30, -b: + 6). Max 256. No maximum for -ps. With -ps, 0 results in one + long line of output. + + -C | -capitalize + Capitalize variable names in C include file style, when using + -i. + + -E | -EBCDIC + Change the character encoding in the righthand column from ASCII + to EBCDIC. This does not change the hexadecimal representation. + The option is meaningless in combinations with -r, -p or -i. + + -e Switch to little-endian hex dump. This option treats byte + groups as words in little-endian byte order. The default group鈥 + ing of 4 bytes may be changed using -g. This option only ap鈥 + plies to the hex dump, leaving the ASCII (or EBCDIC) representa鈥 + tion unchanged. The command line switches -r, -p, -i do not + work with this mode. + + -g bytes | -groupsize bytes + Separate the output of every bytes (two hex characters + or eight bit digits each) by a whitespace. Specify -g 0 to sup鈥 + press grouping. defaults to 2 in normal mode, 4 in lit鈥 + tle-endian mode and 1 in bits mode. Grouping does not apply to + PostScript or include style. + + -h | -help + Print a summary of available commands and exit. No hex dumping + is performed. + + -i | -include + Output in C include file style. A complete static array defini鈥 + tion is written (named after the input file), unless xxd reads + from stdin. + + -l len | -len len + Stop after writing octets. + + -n name | -name name + Override the variable name output when -i is used. The array is + named name and the length is named name_len. + + -o offset + Add to the displayed file position. + + -p | -ps | -postscript | -plain + Output in PostScript continuous hex dump style. Also known as + plain hex dump style. + + -r | -revert + Reverse operation: convert (or patch) hex dump into binary. If + not writing to stdout, xxd writes into its output file without + truncating it. Use the combination -r -p to read plain hexadeci鈥 + mal dumps without line number information and without a particu鈥 + lar column layout. Additional whitespace and line breaks are al鈥 + lowed anywhere. Use the combination -r -b to read a bits dump + instead of a hex dump. + + -R when + In output the hex-value and the value are both colored with the + same color depending on the hex-value. Mostly helping to differ鈥 + entiate printable and non-printable characters. when is never, + always, or auto. When the $NO_COLOR environment variable is + set, colorization will be disabled. + + -seek offset + When used after -r: revert with added to file positions + found in hex dump. + + -s [+][-]seek + Start at bytes abs. (or rel.) infile offset. + indicates + that the seek is relative to the current stdin file position + (meaningless when not reading from stdin). - indicates that the + seek should be that many characters from the end of the input + (or if combined with +: before the current stdin file position). + Without -s option, xxd starts at the current file position. + + -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 + 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) + columns are always ignored. Reverting a plain (or PostScript) style hex + dump with xxd -r -p does not depend on the correct number of columns. + Here, anything that looks like a pair of hex digits is interpreted. + + Note the difference between + % xxd -i file + and + % xxd -i < file + + 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 + help to clarify (or further confuse!): + + 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 + 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" + < 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 + truss(1), whenever -s is used. + +EXAMPLES + Print everything but the first three lines (hex 0x30 bytes) of file. + % xxd -s 0x30 file + + Print 3 lines (hex 0x30 bytes) from the end of file. + % xxd -s -0x30 file + + Print 120 bytes as a continuous hex dump with 20 octets per line. + % xxd -l 120 -ps -c 20 xxd.1 + 2e54482058584420312022417567757374203139 + 39362220224d616e75616c207061676520666f72 + 20787864220a2e5c220a2e5c222032317374204d + 617920313939360a2e5c22204d616e2070616765 + 20617574686f723a0a2e5c2220202020546f6e79 + 204e7567656e74203c746f6e79407363746e7567 + + Hex dump the first 120 bytes of this man page with 12 octets per line. + % xxd -l 120 -c 12 xxd.1 + 0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A + 000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" + 0000018: 224d 616e 7561 6c20 7061 6765 "Manual page + 0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\ + 0000030: 220a 2e5c 2220 3231 7374 204d "..\" 21st M + 000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\" + 0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut + 0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\" + 0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent + 000006c: 3c74 6f6e 7940 7363 746e 7567 output_file + + Patch the date in the file xxd.1 + % echo "0000037: 3574 68" | xxd -r - xxd.1 + % xxd -s 0x36 -l 13 -c 13 xxd.1 + 0000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 + + 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 + + Hex dump this file with autoskip. + % xxd -a -c 12 file + 0000000: 0000 0000 0000 0000 0000 0000 ............ + * + 000fffc: 0000 0000 40 ....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 + 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鈥 + gion marked between `a' and `z'. + :'a,'z!xxd + + Use xxd as a filter within an editor such as vim(1) to recover a binary + hex dump marked between `a' and `z'. + :'a,'z!xxd -r + + Use xxd as a filter within an editor such as vim(1) to recover one line + of a hex dump. Move the cursor over the line and type: + !!xxd -r + + Read single characters from a serial line + % xxd -c1 < /dev/term/b & + % stty < /dev/term/b -echo -opost -isig -icanon min 1 + % echo -n foo > /dev/term/b + +RETURN VALUES + The following error values are returned: + + 0 no errors encountered. + + -1 operation not supported (xxd -r -i still impossible). + + 1 error while parsing options. + + 2 problems with input file. + + 3 problems with output file. + + 4,5 desired seek position is unreachable. + +SEE ALSO + uuencode(1), uudecode(1), patch(1) + +WARNINGS + The tool's weirdness matches its creator's brain. Use entirely at your + own risk. Copy files. Trace it. Become a wizard. + +VERSION + This manual page documents xxd version 1.7 + +AUTHOR + (c) 1990-1997 by Juergen Weigert + + + Distribute freely and credit me, + make money and share with me, + lose money and don't ask me. + + Manual page started by Tony Nugent + + Small changes by Bram Moolenaar. Edited by Juergen Weigert. + +Manual page for xxd August 1996 XXD(1) -- cgit v1.2.3